Skip to content

Commit

Permalink
refactor: speed up using subfilter to narrow down tiddler pool
Browse files Browse the repository at this point in the history
  • Loading branch information
linonetwo committed Feb 11, 2023
1 parent e8e7d1e commit 7742b9a
Showing 1 changed file with 11 additions and 4 deletions.
15 changes: 11 additions & 4 deletions src/echarts/addons/Gk0Wk/GitHubHeatMap.ts
@@ -1,8 +1,8 @@
import { IScriptAddon } from '../../scriptAddon';
import * as ECharts from '$:/plugins/Gk0Wk/echarts/echarts.min.js';

const getFilterByDate = (date: string, subfilter: string) =>
`[all[tiddlers]sameday:created[${date}]][all[tiddlers]sameday:modified[${date}]] +${subfilter} +[sort[]]`;
const getFilterByDate = (date: string) =>
`[sameday:created[${date}]] [sameday:modified[${date}]]`;
const yearDates: Map<number, [string, string][]> = new Map();
const dayTime = 3600 * 24 * 1000;
const getData = (year: number, subfilter: string) => {
Expand All @@ -25,10 +25,16 @@ const getData = (year: number, subfilter: string) => {
yearDates.set(year, dates);
}
let total = 0;
/** Use subfilter to narrow down tiddler pool before the array.map on dates */
const tiddlerSourceIterator = $tw.wiki.makeTiddlerIterator(
$tw.wiki.filterTiddlers(subfilter),
);
return [
yearDates.get(year)!.map(([timeFmt, timeTW]) => {
const count = $tw.wiki.filterTiddlers(
getFilterByDate(timeTW, subfilter),
getFilterByDate(timeTW),
undefined,
tiddlerSourceIterator,
).length;
total += count;
return [timeFmt, count];
Expand Down Expand Up @@ -57,7 +63,8 @@ const GitHubHeatMapAddon: IScriptAddon<any> = {
shouldUpdate: (_, changedTiddlers) => $tw.utils.count(changedTiddlers) > 0,
onUpdate: (myChart, _state, addonAttributes) => {
const year = parseInt(addonAttributes.year, 10) || new Date().getFullYear();
const subfilter = addonAttributes.subfilter || '[!is[shadow]!prefix[$:/]]';
const subfilter =
addonAttributes.subfilter || '[all[tiddlers]!is[shadow]!is[system]]';
const [data, total] = getData(year, subfilter);
const tooltipFormatter = (dateValue: string, count: number) => {
if (count === 0) {
Expand Down

0 comments on commit 7742b9a

Please sign in to comment.