From 127426d61cbac4b002e8fcb8ea9aefcd38547723 Mon Sep 17 00:00:00 2001 From: Thomas Hartmann Date: Wed, 25 Oct 2023 17:11:14 +0200 Subject: Update and cleanup JSONBackend and JSONListModel Change-Id: Ic6227802e5547045468aa0a7c9d3cdcc5d17c3e7 Reviewed-by: Thomas Hartmann --- src/imports/utils/JSONBackend.qml | 37 +++++++++++++++++-------------------- src/imports/utils/JSONListModel.qml | 35 ++++++++++++++--------------------- 2 files changed, 31 insertions(+), 41 deletions(-) diff --git a/src/imports/utils/JSONBackend.qml b/src/imports/utils/JSONBackend.qml index 1dac1d4..843fb09 100644 --- a/src/imports/utils/JSONBackend.qml +++ b/src/imports/utils/JSONBackend.qml @@ -39,41 +39,38 @@ import QtQuick.Studio.Utils QtObject { id: server - property url source: Qt.resolvedUrl("server.json") - property string __json: fileReader.content + property url source property FileReader fileReader: FileReader { id: fileReader - filePath: listModel.source + filePath: server.source + onContentChanged: server.updateJSON() + property string query } - on__JsonChanged: server.updateJSON() - function updateJSON() { - if (server.__json === "" ) - return; + if (fileReader.content === "") + return - var objectArray = parseJSONString(server.__json, server.__query); - for ( var key in objectArray ) { - var jo = objectArray[key]; - if (server[key] !== undefined) { + var objectArray = parseJSONString(fileReader.content, fileReader.query) + for (var key in objectArray) { + var jo = objectArray[key] + if (server[key] !== undefined) server[key] = jo - } else { + else console.warn(key, "undefined") - } + } } function parseJSONString(jsonString, jsonPathQuery) { - var objectArray = JSON.parse(jsonString); - if ( jsonPathQuery !== "" ) - objectArray = JSONPath.jsonPath(objectArray, jsonPathQuery); - else { + var objectArray = JSON.parse(jsonString) + if (jsonPathQuery !== "") + objectArray = JSONPath.jsonPath(objectArray, jsonPathQuery) + else console.error("JSON parsing failed") - } - return objectArray; + return objectArray } - } diff --git a/src/imports/utils/JSONListModel.qml b/src/imports/utils/JSONListModel.qml index edba312..ff678ee 100644 --- a/src/imports/utils/JSONListModel.qml +++ b/src/imports/utils/JSONListModel.qml @@ -39,41 +39,34 @@ import QtQuick.Studio.Utils ListModel { id: listModel - property url source: Qt.resolvedUrl("listmodel.json") - property string __json: fileReader.content - property string __query - + property url source property FileReader fileReader: FileReader { id: fileReader filePath: listModel.source + onContentChanged: listModel.updateJSON() + property string query } - on__JsonChanged: listModel.updateJSON() - on__QueryChanged: listModel.updateJSON() - function updateJSON() { - if (listModel.__json === "" ) - return; - listModel.clear() + if (fileReader.content === "") + return - var objectArray = parseJSONString(listModel.__json, listModel.__query); - for ( var key in objectArray ) { - var jo = objectArray[key]; - listModel.append( jo ); + var objectArray = parseJSONString(fileReader.content, fileReader.query) + for (var key in objectArray) { + var jo = objectArray[key] + listModel.append(jo) } } function parseJSONString(jsonString, jsonPathQuery) { - var objectArray = JSON.parse(jsonString); - if ( jsonPathQuery !== "" ) - objectArray = JSONPath.jsonPath(objectArray, jsonPathQuery); - else { + var objectArray = JSON.parse(jsonString) + if (jsonPathQuery !== "") + objectArray = JSONPath.jsonPath(objectArray, jsonPathQuery) + else console.error("JSON parsing failed") - } - return objectArray; + return objectArray } - } -- cgit v1.2.3