[TASK] Replace chroma-js with d3

This commit is contained in:
Xaver Maierhofer 2017-03-10 00:53:23 +01:00 committed by Geno
parent 98f175d6a5
commit ced03814e1
11 changed files with 18 additions and 35 deletions

View File

@ -22,7 +22,7 @@ _Some similar features might have been implemented/merged_
- css and some js moved inline - css and some js moved inline
- Yarn/npm in favour of bower - Yarn/npm in favour of bower
- Load only moment.js without languages (Languages are included in translations) - Load only moment.js without languages (Languages are included in translations)
- unneeded components removed (es6-shim, tablesort, numeraljs, leaflet-providers, jshashes) - unneeded components removed (es6-shim, tablesort, numeraljs, leaflet-providers, jshashes, chroma-js)
- RBush v2 - performance boost in last versions (positions, labels and clients on the map) - RBush v2 - performance boost in last versions (positions, labels and clients on the map)
- Ruby dependency removed - Ruby dependency removed
- FixedCenter is required - FixedCenter is required

7
app.js
View File

@ -12,7 +12,6 @@ require.config({
'polyglot': '../node_modules/node-polyglot/build/polyglot', 'polyglot': '../node_modules/node-polyglot/build/polyglot',
'leaflet': '../node_modules/leaflet/dist/leaflet', 'leaflet': '../node_modules/leaflet/dist/leaflet',
'leaflet.label': '../node_modules/leaflet-label/dist/leaflet.label', 'leaflet.label': '../node_modules/leaflet-label/dist/leaflet.label',
'chroma-js': '../node_modules/chroma-js/chroma.min',
'moment': '../node_modules/moment/moment', 'moment': '../node_modules/moment/moment',
// d3 modules indirect dependencies // d3 modules indirect dependencies
// by d3-zoom: d3-drag // by d3-zoom: d3-drag
@ -40,10 +39,8 @@ require.config({
'leaflet.label': ['leaflet'], 'leaflet.label': ['leaflet'],
'd3-drag': ['d3-selection'], 'd3-drag': ['d3-selection'],
'd3-force': ['d3-collection', 'd3-dispatch', 'd3-quadtree', 'd3-timer'], 'd3-force': ['d3-collection', 'd3-dispatch', 'd3-quadtree', 'd3-timer'],
'd3-zoom': ['d3-drag', 'd3-ease', 'd3-transition', 'd3-color', 'd3-interpolate'], 'd3-interpolate': ['d3-color'],
'tablesort': { 'd3-zoom': ['d3-drag', 'd3-ease', 'd3-transition', 'd3-interpolate']
exports: 'Tablesort'
}
} }
}); });

View File

@ -180,7 +180,7 @@ define(['d3-selection', 'd3-force', 'd3-zoom', 'd3-drag', 'utils/math', 'forcegr
e.o = d; e.o = d;
e.source = dictNodes[d.source.id]; e.source = dictNodes[d.source.id];
e.target = dictNodes[d.target.id]; e.target = dictNodes[d.target.id];
e.color = linkScale(d.tq).hex(); e.color = linkScale(1 / d.tq);
return e; return e;
}); });

View File

