mirror of
https://github.com/siyuan-note/siyuan.git
synced 2025-12-19 16:10:12 +01:00
This commit is contained in:
parent
a2a75be6f0
commit
46e395189d
3 changed files with 64 additions and 3 deletions
|
|
@ -109,12 +109,22 @@
|
||||||
box-sizing: border-box;
|
box-sizing: border-box;
|
||||||
opacity: 0;
|
opacity: 0;
|
||||||
|
|
||||||
|
&.av__calc--ashow {
|
||||||
|
opacity: 1;
|
||||||
|
}
|
||||||
|
|
||||||
svg {
|
svg {
|
||||||
height: 10px;
|
height: 10px;
|
||||||
width: 10px;
|
width: 10px;
|
||||||
margin-left: 5px;
|
margin-left: 5px;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
span {
|
||||||
|
font-size: 16px;
|
||||||
|
color: var(--b3-theme-on-background);
|
||||||
|
margin-left: 5px;
|
||||||
|
}
|
||||||
|
|
||||||
&:hover {
|
&:hover {
|
||||||
background-color: var(--b3-list-icon-hover);
|
background-color: var(--b3-list-icon-hover);
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -3,6 +3,56 @@ import {hasClosestBlock, hasClosestByClassName} from "../../util/hasClosest";
|
||||||
import {openMenuPanel} from "./openMenuPanel";
|
import {openMenuPanel} from "./openMenuPanel";
|
||||||
import {Menu} from "../../../plugin/Menu";
|
import {Menu} from "../../../plugin/Menu";
|
||||||
|
|
||||||
|
export const getCalcValue = (column: IAVColumn) => {
|
||||||
|
if (!column.calc || !column.calc.result) {
|
||||||
|
return ""
|
||||||
|
}
|
||||||
|
const resultCalc = column.calc.result.number
|
||||||
|
let value = "";
|
||||||
|
switch (column.calc.operator) {
|
||||||
|
case "Count all":
|
||||||
|
value = `<span>${resultCalc.content}</span>${window.siyuan.languages.calcResultCountAll}`
|
||||||
|
break;
|
||||||
|
case "Count values":
|
||||||
|
value = `<span>${resultCalc.content}</span>${window.siyuan.languages.calcResultCountValues}`;
|
||||||
|
break;
|
||||||
|
case "Count unique values":
|
||||||
|
value = `<span>${resultCalc.content}</span>${window.siyuan.languages.calcResultCountUniqueValues}`;
|
||||||
|
break;
|
||||||
|
case "Count empty":
|
||||||
|
value = `<span>${resultCalc.content}</span>${window.siyuan.languages.calcResultCountEmpty}`;
|
||||||
|
break;
|
||||||
|
case "Count not empty":
|
||||||
|
value = `<span>${resultCalc.content}</span>${window.siyuan.languages.calcResultCountNotEmpty}`;
|
||||||
|
break;
|
||||||
|
case "Percent empty":
|
||||||
|
value = `<span>${resultCalc.content}</span>${window.siyuan.languages.calcResultPercentEmpty}`;
|
||||||
|
break;
|
||||||
|
case "Percent not empty":
|
||||||
|
value = `<span>${resultCalc.content}</span>${window.siyuan.languages.calcResultPercentNotEmpty}`;
|
||||||
|
break;
|
||||||
|
case "Sum":
|
||||||
|
value = `<span>${resultCalc.content}</span>${window.siyuan.languages.calcResultSum}`;
|
||||||
|
break;
|
||||||
|
case "Average":
|
||||||
|
value = `<span>${resultCalc.content}</span>${window.siyuan.languages.calcResultAverage}`;
|
||||||
|
break;
|
||||||
|
case "Median":
|
||||||
|
value = `<span>${resultCalc.content}</span>${window.siyuan.languages.calcResultMedian}`;
|
||||||
|
break;
|
||||||
|
case "Min":
|
||||||
|
value = `<span>${resultCalc.content}</span>${window.siyuan.languages.calcResultMin}`;
|
||||||
|
break;
|
||||||
|
case "Max":
|
||||||
|
value = `<span>${resultCalc.content}</span>${window.siyuan.languages.calcResultMax}`;
|
||||||
|
break;
|
||||||
|
case "Range":
|
||||||
|
value = `<span>${resultCalc.content}</span>${window.siyuan.languages.calcResultRange}`;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
return value;
|
||||||
|
}
|
||||||
|
|
||||||
export const genCellValue = (colType: TAVCol, value: string | {
|
export const genCellValue = (colType: TAVCol, value: string | {
|
||||||
content: string,
|
content: string,
|
||||||
color: string
|
color: string
|
||||||
|
|
|
||||||
|
|
@ -1,6 +1,7 @@
|
||||||
import {fetchPost} from "../../../util/fetch";
|
import {fetchPost} from "../../../util/fetch";
|
||||||
import {getColIconByType, showColMenu} from "./col";
|
import {getColIconByType, showColMenu} from "./col";
|
||||||
import {Constants} from "../../../constants";
|
import {Constants} from "../../../constants";
|
||||||
|
import {getCalcValue} from "./cell";
|
||||||
|
|
||||||
export const avRender = (element: Element, cb?: () => void) => {
|
export const avRender = (element: Element, cb?: () => void) => {
|
||||||
let avElements: Element[] = [];
|
let avElements: Element[] = [];
|
||||||
|
|
@ -36,8 +37,9 @@ ${column.wrap ? "" : "white-space: nowrap;"}">
|
||||||
</div>
|
</div>
|
||||||
<div class="av__widthdrag"></div>
|
<div class="av__widthdrag"></div>
|
||||||
</div>`;
|
</div>`;
|
||||||
calcHTML += `<div class="av__calc${(calcHTML || !column.calc) ? "" : " av__calc--show"}" data-col-id="${column.id}" data-dtype="${column.type}" data-operator="${column.calc?.operator || ""}"
|
|
||||||
style="width: ${column.width || "200px"}"><svg><use xlink:href="#iconDown"></use></svg>${window.siyuan.languages.calc}</div>`;
|
calcHTML += `<div class="av__calc${calcHTML ? "" : " av__calc--show"}${column.calc && column.calc.operator !== "" ? " av__calc--ashow" : ""}" data-col-id="${column.id}" data-dtype="${column.type}" data-operator="${column.calc?.operator || ""}"
|
||||||
|
style="width: ${column.width || "200px"}">${getCalcValue(column) || '<svg><use xlink:href="#iconDown"></use></svg>' + window.siyuan.languages.calc}</div>`;
|
||||||
});
|
});
|
||||||
tableHTML += `<div class="block__icons" style="min-height: auto">
|
tableHTML += `<div class="block__icons" style="min-height: auto">
|
||||||
<div class="block__icon block__icon--show" data-type="av-header-add"><svg><use xlink:href="#iconAdd"></use></svg></div>
|
<div class="block__icon block__icon--show" data-type="av-header-add"><svg><use xlink:href="#iconAdd"></use></svg></div>
|
||||||
|
|
@ -45,7 +47,6 @@ style="width: ${column.width || "200px"}"><svg><use xlink:href="#iconDown"></use
|
||||||
<div class="block__icon block__icon--show" data-type="av-header-more"><svg><use xlink:href="#iconMore"></use></svg></div>
|
<div class="block__icon block__icon--show" data-type="av-header-more"><svg><use xlink:href="#iconMore"></use></svg></div>
|
||||||
</div>
|
</div>
|
||||||
</div>`;
|
</div>`;
|
||||||
|
|
||||||
// body
|
// body
|
||||||
data.rows.forEach((row: IAVRow) => {
|
data.rows.forEach((row: IAVRow) => {
|
||||||
tableHTML += `<div class="av__row" data-id="${row.id}">
|
tableHTML += `<div class="av__row" data-id="${row.id}">
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue