main
karlis 2023-07-07 03:26:13 +08:00
parent 3a79d7b0d2
commit f7487ac76f
4 changed files with 114 additions and 87 deletions

View File

@ -250,7 +250,9 @@ Item {
Rectangle {
id: fileListItemRect
width: ListView.view.width
height: model.isDir ? 50 : 120
//set the height to fit model.brief
height: model.isDir ? 50 : Math.max(120,
model.brief.length / 3 + 80)
//color: !ListView.isCurrentItem ? "white" : "red"
FileListItem {
id: fileListItem

View File

@ -127,10 +127,11 @@ FluArea {
visible: !fileItem.isDir
text: fileItem.brief
Layout.fillWidth: true
wrapMode: Text.WrapAnywhere
wrapMode: Text.WordWrap
elide: Text.ElideRight
maximumLineCount: 2
maximumLineCount: 4
textFormat: Text.RichText
fontSizeMode: Text.Fit
}
RowLayout {
id: infoRow

View File

@ -6,7 +6,7 @@ QtObject {
id: request
property string baseUrl: "https://api.hammer-hfut.tk:233/aics/main/"
property string searchUrl: "https://api.hammer-hfut.tk:233/aics/query"
property string searchUrl: "https://api.hammer-hfut.tk:233/aics/query/"
//property string baseUrl: "http://192.168.156.74:8080/"
// GET

View File

@ -10,6 +10,8 @@ import "qrc:///AicsKnowledgeBase/qml/component"
FluArea {
id: searchPage
property string url: ''
property var tags: []
property ListModel listModel: ListModel {}
backgroundColor: "#f9f9f9"
Layout.fillHeight: true
Layout.fillWidth: true
@ -30,52 +32,102 @@ FluArea {
width: parent.width
RowLayout {
width: parent.width
// FluDropDownButton{
// id:select_model
// Layout.alignment: Qt.AlignLeft
// text:""
// items:[
// FluMenuItem{
// text:""
// onClicked: {
// select_model.text = text
// }
// },
// FluMenuItem{
// text:""
// onClicked: {
// select_model.text = text
// }
// },
// FluMenuItem{
// text:""
// onClicked: {
// select_model.text = text
// }
// }
// ]
// }
FluTextBox {
placeholderText: "对标题进行搜索……"
id: search_text
Layout.fillWidth: true
}
FluIconButton {
Layout.alignment: Qt.AlignRight
iconSource: FluentIcons.Search
onClicked: {
var allTags = inputTags.getAllTags(tags.tagList)
var allTagId = []
console.log(allTags)
for (var i = 0; i < allTags.length; i++) {
var url = "?name="
url = url + allTags[i]
console.log(url)
Request.get(url, function (result, data) {
allTagId.push()
})
listModel.clear()
var allTags = tags.tagMap
var selectTagName = []
var selectTagId = []
for (var i = 0; i < tags.tagList.count; i++) {
selectTagName.push(tags.tagList.get(i).tag)
console.log(selectTagName[selectTagName.length - 1])
}
for (i = 0; i < selectTagName.length; i++) {
for (var j = 0; j < allTags.length; j++) {
if (selectTagName[i] === allTags[j][1]) {
selectTagId.push(allTags[j][0])
console.log(allTags[j][0])
}
}
}
var params = {
"text": search_text.text,
"applyToBriefAndContent": searchTitleAndContent.checked,
"tags": selectTagId
}
var url = "/search/knowledge?"
// encode params to get url
url += "text=" + params.text
url += "&applyToBriefAndContent=" + params.applyToBriefAndContent
url += "&tags="
for (i = 0; i < params.tags.length; i++) {
url += "&tags=" + params.tags[i]
}
var tagString = ""
// merge all tag to a string split by ','
for (i = 0; i < selectTagName.length; i++) {
if (i !== 0) {
tagString += ","
}
tagString += selectTagName[i]
}
var sName = ""
var sBrief = ""
console.log(url)
Request.getSearch(url, response => {
var dataArray = JSON.parse(response)
for (var i = 0; i < dataArray.length; i++) {
var data = dataArray[i]
if (data.highlightFields.name !== null
&& data.highlightFields.name !== undefined
&& data.highlightFields.name.length > 0) {
for (i = 0; i
< data.highlightFields.name.length; i++) {
if (i !== 0) {
sName += "..."
}
sName += data.highlightFields.name[i]
}
} else {
sName = data.content.name
}
if (data.highlightFields.brief !== null
&& data.highlightFields.brief !== undefined
&& data.highlightFields.brief.length > 0) {
for (i = 0; i
< data.highlightFields.brief.length; i++) {
if (i !== 0) {
sBrief += "..."
}
sBrief += data.highlightFields.brief[i]
}
}
if (data.highlightFields.content !== null
&& data.highlightFields.content !== undefined
&& data.highlightFields.content.length > 0) {
for (i = 0; i
< data.highlightFields.content.length; i++) {
if (i !== 0) {
sBrief += "..."
}
sBrief += data.highlightFields.content[i]
}
}
if (sBrief.length === 0) {
sBrief = data.content.brief
}
getKnowledgeDetail(
data.content.uuid, sName,
sBrief, tagString)
}
})
}
}
}
@ -165,56 +217,28 @@ FluArea {
FileList {
disableHeader: true
dataModel: ListModel {
ListElement {
uuid: "0"
title: "File 1"
isDir: true
brief: "This is a test file"
type: "FOLDER"
}
ListElement {
uuid: "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 {
uuid: "3"
title: "File 3"
isDir: false
brief: "This is a test file"
type: "PPT"
date: "2020-09-09"
pageView: 100
size: 10200000022
stars: 10
}
}
dataModel: listModel
}
}
}
function getKnowledgeDetail(uuid, title, brief, tags) {
var raw = Request.getAwait("/knowledget/" + uuid)
Request.get("/knowledge/" + uuid, raw => {
var data = JSON.parse(raw)
var item = {
"uuid": uuid,
"title": title,
"brief": brief,
"isDir": false,
"date": data.createTime,
"fuuid": data.parent.id,
"date": data.createTime.substring(0, 10),
"fuuid": "data.parent.id",
"pageView": data.knowledgeFileAttribute.pageView,
"stars": data.knowledgeFileAttribute.stars,
"size": data.knowledgeFileAttribute.size,
"type": getType(data.knowledgeFileAttribute.suffix),
"tags": tags
}
listModel.append(item)
})
}
function getType(suffix) {
if (suffix === "ppt" || suffix === "pptx")