logitude-dashboard-library 1.3.86 → 1.3.89

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/dist/index.js CHANGED
@@ -10,7 +10,7 @@ var overlaypanel = require('primereact/overlaypanel');
10
10
  var progressspinner = require('primereact/progressspinner');
11
11
  var ReactFC = _interopDefault(require('react-fusioncharts'));
12
12
  var FusionCharts = _interopDefault(require('fusioncharts'));
13
- var Column2D = _interopDefault(require('fusioncharts/fusioncharts.charts'));
13
+ var Charts = _interopDefault(require('fusioncharts/fusioncharts.charts'));
14
14
  var FusionTheme = _interopDefault(require('fusioncharts/themes/fusioncharts.theme.fusion'));
15
15
  var useResizeObserver = _interopDefault(require('use-resize-observer'));
16
16
 
@@ -203,51 +203,51 @@ var DashboardAnalyticsService = /*#__PURE__*/function () {
203
203
 
204
204
  var KpiChart = function KpiChart(props) {
205
205
  var _useState = React.useState(false),
206
- isView = _useState[0],
207
- setisView = _useState[1];
206
+ dataLoaded = _useState[0],
207
+ setDataLoaded = _useState[1];
208
208
 
209
- var _useState2 = React.useState(false),
210
- viewError = _useState2[0],
211
- setViewError = _useState2[1];
209
+ var _useState2 = React.useState(),
210
+ error = _useState2[0],
211
+ setError = _useState2[1];
212
212
 
213
- var isLoadingDrow = React.useRef(true);
214
213
  var widget = React.useRef();
215
214
  var widgetRef = React.useRef();
216
- var isDataLoaded = React.useRef(false);
217
215
  var hasDataError = React.useRef(false);
218
216
 
219
- var _useState3 = React.useState(''),
220
- error = _useState3[0],
221
- setEror = _useState3[1];
217
+ var _useState3 = React.useState(),
218
+ data = _useState3[0],
219
+ setData = _useState3[1];
222
220
 
223
221
  var _useState4 = React.useState(),
224
- data = _useState4[0],
225
- setData = _useState4[1];
226
-
227
- var _useState5 = React.useState(),
228
- title = _useState5[0],
229
- setTitle = _useState5[1];
222
+ title = _useState4[0],
223
+ setTitle = _useState4[1];
230
224
 
231
225
  React.useEffect(function () {
226
+ widget.current = props.customChartProps.widget;
227
+ onRefresh();
228
+ }, []);
229
+
230
+ var onRefresh = function onRefresh() {
232
231
  var _props$customChartPro;
233
232
 
234
- setTimeout(function () {
235
- isLoadingDrow.current = false;
236
- updateView();
237
- }, 500);
238
- widget.current = props.customChartProps.widget;
239
233
  (_props$customChartPro = props.customChartProps.dataBinding) === null || _props$customChartPro === void 0 ? void 0 : _props$customChartPro.onEditWidget.subscribe(function (e) {
240
234
  var _widget$current;
241
235
 
242
236
  if (e.key == ((_widget$current = widget.current) === null || _widget$current === void 0 ? void 0 : _widget$current.key)) {
237
+ setDataLoaded(false);
243
238
  Tools.Map(e, widget.current);
244
- RefreshData();
239
+ setTimeout(function () {
240
+ RefreshData();
241
+ }, 500);
245
242
  }
246
243
  });
247
- }, []);
244
+ };
245
+
248
246
  React.useEffect(function () {
249
247
  widgetRef.current = props.customChartProps.widgetRef;
250
- RefreshData();
248
+ setTimeout(function () {
249
+ RefreshData();
250
+ }, 500);
251
251
  }, []);
