Browse Source

ux: updated icons

Torkel Ödegaard 8 năm trước cách đây
mục cha
commit
3e89ec4ff2

+ 2 - 1
public/app/features/dashboard/dashboard_model.ts

@@ -3,7 +3,8 @@ import _ from 'lodash';
 
 import {GRID_COLUMN_COUNT, GRID_CELL_HEIGHT, REPEAT_DIR_VERTICAL} from 'app/core/constants';
 import {DEFAULT_ANNOTATION_COLOR} from 'app/core/utils/colors';
-import {Emitter, contextSrv} from 'app/core/core';
+import {Emitter} from 'app/core/utils/emitter';
+import {contextSrv} from 'app/core/services/context_srv';
 import sortByKeys from 'app/core/utils/sort_by_keys';
 
 import {DashboardRow} from './row/row_model';

+ 1 - 0
public/app/features/dashboard/dashnav/dashnav.html

@@ -2,6 +2,7 @@
 	<div class="navbar-inner">
 		<a class="navbar-page-icon" ng-click="ctrl.starDashboard()" bs-tooltip="'Mark as favorite'" data-placement="bottom">
       <i class="fa" ng-class="{'fa-star-o': !ctrl.dashboard.meta.isStarred, 'fa-star': ctrl.dashboard.meta.isStarred}"></i>
+      <!-- <i class="gicon gicon&#45;dashboard&#45;starred"></i> -->
 		</a>
 
 		<a class="navbar-page-btn" ng-click="ctrl.showSearch()">

+ 1 - 1
public/app/features/dashboard/import/dash_import.html

@@ -1,7 +1,7 @@
 
 	<div class="modal-header">
 		<h2 class="modal-header-title">
-			<i class="fa fa-upload"></i>
+			<i class="gicon gicon-dashboard-import"></i>
 			<span class="p-l-1">Import Dashboard</span>
 		</h2>
 

+ 79 - 81
public/app/features/dashboard/specs/dashboard_model_specs.ts → public/app/features/dashboard/specs/dashboard_model.jest.ts

@@ -1,5 +1,3 @@
-import {describe, beforeEach, it, expect} from 'test/lib/common';
-
 import _ from 'lodash';
 import {DashboardModel} from '../dashboard_model';
 import {PanelModel} from '../panel_model';
@@ -14,16 +12,16 @@ describe('DashboardModel', function() {
     });
 
     it('should have title', function() {
-      expect(model.title).to.be('No Title');
+      expect(model.title).toBe('No Title');
     });
 
     it('should have meta', function() {
-      expect(model.meta.canSave).to.be(true);
-      expect(model.meta.canShare).to.be(true);
+      expect(model.meta.canSave).toBe(true);
+      expect(model.meta.canShare).toBe(true);
     });
 
     it('should have default properties', function() {
-      expect(model.panels.length).to.be(0);
+      expect(model.panels.length).toBe(0);
     });
   });
 
@@ -37,7 +35,7 @@ describe('DashboardModel', function() {
     });
 
     it('should return max id + 1', function() {
-      expect(model.getNextPanelId()).to.be(6);
+      expect(model.getNextPanelId()).toBe(6);
     });
   });
 
@@ -47,8 +45,8 @@ describe('DashboardModel', function() {
       var saveModel = model.getSaveModelClone();
       var keys = _.keys(saveModel);
 
-      expect(keys[0]).to.be('annotations');
-      expect(keys[1]).to.be('autoUpdate');
+      expect(keys[0]).toBe('annotations');
+      expect(keys[1]).toBe('autoUpdate');
     });
   });
 
@@ -62,7 +60,7 @@ describe('DashboardModel', function() {
     it('adding panel should new up panel model', function() {
       dashboard.addPanel({type: 'test', title: 'test'});
 
-      expect(dashboard.panels[0] instanceof PanelModel).to.be(true);
+      expect(dashboard.panels[0] instanceof PanelModel).toBe(true);
     });
 
     it('duplicate panel should try to add to the right if there is space', function() {
@@ -80,8 +78,8 @@ describe('DashboardModel', function() {
       dashboard.addPanel(panel);
       dashboard.duplicatePanel(dashboard.panels[0]);
 
-      expect(dashboard.panels[1].repeat).to.be(undefined);
-      expect(dashboard.panels[1].scopedVars).to.be(undefined);
+      expect(dashboard.panels[1].repeat).toBe(undefined);
+      expect(dashboard.panels[1].scopedVars).toBe(undefined);
     });
   });
 
@@ -134,77 +132,77 @@ describe('DashboardModel', function() {
     });
 
     it('should have title', function() {
-      expect(model.title).to.be('No Title');
+      expect(model.title).toBe('No Title');
     });
 
     it('should have panel id', function() {
-      expect(graph.id).to.be(1);
+      expect(graph.id).toBe(1);
     });
 
     it('should move time and filtering list', function() {
-      expect(model.time.from).to.be('now-1d');
-      expect(model.templating.list[0].allFormat).to.be('glob');
+      expect(model.time.from).toBe('now-1d');
+      expect(model.templating.list[0].allFormat).toBe('glob');
     });
 
     it('graphite panel should change name too graph', function() {
-      expect(graph.type).to.be('graph');
+      expect(graph.type).toBe('graph');
     });
 
     it('single stat panel should have two thresholds', function() {
-      expect(singlestat.thresholds).to.be('20,30');
+      expect(singlestat.thresholds).toBe('20,30');
     });
 
     it('queries without refId should get it', function() {
-      expect(graph.targets[1].refId).to.be('B');
+      expect(graph.targets[1].refId).toBe('B');
     });
 
     it('update legend setting', function() {
-      expect(graph.legend.show).to.be(true);
+      expect(graph.legend.show).toBe(true);
     });
 
     it('move aliasYAxis to series override', function() {
-      expect(graph.seriesOverrides[0].alias).to.be("test");
-      expect(graph.seriesOverrides[0].yaxis).to.be(2);
+      expect(graph.seriesOverrides[0].alias).toBe("test");
+      expect(graph.seriesOverrides[0].yaxis).toBe(2);
     });
 
     it('should move pulldowns to new schema', function() {
-      expect(model.annotations.list[1].name).to.be('old');
+      expect(model.annotations.list[1].name).toBe('old');
     });
 
     it('table panel should only have two thresholds values', function() {
-      expect(table.styles[0].thresholds[0]).to.be("20");
-      expect(table.styles[0].thresholds[1]).to.be("30");
-      expect(table.styles[1].thresholds[0]).to.be("200");
-      expect(table.styles[1].thresholds[1]).to.be("300");
+      expect(table.styles[0].thresholds[0]).toBe("20");
+      expect(table.styles[0].thresholds[1]).toBe("30");
+      expect(table.styles[1].thresholds[0]).toBe("200");
+      expect(table.styles[1].thresholds[1]).toBe("300");
     });
 
     it('graph grid to yaxes options', function() {
-      expect(graph.yaxes[0].min).to.be(1);
-      expect(graph.yaxes[0].max).to.be(10);
-      expect(graph.yaxes[0].format).to.be('kbyte');
-      expect(graph.yaxes[0].label).to.be('left label');
-      expect(graph.yaxes[0].logBase).to.be(1);
-      expect(graph.yaxes[1].min).to.be(5);
-      expect(graph.yaxes[1].max).to.be(15);
-      expect(graph.yaxes[1].format).to.be('ms');
-      expect(graph.yaxes[1].logBase).to.be(2);
+      expect(graph.yaxes[0].min).toBe(1);
+      expect(graph.yaxes[0].max).toBe(10);
+      expect(graph.yaxes[0].format).toBe('kbyte');
+      expect(graph.yaxes[0].label).toBe('left label');
+      expect(graph.yaxes[0].logBase).toBe(1);
+      expect(graph.yaxes[1].min).toBe(5);
+      expect(graph.yaxes[1].max).toBe(15);
+      expect(graph.yaxes[1].format).toBe('ms');
+      expect(graph.yaxes[1].logBase).toBe(2);
 
-      expect(graph.grid.rightMax).to.be(undefined);
-      expect(graph.grid.rightLogBase).to.be(undefined);
-      expect(graph.y_formats).to.be(undefined);
+      expect(graph.grid.rightMax).toBe(undefined);
+      expect(graph.grid.rightLogBase).toBe(undefined);
+      expect(graph.y_formats).toBe(undefined);
     });
 
     it('dashboard schema version should be set to latest', function() {
-      expect(model.schemaVersion).to.be(16);
+      expect(model.schemaVersion).toBe(16);
     });
 
     it('graph thresholds should be migrated', function() {
-      expect(graph.thresholds.length).to.be(2);
-      expect(graph.thresholds[0].op).to.be('gt');
-      expect(graph.thresholds[0].value).to.be(200);
-      expect(graph.thresholds[0].fillColor).to.be('yellow');
-      expect(graph.thresholds[1].value).to.be(400);
-      expect(graph.thresholds[1].fillColor).to.be('red');
+      expect(graph.thresholds.length).toBe(2);
+      expect(graph.thresholds[0].op).toBe('gt');
+      expect(graph.thresholds[0].value).toBe(200);
+      expect(graph.thresholds[0].fillColor).toBe('yellow');
+      expect(graph.thresholds[1].value).toBe(400);
+      expect(graph.thresholds[1].fillColor).toBe('red');
     });
   });
 
