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[] = [];