aboutsummaryrefslogtreecommitdiffstats
path: root/src/imports/utils/JsonListModel.qml
diff options
context:
space:
mode:
Diffstat (limited to 'src/imports/utils/JsonListModel.qml')
-rw-r--r--src/imports/utils/JsonListModel.qml40
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
}