@esfaenza/es-charts 11.2.18 → 11.2.19
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/bundles/esfaenza-es-charts.umd.js +70 -31
- package/bundles/esfaenza-es-charts.umd.js.map +1 -1
- package/bundles/esfaenza-es-charts.umd.min.js +1 -1
- package/bundles/esfaenza-es-charts.umd.min.js.map +1 -1
- package/esfaenza-es-charts.metadata.json +1 -1
- package/esm2015/lib/components/base/base-chart.component.js +8 -1
- package/esm2015/lib/services/classes/LineChartService.js +64 -32
- package/fesm2015/esfaenza-es-charts.js +70 -31
- package/fesm2015/esfaenza-es-charts.js.map +1 -1
- package/lib/components/base/base-chart.component.d.ts +4 -0
- package/lib/services/classes/LineChartService.d.ts +4 -0
- package/package.json +1 -1
|
@@ -1371,6 +1371,13 @@
|
|
|
1371
1371
|
});
|
|
1372
1372
|
this.Dispatcher.register(this.name, function () { return _this.loadChart(); });
|
|
1373
1373
|
};
|
|
1374
|
+
/**
|
|
1375
|
+
* Permette di aggiungere un blocco di dati in maniera "live" ad un grafico
|
|
1376
|
+
*/
|
|
1377
|
+
BaseChartComponent.prototype.addData = function (chartData) {
|
|
1378
|
+
this.ChartService.refreshData(chartData);
|
|
1379
|
+
};
|
|
1380
|
+
;
|
|
1374
1381
|
/**
|
|
1375
1382
|
* Funzione che si occupa di caricare i temi necessari per il grafico in oggetto. Prima applica il tema, poi, se serve, applica le animazioni
|
|
1376
1383
|
*/
|
|
@@ -1455,6 +1462,8 @@
|
|
|
1455
1462
|
this.DataGroupBucketSize = 1500;
|
|
1456
1463
|
/** @ignore */
|
|
1457
1464
|
this.OpacityOnSelected = 0.3;
|
|
1465
|
+
/** @ignore */
|
|
1466
|
+
this.singleDataSet = false;
|
|
1458
1467
|
//******************** Funzione di throttling per non spammare richieste in caso di animazioni attivate
|
|
1459
1468
|
//TODO: spostarla in un metodo di utilità (esfaenza/extensions)
|
|
1460
1469
|
/** @ignore */
|
|
@@ -1468,7 +1477,7 @@
|
|
|
1468
1477
|
var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k;
|
|
1469
1478
|
var dataConverted = this.Adapter ? this.Adapter.adaptDataForLineChart(data) : data;
|
|
1470
1479
|
var threshold = (_a = settings.DataGroupingThreshold) !== null && _a !== void 0 ? _a : 3000;
|
|
1471
|
-
|
|
1480
|
+
this.singleDataSet = (_b = settings.MergeDatasets) !== null && _b !== void 0 ? _b : false;
|
|
1472
1481
|
var showTicks = settings.ShowTicks == null ? true : settings === null || settings === void 0 ? void 0 : settings.ShowTicks;
|
|
1473
1482
|
var dataShouldBeGrouped = Math.max.apply(Math, __spread(dataConverted.series.map(function (t) { return t.values.length; }))) > threshold;
|
|
1474
1483
|
var showTimeline = settings.Timeline || dataShouldBeGrouped;
|
|
@@ -1547,31 +1556,9 @@
|
|
|
1547
1556
|
var seriesColors = [];
|
|
1548
1557
|
var defaultIndex = 0;
|
|
1549
1558
|
//-- Generazione di un unico dataset invece che N, per poter gestire un unico tooltip
|
|
1550
|
-
if (singleDataSet) {
|
|
1551
|
-
|
|
1552
|
-
|
|
1553
|
-
for (var i = 0; i < vs.values.length; i++) {
|
|
1554
|
-
var dataitem = vs.values[i];
|
|
1555
|
-
var indexer = new Date(dataitem.d).valueOf();
|
|
1556
|
-
if (!dto_1[indexer])
|
|
1557
|
-
dto_1[indexer] = {};
|
|
1558
|
-
dto_1[indexer]['v' + index] = dataitem.v;
|
|
1559
|
-
}
|
|
1560
|
-
});
|
|
1561
|
-
var dates = Object.keys(dto_1);
|
|
1562
|
-
var singleDS = [];
|
|
1563
|
-
for (var i = 0; i < dates.length; i++) {
|
|
1564
|
-
var values = dto_1[dates[i]];
|
|
1565
|
-
var item = { d: new Date(parseInt(dates[i])) };
|
|
1566
|
-
var vals = Object.keys(values);
|
|
1567
|
-
for (var ii = 0; ii < vals.length; ii++) {
|
|
1568
|
-
var series = vals[ii];
|
|
1569
|
-
var singleVal = values[series];
|
|
1570
|
-
item[series] = singleVal;
|
|
1571
|
-
}
|
|
1572
|
-
singleDS.push(item);
|
|
1573
|
-
}
|
|
1574
|
-
this.ChartInstance.data = singleDS;
|
|
1559
|
+
if (this.singleDataSet) {
|
|
1560
|
+
this.ChartInstance.data = this.generateSingleDataset(dataConverted);
|
|
1561
|
+
;
|
|
1575
1562
|
dateAxis.cursorTooltipEnabled = false;
|
|
1576
1563
|
}
|
|
1577
1564
|
//-- Fine generazione
|
|
@@ -1595,14 +1582,14 @@
|
|
|
1595
1582
|
s.values.sort(function (d1, d2) { return d1.d.getTime() - d2.d.getTime(); });
|
|
1596
1583
|
var fill = s.fill != null && s.fill != undefined ? s.fill : ((_a = settings === null || settings === void 0 ? void 0 : settings.Fill) !== null && _a !== void 0 ? _a : false);
|
|
1597
1584
|
var series = (settings === null || settings === void 0 ? void 0 : settings.Step) ? new am4charts__namespace.StepLineSeries() : new am4charts__namespace.LineSeries();
|
|
1598
|
-
series.dataFields.valueY = "v" + (singleDataSet ? index : "");
|
|
1585
|
+
series.dataFields.valueY = "v" + (_this.singleDataSet ? index : "");
|
|
1599
1586
|
series.dataFields.dateX = "d";
|
|
1600
1587
|
series.dataFields.measureUnit = s.uom;
|
|
1601
1588
|
series.name = s.name;
|
|
1602
1589
|
series.strokeWidth = (_b = settings === null || settings === void 0 ? void 0 : settings.StrokeSize) !== null && _b !== void 0 ? _b : 1;
|
|
1603
1590
|
series.connect = !gapsAllowed;
|
|
1604
1591
|
series.minBulletDistance = 10;
|
|
1605
|
-
series.tooltipText = singleDataSet ? "" : "{name}: [bold]{valueY}[/]";
|
|
1592
|
+
series.tooltipText = _this.singleDataSet ? "" : "{name}: [bold]{valueY}[/]";
|
|
1606
1593
|
series.tooltip.pointerOrientation = "vertical";
|
|
1607
1594
|
series.tooltip.background.fillOpacity = 0.5;
|
|
1608
1595
|
series.tooltip.label.padding(12, 12, 12, 12);
|
|
@@ -1610,7 +1597,7 @@
|
|
|
1610
1597
|
series.stacked = fill;
|
|
1611
1598
|
//Dataset singolo, i dati sono registrati a livello di chart, creo il tooltip che permette di vederli tutti insieme
|
|
1612
1599
|
//altrimenti assegno i dati della serie direttamente alla serie
|
|
1613
|
-
if (singleDataSet) {
|
|
1600
|
+
if (_this.singleDataSet) {
|
|
1614
1601
|
series.tooltip.getFillFromObject = false;
|
|
1615
1602
|
series.tooltip.background.fill = am4core__namespace.color("#eee");
|
|
1616
1603
|
series.tooltip.label.fill = am4core__namespace.color("#00");
|
|
@@ -1700,7 +1687,7 @@
|
|
|
1700
1687
|
//******************************************************************************************************************************
|
|
1701
1688
|
this.ChartInstance.cursor.xAxis = dateAxis;
|
|
1702
1689
|
this.ChartInstance.cursor.yAxis = yAxis;
|
|
1703
|
-
if (singleDataSet)
|
|
1690
|
+
if (this.singleDataSet)
|
|
1704
1691
|
this.ChartInstance.cursor.maxTooltipDistance = -1;
|
|
1705
1692
|
//TODO: Cercare di capire perché è figlio di puttana......
|
|
1706
1693
|
dateAxis.events.on("startchanged", function (t) { return _this.emitSelectionChanged(t, settings); });
|
|
@@ -1709,7 +1696,59 @@
|
|
|
1709
1696
|
};
|
|
1710
1697
|
/** @ignore */
|
|
1711
1698
|
LineChartService.prototype.refreshData = function (data) {
|
|
1712
|
-
|
|
1699
|
+
var dataConverted = this.Adapter ? this.Adapter.adaptDataForLineChart(data) : data;
|
|
1700
|
+
if (this.singleDataSet) {
|
|
1701
|
+
var data = this.generateSingleDataset(dataConverted);
|
|
1702
|
+
this.ChartInstance.addData(data);
|
|
1703
|
+
return;
|
|
1704
|
+
}
|
|
1705
|
+
this.ChartInstance.series.each(function (s) {
|
|
1706
|
+
var relativeSerie = dataConverted.series.find(function (t) { return t.name == s.name; });
|
|
1707
|
+
// Una serie del grafico è stata ggiornata, ordino i datapoint e li aggiungo
|
|
1708
|
+
var correctOrder = true;
|
|
1709
|
+
var prevDate = null;
|
|
1710
|
+
for (var v = 0; v < relativeSerie.values.length; v++) {
|
|
1711
|
+
if (!prevDate)
|
|
1712
|
+
prevDate = relativeSerie.values[v].d;
|
|
1713
|
+
else if (relativeSerie.values[v].d < prevDate) {
|
|
1714
|
+
correctOrder = false;
|
|
1715
|
+
break;
|
|
1716
|
+
}
|
|
1717
|
+
}
|
|
1718
|
+
if (!correctOrder)
|
|
1719
|
+
relativeSerie.values.sort(function (d1, d2) { return d1.d.getTime() - d2.d.getTime(); });
|
|
1720
|
+
for (var v = 0; v < relativeSerie.values.length; v++) {
|
|
1721
|
+
var obj = relativeSerie.values[v];
|
|
1722
|
+
s.addData({ date: obj.d, value: obj.v });
|
|
1723
|
+
}
|
|
1724
|
+
});
|
|
1725
|
+
};
|
|
1726
|
+
/** Partendo da dati divisi per seriue genera un dataset unito con la data come chiave e i vari valori dopo */
|
|
1727
|
+
LineChartService.prototype.generateSingleDataset = function (data) {
|
|
1728
|
+
var dto = {};
|
|
1729
|
+
data.series.forEach(function (vs, index) {
|
|
1730
|
+
for (var i = 0; i < vs.values.length; i++) {
|
|
1731
|
+
var dataitem = vs.values[i];
|
|
1732
|
+
var indexer = new Date(dataitem.d).valueOf();
|
|
1733
|
+
if (!dto[indexer])
|
|
1734
|
+
dto[indexer] = {};
|
|
1735
|
+
dto[indexer]['v' + index] = dataitem.v;
|
|
1736
|
+
}
|
|
1737
|
+
});
|
|
1738
|
+
var dates = Object.keys(dto);
|
|
1739
|
+
var ret = [];
|
|
1740
|
+
for (var i = 0; i < dates.length; i++) {
|
|
1741
|
+
var values = dto[dates[i]];
|
|
1742
|
+
var item = { d: new Date(parseInt(dates[i])) };
|
|
1743
|
+
var vals = Object.keys(values);
|
|
1744
|
+
for (var ii = 0; ii < vals.length; ii++) {
|
|
1745
|
+
var series = vals[ii];
|
|
1746
|
+
var singleVal = values[series];
|
|
1747
|
+
item[series] = singleVal;
|
|
1748
|
+
}
|
|
1749
|
+
ret.push(item);
|
|
1750
|
+
}
|
|
1751
|
+
return ret;
|
|
1713
1752
|
};
|
|
1714
1753
|
/** @ignore */
|
|
1715
1754
|
LineChartService.prototype.emitSelectionChanged = function (ev, settings) {
|