@@ -216,13 +214,13 @@ describe('DashboardModel', function() {
     });
 
     it('Should set meta canEdit and canSave to false', function() {
-      expect(model.meta.canSave).to.be(false);
-      expect(model.meta.canEdit).to.be(false);
+      expect(model.meta.canSave).toBe(false);
+      expect(model.meta.canEdit).toBe(false);
     });
 
     it('getSaveModelClone should remove meta', function() {
       var clone = model.getSaveModelClone();
-      expect(clone.meta).to.be(undefined);
+      expect(clone.meta).toBe(undefined);
     });
   });
 
@@ -279,13 +277,13 @@ describe('DashboardModel', function() {
     });
 
     it('should update query schema', function() {
-      expect(target.fields).to.be(undefined);
-      expect(target.select.length).to.be(2);
-      expect(target.select[0].length).to.be(4);
-      expect(target.select[0][0].type).to.be('field');
-      expect(target.select[0][1].type).to.be('mean');
-      expect(target.select[0][2].type).to.be('math');
-      expect(target.select[0][3].type).to.be('alias');
+      expect(target.fields).toBe(undefined);
+      expect(target.select.length).toBe(2);
+      expect(target.select[0].length).toBe(4);
+      expect(target.select[0][0].type).toBe('field');
+      expect(target.select[0][1].type).toBe('mean');
+      expect(target.select[0][2].type).toBe('math');
+      expect(target.select[0][3].type).toBe('alias');
     });
 
   });
@@ -305,13 +303,13 @@ describe('DashboardModel', function() {
     });
 
     it('should add empty list', function() {
-      expect(model.annotations.list.length).to.be(1);
-      expect(model.templating.list.length).to.be(0);
+      expect(model.annotations.list.length).toBe(1);
+      expect(model.templating.list.length).toBe(0);
     });
 
     it('should add builtin annotation query', function() {
-      expect(model.annotations.list[0].builtIn).to.be(1);
-      expect(model.templating.list.length).to.be(0);
+      expect(model.annotations.list[0].builtIn).toBe(1);
+      expect(model.templating.list.length).toBe(0);
     });
   });
 
@@ -323,15 +321,15 @@ describe('DashboardModel', function() {
     });
 
     it('Should format timestamp with second resolution by default', function() {
-      expect(dashboard.formatDate(1234567890000)).to.be('2009-02-13 23:31:30');
+      expect(dashboard.formatDate(1234567890000)).toBe('2009-02-13 23:31:30');
     });
 
     it('Should format timestamp with second resolution even if second format is passed as parameter', function() {
-      expect(dashboard.formatDate(1234567890007,'YYYY-MM-DD HH:mm:ss')).to.be('2009-02-13 23:31:30');
+      expect(dashboard.formatDate(1234567890007,'YYYY-MM-DD HH:mm:ss')).toBe('2009-02-13 23:31:30');
     });
 
     it('Should format timestamp with millisecond resolution if format is passed as parameter', function() {
-      expect(dashboard.formatDate(1234567890007,'YYYY-MM-DD HH:mm:ss.SSS')).to.be('2009-02-13 23:31:30.007');
+      expect(dashboard.formatDate(1234567890007,'YYYY-MM-DD HH:mm:ss.SSS')).toBe('2009-02-13 23:31:30.007');
     });
   });
 
@@ -344,7 +342,7 @@ describe('DashboardModel', function() {
     });
 
     it('should not enable submmenu', function() {
-      expect(model.meta.submenuEnabled).to.be(false);
+      expect(model.meta.submenuEnabled).toBe(false);
     });
   });
 
@@ -361,7 +359,7 @@ describe('DashboardModel', function() {
     });
 
     it('should enable submmenu', function() {
-      expect(model.meta.submenuEnabled).to.be(true);
+      expect(model.meta.submenuEnabled).toBe(true);
     });
   });
 
@@ -378,7 +376,7 @@ describe('DashboardModel', function() {
     });
 
     it('should enable submmenu', function() {
-      expect(model.meta.submenuEnabled).to.be(true);
+      expect(model.meta.submenuEnabled).toBe(true);
     });
   });
 
@@ -395,7 +393,7 @@ describe('DashboardModel', function() {
     });
 
     it('should not enable submmenu', function() {
-      expect(model.meta.submenuEnabled).to.be(false);
+      expect(model.meta.submenuEnabled).toBe(false);
     });
   });
 
@@ -412,7 +410,7 @@ describe('DashboardModel', function() {
     });
 
     it('should not enable submmenu', function() {
-      expect(dashboard.meta.submenuEnabled).to.be(false);
+      expect(dashboard.meta.submenuEnabled).toBe(false);
     });
   });
 
