From 70bf718b41800bd9b97d2bacb85c79054ad640cc Mon Sep 17 00:00:00 2001 From: Vanessa Date: Sat, 5 Jul 2025 14:55:16 +0800 Subject: [PATCH] :art: https://github.com/siyuan-note/siyuan/issues/10964 --- app/src/protyle/render/av/groups.ts | 29 +++++++++++++--------- app/src/protyle/render/av/openMenuPanel.ts | 4 +-- app/src/protyle/render/av/view.ts | 2 +- app/src/protyle/upload/index.ts | 6 ++++- app/src/types/index.d.ts | 7 ++++-- 5 files changed, 30 insertions(+), 18 deletions(-) diff --git a/app/src/protyle/render/av/groups.ts b/app/src/protyle/render/av/groups.ts index 7a03a9398..18c682de2 100644 --- a/app/src/protyle/render/av/groups.ts +++ b/app/src/protyle/render/av/groups.ts @@ -10,10 +10,13 @@ export const setGroupMethod = (options: { fieldId: string; data: IAV; menuElement: HTMLElement, - blockElement: HTMLElement, + blockElement: Element, }) => { + const blockID = options.blockElement.getAttribute("data-block-id"); transaction(options.protyle, [{ action: "setAttrViewGroup", + avID: options.data.id, + blockID, data: { field: options.fieldId, method: null, @@ -22,31 +25,33 @@ export const setGroupMethod = (options: { } }], [{ action: "setAttrViewGroup", + avID: options.data.id, + blockID, data: { - field: options.data.view.groups?.field || "", + field: options.data.view.group?.field || "", method: null, order: null, range: null } }]); - if (!options.data.view.groups) { - options.data.view.groups = { + if (!options.data.view.group) { + options.data.view.group = { field: options.fieldId }; } else { - options.data.view.groups.field = options.fieldId; + options.data.view.group.field = options.fieldId; } - options.menuElement.innerHTML = getGroupsHTML(getFieldsByData(options.data), options.data.view.groups); + options.menuElement.innerHTML = getGroupsHTML(getFieldsByData(options.data), options.data.view.group); // bindGroupsEvent(options.protyle, options.menuElement, options.data, blockID); const tabRect = options.blockElement.querySelector(".av__views").getBoundingClientRect(); setPosition(options.menuElement, tabRect.right - options.menuElement.clientWidth, tabRect.bottom, tabRect.height); }; -export const getGroupsMethodHTML = (columns: IAVColumn[], groups: IAVGroups) => { +export const getGroupsMethodHTML = (columns: IAVColumn[], group: IAVGroup) => { const selectHTML = ''; let html = ``; columns.forEach(item => { html += ``; }); return `
@@ -69,9 +74,9 @@ ${html}
`; }; -export const getGroupsHTML = (columns: IAVColumn[], groups: IAVGroups) => { +export const getGroupsHTML = (columns: IAVColumn[], group: IAVGroup) => { let html = ""; - if (groups) { + if (group) { html = ` ${html} diff --git a/app/src/protyle/render/av/openMenuPanel.ts b/app/src/protyle/render/av/openMenuPanel.ts index e189d93f9..192543ca6 100644 --- a/app/src/protyle/render/av/openMenuPanel.ts +++ b/app/src/protyle/render/av/openMenuPanel.ts @@ -577,7 +577,7 @@ export const openMenuPanel = (options: { event.stopPropagation(); break; } else if (type === "goGroups") { - menuElement.innerHTML = getGroupsHTML(fields, data.view.groups); + menuElement.innerHTML = getGroupsHTML(fields, data.view.group); bindGroupsEvent(options.protyle, menuElement, data, blockID); setPosition(menuElement, tabRect.right - menuElement.clientWidth, tabRect.bottom, tabRect.height); window.siyuan.menus.menu.remove(); @@ -585,7 +585,7 @@ export const openMenuPanel = (options: { event.stopPropagation(); break; } else if (type === "goGroupsMethod") { - menuElement.innerHTML = getGroupsMethodHTML(fields, data.view.groups); + menuElement.innerHTML = getGroupsMethodHTML(fields, data.view.group); setPosition(menuElement, tabRect.right - menuElement.clientWidth, tabRect.bottom, tabRect.height); event.preventDefault(); event.stopPropagation(); diff --git a/app/src/protyle/render/av/view.ts b/app/src/protyle/render/av/view.ts index 9f37598ba..cd5a4ef4f 100644 --- a/app/src/protyle/render/av/view.ts +++ b/app/src/protyle/render/av/view.ts @@ -214,7 +214,7 @@ export const getViewHTML = (data: IAV) => { diff --git a/app/src/protyle/upload/index.ts b/app/src/protyle/upload/index.ts index c769cf4a5..9eaee7425 100644 --- a/app/src/protyle/upload/index.ts +++ b/app/src/protyle/upload/index.ts @@ -11,6 +11,10 @@ import {getContenteditableElement} from "../wysiwyg/getBlock"; import {getTypeByCellElement, updateCellsValue} from "../render/av/cell"; import {scrollCenter} from "../../util/highlightById"; +interface FileWithPath extends File { + path: string; +} + export class Upload { public element: HTMLElement; public isUploading: boolean; @@ -265,7 +269,7 @@ export const uploadFiles = (protyle: IProtyle, files: FileList | DataTransferIte } if (0 === fileItem.size && "" === fileItem.type && -1 === fileItem.name.indexOf(".")) { // 文件夹 - uploadLocalFiles([fileItem.path], protyle, false); + uploadLocalFiles([(fileItem as FileWithPath).path], protyle, false); } else { fileList.push(fileItem); } diff --git a/app/src/types/index.d.ts b/app/src/types/index.d.ts index cc7333953..f7cb9a424 100644 --- a/app/src/types/index.d.ts +++ b/app/src/types/index.d.ts @@ -842,7 +842,8 @@ interface IAVView { wrapField: boolean; filters: IAVFilter[], sorts: IAVSort[], - groups: IAVGroups + groups: IAVView[] + group: IAVGroup } interface IAVTable extends IAVView { @@ -877,8 +878,10 @@ interface relativeDate { direction: number; // 方向:-1: 前、0: 现在、1: 后 } -interface IAVGroups { +interface IAVGroup { field: string, + method?: number + order?: number } interface IAVSort {