Explorar o código

:art: Limit the maximum number of tags listed in the tag panel https://github.com/siyuan-note/siyuan/issues/11071

Daniel hai 1 ano
pai
achega
01a3f3e690

+ 3 - 2
app/appearance/langs/en_US.json

@@ -990,7 +990,7 @@
   "fileTree14": "Save path (support date format template variables, such as <code class='fn__code'>/Daily Notes/{{now | date \"2006/01\"}}/{{now | date \"2006-01-02\"}}</code>)",
   "fileTree15": "Template path (for example, <code class='fn__code'>dailynote.md</code>, the file needs to be placed under the workspace/data/templates/)",
   "fileTree16": "Maximum number to list",
-  "fileTree17": "If there are too many sub-documents, this restriction can be used to improve performance",
+  "fileTree17": "If there are too many sub-docs/tags, this restriction can be used to improve performance",
   "fileTree18": "Allows creation of sub-documents deeper than 7 levels",
   "fileTree19": "Some operating systems have technical limitations that may prevent manual copying of workspace data after creating sub-documents greater than 7 levels",
   "fileTree20": "Save with a single line",
@@ -1473,6 +1473,7 @@
     "239": "Related operations are being processed, please try again later",
     "240": "Drag heading under container blocks in the doc is not supported",
     "241": "Drag to its subheading is not supported",
-    "242": "The binding block already exists in the current database"
+    "242": "The binding block already exists in the current database",
+    "243": "Only list the first [%d] tags (including subtags), if you need to adjust, please modify [Settings - Doc Tree - Maximum number to list]"
   }
 }

+ 3 - 2
app/appearance/langs/es_ES.json

@@ -990,7 +990,7 @@
   "fileTree14": "Ruta de guardado (admite variables de plantilla de formato de fecha, como <code class='fn__code'>/Notas del día/{{now | date \"2006/01\"}}/{{now | date \"2006-01-02\"}}</code>)",
   "fileTree15": "Ruta de la plantilla (por ejemplo, <code class='fn__code'>dailynote.md</code>, el archivo debe colocarse en el espacio de trabajo/data/templates/)",
   "fileTree16": "Número máximo a listar",
-  "fileTree17": "Si hay demasiados subdocumentos, se puede utilizar esta restricción para mejorar el rendimiento",
+  "fileTree17": "Si hay demasiados subdocumentos/etiquetas, se puede utilizar esta restricción para mejorar el rendimiento",
   "fileTree18": "Permite la creación de subdocumentos de más de 7 niveles",
   "fileTree19": "Algunos sistemas operativos tienen limitaciones técnicas que pueden impedir la copia manual de los datos del espacio de trabajo después de crear subdocumentos de más de 7 niveles",
   "fileTree20": "Guardar con una sola línea",
@@ -1473,6 +1473,7 @@
     "239": "Las operaciones relacionadas se están procesando, inténtalo de nuevo más tarde",
     "240": "No se admite arrastrar encabezado debajo de los bloques contenedores en el documento",
     "241": "No se admite arrastrar a su subtítulo",
-    "242": "El bloque de enlace ya existe en la base de datos actual"
+    "242": "El bloque de enlace ya existe en la base de datos actual",
+    "243": "Enumere solo las primeras [%d] etiquetas (incluidas las subetiquetas), modifique [Configuración - Árbol de documentos - Número máximo a listar]"
   }
 }

+ 4 - 3
app/appearance/langs/fr_FR.json

@@ -925,7 +925,7 @@
   "reset": "Réinitialiser",
   "siyuanNote": "SiYuan",
   "resetLayout": "Restaurer la mise en page par défaut",
-  "tag": "Tag",
+  "tag": "Étiqueter",
   "twoFactorCaptcha": "Vérification en 2 étapes",
   "captcha": "Code de vérification",
   "register": "Créer un nouveau compte",
@@ -990,7 +990,7 @@
   "fileTree14": "Chemin d'enregistrement (prise en charge des variables de modèle de format de date, telles que <code class='fn__code'>/Notes quotidiennes/{{mais | date \"2006/01\"}}/{{mais | date \"2006-01-02\"}}</code>)",
   "fileTree15": "Chemin du modèle (par exemple, <code class='fn__code'>dailynote.md</code>, le fichier doit être placé sous \"l'espace de travail/data/templates/\")",
   "fileTree16": "Nombre maximum à lister",
-  "fileTree17": "S'il y a trop de sous-documents, cette restriction peut être utilisée pour améliorer les performances.",
+  "fileTree17": "S'il y a trop de sous-documents/étiqueter, cette restriction peut être utilisée pour améliorer les performances.",
   "fileTree18": "Permet la création de sous-documents de plus de 7 niveaux",
   "fileTree19": "Certains systèmes d'exploitation ont des limitations techniques qui peuvent empêcher la copie manuelle des données de l'espace de travail après la création de sous-documents supérieurs à 7 niveaux",
   "fileTree20": "Enregistrer avec une seule ligne",
