import {unicode2Emoji} from "../../../emoji"; import {getColIconByType} from "./col"; import {escapeHtml} from "../../../util/escape"; import {transaction} from "../../wysiwyg/transaction"; import {setPosition} from "../../../util/setPosition"; import {getFieldsByData} from "./view"; export const setGroupMethod = (options: { protyle: IProtyle; fieldId: string; data: IAV; menuElement: HTMLElement, blockElement: Element, }) => { const blockID = options.blockElement.getAttribute("data-block-id"); const column: IAVColumn = getFieldsByData(options.data).find(item => item.id === options.fieldId); const data = { 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 }; transaction(options.protyle, [{ action: "setAttrViewGroup", avID: options.data.id, blockID, data }], [{ action: "setAttrViewGroup", avID: options.data.id, blockID, data: { field: options.data.view.group?.field || "", method: options.data.view.group?.method || "", order: options.data.view.group?.order || "", range: options.data.view.group?.range || "" } }]); options.data.view.group = data; 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 `
`; }; 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 ``; }; export const bindGroupsEvent = () => { };