UNPKG

lencse-getmdl-dashboard

Version:

Free dashboard template with Material Design Lite edited by @lencse

145 lines (130 loc) 3.6 kB
{ var colors = [ 'rgba(96, 196, 150, 1)', 'rgba(80, 150, 215, 1)', 'rgba(0, 188, 212, 1)', 'rgba(116, 199, 209, 1)', 'rgba(255, 82, 82, 1)', 'rgba(0, 0, 0, 0)' ]; var data = [ { 'key': 'Coding', 'y': 0, 'end': 9 }, { 'key': 'Eating', 'y': 0, 'end': 3 }, { 'key': 'Sleeping', 'y': 0, 'end': 3 }, { 'key': 'Meditation', 'y': 0, 'end': 3 }, { 'key': 'The fight against evil', 'y': 0, 'end': 6 } , { 'key': 'Pending', 'y': 23.9 } ]; nv.addGraph(() => { var innerRadius = 0.86, outerRadius = 1.02; var pieChart = nv.models.pieChart() .x(d => {return d.key;}) .y(d => {return d.y;}) .showLabels(false) .donut(true) .growOnHover(true) .padAngle(.04) .cornerRadius(0) .margin({'left': -10, 'right': -10, 'top': -10, 'bottom': -10}) .color(colors) .arcsRadius([{'inner': innerRadius, 'outer': outerRadius}, {'inner': innerRadius, 'outer': outerRadius}, {'inner': innerRadius, 'outer': outerRadius}, {'inner': innerRadius, 'outer': outerRadius}, {'inner': innerRadius, 'outer': outerRadius} ]) .showLegend(false) .title('0 hours') .titleOffset(10); pieChart.tooltip.enabled(true) .hideDelay(0) .headerEnabled(false) .contentGenerator(d => { if (d === null) { return ''; } d3.selectAll('.nvtooltip').classed('mdl-tooltip', true); return d.data.y + ' hours'; }); var container = d3.select('.pie-chart__container') .append('div') .append('svg') .datum(data) .transition().duration(1200) .call(pieChart); var h = 0, i = 0; var timer = setInterval(animatePie, 70, data); function animatePie(data) { if (i < data.length - 1) { if (data[i].y < data[i].end) { data[i].y++; data[data.length - 1].y--; pieChart.title((h + 1) + ' hours'); h++; } else { i++; } } else { data.splice(data.length - 1, 1); clearInterval(timer); return; } if (container[0][0]) { pieChart.update(); } else { clearInterval(timer); } } d3.select('.pie-chart__container .nv-pie .nv-pie') .append('image') .attr('width', '30') .attr('height', '30') .attr('xlink:href', 'images/watch_white.svg') .attr('transform', 'translate(-15,-35)'); var color = d3.scale.ordinal().range(colors); var legend = d3.select('.pie-chart__container') .append('div') .attr('class', 'legend') .selectAll('.legend__item') .data(data.slice(0, data.length - 1)) .enter() .append('div') .attr('class', 'legend__item'); legend.append('div') .attr('class', 'legend__mark pull-left') .style('background-color', d => { return color(d.key); }); legend.append('div') .attr('class', 'legend__text') .text(d => { return d.key; }); return pieChart; }); }