@@ -442,18 +440,18 @@ describe('DashboardModel', function() {
     });
 
     it('should repeat panel 3 times', function() {
-      expect(dashboard.panels.length).to.be(3);
+      expect(dashboard.panels.length).toBe(3);
     });
 
     it('should mark panel repeated', function() {
-      expect(dashboard.panels[0].repeat).to.be('apps');
-      expect(dashboard.panels[1].repeatPanelId).to.be(2);
+      expect(dashboard.panels[0].repeat).toBe('apps');
+      expect(dashboard.panels[1].repeatPanelId).toBe(2);
     });
 
     it('should set scopedVars on panels', function() {
-      expect(dashboard.panels[0].scopedVars.apps.value).to.be('se1');
-      expect(dashboard.panels[1].scopedVars.apps.value).to.be('se2');
-      expect(dashboard.panels[2].scopedVars.apps.value).to.be('se3');
+      expect(dashboard.panels[0].scopedVars.apps.value).toBe('se1');
+      expect(dashboard.panels[1].scopedVars.apps.value).toBe('se2');
+      expect(dashboard.panels[2].scopedVars.apps.value).toBe('se3');
     });
 
     it('should place on first row and adjust width so all fit', function() {
@@ -472,11 +470,11 @@ describe('DashboardModel', function() {
       });
 
       it('reused panel should copy properties from source', function() {
-        expect(dashboard.panels[1].fill).to.be(10);
+        expect(dashboard.panels[1].fill).toBe(10);
       });
 
       it('should have same panel count', function() {
-        expect(dashboard.panels.length).to.be(3);
+        expect(dashboard.panels.length).toBe(3);
       });
     });
 
@@ -492,11 +490,11 @@ describe('DashboardModel', function() {
       });
 
       it('should remove scopedVars value for last variable', function() {
-        expect(dashboard.panels[0].scopedVars.apps).to.be(undefined);
+        expect(dashboard.panels[0].scopedVars.apps).toBe(undefined);
       });
 
       it('should have new variable value in scopedVars', function() {
-        expect(dashboard.panels[0].scopedVars.server.value).to.be("se1");
+        expect(dashboard.panels[0].scopedVars.server.value).toBe("se1");
       });
     });
 
@@ -507,7 +505,7 @@ describe('DashboardModel', function() {
       });
 
       it('should clean up repeated panel', function() {
-        expect(dashboard.panels.length).to.be(2);
+        expect(dashboard.panels.length).toBe(2);
       });
     });
 
@@ -518,11 +516,11 @@ describe('DashboardModel', function() {
       });
 
       it('should clean up repeated panel', function() {
-        expect(dashboard.panels.length).to.be(1);
+        expect(dashboard.panels.length).toBe(1);
       });
 
       it('should remove scoped vars from reused panel', function() {
-        expect(dashboard.panels[0].scopedVars).to.be(undefined);
+        expect(dashboard.panels[0].scopedVars).toBe(undefined);
       });
     });
 

+ 18 - 21
public/img/icons_dark_theme/icon_add_folder.svg

@@ -3,29 +3,26 @@
 <svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
 	 width="64px" height="64px" viewBox="0 0 64 64" style="enable-background:new 0 0 64 64;" xml:space="preserve">
 <style type="text/css">
