import {unicode2Emoji} from "../../../emoji"; import {getColIconByType} from "./col"; import {escapeHtml} from "../../../util/escape"; import {setPosition} from "../../../util/setPosition"; import {getFieldsByData} from "./view"; import {fetchSyncPost} from "../../../util/fetch"; export const setGroupMethod = async (options: { protyle: IProtyle; fieldId: string; data: IAV; menuElement: HTMLElement, blockElement: Element, }) => { const blockID = options.blockElement.getAttribute("data-node-id"); const column: IAVColumn = getFieldsByData(options.data).find(item => item.id === options.fieldId); const data = column ? { field: options.fieldId, method: column.type === "number" ? 1 : (["date", "updated", "created"].includes(column.type) ? 2 : 0), order: 0, range: column.type === "number" ? { numStart: 0, numEnd: 1000, numStep: 100, } : null } : {field: null, method: null, order: null, range: null}; const response = await fetchSyncPost("/api/av/setAttrViewGroup", { blockID, avID: options.blockElement.getAttribute("data-av-id"), group: data }); options.data.view = response.data.view; options.menuElement.innerHTML = getGroupsHTML(getFieldsByData(options.data), options.data.view); // 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[], group: IAVGroup) => { const selectHTML = ''; let html = ``; columns.forEach(item => { html += ``; }); return `
${html}
`; }; const getLanguageByIndex = (index: number, type: "sort" | "date") => { if (type === "sort") { switch (index) { case 0: return window.siyuan.languages.asc; case 1: return window.siyuan.languages.desc; case 2: return window.siyuan.languages.customSort; default: return ""; } } else if (type === "date") { switch (index) { case 2: return window.siyuan.languages.groupMethodDateRelative; case 3: return window.siyuan.languages.groupMethodDateDay; case 4: return window.siyuan.languages.groupMethodDateWeek; case 5: return window.siyuan.languages.groupMethodDateMonth; case 6: return window.siyuan.languages.groupMethodDateYear; default: return ""; } } }; export const getGroupsHTML = (columns: IAVColumn[], view: IAVView) => { let html = ""; let column: IAVColumn; if (view.group && view.group.field) { let groupHTML = ""; if (view.groups.length > 0) { groupHTML = ` `; view.groups.forEach(item => { groupHTML += ``; }); } column = columns.find(item => item.id === view.group.field); html = ` ${groupHTML} `; } return `
${html}
`; }; export const bindGroupsEvent = () => { };