|
@@ -0,0 +1,200 @@
|
|
|
+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: HTMLElement
|
|
|
+}) => {
|
|
|
+ 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: HTMLElement,
|
|
|
+ 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
|
|
|
+ }
|
|
|
+}
|