diff options
Diffstat (limited to 'src/imports/utils/JsonListModel.qml')
-rw-r--r-- | src/imports/utils/JsonListModel.qml | 40 |
1 files changed, 30 insertions, 10 deletions
diff --git a/src/imports/utils/JsonListModel.qml b/src/imports/utils/JsonListModel.qml index 3360525..f2bdd53 100644 --- a/src/imports/utils/JsonListModel.qml +++ b/src/imports/utils/JsonListModel.qml @@ -36,38 +36,58 @@ import QtQuick import QtQuick.Studio.Utils +//import "jsonpath.js" as JSONPath ListModel { id: listModel + property url source + property var jsonObject + dynamicRoles: true property FileReader fileReader: FileReader { id: fileReader filePath: listModel.source onContentChanged: listModel.updateJSON() - property string query } + // qmllint disable compiler - function updateJSON() { + onJsonObjectChanged: { listModel.clear() - if (fileReader.content === "") - return + var objectArray = listModel.jsonObject - var objectArray = parseJSONString(fileReader.content, fileReader.query) for (var key in objectArray) { var jo = objectArray[key] listModel.append(jo) } } - function parseJSONString(jsonString, jsonPathQuery) { + function updateJSON() { + if (fileReader.content === "") + return + + var objectArray = parseJSONString(fileReader.content) + listModel.jsonObject = objectArray + invalidateChildModels() + } + + function parseJSONString(jsonString, object) { var objectArray = JSON.parse(jsonString) - if (jsonPathQuery !== "") - objectArray = JSONPath.jsonPath(objectArray, jsonPathQuery) - else - console.error("JSON parsing failed") return objectArray } + + function invalidateChildModels() { + for(var property in listModel) { + if (listModel[property].jsonObject !== undefined) { + listModel[property].jsonObject = listModel.jsonObject + } + } + + } + + Component.onCompleted: { + invalidateChildModels() + } // qmllint enable compiler } |