Skip to content

Commit 9a2327a

Browse files
committed
Test expression-eval
1 parent e58ab5a commit 9a2327a

4 files changed

Lines changed: 26 additions & 8 deletions

File tree

examples/TestPieChart.md

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -5,8 +5,8 @@ searchType: tag
55
searchTarget: meditation
66
pie:
77
title: Pie
8-
data: 2,4,6,8,10
9-
dataColor: '#4daf4a,#377eb8,#ff7f00,#984ea3,#e41a1c'
10-
ratioInnerRadius: 0.5
8+
data: '{{sum}}*1,{{sum}}*2,{{sum}}*3,{{sum}}*4,{{sum}}*5'
9+
dataColor: '#4daf4a,#377eb8,#ff7f00,#984ea3,#e41a1c'
10+
ratioInnerRadius: 0.5
1111
```
1212

package.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,7 @@
3131
"dependencies": {
3232
"d3": "^6.5.0",
3333
"d3-interpolate": "^3.0.1",
34+
"expression-eval": "^5.0.0",
3435
"obsidian-daily-notes-interface": "^0.9.1"
3536
}
3637
}

src/expr.ts

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@ import { RenderInfo } from "./data";
22
import * as d3 from "d3";
33
import { Moment } from "moment";
44
import * as helper from "./helper";
5+
import { parse, eval as evaluate } from "expression-eval";
56

67
let fnSet = {
78
// min value of a dataset
@@ -520,3 +521,12 @@ export function resolveTemplate(template: string, renderInfo: RenderInfo) {
520521

521522
return template;
522523
}
524+
525+
export function resolve(s: string, renderInfo: RenderInfo) {
526+
console.log(s);
527+
s = resolveTemplate(s, renderInfo);
528+
console.log(s);
529+
const ast = parse(s);
530+
const value = evaluate(ast, {});
531+
return value;
532+
}

src/pie.ts

Lines changed: 12 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@ import {
1414
} from "./data";
1515
import * as helper from "./helper";
1616
import * as d3 from "d3";
17+
import * as expr from "./expr";
1718

1819
function createAreas(
1920
chartElements: ChartElements,
@@ -85,7 +86,7 @@ function renderTitle(
8586
renderInfo: RenderInfo,
8687
pieInfo: PieInfo
8788
) {
88-
// console.log("renderTitle")
89+
// console.log("renderTitle");
8990
// under graphArea
9091

9192
if (!renderInfo || !pieInfo) return;
@@ -100,10 +101,18 @@ function renderPie(
100101
renderInfo: RenderInfo,
101102
pieInfo: PieInfo
102103
) {
104+
// console.log("renderPie");
105+
// console.log(renderInfo);
106+
103107
let radius = renderInfo.dataAreaSize.width * 0.5 * 0.8;
104-
let data = pieInfo.data.map(function (v) {
105-
return parseFloat(v);
108+
109+
// data
110+
let data = pieInfo.data.map(function (s) {
111+
let value = expr.resolve(s, renderInfo);
112+
return value;
106113
});
114+
115+
// scale
107116
let colorScale = d3.scaleOrdinal().range(pieInfo.dataColor);
108117

109118
let sectorsGroup = chartElements.dataArea.append("g");
@@ -149,8 +158,6 @@ export function renderPieChart(
149158
// console.log(renderInfo);
150159
if (!renderInfo || !pieInfo) return;
151160

152-
return "Under construction";
153-
154161
let chartElements: ChartElements = {};
155162
chartElements = createAreas(chartElements, canvas, renderInfo, pieInfo);
156163

0 commit comments

Comments
 (0)