FileList mock测试

main
karlis 2023-06-30 19:45:04 +08:00
parent 14125369fe
commit 24bcce875a
4 changed files with 94 additions and 87 deletions

View File

@ -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
// }
}
}
}

View File

@ -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

View File

@ -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) {

View File

@ -36,7 +36,7 @@ int main(int argc, char* argv[])
qmlRegisterSingletonInstance<HttpClient>("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)