mirror of
https://github.com/siyuan-note/siyuan.git
synced 2026-01-06 00:38:49 +01:00
This commit is contained in:
parent
06bb1de768
commit
1840502b04
5 changed files with 82 additions and 62 deletions
|
|
@ -169,6 +169,7 @@
|
|||
opacity: 0;
|
||||
overflow: hidden;
|
||||
font-size: 75%;
|
||||
white-space: nowrap;
|
||||
|
||||
&.av__calc--ashow {
|
||||
opacity: 1;
|
||||
|
|
|
|||
|
|
@ -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 = `<span>${resultCalc.formattedContent}</span>${window.siyuan.languages.calcResultCountAll}`;
|
||||
break;
|
||||
case "Count values":
|
||||
value = `<span>${resultCalc.formattedContent}</span>${window.siyuan.languages.calcResultCountValues}`;
|
||||
break;
|
||||
case "Count unique values":
|
||||
value = `<span>${resultCalc.formattedContent}</span>${window.siyuan.languages.calcResultCountUniqueValues}`;
|
||||
break;
|
||||
case "Count empty":
|
||||
value = `<span>${resultCalc.formattedContent}</span>${window.siyuan.languages.calcResultCountEmpty}`;
|
||||
break;
|
||||
case "Count not empty":
|
||||
value = `<span>${resultCalc.formattedContent}</span>${window.siyuan.languages.calcResultCountNotEmpty}`;
|
||||
break;
|
||||
case "Percent empty":
|
||||
value = `<span>${resultCalc.formattedContent}</span>${window.siyuan.languages.calcResultPercentEmpty}`;
|
||||
break;
|
||||
case "Percent not empty":
|
||||
value = `<span>${resultCalc.formattedContent}</span>${window.siyuan.languages.calcResultPercentNotEmpty}`;
|
||||
break;
|
||||
case "Sum":
|
||||
value = `<span>${resultCalc.formattedContent}</span>${window.siyuan.languages.calcResultSum}`;
|
||||
break;
|
||||
case "Average":
|
||||
value = `<span>${resultCalc.formattedContent}</span>${window.siyuan.languages.calcResultAverage}`;
|
||||
break;
|
||||
case "Median":
|
||||
value = `<span>${resultCalc.formattedContent}</span>${window.siyuan.languages.calcResultMedian}`;
|
||||
break;
|
||||
case "Min":
|
||||
value = `<span>${resultCalc.formattedContent}</span>${window.siyuan.languages.calcResultMin}`;
|
||||
break;
|
||||
case "Max":
|
||||
value = `<span>${resultCalc.formattedContent}</span>${window.siyuan.languages.calcResultMax}`;
|
||||
break;
|
||||
case "Range":
|
||||
value = `<span>${resultCalc.formattedContent}</span>${window.siyuan.languages.calcResultRange}`;
|
||||
break;
|
||||
case "Earliest":
|
||||
value = `<span>${resultCalc.formattedContent}</span>${window.siyuan.languages.calcOperatorEarliest}`;
|
||||
break;
|
||||
case "Latest":
|
||||
value = `<span>${resultCalc.formattedContent}</span>${window.siyuan.languages.calcOperatorLatest}`;
|
||||
break;
|
||||
case "Checked":
|
||||
value = `<span>${resultCalc.formattedContent}</span>${window.siyuan.languages.checked}`;
|
||||
break;
|
||||
case "Unchecked":
|
||||
value = `<span>${resultCalc.formattedContent}</span>${window.siyuan.languages.unchecked}`;
|
||||
break;
|
||||
case "Percent checked":
|
||||
value = `<span>${resultCalc.formattedContent}</span>${window.siyuan.languages.percentChecked}`;
|
||||
break;
|
||||
case "Percent unchecked":
|
||||
value = `<span>${resultCalc.formattedContent}</span>${window.siyuan.languages.percentUnchecked}`;
|
||||
break;
|
||||
}
|
||||
return value;
|
||||
};
|
||||
|
|
|
|||
|
|
@ -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 = `<span>${resultCalc.formattedContent}</span>${window.siyuan.languages.calcResultCountAll}`;
|
||||
break;
|
||||
case "Count values":
|
||||
value = `<span>${resultCalc.formattedContent}</span>${window.siyuan.languages.calcResultCountValues}`;
|
||||
break;
|
||||
case "Count unique values":
|
||||
value = `<span>${resultCalc.formattedContent}</span>${window.siyuan.languages.calcResultCountUniqueValues}`;
|
||||
break;
|
||||
case "Count empty":
|
||||
value = `<span>${resultCalc.formattedContent}</span>${window.siyuan.languages.calcResultCountEmpty}`;
|
||||
break;
|
||||
case "Count not empty":
|
||||
value = `<span>${resultCalc.formattedContent}</span>${window.siyuan.languages.calcResultCountNotEmpty}`;
|
||||
break;
|
||||
case "Percent empty":
|
||||
value = `<span>${resultCalc.formattedContent}</span>${window.siyuan.languages.calcResultPercentEmpty}`;
|
||||
break;
|
||||
case "Percent not empty":
|
||||
value = `<span>${resultCalc.formattedContent}</span>${window.siyuan.languages.calcResultPercentNotEmpty}`;
|
||||
break;
|
||||
case "Sum":
|
||||
value = `<span>${resultCalc.formattedContent}</span>${window.siyuan.languages.calcResultSum}`;
|
||||
break;
|
||||
case "Average":
|
||||
value = `<span>${resultCalc.formattedContent}</span>${window.siyuan.languages.calcResultAverage}`;
|
||||
break;
|
||||
case "Median":
|
||||
value = `<span>${resultCalc.formattedContent}</span>${window.siyuan.languages.calcResultMedian}`;
|
||||
break;
|
||||
case "Min":
|
||||
value = `<span>${resultCalc.formattedContent}</span>${window.siyuan.languages.calcResultMin}`;
|
||||
break;
|
||||
case "Max":
|
||||
value = `<span>${resultCalc.formattedContent}</span>${window.siyuan.languages.calcResultMax}`;
|
||||
break;
|
||||
case "Range":
|
||||
value = `<span>${resultCalc.formattedContent}</span>${window.siyuan.languages.calcResultRange}`;
|
||||
break;
|
||||
case "Earliest":
|
||||
value = `<span>${resultCalc.formattedContent}</span>${window.siyuan.languages.calcOperatorEarliest}`;
|
||||
break;
|
||||
case "Latest":
|
||||
value = `<span>${resultCalc.formattedContent}</span>${window.siyuan.languages.calcOperatorLatest}`;
|
||||
break;
|
||||
}
|
||||
return value;
|
||||
};
|
||||
|
||||
export const genCellValue = (colType: TAVCol, value: string | any) => {
|
||||
let cellValue: IAVCellValue;
|
||||
if (typeof value === "string") {
|
||||
|
|
|
|||
|
|
@ -186,7 +186,11 @@ export const getEditHTML = (options: {
|
|||
</div>`;
|
||||
};
|
||||
|
||||
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;
|
||||
}
|
||||
};
|
||||
|
||||
|
|
|
|||
|
|
@ -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[] = [];
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue