aboutsummaryrefslogtreecommitdiff
path: root/src/Chart.tsx
diff options
context:
space:
mode:
authorDeterminant <ted.sybil@gmail.com>2019-02-14 00:00:35 -0500
committerDeterminant <ted.sybil@gmail.com>2019-02-14 00:00:35 -0500
commitb88894cd027d27b8fb7ab358128f52c6f24fbe0d (patch)
tree62c47a4685484d6165c039aba3631f1ecc12ec76 /src/Chart.tsx
parent6ebb7f7ed0b603425c618bde9129ad09b1308c4e (diff)
...
Diffstat (limited to 'src/Chart.tsx')
-rw-r--r--src/Chart.tsx73
1 files changed, 0 insertions, 73 deletions
diff --git a/src/Chart.tsx b/src/Chart.tsx
index b1c36ed..3b541fa 100644
--- a/src/Chart.tsx
+++ b/src/Chart.tsx
@@ -6,79 +6,6 @@ import cyan from '@material-ui/core/colors/cyan';
import { PieChart, Pie, Cell, Tooltip } from 'recharts';
import { defaultChartColor } from './theme';
-export function getChartData(start, end, patterns, calendars, calEventsGetter) {
- if (start >= end) return Promise.resolve({ patternGraphData: [], calendarGraphData: [] });
- let event_pms = [];
- for (let id in calendars)
- {
- if (!calendars[id].enabled) continue;
- let filtered = patterns.filter(p => p.cal.regex.test(calendars[id].name));
- if (filtered.length > 0)
- event_pms.push(calEventsGetter(id, start, end)
- .then(r => { return { id, events: r, filtered }; }));
- }
- return Promise.all(event_pms).then(all_events => {
- let events = {};
- let patternsByCal = {};
- let results = {}; // pattern idx => time
- let cal_results = {}; // cal id => time
- all_events.forEach(e => {
- events[e.id] = e.events;
- patternsByCal[e.id] = e.filtered;
- });
- for (let i = 0; i < patterns.length; i++)
- results[i] = 0;
- for (let id in calendars) {
- if (!events[id]) continue;
- events[id].forEach(event => {
- patternsByCal[id].forEach(p => {
- if (!p.event.regex.test(event.summary)) return;
- if (!cal_results.hasOwnProperty(id)) {
- cal_results[id] = 0;
- }
- let duration = (event.end - event.start) / 60000;
- results[p.idx] += duration;
- cal_results[id] += duration;
- });
- });
- }
- let patternGraphData = [];
- let calendarGraphData = [];
- const filterMarginal = data => {
- let sum = 0;
- let majorParts = [];
- let minorSum = 0;
- data.forEach(d => sum += d.value);
- data.forEach(d => {
- let ratio = d.value / sum;
- if (ratio < 1e-2) minorSum += d.value;
- else majorParts.push(d);
- });
- majorParts.push({
- name: 'Other',
- value: minorSum,
- color: defaultChartColor,
- });
- return majorParts;
- };
- for (let i = 0; i < patterns.length; i++) {
- patternGraphData.push({
- name: patterns[i].name,
- value: results[i] / 60.0,
- color: patterns[i].color.background});
- }
- for (let id in cal_results) {
- calendarGraphData.push({
- name: calendars[id].name,
- value: (cal_results[id] / 60.0),
- color: calendars[id].color.background});
- }
- return {start, end,
- patternGraphData: filterMarginal(patternGraphData),
- calendarGraphData: filterMarginal(calendarGraphData) };
- });
-}
-
const styles = theme => ({
pieChart: {
margin: '0 auto',