252
252
  React.useEffect(function () {
253
253
  widgetRef.current = props.customChartProps.widgetRef;
@@ -264,32 +264,16 @@ var KpiChart = function KpiChart(props) {
264
264
  postWidget.onChange = undefined;
265
265
  dashboardAnalyticsService.getKpiData(postWidget).then(function (result) {
266
266
  setData(result.data);
267
- isDataLoaded.current = true;
268
- hasDataError.current = false;
269
- updateView();
267
+ setDataLoaded(true);
270
268
  }, function (error) {
271
269
  var _error$response, _error$response$data, _error$response2, _error$response2$data;
272
270
 
273
271
  console.log('error', error);
274
- if (error !== null && error !== void 0 && (_error$response = error.response) !== null && _error$response !== void 0 && (_error$response$data = _error$response.data) !== null && _error$response$data !== void 0 && _error$response$data.ErrorMessage) setEror(error === null || error === void 0 ? void 0 : (_error$response2 = error.response) === null || _error$response2 === void 0 ? void 0 : (_error$response2$data = _error$response2.data) === null || _error$response2$data === void 0 ? void 0 : _error$response2$data.ErrorMessage);else setEror(error.message);
275
- isDataLoaded.current = true;
276
- hasDataError.current = true;
277
- updateView();
272
+ if (error !== null && error !== void 0 && (_error$response = error.response) !== null && _error$response !== void 0 && (_error$response$data = _error$response.data) !== null && _error$response$data !== void 0 && _error$response$data.ErrorMessage) setError(error === null || error === void 0 ? void 0 : (_error$response2 = error.response) === null || _error$response2 === void 0 ? void 0 : (_error$response2$data = _error$response2.data) === null || _error$response2$data === void 0 ? void 0 : _error$response2$data.ErrorMessage);else setError(error.message);
273
+ setDataLoaded(true);
278
274
  });
279
275
  };
280
276
 
281
- var updateView = function updateView() {
282
- if (isDataLoaded.current && !isLoadingDrow.current && !hasDataError.current) {
283
- setisView(true);
284
- setViewError(false);
285
- }
286
-
287
- if (isDataLoaded.current && !isLoadingDrow.current && hasDataError.current) {
288
- setisView(false);
289
- setViewError(true);
290
- }
291
- };
292
-
293
277
  var kpiClick = function kpiClick() {
294
278
  var _props$customChartPro4, _props$customChartPro5, _props$customChartPro6, _props$customChartPro7, _props$customChartPro8;
295
279
 
@@ -301,7 +285,7 @@ var KpiChart = function KpiChart(props) {
301
285
  });
302
286
  };
303
287
 
304
- return !isView && !viewError ? React__default.createElement("div", {
288
+ return !dataLoaded ? React__default.createElement("div", {
305
289
  className: 'dl-full-hight dl-flex-content-center spinner-custome'
306
290
  }, React__default.createElement(progressspinner.ProgressSpinner, {
307
291
  style: {
@@ -310,7 +294,7 @@ var KpiChart = function KpiChart(props) {
310
294
  },
311
295
  strokeWidth: "4",
312
296
  animationDuration: "2s"
313
- })) : isView ? React__default.createElement("div", {
297
+ })) : !error ? React__default.createElement("div", {
314
298
  className: "kpIcontainer",
315
299
  onClick: kpiClick
316
300
  }, React__default.createElement("div", {
@@ -349,57 +333,229 @@ var CustomChart = function CustomChart(props) {
349
333
  }, project());
350
334
  };
351
335
 
352
- ReactFC.fcRoot(FusionCharts, Column2D, FusionTheme);
353
- var chartData = [{
354
- label: "Venezuela",
355
- value: "290"
356
- }, {
357
- label: "Saudi",
358
- value: "260"
359
- }, {
360
- label: "Canada",
361
- value: "180"
362
- }, {
363
- label: "Iran",
364
- value: "140"
365
- }, {
366
- label: "Russia",
367
- value: "115"
368
- }, {
369
- label: "UAE",
370
- value: "100"
371
- }, {
372
- label: "US",
373
- value: "30"
374
- }, {
375
- label: "China",
376
- value: "30"
377
- }];
378
- var chartConfigs = {
379
- type: "column2d",
380
- width: "100%",
381
- height: "80%",
382
- dataFormat: "json",
383
- dataSource: {
384
- chart: {
385
- caption: "Countries With Most Oil Reserves [2017-18]",
386
- subCaption: "In MMbbl = One Million barrels",
387
- xAxisName: "Country",
388
- yAxisName: "Reserves (MMbbl)",
389
- numberSuffix: "K",
390
- theme: "fusion"
391
- },
392
- data: chartData
336
+ function BuildFusionChartObject(seriesMeasures, props, id) {
337
+ var _props$widget;
338
+
339
+ handelNullLabels(seriesMeasures);
340
+ var defaultChart = getDefaultChartobject(seriesMeasures, props);
341
+
342
+ switch ((_props$widget = props.widget) === null || _props$widget === void 0 ? void 0 : _props$widget.TypeCode) {
343
+ case 'bar':
344
+ return getBarObject(seriesMeasures, defaultChart);
345
+
346
+ case 'line':
347
+ return getLineObject(seriesMeasures, defaultChart);
348
+
349
+ case 'pie':
350
+ return getPieObject(seriesMeasures, defaultChart);
351
+
352
+ case 'donut':
353
+ return getDonutObject(seriesMeasures, defaultChart);
354
+
355
+ default:
356
+ return defaultChart;
393
357
  }
394
- };
358
+ }
359
+
360
+ function handelNullLabels(seriesMeasures) {
361
+ seriesMeasures.forEach(function (element) {
362
+ element.SeriesMeasureVulues.forEach(function (value) {
363
+ if (!value.Label || value.Label == '') value.Label = 'Not defined';
364
+ });
365
+ });
366
+ }
367
+
368
+ function getBarObject(seriesMeasures, chart) {
369
+ chart.type = "scrollbar2d";
370
+ return chart;
371
+ }
372
+
373
+ function getLineObject(seriesMeasures, chart) {
374
+ chart.type = "scrollline2d";
375
+ return chart;
376
+ }
377
+
378
+ function getDonutObject(seriesMeasures, chart) {
379
+ chart.type = "doughnut2d";
380
+ return chart;
381
+ }
382
+
383
+ function getPieObject(seriesMeasures, chart) {
384
+ chart.type = "pie2d";
385
+ return chart;
386
+ }
387
+
388
+ function getDefaultChartobject(seriesMeasures, props, id) {
389
+ var chart = {};
390
+ chart.type = "column2d";
391
+ chart.width = "100%";
392
+ chart.height = "80%";
393
+ chart.dataFormat = "json";
394
+ buildChartDataSource(chart, props, seriesMeasures);
395
+ return chart;
396
+ }
397
+
398
+ function buildChartDataSource(chart, props, seriesMeasures) {
399
+ var _props$widget2, _props$widget3, _props$widget4, _props$widget5;
400
+
401
+ if (!seriesMeasures || !seriesMeasures[0]) return;
402
+ var chartinfo = {
403
+ theme: "fusion",
404
+ scrollHeight: "5",
405
+ scrollWidth: "5",
406
+ scrollPadding: "8",
407
+ flatScrollBars: "1",
408
+ enableSlicing: "0",
409
+ showLegend: ((_props$widget2 = props.widget) === null || _props$widget2 === void 0 ? void 0 : _props$widget2.TypeCode) == "bar" || ((_props$widget3 = props.widget) === null || _props$widget3 === void 0 ? void 0 : _props$widget3.TypeCode) == "line" ? "1" : "0"
410
+ };
411
+
412
+ if (((_props$widget4 = props.widget) === null || _props$widget4 === void 0 ? void 0 : _props$widget4.TypeCode) == "bar" || ((_props$widget5 = props.widget) === null || _props$widget5 === void 0 ? void 0 : _props$widget5.TypeCode) == "line") {
413
+ chart.dataSource = {
414
+ chart: chartinfo,
415
+ categories: buildCategories(seriesMeasures),
416
+ dataset: buildDataSet(seriesMeasures)
417
+ };
418
+ return;
419
+ }
420
+
421
+ chart.dataSource = {
422
+ chart: chartinfo,
423
+ data: buildDataSource(seriesMeasures)
424
+ };
425
+ }
426
+
427
+ function buildDataSource(values) {
428
+ var data = [];
429
+ if (!values || !values[0]) return data;
430
+ data = values[0].SeriesMeasureVulues.map(function (e) {
431
+ return {
432
+ value: e.Value,
433
+ label: e.Label,
434
+ id: {
435
+ GroupById: e.GroupById,
436
+ MeasureFieldId: values[0].MeasureFieldId
437
+ }
438
+ };
439
+ });
440
+ return data;
441
+ }
442
+
443
+ function buildDataSet(seriesMeasures) {
444
+ var dataSet = [];
445
+ var position = 1;
446
+ seriesMeasures.forEach(function (seriesMeasure) {
447
+ var datas = seriesMeasure.SeriesMeasureVulues.map(function (e) {
448
+ return {
449
+ value: e.Value,
450
+ id: {
451
+ GroupById: e.GroupById,
452
+ MeasureFieldId: seriesMeasure.MeasureFieldId
453
+ }
454
+ };
455
+ });
456
+ dataSet.push({
457
+ data: datas,
458
+ seriesname: "series-" + position
459
+ });
460
+ position++;
461
+ });
462
+ return dataSet;
463
+ }
464
+
465
+ function buildCategories(seriesMeasures) {
466
+ var categories = seriesMeasures[0].SeriesMeasureVulues.map(function (e) {
467
+ return {
468
+ label: e.Label
469
+ };
470
+ });
471
+ var result = [];
472
+ result.push({
473
+ category: categories
474
+ });
475
+ return result;
476
+ }
395
477
 
396
- function FusionChartTest() {
397
- var _useState = React.useState({}),
398
- fChart = _useState[0],
399
- setFchart = _useState[1];
478
+ ReactFC.fcRoot(FusionCharts, Charts, FusionTheme);
479
+
480
+ var FusionChart = function FusionChart(props) {
481
+ var _useState = React.useState(false),
482
+ dataLoaded = _useState[0],
483
+ setDataLoaded = _useState[1];
484
+
485
+ var _useState2 = React.useState(),
486
+ error = _useState2[0],
487
+ setError = _useState2[1];
488
+
489
+ var widget = React.useRef();
490
+ var widgetRef = React.useRef();
491
+
492
+ var _useState3 = React.useState({}),
493
+ args = _useState3[0],
494
+ setArgs = _useState3[1];
495
+
496
+ var _useState4 = React.useState({}),
497
+ fChart = _useState4[0],
498
+ setFchart = _useState4[1];
400
499
 
401
500
  var entered = React.useRef(false);
402
501
  var id = (Math.random() + 1).toString(36).substring(7);
502
+ React.useEffect(function () {
503
+ widget.current = props.widget;
504
+ onRefresh();
505
+ }, []);
506
+
507
+ var onRefresh = function onRefresh() {
508
+ var _props$dataBinding;
509
+
510
+ (_props$dataBinding = props.dataBinding) === null || _props$dataBinding === void 0 ? void 0 : _props$dataBinding.onEditWidget.subscribe(function (e) {
511
+ var _widget$current;
512
+
513
+ if (e.key == ((_widget$current = widget.current) === null || _widget$current === void 0 ? void 0 : _widget$current.key)) {
514
+ setDataLoaded(false);
515
+ Tools.Map(e, widget.current);
516
+ setTimeout(function () {
517
+ RefreshData();
518
+ }, 500);
519
+ }
520
+ });
521
+ };
522
+
523
+ React.useEffect(function () {
524
+ widgetRef.current = props.widgetRef;
525
+ setTimeout(function () {
526
+ RefreshData();
527
+ }, 500);
528
+ }, []);
529
+ React.useEffect(function () {
530
+ widgetRef.current = props.widgetRef;
531
+ }, [props.widgetRef]);
532
+
533
+ var RefreshData = function RefreshData() {
534
+ var dashboardAnalyticsService = new DashboardAnalyticsService();
535
+
536
+ var postWidget = _extends({}, widget.current);
537
+
538
+ postWidget.onChange = undefined;
539
+ dashboardAnalyticsService.getData(postWidget).then(function (result) {
540
+ var chart = BuildFusionChartObject(result.data, props);
541
+ setArgs(chart);
542
+ setDataLoaded(true);
543
+ }, function (error) {
544
+ var _error$response, _error$response$data, _error$response2, _error$response2$data;
545
+
546
+ console.log('error', error);
547
+ if (error !== null && error !== void 0 && (_error$response = error.response) !== null && _error$response !== void 0 && (_error$response$data = _error$response.data) !== null && _error$response$data !== void 0 && _error$response$data.ErrorMessage) setError(error === null || error === void 0 ? void 0 : (_error$response2 = error.response) === null || _error$response2 === void 0 ? void 0 : (_error$response2$data = _error$response2.data) === null || _error$response2$data === void 0 ? void 0 : _error$response2$data.ErrorMessage);else setError(error.message);
548
+ setDataLoaded(true);
549
+ });
550
+ };
551
+
552
+ var dataplotClick = function dataplotClick(eventObj, dataObj) {
553
+ props.onSelectDataPoint({
554
+ GroupById: dataObj.id.groupbyid,
555
+ MeasureFieldId: dataObj.id.measurefieldid,
556
+ Widget: props.widget
557
+ });
558
+ };
403
559
 
404
560
  var renderComplete = function renderComplete(chart) {
405
561
  setFchart(chart);
@@ -420,17 +576,36 @@ function FusionChartTest() {
420
576
  }),
421
577
  ref = _useResizeObserver.ref;
422
578
 
423
- return React__default.createElement("div", {
579
+ return !dataLoaded ? React__default.createElement("div", {
580
+ className: 'dl-full-hight dl-flex-content-center spinner-custome'
581
+ }, React__default.createElement(progressspinner.ProgressSpinner, {
582
+ style: {
583
+ width: '100px',
584
+ height: '100px'
585
+ },
586
+ strokeWidth: "4",
587
+ animationDuration: "2s"
588
+ })) : !error ? React__default.createElement("div", {
424
589
  className: 'db-fc-container',
425
590
  ref: ref,
426
591
  id: id
427
- }, React__default.createElement(ReactFC, Object.assign({}, chartConfigs, {
592
+ }, React__default.createElement(ReactFC, Object.assign({}, args, {
593
+ "fcEvent-dataplotClick": dataplotClick,
428
594
  onRender: renderComplete
429
- })));
430
- }
595
+ }))) : React__default.createElement("div", {
596
+ className: "dl-flex-content-center dl-full-hight "
597
+ }, React__default.createElement("div", {
598
+ className: "dl-tooltip"
599
+ }, React__default.createElement("img", {
600
+ width: 100,
601
+ src: "https://www.seekpng.com/png/full/334-3345964_error-icon-png.png"
602
+ }), React__default.createElement("span", {
603
+ className: "dl-tooltiptext"
604
+ }, error)));
605
+ };
431
606
 
432
607
  var WidgetCard = function WidgetCard(props, state) {
433
- var _props$widget2;
608
+ var _props$widget, _props$widget2, _props$widget4;
434
609
 
435
610
  var moreBtnToggle = React.useRef(null);
436
611
 
@@ -448,7 +623,7 @@ var WidgetCard = function WidgetCard(props, state) {
448
623
  style: {
449
624
  paddingLeft: "5px"
450
625
  }
451
- }, React__default.createElement("h1", null), props.isInEditMode ? React__default.createElement(button.Button, {
626
+ }, React__default.createElement("h1", null, (props === null || props === void 0 ? void 0 : (_props$widget = props.widget) === null || _props$widget === void 0 ? void 0 : _props$widget.TypeCode) == "kpi" ? null : (_props$widget2 = props.widget) === null || _props$widget2 === void 0 ? void 0 : _props$widget2.Title), props.isInEditMode ? React__default.createElement(button.Button, {
452
627
  icon: "pi pi-ellipsis-v",
453
628
  className: "p-button-lg p-button-rounded p-button-text",
454
629
  onClick: function onClick(e) {
@@ -465,18 +640,23 @@ var WidgetCard = function WidgetCard(props, state) {
465
640
  onClick: editWidget
466
641
  }, " Edit "), React__default.createElement("div", {
467
642
  onClick: function onClick() {
468
- var _props$widget;
643
+ var _props$widget3;
469
644
 
470
- return props.deleteBtnClicked((_props$widget = props.widget) === null || _props$widget === void 0 ? void 0 : _props$widget.key);
645
+ return props.deleteBtnClicked((_props$widget3 = props.widget) === null || _props$widget3 === void 0 ? void 0 : _props$widget3.key);
471
646
  }
472
647
  }, "Remove")))), React__default.createElement("div", {
473
648
  className: "dl-dashboard-widget"
474
- }, (props === null || props === void 0 ? void 0 : (_props$widget2 = props.widget) === null || _props$widget2 === void 0 ? void 0 : _props$widget2.TypeCode) == "kpi" ? React__default.createElement(CustomChart, {
649
+ }, (props === null || props === void 0 ? void 0 : (_props$widget4 = props.widget) === null || _props$widget4 === void 0 ? void 0 : _props$widget4.TypeCode) == "kpi" ? React__default.createElement(CustomChart, {
650
+ dataBinding: props.dataBinding,
651
+ widget: props.widget,
652
+ widgetRef: props.widgetRef,
653
+ onSelectDataPoint: props.onSelectDataPoint
654
+ }) : React__default.createElement(FusionChart, {
475
655
  dataBinding: props.dataBinding,
476
656
  widget: props.widget,
477
657
  widgetRef: props.widgetRef,
478
658
  onSelectDataPoint: props.onSelectDataPoint
479
- }) : React__default.createElement(FusionChartTest, null)));
659
+ })));
480
660
  };
481
661
 
482
662
  function deepClone(obj) {