aboutsummaryrefslogtreecommitdiff
path: root/build/static/js/main.5cb68b1e.chunk.js.map
diff options
context:
space:
mode:
Diffstat (limited to 'build/static/js/main.5cb68b1e.chunk.js.map')
-rw-r--r--build/static/js/main.5cb68b1e.chunk.js.map1
1 files changed, 0 insertions, 1 deletions
diff --git a/build/static/js/main.5cb68b1e.chunk.js.map b/build/static/js/main.5cb68b1e.chunk.js.map
deleted file mode 100644
index 77f407e..0000000
--- a/build/static/js/main.5cb68b1e.chunk.js.map
+++ /dev/null
@@ -1 +0,0 @@
-{"version":3,"sources":["Logo.js","theme.js","gapi.js","msg.js","pattern.js","Chart.js","RegexField.js","PatternTable.js","CustomAnalyzer.js","Settings.js","App.js","serviceWorker.js","index.js"],"names":["Logo","props","react_default","a","createElement","xmlns","viewBox","version","style","id","transform","points","fill","fontStyle","fontVariant","fontWeight","fontStretch","fontSize","fontFamily","theme","createMuiTheme","palette","primary","light","orange","main","dark","contrastText","typography","useNextVariants","gapi_base","GApiError","Object","freeze","invalidSyncToken","Symbol","notLoggedIn","notLoggedOut","otherError","to_params","dict","entries","filter","_ref","_ref2","slicedToArray","map","_ref3","_ref4","k","v","concat","encodeURIComponent","join","loggedIn","_getAuthToken","interactive","arguments","length","undefined","Promise","resolver","chrome","identity","getAuthToken","token","runtime","lastError","then","_ref5","_ref6","getLoggedIn","catch","console","log","resolve","b","logout","fetch","method","async","response","status","removeCachedAuthToken","_removeCachedAuthToken","getCalendars","access_token","json","data","items","getColors","_updatePatterns","_getPatterns","_updateCalendars","_getCalendars","_getCalEvents","msgType","updatePatterns","getPatterns","updateCalendars","getCalEvents","stringifyMsgType","mt","error","Msg","type","classCallCheck","this","createClass","key","value","inflate","obj","s","parseMsgType","MsgClient","channelName","_this","sendMsg","cb","rcb","requestCallback","pm","ids","pop","maxId","inFlight","port","postMessage","deflate","connect","name","onMessage","addListener","msg","assert","push","Pattern","isRegex","label","get","RegExp","emptyPattern","anyPattern","revive","PatternEntry","idx","calPattern","eventPattern","cal","event","defaultPatternEntry","customizedLabel","cx","cy","x","y","anchor","dx","dy","textAnchor","withStyles","pieChart","margin","Grid_default","container","spacing","item","xs","lg","className","classes","patternTableWrapper","PieChart","width","height","Pie","patternGraphData","dataKey","outerRadius","deepOrange","Tooltip","formatter","toFixed","calendarGraphData","innerRadius","cyan","d","i","Cell","color","RegexField","pitems","options","p0","isEmpty","MenuItem_default","fieldRegex","fieldNoRegex","FormControl_default","Select_default","onChange","target","TextField_default","React","Component","RegexFieldWithStyles","marginRight","patternHead","field","elem","TextField","withTheme","calendars","any","PatternTable","state","page","rowsPerPage","activePattern","handleChangePage","setState","handleChangeRowsPerPage","_this2","_this$props","patterns","_this$state","nDummy","Math","min","rows","slice","p","TableRow_default","onMouseOver","onMouseOut","CustomText","TableCell_default","onUpdatePattern","deleteButtonShow","deleteButtonHide","DeleteOutlined_default","deleteIcon","onClick","onRemovePattern","Table_default","patternTable","TableHead_default","TableBody_default","colSpan","TablePagination_default","rowsPerPageOptions","component","count","backIconButtonProps","aria-label","nextIconButtonProps","onChangePage","onChangeRowsPerPage","position","right","display","cursor","overflowX","overflowY","minWidth","default_chart_data","CustomAnalyzer","possibleConstructorReturn","getPrototypeOf","call","startDate","endDate","updatePattern","msgClient","removePattern","splice","newPattern","toConsumableArray","loadPatterns","start","end","getTime","e","Date","analyze","startOf","toDate","event_pms","cals","_loop","calName","regex","test","filterPatterns","r","events","all","all_events","results","cal_results","forEach","_loop2","summary","hasOwnProperty","duration","background","alert","reset","enabledOnly","md","fullWidth","FormGroup_default","Typography_default","variant","gutterBottom","IconButton_default","marginBottom","marginLeft","AddCircle_default","src_PatternTable","textAlign","react_dates","startDateId","endDateId","onDatesChange","focusedInput","onFocusChange","isOutsideRange","buttonSpacer","Button_default","Chart","unit","STableCell","body","TableCell","CompactListItem","dense","paddingTop","paddingBottom","ListItem","Settings","isLoggedIn","handleLogin","loadAll","handleLogout","gapi","handleToggleCalendar","objectSpread","enabled","loadDefaultPatterns","colors","calendar","colorId","loadCalendars","tableHead","align","disabled","Refresh_default","tableContent","List_default","calendarList","keys","disableGutters","button","Checkbox_default","checked","disableRipple","ListItemText_default","verticalAlign","lineHeight","maxHeight","Dashboard","currentTab","handleChangeTab","styles","HashRouter","root","AppBar_default","appBar","Toolbar_default","toolbar","noWrap","title","Tabs_default","indicator","Tab_default","Link","to","CssBaseline_default","content","appBarSpacer","Route","exact","path","zIndex","drawer","transition","transitions","create","easing","sharp","leavingScreen","flexGrow","mixins","padding","overflow","backgroundColor","Boolean","window","location","hostname","match","ReactDOM","render","App","document","getElementById","navigator","serviceWorker","ready","registration","unregister"],"mappings":"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","file":"static/js/main.5cb68b1e.chunk.js","sourcesContent":["import React from 'react';\nexport default (props) =>\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n viewBox=\"0 0 98.905998 93.557997\"\n version=\"1.1\"\n style={props.style}>\n <g id=\"g13\"\n transform=\"translate(-153.533,-203.047)\">\n <g id=\"g29\">\n <g\n id=\"g27\">\n <polygon\n id=\"polygon7\"\n points=\"252.439,241.924 234.556,288.703 185.103,296.605 153.533,257.728 171.416,210.949 220.869,203.047 \"\n style={{fill: '#ff8000'}} />\n <g\n id=\"g11\"\n transform=\"translate(167.24355,224.20734)\">\n <text\n id=\"text9\"\n style={{fontStyle:'normal',\n fontVariant:'normal',\n fontWeight:'normal',\n fontStretch:'normal',\n fontSize:75,\n fontFamily:'TypoPRO Fantasque Sans Mono',\n fill:'#ffeade'}}\n transform=\"translate(0.586,49.072)\">Cr</text>\n </g>\n </g>\n </g>\n </g>\n </svg>\n","import { createMuiTheme } from '@material-ui/core/styles';\nimport orange from '@material-ui/core/colors/orange';\n\nconst theme = createMuiTheme({\n palette: {\n primary: {\n light: orange[300],\n main: orange[500],\n dark: orange[700],\n contrastText: \"#fff\"\n }\n },\n typography: {\n useNextVariants: true,\n }\n});\n\nexport default theme;\n","/* global chrome */\nimport LRU from \"lru-cache\";\nconst gapi_base = 'https://www.googleapis.com/calendar/v3';\n\nconst GApiError = Object.freeze({\n invalidSyncToken: Symbol(\"invalidSyncToken\"),\n notLoggedIn: Symbol(\"notLoggedIn\"),\n notLoggedOut: Symbol(\"notLoggedOut\"),\n otherError: Symbol(\"otherError\"),\n});\n\nfunction to_params(dict) {\n return Object.entries(dict).filter(([k, v]) => v).map(([k, v]) => `${encodeURIComponent(k)}=${encodeURIComponent(v)}`).join('&');\n}\n\nlet loggedIn = null;\n\nfunction _getAuthToken(interactive = false) {\n return new Promise(resolver =>\n chrome.identity.getAuthToken(\n { interactive }, token => resolver([token, !chrome.runtime.lastError])))\n .then(([token, ok]) => {\n if (ok) return token;\n else throw GApiError.notLoggedIn;\n });\n}\n\nfunction _removeCachedAuthToken(token) {\n return new Promise(resolver =>\n chrome.identity.removeCachedAuthToken({ token }, () => resolver()));\n}\n\nexport function getLoggedIn() {\n if (loggedIn === null)\n {\n return _getAuthToken(false)\n .then(() => {loggedIn = true})\n .catch(() => {loggedIn = false; console.log(\"here\");})\n .then(() => loggedIn);\n }\n else return Promise.resolve(loggedIn);\n}\n\nexport function getAuthToken() {\n return getLoggedIn().then(b => {\n if (b) return _getAuthToken(false);\n else throw GApiError.notLoggedIn;\n });\n}\n\nexport function login() {\n return getLoggedIn().then(b => {\n if (!b) return _getAuthToken(true).then(() => loggedIn = true);\n else throw GApiError.notLoggedOut;\n });\n}\n\nexport function logout() {\n return getAuthToken().then(token => {\n return fetch(`https://accounts.google.com/o/oauth2/revoke?${to_params({ token })}`,\n { method: 'GET', async: true }).then(response => {\n if (response.status === 200)\n return _removeCachedAuthToken(token);\n else throw GApiError.otherError;\n });\n }).then(() => loggedIn = false);\n}\n\nexport function getCalendars(token) {\n return fetch(`${gapi_base}/users/me/calendarList?${to_params({access_token: token})}`,\n { method: 'GET', async: true })\n .then(response => response.json())\n .then(data => data.items);\n}\n\nexport function getColors(token) {\n return fetch(`${gapi_base}/colors?${to_params({access_token: token})}`,\n { method: 'GET', async: true })\n .then(response => response.json());\n}\n\nfunction getEvent(calId, eventId, token) {\n return fetch(`${gapi_base}/calendars/${calId}/events/${eventId}?${to_params({access_token: token})}`,\n { method: 'GET', async: true })\n .then(response => response.json());\n}\n\nfunction getEvents(calId, token, syncToken=null, timeMin=null, timeMax=null, resultsPerRequest=100) {\n let results = [];\n const singleFetch = (pageToken, syncToken) => fetch(`${gapi_base}/calendars/${calId}/events?${to_params({\n access_token: token,\n pageToken,\n syncToken,\n timeMin,\n timeMax,\n maxResults: resultsPerRequest\n })}`, { method: 'GET', async: true })\n .then(response => {\n if (response.status === 200)\n return response.json();\n else if (response.status === 410)\n throw GApiError.invalidSyncToken;\n else throw GApiError.otherError;\n })\n .then(data => {\n results.push(...data.items);\n if (data.nextPageToken) {\n return singleFetch(data.nextPageToken, '');\n } else {\n return ({\n nextSyncToken: data.nextSyncToken,\n results\n });\n }\n })\n\n return singleFetch('', syncToken);\n}\n\nexport class GCalendar {\n constructor(calId, name, options={maxCachedItems: 100, nDaysPerSlot: 10, largeQuery: 10}) {\n this.calId = calId;\n this.name = name;\n this.syncToken = '';\n this.cache = new LRU({\n max: options.maxCachedItems,\n dispose: (k, v) => this.onRemoveSlot(k, v)\n });\n this.eventMeta = {};\n this.options = options;\n this.divider = 8.64e7 * this.options.nDaysPerSlot;\n }\n\n get token() { return getAuthToken(); }\n\n dateToCacheKey(date) {\n return Math.floor(date / this.divider);\n }\n\n dateRangeToCacheKeys(range) {\n return {\n start: this.dateToCacheKey(range.start),\n end: this.dateToCacheKey(new Date(range.end.getTime() - 1))\n };\n }\n\n getSlot(k) {\n if (!this.cache.has(k))\n {\n let res = {};\n this.cache.set(k, res);\n return res;\n }\n else return this.cache.get(k);\n }\n\n onRemoveSlot(k, v) {\n for (let id in v) {\n console.assert(this.eventMeta[id]);\n let keys = this.eventMeta[id].keys;\n keys.delete(k);\n if (keys.size === 0)\n delete this.eventMeta[id];\n }\n }\n\n slotStartDate(k) { return new Date(k * this.divider); }\n slotEndDate(k) { return new Date((k + 1) * this.divider); }\n\n addEvent(e, evict = false) {\n //console.log('adding event', e);\n if (this.eventMeta.hasOwnProperty(e.id))\n this.removeEvent(e);\n let r = this.dateRangeToCacheKeys(e);\n let ks = r.start;\n let ke = r.end;\n let t = this.cache.length;\n let keys = new Set();\n for (let i = ks; i <= ke; i++)\n {\n keys.add(i);\n if (!this.cache.has(i)) t++;\n }\n this.eventMeta[e.id] = {\n keys,\n summary: e.summary,\n };\n if (!evict && t > this.options.maxCachedItems) return;\n if (ks === ke)\n this.getSlot(ks)[e.id] = {\n start: e.start,\n end: e.end,\n id: e.id };\n else\n {\n this.getSlot(ks)[e.id] = {\n start: e.start,\n end: this.slotEndDate(ks),\n id: e.id };\n this.getSlot(ke)[e.id] = {\n start: this.slotStartDate(ke),\n end: e.end,\n id: e.id };\n for (let k = ks + 1; k < ke; k++)\n this.getSlot(k)[e.id] = {\n start: this.slotStartDate(k),\n end: this.slotEndDate(k),\n id: e.id};\n }\n }\n\n removeEvent(e) {\n let keys = this.eventMeta[e.id].keys;\n console.assert(keys);\n keys.forEach(k => delete this.getSlot(k)[e.id]);\n delete this.eventMeta[e.id];\n }\n\n getSlotEvents(k, start, end) {\n let s = this.getSlot(k);\n //console.log(s);\n let results = [];\n for (let id in s) {\n if (!(s[id].start >= end || s[id].end <= start))\n {\n results.push({\n id,\n start: s[id].start < start ? start: s[id].start,\n end: s[id].end > end ? end: s[id].end,\n summary: this.eventMeta[id].summary\n });\n }\n }\n return results;\n }\n\n getCachedEvents(_r) {\n let r = this.dateRangeToCacheKeys(_r);\n let ks = r.start;\n let ke = r.end;\n let results = this.getSlotEvents(ks, _r.start, _r.end);\n for (let k = ks + 1; k < ke; k++)\n {\n let s = this.getSlot(k);\n for (let id in s)\n results.push(s[id]);\n }\n if (ke > ks)\n results.push(...this.getSlotEvents(ke, _r.start, _r.end));\n return results;\n }\n\n sync() {\n return this.token.then(token => getEvents(this.calId, token, this.syncToken).then(r => {\n let pms = r.results.map(e => e.start ? Promise.resolve(e) : getEvent(this.calId, e.id, token));\n return Promise.all(pms).then(results => {\n results.forEach(e => {\n e.start = new Date(e.start.dateTime);\n e.end = new Date(e.end.dateTime);\n if (e.status === 'confirmed')\n this.addEvent(e);\n else if (e.status === 'cancelled')\n this.removeEvent(e);\n });\n this.syncToken = r.nextSyncToken;\n });\n })).catch(e => {\n if (e === GApiError.invalidSyncToken) {\n this.syncToken = '';\n this.sync();\n } else throw e;\n });\n }\n\n getEvents(start, end) {\n let r = this.dateRangeToCacheKeys({ start, end });\n let query = {};\n for (let k = r.start; k <= r.end; k++)\n if (!this.cache.has(k))\n {\n if (!query.hasOwnProperty('start'))\n query.start = k;\n query.end = k;\n }\n console.log(`start: ${start} end: ${end}`);\n if (query.hasOwnProperty('start'))\n {\n console.assert(query.start <= query.end);\n if (query.end - query.start + 1 > this.options.largeQuery) {\n console.log(`encounter large query, use direct fetch`);\n return this.token.then(token => getEvents(this.calId, token, null,\n start.toISOString(), end.toISOString()).then(r => {\n let results = [];\n r.results.forEach(e => {\n console.assert(e.start);\n e.start = new Date(e.start.dateTime);\n e.end = new Date(e.end.dateTime);\n results.push(e);\n });\n return results.filter(e => !(e.start >= end || e.end <= start)).map(e => {\n return {\n id: e.id,\n start: e.start < start ? start: e.start,\n end: e.end > end ? end: e.end,\n summary: e.summary,\n };\n });\n }));\n }\n\n console.log(`fetching short event list`);\n return this.token.then(token => getEvents(this.calId, token, null,\n this.slotStartDate(query.start).toISOString(),\n this.slotEndDate(query.end).toISOString()).then(r => {\n r.results.forEach(e => {\n if (e.status === 'confirmed')\n {\n console.assert(e.start);\n e.start = new Date(e.start.dateTime);\n e.end = new Date(e.end.dateTime);\n this.addEvent(e, true);\n }\n });\n if (this.syncToken === '')\n this.syncToken = r.nextSyncToken;\n })).then(() => this.sync())\n .then(() => this.getCachedEvents({ start, end }));\n }\n else\n {\n console.log(`cache hit`);\n return this.sync().then(() => this.getCachedEvents({ start, end }));\n }\n }\n}\n","/* global chrome */\nconst _updatePatterns = \"updatePatterns\";\nconst _getPatterns = \"getPatterns\";\nconst _updateCalendars = \"updateCalendars\";\nconst _getCalendars = \"getCalendars\";\nconst _getCalEvents = \"getCalEvents\";\n\nexport const msgType = Object.freeze({\n updatePatterns: Symbol(_updatePatterns),\n getPatterns: Symbol(_getPatterns),\n updateCalendars: Symbol(_updateCalendars),\n getCalendars: Symbol(_getCalendars),\n getCalEvents: Symbol(_getCalEvents),\n});\n\nfunction stringifyMsgType(mt) {\n switch (mt) {\n case msgType.updatePatterns: return _updatePatterns;\n case msgType.getPatterns: return _getPatterns;\n case msgType.updateCalendars: return _updateCalendars;\n case msgType.getCalendars: return _getCalendars;\n case msgType.getCalEvents: return _getCalEvents;\n default: console.error(\"unreachable\");\n }\n}\n\nfunction parseMsgType(s) {\n switch(s) {\n case _updatePatterns: return msgType.updatePatterns;\n case _getPatterns: return msgType.getPatterns;\n case _updateCalendars: return msgType.updateCalendars;\n case _getCalendars: return msgType.getCalendars;\n case _getCalEvents: return msgType.getCalEvents;\n default: console.error(\"unreachable\");\n }\n}\n\nexport class Msg {\n constructor(id, type, data) {\n this.id = id;\n this.type = type;\n this.data = data;\n }\n genResp(data) { return new Msg(this.id, this.type, data); }\n deflate() {\n return {\n id: this.id,\n type: stringifyMsgType(this.type),\n data: this.data\n }\n }\n static inflate = obj => new Msg(obj.id, parseMsgType(obj.type), obj.data);\n}\n\nexport class MsgClient {\n constructor(channelName) {\n let port = chrome.runtime.connect({name: channelName});\n const getCallBack = rcb => this.requestCallback;\n port.onMessage.addListener(function(msg) {\n console.log(msg);\n let rcb = getCallBack(msg.type);\n let cb = rcb.inFlight[msg.id];\n console.assert(cb !== undefined);\n rcb.ids.push(msg.id);\n cb(msg);\n });\n this.port = port;\n this.requestCallback = {inFlight: {}, ids: [], maxId: 0};\n }\n\n sendMsg = ({ type, data }) => {\n let rcb = this.requestCallback;\n let cb;\n let pm = new Promise(resolve => { cb = resolve; });\n let id;\n if (rcb.ids.length > 0) {\n id = rcb.ids.pop();\n } else {\n id = rcb.maxId++;\n }\n rcb.inFlight[id] = cb;\n this.port.postMessage((new Msg(id, type, data)).deflate());\n return pm;\n }\n}\n","export class Pattern {\n constructor(id, isRegex, value, label) {\n this.id = id;\n this.isRegex = isRegex;\n this.value = value;\n this.label = label;\n }\n\n get regex() { return new RegExp(this.isRegex ? this.value : `^${this.value}$`); }\n get isEmpty() { return this.label === null; }\n static emptyPattern = () => new Pattern(0, true, '', null);\n static anyPattern = () => new Pattern('any', true, '.*', 'Any');\n static revive = obj => new Pattern(obj.id, obj.isRegex, obj.value, obj.label);\n}\n\nexport class PatternEntry {\n constructor(name, idx, calPattern, eventPattern) {\n this.name = name;\n this.idx = idx;\n this.cal = calPattern;\n this.event = eventPattern;\n }\n\n static defaultPatternEntry = (idx) => new PatternEntry('', idx, Pattern.emptyPattern(), Pattern.anyPattern());\n static revive = obj => new PatternEntry(\n obj.name, obj.idx,\n Pattern.revive(obj.cal), Pattern.revive(obj.event));\n}\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport { withStyles } from '@material-ui/core/styles';\nimport Grid from '@material-ui/core/Grid';\nimport deepOrange from '@material-ui/core/colors/deepOrange';\nimport cyan from '@material-ui/core/colors/cyan';\nimport { PieChart, Pie, Cell, Tooltip } from 'recharts';\n\nconst styles = theme => ({\n pieChart: {\n margin: '0 auto',\n }\n});\n\nfunction customizedLabel(props) {\n const {cx, cy, x, y, fill, name} = props;\n let anchor = \"middle\";\n const EPS = 2;\n let dx = 0;\n let dy = 0;\n if (x < cx - EPS) {\n dx = -5;\n anchor = \"end\"\n } else if (x > cx + EPS) {\n dx = 5;\n anchor = \"start\";\n }\n\n if (y < cy - EPS) {\n dy = -5;\n } else if (y > cy + EPS) {\n dy = 10;\n }\n\n return (<text x={x} y={y} dx={dx} dy={dy} fill={fill} textAnchor={anchor}>{`${name}`}</text>);\n}\n\nfunction ChromiclePieChart(props) {\n return (\n <Grid container spacing={0}>\n <Grid item xs={12} lg={6}>\n <div className={props.classes.patternTableWrapper}>\n <PieChart width={400} height={250} className={props.classes.pieChart}>\n <Pie data={props.patternGraphData}\n dataKey='value'\n cx={200}\n cy={125}\n outerRadius={60}\n fill={deepOrange[300]}\n label={customizedLabel}/>\n <Tooltip formatter={(value) => `${value.toFixed(2)} hr`}/>\n </PieChart>\n </div>\n </Grid>\n <Grid item xs={12} lg={6}>\n <div className={props.classes.patternTableWrapper}>\n <PieChart width={400} height={250} className={props.classes.pieChart}>\n <Pie data={props.calendarGraphData}\n dataKey='value'\n cx={200}\n cy={125}\n innerRadius={40}\n outerRadius={70}\n fill={cyan[300]}\n label={customizedLabel}>\n {props.calendarGraphData.map((d, i) => <Cell key={i} fill={d.color}/>)}\n </Pie>\n <Tooltip formatter={(value) => `${value.toFixed(2)} hr`}/>\n </PieChart>\n </div>\n </Grid>\n </Grid>);\n}\n\nChromiclePieChart.propTypes = {\n patternGraphData: PropTypes.array.isRequired,\n calendarGraphData: PropTypes.array.isRequired,\n};\n\nexport default withStyles(styles)(ChromiclePieChart);\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport { withStyles } from '@material-ui/core/styles';\nimport Select from '@material-ui/core/Select';\nimport MenuItem from '@material-ui/core/MenuItem';\nimport TextField from '@material-ui/core/TextField';\nimport FormControl from '@material-ui/core/FormControl';\nimport { Pattern } from './pattern';\n\nconst styles = theme => ({\n fieldNoRegex: {\n width: 200\n },\n fieldRegex: {\n marginRight: '0.5em'\n }\n});\n\nclass RegexField extends React.Component {\n render() {\n const { classes } = this.props;\n let items = [];\n var pitems = this.props.options;\n const p0 = new Pattern.emptyPattern();\n pitems[p0.id] = p0;\n for (let id in pitems)\n {\n const label = !pitems[id].isEmpty ? pitems[id].label :\n <span style={{color: this.props.theme.palette.primary.dark}}>Custom</span>;\n items.push(<MenuItem key={id} value={id}>{label}</MenuItem>);\n }\n const selectOnClick = event => {\n let value;\n if (pitems[event.target.value].label == null) {\n value = new Pattern(0, true,\n this.props.value.isRegex ?\n this.props.value.value :\n `^${this.props.value.value}$`, null);\n } else {\n value = pitems[event.target.value];\n }\n this.props.onChange({target: {value}});\n };\n\n const regexTextOnChange = event => this.props.onChange({\n target: { value: new Pattern(0, true, event.target.value, null)}});\n\n const className = this.props.value.isRegex ? classes.fieldRegex: classes.fieldNoRegex;\n return (\n <FormControl>\n <span>\n <Select\n value={this.props.value.id}\n onChange={selectOnClick}\n className={className}>{items}\n </Select>\n {this.props.value.label == null && (\n <TextField\n value={this.props.value.value}\n onChange={regexTextOnChange} />\n )}\n </span>\n </FormControl>);\n }\n}\n\nRegexField.propTypes = {\n classes: PropTypes.object.isRequired,\n};\n\nconst RegexFieldWithStyles = withStyles(styles)(RegexField);\n\nexport function CalendarField(props) {\n let options = {};\n for (let id in props.calendars) {\n options[id] = new Pattern(id, false,\n props.calendars[id].name,\n props.calendars[id].name);\n }\n return (\n <RegexFieldWithStyles\n value={props.value}\n options={options}\n onChange={props.onChange}\n theme={props.theme} />);\n}\n\nexport function EventField(props) {\n let any = Pattern.anyPattern();\n let options = {};\n options[any.id] = any;\n return (\n <RegexFieldWithStyles\n value={props.value}\n options={options}\n onChange={props.onChange}\n theme={props.theme} />);\n}\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport { withStyles, withTheme } from '@material-ui/core/styles';\nimport TextField from '@material-ui/core/TextField';\nimport Table from '@material-ui/core/Table';\nimport TableBody from '@material-ui/core/TableBody';\nimport TableRow from '@material-ui/core/TableRow';\nimport TableCell from '@material-ui/core/TableCell';\nimport TableHead from '@material-ui/core/TableHead';\nimport TablePagination from '@material-ui/core/TablePagination';\nimport DeleteOutlinedIcon from '@material-ui/icons/DeleteOutlined';\nimport { CalendarField, EventField } from './RegexField';\nimport theme from './theme';\n\nconst styles = theme => ({\n deleteButtonShow: {\n position: 'absolute',\n right: 0,\n height: 48\n },\n deleteButtonHide: {\n display: 'none'\n },\n deleteIcon: {\n height: '100%',\n cursor: 'pointer'\n },\n patternTableWrapper: {\n overflowX: 'auto',\n overflowY: 'hidden'\n },\n patternTable: {\n minWidth: 600\n }\n});\n\nconst patternHead = [\n {label: \"Name\", field: \"name\", elem: TextField},\n {label: \"Calendar\", field: \"cal\", elem: withTheme(theme)(CalendarField)},\n {label: \"Event\", field: 'event', elem: withTheme(theme)(EventField)}];\n\nclass PatternTable extends React.Component {\n state = {\n page: 0,\n rowsPerPage: 5,\n activePattern: null\n };\n\n handleChangePage = (event, page) => {\n this.setState({ page });\n }\n\n handleChangeRowsPerPage = event => {\n this.setState({ rowsPerPage: event.target.value });\n }\n\n render() {\n const { classes, calendars, patterns } = this.props;\n const { rowsPerPage, page } = this.state;\n const nDummy = rowsPerPage - Math.min(rowsPerPage, patterns.length - page * rowsPerPage);\n let rows = patterns.slice(page * rowsPerPage, (page + 1) * rowsPerPage).map(p => (\n <TableRow\n onMouseOver={() => this.setState({ activePattern: p.idx })}\n onMouseOut={() => this.setState({ activePattern: null })}>\n {\n patternHead.map(s => {\n const CustomText = s.elem;\n return (\n <TableCell>\n <CustomText\n value={p[s.field]}\n calendars={calendars}\n onChange={event => this.props.onUpdatePattern(s.field, p.idx, event.target.value)}/>\n </TableCell>)})\n }\n <span className={this.state.activePattern === p.idx ? classes.deleteButtonShow : classes.deleteButtonHide}>\n <DeleteOutlinedIcon\n className={classes.deleteIcon}\n onClick={() => this.props.onRemovePattern(p.idx)} />\n </span>\n </TableRow>));\n\n return (\n <div>\n <div className={classes.patternTableWrapper}>\n <Table className={classes.patternTable}>\n <TableHead>\n <TableRow>{patternHead.map((s, i) => (<TableCell key={i}>{s.label}</TableCell>))}</TableRow>\n </TableHead>\n <TableBody>\n {rows}\n {\n nDummy > 0 && (\n <TableRow style={{ height: 48 * nDummy }}>\n <TableCell colSpan={patternHead.length} />\n </TableRow>)\n }\n </TableBody>\n </Table>\n </div>\n <TablePagination\n rowsPerPageOptions={[5, 10, 25]}\n component=\"div\"\n count={patterns.length}\n rowsPerPage={rowsPerPage}\n page={page}\n backIconButtonProps={{'aria-label': 'Previous Page'}}\n nextIconButtonProps={{'aria-label': 'Next Page'}}\n onChangePage={this.handleChangePage}\n onChangeRowsPerPage={this.handleChangeRowsPerPage} />\n </div>);\n }\n}\n\n\nPatternTable.propTypes = {\n classes: PropTypes.object.isRequired,\n patterns: PropTypes.array.isRequired,\n calendars: PropTypes.object.isRequired,\n onRemovePattern: PropTypes.func.isRequired,\n onUpdatePattern: PropTypes.func.isRequired,\n};\n\nexport default withStyles(styles)(PatternTable);\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport 'react-dates/initialize';\nimport 'react-dates/lib/css/_datepicker.css';\nimport { DateRangePicker } from 'react-dates';\nimport { withStyles } from '@material-ui/core/styles';\nimport cyan from '@material-ui/core/colors/cyan';\nimport CssBaseline from '@material-ui/core/CssBaseline';\nimport Typography from '@material-ui/core/Typography';\nimport Button from '@material-ui/core/Button';\nimport FormControl from '@material-ui/core/FormControl';\nimport FormGroup from '@material-ui/core/FormGroup';\nimport Grid from '@material-ui/core/Grid';\nimport AddCircleIcon from '@material-ui/icons/AddCircle';\nimport IconButton from '@material-ui/core/IconButton';\nimport * as gapi from './gapi';\nimport { msgType, MsgClient } from './msg';\nimport { Pattern, PatternEntry } from './pattern';\nimport PieChart from './Chart';\nimport PatternTable from './PatternTable';\n\nconst default_chart_data = [\n {name: 'Work', value: 10, color: cyan[300]},\n {name: 'Wasted', value: 10, color: cyan[300]}];\n\nfunction filterPatterns(patterns, calName) {\n return patterns.filter(p => {\n return p.cal.regex.test(calName);\n