diff --git a/app/src/assets/scss/business/_av.scss b/app/src/assets/scss/business/_av.scss index ca2a751fa..61489758c 100644 --- a/app/src/assets/scss/business/_av.scss +++ b/app/src/assets/scss/business/_av.scss @@ -169,6 +169,7 @@ opacity: 0; overflow: hidden; font-size: 75%; + white-space: nowrap; &.av__calc--ashow { opacity: 1; diff --git a/app/src/protyle/render/av/calc.ts b/app/src/protyle/render/av/calc.ts index 809fe1170..6b8be1393 100644 --- a/app/src/protyle/render/av/calc.ts +++ b/app/src/protyle/render/av/calc.ts @@ -254,3 +254,75 @@ export const openCalcMenu = (protyle: IProtyle, calcElement: HTMLElement) => { const calcRect = calcElement.getBoundingClientRect(); menu.open({x: calcRect.left, y: calcRect.bottom, h: calcRect.height}); }; + +export const getCalcValue = (column: IAVColumn) => { + if (!column.calc || !column.calc.result) { + return ""; + } + let resultCalc: any = column.calc.result.number; + if (column.calc.operator === "Earliest" || column.calc.operator === "Latest" || + (column.calc.operator === "Range" && ["date", "created", "updated"].includes(column.type))) { + resultCalc = column.calc.result[column.type as "date"]; + } + let value = ""; + switch (column.calc.operator) { + case "Count all": + value = `${resultCalc.formattedContent}${window.siyuan.languages.calcResultCountAll}`; + break; + case "Count values": + value = `${resultCalc.formattedContent}${window.siyuan.languages.calcResultCountValues}`; + break; + case "Count unique values": + value = `${resultCalc.formattedContent}${window.siyuan.languages.calcResultCountUniqueValues}`; + break; + case "Count empty": + value = `${resultCalc.formattedContent}${window.siyuan.languages.calcResultCountEmpty}`; + break; + case "Count not empty": + value = `${resultCalc.formattedContent}${window.siyuan.languages.calcResultCountNotEmpty}`; + break; + case "Percent empty": + value = `${resultCalc.formattedContent}${window.siyuan.languages.calcResultPercentEmpty}`; + break; + case "Percent not empty": + value = `${resultCalc.formattedContent}${window.siyuan.languages.calcResultPercentNotEmpty}`; + break; + case "Sum": + value = `${resultCalc.formattedContent}${window.siyuan.languages.calcResultSum}`; + break; + case "Average": + value = `${resultCalc.formattedContent}${window.siyuan.languages.calcResultAverage}`; + break; + case "Median": + value = `${resultCalc.formattedContent}${window.siyuan.languages.calcResultMedian}`; + break; + case "Min": + value = `${resultCalc.formattedContent}${window.siyuan.languages.calcResultMin}`; + break; + case "Max": + value = `${resultCalc.formattedContent}${window.siyuan.languages.calcResultMax}`; + break; + case "Range": + value = `${resultCalc.formattedContent}${window.siyuan.languages.calcResultRange}`; + break; + case "Earliest": + value = `${resultCalc.formattedContent}${window.siyuan.languages.calcOperatorEarliest}`; + break; + case "Latest": + value = `${resultCalc.formattedContent}${window.siyuan.languages.calcOperatorLatest}`; + break; + case "Checked": + value = `${resultCalc.formattedContent}${window.siyuan.languages.checked}`; + break; + case "Unchecked": + value = `${resultCalc.formattedContent}${window.siyuan.languages.unchecked}`; + break; + case "Percent checked": + value = `${resultCalc.formattedContent}${window.siyuan.languages.percentChecked}`; + break; + case "Percent unchecked": + value = `${resultCalc.formattedContent}${window.siyuan.languages.percentUnchecked}`; + break; + } + return value; +}; diff --git a/app/src/protyle/render/av/cell.ts b/app/src/protyle/render/av/cell.ts index 084fc7925..e7b219720 100644 --- a/app/src/protyle/render/av/cell.ts +++ b/app/src/protyle/render/av/cell.ts @@ -9,66 +9,6 @@ import {fetchPost} from "../../../util/fetch"; import {focusBlock} from "../../util/selection"; import * as dayjs from "dayjs"; -export const getCalcValue = (column: IAVColumn) => { - if (!column.calc || !column.calc.result) { - return ""; - } - let resultCalc: any = column.calc.result.number; - if (column.calc.operator === "Earliest" || column.calc.operator === "Latest" || - (column.calc.operator === "Range" && ["date", "created", "updated"].includes(column.type))) { - resultCalc = column.calc.result[column.type as "date"]; - } - let value = ""; - switch (column.calc.operator) { - case "Count all": - value = `${resultCalc.formattedContent}${window.siyuan.languages.calcResultCountAll}`; - break; - case "Count values": - value = `${resultCalc.formattedContent}${window.siyuan.languages.calcResultCountValues}`; - break; - case "Count unique values": - value = `${resultCalc.formattedContent}${window.siyuan.languages.calcResultCountUniqueValues}`; - break; - case "Count empty": - value = `${resultCalc.formattedContent}${window.siyuan.languages.calcResultCountEmpty}`; - break; - case "Count not empty": - value = `${resultCalc.formattedContent}${window.siyuan.languages.calcResultCountNotEmpty}`; - break; - case "Percent empty": - value = `${resultCalc.formattedContent}${window.siyuan.languages.calcResultPercentEmpty}`; - break; - case "Percent not empty": - value = `${resultCalc.formattedContent}${window.siyuan.languages.calcResultPercentNotEmpty}`; - break; - case "Sum": - value = `${resultCalc.formattedContent}${window.siyuan.languages.calcResultSum}`; - break; - case "Average": - value = `${resultCalc.formattedContent}${window.siyuan.languages.calcResultAverage}`; - break; - case "Median": - value = `${resultCalc.formattedContent}${window.siyuan.languages.calcResultMedian}`; - break; - case "Min": - value = `${resultCalc.formattedContent}${window.siyuan.languages.calcResultMin}`; - break; - case "Max": - value = `${resultCalc.formattedContent}${window.siyuan.languages.calcResultMax}`; - break; - case "Range": - value = `${resultCalc.formattedContent}${window.siyuan.languages.calcResultRange}`; - break; - case "Earliest": - value = `${resultCalc.formattedContent}${window.siyuan.languages.calcOperatorEarliest}`; - break; - case "Latest": - value = `${resultCalc.formattedContent}${window.siyuan.languages.calcOperatorLatest}`; - break; - } - return value; -}; - export const genCellValue = (colType: TAVCol, value: string | any) => { let cellValue: IAVCellValue; if (typeof value === "string") { diff --git a/app/src/protyle/render/av/col.ts b/app/src/protyle/render/av/col.ts index 953fad778..8c00f2f79 100644 --- a/app/src/protyle/render/av/col.ts +++ b/app/src/protyle/render/av/col.ts @@ -186,7 +186,11 @@ export const getEditHTML = (options: { `; }; -export const bindEditEvent = (options: { protyle: IProtyle, data: IAV, menuElement: HTMLElement }) => { +export const bindEditEvent = (options: { + protyle: IProtyle, + data: IAV, + menuElement: HTMLElement +}) => { const avID = options.data.id; const colId = options.menuElement.querySelector(".b3-menu__item").getAttribute("data-col-id"); const colData = options.data.view.columns.find((item: IAVColumn) => item.id === colId); @@ -323,6 +327,8 @@ export const getColNameByType = (type: TAVCol) => { return window.siyuan.languages.link; case "mAsset": return window.siyuan.languages.assets; + case "checkbox": + return window.siyuan.languages.checkbox; } }; diff --git a/app/src/protyle/render/av/render.ts b/app/src/protyle/render/av/render.ts index 60ca2c23c..5699968ad 100644 --- a/app/src/protyle/render/av/render.ts +++ b/app/src/protyle/render/av/render.ts @@ -1,13 +1,14 @@ import {fetchPost} from "../../../util/fetch"; import {getColIconByType} from "./col"; import {Constants} from "../../../constants"; -import {getCalcValue, popTextCell} from "./cell"; +import {popTextCell} from "./cell"; import * as dayjs from "dayjs"; import {unicode2Emoji} from "../../../emoji"; import {focusBlock} from "../../util/selection"; import {isMac} from "../../util/compatibility"; import {hasClosestByClassName} from "../../util/hasClosest"; import {stickyRow} from "./row"; +import {getCalcValue} from "./calc"; export const avRender = (element: Element, protyle: IProtyle, cb?: () => void) => { let avElements: Element[] = [];