diff --git a/AicsKnowledgeBase/qml/component/FileList.qml b/AicsKnowledgeBase/qml/component/FileList.qml index 46d02a8..8f7d105 100644 --- a/AicsKnowledgeBase/qml/component/FileList.qml +++ b/AicsKnowledgeBase/qml/component/FileList.qml @@ -1,6 +1,7 @@ import QtQuick 2.15 import QtQuick.Layouts import FluentUI +import "qrc:///AicsKnowledgeBase/qml/global" Window { id: fileListTestWindow @@ -19,6 +20,9 @@ Window { header: fileListItemHeader model: fileListModel delegate: fileListItemDelegate + Component.onCompleted: { + update() + } } Component { id: fileListItemHeader @@ -32,13 +36,7 @@ Window { width: parent.width height: parent.height separator: ">" - items: [{ - "title": "Home" - }, { - "title": "Documents" - }, { - "title": "File List" - }] + items: [] onClickItem: function (model) { if (model.index + 1 !== count()) { items = items.slice(0, model.index + 1) @@ -56,7 +54,7 @@ Window { height: 24 iconSource: FluentIcons.ChromeBack onClicked: { - if (header.count() > 1) { + if (header.count() > 0) { header.items = header.items.slice( 0, header.count() - 1) } @@ -65,46 +63,53 @@ Window { } } - function add(folderName) { - listView.headerItem.children[0].items - = listView.headerItem.children[0].items.concat([{ - "title": folderName - }]) + function add(folderName, uuid) { + console.log(header.items) + header.items = header.items.concat([{ + "title": folderName, + "uuid": uuid + }]) } function update() { - // combine all header items to a path - var path = "" - // for (var i = 0; i < listView.headerItem.children[0].items.length; i++) { - // path += listView.headerItem.children[0].items[i].title + "/" - // } - console.log(path) - var newListModel = [{ - "title": "File 2", - "isDir": false, - "brief": "This is a test file", - "size": 500, - "type": "WORD", - "date": "2020-09-09", - "pageView": 100, - "stars": 10, - "tags": "tag1,tag2,tag3" - }, { - "title": "File 3", - "isDir": false, - "brief": "This is a test file", - "size": 500, - "type": "WORD", - "date": "2020-09-09", - "pageView": 100, - "stars": 10, - "tags"// 15 tags - : "tag1,tag2,tag3,tag4,tag5,tag6,tag7,tag8,tag9,tag10,tag11,tag12,tag13,tag14,tag15" - }] - // http request for new list data - fileListModel.clear() - fileListModel.append(newListModel) - // set ListView currentItem to null - listView.currentIndex = -1 + var uuid = header.items.length + === 0 ? "null" : header.items[header.items.length - 1].uuid + Request.get(uuid, function (response) { + var data = JSON.parse(response) + console.log(data.knowledgeFileAttribute) + fileListModel.clear() + var files = data.children + for (var i = 0; i < files.length; i++) { + var file = files[i] + console.log(file.name) + var modelItem = { + "title": file.name, + "uuid": file.id, + "date": file.createTime + } + if (file.knowledgeFileAttribute === null) { + modelItem.type = "folder" + modelItem.isDir = true + modelItem.size = 0 + } else { + modelItem.isDir = false + modelItem.type = file.knowledgeFileAttribute.suffix + modelItem.size = file.knowledgeFileAttribute.size + modelItem.brief = file.knowledgeFileAttribute.brief + modelItem.pageView = file.knowledgeFileAttribute.pageView + modelItem.stars = 0 + // merge file.knowledgeFileAttribute.tags array to a string + var tagString = "" + for (var j = 0; j < file.knowledgeFileAttribute.tags.length; j++) { + if (j != 0) + tagString = tagString + "," + tagString = tagString + file.knowledgeFileAttribute.tags[j].name + } + modelItem.tags = tagString + } + fileListModel.append(modelItem) + } + listView.currentIndex = -1 + }) } } } @@ -117,18 +122,19 @@ Window { color: !ListView.isCurrentItem ? "lightgray" : "red" FileListItem { id: fileListItem + uuid: model.uuid width: parent.width height: parent.height title: model.title isDir: model.isDir - brief: model.brief - size: model.size - type: model.type date: model.date - pageView: model.pageView - stars: model.stars + brief: isDir ? "" : model.brief + type: isDir ? "FOLDER" : model.type + pageView: isDir ? 0 : model.pageView + size: isDir ? 0 : model.size + stars: isDir ? 0 : model.stars // split string to array - tags: model.tags.split(",") + tags: isDir ? [] : model.tags.split(",") onTagClicked: { emit: search(tag) console.log(tag) @@ -137,43 +143,43 @@ Window { function doubleClicked() { listView.currentIndex = index if (model.isDir) { - listView.headerItem.add(model.title) + listView.headerItem.add(model.title, model.uuid) } else { - emit: open(model.uid) + emit: open(model.uuid) } } } } ListModel { id: fileListModel - ListElement { - title: "File 1" - isDir: true - brief: "This is a test file" - type: "FOLDER" - } - ListElement { - uid: "2" - title: "File 2" - isDir: false - brief: "This is a test file" - size: 500 - type: "WORD" - date: "2020-09-09" - pageView: 100 - stars: 10 - } - ListElement { - uid: "3" - title: "File 3" - isDir: false - brief: "This is a test file" - type: "PPT" - date: "2020-09-09" - pageView: 100 - size: 10200000022 - stars: 10 - } + // ListElement { + // title: "File 1" + // isDir: true + // brief: "This is a test file" + // type: "FOLDER" + // } + // ListElement { + // uid: "2" + // title: "File 2" + // isDir: false + // brief: "This is a test file" + // size: 500 + // type: "WORD" + // date: "2020-09-09" + // pageView: 100 + // stars: 10 + // } + // ListElement { + // uid: "3" + // title: "File 3" + // isDir: false + // brief: "This is a test file" + // type: "PPT" + // date: "2020-09-09" + // pageView: 100 + // size: 10200000022 + // stars: 10 + // } } } } diff --git a/AicsKnowledgeBase/qml/component/FileListItem.qml b/AicsKnowledgeBase/qml/component/FileListItem.qml index 611cf93..19c6e4e 100644 --- a/AicsKnowledgeBase/qml/component/FileListItem.qml +++ b/AicsKnowledgeBase/qml/component/FileListItem.qml @@ -4,7 +4,7 @@ import QtQuick.Layouts Item { id: fileItem - property string id + property string uuid property string title property string brief property string date @@ -37,7 +37,8 @@ Item { id: titleRow Image { id: icon - source: type ? "qrc:/AicsKnowledgeBase/res/" + type + ".png" : "" + source: type ? "qrc:/AicsKnowledgeBase/res/" + type.toUpperCase( + ) + ".png" : "" Layout.preferredHeight: 18 Layout.preferredWidth: 18 } @@ -69,7 +70,7 @@ Item { } FluText { id: pageView - text: fileItem.pageView + "浏览" + tags.length + text: fileItem.pageView + "浏览" } FluText { id: stars diff --git a/AicsKnowledgeBase/qml/global/Request.qml b/AicsKnowledgeBase/qml/global/Request.qml index da07527..da84ee3 100644 --- a/AicsKnowledgeBase/qml/global/Request.qml +++ b/AicsKnowledgeBase/qml/global/Request.qml @@ -5,7 +5,7 @@ import QtQuick QtObject { id: request - property string baseUrl: "http://127.0.0.1:4523/m1/2914957-0-default/" + property string baseUrl: "http://127.0.0.1:4523/m1/2914957-0-5604d062/" // GET function get(url, success, failure) { diff --git a/AicsKnowledgeBase/src/main.cpp b/AicsKnowledgeBase/src/main.cpp index 676475b..edc0d6b 100644 --- a/AicsKnowledgeBase/src/main.cpp +++ b/AicsKnowledgeBase/src/main.cpp @@ -36,7 +36,7 @@ int main(int argc, char* argv[]) qmlRegisterSingletonInstance("AicsKB.HttpClient", 1, 0, "HttpClient", httpClient); - const QUrl url(u"qrc:/AicsKnowledgeBase/qml/App.qml"_qs); + const QUrl url(u"qrc:/AicsKnowledgeBase/qml/component/FileList.qml"_qs); QObject::connect(&engine, &QQmlApplicationEngine::objectCreated, &app, [url](QObject* obj, const QUrl& objUrl) { if (!obj && url == objUrl)