@ -1,8 +1,8 @@
define(['chroma-js', 'map', 'sidebar', 'tabs', 'container', 'legend', define(['d3-interpolate', 'map', 'sidebar', 'tabs', 'container', 'legend',
'linklist', 'nodelist', 'simplenodelist', 'infobox/main', 'linklist', 'nodelist', 'simplenodelist', 'infobox/main',
'proportions', 'forcegraph', 'title', 'about', 'datadistributor', 'proportions', 'forcegraph', 'title', 'about', 'datadistributor',
'filters/filtergui', 'filters/hostname'], 'filters/filtergui', 'filters/hostname'],
function (chroma, Map, Sidebar, Tabs, Container, Legend, Linklist, function (d3Interpolate, Map, Sidebar, Tabs, Container, Legend, Linklist,
Nodelist, SimpleNodelist, Infobox, Proportions, ForceGraph, Nodelist, SimpleNodelist, Infobox, Proportions, ForceGraph,
Title, About, DataDistributor, FilterGUI, HostnameFilter) { Title, About, DataDistributor, FilterGUI, HostnameFilter) {
'use strict'; 'use strict';
@ -12,7 +12,7 @@ define(['chroma-js', 'map', 'sidebar', 'tabs', 'container', 'legend',
var content; var content;
var contentDiv; var contentDiv;
var linkScale = chroma.scale(chroma.bezier(['#04C714', '#FF5500', '#F02311'])).domain([1, 5]); var linkScale = d3Interpolate.interpolate('#F02311', '#04C714');
var sidebar; var sidebar;
var buttons = document.createElement('div'); var buttons = document.createElement('div');

View File

@ -1,5 +1,5 @@
define(['sorttable', 'virtual-dom', 'chroma-js', 'moment', 'helper'], define(['sorttable', 'virtual-dom', 'd3-interpolate', 'moment', 'helper'],
function (SortTable, V, chroma, moment, helper) { function (SortTable, V, d3Interpolate, moment, helper) {
'use strict'; 'use strict';
function showGeoURI(d) { function showGeoURI(d) {
@ -178,7 +178,7 @@ define(['sorttable', 'virtual-dom', 'chroma-js', 'moment', 'helper'],
} }
return function (config, el, router, d) { return function (config, el, router, d) {
var linkScale = chroma.scale(chroma.bezier(['#04C714', '#FF5500', '#F02311'])).domain([1, 5]); var linkScale = d3Interpolate.interpolate('#F02311', '#04C714');
function renderNeighbourRow(n) { function renderNeighbourRow(n) {
var icons = []; var icons = [];
@ -199,7 +199,7 @@ define(['sorttable', 'virtual-dom', 'chroma-js', 'moment', 'helper'],
var td1 = V.h('td', icons); var td1 = V.h('td', icons);
var td2 = V.h('td', name); var td2 = V.h('td', name);
var td3 = V.h('td', (n.node.statistics.clients ? n.node.statistics.clients.toString() : '0')); var td3 = V.h('td', (n.node.statistics.clients ? n.node.statistics.clients.toString() : '0'));
var td4 = V.h('td', { style: { color: linkScale(n.link.tq).hex() } }, helper.showTq(n.link)); var td4 = V.h('td', { style: { color: linkScale(1 / n.link.tq) } }, helper.showTq(n.link));
var td5 = V.h('td', helper.showDistance(n.link)); var td5 = V.h('td', helper.showDistance(n.link));
return V.h('tr', [td1, td2, td3, td4, td5]); return V.h('tr', [td1, td2, td3, td4, td5]);

View File

@ -36,7 +36,7 @@ define(['sorttable', 'virtual-dom', 'helper'], function (SortTable, V, helper) {
var td1Content = [V.h('a', { href: router.getUrl({ l: d.id }), onclick: router.link(d) }, linkName(d))]; var td1Content = [V.h('a', { href: router.getUrl({ l: d.id }), onclick: router.link(d) }, linkName(d))];
var td1 = V.h('td', td1Content); var td1 = V.h('td', td1Content);
var td2 = V.h('td', { style: { color: linkScale(d.tq).hex() } }, helper.showTq(d)); var td2 = V.h('td', { style: { color: linkScale(1 / d.tq) } }, helper.showTq(d));
var td3 = V.h('td', helper.showDistance(d)); var td3 = V.h('td', helper.showDistance(d));
return V.h('tr', [td1, td2, td3]); return V.h('tr', [td1, td2, td3]);

View File

@ -93,7 +93,7 @@ define(['map/clientlayer', 'map/labelslayer',
return graph.map(function (d) { return graph.map(function (d) {
var opts = { var opts = {
color: d.type === 'Kabel' ? '#50B0F0' : linkScale(d.tq).hex(), color: d.type === 'Kabel' ? '#50B0F0' : linkScale(1 / d.tq),
weight: 4, weight: 4,
opacity: 0.5, opacity: 0.5,
dashArray: 'none' dashArray: 'none'

View File

@ -1,10 +1,10 @@
define(['chroma-js', 'virtual-dom', 'filters/genericnode', 'helper'], define(['d3-interpolate', 'virtual-dom', 'filters/genericnode', 'helper'],
function (Chroma, V, Filter, helper) { function (d3Interpolate, V, Filter, helper) {
'use strict'; 'use strict';
return function (config, filterManager) { return function (config, filterManager) {
var self = this; var self = this;
var scale = Chroma.scale('YlGnBu').mode('lab'); var scale = d3Interpolate.interpolate('#770038', '#dc0067');
var statusTable = document.createElement('table'); var statusTable = document.createElement('table');
statusTable.classList.add('proportion'); statusTable.classList.add('proportion');
@ -58,8 +58,6 @@ define(['chroma-js', 'virtual-dom', 'filters/genericnode', 'helper'],
var items = data.map(function (d) { var items = data.map(function (d) {
var v = d[1] / max; var v = d[1] / max;
var c1 = Chroma.contrast(scale(v), 'white');
var c2 = Chroma.contrast(scale(v), 'black');
var filter = new Filter(_.t(name), d[2], d[0], d[3]); var filter = new Filter(_.t(name), d[2], d[0], d[3]);
@ -69,8 +67,8 @@ define(['chroma-js', 'virtual-dom', 'filters/genericnode', 'helper'],
var td = V.h('td', V.h('span', { var td = V.h('td', V.h('span', {
style: { style: {
width: Math.round(v * 100) + '%', width: Math.round(v * 100) + '%',
backgroundColor: scale(v).hex(), backgroundColor: scale(v),
color: c1 > c2 ? 'white' : 'black' color: 'white'
} }
}, d[1].toFixed(0))); }, d[1].toFixed(0)));

View File

@ -43,7 +43,6 @@
}, },
"dependencies": { "dependencies": {
"almond": "^0.3.3", "almond": "^0.3.3",
"chroma-js": "^1.2.1",
"d3-drag": "^1.0.3", "d3-drag": "^1.0.3",
"d3-force": "^1.0.5", "d3-force": "^1.0.5",
"d3-selection": "^1.0.4", "d3-selection": "^1.0.4",

View File

@ -77,13 +77,6 @@ html {
} }
} }
//@import 'modules/proportion';
.proportion {
span {
filter: invert(100%);
}
}
//@import 'modules/tabs'; //@import 'modules/tabs';
.tabs { .tabs {
background: transparentize($color-black, .98); background: transparentize($color-black, .98);

View File

@ -527,10 +527,6 @@ chokidar@1.6.1:
optionalDependencies: optionalDependencies:
fsevents "^1.0.0" fsevents "^1.0.0"
chroma-js@^1.2.1:
version "1.2.2"
resolved "https://registry.yarnpkg.com/chroma-js/-/chroma-js-1.2.2.tgz#4171ae7c468dae7380853239fa109cbbe266d5ee"
circular-json@^0.3.1: circular-json@^0.3.1:
version "0.3.1" version "0.3.1"
resolved "https://registry.yarnpkg.com/circular-json/-/circular-json-0.3.1.tgz#be8b36aefccde8b3ca7aa2d6afc07a37242c0d2d" resolved "https://registry.yarnpkg.com/circular-json/-/circular-json-0.3.1.tgz#be8b36aefccde8b3ca7aa2d6afc07a37242c0d2d"