diff --git a/.gitignore b/.gitignore
index 31cc58b..ab35e71 100644
--- a/.gitignore
+++ b/.gitignore
@@ -3,3 +3,6 @@ prod.env
test.env
account/.eslintcache
account/.eslintcache
+admin/.eslintcache
+frontend/.eslintcache
+admin/.eslintcache
diff --git a/admin/.eslintcache b/admin/.eslintcache
index 85a0b06..1846b52 100644
--- a/admin/.eslintcache
+++ b/admin/.eslintcache
@@ -1 +1 @@
-[{"/Users/luke/Projects/OpenMHz/trunk-server-public/admin/src/App.js":"1","/Users/luke/Projects/OpenMHz/trunk-server-public/admin/src/features/counter/Counter.js":"2","/Users/luke/Projects/OpenMHz/trunk-server-public/admin/src/App/Navigation.js":"3","/Users/luke/Projects/OpenMHz/trunk-server-public/admin/src/System/error-constants.js":"4","/Users/luke/Projects/OpenMHz/trunk-server-public/admin/src/redux-router/configureStore.js":"5","/Users/luke/Projects/OpenMHz/trunk-server-public/admin/src/Permission/permission-reducer.js":"6","/Users/luke/Projects/OpenMHz/trunk-server-public/admin/src/Group/group-reducer.js":"7","/Users/luke/Projects/OpenMHz/trunk-server-public/admin/src/System/error-reducer.js":"8","/Users/luke/Projects/OpenMHz/trunk-server-public/admin/src/index.js":"9","/Users/luke/Projects/OpenMHz/trunk-server-public/admin/src/Components/About.js":"10","/Users/luke/Projects/OpenMHz/trunk-server-public/admin/src/App/NavigationContainer.js":"11","/Users/luke/Projects/OpenMHz/trunk-server-public/admin/src/System/system-constants.js":"12","/Users/luke/Projects/OpenMHz/trunk-server-public/admin/src/User/user-actions.js":"13","/Users/luke/Projects/OpenMHz/trunk-server-public/admin/src/System/SystemCard.js":"14","/Users/luke/Projects/OpenMHz/trunk-server-public/admin/src/App/Restricted.js":"15","/Users/luke/Projects/OpenMHz/trunk-server-public/admin/src/System/system-actions.js":"16","/Users/luke/Projects/OpenMHz/trunk-server-public/admin/src/User/user-constants.js":"17","/Users/luke/Projects/OpenMHz/trunk-server-public/admin/src/Talkgroups/talkgroup-reducer.js":"18","/Users/luke/Projects/OpenMHz/trunk-server-public/admin/src/App/App.js":"19","/Users/luke/Projects/OpenMHz/trunk-server-public/admin/src/Permission/permission-constants.js":"20","/Users/luke/Projects/OpenMHz/trunk-server-public/admin/src/System/ListSystems.js":"21","/Users/luke/Projects/OpenMHz/trunk-server-public/admin/src/System/system-reducer.js":"22","/Users/luke/Projects/OpenMHz/trunk-server-public/admin/src/redux-router/reducers.js":"23","/Users/luke/Projects/OpenMHz/trunk-server-public/admin/src/Group/group-constants.js":"24","/Users/luke/Projects/OpenMHz/trunk-server-public/admin/src/Talkgroups/talkgroup-constants.js":"25","/Users/luke/Projects/OpenMHz/trunk-server-public/admin/src/System/SystemForm.js":"26","/Users/luke/Projects/OpenMHz/trunk-server-public/admin/src/System/UpdateSystemContainer.js":"27","/Users/luke/Projects/OpenMHz/trunk-server-public/admin/src/System/UpdateSystem.js":"28","/Users/luke/Projects/OpenMHz/trunk-server-public/admin/src/Permission/AddPermissionModalContainer.js":"29","/Users/luke/Projects/OpenMHz/trunk-server-public/admin/src/System/CallChart.js":"30","/Users/luke/Projects/OpenMHz/trunk-server-public/admin/src/System/CreateSystemContainer.js":"31","/Users/luke/Projects/OpenMHz/trunk-server-public/admin/src/System/System.js":"32","/Users/luke/Projects/OpenMHz/trunk-server-public/admin/src/System/ResponsiveCallChart.js":"33","/Users/luke/Projects/OpenMHz/trunk-server-public/admin/src/Group/GroupModal.js":"34","/Users/luke/Projects/OpenMHz/trunk-server-public/admin/src/Permission/UpdatePermissionModalContainer.js":"35","/Users/luke/Projects/OpenMHz/trunk-server-public/admin/src/System/ErrorChart.js":"36","/Users/luke/Projects/OpenMHz/trunk-server-public/admin/src/System/SystemContainer.js":"37","/Users/luke/Projects/OpenMHz/trunk-server-public/admin/src/Talkgroups/talkgroup-actions.js":"38","/Users/luke/Projects/OpenMHz/trunk-server-public/admin/src/Group/group-actions.js":"39","/Users/luke/Projects/OpenMHz/trunk-server-public/admin/src/Permission/permission-actions.js":"40","/Users/luke/Projects/OpenMHz/trunk-server-public/admin/src/Permission/AddPermissionModal.js":"41","/Users/luke/Projects/OpenMHz/trunk-server-public/admin/src/Group/GroupModalContainer.js":"42"},{"size":1463,"mtime":499162500000,"results":"43","hashOfConfig":"44"},{"size":1626,"mtime":499162500000,"results":"45","hashOfConfig":"44"},{"size":1499,"mtime":1609685400124,"results":"46","hashOfConfig":"44"},{"size":115,"mtime":1545362103836,"results":"47","hashOfConfig":"44"},{"size":759,"mtime":1609425817988,"results":"48","hashOfConfig":"44"},{"size":2037,"mtime":1545362103826,"results":"49","hashOfConfig":"44"},{"size":3029,"mtime":1609813173090,"results":"50","hashOfConfig":"44"},{"size":636,"mtime":1545362103837,"results":"51","hashOfConfig":"44"},{"size":1684,"mtime":1611441482755,"results":"52","hashOfConfig":"44"},{"size":1278,"mtime":1609812739781,"results":"53","hashOfConfig":"44"},{"size":570,"mtime":1609684078480,"results":"54","hashOfConfig":"44"},{"size":862,"mtime":1545362103839,"results":"55","hashOfConfig":"44"},{"size":1344,"mtime":1609686206535,"results":"56","hashOfConfig":"44"},{"size":1145,"mtime":1609813170344,"results":"57","hashOfConfig":"44"},{"size":1802,"mtime":1611541149541,"results":"58","hashOfConfig":"44"},{"size":5934,"mtime":1611515999167,"results":"59","hashOfConfig":"44"},{"size":320,"mtime":1546657322904,"results":"60","hashOfConfig":"44"},{"size":1045,"mtime":1609813166756,"results":"61","hashOfConfig":"44"},{"size":253,"mtime":1609814499873,"results":"62","hashOfConfig":"44"},{"size":688,"mtime":1545362103825,"results":"63","hashOfConfig":"44"},{"size":1156,"mtime":1609813188195,"results":"64","hashOfConfig":"44"},{"size":2262,"mtime":1609813202417,"results":"65","hashOfConfig":"44"},{"size":858,"mtime":1611513056121,"results":"66","hashOfConfig":"44"},{"size":848,"mtime":1545362103820,"results":"67","hashOfConfig":"44"},{"size":537,"mtime":1545362103845,"results":"68","hashOfConfig":"44"},{"size":13141,"mtime":1611544564637,"results":"69","hashOfConfig":"44"},{"size":381,"mtime":1609814717150,"results":"70","hashOfConfig":"44"},{"size":1137,"mtime":1609814723480,"results":"71","hashOfConfig":"44"},{"size":608,"mtime":1545362103822,"results":"72","hashOfConfig":"44"},{"size":3099,"mtime":1611496772792,"results":"73","hashOfConfig":"44"},{"size":277,"mtime":1546482642525,"results":"74","hashOfConfig":"44"},{"size":20438,"mtime":1611540108720,"results":"75","hashOfConfig":"44"},{"size":613,"mtime":1611443036463,"results":"76","hashOfConfig":"44"},{"size":7933,"mtime":1611544312121,"results":"77","hashOfConfig":"44"},{"size":617,"mtime":1545362103824,"results":"78","hashOfConfig":"44"},{"size":4201,"mtime":1611495367506,"results":"79","hashOfConfig":"44"},{"size":1677,"mtime":1611514031099,"results":"80","hashOfConfig":"44"},{"size":4717,"mtime":1611514305299,"results":"81","hashOfConfig":"44"},{"size":6184,"mtime":1611542098648,"results":"82","hashOfConfig":"44"},{"size":4578,"mtime":1611514663911,"results":"83","hashOfConfig":"44"},{"size":3357,"mtime":1611516085275,"results":"84","hashOfConfig":"44"},{"size":779,"mtime":1545362103818,"results":"85","hashOfConfig":"44"},{"filePath":"86","messages":"87","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},"108517c",{"filePath":"88","messages":"89","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"90","messages":"91","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"92","messages":"93","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":"94"},{"filePath":"95","messages":"96","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"97","messages":"98","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":"94"},{"filePath":"99","messages":"100","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":"94"},{"filePath":"101","messages":"102","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":"103"},{"filePath":"104","messages":"105","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"106","messages":"107","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":"108"},{"filePath":"109","messages":"110","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":"111"},{"filePath":"112","messages":"113","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":"114"},{"filePath":"115","messages":"116","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":"94"},{"filePath":"117","messages":"118","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"119","messages":"120","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"121","messages":"122","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":"94"},{"filePath":"123","messages":"124","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":"125"},{"filePath":"126","messages":"127","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"128","messages":"129","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":"125"},{"filePath":"130","messages":"131","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":"103"},{"filePath":"132","messages":"133","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":"111"},{"filePath":"134","messages":"135","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":"94"},{"filePath":"136","messages":"137","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"138","messages":"139","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"140","messages":"141","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":"94"},{"filePath":"142","messages":"143","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"144","messages":"145","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":"94"},{"filePath":"146","messages":"147","errorCount":0,"warningCount":1,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"148","messages":"149","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":"125"},{"filePath":"150","messages":"151","errorCount":0,"warningCount":6,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"152","messages":"153","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"154","messages":"155","errorCount":0,"warningCount":5,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"156","messages":"157","errorCount":0,"warningCount":1,"fixableErrorCount":0,"fixableWarningCount":0,"source":"158","usedDeprecatedRules":"114"},{"filePath":"159","messages":"160","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"161","messages":"162","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"163","messages":"164","errorCount":0,"warningCount":3,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"165","messages":"166","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"167","messages":"168","errorCount":0,"warningCount":2,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"169","messages":"170","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":"94"},{"filePath":"171","messages":"172","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"173","messages":"174","errorCount":0,"warningCount":10,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"175","messages":"176","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},"/Users/luke/Projects/OpenMHz/trunk-server-public/admin/src/App.js",[],"/Users/luke/Projects/OpenMHz/trunk-server-public/admin/src/features/counter/Counter.js",[],"/Users/luke/Projects/OpenMHz/trunk-server-public/admin/src/App/Navigation.js",[],"/Users/luke/Projects/OpenMHz/trunk-server-public/admin/src/System/error-constants.js",[],["177","178"],"/Users/luke/Projects/OpenMHz/trunk-server-public/admin/src/redux-router/configureStore.js",[],"/Users/luke/Projects/OpenMHz/trunk-server-public/admin/src/Permission/permission-reducer.js",[],"/Users/luke/Projects/OpenMHz/trunk-server-public/admin/src/Group/group-reducer.js",[],"/Users/luke/Projects/OpenMHz/trunk-server-public/admin/src/System/error-reducer.js",[],["179","180"],"/Users/luke/Projects/OpenMHz/trunk-server-public/admin/src/index.js",[],"/Users/luke/Projects/OpenMHz/trunk-server-public/admin/src/Components/About.js",[],["181","182"],"/Users/luke/Projects/OpenMHz/trunk-server-public/admin/src/App/NavigationContainer.js",[],["183","184"],"/Users/luke/Projects/OpenMHz/trunk-server-public/admin/src/System/system-constants.js",[],["185","186"],"/Users/luke/Projects/OpenMHz/trunk-server-public/admin/src/User/user-actions.js",[],"/Users/luke/Projects/OpenMHz/trunk-server-public/admin/src/System/SystemCard.js",[],"/Users/luke/Projects/OpenMHz/trunk-server-public/admin/src/App/Restricted.js",[],"/Users/luke/Projects/OpenMHz/trunk-server-public/admin/src/System/system-actions.js",[],"/Users/luke/Projects/OpenMHz/trunk-server-public/admin/src/User/user-constants.js",[],["187","188"],"/Users/luke/Projects/OpenMHz/trunk-server-public/admin/src/Talkgroups/talkgroup-reducer.js",[],"/Users/luke/Projects/OpenMHz/trunk-server-public/admin/src/App/App.js",[],"/Users/luke/Projects/OpenMHz/trunk-server-public/admin/src/Permission/permission-constants.js",[],"/Users/luke/Projects/OpenMHz/trunk-server-public/admin/src/System/ListSystems.js",[],"/Users/luke/Projects/OpenMHz/trunk-server-public/admin/src/System/system-reducer.js",[],"/Users/luke/Projects/OpenMHz/trunk-server-public/admin/src/redux-router/reducers.js",[],"/Users/luke/Projects/OpenMHz/trunk-server-public/admin/src/Group/group-constants.js",[],"/Users/luke/Projects/OpenMHz/trunk-server-public/admin/src/Talkgroups/talkgroup-constants.js",[],"/Users/luke/Projects/OpenMHz/trunk-server-public/admin/src/System/SystemForm.js",[],"/Users/luke/Projects/OpenMHz/trunk-server-public/admin/src/System/UpdateSystemContainer.js",[],"/Users/luke/Projects/OpenMHz/trunk-server-public/admin/src/System/UpdateSystem.js",["189"],"/Users/luke/Projects/OpenMHz/trunk-server-public/admin/src/Permission/AddPermissionModalContainer.js",[],"/Users/luke/Projects/OpenMHz/trunk-server-public/admin/src/System/CallChart.js",["190","191","192","193","194","195"],"/Users/luke/Projects/OpenMHz/trunk-server-public/admin/src/System/CreateSystemContainer.js",[],"/Users/luke/Projects/OpenMHz/trunk-server-public/admin/src/System/System.js",["196","197","198","199","200"],"/Users/luke/Projects/OpenMHz/trunk-server-public/admin/src/System/ResponsiveCallChart.js",["201"],"import React, { Component } from \"react\"\nimport CallChart from \"./CallChart\"\nimport { ParentSize } from \"@visx/responsive\";\n\nclass ResponsiveCallChart extends Component {\n constructor(props) {\n super(props);\n }\n\n\trender() {\n\t\treturn(\n \n {({ width: w, height: h }) => {\n return (\n \n );\n }}\n \n\t\t)\n\t}\n}\n\nexport default ResponsiveCallChart\n","/Users/luke/Projects/OpenMHz/trunk-server-public/admin/src/Group/GroupModal.js",[],"/Users/luke/Projects/OpenMHz/trunk-server-public/admin/src/Permission/UpdatePermissionModalContainer.js",[],"/Users/luke/Projects/OpenMHz/trunk-server-public/admin/src/System/ErrorChart.js",["202","203","204"],"/Users/luke/Projects/OpenMHz/trunk-server-public/admin/src/System/SystemContainer.js",[],"/Users/luke/Projects/OpenMHz/trunk-server-public/admin/src/Talkgroups/talkgroup-actions.js",["205","206"],"/Users/luke/Projects/OpenMHz/trunk-server-public/admin/src/Group/group-actions.js",[],"/Users/luke/Projects/OpenMHz/trunk-server-public/admin/src/Permission/permission-actions.js",[],"/Users/luke/Projects/OpenMHz/trunk-server-public/admin/src/Permission/AddPermissionModal.js",["207","208","209","210","211","212","213","214","215","216"],"/Users/luke/Projects/OpenMHz/trunk-server-public/admin/src/Group/GroupModalContainer.js",[],{"ruleId":"217","replacedBy":"218"},{"ruleId":"219","replacedBy":"220"},{"ruleId":"217","replacedBy":"221"},{"ruleId":"219","replacedBy":"222"},{"ruleId":"217","replacedBy":"223"},{"ruleId":"219","replacedBy":"224"},{"ruleId":"217","replacedBy":"225"},{"ruleId":"219","replacedBy":"226"},{"ruleId":"217","replacedBy":"227"},{"ruleId":"219","replacedBy":"228"},{"ruleId":"217","replacedBy":"229"},{"ruleId":"219","replacedBy":"230"},{"ruleId":"231","severity":1,"message":"232","line":19,"column":14,"nodeType":"233","messageId":"234","endLine":19,"endColumn":22},{"ruleId":"231","severity":1,"message":"235","line":5,"column":23,"nodeType":"233","messageId":"234","endLine":5,"endColumn":32},{"ruleId":"231","severity":1,"message":"236","line":8,"column":10,"nodeType":"233","messageId":"234","endLine":8,"endColumn":16},{"ruleId":"237","severity":1,"message":"238","line":12,"column":1,"nodeType":"239","messageId":"240","endLine":14,"endColumn":2},{"ruleId":"231","severity":1,"message":"241","line":47,"column":11,"nodeType":"233","messageId":"234","endLine":47,"endColumn":19},{"ruleId":"231","severity":1,"message":"242","line":68,"column":9,"nodeType":"233","messageId":"234","endLine":68,"endColumn":15},{"ruleId":"231","severity":1,"message":"243","line":69,"column":9,"nodeType":"233","messageId":"234","endLine":69,"endColumn":15},{"ruleId":"231","severity":1,"message":"244","line":24,"column":3,"nodeType":"233","messageId":"234","endLine":24,"endColumn":8},{"ruleId":"245","severity":1,"message":"246","line":133,"column":14,"nodeType":"233","messageId":"247","endLine":133,"endColumn":15},{"ruleId":"245","severity":1,"message":"248","line":134,"column":11,"nodeType":"233","messageId":"247","endLine":134,"endColumn":20},{"ruleId":"245","severity":1,"message":"249","line":135,"column":11,"nodeType":"233","messageId":"247","endLine":135,"endColumn":15},{"ruleId":"250","severity":1,"message":"251","line":351,"column":7,"nodeType":"252","messageId":"253","endLine":364,"endColumn":8},{"ruleId":"237","severity":1,"message":"238","line":6,"column":3,"nodeType":"239","messageId":"240","endLine":8,"endColumn":4},{"ruleId":"237","severity":1,"message":"238","line":10,"column":3,"nodeType":"239","messageId":"240","endLine":12,"endColumn":4},{"ruleId":"231","severity":1,"message":"242","line":70,"column":7,"nodeType":"233","messageId":"234","endLine":70,"endColumn":13},{"ruleId":"231","severity":1,"message":"243","line":71,"column":7,"nodeType":"233","messageId":"234","endLine":71,"endColumn":13},{"ruleId":"231","severity":1,"message":"254","line":29,"column":10,"nodeType":"233","messageId":"234","endLine":29,"endColumn":32},{"ruleId":"231","severity":1,"message":"255","line":33,"column":10,"nodeType":"233","messageId":"234","endLine":33,"endColumn":30},{"ruleId":"231","severity":1,"message":"256","line":2,"column":8,"nodeType":"233","messageId":"234","endLine":2,"endColumn":16},{"ruleId":"231","severity":1,"message":"257","line":4,"column":3,"nodeType":"233","messageId":"234","endLine":4,"endColumn":12},{"ruleId":"231","severity":1,"message":"258","line":6,"column":3,"nodeType":"233","messageId":"234","endLine":6,"endColumn":9},{"ruleId":"231","severity":1,"message":"259","line":8,"column":3,"nodeType":"233","messageId":"234","endLine":8,"endColumn":7},{"ruleId":"231","severity":1,"message":"260","line":10,"column":3,"nodeType":"233","messageId":"234","endLine":10,"endColumn":7},{"ruleId":"231","severity":1,"message":"261","line":11,"column":3,"nodeType":"233","messageId":"234","endLine":11,"endColumn":10},{"ruleId":"231","severity":1,"message":"262","line":12,"column":3,"nodeType":"233","messageId":"234","endLine":12,"endColumn":7},{"ruleId":"231","severity":1,"message":"263","line":17,"column":3,"nodeType":"233","messageId":"234","endLine":17,"endColumn":8},{"ruleId":"231","severity":1,"message":"264","line":21,"column":7,"nodeType":"233","messageId":"234","endLine":21,"endColumn":26},{"ruleId":"231","severity":1,"message":"265","line":83,"column":11,"nodeType":"233","messageId":"234","endLine":83,"endColumn":20},"no-native-reassign",["266"],"no-negated-in-lhs",["267"],["266"],["267"],["266"],["267"],["266"],["267"],["266"],["267"],["266"],["267"],"no-unused-vars","'dispatch' is assigned a value but never used.","Identifier","unusedVar","'scaleBand' is defined but never used.","'Dimmer' is defined but never used.","no-useless-constructor","Useless constructor.","MethodDefinition","noUselessConstructor","'dotColor' is assigned a value but never used.","'xPoint' is assigned a value but never used.","'yPoint' is assigned a value but never used.","'Label' is defined but never used.","no-redeclare","'j' is already defined.","redeclared","'spotsBack' is already defined.","'time' is already defined.","default-case","Expected a default case.","SwitchStatement","missingDefaultCase","'exportTalkgroupSuccess' is defined but never used.","'exportTalkgroupError' is defined but never used.","'ReactDOM' is defined but never used.","'Container' is defined but never used.","'Header' is defined but never used.","'Grid' is defined but never used.","'Rail' is defined but never used.","'Segment' is defined but never used.","'List' is defined but never used.","'Table' is defined but never used.","'requestMessageStyle' is assigned a value but never used.","'railStyle' is assigned a value but never used.","no-global-assign","no-unsafe-negation"]
\ No newline at end of file
+[{"/Users/luke/Projects/OpenMHz/trunk-server-public/admin/src/features/counter/Counter.js":"1","/Users/luke/Projects/OpenMHz/trunk-server-public/admin/src/App/Navigation.js":"2","/Users/luke/Projects/OpenMHz/trunk-server-public/admin/src/System/error-constants.js":"3","/Users/luke/Projects/OpenMHz/trunk-server-public/admin/src/redux-router/configureStore.js":"4","/Users/luke/Projects/OpenMHz/trunk-server-public/admin/src/Permission/permission-reducer.js":"5","/Users/luke/Projects/OpenMHz/trunk-server-public/admin/src/Group/group-reducer.js":"6","/Users/luke/Projects/OpenMHz/trunk-server-public/admin/src/System/error-reducer.js":"7","/Users/luke/Projects/OpenMHz/trunk-server-public/admin/src/index.js":"8","/Users/luke/Projects/OpenMHz/trunk-server-public/admin/src/Components/About.js":"9","/Users/luke/Projects/OpenMHz/trunk-server-public/admin/src/App/NavigationContainer.js":"10","/Users/luke/Projects/OpenMHz/trunk-server-public/admin/src/System/system-constants.js":"11","/Users/luke/Projects/OpenMHz/trunk-server-public/admin/src/User/user-actions.js":"12","/Users/luke/Projects/OpenMHz/trunk-server-public/admin/src/System/SystemCard.js":"13","/Users/luke/Projects/OpenMHz/trunk-server-public/admin/src/App/Restricted.js":"14","/Users/luke/Projects/OpenMHz/trunk-server-public/admin/src/System/system-actions.js":"15","/Users/luke/Projects/OpenMHz/trunk-server-public/admin/src/User/user-constants.js":"16","/Users/luke/Projects/OpenMHz/trunk-server-public/admin/src/Talkgroups/talkgroup-reducer.js":"17","/Users/luke/Projects/OpenMHz/trunk-server-public/admin/src/App/App.js":"18","/Users/luke/Projects/OpenMHz/trunk-server-public/admin/src/Permission/permission-constants.js":"19","/Users/luke/Projects/OpenMHz/trunk-server-public/admin/src/System/ListSystems.js":"20","/Users/luke/Projects/OpenMHz/trunk-server-public/admin/src/System/system-reducer.js":"21","/Users/luke/Projects/OpenMHz/trunk-server-public/admin/src/redux-router/reducers.js":"22","/Users/luke/Projects/OpenMHz/trunk-server-public/admin/src/Group/group-constants.js":"23","/Users/luke/Projects/OpenMHz/trunk-server-public/admin/src/Talkgroups/talkgroup-constants.js":"24","/Users/luke/Projects/OpenMHz/trunk-server-public/admin/src/System/SystemForm.js":"25","/Users/luke/Projects/OpenMHz/trunk-server-public/admin/src/System/UpdateSystemContainer.js":"26","/Users/luke/Projects/OpenMHz/trunk-server-public/admin/src/System/UpdateSystem.js":"27","/Users/luke/Projects/OpenMHz/trunk-server-public/admin/src/Permission/AddPermissionModalContainer.js":"28","/Users/luke/Projects/OpenMHz/trunk-server-public/admin/src/System/CallChart.js":"29","/Users/luke/Projects/OpenMHz/trunk-server-public/admin/src/System/CreateSystemContainer.js":"30","/Users/luke/Projects/OpenMHz/trunk-server-public/admin/src/System/System.js":"31","/Users/luke/Projects/OpenMHz/trunk-server-public/admin/src/System/ResponsiveCallChart.js":"32","/Users/luke/Projects/OpenMHz/trunk-server-public/admin/src/Group/GroupModal.js":"33","/Users/luke/Projects/OpenMHz/trunk-server-public/admin/src/Permission/UpdatePermissionModalContainer.js":"34","/Users/luke/Projects/OpenMHz/trunk-server-public/admin/src/System/ErrorChart.js":"35","/Users/luke/Projects/OpenMHz/trunk-server-public/admin/src/System/SystemContainer.js":"36","/Users/luke/Projects/OpenMHz/trunk-server-public/admin/src/Talkgroups/talkgroup-actions.js":"37","/Users/luke/Projects/OpenMHz/trunk-server-public/admin/src/Group/group-actions.js":"38","/Users/luke/Projects/OpenMHz/trunk-server-public/admin/src/Permission/permission-actions.js":"39","/Users/luke/Projects/OpenMHz/trunk-server-public/admin/src/Permission/AddPermissionModal.js":"40","/Users/luke/Projects/OpenMHz/trunk-server-public/admin/src/Group/GroupModalContainer.js":"41","/Users/luke/Projects/OpenMHz/trunk-server-public/admin/src/System/ListSystemsContainer.js":"42","/Users/luke/Projects/OpenMHz/trunk-server-public/admin/src/Permission/UpdatePermissionModal.js":"43","/Users/luke/Projects/OpenMHz/trunk-server-public/admin/src/Components/Message.js":"44"},{"size":1626,"mtime":499162500000,"results":"45","hashOfConfig":"46"},{"size":1498,"mtime":1611437670772,"results":"47","hashOfConfig":"46"},{"size":115,"mtime":1545362103836,"results":"48","hashOfConfig":"46"},{"size":759,"mtime":1609425817988,"results":"49","hashOfConfig":"46"},{"size":2037,"mtime":1545362103826,"results":"50","hashOfConfig":"46"},{"size":3029,"mtime":1609813173090,"results":"51","hashOfConfig":"46"},{"size":636,"mtime":1545362103837,"results":"52","hashOfConfig":"46"},{"size":1684,"mtime":1611441482755,"results":"53","hashOfConfig":"46"},{"size":1278,"mtime":1609812739781,"results":"54","hashOfConfig":"46"},{"size":570,"mtime":1609684078480,"results":"55","hashOfConfig":"46"},{"size":862,"mtime":1545362103839,"results":"56","hashOfConfig":"46"},{"size":1344,"mtime":1609686206535,"results":"57","hashOfConfig":"46"},{"size":1145,"mtime":1609813170344,"results":"58","hashOfConfig":"46"},{"size":1802,"mtime":1611541149541,"results":"59","hashOfConfig":"46"},{"size":5934,"mtime":1611515999167,"results":"60","hashOfConfig":"46"},{"size":320,"mtime":1546657322904,"results":"61","hashOfConfig":"46"},{"size":1045,"mtime":1609813166756,"results":"62","hashOfConfig":"46"},{"size":253,"mtime":1609814499873,"results":"63","hashOfConfig":"46"},{"size":688,"mtime":1545362103825,"results":"64","hashOfConfig":"46"},{"size":1156,"mtime":1609813188195,"results":"65","hashOfConfig":"46"},{"size":2292,"mtime":1611717610099,"results":"66","hashOfConfig":"46"},{"size":858,"mtime":1611513056121,"results":"67","hashOfConfig":"46"},{"size":848,"mtime":1545362103820,"results":"68","hashOfConfig":"46"},{"size":537,"mtime":1545362103845,"results":"69","hashOfConfig":"46"},{"size":13172,"mtime":1611716843392,"results":"70","hashOfConfig":"46"},{"size":381,"mtime":1609814717150,"results":"71","hashOfConfig":"46"},{"size":1137,"mtime":1609814723480,"results":"72","hashOfConfig":"46"},{"size":608,"mtime":1545362103822,"results":"73","hashOfConfig":"46"},{"size":3099,"mtime":1611496772792,"results":"74","hashOfConfig":"46"},{"size":277,"mtime":1546482642525,"results":"75","hashOfConfig":"46"},{"size":20432,"mtime":1611632708859,"results":"76","hashOfConfig":"46"},{"size":613,"mtime":1611443036463,"results":"77","hashOfConfig":"46"},{"size":8513,"mtime":1611632514289,"results":"78","hashOfConfig":"46"},{"size":617,"mtime":1545362103824,"results":"79","hashOfConfig":"46"},{"size":4201,"mtime":1611495367506,"results":"80","hashOfConfig":"46"},{"size":1677,"mtime":1611514031099,"results":"81","hashOfConfig":"46"},{"size":4540,"mtime":1611544564640,"results":"82","hashOfConfig":"46"},{"size":6184,"mtime":1611542098648,"results":"83","hashOfConfig":"46"},{"size":4578,"mtime":1611514663911,"results":"84","hashOfConfig":"46"},{"size":3357,"mtime":1611516085275,"results":"85","hashOfConfig":"46"},{"size":779,"mtime":1545362103818,"results":"86","hashOfConfig":"46"},{"size":277,"mtime":1545362103831,"results":"87","hashOfConfig":"46"},{"size":3155,"mtime":1545362103823,"results":"88","hashOfConfig":"46"},{"size":764,"mtime":1611441653333,"results":"89","hashOfConfig":"46"},{"filePath":"90","messages":"91","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},"108517c",{"filePath":"92","messages":"93","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"94","messages":"95","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":"96"},{"filePath":"97","messages":"98","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"99","messages":"100","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":"101"},{"filePath":"102","messages":"103","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":"101"},{"filePath":"104","messages":"105","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":"106"},{"filePath":"107","messages":"108","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"109","messages":"110","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":"111"},{"filePath":"112","messages":"113","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":"114"},{"filePath":"115","messages":"116","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":"96"},{"filePath":"117","messages":"118","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":"101"},{"filePath":"119","messages":"120","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"121","messages":"122","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"123","messages":"124","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":"101"},{"filePath":"125","messages":"126","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":"127"},{"filePath":"128","messages":"129","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":"96"},{"filePath":"130","messages":"131","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":"132"},{"filePath":"133","messages":"134","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":"127"},{"filePath":"135","messages":"136","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":"114"},{"filePath":"137","messages":"138","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"139","messages":"140","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":"141"},{"filePath":"142","messages":"143","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"144","messages":"145","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":"101"},{"filePath":"146","messages":"147","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"148","messages":"149","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":"141"},{"filePath":"150","messages":"151","errorCount":0,"warningCount":1,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"152","messages":"153","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":"132"},{"filePath":"154","messages":"155","errorCount":0,"warningCount":6,"fixableErrorCount":0,"fixableWarningCount":0,"source":"156"},{"filePath":"157","messages":"158","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"159","messages":"160","errorCount":0,"warningCount":5,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"161","messages":"162","errorCount":0,"warningCount":1,"fixableErrorCount":0,"fixableWarningCount":0,"source":"163","usedDeprecatedRules":"164"},{"filePath":"165","messages":"166","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"167","messages":"168","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":"96"},{"filePath":"169","messages":"170","errorCount":0,"warningCount":3,"fixableErrorCount":0,"fixableWarningCount":0,"source":"171"},{"filePath":"172","messages":"173","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"174","messages":"175","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"176","messages":"177","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":"127"},{"filePath":"178","messages":"179","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"180","messages":"181","errorCount":0,"warningCount":10,"fixableErrorCount":0,"fixableWarningCount":0,"source":"182","usedDeprecatedRules":"127"},{"filePath":"183","messages":"184","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"185","messages":"186","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"187","messages":"188","errorCount":0,"warningCount":12,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"189","messages":"190","errorCount":0,"warningCount":1,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},"/Users/luke/Projects/OpenMHz/trunk-server-public/admin/src/features/counter/Counter.js",[],"/Users/luke/Projects/OpenMHz/trunk-server-public/admin/src/App/Navigation.js",[],"/Users/luke/Projects/OpenMHz/trunk-server-public/admin/src/System/error-constants.js",[],["191","192"],"/Users/luke/Projects/OpenMHz/trunk-server-public/admin/src/redux-router/configureStore.js",[],"/Users/luke/Projects/OpenMHz/trunk-server-public/admin/src/Permission/permission-reducer.js",[],["193","194"],"/Users/luke/Projects/OpenMHz/trunk-server-public/admin/src/Group/group-reducer.js",[],"/Users/luke/Projects/OpenMHz/trunk-server-public/admin/src/System/error-reducer.js",[],["195","196"],"/Users/luke/Projects/OpenMHz/trunk-server-public/admin/src/index.js",[],"/Users/luke/Projects/OpenMHz/trunk-server-public/admin/src/Components/About.js",[],["197","198"],"/Users/luke/Projects/OpenMHz/trunk-server-public/admin/src/App/NavigationContainer.js",[],["199","200"],"/Users/luke/Projects/OpenMHz/trunk-server-public/admin/src/System/system-constants.js",[],"/Users/luke/Projects/OpenMHz/trunk-server-public/admin/src/User/user-actions.js",[],"/Users/luke/Projects/OpenMHz/trunk-server-public/admin/src/System/SystemCard.js",[],"/Users/luke/Projects/OpenMHz/trunk-server-public/admin/src/App/Restricted.js",[],"/Users/luke/Projects/OpenMHz/trunk-server-public/admin/src/System/system-actions.js",[],"/Users/luke/Projects/OpenMHz/trunk-server-public/admin/src/User/user-constants.js",[],["201","202"],"/Users/luke/Projects/OpenMHz/trunk-server-public/admin/src/Talkgroups/talkgroup-reducer.js",[],"/Users/luke/Projects/OpenMHz/trunk-server-public/admin/src/App/App.js",[],["203","204"],"/Users/luke/Projects/OpenMHz/trunk-server-public/admin/src/Permission/permission-constants.js",[],"/Users/luke/Projects/OpenMHz/trunk-server-public/admin/src/System/ListSystems.js",[],"/Users/luke/Projects/OpenMHz/trunk-server-public/admin/src/System/system-reducer.js",[],"/Users/luke/Projects/OpenMHz/trunk-server-public/admin/src/redux-router/reducers.js",[],["205","206"],"/Users/luke/Projects/OpenMHz/trunk-server-public/admin/src/Group/group-constants.js",[],"/Users/luke/Projects/OpenMHz/trunk-server-public/admin/src/Talkgroups/talkgroup-constants.js",[],"/Users/luke/Projects/OpenMHz/trunk-server-public/admin/src/System/SystemForm.js",[],"/Users/luke/Projects/OpenMHz/trunk-server-public/admin/src/System/UpdateSystemContainer.js",[],"/Users/luke/Projects/OpenMHz/trunk-server-public/admin/src/System/UpdateSystem.js",["207"],"/Users/luke/Projects/OpenMHz/trunk-server-public/admin/src/Permission/AddPermissionModalContainer.js",[],"/Users/luke/Projects/OpenMHz/trunk-server-public/admin/src/System/CallChart.js",["208","209","210","211","212","213"],"import React, { Component } from \"react\";\nimport { Group } from '@visx/group';\nimport { curveStep} from '@visx/curve';\nimport { LinePath } from '@visx/shape';\nimport { scaleLinear, scaleBand, scaleTime } from '@visx/scale';\nimport { timeParse, timeFormat } from 'd3-time-format';\nimport { AxisBottom, AxisLeft } from '@visx/axis';\nimport { Dimmer, Loader } from \"semantic-ui-react\";\n\n\nclass CallChart extends Component {\nconstructor(props) {\n super(props);\n}\n\n render() {\n var callData = this.props.data;\n if (!callData) {\n return (\n\n Loading\n\n )\n }\n var callTotals = [];\n var errorTotals = [];\n\n // Define the graph dimensions and margins\n const width = this.props.width;\n const height = 500;\n const margin = { top: 20, bottom: 40, left: 40, right: 20 };\n const parseDate = timeParse(\"%Y%m%d\");\n const format = timeFormat(\"%b %d\");\n const formatDate = (date) => format(parseDate(date));\n\n // Then we'll create some bounds\n const xMax = width - margin.left - margin.right;\n const yMax = height - margin.top - margin.bottom;\n\n // accessors\n const x = d => d.x;\n const y = d => d.y;\n\n\n\n // Compose together the scale and accessor functions to get point functions\n const dotColor = n => {\n var colores_g = [\"#3366cc\", \"#dc3912\", \"#ff9900\", \"#109618\", \"#990099\", \"#0099c6\", \"#dd4477\", \"#66aa00\", \"#b82e2e\", \"#316395\", \"#994499\", \"#22aa99\", \"#aaaa11\", \"#6633cc\", \"#e67300\", \"#8b0707\", \"#651067\", \"#329262\", \"#5574a6\", \"#3b3eac\"];\n return colores_g[n % colores_g.length];\n }\n\n const compose = (scale, accessor) => (data) => scale(accessor(data));\n var xScale, yScale, xPoint, yPoint;\n if (callData) {\n // We'll use some mock data from `@vx/mock-data` for this.\n callTotals = callData.callTotals;\n errorTotals = callData.errorTotals;\n // scales\n xScale = scaleTime({\n range: [0, xMax],\n domain: [callData.minDate, callData.maxDate],\n tickFormat: () => (val) => formatDate(val)\n });\n yScale = scaleLinear({\n range: [yMax, 0],\n domain: [0, callData.maxValue],\n });\n xPoint = compose(xScale, x);\n yPoint = compose(yScale, y);\n }\n\n return (\n\n);\n}\n\n\n}\nexport default CallChart;\n","/Users/luke/Projects/OpenMHz/trunk-server-public/admin/src/System/CreateSystemContainer.js",[],"/Users/luke/Projects/OpenMHz/trunk-server-public/admin/src/System/System.js",["214","215","216","217","218"],"/Users/luke/Projects/OpenMHz/trunk-server-public/admin/src/System/ResponsiveCallChart.js",["219"],"import React, { Component } from \"react\"\nimport CallChart from \"./CallChart\"\nimport { ParentSize } from \"@visx/responsive\";\n\nclass ResponsiveCallChart extends Component {\n constructor(props) {\n super(props);\n }\n\n\trender() {\n\t\treturn(\n \n {({ width: w, height: h }) => {\n return (\n \n );\n }}\n \n\t\t)\n\t}\n}\n\nexport default ResponsiveCallChart\n",["220","221"],"/Users/luke/Projects/OpenMHz/trunk-server-public/admin/src/Group/GroupModal.js",[],"/Users/luke/Projects/OpenMHz/trunk-server-public/admin/src/Permission/UpdatePermissionModalContainer.js",[],"/Users/luke/Projects/OpenMHz/trunk-server-public/admin/src/System/ErrorChart.js",["222","223","224"],"import React, { Component } from \"react\";\nimport { Group } from '@visx/group';\nimport { GlyphCircle } from '@visx/glyph';\nimport { scaleLinear, scaleTime, scaleOrdinal } from '@visx/scale';\nimport { timeParse, timeFormat } from 'd3-time-format';\nimport { AxisBottom, AxisLeft } from '@visx/axis';\nimport { Loader } from \"semantic-ui-react\";\nimport { LegendOrdinal} from '@visx/legend';\nclass ErrorChart extends Component {\n constructor(props) {\n super(props);\n }\n\n render() {\n var errorData = this.props.data;\n if (!errorData) {\n return (\n Loading\n )\n }\n var data = [];\n const parseDate = timeParse(\"%Y%m%d\");\n const format = timeFormat(\"%b %d\");\n const formatDate = (date) => format(parseDate(date));\n\n // Define the graph dimensions and margins\n const width = this.props.width;\n const height = 500;\n const margin = { top: 20, bottom: 40, left: 40, right: 20 };\n\n // Then we'll create some bounds\n const xMax = width - margin.left - margin.right;\n const yMax = height - margin.top - margin.bottom;\n\n // accessors\n const x = d => d.x;\n const y = d => d.y;\n\n\n\n // Compose together the scale and accessor functions to get point functions\n const dotColor = n => {\n var colores_g = [\"#3366cc\", \"#dc3912\", \"#ff9900\", \"#109618\", \"#990099\", \"#0099c6\", \"#dd4477\", \"#66aa00\", \"#b82e2e\", \"#316395\", \"#994499\", \"#22aa99\", \"#aaaa11\", \"#6633cc\", \"#e67300\", \"#8b0707\", \"#651067\", \"#329262\", \"#5574a6\", \"#3b3eac\"];\n return colores_g[n % colores_g.length];\n }\n\n const compose = (scale, accessor) => (data) => scale(accessor(data));\n var zScale = scaleOrdinal({\n domain: errorData.legend,\n range: [\"#3366cc\", \"#dc3912\", \"#ff9900\", \"#109618\", \"#990099\", \"#0099c6\", \"#dd4477\", \"#66aa00\", \"#b82e2e\", \"#316395\", \"#994499\", \"#22aa99\", \"#aaaa11\", \"#6633cc\", \"#e67300\", \"#8b0707\", \"#651067\", \"#329262\", \"#5574a6\", \"#3b3eac\"]\n });\n var xScale, yScale, xPoint, yPoint;\n if (errorData) {\n // We'll use some mock data from `@vx/mock-data` for this.\n data = errorData.data;\n // scales\n xScale = scaleTime({\n range: [0, xMax],\n domain: [errorData.minDate, errorData.maxDate],\n tickFormat: () => (val) => formatDate(val)\n });\n yScale = scaleLinear({\n range: [yMax, 0],\n domain: [0, errorData.maxValue],\n });\n zScale = scaleOrdinal({\n domain: errorData.legend,\n range: [\"#3366cc\", \"#dc3912\", \"#ff9900\", \"#109618\", \"#990099\", \"#0099c6\", \"#dd4477\", \"#66aa00\", \"#b82e2e\", \"#316395\", \"#994499\", \"#22aa99\", \"#aaaa11\", \"#6633cc\", \"#e67300\", \"#8b0707\", \"#651067\", \"#329262\", \"#5574a6\", \"#3b3eac\"]\n });\n xPoint = compose(xScale, x);\n yPoint = compose(yScale, y);\n\n }\n\n return (\n