mirror of
https://github.com/ntop/ntopng.git
synced 2026-05-02 17:00:10 +00:00
66 lines
No EOL
1.9 KiB
JavaScript
66 lines
No EOL
1.9 KiB
JavaScript
import { ChartTemplate } from './default-template.js';
|
|
|
|
export default class PieChartTemplate extends ChartTemplate {
|
|
|
|
constructor(params) {
|
|
super(params);
|
|
this._isDonut = false;
|
|
console.log(this);
|
|
}
|
|
|
|
_addGraph() {
|
|
|
|
const self = this;
|
|
nv.addGraph(function() {
|
|
|
|
const pieChart = nv.models.pieChart();
|
|
|
|
pieChart.x(d => d.label);
|
|
pieChart.y(d => d.value);
|
|
pieChart.height(self._height);
|
|
pieChart.width(self._width);
|
|
pieChart.showTooltipPercent(true);
|
|
pieChart.donut(self._isDonut);
|
|
pieChart.labelType("percent");
|
|
|
|
d3.select(`#${self._defaultOptions.domId}`)
|
|
.append('b')
|
|
.text(self._defaultOptions.widget.widgetFetchedData.title);
|
|
|
|
d3.select(`#${self._defaultOptions.domId}`)
|
|
.append('svg')
|
|
.datum(self._data.data)
|
|
.transition()
|
|
.duration(1750)
|
|
.call(pieChart);
|
|
|
|
if (self._defaultOptions.widget.intervalTime) {
|
|
self._intervalId = setInterval(async function() {
|
|
const newData = await self._updateData();
|
|
self._data = newData.data;
|
|
d3.select(`#${self._defaultOptions.domId}>svg`)
|
|
.datum(newData.data)
|
|
.transition()
|
|
.duration(1750)
|
|
.call(pieChart);
|
|
}, self._defaultOptions.widget.intervalTime);
|
|
}
|
|
|
|
self._chart = pieChart;
|
|
return pieChart;
|
|
});
|
|
}
|
|
|
|
render() {
|
|
|
|
const container = super.render();
|
|
/* if I have no data to show then don't add the graph! */
|
|
if (this._data.length != 0) {
|
|
container.setAttribute('style', `width:${this._width}px;height:${this._width}px`);
|
|
this._addGraph();
|
|
}
|
|
|
|
return container;
|
|
}
|
|
|
|
} |