-	.st0{fill:#E3E3E3;}
-	.st1{fill:#F2F2F3;}
-	.st2{fill:url(#SVGID_1_);}
+	.st0{fill:#E3E2E2;}
+	.st1{fill:url(#SVGID_1_);}
 </style>
 <g>
-	<path class="st0" d="M14.8,19.2h46.3v-0.8c0-3.3-2.7-5.9-5.9-5.9H29.8l-1.3-3.2l0-0.1c-0.5-1-1.5-1.7-2.6-1.7H13
-		c-1.1,0-2.2,0.7-2.7,1.7l-1.2,3.2H5.9c-3.3,0-5.9,2.7-5.9,5.9V49c0,1.9,0.2,1.7,0.5,2.4l1-3l8-25.2C10.1,20.8,12.3,19.2,14.8,19.2z
-		"/>
-	<polygon class="st1" points="0,52.9 1.6,47.9 0,47.9 	"/>
-	<path class="st0" d="M60.6,22.8H16.8c-1.8,0-3.4,1.2-4,2.9L4.2,53.3H11h31.3c-1-0.6-1.7-1.7-1.7-3v-4.8c0-1.9,1.6-3.5,3.5-3.5h2.2
-		v-2.2c0-1.9,1.6-3.5,3.5-3.5h4.8c1.9,0,3.5,1.6,3.5,3.5V42h0.2l5.5-14.7C64.6,25.1,63,22.8,60.6,22.8z"/>
-	<linearGradient id="SVGID_1_" gradientUnits="userSpaceOnUse" x1="52.1271" y1="62.3127" x2="52.1271" y2="34.3987">
-		<stop  offset="0" style="stop-color:#FFF33B"/>
-		<stop  offset="5.948725e-02" style="stop-color:#FFE029"/>
-		<stop  offset="0.1303" style="stop-color:#FFD218"/>
-		<stop  offset="0.2032" style="stop-color:#FEC90F"/>
-		<stop  offset="0.2809" style="stop-color:#FDC70C"/>
-		<stop  offset="0.6685" style="stop-color:#F3903F"/>
-		<stop  offset="0.8876" style="stop-color:#ED683C"/>
-		<stop  offset="1" style="stop-color:#E93E3A"/>
+	<path class="st0" d="M33.9,47.9v-7.2c0-2.4,1.9-4.3,4.3-4.3h4.4v-4.4c0-2.4,1.9-4.3,4.3-4.3H54c2.4,0,4.3,1.9,4.3,4.3v4.4h1.4
+		L63.8,26c0.9-2.2-0.8-4.4-3.2-4.4H16.2c-1.9,0-3.5,1.2-4.1,2.9L3.3,51.4h6.4h26C34.6,50.6,33.9,49.3,33.9,47.9z"/>
+	<path class="st0" d="M14.6,18.2H60v-0.8c0-3.2-2.6-5.8-5.8-5.8h-25L28,8.5l0-0.1c-0.5-1-1.5-1.6-2.6-1.6H12.7
+		c-1.1,0-2.1,0.6-2.6,1.7l-1.2,3.2H5.8c-3.2,0-5.8,2.6-5.8,5.8v33.9l9.2-29.1C10,19.8,12.1,18.2,14.6,18.2z"/>
+	<linearGradient id="SVGID_1_" gradientUnits="userSpaceOnUse" x1="50.3805" y1="69.5624" x2="50.3805" y2="18.6477">
+		<stop  offset="0" style="stop-color:#FFF23A"/>
+		<stop  offset="4.010540e-02" style="stop-color:#FEE62D"/>
+		<stop  offset="0.1171" style="stop-color:#FED41A"/>
+		<stop  offset="0.1964" style="stop-color:#FDC90F"/>
+		<stop  offset="0.2809" style="stop-color:#FDC60B"/>
+		<stop  offset="0.6685" style="stop-color:#F28F3F"/>
+		<stop  offset="0.8876" style="stop-color:#ED693C"/>
+		<stop  offset="1" style="stop-color:#E83E39"/>
 	</linearGradient>
-	<path class="st2" d="M60.2,45.1h-3.1H55v-5.2c0-0.3-0.2-0.5-0.5-0.5h-4.8c-0.3,0-0.5,0.2-0.5,0.5v5.2H44c-0.3,0-0.5,0.2-0.5,0.5
-		v4.8c0,0.3,0.2,0.5,0.5,0.5h5.2v2.6V56c0,0.3,0.2,0.5,0.5,0.5h4.8c0.3,0,0.5-0.2,0.5-0.5v-5.2h5.2c0.3,0,0.5-0.2,0.5-0.5v-4.8
-		C60.7,45.3,60.5,45.1,60.2,45.1z"/>
+	<path class="st1" d="M62.6,40h-4.4h-0.3h-3.2v-7.9c0-0.4-0.3-0.7-0.7-0.7h-7.2c-0.4,0-0.7,0.3-0.7,0.7V40h-7.9
+		c-0.4,0-0.7,0.3-0.7,0.7v7.2c0,0.4,0.3,0.7,0.7,0.7h7.9v2.8v1.1v4c0,0.4,0.3,0.7,0.7,0.7H54c0.4,0,0.7-0.3,0.7-0.7v-7.9h7.9
+		c0.4,0,0.7-0.3,0.7-0.7v-7.2C63.3,40.4,63,40,62.6,40z"/>
 </g>
 </svg>

+ 22 - 21
public/img/icons_dark_theme/icon_new_dashboard.svg

@@ -3,30 +3,31 @@
 <svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
 	 width="64px" height="64px" viewBox="0 0 64 64" style="enable-background:new 0 0 64 64;" xml:space="preserve">
 <style type="text/css">
-	.st0{fill:#E3E3E3;}
+	.st0{fill:#E3E2E2;}
 	.st1{fill:url(#SVGID_1_);}
 </style>
 <g>
-	<path class="st0" d="M23,0.4H5.7C2.6,0.4,0,2.9,0,6.1v17.2c0,3.2,2.6,5.7,5.7,5.7H23c3.2,0,5.7-2.6,5.7-5.7V6.1
-		C28.7,2.9,26.1,0.4,23,0.4z"/>
-	<path class="st0" d="M37,29.1h17.2c3.2,0,5.7-2.6,5.7-5.7V6.1c0-3.2-2.6-5.7-5.7-5.7H37c-3.2,0-5.7,2.6-5.7,5.7v17.2
-		C31.3,26.5,33.9,29.1,37,29.1z"/>
-	<path class="st0" d="M23,30.9H5.7c-3.2,0-5.7,2.6-5.7,5.7v17.2c0,3.2,2.6,5.7,5.7,5.7H23c3.2,0,5.7-2.6,5.7-5.7V36.6
-		C28.7,33.5,26.1,30.9,23,30.9z"/>
-	<path class="st0" d="M37.7,55.6v-6.2c0-2.5,2.1-4.6,4.6-4.6h2.9v-2.9c0-2.5,2.1-4.6,4.6-4.6H56c1.7,0,3.2,1,4,2.4v-3.1
-		c0-3.2-2.6-5.7-5.7-5.7H37c-3.2,0-5.7,2.6-5.7,5.7v17.2c0,3.2,2.6,5.7,5.7,5.7h3.1C38.7,58.8,37.7,57.3,37.7,55.6z"/>
-	<linearGradient id="SVGID_1_" gradientUnits="userSpaceOnUse" x1="52.8592" y1="87.6694" x2="52.8592" y2="27.0106">
-		<stop  offset="0" style="stop-color:#FFF33B"/>
-		<stop  offset="5.948725e-02" style="stop-color:#FFE029"/>
-		<stop  offset="0.1303" style="stop-color:#FFD218"/>
-		<stop  offset="0.2032" style="stop-color:#FEC90F"/>
-		<stop  offset="0.2809" style="stop-color:#FDC70C"/>
-		<stop  offset="0.6685" style="stop-color:#F3903F"/>
-		<stop  offset="0.8876" style="stop-color:#ED683C"/>
-		<stop  offset="1" style="stop-color:#E93E3A"/>
+	<path class="st0" d="M22.9,0.6H5.7C2.6,0.6,0,3.2,0,6.4v17.2c0,3.2,2.6,5.7,5.7,5.7h17.2c3.2,0,5.7-2.6,5.7-5.7V6.4
+		C28.7,3.2,26.1,0.6,22.9,0.6z"/>
+	<path class="st0" d="M37,29.3h17.2c3.2,0,5.7-2.6,5.7-5.7V6.4c0-3.2-2.6-5.7-5.7-5.7H37c-3.2,0-5.7,2.6-5.7,5.7v17.2
+		C31.3,26.7,33.8,29.3,37,29.3z"/>
+	<path class="st0" d="M22.9,31.2H5.7c-3.2,0-5.7,2.6-5.7,5.7v17.2c0,3.2,2.6,5.7,5.7,5.7h17.2c3.2,0,5.7-2.6,5.7-5.7V36.9
+		C28.7,33.7,26.1,31.2,22.9,31.2z"/>
+	<path class="st0" d="M43.1,58.8h-4.5c-2.3,0-4.2-1.9-4.2-4.2v-7.3c0-2.3,1.9-4.2,4.2-4.2h4.5v-4.5c0-2.3,1.9-4.2,4.2-4.2h7.3
+		c2.3,0,4.2,1.9,4.2,4.2v4.5h0.1h1v-6.2c0-3.2-2.6-5.7-5.7-5.7H37c-3.2,0-5.7,2.6-5.7,5.7v17.2c0,3.2,2.6,5.7,5.7,5.7h6.1v-0.6V58.8
+		z"/>
+	<linearGradient id="SVGID_1_" gradientUnits="userSpaceOnUse" x1="50.9085" y1="76.5403" x2="50.9085" y2="16.4935">
+		<stop  offset="0" style="stop-color:#FBEE41"/>
+		<stop  offset="4.010540e-02" style="stop-color:#FBE334"/>
+		<stop  offset="0.1171" style="stop-color:#FCD321"/>
+		<stop  offset="0.1964" style="stop-color:#FCC916"/>
+		<stop  offset="0.2809" style="stop-color:#FCC612"/>
+		<stop  offset="0.6685" style="stop-color:#F18F40"/>
+		<stop  offset="0.8876" style="stop-color:#EC683B"/>
+		<stop  offset="1" style="stop-color:#E63F39"/>
 	</linearGradient>
-	<path class="st1" d="M63.4,48.8H60h-3.4v-1v-5.8c0-0.3-0.3-0.6-0.6-0.6h-6.2c-0.3,0-0.6,0.3-0.6,0.6v6.8h-6.8
-		c-0.3,0-0.6,0.3-0.6,0.6v6.2c0,0.3,0.3,0.6,0.6,0.6h5.8h1v3.4V63c0,0.3,0.3,0.6,0.6,0.6H56c0.3,0,0.6-0.3,0.6-0.6v-3.9v0v-2.9h2.9
-		h0.2h3.7c0.3,0,0.6-0.3,0.6-0.6v-6.2C64,49.1,63.7,48.8,63.4,48.8z"/>
+	<path class="st1" d="M63.3,46.6h-2.8h-0.6h-1h-0.3h-3.3v-8c0-0.4-0.3-0.7-0.7-0.7h-7.3c-0.4,0-0.7,0.3-0.7,0.7v8h-8
+		c-0.4,0-0.7,0.3-0.7,0.7v7.3c0,0.4,0.3,0.7,0.7,0.7h8v2.8v1.1v0.6v0.7v2.8c0,0.4,0.3,0.7,0.7,0.7h7.3c0.4,0,0.7-0.3,0.7-0.7v-2.9
+		v-0.7v-4.5h4.5h0.7h2.8c0.4,0,0.7-0.3,0.7-0.7v-7.3C64,46.9,63.7,46.6,63.3,46.6z"/>
 </g>
 </svg>

+ 15 - 0
public/img/icons_dark_theme/icon_zoom_out.svg

@@ -0,0 +1,15 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Generator: Adobe Illustrator 20.1.0, SVG Export Plug-In . SVG Version: 6.00 Build 0)  -->
+<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
+	 width="64px" height="64px" viewBox="0 0 64 64" style="enable-background:new 0 0 64 64;" xml:space="preserve">
+<style type="text/css">
+	.st0{fill:#E3E2E2;}
+</style>
+<g>
+	<path class="st0" d="M62.5,55.1L43.9,36.6C49.8,27.4,48.7,15,40.7,7C31.4-2.3,16.3-2.3,7,7s-9.3,24.4,0,33.7c8,8,20.4,9.1,29.6,3.3
+		l18.5,18.5c2,2,5.3,2,7.4,0C64.5,60.5,64.5,57.2,62.5,55.1z M23.8,40.2c-4.4,0-8.5-1.7-11.6-4.8c-3.1-3.1-4.8-7.2-4.8-11.6
+		s1.7-8.5,4.8-11.6c3.1-3.1,7.2-4.8,11.6-4.8c4.4,0,8.5,1.7,11.6,4.8c6.4,6.4,6.4,16.8,0,23.2C32.3,38.5,28.2,40.2,23.8,40.2z"/>
+</g>
+<path class="st0" d="M33.3,27H14.4c-0.3,0-0.5-0.2-0.5-0.5v-5.1c0-0.3,0.2-0.5,0.5-0.5h18.9c0.3,0,0.5,0.2,0.5,0.5v5.1
+	C33.8,26.7,33.6,27,33.3,27z"/>
+</svg>

+ 20 - 21
public/img/icons_light_theme/icon_add_folder.svg

@@ -4,26 +4,25 @@
 	 width="64px" height="64px" viewBox="0 0 64 64" style="enable-background:new 0 0 64 64;" xml:space="preserve">
 <style type="text/css">
 	.st0{fill:#555555;}
-	.st1{fill:#F2F2F3;}
-	.st2{fill:url(#SVGID_1_);}
+	.st1{fill:url(#SVGID_1_);}
 </style>
-<path class="st0" d="M14.8,19.2h46.3v-0.8c0-3.3-2.7-5.9-5.9-5.9H29.8l-1.3-3.2l0-0.1c-0.5-1-1.5-1.7-2.6-1.7H13
-	c-1.1,0-2.2,0.7-2.7,1.7l-1.2,3.2H5.9c-3.3,0-5.9,2.7-5.9,5.9V49c0,1.9,0.2,1.7,0.5,2.4l1-3l8-25.2C10.1,20.8,12.3,19.2,14.8,19.2z"
-	/>
-<polygon class="st1" points="0,52.9 1.6,47.9 0,47.9 "/>
-<path class="st0" d="M60.6,22.8H16.8c-1.8,0-3.4,1.2-4,2.9L4.2,53.3H11h31.3c-1-0.6-1.7-1.7-1.7-3v-4.8c0-1.9,1.6-3.5,3.5-3.5h2.2
-	v-2.2c0-1.9,1.6-3.5,3.5-3.5h4.8c1.9,0,3.5,1.6,3.5,3.5V42h0.2l5.5-14.7C64.6,25.1,63,22.8,60.6,22.8z"/>
-<linearGradient id="SVGID_1_" gradientUnits="userSpaceOnUse" x1="52.1271" y1="62.3127" x2="52.1271" y2="34.3987">
-	<stop  offset="0" style="stop-color:#FFF33B"/>
-	<stop  offset="5.948725e-02" style="stop-color:#FFE029"/>
-	<stop  offset="0.1303" style="stop-color:#FFD218"/>
-	<stop  offset="0.2032" style="stop-color:#FEC90F"/>
-	<stop  offset="0.2809" style="stop-color:#FDC70C"/>
-	<stop  offset="0.6685" style="stop-color:#F3903F"/>
-	<stop  offset="0.8876" style="stop-color:#ED683C"/>
-	<stop  offset="1" style="stop-color:#E93E3A"/>
-</linearGradient>
-<path class="st2" d="M60.2,45.1h-3.1H55v-5.2c0-0.3-0.2-0.5-0.5-0.5h-4.8c-0.3,0-0.5,0.2-0.5,0.5v5.2H44c-0.3,0-0.5,0.2-0.5,0.5v4.8
-	c0,0.3,0.2,0.5,0.5,0.5h5.2v2.6V56c0,0.3,0.2,0.5,0.5,0.5h4.8c0.3,0,0.5-0.2,0.5-0.5v-5.2h5.2c0.3,0,0.5-0.2,0.5-0.5v-4.8
-	C60.7,45.3,60.5,45.1,60.2,45.1z"/>
+<g>
+	<path class="st0" d="M33.9,47.9v-7.2c0-2.4,1.9-4.3,4.3-4.3h4.4v-4.4c0-2.4,1.9-4.3,4.3-4.3H54c2.4,0,4.3,1.9,4.3,4.3v4.4h1.4
+		L63.8,26c0.9-2.2-0.8-4.4-3.2-4.4H16.2c-1.9,0-3.5,1.2-4.1,2.9L3.3,51.4h6.4h26C34.6,50.6,33.9,49.3,33.9,47.9z"/>
+	<path class="st0" d="M14.6,18.2H60v-0.8c0-3.2-2.6-5.8-5.8-5.8h-25L28,8.5l0-0.1c-0.5-1-1.5-1.6-2.6-1.6H12.7
+		c-1.1,0-2.1,0.6-2.6,1.7l-1.2,3.2H5.8c-3.2,0-5.8,2.6-5.8,5.8v33.9l9.2-29.1C10,19.8,12.1,18.2,14.6,18.2z"/>
+	<linearGradient id="SVGID_1_" gradientUnits="userSpaceOnUse" x1="50.3805" y1="69.5624" x2="50.3805" y2="18.6477">
+		<stop  offset="0" style="stop-color:#FFF23A"/>
+		<stop  offset="4.010540e-02" style="stop-color:#FEE62D"/>
+		<stop  offset="0.1171" style="stop-color:#FED41A"/>
+		<stop  offset="0.1964" style="stop-color:#FDC90F"/>
+		<stop  offset="0.2809" style="stop-color:#FDC60B"/>
+		<stop  offset="0.6685" style="stop-color:#F28F3F"/>
+		<stop  offset="0.8876" style="stop-color:#ED693C"/>
+		<stop  offset="1" style="stop-color:#E83E39"/>
+	</linearGradient>
+	<path class="st1" d="M62.6,40h-4.4h-0.3h-3.2v-7.9c0-0.4-0.3-0.7-0.7-0.7h-7.2c-0.4,0-0.7,0.3-0.7,0.7V40h-7.9
+		c-0.4,0-0.7,0.3-0.7,0.7v7.2c0,0.4,0.3,0.7,0.7,0.7h7.9v2.8v1.1v4c0,0.4,0.3,0.7,0.7,0.7H54c0.4,0,0.7-0.3,0.7-0.7v-7.9h7.9
+		c0.4,0,0.7-0.3,0.7-0.7v-7.2C63.3,40.4,63,40,62.6,40z"/>
+</g>
 </svg>

+ 21 - 20
public/img/icons_light_theme/icon_new_dashboard.svg

@@ -7,26 +7,27 @@
 	.st1{fill:url(#SVGID_1_);}
 </style>
 <g>
-	<path class="st0" d="M23,0.4H5.7C2.6,0.4,0,2.9,0,6.1v17.2c0,3.2,2.6,5.7,5.7,5.7H23c3.2,0,5.7-2.6,5.7-5.7V6.1
-		C28.7,2.9,26.1,0.4,23,0.4z"/>
-	<path class="st0" d="M37,29.1h17.2c3.2,0,5.7-2.6,5.7-5.7V6.1c0-3.2-2.6-5.7-5.7-5.7H37c-3.2,0-5.7,2.6-5.7,5.7v17.2
-		C31.3,26.5,33.9,29.1,37,29.1z"/>
-	<path class="st0" d="M23,30.9H5.7c-3.2,0-5.7,2.6-5.7,5.7v17.2c0,3.2,2.6,5.7,5.7,5.7H23c3.2,0,5.7-2.6,5.7-5.7V36.6
-		C28.7,33.5,26.1,30.9,23,30.9z"/>
-	<path class="st0" d="M37.7,55.6v-6.2c0-2.5,2.1-4.6,4.6-4.6h2.9v-2.9c0-2.5,2.1-4.6,4.6-4.6H56c1.7,0,3.2,1,4,2.4v-3.1
-		c0-3.2-2.6-5.7-5.7-5.7H37c-3.2,0-5.7,2.6-5.7,5.7v17.2c0,3.2,2.6,5.7,5.7,5.7h3.1C38.7,58.8,37.7,57.3,37.7,55.6z"/>
-	<linearGradient id="SVGID_1_" gradientUnits="userSpaceOnUse" x1="52.8592" y1="87.6694" x2="52.8592" y2="27.0106">
-		<stop  offset="0" style="stop-color:#FFF33B"/>
-		<stop  offset="5.948725e-02" style="stop-color:#FFE029"/>
-		<stop  offset="0.1303" style="stop-color:#FFD218"/>
-		<stop  offset="0.2032" style="stop-color:#FEC90F"/>
-		<stop  offset="0.2809" style="stop-color:#FDC70C"/>
-		<stop  offset="0.6685" style="stop-color:#F3903F"/>
-		<stop  offset="0.8876" style="stop-color:#ED683C"/>
-		<stop  offset="1" style="stop-color:#E93E3A"/>
+	<path class="st0" d="M22.9,0.6H5.7C2.6,0.6,0,3.2,0,6.4v17.2c0,3.2,2.6,5.7,5.7,5.7h17.2c3.2,0,5.7-2.6,5.7-5.7V6.4
+		C28.7,3.2,26.1,0.6,22.9,0.6z"/>
+	<path class="st0" d="M37,29.3h17.2c3.2,0,5.7-2.6,5.7-5.7V6.4c0-3.2-2.6-5.7-5.7-5.7H37c-3.2,0-5.7,2.6-5.7,5.7v17.2
+		C31.3,26.7,33.8,29.3,37,29.3z"/>
+	<path class="st0" d="M22.9,31.2H5.7c-3.2,0-5.7,2.6-5.7,5.7v17.2c0,3.2,2.6,5.7,5.7,5.7h17.2c3.2,0,5.7-2.6,5.7-5.7V36.9
+		C28.7,33.7,26.1,31.2,22.9,31.2z"/>
+	<path class="st0" d="M43.1,58.8h-4.5c-2.3,0-4.2-1.9-4.2-4.2v-7.3c0-2.3,1.9-4.2,4.2-4.2h4.5v-4.5c0-2.3,1.9-4.2,4.2-4.2h7.3
+		c2.3,0,4.2,1.9,4.2,4.2v4.5h0.1h1v-6.2c0-3.2-2.6-5.7-5.7-5.7H37c-3.2,0-5.7,2.6-5.7,5.7v17.2c0,3.2,2.6,5.7,5.7,5.7h6.1v-0.6V58.8
+		z"/>
+	<linearGradient id="SVGID_1_" gradientUnits="userSpaceOnUse" x1="50.9085" y1="76.5403" x2="50.9085" y2="16.4935">
+		<stop  offset="0" style="stop-color:#FBEE41"/>
+		<stop  offset="4.010540e-02" style="stop-color:#FBE334"/>
+		<stop  offset="0.1171" style="stop-color:#FCD321"/>
+		<stop  offset="0.1964" style="stop-color:#FCC916"/>
+		<stop  offset="0.2809" style="stop-color:#FCC612"/>
+		<stop  offset="0.6685" style="stop-color:#F18F40"/>
+		<stop  offset="0.8876" style="stop-color:#EC683B"/>
+		<stop  offset="1" style="stop-color:#E63F39"/>
 	</linearGradient>
-	<path class="st1" d="M63.4,48.8H60h-3.4v-1v-5.8c0-0.3-0.3-0.6-0.6-0.6h-6.2c-0.3,0-0.6,0.3-0.6,0.6v6.8h-6.8
-		c-0.3,0-0.6,0.3-0.6,0.6v6.2c0,0.3,0.3,0.6,0.6,0.6h5.8h1v3.4V63c0,0.3,0.3,0.6,0.6,0.6H56c0.3,0,0.6-0.3,0.6-0.6v-3.9v0v-2.9h2.9
-		h0.2h3.7c0.3,0,0.6-0.3,0.6-0.6v-6.2C64,49.1,63.7,48.8,63.4,48.8z"/>
+	<path class="st1" d="M63.3,46.6h-2.8h-0.6h-1h-0.3h-3.3v-8c0-0.4-0.3-0.7-0.7-0.7h-7.3c-0.4,0-0.7,0.3-0.7,0.7v8h-8
+		c-0.4,0-0.7,0.3-0.7,0.7v7.3c0,0.4,0.3,0.7,0.7,0.7h8v2.8v1.1v0.6v0.7v2.8c0,0.4,0.3,0.7,0.7,0.7h7.3c0.4,0,0.7-0.3,0.7-0.7v-2.9
+		v-0.7v-4.5h4.5h0.7h2.8c0.4,0,0.7-0.3,0.7-0.7v-7.3C64,46.9,63.7,46.6,63.3,46.6z"/>
 </g>
 </svg>

+ 15 - 0
public/img/icons_light_theme/icon_zoom_out.svg

@@ -0,0 +1,15 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Generator: Adobe Illustrator 20.1.0, SVG Export Plug-In . SVG Version: 6.00 Build 0)  -->
+<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
+	 width="64px" height="64px" viewBox="0 0 64 64" style="enable-background:new 0 0 64 64;" xml:space="preserve">
+<style type="text/css">
+	.st0{fill:#555555;}
+</style>
+<g>
+	<path class="st0" d="M62.5,55.1L43.9,36.6C49.8,27.4,48.7,15,40.7,7C31.4-2.3,16.3-2.3,7,7s-9.3,24.4,0,33.7c8,8,20.4,9.1,29.6,3.3
+		l18.5,18.5c2,2,5.3,2,7.4,0C64.5,60.5,64.5,57.2,62.5,55.1z M23.8,40.2c-4.4,0-8.5-1.7-11.6-4.8c-3.1-3.1-4.8-7.2-4.8-11.6
+		s1.7-8.5,4.8-11.6c3.1-3.1,7.2-4.8,11.6-4.8c4.4,0,8.5,1.7,11.6,4.8c6.4,6.4,6.4,16.8,0,23.2C32.3,38.5,28.2,40.2,23.8,40.2z"/>
+</g>
+<path class="st0" d="M33.3,27H14.4c-0.3,0-0.5-0.2-0.5-0.5v-5.1c0-0.3,0.2-0.5,0.5-0.5h18.9c0.3,0,0.5,0.2,0.5,0.5v5.1
+	C33.8,26.7,33.6,27,33.3,27z"/>
+</svg>

+ 235 - 5
yarn.lock

@@ -1782,7 +1782,7 @@ combined-stream@^1.0.5, combined-stream@~1.0.5:
   dependencies:
     delayed-stream "~1.0.0"
 
-commander@2.11.0, commander@2.11.x, commander@^2.8.1, commander@^2.9.0, commander@~2.11.0:
+commander@2, commander@2.11.0, commander@2.11.x, commander@^2.8.1, commander@^2.9.0, commander@~2.11.0:
   version "2.11.0"
   resolved "https://registry.yarnpkg.com/commander/-/commander-2.11.0.tgz#157152fd1e7a6c8d98a5b715cf376df928004563"
 
@@ -2185,6 +2185,228 @@ cyclist@~0.2.2:
   version "0.2.2"
   resolved "https://registry.yarnpkg.com/cyclist/-/cyclist-0.2.2.tgz#1b33792e11e914a2fd6d6ed6447464444e5fa640"
 
+d3-array@1, d3-array@1.2.1, d3-array@^1.2.0:
+  version "1.2.1"
+  resolved "https://registry.yarnpkg.com/d3-array/-/d3-array-1.2.1.tgz#d1ca33de2f6ac31efadb8e050a021d7e2396d5dc"
+
+d3-axis@1.0.8:
+  version "1.0.8"
+  resolved "https://registry.yarnpkg.com/d3-axis/-/d3-axis-1.0.8.tgz#31a705a0b535e65759de14173a31933137f18efa"
+
+d3-brush@1.0.4:
+  version "1.0.4"
+  resolved "https://registry.yarnpkg.com/d3-brush/-/d3-brush-1.0.4.tgz#00c2f238019f24f6c0a194a26d41a1530ffe7bc4"
+  dependencies:
+    d3-dispatch "1"
+    d3-drag "1"
+    d3-interpolate "1"
+    d3-selection "1"
+    d3-transition "1"
+
+d3-chord@1.0.4:
+  version "1.0.4"
+  resolved "https://registry.yarnpkg.com/d3-chord/-/d3-chord-1.0.4.tgz#7dec4f0ba886f713fe111c45f763414f6f74ca2c"
+  dependencies:
+    d3-array "1"
+    d3-path "1"
+
+d3-collection@1, d3-collection@1.0.4:
+  version "1.0.4"
+  resolved "https://registry.yarnpkg.com/d3-collection/-/d3-collection-1.0.4.tgz#342dfd12837c90974f33f1cc0a785aea570dcdc2"
+
+d3-color@1, d3-color@1.0.3:
+  version "1.0.3"
+  resolved "https://registry.yarnpkg.com/d3-color/-/d3-color-1.0.3.tgz#bc7643fca8e53a8347e2fbdaffa236796b58509b"
+
+d3-dispatch@1, d3-dispatch@1.0.3:
+  version "1.0.3"
+  resolved "https://registry.yarnpkg.com/d3-dispatch/-/d3-dispatch-1.0.3.tgz#46e1491eaa9b58c358fce5be4e8bed626e7871f8"
+
+d3-drag@1, d3-drag@1.2.1:
+  version "1.2.1"
+  resolved "https://registry.yarnpkg.com/d3-drag/-/d3-drag-1.2.1.tgz#df8dd4c502fb490fc7462046a8ad98a5c479282d"
+  dependencies:
+    d3-dispatch "1"
+    d3-selection "1"
+
+d3-dsv@1, d3-dsv@1.0.7:
+  version "1.0.7"
+  resolved "https://registry.yarnpkg.com/d3-dsv/-/d3-dsv-1.0.7.tgz#137076663f398428fc3d031ae65370522492b78f"
+  dependencies:
+    commander "2"
+    iconv-lite "0.4"
+    rw "1"
+
+d3-ease@1, d3-ease@1.0.3:
+  version "1.0.3"
+  resolved "https://registry.yarnpkg.com/d3-ease/-/d3-ease-1.0.3.tgz#68bfbc349338a380c44d8acc4fbc3304aa2d8c0e"
+
+d3-force@1.1.0:
+  version "1.1.0"
+  resolved "https://registry.yarnpkg.com/d3-force/-/d3-force-1.1.0.tgz#cebf3c694f1078fcc3d4daf8e567b2fbd70d4ea3"
+  dependencies:
+    d3-collection "1"
+    d3-dispatch "1"
+    d3-quadtree "1"
+    d3-timer "1"
+
+d3-format@1, d3-format@1.2.0:
+  version "1.2.0"
+  resolved "https://registry.yarnpkg.com/d3-format/-/d3-format-1.2.0.tgz#6b480baa886885d4651dc248a8f4ac9da16db07a"
+
+d3-geo@1.8.1:
+  version "1.8.1"
+  resolved "https://registry.yarnpkg.com/d3-geo/-/d3-geo-1.8.1.tgz#50615c33454487e350db71059f84f71cda2dd983"
+  dependencies:
+    d3-array "1"
+
+d3-hierarchy@1.1.5:
+  version "1.1.5"
+  resolved "https://registry.yarnpkg.com/d3-hierarchy/-/d3-hierarchy-1.1.5.tgz#a1c845c42f84a206bcf1c01c01098ea4ddaa7a26"
+
+d3-interpolate@1, d3-interpolate@1.1.5:
+  version "1.1.5"
+  resolved "https://registry.yarnpkg.com/d3-interpolate/-/d3-interpolate-1.1.5.tgz#69e099ff39214716e563c9aec3ea9d1ea4b8a79f"
+  dependencies:
+    d3-color "1"
+
+d3-path@1, d3-path@1.0.5:
+  version "1.0.5"
+  resolved "https://registry.yarnpkg.com/d3-path/-/d3-path-1.0.5.tgz#241eb1849bd9e9e8021c0d0a799f8a0e8e441764"
+
+d3-polygon@1.0.3:
+  version "1.0.3"
+  resolved "https://registry.yarnpkg.com/d3-polygon/-/d3-polygon-1.0.3.tgz#16888e9026460933f2b179652ad378224d382c62"
+
+d3-quadtree@1, d3-quadtree@1.0.3:
+  version "1.0.3"
+  resolved "https://registry.yarnpkg.com/d3-quadtree/-/d3-quadtree-1.0.3.tgz#ac7987e3e23fe805a990f28e1b50d38fcb822438"
+
+d3-queue@3.0.7:
+  version "3.0.7"
+  resolved "https://registry.yarnpkg.com/d3-queue/-/d3-queue-3.0.7.tgz#c93a2e54b417c0959129d7d73f6cf7d4292e7618"
+
+d3-random@1.1.0:
+  version "1.1.0"
+  resolved "https://registry.yarnpkg.com/d3-random/-/d3-random-1.1.0.tgz#6642e506c6fa3a648595d2b2469788a8d12529d3"
+
+d3-request@1.0.6:
+  version "1.0.6"
+  resolved "https://registry.yarnpkg.com/d3-request/-/d3-request-1.0.6.tgz#a1044a9ef4ec28c824171c9379fae6d79474b19f"
+  dependencies:
+    d3-collection "1"
+    d3-dispatch "1"
+    d3-dsv "1"
+    xmlhttprequest "1"
+
+d3-scale-chromatic@^1.1.1:
+  version "1.1.1"
+  resolved "https://registry.yarnpkg.com/d3-scale-chromatic/-/d3-scale-chromatic-1.1.1.tgz#811406e8e09dab78a49dac4a32047d5d3edd0c44"
+  dependencies:
+    d3-interpolate "1"
+
+d3-scale@1.0.6:
+  version "1.0.6"
+  resolved "https://registry.yarnpkg.com/d3-scale/-/d3-scale-1.0.6.tgz#bce19da80d3a0cf422c9543ae3322086220b34ed"
+  dependencies:
+    d3-array "^1.2.0"
+    d3-collection "1"
+    d3-color "1"
+    d3-format "1"
+    d3-interpolate "1"
+    d3-time "1"
+    d3-time-format "2"
+
+d3-selection@1, d3-selection@1.1.0, d3-selection@^1.1.0:
+  version "1.1.0"
+  resolved "https://registry.yarnpkg.com/d3-selection/-/d3-selection-1.1.0.tgz#1998684896488f839ca0372123da34f1d318809c"
+
+d3-shape@1.2.0:
+  version "1.2.0"
+  resolved "https://registry.yarnpkg.com/d3-shape/-/d3-shape-1.2.0.tgz#45d01538f064bafd05ea3d6d2cb748fd8c41f777"
+  dependencies:
+    d3-path "1"
+
+d3-time-format@2:
+  version "2.1.0"
+  resolved "https://registry.yarnpkg.com/d3-time-format/-/d3-time-format-2.1.0.tgz#a1d9540a1dc498817d44066b121b19a4a83e3531"
+  dependencies:
+    d3-time "1"
+
+d3-time-format@2.0.5:
+  version "2.0.5"
+  resolved "https://registry.yarnpkg.com/d3-time-format/-/d3-time-format-2.0.5.tgz#9d7780204f7c9119c9170b1a56db4de9a8af972e"
+  dependencies:
+    d3-time "1"
+
+d3-time@1, d3-time@1.0.7:
+  version "1.0.7"
+  resolved "https://registry.yarnpkg.com/d3-time/-/d3-time-1.0.7.tgz#94caf6edbb7879bb809d0d1f7572bc48482f7270"
+
+d3-timer@1, d3-timer@1.0.7:
+  version "1.0.7"
+  resolved "https://registry.yarnpkg.com/d3-timer/-/d3-timer-1.0.7.tgz#df9650ca587f6c96607ff4e60cc38229e8dd8531"
+
+d3-transition@1, d3-transition@1.1.0:
+  version "1.1.0"
+  resolved "https://registry.yarnpkg.com/d3-transition/-/d3-transition-1.1.0.tgz#cfc85c74e5239324290546623572990560c3966f"
+  dependencies:
+    d3-color "1"
+    d3-dispatch "1"
+    d3-ease "1"
+    d3-interpolate "1"
+    d3-selection "^1.1.0"
+    d3-timer "1"
+
+d3-voronoi@1.1.2:
+  version "1.1.2"
+  resolved "https://registry.yarnpkg.com/d3-voronoi/-/d3-voronoi-1.1.2.tgz#1687667e8f13a2d158c80c1480c5a29cb0d8973c"
+
+d3-zoom@1.6.0:
+  version "1.6.0"
+  resolved "https://registry.yarnpkg.com/d3-zoom/-/d3-zoom-1.6.0.tgz#eb645b07fd0c37acc8b36b88476b781ed277b40e"
+  dependencies:
+    d3-dispatch "1"
+    d3-drag "1"
+    d3-interpolate "1"
+    d3-selection "1"
+    d3-transition "1"
+
+d3@^4.11.0:
+  version "4.11.0"
+  resolved "https://registry.yarnpkg.com/d3/-/d3-4.11.0.tgz#15ce99ec33e6941718cfd8fb826071b4fb7c48cb"
+  dependencies:
+    d3-array "1.2.1"
+    d3-axis "1.0.8"
+    d3-brush "1.0.4"
+    d3-chord "1.0.4"
+    d3-collection "1.0.4"
+    d3-color "1.0.3"
+    d3-dispatch "1.0.3"
+    d3-drag "1.2.1"
+    d3-dsv "1.0.7"
+    d3-ease "1.0.3"
+    d3-force "1.1.0"
+    d3-format "1.2.0"
+    d3-geo "1.8.1"
+    d3-hierarchy "1.1.5"
+    d3-interpolate "1.1.5"
+    d3-path "1.0.5"
+    d3-polygon "1.0.3"
+    d3-quadtree "1.0.3"
+    d3-queue "3.0.7"
+    d3-random "1.1.0"
+    d3-request "1.0.6"
+    d3-scale "1.0.6"
+    d3-selection "1.1.0"
+    d3-shape "1.2.0"
+    d3-time "1.0.7"
+    d3-time-format "2.0.5"
+    d3-timer "1.0.7"
+    d3-transition "1.1.0"
+    d3-voronoi "1.1.2"
+    d3-zoom "1.6.0"
+
 d@1:
   version "1.0.0"
   resolved "https://registry.yarnpkg.com/d/-/d-1.0.0.tgz#754bb5bfe55451da69a58b94d45f4c5b0462d58f"
@@ -4102,14 +4324,14 @@ i@0.3.x:
   version "0.3.5"
   resolved "https://registry.yarnpkg.com/i/-/i-0.3.5.tgz#1d2b854158ec8169113c6cb7f6b6801e99e211d5"
 
+iconv-lite@0.4, iconv-lite@0.4.19, iconv-lite@~0.4.13:
+  version "0.4.19"
+  resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.19.tgz#f7468f60135f5e5dad3399c0a81be9a1603a082b"
+
 iconv-lite@0.4.13:
   version "0.4.13"
   resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.13.tgz#1f88aba4ab0b1508e8312acc39345f36e992e2f2"
 
-iconv-lite@0.4.19, iconv-lite@~0.4.13:
-  version "0.4.19"
-  resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.19.tgz#f7468f60135f5e5dad3399c0a81be9a1603a082b"
-
 icss-replace-symbols@^1.1.0:
   version "1.1.0"
   resolved "https://registry.yarnpkg.com/icss-replace-symbols/-/icss-replace-symbols-1.1.0.tgz#06ea6f83679a7749e386cfe1fe812ae5db223ded"
@@ -7821,6 +8043,10 @@ run-queue@^1.0.0, run-queue@^1.0.3:
   dependencies:
     aproba "^1.1.1"
 
+rw@1:
+  version "1.3.3"
+  resolved "https://registry.yarnpkg.com/rw/-/rw-1.3.3.tgz#3f862dfa91ab766b14885ef4d01124bfda074fb4"
+
 rx-lite@^3.1.2:
   version "3.1.2"
   resolved "https://registry.yarnpkg.com/rx-lite/-/rx-lite-3.1.2.tgz#19ce502ca572665f3b647b10939f97fd1615f102"
@@ -9436,6 +9662,10 @@ xmlhttprequest-ssl@1.5.3:
   version "1.5.3"
   resolved "https://registry.yarnpkg.com/xmlhttprequest-ssl/-/xmlhttprequest-ssl-1.5.3.tgz#185a888c04eca46c3e4070d99f7b49de3528992d"
 
+xmlhttprequest@1:
+  version "1.8.0"
+  resolved "https://registry.yarnpkg.com/xmlhttprequest/-/xmlhttprequest-1.8.0.tgz#67fe075c5c24fef39f9d65f5f7b7fe75171968fc"
+
 xtend@^4.0.0, xtend@^4.0.1, xtend@~4.0.1:
   version "4.0.1"
   resolved "https://registry.yarnpkg.com/xtend/-/xtend-4.0.1.tgz#a5c6d532be656e23db820efb943a1f04998d63af"