@@ -1473,6 +1473,7 @@
     "239": "Les opérations associées sont en cours de traitement, veuillez réessayer plus tard",
     "240": "Le déplacement du titre sous les blocs conteneurs dans la doc n'est pas pris en charge",
     "241": "Le glisser vers son sous-titre n'est pas pris en charge",
-    "242": "Le bloc de liaison existe déjà dans la base de données actuelle"
+    "242": "Le bloc de liaison existe déjà dans la base de données actuelle",
+    "243": "Répertorier uniquement les [%d] premières balises (y compris les sous-balises). veuillez modifier [Paramètres - Arbre des documents - Nombre maximum de documents à lister]."
   }
 }

+ 3 - 2
app/appearance/langs/zh_CHT.json

@@ -990,7 +990,7 @@
   "fileTree14": "存放路徑(可使用日期格式範本變數,例如 <code class='fn__code'>/日記/{{now | date \"2006/01\"}}/{{now | date \"2006-01-02\"}}</code>)",
   "fileTree15": "範本路徑(例如 <code class='fn__code'>dailynote.md</code>,需要將該檔放置於工作空間/data/templates/ 下)",
   "fileTree16": "最大列出數量",
-  "fileTree17": "如果子文檔非常多,可通過該項限制以提升性能",
+  "fileTree17": "如果子文檔/標籤非常多,可通過該項限制以提升性能",
   "fileTree18": "允許建立深度大於 7 層的子文檔",
   "fileTree19": "一些操作系統存在技術限制導致建立大於 7 層的子文檔後可能無法正常手動複製工作空間資料",
   "fileTree20": "使用單行保存",
@@ -1473,6 +1473,7 @@
     "239": "相關操作正在處理中,請稍後再試",
     "240": "不支援拖曳文件中容器區塊下的標題",
     "241": "不支持拖曳為自己的子標題",
-    "242": "目前資料庫中已經存在該綁定區塊"
+    "242": "目前資料庫中已經存在該綁定區塊",
+    "243": "僅列出前 [%d] 個標籤(含子標籤),如需調整請修改 [設置 - 文檔樹 - 最大列出數量]"
   }
 }

+ 3 - 2
app/appearance/langs/zh_CN.json

@@ -990,7 +990,7 @@
   "fileTree14": "存放路径(可使用日期格式模板变量,例如 <code class='fn__code'>/日记/{{now | date \"2006/01\"}}/{{now | date \"2006-01-02\"}}</code>)",
   "fileTree15": "模板路径(例如 <code class='fn__code'>dailynote.md</code>,需要将该文件放置于工作空间/data/templates/ 下)",
   "fileTree16": "最大列出数量",
-  "fileTree17": "如果子文档非常多,可通过该项限制以提升性能",
+  "fileTree17": "如果子文档/标签非常多,可通过该项限制以提升性能",
   "fileTree18": "允许创建深度大于 7 层的子文档",
   "fileTree19": "一些操作系统存在技术限制导致创建大于 7 层的子文档后可能无法正常手动复制工作空间数据",
   "fileTree20": "使用单行保存",
@@ -1473,6 +1473,7 @@
     "239": "相关操作正在处理中,请稍后再试",
     "240": "不支持拖拽文档中容器块下的标题",
     "241": "不支持拖拽为自己的子标题",
-    "242": "当前数据库中已经存在该绑定块"
+    "242": "当前数据库中已经存在该绑定块",
+    "243": "仅列出前 [%d] 个标签(含子标签),如需调整请修改 [设置 - 文档树 - 最大列出数量]"
   }
 }

+ 22 - 1
kernel/model/tag.go

@@ -208,6 +208,7 @@ type Tags []*Tag
 
 func BuildTags() (ret *Tags) {
 	WaitForWritingFiles()
+
 	if !sql.IsEmptyQueue() {
 		sql.WaitForWritingDatabase()
 	}
@@ -220,10 +221,30 @@ func BuildTags() (ret *Tags) {
 	}
 	appendTagChildren(&tags, labels)
 	sortTags(tags)
-	ret = &tags
+
+	var total int
+	tmp := &Tags{}
+	for _, tag := range tags {
+		*tmp = append(*tmp, tag)
+		total += countTag(tag)
+		if Conf.FileTree.MaxListCount < total {
+			util.PushMsg(fmt.Sprintf(Conf.Language(243), Conf.FileTree.MaxListCount), 7000)
+			break
+		}
+	}
+
+	ret = tmp
 	return
 }
 
+func countTag(tag *Tag) int {
+	count := 1
+	for _, child := range tag.tags {
+		count += countTag(child)
+	}
+	return count + tag.Count
+}
+
 func sortTags(tags Tags) {
 	switch Conf.Tag.Sort {
 	case util.SortModeNameASC: