mirror of
https://github.com/siyuan-note/siyuan.git
synced 2026-01-21 15:56:10 +01:00
200 lines
5.6 KiB
TypeScript
200 lines
5.6 KiB
TypeScript
import {Menu} from "../../../plugin/Menu";
|
|
import {transaction} from "../../wysiwyg/transaction";
|
|
|
|
const addFormatItem = (options: {
|
|
menu: Menu,
|
|
protyle: IProtyle,
|
|
colId: string,
|
|
avID: string,
|
|
format: string,
|
|
oldFormat: string
|
|
avPanelElement: Element
|
|
}) => {
|
|
options.menu.addItem({
|
|
iconHTML: "",
|
|
label: getLabelByNumberFormat(options.format),
|
|
click() {
|
|
transaction(options.protyle, [{
|
|
action: "updateAttrViewColNumberFormat",
|
|
id: options.colId,
|
|
avID: options.avID,
|
|
format: options.format,
|
|
type: "number",
|
|
}], [{
|
|
action: "updateAttrViewColNumberFormat",
|
|
id: options.colId,
|
|
avID: options.avID,
|
|
format: options.oldFormat,
|
|
type: "number",
|
|
}]);
|
|
options.avPanelElement.remove();
|
|
}
|
|
});
|
|
};
|
|
|
|
export const formatNumber = (options: {
|
|
avPanelElement: Element,
|
|
element: HTMLElement,
|
|
protyle: IProtyle,
|
|
colId: string,
|
|
avID: string,
|
|
oldFormat: string
|
|
}) => {
|
|
const menu = new Menu("av-col-format-number");
|
|
addFormatItem({
|
|
menu,
|
|
protyle: options.protyle,
|
|
colId: options.colId,
|
|
avID: options.avID,
|
|
format: "",
|
|
oldFormat: options.oldFormat,
|
|
avPanelElement: options.avPanelElement,
|
|
});
|
|
addFormatItem({
|
|
menu,
|
|
protyle: options.protyle,
|
|
colId: options.colId,
|
|
avID: options.avID,
|
|
format: "commas",
|
|
oldFormat: options.oldFormat,
|
|
avPanelElement: options.avPanelElement,
|
|
});
|
|
addFormatItem({
|
|
menu,
|
|
protyle: options.protyle,
|
|
colId: options.colId,
|
|
avID: options.avID,
|
|
format: "percent",
|
|
oldFormat: options.oldFormat,
|
|
avPanelElement: options.avPanelElement,
|
|
});
|
|
addFormatItem({
|
|
menu,
|
|
protyle: options.protyle,
|
|
colId: options.colId,
|
|
avID: options.avID,
|
|
format: "usDollar",
|
|
oldFormat: options.oldFormat,
|
|
avPanelElement: options.avPanelElement,
|
|
});
|
|
addFormatItem({
|
|
menu,
|
|
protyle: options.protyle,
|
|
colId: options.colId,
|
|
avID: options.avID,
|
|
format: "yuan",
|
|
oldFormat: options.oldFormat,
|
|
avPanelElement: options.avPanelElement,
|
|
});
|
|
addFormatItem({
|
|
menu,
|
|
protyle: options.protyle,
|
|
colId: options.colId,
|
|
avID: options.avID,
|
|
format: "euro",
|
|
oldFormat: options.oldFormat,
|
|
avPanelElement: options.avPanelElement,
|
|
});
|
|
addFormatItem({
|
|
menu,
|
|
protyle: options.protyle,
|
|
colId: options.colId,
|
|
avID: options.avID,
|
|
format: "pound",
|
|
oldFormat: options.oldFormat,
|
|
avPanelElement: options.avPanelElement,
|
|
});
|
|
addFormatItem({
|
|
menu,
|
|
protyle: options.protyle,
|
|
colId: options.colId,
|
|
avID: options.avID,
|
|
format: "yen",
|
|
oldFormat: options.oldFormat,
|
|
avPanelElement: options.avPanelElement,
|
|
});
|
|
addFormatItem({
|
|
menu,
|
|
protyle: options.protyle,
|
|
colId: options.colId,
|
|
avID: options.avID,
|
|
format: "ruble",
|
|
oldFormat: options.oldFormat,
|
|
avPanelElement: options.avPanelElement,
|
|
});
|
|
addFormatItem({
|
|
menu,
|
|
protyle: options.protyle,
|
|
colId: options.colId,
|
|
avID: options.avID,
|
|
format: "rupee",
|
|
oldFormat: options.oldFormat,
|
|
avPanelElement: options.avPanelElement,
|
|
});
|
|
addFormatItem({
|
|
menu,
|
|
protyle: options.protyle,
|
|
colId: options.colId,
|
|
avID: options.avID,
|
|
format: "won",
|
|
oldFormat: options.oldFormat,
|
|
avPanelElement: options.avPanelElement,
|
|
});
|
|
addFormatItem({
|
|
menu,
|
|
protyle: options.protyle,
|
|
colId: options.colId,
|
|
avID: options.avID,
|
|
format: "canadianDollar",
|
|
oldFormat: options.oldFormat,
|
|
avPanelElement: options.avPanelElement,
|
|
});
|
|
addFormatItem({
|
|
menu,
|
|
protyle: options.protyle,
|
|
colId: options.colId,
|
|
avID: options.avID,
|
|
format: "franc",
|
|
oldFormat: options.oldFormat,
|
|
avPanelElement: options.avPanelElement,
|
|
});
|
|
const rect = options.element.getBoundingClientRect();
|
|
menu.open({
|
|
x: rect.left,
|
|
y: rect.bottom,
|
|
h: rect.height,
|
|
w: rect.width,
|
|
isLeft: true,
|
|
});
|
|
};
|
|
|
|
export const getLabelByNumberFormat = (format: string) => {
|
|
switch (format) {
|
|
case "":
|
|
return window.siyuan.languages.numberFormatNone;
|
|
case "commas":
|
|
return window.siyuan.languages.numberFormatCommas;
|
|
case "percent":
|
|
return window.siyuan.languages.numberFormatPercent;
|
|
case "usDollar":
|
|
return window.siyuan.languages.numberFormatUSDollar;
|
|
case "yuan":
|
|
return window.siyuan.languages.numberFormatYuan;
|
|
case "euro":
|
|
return window.siyuan.languages.numberFormatEuro;
|
|
case "pound":
|
|
return window.siyuan.languages.numberFormatPound;
|
|
case "yen":
|
|
return window.siyuan.languages.numberFormatYen;
|
|
case "ruble":
|
|
return window.siyuan.languages.numberFormatRuble;
|
|
case "rupee":
|
|
return window.siyuan.languages.numberFormatRupee;
|
|
case "won":
|
|
return window.siyuan.languages.numberFormatWon;
|
|
case "canadianDollar":
|
|
return window.siyuan.languages.numberFormatCanadianDollar;
|
|
case "franc":
|
|
return window.siyuan.languages.numberFormatFranc;
|
|
}
|
|
};
|