From 8bc7527072d9d42efd90ae6a4847648c11d48def Mon Sep 17 00:00:00 2001 From: Determinant Date: Sat, 16 Feb 2019 23:37:17 -0500 Subject: improve Settings --- src/Analyze.tsx | 20 +++---- src/Settings.tsx | 170 +++++++++++++++++++++++++++++++++--------------------- src/Snackbar.tsx | 9 ++- src/background.ts | 24 +++----- src/duration.ts | 8 +-- 5 files changed, 132 insertions(+), 99 deletions(-) (limited to 'src') diff --git a/src/Analyze.tsx b/src/Analyze.tsx index 9339289..4e2df49 100644 --- a/src/Analyze.tsx +++ b/src/Analyze.tsx @@ -141,12 +141,11 @@ class Analyze extends React.Component { calendarGraphData: r.calendarGraphData }); } - reset = () => { - this.openDialog("Reset", "Are you sure to reset the patterns?").then(ans => { - if (!ans) return; - this.loadPatterns([]); - this.setState({ startDate: null, endDate: null }); - }); + reset = async () => { + let ans = this.openDialog("Reset", "Are you sure to reset the patterns?"); + if (!ans) return; + this.loadPatterns([]); + this.setState({ startDate: null, endDate: null }); } loadDefaultPatterns() { @@ -163,11 +162,10 @@ class Analyze extends React.Component { this.loadPatterns(patterns); } - loadDefault = () => { - this.openDialog("Load Default", "Load the calendars as patterns?").then(ans => { - if (!ans) return; - this.loadDefaultPatterns(); - }); + loadDefault = async () => { + let ans = await this.openDialog("Load Default", "Load the calendars as patterns?"); + if (!ans) return; + this.loadDefaultPatterns(); } openSnackbar(msg: string, variant: SnackbarVariant) { diff --git a/src/Settings.tsx b/src/Settings.tsx index b02cd25..c6e5a00 100644 --- a/src/Settings.tsx +++ b/src/Settings.tsx @@ -1,4 +1,5 @@ import React from 'react'; +import classNames from 'classnames'; import { Theme, withStyles, StyleRules } from '@material-ui/core/styles'; import Typography from '@material-ui/core/Typography'; import Button from '@material-ui/core/Button'; @@ -21,12 +22,12 @@ import MenuItem from '@material-ui/core/MenuItem'; import Select from '@material-ui/core/Select'; import PatternTable from './PatternTable'; -import Snackbar from './Snackbar'; +import Snackbar, { SnackbarVariant } from './Snackbar'; import AlertDialog from './Dialog'; import * as gapi from './gapi'; import { MsgType, MsgClient } from './msg'; import { Pattern, PatternEntry, PatternEntryFlat } from './pattern'; -import { Duration, TimeUnit, TrackPeriod, TrackPeriodFlat } from './duration'; +import { DurationFlat, TrackedPeriodFlat } from './duration'; const styles = (theme: Theme): StyleRules => ({ tableHead: { @@ -42,6 +43,14 @@ const styles = (theme: Theme): StyleRules => ({ maxHeight: 400, overflowY: 'auto' }, + bottomButtons: { + marginTop: 10, + textAlign: 'right' + }, + trackedPeriodInput: { + paddingTop: 10, + paddingBottom: 10 + } }); const STableCell = withStyles(theme => ({ @@ -57,25 +66,25 @@ const CompactListItem = withStyles(theme => ({ }, }))(ListItem); -type TrackedPeriodProps = { +type TrackedPeriodInputProps = { name: string - fromDuration: Duration, - toDuration: Duration, + fromDuration: DurationFlat, + toDuration: DurationFlat, nameOnChange: (name: string) => void, - fromOnChange: (d: Duration) => void, - toOnChange: (d: Duration) => void + fromOnChange: (d: DurationFlat) => void, + toOnChange: (d: DurationFlat) => void }; -class TrackedPeriod extends React.Component { - valueOnChange = (old: Duration, onChange: (d: Duration) => void) => ( +class TrackedPeriodInput extends React.Component { + valueOnChange = (old: DurationFlat, onChange: (d: DurationFlat) => void) => ( (event: React.ChangeEvent) => { - onChange(new Duration(event.target.value, old.unit)); + onChange({ value: event.target.value, unit: old.unit}); } ); - unitOnChange = (old: Duration, onChange: (d: Duration) => void) => ( + unitOnChange = (old: DurationFlat, onChange: (d: DurationFlat) => void) => ( (event: React.ChangeEvent) => { - onChange(new Duration(old.value, event.target.value as TimeUnit)); + onChange({ value: old.value, unit: event.target.value}); } ); @@ -112,19 +121,19 @@ class TrackedPeriod extends React.Component { return ( nameOnChange(event.target.value)}/>: from ago to