logitude-dashboard-library 1.3.86 → 1.3.87

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
 
@@ -349,57 +349,248 @@ var CustomChart = function CustomChart(props) {
349
349
  }, project());
350
350
  };
351
351
 
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
352
+ function BuildFusionChartObject(seriesMeasures, props, id) {
353
+ var _props$widget;
354
+
355
+ handelNullLabels(seriesMeasures);
356
+ var defaultChart = getDefaultChartobject(seriesMeasures, props);
357
+
358
+ switch ((_props$widget = props.widget) === null || _props$widget === void 0 ? void 0 : _props$widget.TypeCode) {
359
+ case 'bar':
360
+ return getBarObject(seriesMeasures, defaultChart);
361
+
362
+ case 'line':
363
+ return getLineObject(seriesMeasures, defaultChart);
364
+
365
+ case 'pie':
366
+ return getPieObject(seriesMeasures, defaultChart);
367
+
368
+ case 'donut':
369
+ return getDonutObject(seriesMeasures, defaultChart);
370
+
371
+ default:
372
+ return defaultChart;
393
373
  }
394
- };
374
+ }
375
+
376
+ function handelNullLabels(seriesMeasures) {
377
+ seriesMeasures.forEach(function (element) {
378
+ element.SeriesMeasureVulues.forEach(function (value) {
379
+ if (!value.Label || value.Label == '') value.Label = 'Not defined';
380
+ });
381
+ });
382
+ }
383
+
384
+ function getBarObject(seriesMeasures, chart) {
385
+ chart.type = "scrollbar2d";
386
+ return chart;
387
+ }
388
+
389
+ function getLineObject(seriesMeasures, chart) {
390
+ chart.type = "scrollline2d";
391
+ return chart;
392
+ }
393
+
394
+ function getDonutObject(seriesMeasures, chart) {
395
+ chart.type = "doughnut2d";
396
+ return chart;
397
+ }
395
398
 
396
- function FusionChartTest() {
397
- var _useState = React.useState({}),
398
- fChart = _useState[0],
399
- setFchart = _useState[1];
399
+ function getPieObject(seriesMeasures, chart) {
400
+ chart.type = "pie2d";
401
+ return chart;
402
+ }
403
+
404
+ function getDefaultChartobject(seriesMeasures, props, id) {
405
+ var chart = {};
406
+ chart.type = "column2d";
407
+ chart.width = "100%";
408
+ chart.height = "80%";
409
+ chart.dataFormat = "json";
410
+ buildChartDataSource(chart, props, seriesMeasures);
411
+ return chart;
412
+ }
413
+
414
+ function buildChartDataSource(chart, props, seriesMeasures) {
415
+ var _props$widget2, _props$widget3, _props$widget4;
416
+
417
+ if (!seriesMeasures || !seriesMeasures[0]) return;
418
+ var chartinfo = {
419
+ caption: (_props$widget2 = props.widget) === null || _props$widget2 === void 0 ? void 0 : _props$widget2.Title,
420
+ theme: "fusion",
421
+ scrollHeight: "5",
422
+ scrollWidth: "5",
423
+ scrollPadding: "8",
424
+ flatScrollBars: "1",
425
+ enableSlicing: "0",
426
+ showLegend: "0"
427
+ };
428
+
429
+ if (((_props$widget3 = props.widget) === null || _props$widget3 === void 0 ? void 0 : _props$widget3.TypeCode) == "bar" || ((_props$widget4 = props.widget) === null || _props$widget4 === void 0 ? void 0 : _props$widget4.TypeCode) == "line") {
430
+ chart.dataSource = {
431
+ chart: chartinfo,
432
+ categories: buildCategories(seriesMeasures),
433
+ dataset: buildDataSet(seriesMeasures)
434
+ };
435
+ return;
436
+ }
437
+
438
+ chart.dataSource = {
439
+ chart: chartinfo,
440
+ data: buildDataSource(seriesMeasures)
441
+ };
442
+ }
443
+
444
+ function buildDataSource(values) {
445
+ var data = [];
446
+ if (!values || !values[0]) return data;
447
+ data = values[0].SeriesMeasureVulues.map(function (e) {
448
+ return {
449
+ value: e.Value,
450
+ label: e.Label,
451
+ id: {
452
+ GroupById: e.GroupById,
453
+ MeasureFieldId: values[0].MeasureFieldId
454
+ }
455
+ };
456
+ });
457
+ return data;
458
+ }
459
+
460
+ function buildDataSet(seriesMeasures) {
461
+ var dataSet = [];
462
+ var position = 1;
463
+ seriesMeasures.forEach(function (seriesMeasure) {
464
+ var datas = seriesMeasure.SeriesMeasureVulues.map(function (e) {
465
+ return {
466
+ value: e.Value,
467
+ id: {
468
+ GroupById: e.GroupById,
469
+ MeasureFieldId: seriesMeasure.MeasureFieldId
470
+ }
471
+ };
472
+ });
473
+ dataSet.push({
474
+ data: datas,
475
+ seriesname: "series-" + position
476
+ });
477
+ position++;
478
+ });
479
+ return dataSet;
480
+ }
481
+
482
+ function buildCategories(seriesMeasures) {
483
+ var categories = seriesMeasures[0].SeriesMeasureVulues.map(function (e) {
484
+ return {
485
+ label: e.Label
486
+ };
487
+ });
488
+ var result = [];
489
+ result.push({
490
+ category: categories
491
+ });
492
+ return result;
493
+ }
494
+
495
+ ReactFC.fcRoot(FusionCharts, Charts, FusionTheme);
496
+
497
+ var FusionChart = function FusionChart(props) {
498
+ var _useState = React.useState(false),
499
+ isView = _useState[0],
500
+ setisView = _useState[1];
501
+
502
+ var _useState2 = React.useState(false),
503
+ viewError = _useState2[0],
504
+ setViewError = _useState2[1];
505
+
506
+ var isLoadingDrow = React.useRef(true);
507
+ var widget = React.useRef();
508
+ var widgetRef = React.useRef();
509
+ var isDataLoaded = React.useRef(false);
510
+ var hasDataError = React.useRef(false);
511
+
512
+ var _useState3 = React.useState(''),
513
+ error = _useState3[0],
514
+ setError = _useState3[1];
515
+
516
+ var _useState4 = React.useState({}),
517
+ args = _useState4[0],
518
+ setArgs = _useState4[1];
519
+
520
+ var _useState5 = React.useState({}),
521
+ fChart = _useState5[0],
522
+ setFchart = _useState5[1];
400
523
 
401
524
  var entered = React.useRef(false);
402
525
  var id = (Math.random() + 1).toString(36).substring(7);
526
+ React.useEffect(function () {
527
+ var _props$dataBinding;
528
+
529
+ setTimeout(function () {
530
+ isLoadingDrow.current = false;
531
+ updateView();
532
+ }, 500);
533
+ widget.current = props.widget;
534
+ (_props$dataBinding = props.dataBinding) === null || _props$dataBinding === void 0 ? void 0 : _props$dataBinding.onEditWidget.subscribe(function (e) {
535
+ var _widget$current;
536
+
537
+ if (e.key == ((_widget$current = widget.current) === null || _widget$current === void 0 ? void 0 : _widget$current.key)) {
538
+ Tools.Map(e, widget.current);
539
+ RefreshData();
540
+ }
541
+ });
542
+ }, []);
543
+
544
+ var updateView = function updateView() {
545
+ if (isDataLoaded.current && !isLoadingDrow.current && !hasDataError.current) {
546
+ setisView(true);
547
+ setViewError(false);
548
+ }
549
+
550
+ if (isDataLoaded.current && !isLoadingDrow.current && hasDataError.current) {
551
+ setisView(false);
552
+ setViewError(true);
553
+ }
554
+ };
555
+
556
+ React.useEffect(function () {
557
+ widgetRef.current = props.widgetRef;
558
+ RefreshData();
559
+ }, []);
560
+ React.useEffect(function () {
561
+ widgetRef.current = props.widgetRef;
562
+ }, [props.widgetRef]);
563
+
564
+ var RefreshData = function RefreshData() {
565
+ var dashboardAnalyticsService = new DashboardAnalyticsService();
566
+
567
+ var postWidget = _extends({}, widget.current);
568
+
569
+ postWidget.onChange = undefined;
570
+ dashboardAnalyticsService.getData(postWidget).then(function (result) {
571
+ updateView();
572
+ var chart = BuildFusionChartObject(result.data, props);
573
+ setArgs(chart);
574
+ isDataLoaded.current = true;
575
+ hasDataError.current = false;
576
+ }, function (error) {
577
+ var _error$response, _error$response$data, _error$response2, _error$response2$data;
578
+
579
+ console.log('error', error);
580
+ 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);
581
+ isDataLoaded.current = true;
582
+ hasDataError.current = true;
583
+ updateView();
584
+ });
585
+ };
586
+
587
+ var dataplotClick = function dataplotClick(eventObj, dataObj) {
588
+ props.onSelectDataPoint({
589
+ GroupById: dataObj.id.groupbyid,
590
+ MeasureFieldId: dataObj.id.measurefieldid,
591
+ Widget: props.widget
592
+ });
593
+ };
403
594
 
404
595
  var renderComplete = function renderComplete(chart) {
405
596
  setFchart(chart);
@@ -420,14 +611,32 @@ function FusionChartTest() {
420
611
  }),
421
612
  ref = _useResizeObserver.ref;
422
613
 
423
- return React__default.createElement("div", {
614
+ return !isView && !viewError ? React__default.createElement("div", {
615
+ className: 'dl-full-hight dl-flex-content-center spinner-custome'
616
+ }, React__default.createElement(progressspinner.ProgressSpinner, {
617
+ style: {
618
+ width: '100px',
619
+ height: '100px'
620
+ },
621
+ strokeWidth: "4",
622
+ animationDuration: "2s"
623
+ })) : isView ? React__default.createElement("div", {
424
624
  className: 'db-fc-container',
425
- ref: ref,
426
- id: id
427
- }, React__default.createElement(ReactFC, Object.assign({}, chartConfigs, {
625
+ ref: ref
626
+ }, React__default.createElement(ReactFC, Object.assign({}, args, {
627
+ "fcEvent-dataplotClick": dataplotClick,
428
628
  onRender: renderComplete
429
- })));
430
- }
629
+ }))) : React__default.createElement("div", {
630
+ className: "dl-flex-content-center dl-full-hight "
631
+ }, React__default.createElement("div", {
632
+ className: "dl-tooltip"
633
+ }, React__default.createElement("img", {
634
+ width: 100,
635
+ src: "https://www.seekpng.com/png/full/334-3345964_error-icon-png.png"
636
+ }), React__default.createElement("span", {
637
+ className: "dl-tooltiptext"
638
+ }, error)));
639
+ };
431
640
 
432
641
  var WidgetCard = function WidgetCard(props, state) {
433
642
  var _props$widget2;
@@ -476,7 +685,12 @@ var WidgetCard = function WidgetCard(props, state) {
476
685
  widget: props.widget,
477
686
  widgetRef: props.widgetRef,
478
687
  onSelectDataPoint: props.onSelectDataPoint
479
- }) : React__default.createElement(FusionChartTest, null)));
688
+ }) : React__default.createElement(FusionChart, {
689
+ dataBinding: props.dataBinding,
690
+ widget: props.widget,
691
+ widgetRef: props.widgetRef,
692
+ onSelectDataPoint: props.onSelectDataPoint
693
+ })));
480
694
  };
481
695
 
482
696
  function deepClone(obj) {
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":["../src/services/tools.ts","../src/services/ApiServices.ts","../src/services/DashboardAnalyticsService.ts","../src/features/Dashboard/ChartsComponents/CustomCharts/KpiChart.tsx","../src/features/Dashboard/ChartsComponents/CustomCharts/CustomChart.tsx","../src/features/Dashboard/ChartsComponents/FusionChartTest.tsx","../src/features/Dashboard/WidgetCard.tsx","../src/services/clone.ts","../src/features/Dashboard/DashboardDesigner.tsx","../src/index.tsx"],"sourcesContent":["export class Tools {\r\n public static GetLogitudeURL() {\r\n\r\n var logitude_url = location.href.replace('index.html', '');\r\n\r\n if (location.href.indexOf('localhost') > -1) {\r\n logitude_url = 'http://localhost:9996';//localhost:9996//';//\r\n }\r\n\r\n else {\r\n var urlArr = location.href.split(\"/index.html\");\r\n var url = urlArr[0];\r\n url = url.replace(url.substring(url.lastIndexOf('/'), url.length), \"\");\r\n logitude_url = url;\r\n }\r\n\r\n return logitude_url;\r\n }\r\n\r\n public static Map(from: any, to: any) {\r\n if (!from)\r\n return;\r\n if (!to)\r\n to = {};\r\n var keys = Object.keys(from);\r\n for (const k of keys) {\r\n if(from[k]){\r\n to[k] = from[k];\r\n }\r\n }\r\n }\r\n}","import axios from \"axios\";\r\nimport { ApiQueryFilters } from \"../common/data-contracts/ApiQueryFilter\";\r\nimport { APIResult } from \"../types/APIResult\";\r\nimport { Tools } from './tools';\r\n\r\n\r\nexport class ApiServices{ \r\n private _apiUrl: string;\r\n constructor(){\r\n this._apiUrl = Tools.GetLogitudeURL() ;\r\n }\r\n getByFilters<T>(api,filters: ApiQueryFilters) {\r\n \r\n let token: string = this.getTokenFromStorage();\r\n\t\tvar apiURL = `${this._apiUrl}${api}`;\r\n\t\tapiURL = this.ConcatFiltersToURL(filters, apiURL);\r\n\r\n return axios.get<APIResult<T>>(apiURL, { headers: { 'Content-Type': 'application/json', 'Token': token } });\r\n }\r\n get<T>(api) {\r\n \r\n let token: string = this.getTokenFromStorage();\r\n\t\tvar apiURL = `${this._apiUrl}${api}`;\r\n return axios.get<T>(apiURL, { headers: { 'Content-Type': 'application/json', 'Token': token } });\r\n }\r\n post<T>(api,date){\r\n let token: string = this.getTokenFromStorage();\r\n\t\tvar apiURL = `${this._apiUrl}${api}`;\r\n return axios.post<T>(apiURL,date, { headers: { 'Content-Type': 'application/json', 'Token': token } });\r\n }\r\n\r\n getTokenFromStorage(){\r\n return window.localStorage.getItem(\"token\") || '';\r\n }\r\n private ConcatFiltersToURL(filters: ApiQueryFilters, urlparameters: string)\r\n {\r\n var mykeys = Object.keys(filters);\r\n var addtionalFiltersValues: string | null = null;\r\n\r\n for (var i in mykeys) {\r\n var propName = mykeys[i];\r\n var propValue = filters[propName];\r\n var ignoreFilter = ((propName.indexOf(\"Operator\") > 0 && propValue == \"Equals\") || propName == \"AdditionalFilters\");\r\n\r\n if (urlparameters != \"?\") {\r\n urlparameters = urlparameters.concat('&');\r\n }\r\n\r\n if (!ignoreFilter) {\r\n propValue = propValue ? encodeURIComponent(propValue) : '';\r\n urlparameters = urlparameters.concat(propName.concat('=').concat(propValue));\r\n }\r\n\r\n if (propName == \"AdditionalFilters\" && propValue.length > 0) {\r\n addtionalFiltersValues = JSON.stringify(propValue);\r\n }\r\n }\r\n\r\n if (addtionalFiltersValues) {\r\n urlparameters = urlparameters.concat(\"&AdditionalFilters=\").concat(addtionalFiltersValues);\r\n }\r\n return urlparameters;\r\n }\r\n}","import axios from \"axios\";\r\nimport { ApiQueryFilters } from \"../common/data-contracts/ApiQueryFilter\";\r\nimport { ReactDashboardPM } from \"../types/Dashboard\";\r\nimport { SeriesMeasure } from \"../types/SeriesMeasure\";\r\nimport { ApiServices } from \"./ApiServices\";\r\nimport { Tools } from './tools';\r\nimport { ReactWidgetPM } from '../types/widget';\r\nimport { KpiChart } from \"../types/KpiChart\";\r\n\r\n\r\nexport class DashboardAnalyticsService{ \r\n _ApiServices:ApiServices;\r\n controller = 'DashboardAnalytics';\r\n constructor(){\r\n this._ApiServices = new ApiServices();\r\n }\r\n \r\n\r\n getData(widget: ReactWidgetPM) {\r\n return this._ApiServices.post<SeriesMeasure[]>(`/api/${this.controller}/PostGetDataAnalytic`,widget);\r\n }\r\n\r\n getKpiData(widget: ReactWidgetPM) {\r\n return this._ApiServices.post<KpiChart>(`/api/${this.controller}/PostGetKpiData`,widget);\r\n }\r\n \r\n \r\n}","import { ProgressSpinner } from \"primereact/progressspinner\";\r\nimport React, { useEffect, useRef, useState } from \"react\";\r\nimport { DashboardAnalyticsService } from \"../../../../services/DashboardAnalyticsService\";\r\nimport { Tools } from \"../../../../services/tools\";\r\nimport { DashboardDataBinding } from \"../../../../types/DashboardDataBinding\";\r\nimport { KpiChart } from \"../../../../types/KpiChart\";\r\nimport { DataPointSelection } from \"../../../../types/SeriesMeasure\";\r\nimport { ReactWidgetPM } from \"../../../../types/widget\";\r\nimport { CustomChartProps } from \"./CustomChart\";\r\n\r\ntype KpiChartProps = {\r\n customChartProps: CustomChartProps;\r\n};\r\nconst KpiChart = (props: KpiChartProps) => {\r\n const [isView, setisView] = useState<boolean>(false);\r\n const [viewError, setViewError] = useState<boolean>(false);\r\n const isLoadingDrow = useRef(true);\r\n const widget = useRef<ReactWidgetPM>();\r\n const widgetRef = useRef<ReactWidgetPM>();\r\n const isDataLoaded = useRef<boolean>(false);\r\n const hasDataError = useRef<boolean>(false);\r\n const [error, setEror] = useState<string>('');\r\n const [data, setData] = useState<KpiChart>();\r\n const [title, setTitle] = useState<string>();\r\n\r\n useEffect(() => {\r\n setTimeout(function () {\r\n isLoadingDrow.current = false;\r\n updateView();\r\n }, 500);\r\n widget.current = props.customChartProps.widget;\r\n props.customChartProps.dataBinding?.onEditWidget.subscribe(e => {\r\n if (e.key == widget.current?.key) {\r\n Tools.Map(e, widget.current);\r\n RefreshData();\r\n }\r\n\r\n })\r\n }, [])\r\n\r\n useEffect(() => {\r\n widgetRef.current = props.customChartProps.widgetRef;\r\n RefreshData();\r\n }, []);\r\n\r\n useEffect(() => {\r\n widgetRef.current = props.customChartProps.widgetRef;\r\n }, [props.customChartProps.widgetRef]);\r\n\r\n const RefreshData = () => {\r\n setTitle(props?.customChartProps?.widget?.Title)\r\n var dashboardAnalyticsService = new DashboardAnalyticsService();\r\n var postWidget: any = { ...widget.current };\r\n postWidget.onChange = undefined;\r\n dashboardAnalyticsService.getKpiData(postWidget as ReactWidgetPM).then(result => {\r\n setData(result.data);\r\n isDataLoaded.current = true;\r\n hasDataError.current = false;\r\n updateView();\r\n }, error => {\r\n console.log('error', error);\r\n if (error?.response?.data?.ErrorMessage)\r\n setEror(error?.response?.data?.ErrorMessage);\r\n else\r\n setEror(error.message);\r\n isDataLoaded.current = true;\r\n hasDataError.current = true;\r\n updateView();\r\n })\r\n }\r\n\r\n const updateView = () => {\r\n if (isDataLoaded.current && !isLoadingDrow.current && !hasDataError.current) {\r\n setisView(true);\r\n setViewError(false);\r\n }\r\n\r\n if (isDataLoaded.current && !isLoadingDrow.current && hasDataError.current) {\r\n setisView(false);\r\n setViewError(true);\r\n }\r\n\r\n }\r\n\r\n const kpiClick = () => {\r\n var measureFieldId;\r\n if (props.customChartProps?.widgetRef?.WidgetMeasures)\r\n measureFieldId = props.customChartProps?.widgetRef?.WidgetMeasures[0]?.MeasureFieldId;\r\n props.customChartProps.onSelectDataPoint({\r\n MeasureFieldId: measureFieldId,\r\n Widget: props.customChartProps.widget\r\n });\r\n }\r\n\r\n return (\r\n !isView && !viewError ?\r\n <div className={'dl-full-hight dl-flex-content-center spinner-custome'}>\r\n <ProgressSpinner style={{ width: '100px', height: '100px' }} strokeWidth=\"4\" animationDuration=\"2s\" />\r\n </div>\r\n :\r\n isView ?\r\n <div className={\"kpIcontainer\"} onClick={kpiClick}>\r\n <div className={\"kpIHeader\"}>{title}</div>\r\n <div>{data?.Value} </div>\r\n </div>\r\n : <div className=\"dl-flex-content-center dl-full-hight \" >\r\n <div className=\"dl-tooltip\">\r\n <img width={100} src={\"https://www.seekpng.com/png/full/334-3345964_error-icon-png.png\"} />\r\n <span className=\"dl-tooltiptext\">{error}</span>\r\n </div>\r\n\r\n\r\n </div>\r\n );\r\n}\r\n\r\n\r\nexport default KpiChart;","import React from \"react\";\r\nimport { DashboardDataBinding } from \"../../../../types/DashboardDataBinding\";\r\nimport { DataPointSelection } from \"../../../../types/SeriesMeasure\";\r\nimport { ReactWidgetPM } from \"../../../../types/widget\";\r\nimport KpiChart from \"./KpiChart\";\r\n\r\n\r\nexport type CustomChartProps = {\r\n widget: ReactWidgetPM | undefined,\r\n widgetRef: ReactWidgetPM | undefined,\r\n dataBinding: DashboardDataBinding;\r\n onSelectDataPoint: (dataPointSelection: DataPointSelection) => void;\r\n};\r\nconst CustomChart = (props: CustomChartProps) => {\r\n const project = () => {\r\n switch (props.widget?.TypeCode) {\r\n case \"kpi\": return <KpiChart customChartProps={props} />;\r\n default: return <div>Invalid Type</div>;\r\n }\r\n }\r\n return (\r\n <div style={{ height: '100%' }}>{project()}</div>\r\n );\r\n}\r\n\r\n\r\nexport default CustomChart;","import React, { useRef, useState } from 'react';\r\n\r\n// Step 2 - Include the react-fusioncharts component\r\nimport ReactFC from \"react-fusioncharts\";\r\n\r\n// Step 3 - Include the fusioncharts library\r\nimport FusionCharts from \"fusioncharts\";\r\n\r\n// Step 4 - Include the chart type\r\nimport Column2D from \"fusioncharts/fusioncharts.charts\";\r\n\r\n// Step 5 - Include the theme as fusion\r\nimport FusionTheme from \"fusioncharts/themes/fusioncharts.theme.fusion\";\r\nimport useResizeObserver from \"use-resize-observer\";\r\n// Step 6 - Adding the chart and theme as dependency to the core fusioncharts\r\nReactFC.fcRoot(FusionCharts, Column2D, FusionTheme);\r\n\r\n// Preparing the chart data\r\nconst chartData = [\r\n {\r\n label: \"Venezuela\",\r\n value: \"290\"\r\n },\r\n {\r\n label: \"Saudi\",\r\n value: \"260\"\r\n },\r\n {\r\n label: \"Canada\",\r\n value: \"180\"\r\n },\r\n {\r\n label: \"Iran\",\r\n value: \"140\"\r\n },\r\n {\r\n label: \"Russia\",\r\n value: \"115\"\r\n },\r\n {\r\n label: \"UAE\",\r\n value: \"100\"\r\n },\r\n {\r\n label: \"US\",\r\n value: \"30\"\r\n },\r\n {\r\n label: \"China\",\r\n value: \"30\"\r\n }\r\n];\r\n\r\n// Create a JSON object to store the chart configurations\r\nconst chartConfigs = {\r\n type: \"column2d\", // The chart type\r\n width: \"100%\", // Width of the chart\r\n height: \"80%\", // Height of the chart\r\n dataFormat: \"json\", // Data type\r\n dataSource: {\r\n // Chart Configuration\r\n chart: {\r\n caption: \"Countries With Most Oil Reserves [2017-18]\", //Set the chart caption\r\n subCaption: \"In MMbbl = One Million barrels\", //Set the chart subcaption\r\n xAxisName: \"Country\", //Set the x-axis name\r\n yAxisName: \"Reserves (MMbbl)\", //Set the y-axis name\r\n numberSuffix: \"K\",\r\n theme: \"fusion\" //Set the theme for your chart\r\n },\r\n // Chart Data - from step 2\r\n data: chartData\r\n }\r\n};\r\n\r\n\r\n\r\nfunction FusionChartTest() {\r\n const [fChart, setFchart] = useState<any>({});\r\n const entered = useRef<boolean>(false);\r\n const id = (Math.random() + 1).toString(36).substring(7);\r\n \r\n const renderComplete = (chart: any): void => {\r\n setFchart(chart);\r\n }\r\n \r\n const { ref } = useResizeObserver<HTMLDivElement>({\r\n onResize: ({ width, height }) => {\r\n if (entered.current == false) {\r\n entered.current = true;\r\n return;\r\n }\r\n fChart.resizeTo(width, height);\r\n },\r\n });\r\n\r\n return ( <div className={'db-fc-container'} ref={ref} id={id}><ReactFC {...chartConfigs} onRender={renderComplete}/></div> );\r\n}\r\n\r\nexport default FusionChartTest;\r\n","import { Button } from \"primereact/button\";\r\nimport { OverlayPanel } from \"primereact/overlaypanel\";\r\nimport React, { useRef} from \"react\";\r\nimport { DataPointSelection } from \"../../types/SeriesMeasure\";\r\nimport { ReactWidgetPM } from \"../../types/widget\";\r\nimport { DashboardDataBinding } from '../../types/DashboardDataBinding';\r\nimport CustomChart from \"./ChartsComponents/CustomCharts/CustomChart\";\r\nimport FusionChart from \"./ChartsComponents/FusionChart\";\r\nimport ApexChart from \"./ChartsComponents/ApexChart\";\r\nimport FusionChartTest from \"./ChartsComponents/FusionChartTest\";\r\n\r\n\r\n\r\ntype WidgetCardProps = {\r\n editBtnClicked(widget: any): any;\r\n deleteBtnClicked(i: any): any;\r\n widget: ReactWidgetPM | undefined;\r\n widgetRef: ReactWidgetPM | undefined;\r\n el: any;\r\n dateFilter: any;\r\n dataBinding: DashboardDataBinding;\r\n isInEditMode: boolean;\r\n onSelectDataPoint: (dataPointSelection: DataPointSelection) => void;\r\n}\r\n\r\n\r\nconst WidgetCard = (props: WidgetCardProps, state: any) => {\r\n const moreBtnToggle = useRef<OverlayPanel>(null);\r\n\r\n\r\n const editWidget = () => {\r\n moreBtnToggle.current?.hide();\r\n props.editBtnClicked(props.widget)\r\n };\r\n\r\n\r\n return (\r\n <div className=\"panel\" key={props.el.i}>\r\n <header style={ {paddingLeft: \"5px\"}}>\r\n <h1></h1>\r\n {\r\n props.isInEditMode ?\r\n <Button\r\n icon=\"pi pi-ellipsis-v\"\r\n className=\"p-button-lg p-button-rounded p-button-text\"\r\n onClick={(e) => moreBtnToggle.current?.toggle(e)}\r\n />\r\n : null\r\n }\r\n\r\n\r\n <OverlayPanel ref={moreBtnToggle} className=\"buttons-overlay\">\r\n <div className=\"buttons-list\">\r\n <div onClick={editWidget} > Edit </div>\r\n <div onClick={() => props.deleteBtnClicked(props.widget?.key)} >Remove</div>\r\n </div>\r\n </OverlayPanel>\r\n </header>\r\n\r\n <div className=\"dl-dashboard-widget\">\r\n {props?.widget?.TypeCode == \"kpi\" ?\r\n <CustomChart dataBinding={props.dataBinding} widget={props.widget} widgetRef={props.widgetRef} onSelectDataPoint={props.onSelectDataPoint} /> :\r\n <FusionChartTest/>\r\n //<ApexChart dataBinding={props.dataBinding} widget={props.widget} widgetRef={props.widgetRef} onSelectDataPoint={props.onSelectDataPoint} />\r\n }\r\n\r\n </div>\r\n </div>\r\n );\r\n};\r\n\r\nexport default WidgetCard;\r\n","export function deepClone (obj){\r\n return JSON.parse(JSON.stringify(obj))\r\n}","import { WidthProvider, Responsive, Layout, Layouts } from \"react-grid-layout\";\r\nimport React, { useEffect, useRef, useState } from \"react\";\r\nimport ColumnChartComponent from \"./ChartsComponents/ColumnChartComponent\";\r\nimport PieChartComponent from \"./ChartsComponents/PieChartComponent\";\r\nimport MixedChartComponent from \"./ChartsComponents/MixedChartComponent\";\r\nimport AreaChartComponent from \"./ChartsComponents/AreaChartComponent\";\r\nimport TimelineChartComponent from \"./ChartsComponents/TimelineChartComponent\";\r\nimport CandleChartComponent from \"./ChartsComponents/CandleChartComponent\";\r\nimport BarChartComponent from \"./ChartsComponents/BarChartComponent\";\r\nimport { ReactWidgetPM } from \"../../types/widget\";\r\nimport WidgetCard from \"./WidgetCard\";\r\nimport { DataPointSelection } from \"../../types/SeriesMeasure\";\r\nimport { DashboardDataBinding } from \"../../types/DashboardDataBinding\";\r\nimport { deepClone } from '../../services/clone';\r\n\r\nconst ResponsiveReactGridLayout = WidthProvider(Responsive);\r\n\r\ntype DashboardDesignerProps = {\r\n editMode: boolean,\r\n Widgetlayouts: { lg: ReactWidgetPM[] },\r\n openEditWidget: (widget: ReactWidgetPM) => void\r\n onLayoutChange: (layouts: Layouts) => void,\r\n dataBinding: DashboardDataBinding,\r\n onSelectDataPoint: (dataPointSelection: DataPointSelection) => void\r\n};\r\nconst DashboardDesigner = (props: DashboardDesignerProps) => {\r\n const array12 = Array.from({ length: 12 }).fill(null);\r\n const minimumPlaceholderRowsCount = 12;\r\n const [layouts, setLayouts] = useState<Layouts>({ lg: [] });\r\n const [placeholderRowsArray, setplaceholderRowsArray] = useState(Array.from({ length: minimumPlaceholderRowsCount }).fill(null));\r\n const [dateFilter, setDateFilter] = useState<Date | Date[] | undefined>(undefined);\r\n const [isInEditMode, setisInEditMode] = useState(false);\r\n const widgetsDictionaryRef = useRef<{ [k: string]: ReactWidgetPM }>({});\r\n const [widgets, setWidgets] = useState<{ lg: ReactWidgetPM[] }>({ lg: [] });\r\n const gridLayoutComponent = useRef<any>(null);\r\n const entered = useRef<boolean>(false);\r\n\r\n useEffect(() => {\r\n FillLayout(props.Widgetlayouts);\r\n }, [props.Widgetlayouts]);\r\n\r\n const FillLayout = (dashboardLayouts: { lg: ReactWidgetPM[] }) => {\r\n var clone: { lg: ReactWidgetPM[] } = deepClone(dashboardLayouts);\r\n var layout = createLayout(clone);\r\n FillWidgetDictionary(clone);\r\n setWidgets(clone);\r\n setLayouts(layout);\r\n UpdatePlaceholderDimensions(layout);\r\n }\r\n const FillWidgetDictionary = (clone: { lg: ReactWidgetPM[] }) => {\r\n for (const item of clone.lg) {\r\n widgetsDictionaryRef.current[item.key] = item;\r\n }\r\n }\r\n const createLayout = (dashboardLayouts: { lg: ReactWidgetPM[] }): Layouts => {\r\n var layout: any = { lg: [] };\r\n dashboardLayouts.lg.map(w => w.Layout as Layout).forEach(e => {\r\n layout.lg.push(e)\r\n })\r\n return layout;\r\n }\r\n useEffect(() => {\r\n setisInEditMode(props.editMode);\r\n }, [props.editMode]);\r\n\r\n\r\n function reset() {\r\n window.localStorage.clear();\r\n window.location.reload();\r\n }\r\n\r\n function onLayoutChange(layout: any, changedLayouts: Layouts) {\r\n // layoutsRef.current = changedLayouts;\r\n UpdateWidget(changedLayouts);\r\n setLayouts(changedLayouts);\r\n UpdatePlaceholderDimensions(changedLayouts);\r\n if (entered.current == false) {\r\n entered.current = true;\r\n return;\r\n }\r\n props.onLayoutChange(changedLayouts);\r\n }\r\n\r\n function UpdateWidget(changedLayouts: Layouts) {\r\n for (const item of changedLayouts.lg) {\r\n if (widgetsDictionaryRef.current[item.i]) {\r\n widgetsDictionaryRef.current[item.i].Layout = item;\r\n }\r\n }\r\n }\r\n\r\n function deletePanel(id) {\r\n var newLayouts = { lg: layouts.lg.filter(e => e.i != id) }\r\n // layoutsRef.current = newLayouts;\r\n setLayouts(newLayouts);\r\n\r\n var newWidgets = { lg: widgets.lg.filter(e => e.key != id) }\r\n FillWidgetDictionary(newWidgets);\r\n setWidgets(newWidgets);\r\n props.onLayoutChange(newLayouts)\r\n };\r\n\r\n function editWidget(widget: ReactWidgetPM) {\r\n widget.ChangeSetOp = 'Update';\r\n props.openEditWidget(widget);\r\n };\r\n\r\n function UpdatePlaceholderDimensions(layouts: Layouts) {\r\n if (!layouts)\r\n return;\r\n var max = minimumPlaceholderRowsCount;\r\n for (const layout of layouts['lg']) {\r\n if (layout.y + layout.h > max)\r\n max = layout.y + layout.h;\r\n }\r\n\r\n var newPlaceholderRows = max + 2;\r\n newPlaceholderRows = newPlaceholderRows < minimumPlaceholderRowsCount ? minimumPlaceholderRowsCount : newPlaceholderRows;\r\n setplaceholderRowsArray(Array.from({ length: newPlaceholderRows }).fill(null));\r\n }\r\n return (<div className=\"dl-full-hight-scroll\">\r\n <div className=\"dl-box\">\r\n {/* <div className=\"dl-row dl-header\">\r\n {renderPageHeader()}\r\n </div> */}\r\n <div className=\"dl-row dl-content\">\r\n <div className=\"dl-grid-container\">\r\n <div className=\"dl-grid dl-grid--bordered\">\r\n {isInEditMode ? placeholderRowsArray.map((e, i) =>\r\n array12.map((e, i) => (\r\n <div key={i}\r\n style={{\r\n height: layoutGridProps.rowHeight,\r\n }}\r\n ></div>\r\n ))\r\n\r\n ) : null}\r\n </div>\r\n\r\n\r\n <ResponsiveReactGridLayout ref={gridLayoutComponent}\r\n {...layoutGridProps}\r\n layouts={layouts}\r\n compactType=\"vertical\"\r\n isDraggable={isInEditMode}\r\n isResizable={isInEditMode}\r\n onWidthChange={() => { }}\r\n onLayoutChange={onLayoutChange}\r\n >\r\n {widgets.lg.map((widget) =>\r\n\r\n <div key={widget.Layout?.i}>\r\n <WidgetCard\r\n isInEditMode={isInEditMode}\r\n key={widget.Layout?.i}\r\n widget={widget}\r\n widgetRef={widgetsDictionaryRef.current[widget.key]}\r\n el={widget}\r\n dataBinding={props.dataBinding}\r\n dateFilter={dateFilter}\r\n editBtnClicked={editWidget}\r\n deleteBtnClicked={deletePanel}\r\n onSelectDataPoint={props.onSelectDataPoint}\r\n />\r\n </div>\r\n )}\r\n </ResponsiveReactGridLayout>\r\n </div>\r\n\r\n </div>\r\n {/* <div className=\"dl-row dl-footer\">\r\n <p><b>footer</b> (fixed height)</p>\r\n </div> */}\r\n </div>\r\n {/* {renderNewWidgetDialog()} */}\r\n\r\n\r\n\r\n\r\n\r\n </div>);\r\n\r\n}\r\n\r\n\r\nexport const layoutGridProps = {\r\n rowHeight: 50,\r\n className: \"layout\",\r\n cols: { lg: 12, md: 6, sm: 2, xs: 1, xxs: 1 },\r\n useCSSTransforms: true,\r\n}\r\n\r\nexport const WidgetTypes = [\r\n { Name: \"Filter\", Disabled: true },\r\n { Name: \"Chart\", Disabled: false },\r\n { Name: \"Data Table\", Disabled: true },\r\n { Name: \"Pivot Table\", Disabled: true },\r\n { Name: \"KPI\", Disabled: true },\r\n { Name: \"Gauge\", Disabled: true },\r\n];\r\nexport const widgetComponents = [\r\n { type: \"Bar\", component: BarChartComponent },\r\n { type: \"Column\", component: ColumnChartComponent },\r\n { type: \"Pie\", component: PieChartComponent },\r\n { type: \"Mixed\", component: MixedChartComponent },\r\n { type: \"Timeline\", component: TimelineChartComponent },\r\n { type: \"Candle\", component: CandleChartComponent },\r\n { type: \"Area\", component: AreaChartComponent },\r\n];\r\n\r\n\r\nexport default DashboardDesigner;\r\n","import * as React from 'react'\r\nimport DashboardDesigner from './features/Dashboard/DashboardDesigner'\r\nimport \"./styles.module.css\"\r\nimport { useEffect, useRef, useState } from \"react\";\r\nimport { Session } from './services/session';\r\nimport { ReactWidgetPM } from './types/widget';\r\nimport { DashboardDataBinding } from './types/DashboardDataBinding';\r\nimport { Layout, Layouts } from 'react-grid-layout';\r\nimport { deepClone } from './services/clone';\r\nimport { DataPointSelection } from './types/SeriesMeasure';\r\n\r\ntype DashboardProps = {\r\n token: string,\r\n tenant: number,\r\n userId: string,\r\n dataBinding: DashboardDataBinding,\r\n onChangeLayouts: (layouts: { lg: ReactWidgetPM[] }) => void,\r\n openEditWidget: (Widget: ReactWidgetPM) => void,\r\n onSelectDataPoint: (dataPointSelection: DataPointSelection) => void;\r\n};\r\nconst Dashboard = (props: DashboardProps) => {\r\n const Widgetlayouts = useRef<{ lg: ReactWidgetPM[] }>({ lg: [] });\r\n const [widgetlayoutsState, setWidgetlayoutsState] = useState<{ lg: ReactWidgetPM[] }>({ lg: [] });\r\n const [isInEditMode, setIsInEditMode] = useState<boolean>(false);\r\n\r\n useEffect(() => {\r\n props.dataBinding.onGetLayouts.subscribe(layouts => {\r\n Widgetlayouts.current = layouts;\r\n setWidgetlayoutsState(deepClone(Widgetlayouts.current));\r\n\r\n });\r\n props.dataBinding.isOnEditLayout.subscribe(e => {\r\n setIsInEditMode(e);\r\n });\r\n props.dataBinding.onAddWidget.subscribe(w => {\r\n Widgetlayouts.current.lg.push(w);\r\n setWidgetlayoutsState(deepClone(Widgetlayouts.current));\r\n });\r\n }, [])\r\n\r\n\r\n Session.CurrentUserId = props.userId;\r\n Session.Tenant = props.tenant;\r\n Session.Token = props.token;\r\n if (props?.token?.length > 0)\r\n localStorage.setItem(\"token\", props?.token);\r\n\r\n\r\n\r\n const updateWidgets = (layouts: Layouts) => {\r\n var layoutsDic: { [key: string]: Layout } = {};\r\n Object.keys(layouts).forEach(sizeType => {\r\n if (layouts[sizeType].length > 0) {\r\n layouts[sizeType].map(layout => {\r\n layoutsDic[layout.i] = layout;\r\n })\r\n return;\r\n }\r\n })\r\n var newWidgetlayouts: ReactWidgetPM[] = [];\r\n Widgetlayouts.current.lg.forEach(widget => {\r\n if (layoutsDic[widget.key]) {\r\n widget.StartPotistion = `${layoutsDic[widget.key].x},${layoutsDic[widget.key].y}`;\r\n widget.EndPosition = `${layoutsDic[widget.key].w},${layoutsDic[widget.key].h}`;\r\n widget.Layout = layoutsDic[widget.key];\r\n newWidgetlayouts.push(widget);\r\n }\r\n\r\n });\r\n Widgetlayouts.current = { lg: newWidgetlayouts };\r\n props.onChangeLayouts(Widgetlayouts.current);\r\n }\r\n\r\n\r\n\r\n return (\r\n <div className='dl-full-hight'>\r\n <div className='dl-dashboard-body'>\r\n <DashboardDesigner onSelectDataPoint={props.onSelectDataPoint} Widgetlayouts={widgetlayoutsState} dataBinding={props.dataBinding} editMode={isInEditMode} onLayoutChange={updateWidgets} openEditWidget={(widget: ReactWidgetPM) => props.openEditWidget(widget)} ></DashboardDesigner>\r\n </div>\r\n </div >\r\n\r\n )\r\n}\r\nexport default Dashboard;\r\n\r\n"],"names":["Tools","GetLogitudeURL","logitude_url","location","href","replace","indexOf","urlArr","split","url","substring","lastIndexOf","length","Map","from","to","keys","Object","k","ApiServices","_apiUrl","getByFilters","api","filters","token","getTokenFromStorage","apiURL","ConcatFiltersToURL","axios","get","headers","post","date","window","localStorage","getItem","urlparameters","mykeys","addtionalFiltersValues","i","propName","propValue","ignoreFilter","concat","encodeURIComponent","JSON","stringify","DashboardAnalyticsService","_ApiServices","getData","widget","controller","getKpiData","KpiChart","props","useState","isView","setisView","viewError","setViewError","isLoadingDrow","useRef","widgetRef","isDataLoaded","hasDataError","error","setEror","data","setData","title","setTitle","useEffect","setTimeout","current","updateView","customChartProps","dataBinding","onEditWidget","subscribe","e","key","RefreshData","Title","dashboardAnalyticsService","postWidget","onChange","undefined","then","result","console","log","response","ErrorMessage","message","kpiClick","measureFieldId","WidgetMeasures","MeasureFieldId","onSelectDataPoint","Widget","React","className","ProgressSpinner","style","width","height","strokeWidth","animationDuration","onClick","Value","src","CustomChart","project","TypeCode","ReactFC","fcRoot","FusionCharts","Column2D","FusionTheme","chartData","label","value","chartConfigs","type","dataFormat","dataSource","chart","caption","subCaption","xAxisName","yAxisName","numberSuffix","theme","FusionChartTest","fChart","setFchart","entered","id","Math","random","toString","renderComplete","useResizeObserver","onResize","resizeTo","ref","onRender","WidgetCard","state","moreBtnToggle","editWidget","hide","editBtnClicked","el","paddingLeft","isInEditMode","Button","icon","toggle","OverlayPanel","deleteBtnClicked","deepClone","obj","parse","ResponsiveReactGridLayout","WidthProvider","Responsive","DashboardDesigner","array12","Array","fill","minimumPlaceholderRowsCount","lg","layouts","setLayouts","placeholderRowsArray","setplaceholderRowsArray","dateFilter","setisInEditMode","widgetsDictionaryRef","widgets","setWidgets","gridLayoutComponent","FillLayout","Widgetlayouts","dashboardLayouts","clone","layout","createLayout","FillWidgetDictionary","UpdatePlaceholderDimensions","item","map","w","Layout","forEach","push","editMode","onLayoutChange","changedLayouts","UpdateWidget","deletePanel","newLayouts","filter","newWidgets","ChangeSetOp","openEditWidget","max","y","h","newPlaceholderRows","layoutGridProps","rowHeight","compactType","isDraggable","isResizable","onWidthChange","cols","md","sm","xs","xxs","useCSSTransforms","Dashboard","widgetlayoutsState","setWidgetlayoutsState","setIsInEditMode","onGetLayouts","isOnEditLayout","onAddWidget","setItem","updateWidgets","layoutsDic","sizeType","newWidgetlayouts","StartPotistion","x","EndPosition","onChangeLayouts"],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sources":["../src/services/tools.ts","../src/services/ApiServices.ts","../src/services/DashboardAnalyticsService.ts","../src/features/Dashboard/ChartsComponents/CustomCharts/KpiChart.tsx","../src/features/Dashboard/ChartsComponents/CustomCharts/CustomChart.tsx","../src/features/Dashboard/ChartsComponents/FusionChartObjectBuilder.tsx","../src/features/Dashboard/ChartsComponents/FusionChart.tsx","../src/features/Dashboard/WidgetCard.tsx","../src/services/clone.ts","../src/features/Dashboard/DashboardDesigner.tsx","../src/index.tsx"],"sourcesContent":["export class Tools {\r\n public static GetLogitudeURL() {\r\n\r\n var logitude_url = location.href.replace('index.html', '');\r\n\r\n if (location.href.indexOf('localhost') > -1) {\r\n logitude_url = 'http://localhost:9996';//localhost:9996//';//\r\n }\r\n\r\n else {\r\n var urlArr = location.href.split(\"/index.html\");\r\n var url = urlArr[0];\r\n url = url.replace(url.substring(url.lastIndexOf('/'), url.length), \"\");\r\n logitude_url = url;\r\n }\r\n\r\n return logitude_url;\r\n }\r\n\r\n public static Map(from: any, to: any) {\r\n if (!from)\r\n return;\r\n if (!to)\r\n to = {};\r\n var keys = Object.keys(from);\r\n for (const k of keys) {\r\n if(from[k]){\r\n to[k] = from[k];\r\n }\r\n }\r\n }\r\n}","import axios from \"axios\";\r\nimport { ApiQueryFilters } from \"../common/data-contracts/ApiQueryFilter\";\r\nimport { APIResult } from \"../types/APIResult\";\r\nimport { Tools } from './tools';\r\n\r\n\r\nexport class ApiServices{ \r\n private _apiUrl: string;\r\n constructor(){\r\n this._apiUrl = Tools.GetLogitudeURL() ;\r\n }\r\n getByFilters<T>(api,filters: ApiQueryFilters) {\r\n \r\n let token: string = this.getTokenFromStorage();\r\n\t\tvar apiURL = `${this._apiUrl}${api}`;\r\n\t\tapiURL = this.ConcatFiltersToURL(filters, apiURL);\r\n\r\n return axios.get<APIResult<T>>(apiURL, { headers: { 'Content-Type': 'application/json', 'Token': token } });\r\n }\r\n get<T>(api) {\r\n \r\n let token: string = this.getTokenFromStorage();\r\n\t\tvar apiURL = `${this._apiUrl}${api}`;\r\n return axios.get<T>(apiURL, { headers: { 'Content-Type': 'application/json', 'Token': token } });\r\n }\r\n post<T>(api,date){\r\n let token: string = this.getTokenFromStorage();\r\n\t\tvar apiURL = `${this._apiUrl}${api}`;\r\n return axios.post<T>(apiURL,date, { headers: { 'Content-Type': 'application/json', 'Token': token } });\r\n }\r\n\r\n getTokenFromStorage(){\r\n return window.localStorage.getItem(\"token\") || '';\r\n }\r\n private ConcatFiltersToURL(filters: ApiQueryFilters, urlparameters: string)\r\n {\r\n var mykeys = Object.keys(filters);\r\n var addtionalFiltersValues: string | null = null;\r\n\r\n for (var i in mykeys) {\r\n var propName = mykeys[i];\r\n var propValue = filters[propName];\r\n var ignoreFilter = ((propName.indexOf(\"Operator\") > 0 && propValue == \"Equals\") || propName == \"AdditionalFilters\");\r\n\r\n if (urlparameters != \"?\") {\r\n urlparameters = urlparameters.concat('&');\r\n }\r\n\r\n if (!ignoreFilter) {\r\n propValue = propValue ? encodeURIComponent(propValue) : '';\r\n urlparameters = urlparameters.concat(propName.concat('=').concat(propValue));\r\n }\r\n\r\n if (propName == \"AdditionalFilters\" && propValue.length > 0) {\r\n addtionalFiltersValues = JSON.stringify(propValue);\r\n }\r\n }\r\n\r\n if (addtionalFiltersValues) {\r\n urlparameters = urlparameters.concat(\"&AdditionalFilters=\").concat(addtionalFiltersValues);\r\n }\r\n return urlparameters;\r\n }\r\n}","import axios from \"axios\";\r\nimport { ApiQueryFilters } from \"../common/data-contracts/ApiQueryFilter\";\r\nimport { ReactDashboardPM } from \"../types/Dashboard\";\r\nimport { SeriesMeasure } from \"../types/SeriesMeasure\";\r\nimport { ApiServices } from \"./ApiServices\";\r\nimport { Tools } from './tools';\r\nimport { ReactWidgetPM } from '../types/widget';\r\nimport { KpiChart } from \"../types/KpiChart\";\r\n\r\n\r\nexport class DashboardAnalyticsService{ \r\n _ApiServices:ApiServices;\r\n controller = 'DashboardAnalytics';\r\n constructor(){\r\n this._ApiServices = new ApiServices();\r\n }\r\n \r\n\r\n getData(widget: ReactWidgetPM) {\r\n return this._ApiServices.post<SeriesMeasure[]>(`/api/${this.controller}/PostGetDataAnalytic`,widget);\r\n }\r\n\r\n getKpiData(widget: ReactWidgetPM) {\r\n return this._ApiServices.post<KpiChart>(`/api/${this.controller}/PostGetKpiData`,widget);\r\n }\r\n \r\n \r\n}","import { ProgressSpinner } from \"primereact/progressspinner\";\r\nimport React, { useEffect, useRef, useState } from \"react\";\r\nimport { DashboardAnalyticsService } from \"../../../../services/DashboardAnalyticsService\";\r\nimport { Tools } from \"../../../../services/tools\";\r\nimport { DashboardDataBinding } from \"../../../../types/DashboardDataBinding\";\r\nimport { KpiChart } from \"../../../../types/KpiChart\";\r\nimport { DataPointSelection } from \"../../../../types/SeriesMeasure\";\r\nimport { ReactWidgetPM } from \"../../../../types/widget\";\r\nimport { CustomChartProps } from \"./CustomChart\";\r\n\r\ntype KpiChartProps = {\r\n customChartProps: CustomChartProps;\r\n};\r\nconst KpiChart = (props: KpiChartProps) => {\r\n const [isView, setisView] = useState<boolean>(false);\r\n const [viewError, setViewError] = useState<boolean>(false);\r\n const isLoadingDrow = useRef(true);\r\n const widget = useRef<ReactWidgetPM>();\r\n const widgetRef = useRef<ReactWidgetPM>();\r\n const isDataLoaded = useRef<boolean>(false);\r\n const hasDataError = useRef<boolean>(false);\r\n const [error, setEror] = useState<string>('');\r\n const [data, setData] = useState<KpiChart>();\r\n const [title, setTitle] = useState<string>();\r\n\r\n useEffect(() => {\r\n setTimeout(function () {\r\n isLoadingDrow.current = false;\r\n updateView();\r\n }, 500);\r\n widget.current = props.customChartProps.widget;\r\n props.customChartProps.dataBinding?.onEditWidget.subscribe(e => {\r\n if (e.key == widget.current?.key) {\r\n Tools.Map(e, widget.current);\r\n RefreshData();\r\n }\r\n\r\n })\r\n }, [])\r\n\r\n useEffect(() => {\r\n widgetRef.current = props.customChartProps.widgetRef;\r\n RefreshData();\r\n }, []);\r\n\r\n useEffect(() => {\r\n widgetRef.current = props.customChartProps.widgetRef;\r\n }, [props.customChartProps.widgetRef]);\r\n\r\n const RefreshData = () => {\r\n setTitle(props?.customChartProps?.widget?.Title)\r\n var dashboardAnalyticsService = new DashboardAnalyticsService();\r\n var postWidget: any = { ...widget.current };\r\n postWidget.onChange = undefined;\r\n dashboardAnalyticsService.getKpiData(postWidget as ReactWidgetPM).then(result => {\r\n setData(result.data);\r\n isDataLoaded.current = true;\r\n hasDataError.current = false;\r\n updateView();\r\n }, error => {\r\n console.log('error', error);\r\n if (error?.response?.data?.ErrorMessage)\r\n setEror(error?.response?.data?.ErrorMessage);\r\n else\r\n setEror(error.message);\r\n isDataLoaded.current = true;\r\n hasDataError.current = true;\r\n updateView();\r\n })\r\n }\r\n\r\n const updateView = () => {\r\n if (isDataLoaded.current && !isLoadingDrow.current && !hasDataError.current) {\r\n setisView(true);\r\n setViewError(false);\r\n }\r\n\r\n if (isDataLoaded.current && !isLoadingDrow.current && hasDataError.current) {\r\n setisView(false);\r\n setViewError(true);\r\n }\r\n\r\n }\r\n\r\n const kpiClick = () => {\r\n var measureFieldId;\r\n if (props.customChartProps?.widgetRef?.WidgetMeasures)\r\n measureFieldId = props.customChartProps?.widgetRef?.WidgetMeasures[0]?.MeasureFieldId;\r\n props.customChartProps.onSelectDataPoint({\r\n MeasureFieldId: measureFieldId,\r\n Widget: props.customChartProps.widget\r\n });\r\n }\r\n\r\n return (\r\n !isView && !viewError ?\r\n <div className={'dl-full-hight dl-flex-content-center spinner-custome'}>\r\n <ProgressSpinner style={{ width: '100px', height: '100px' }} strokeWidth=\"4\" animationDuration=\"2s\" />\r\n </div>\r\n :\r\n isView ?\r\n <div className={\"kpIcontainer\"} onClick={kpiClick}>\r\n <div className={\"kpIHeader\"}>{title}</div>\r\n <div>{data?.Value} </div>\r\n </div>\r\n : <div className=\"dl-flex-content-center dl-full-hight \" >\r\n <div className=\"dl-tooltip\">\r\n <img width={100} src={\"https://www.seekpng.com/png/full/334-3345964_error-icon-png.png\"} />\r\n <span className=\"dl-tooltiptext\">{error}</span>\r\n </div>\r\n\r\n\r\n </div>\r\n );\r\n}\r\n\r\n\r\nexport default KpiChart;","import React from \"react\";\r\nimport { DashboardDataBinding } from \"../../../../types/DashboardDataBinding\";\r\nimport { DataPointSelection } from \"../../../../types/SeriesMeasure\";\r\nimport { ReactWidgetPM } from \"../../../../types/widget\";\r\nimport KpiChart from \"./KpiChart\";\r\n\r\n\r\nexport type CustomChartProps = {\r\n widget: ReactWidgetPM | undefined,\r\n widgetRef: ReactWidgetPM | undefined,\r\n dataBinding: DashboardDataBinding;\r\n onSelectDataPoint: (dataPointSelection: DataPointSelection) => void;\r\n};\r\nconst CustomChart = (props: CustomChartProps) => {\r\n const project = () => {\r\n switch (props.widget?.TypeCode) {\r\n case \"kpi\": return <KpiChart customChartProps={props} />;\r\n default: return <div>Invalid Type</div>;\r\n }\r\n }\r\n return (\r\n <div style={{ height: '100%' }}>{project()}</div>\r\n );\r\n}\r\n\r\n\r\nexport default CustomChart;","import { ChartObject } from \"fusioncharts\";\r\nimport { SeriesMeasure } from \"../../../types/SeriesMeasure\";\r\nimport { FusionChartProps } from \"./FusionChart\";\r\n\r\nexport function BuildFusionChartObject(seriesMeasures: SeriesMeasure[], props: FusionChartProps, id: string): ChartObject {\r\n handelNullLabels(seriesMeasures);\r\n let defaultChart = getDefaultChartobject(seriesMeasures, props, id);\r\n switch (props.widget?.TypeCode) {\r\n case 'bar':\r\n return getBarObject(seriesMeasures, defaultChart);\r\n case 'line':\r\n return getLineObject(seriesMeasures, defaultChart);\r\n case 'pie':\r\n return getPieObject(seriesMeasures, defaultChart);\r\n case 'donut':\r\n return getDonutObject(seriesMeasures, defaultChart);\r\n default:\r\n return defaultChart;\r\n }\r\n}\r\n\r\n\r\nfunction handelNullLabels(seriesMeasures: SeriesMeasure[]) {\r\n seriesMeasures.forEach(element => {\r\n element.SeriesMeasureVulues.forEach(value => {\r\n if (!value.Label || value.Label == '')\r\n value.Label = 'Not defined'\r\n });\r\n });\r\n}\r\n\r\nfunction getBarObject(seriesMeasures: SeriesMeasure[], chart: ChartObject): ChartObject {\r\n chart.type = \"scrollbar2d\";\r\n return chart;\r\n}\r\n\r\nfunction getLineObject(seriesMeasures: SeriesMeasure[], chart: ChartObject): ChartObject {\r\n chart.type = \"scrollline2d\";\r\n return chart;\r\n}\r\n\r\nfunction getDonutObject(seriesMeasures: SeriesMeasure[], chart: ChartObject): ChartObject {\r\n chart.type = \"doughnut2d\";\r\n return chart;\r\n}\r\n\r\nfunction getPieObject(seriesMeasures: SeriesMeasure[], chart: ChartObject): ChartObject {\r\n chart.type = \"pie2d\";\r\n return chart;\r\n}\r\n\r\nfunction getDefaultChartobject(seriesMeasures: SeriesMeasure[], props: FusionChartProps, id: string): ChartObject {\r\n let chart = {} as ChartObject;\r\n chart.type = \"column2d\";\r\n chart.width = \"100%\";\r\n chart.height = \"80%\";\r\n chart.dataFormat = \"json\";\r\n buildChartDataSource(chart, props, seriesMeasures);\r\n return chart;\r\n}\r\n\r\n\r\nfunction buildChartDataSource(chart: ChartObject, props: FusionChartProps, seriesMeasures: SeriesMeasure[]) {\r\n if (!seriesMeasures || !seriesMeasures[0]) return;\r\n let chartinfo = {\r\n caption: props.widget?.Title,\r\n theme: \"fusion\",\r\n scrollHeight: \"5\",\r\n scrollWidth: \"5\",\r\n scrollPadding: \"8\",\r\n flatScrollBars: \"1\",\r\n enableSlicing: \"0\",\r\n showLegend: \"0\",\r\n };\r\n\r\n // pie donut lines\r\n // smartLineColor: \"#ff0000\",\r\n // smartLineThickness: \"1\",\r\n // smartLineAlpha: \"100\",\r\n // isSmartLineSlanted: \"0\"\r\n if (props.widget?.TypeCode == \"bar\" || props.widget?.TypeCode == \"line\") {\r\n chart.dataSource = {\r\n chart: chartinfo,\r\n categories: buildCategories(seriesMeasures),\r\n dataset: buildDataSet(seriesMeasures)\r\n };\r\n return;\r\n }\r\n chart.dataSource = {\r\n chart: chartinfo,\r\n data: buildDataSource(seriesMeasures),\r\n };\r\n}\r\n\r\nfunction buildDataSource(values: SeriesMeasure[]) {\r\n let data: any[] = [];\r\n if (!values || !values[0]) return data;\r\n data = values[0].SeriesMeasureVulues.map((e) => {\r\n return {\r\n value: e.Value,\r\n label: e.Label,\r\n id: { GroupById: e.GroupById, MeasureFieldId: values[0].MeasureFieldId }\r\n }\r\n });\r\n return data;\r\n}\r\n\r\nfunction buildDataSet(seriesMeasures: SeriesMeasure[]) {\r\n let dataSet: any[] = [];\r\n let position = 1;\r\n seriesMeasures.forEach(seriesMeasure => {\r\n let datas = seriesMeasure.SeriesMeasureVulues.map(e => {\r\n return { value: e.Value, id: { GroupById: e.GroupById, MeasureFieldId: seriesMeasure.MeasureFieldId } }\r\n });\r\n dataSet.push({ data: datas, seriesname: \"series-\" + position });\r\n position++;\r\n });\r\n return dataSet;\r\n}\r\n\r\nfunction buildCategories(seriesMeasures: SeriesMeasure[]) {\r\n var categories = seriesMeasures[0].SeriesMeasureVulues.map((e) => {\r\n return {\r\n label: e.Label\r\n }\r\n });\r\n var result: any[] = [];\r\n result.push({ category: categories });\r\n return result;\r\n}","import React, { useId, useRef, useState } from \"react\";\r\nimport ReactFC from 'react-fusioncharts';\r\nimport { DashboardDataBinding } from \"../../../types/DashboardDataBinding\";\r\nimport { DataPointSelection } from \"../../../types/SeriesMeasure\";\r\nimport { ReactWidgetPM } from \"../../../types/widget\";\r\nimport FusionCharts, { ChartObject } from 'fusioncharts';\r\nimport Charts from 'fusioncharts/fusioncharts.charts';\r\nimport FusionTheme from 'fusioncharts/themes/fusioncharts.theme.fusion';\r\nimport { useEffect } from \"react\";\r\nimport { Tools } from \"../../../services/tools\";\r\nimport { DashboardAnalyticsService } from \"../../../services/DashboardAnalyticsService\";\r\nimport { ProgressSpinner } from \"primereact/progressspinner\";\r\nimport { BuildFusionChartObject } from \"./FusionChartObjectBuilder\";\r\nimport useResizeObserver from \"use-resize-observer\";\r\n\r\nReactFC.fcRoot(FusionCharts, Charts, FusionTheme);\r\n\r\nexport type FusionChartProps = {\r\n widget: ReactWidgetPM | undefined,\r\n widgetRef: ReactWidgetPM | undefined,\r\n dataBinding: DashboardDataBinding;\r\n onSelectDataPoint: (dataPointSelection: DataPointSelection) => void;\r\n};\r\nconst FusionChart = (props: FusionChartProps) => {\r\n const [isView, setisView] = useState<boolean>(false);\r\n const [viewError, setViewError] = useState<boolean>(false);\r\n const isLoadingDrow = useRef(true);\r\n const widget = useRef<ReactWidgetPM>();\r\n const widgetRef = useRef<ReactWidgetPM>();\r\n const isDataLoaded = useRef<boolean>(false);\r\n const hasDataError = useRef<boolean>(false);\r\n const [error, setError] = useState<string>('');\r\n const [args, setArgs] = useState<ChartObject>({});\r\n const [fChart, setFchart] = useState<any>({});\r\n const entered = useRef<boolean>(false);\r\n const id = (Math.random() + 1).toString(36).substring(7);\r\n\r\n useEffect(() => {\r\n setTimeout(function () {\r\n isLoadingDrow.current = false;\r\n updateView();\r\n }, 500);\r\n widget.current = props.widget;\r\n props.dataBinding?.onEditWidget.subscribe(e => {\r\n if (e.key == widget.current?.key) {\r\n Tools.Map(e, widget.current);\r\n RefreshData();\r\n }\r\n })\r\n }, [])\r\n\r\n const updateView = () => {\r\n if (isDataLoaded.current && !isLoadingDrow.current && !hasDataError.current) {\r\n setisView(true);\r\n setViewError(false);\r\n }\r\n\r\n if (isDataLoaded.current && !isLoadingDrow.current && hasDataError.current) {\r\n setisView(false);\r\n setViewError(true);\r\n }\r\n }\r\n\r\n useEffect(() => {\r\n widgetRef.current = props.widgetRef;\r\n RefreshData();\r\n }, []);\r\n\r\n useEffect(() => {\r\n widgetRef.current = props.widgetRef;\r\n }, [props.widgetRef]);\r\n\r\n const RefreshData = () => {\r\n var dashboardAnalyticsService = new DashboardAnalyticsService();\r\n var postWidget: any = { ...widget.current };\r\n postWidget.onChange = undefined;\r\n dashboardAnalyticsService.getData(postWidget as ReactWidgetPM).then(result => {\r\n updateView();\r\n const chart = BuildFusionChartObject(result.data, props, id);\r\n setArgs(chart);\r\n isDataLoaded.current = true;\r\n hasDataError.current = false;\r\n }, error => {\r\n console.log('error', error);\r\n if (error?.response?.data?.ErrorMessage)\r\n setError(error?.response?.data?.ErrorMessage);\r\n else\r\n setError(error.message);\r\n isDataLoaded.current = true;\r\n hasDataError.current = true;\r\n updateView();\r\n })\r\n }\r\n\r\n const dataplotClick = (eventObj: any, dataObj: any): void => {\r\n props.onSelectDataPoint({\r\n GroupById: dataObj.id.groupbyid,\r\n MeasureFieldId: dataObj.id.measurefieldid,\r\n Widget: props.widget\r\n });\r\n };\r\n\r\n const renderComplete = (chart: any): void => {\r\n setFchart(chart);\r\n }\r\n\r\n const { ref } = useResizeObserver<HTMLDivElement>({\r\n onResize: ({ width, height }) => {\r\n if (entered.current == false) {\r\n entered.current = true;\r\n return;\r\n }\r\n fChart.resizeTo(width, height);\r\n },\r\n });\r\n\r\n return (\r\n !isView && !viewError ?\r\n <div className={'dl-full-hight dl-flex-content-center spinner-custome'}>\r\n <ProgressSpinner style={{ width: '100px', height: '100px' }} strokeWidth=\"4\" animationDuration=\"2s\" />\r\n </div>\r\n :\r\n isView ?\r\n <div className={'db-fc-container'} ref={ref}><ReactFC {...args} fcEvent-dataplotClick={dataplotClick} onRender={renderComplete} /></div>\r\n : <div className=\"dl-flex-content-center dl-full-hight \" >\r\n <div className=\"dl-tooltip\">\r\n <img width={100} src={\"https://www.seekpng.com/png/full/334-3345964_error-icon-png.png\"} />\r\n <span className=\"dl-tooltiptext\">{error}</span>\r\n </div>\r\n </div>\r\n )\r\n}\r\nexport default FusionChart;","import { Button } from \"primereact/button\";\r\nimport { OverlayPanel } from \"primereact/overlaypanel\";\r\nimport React, { useRef} from \"react\";\r\nimport { DataPointSelection } from \"../../types/SeriesMeasure\";\r\nimport { ReactWidgetPM } from \"../../types/widget\";\r\nimport { DashboardDataBinding } from '../../types/DashboardDataBinding';\r\nimport CustomChart from \"./ChartsComponents/CustomCharts/CustomChart\";\r\nimport FusionChart from \"./ChartsComponents/FusionChart\";\r\nimport ApexChart from \"./ChartsComponents/ApexChart\";\r\n\r\n\r\n\r\ntype WidgetCardProps = {\r\n editBtnClicked(widget: any): any;\r\n deleteBtnClicked(i: any): any;\r\n widget: ReactWidgetPM | undefined;\r\n widgetRef: ReactWidgetPM | undefined;\r\n el: any;\r\n dateFilter: any;\r\n dataBinding: DashboardDataBinding;\r\n isInEditMode: boolean;\r\n onSelectDataPoint: (dataPointSelection: DataPointSelection) => void;\r\n}\r\n\r\n\r\nconst WidgetCard = (props: WidgetCardProps, state: any) => {\r\n const moreBtnToggle = useRef<OverlayPanel>(null);\r\n\r\n\r\n const editWidget = () => {\r\n moreBtnToggle.current?.hide();\r\n props.editBtnClicked(props.widget)\r\n };\r\n\r\n\r\n return (\r\n <div className=\"panel\" key={props.el.i}>\r\n <header style={ {paddingLeft: \"5px\"}}>\r\n <h1></h1>\r\n {\r\n props.isInEditMode ?\r\n <Button\r\n icon=\"pi pi-ellipsis-v\"\r\n className=\"p-button-lg p-button-rounded p-button-text\"\r\n onClick={(e) => moreBtnToggle.current?.toggle(e)}\r\n />\r\n : null\r\n }\r\n\r\n\r\n <OverlayPanel ref={moreBtnToggle} className=\"buttons-overlay\">\r\n <div className=\"buttons-list\">\r\n <div onClick={editWidget} > Edit </div>\r\n <div onClick={() => props.deleteBtnClicked(props.widget?.key)} >Remove</div>\r\n </div>\r\n </OverlayPanel>\r\n </header>\r\n\r\n <div className=\"dl-dashboard-widget\">\r\n {props?.widget?.TypeCode == \"kpi\" ?\r\n <CustomChart dataBinding={props.dataBinding} widget={props.widget} widgetRef={props.widgetRef} onSelectDataPoint={props.onSelectDataPoint} /> :\r\n <FusionChart dataBinding={props.dataBinding} widget={props.widget} widgetRef={props.widgetRef} onSelectDataPoint={props.onSelectDataPoint} />\r\n //<ApexChart dataBinding={props.dataBinding} widget={props.widget} widgetRef={props.widgetRef} onSelectDataPoint={props.onSelectDataPoint} />\r\n }\r\n\r\n </div>\r\n </div>\r\n );\r\n};\r\n\r\nexport default WidgetCard;\r\n","export function deepClone (obj){\r\n return JSON.parse(JSON.stringify(obj))\r\n}","import { WidthProvider, Responsive, Layout, Layouts } from \"react-grid-layout\";\r\nimport React, { useEffect, useRef, useState } from \"react\";\r\nimport ColumnChartComponent from \"./ChartsComponents/ColumnChartComponent\";\r\nimport PieChartComponent from \"./ChartsComponents/PieChartComponent\";\r\nimport MixedChartComponent from \"./ChartsComponents/MixedChartComponent\";\r\nimport AreaChartComponent from \"./ChartsComponents/AreaChartComponent\";\r\nimport TimelineChartComponent from \"./ChartsComponents/TimelineChartComponent\";\r\nimport CandleChartComponent from \"./ChartsComponents/CandleChartComponent\";\r\nimport BarChartComponent from \"./ChartsComponents/BarChartComponent\";\r\nimport { ReactWidgetPM } from \"../../types/widget\";\r\nimport WidgetCard from \"./WidgetCard\";\r\nimport { DataPointSelection } from \"../../types/SeriesMeasure\";\r\nimport { DashboardDataBinding } from \"../../types/DashboardDataBinding\";\r\nimport { deepClone } from '../../services/clone';\r\n\r\nconst ResponsiveReactGridLayout = WidthProvider(Responsive);\r\n\r\ntype DashboardDesignerProps = {\r\n editMode: boolean,\r\n Widgetlayouts: { lg: ReactWidgetPM[] },\r\n openEditWidget: (widget: ReactWidgetPM) => void\r\n onLayoutChange: (layouts: Layouts) => void,\r\n dataBinding: DashboardDataBinding,\r\n onSelectDataPoint: (dataPointSelection: DataPointSelection) => void\r\n};\r\nconst DashboardDesigner = (props: DashboardDesignerProps) => {\r\n const array12 = Array.from({ length: 12 }).fill(null);\r\n const minimumPlaceholderRowsCount = 12;\r\n const [layouts, setLayouts] = useState<Layouts>({ lg: [] });\r\n const [placeholderRowsArray, setplaceholderRowsArray] = useState(Array.from({ length: minimumPlaceholderRowsCount }).fill(null));\r\n const [dateFilter, setDateFilter] = useState<Date | Date[] | undefined>(undefined);\r\n const [isInEditMode, setisInEditMode] = useState(false);\r\n const widgetsDictionaryRef = useRef<{ [k: string]: ReactWidgetPM }>({});\r\n const [widgets, setWidgets] = useState<{ lg: ReactWidgetPM[] }>({ lg: [] });\r\n const gridLayoutComponent = useRef<any>(null);\r\n const entered = useRef<boolean>(false);\r\n\r\n useEffect(() => {\r\n FillLayout(props.Widgetlayouts);\r\n }, [props.Widgetlayouts]);\r\n\r\n const FillLayout = (dashboardLayouts: { lg: ReactWidgetPM[] }) => {\r\n var clone: { lg: ReactWidgetPM[] } = deepClone(dashboardLayouts);\r\n var layout = createLayout(clone);\r\n FillWidgetDictionary(clone);\r\n setWidgets(clone);\r\n setLayouts(layout);\r\n UpdatePlaceholderDimensions(layout);\r\n }\r\n const FillWidgetDictionary = (clone: { lg: ReactWidgetPM[] }) => {\r\n for (const item of clone.lg) {\r\n widgetsDictionaryRef.current[item.key] = item;\r\n }\r\n }\r\n const createLayout = (dashboardLayouts: { lg: ReactWidgetPM[] }): Layouts => {\r\n var layout: any = { lg: [] };\r\n dashboardLayouts.lg.map(w => w.Layout as Layout).forEach(e => {\r\n layout.lg.push(e)\r\n })\r\n return layout;\r\n }\r\n useEffect(() => {\r\n setisInEditMode(props.editMode);\r\n }, [props.editMode]);\r\n\r\n\r\n function reset() {\r\n window.localStorage.clear();\r\n window.location.reload();\r\n }\r\n\r\n function onLayoutChange(layout: any, changedLayouts: Layouts) {\r\n // layoutsRef.current = changedLayouts;\r\n UpdateWidget(changedLayouts);\r\n setLayouts(changedLayouts);\r\n UpdatePlaceholderDimensions(changedLayouts);\r\n if (entered.current == false) {\r\n entered.current = true;\r\n return;\r\n }\r\n props.onLayoutChange(changedLayouts);\r\n }\r\n\r\n function UpdateWidget(changedLayouts: Layouts) {\r\n for (const item of changedLayouts.lg) {\r\n if (widgetsDictionaryRef.current[item.i]) {\r\n widgetsDictionaryRef.current[item.i].Layout = item;\r\n }\r\n }\r\n }\r\n\r\n function deletePanel(id) {\r\n var newLayouts = { lg: layouts.lg.filter(e => e.i != id) }\r\n // layoutsRef.current = newLayouts;\r\n setLayouts(newLayouts);\r\n\r\n var newWidgets = { lg: widgets.lg.filter(e => e.key != id) }\r\n FillWidgetDictionary(newWidgets);\r\n setWidgets(newWidgets);\r\n props.onLayoutChange(newLayouts)\r\n };\r\n\r\n function editWidget(widget: ReactWidgetPM) {\r\n widget.ChangeSetOp = 'Update';\r\n props.openEditWidget(widget);\r\n };\r\n\r\n function UpdatePlaceholderDimensions(layouts: Layouts) {\r\n if (!layouts)\r\n return;\r\n var max = minimumPlaceholderRowsCount;\r\n for (const layout of layouts['lg']) {\r\n if (layout.y + layout.h > max)\r\n max = layout.y + layout.h;\r\n }\r\n\r\n var newPlaceholderRows = max + 2;\r\n newPlaceholderRows = newPlaceholderRows < minimumPlaceholderRowsCount ? minimumPlaceholderRowsCount : newPlaceholderRows;\r\n setplaceholderRowsArray(Array.from({ length: newPlaceholderRows }).fill(null));\r\n }\r\n return (<div className=\"dl-full-hight-scroll\">\r\n <div className=\"dl-box\">\r\n {/* <div className=\"dl-row dl-header\">\r\n {renderPageHeader()}\r\n </div> */}\r\n <div className=\"dl-row dl-content\">\r\n <div className=\"dl-grid-container\">\r\n <div className=\"dl-grid dl-grid--bordered\">\r\n {isInEditMode ? placeholderRowsArray.map((e, i) =>\r\n array12.map((e, i) => (\r\n <div key={i}\r\n style={{\r\n height: layoutGridProps.rowHeight,\r\n }}\r\n ></div>\r\n ))\r\n\r\n ) : null}\r\n </div>\r\n\r\n\r\n <ResponsiveReactGridLayout ref={gridLayoutComponent}\r\n {...layoutGridProps}\r\n layouts={layouts}\r\n compactType=\"vertical\"\r\n isDraggable={isInEditMode}\r\n isResizable={isInEditMode}\r\n onWidthChange={() => { }}\r\n onLayoutChange={onLayoutChange}\r\n >\r\n {widgets.lg.map((widget) =>\r\n\r\n <div key={widget.Layout?.i}>\r\n <WidgetCard\r\n isInEditMode={isInEditMode}\r\n key={widget.Layout?.i}\r\n widget={widget}\r\n widgetRef={widgetsDictionaryRef.current[widget.key]}\r\n el={widget}\r\n dataBinding={props.dataBinding}\r\n dateFilter={dateFilter}\r\n editBtnClicked={editWidget}\r\n deleteBtnClicked={deletePanel}\r\n onSelectDataPoint={props.onSelectDataPoint}\r\n />\r\n </div>\r\n )}\r\n </ResponsiveReactGridLayout>\r\n </div>\r\n\r\n </div>\r\n {/* <div className=\"dl-row dl-footer\">\r\n <p><b>footer</b> (fixed height)</p>\r\n </div> */}\r\n </div>\r\n {/* {renderNewWidgetDialog()} */}\r\n\r\n\r\n\r\n\r\n\r\n </div>);\r\n\r\n}\r\n\r\n\r\nexport const layoutGridProps = {\r\n rowHeight: 50,\r\n className: \"layout\",\r\n cols: { lg: 12, md: 6, sm: 2, xs: 1, xxs: 1 },\r\n useCSSTransforms: true,\r\n}\r\n\r\nexport const WidgetTypes = [\r\n { Name: \"Filter\", Disabled: true },\r\n { Name: \"Chart\", Disabled: false },\r\n { Name: \"Data Table\", Disabled: true },\r\n { Name: \"Pivot Table\", Disabled: true },\r\n { Name: \"KPI\", Disabled: true },\r\n { Name: \"Gauge\", Disabled: true },\r\n];\r\nexport const widgetComponents = [\r\n { type: \"Bar\", component: BarChartComponent },\r\n { type: \"Column\", component: ColumnChartComponent },\r\n { type: \"Pie\", component: PieChartComponent },\r\n { type: \"Mixed\", component: MixedChartComponent },\r\n { type: \"Timeline\", component: TimelineChartComponent },\r\n { type: \"Candle\", component: CandleChartComponent },\r\n { type: \"Area\", component: AreaChartComponent },\r\n];\r\n\r\n\r\nexport default DashboardDesigner;\r\n","import * as React from 'react'\r\nimport DashboardDesigner from './features/Dashboard/DashboardDesigner'\r\nimport \"./styles.module.css\"\r\nimport { useEffect, useRef, useState } from \"react\";\r\nimport { Session } from './services/session';\r\nimport { ReactWidgetPM } from './types/widget';\r\nimport { DashboardDataBinding } from './types/DashboardDataBinding';\r\nimport { Layout, Layouts } from 'react-grid-layout';\r\nimport { deepClone } from './services/clone';\r\nimport { DataPointSelection } from './types/SeriesMeasure';\r\n\r\ntype DashboardProps = {\r\n token: string,\r\n tenant: number,\r\n userId: string,\r\n dataBinding: DashboardDataBinding,\r\n onChangeLayouts: (layouts: { lg: ReactWidgetPM[] }) => void,\r\n openEditWidget: (Widget: ReactWidgetPM) => void,\r\n onSelectDataPoint: (dataPointSelection: DataPointSelection) => void;\r\n};\r\nconst Dashboard = (props: DashboardProps) => {\r\n const Widgetlayouts = useRef<{ lg: ReactWidgetPM[] }>({ lg: [] });\r\n const [widgetlayoutsState, setWidgetlayoutsState] = useState<{ lg: ReactWidgetPM[] }>({ lg: [] });\r\n const [isInEditMode, setIsInEditMode] = useState<boolean>(false);\r\n\r\n useEffect(() => {\r\n props.dataBinding.onGetLayouts.subscribe(layouts => {\r\n Widgetlayouts.current = layouts;\r\n setWidgetlayoutsState(deepClone(Widgetlayouts.current));\r\n\r\n });\r\n props.dataBinding.isOnEditLayout.subscribe(e => {\r\n setIsInEditMode(e);\r\n });\r\n props.dataBinding.onAddWidget.subscribe(w => {\r\n Widgetlayouts.current.lg.push(w);\r\n setWidgetlayoutsState(deepClone(Widgetlayouts.current));\r\n });\r\n }, [])\r\n\r\n\r\n Session.CurrentUserId = props.userId;\r\n Session.Tenant = props.tenant;\r\n Session.Token = props.token;\r\n if (props?.token?.length > 0)\r\n localStorage.setItem(\"token\", props?.token);\r\n\r\n\r\n\r\n const updateWidgets = (layouts: Layouts) => {\r\n var layoutsDic: { [key: string]: Layout } = {};\r\n Object.keys(layouts).forEach(sizeType => {\r\n if (layouts[sizeType].length > 0) {\r\n layouts[sizeType].map(layout => {\r\n layoutsDic[layout.i] = layout;\r\n })\r\n return;\r\n }\r\n })\r\n var newWidgetlayouts: ReactWidgetPM[] = [];\r\n Widgetlayouts.current.lg.forEach(widget => {\r\n if (layoutsDic[widget.key]) {\r\n widget.StartPotistion = `${layoutsDic[widget.key].x},${layoutsDic[widget.key].y}`;\r\n widget.EndPosition = `${layoutsDic[widget.key].w},${layoutsDic[widget.key].h}`;\r\n widget.Layout = layoutsDic[widget.key];\r\n newWidgetlayouts.push(widget);\r\n }\r\n\r\n });\r\n Widgetlayouts.current = { lg: newWidgetlayouts };\r\n props.onChangeLayouts(Widgetlayouts.current);\r\n }\r\n\r\n\r\n\r\n return (\r\n <div className='dl-full-hight'>\r\n <div className='dl-dashboard-body'>\r\n <DashboardDesigner onSelectDataPoint={props.onSelectDataPoint} Widgetlayouts={widgetlayoutsState} dataBinding={props.dataBinding} editMode={isInEditMode} onLayoutChange={updateWidgets} openEditWidget={(widget: ReactWidgetPM) => props.openEditWidget(widget)} ></DashboardDesigner>\r\n </div>\r\n </div >\r\n\r\n )\r\n}\r\nexport default Dashboard;\r\n\r\n"],"names":["Tools","GetLogitudeURL","logitude_url","location","href","replace","indexOf","urlArr","split","url","substring","lastIndexOf","length","Map","from","to","keys","Object","k","ApiServices","_apiUrl","getByFilters","api","filters","token","getTokenFromStorage","apiURL","ConcatFiltersToURL","axios","get","headers","post","date","window","localStorage","getItem","urlparameters","mykeys","addtionalFiltersValues","i","propName","propValue","ignoreFilter","concat","encodeURIComponent","JSON","stringify","DashboardAnalyticsService","_ApiServices","getData","widget","controller","getKpiData","KpiChart","props","useState","isView","setisView","viewError","setViewError","isLoadingDrow","useRef","widgetRef","isDataLoaded","hasDataError","error","setEror","data","setData","title","setTitle","useEffect","setTimeout","current","updateView","customChartProps","dataBinding","onEditWidget","subscribe","e","key","RefreshData","Title","dashboardAnalyticsService","postWidget","onChange","undefined","then","result","console","log","response","ErrorMessage","message","kpiClick","measureFieldId","WidgetMeasures","MeasureFieldId","onSelectDataPoint","Widget","React","className","ProgressSpinner","style","width","height","strokeWidth","animationDuration","onClick","Value","src","CustomChart","project","TypeCode","BuildFusionChartObject","seriesMeasures","id","handelNullLabels","defaultChart","getDefaultChartobject","getBarObject","getLineObject","getPieObject","getDonutObject","forEach","element","SeriesMeasureVulues","value","Label","chart","type","dataFormat","buildChartDataSource","chartinfo","caption","theme","scrollHeight","scrollWidth","scrollPadding","flatScrollBars","enableSlicing","showLegend","dataSource","categories","buildCategories","dataset","buildDataSet","buildDataSource","values","map","label","GroupById","dataSet","position","seriesMeasure","datas","push","seriesname","category","ReactFC","fcRoot","FusionCharts","Charts","FusionTheme","FusionChart","setError","args","setArgs","fChart","setFchart","entered","Math","random","toString","dataplotClick","eventObj","dataObj","groupbyid","measurefieldid","renderComplete","useResizeObserver","onResize","resizeTo","ref","onRender","WidgetCard","state","moreBtnToggle","editWidget","hide","editBtnClicked","el","paddingLeft","isInEditMode","Button","icon","toggle","OverlayPanel","deleteBtnClicked","deepClone","obj","parse","ResponsiveReactGridLayout","WidthProvider","Responsive","DashboardDesigner","array12","Array","fill","minimumPlaceholderRowsCount","lg","layouts","setLayouts","placeholderRowsArray","setplaceholderRowsArray","dateFilter","setisInEditMode","widgetsDictionaryRef","widgets","setWidgets","gridLayoutComponent","FillLayout","Widgetlayouts","dashboardLayouts","clone","layout","createLayout","FillWidgetDictionary","UpdatePlaceholderDimensions","item","w","Layout","editMode","onLayoutChange","changedLayouts","UpdateWidget","deletePanel","newLayouts","filter","newWidgets","ChangeSetOp","openEditWidget","max","y","h","newPlaceholderRows","layoutGridProps","rowHeight","compactType","isDraggable","isResizable","onWidthChange","cols","md","sm","xs","xxs","useCSSTransforms","Dashboard","widgetlayoutsState","setWidgetlayoutsState","setIsInEditMode","onGetLayouts","isOnEditLayout","onAddWidget","setItem","updateWidgets","layoutsDic","sizeType","newWidgetlayouts","StartPotistion","x","EndPosition","onChangeLayouts"],"mappings":"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"}
@@ -7,7 +7,7 @@ import { OverlayPanel } from 'primereact/overlaypanel';
7
7
  import { ProgressSpinner } from 'primereact/progressspinner';
8
8
  import ReactFC from 'react-fusioncharts';
9
9
  import FusionCharts from 'fusioncharts';
10
- import Column2D from 'fusioncharts/fusioncharts.charts';
10
+ import Charts from 'fusioncharts/fusioncharts.charts';
11
11
  import FusionTheme from 'fusioncharts/themes/fusioncharts.theme.fusion';
12
12
  import useResizeObserver from 'use-resize-observer';
13
13
 
@@ -346,57 +346,248 @@ var CustomChart = function CustomChart(props) {
346
346
  }, project());
347
347
  };
348
348
 
349
- ReactFC.fcRoot(FusionCharts, Column2D, FusionTheme);
350
- var chartData = [{
351
- label: "Venezuela",
352
- value: "290"
353
- }, {
354
- label: "Saudi",
355
- value: "260"
356
- }, {
357
- label: "Canada",
358
- value: "180"
359
- }, {
360
- label: "Iran",
361
- value: "140"
362
- }, {
363
- label: "Russia",
364
- value: "115"
365
- }, {
366
- label: "UAE",
367
- value: "100"
368
- }, {
369
- label: "US",
370
- value: "30"
371
- }, {
372
- label: "China",
373
- value: "30"
374
- }];
375
- var chartConfigs = {
376
- type: "column2d",
377
- width: "100%",
378
- height: "80%",
379
- dataFormat: "json",
380
- dataSource: {
381
- chart: {
382
- caption: "Countries With Most Oil Reserves [2017-18]",
383
- subCaption: "In MMbbl = One Million barrels",
384
- xAxisName: "Country",
385
- yAxisName: "Reserves (MMbbl)",
386
- numberSuffix: "K",
387
- theme: "fusion"
388
- },
389
- data: chartData
349
+ function BuildFusionChartObject(seriesMeasures, props, id) {
350
+ var _props$widget;
351
+
352
+ handelNullLabels(seriesMeasures);
353
+ var defaultChart = getDefaultChartobject(seriesMeasures, props);
354
+
355
+ switch ((_props$widget = props.widget) === null || _props$widget === void 0 ? void 0 : _props$widget.TypeCode) {
356
+ case 'bar':
357
+ return getBarObject(seriesMeasures, defaultChart);
358
+
359
+ case 'line':
360
+ return getLineObject(seriesMeasures, defaultChart);
361
+
362
+ case 'pie':
363
+ return getPieObject(seriesMeasures, defaultChart);
364
+
365
+ case 'donut':
366
+ return getDonutObject(seriesMeasures, defaultChart);
367
+
368
+ default:
369
+ return defaultChart;
390
370
  }
391
- };
371
+ }
372
+
373
+ function handelNullLabels(seriesMeasures) {
374
+ seriesMeasures.forEach(function (element) {
375
+ element.SeriesMeasureVulues.forEach(function (value) {
376
+ if (!value.Label || value.Label == '') value.Label = 'Not defined';
377
+ });
378
+ });
379
+ }
380
+
381
+ function getBarObject(seriesMeasures, chart) {
382
+ chart.type = "scrollbar2d";
383
+ return chart;
384
+ }
385
+
386
+ function getLineObject(seriesMeasures, chart) {
387
+ chart.type = "scrollline2d";
388
+ return chart;
389
+ }
390
+
391
+ function getDonutObject(seriesMeasures, chart) {
392
+ chart.type = "doughnut2d";
393
+ return chart;
394
+ }
392
395
 
393
- function FusionChartTest() {
394
- var _useState = useState({}),
395
- fChart = _useState[0],
396
- setFchart = _useState[1];
396
+ function getPieObject(seriesMeasures, chart) {
397
+ chart.type = "pie2d";
398
+ return chart;
399
+ }
400
+
401
+ function getDefaultChartobject(seriesMeasures, props, id) {
402
+ var chart = {};
403
+ chart.type = "column2d";
404
+ chart.width = "100%";
405
+ chart.height = "80%";
406
+ chart.dataFormat = "json";
407
+ buildChartDataSource(chart, props, seriesMeasures);
408
+ return chart;
409
+ }
410
+
411
+ function buildChartDataSource(chart, props, seriesMeasures) {
412
+ var _props$widget2, _props$widget3, _props$widget4;
413
+
414
+ if (!seriesMeasures || !seriesMeasures[0]) return;
415
+ var chartinfo = {
416
+ caption: (_props$widget2 = props.widget) === null || _props$widget2 === void 0 ? void 0 : _props$widget2.Title,
417
+ theme: "fusion",
418
+ scrollHeight: "5",
419
+ scrollWidth: "5",
420
+ scrollPadding: "8",
421
+ flatScrollBars: "1",
422
+ enableSlicing: "0",
423
+ showLegend: "0"
424
+ };
425
+
426
+ if (((_props$widget3 = props.widget) === null || _props$widget3 === void 0 ? void 0 : _props$widget3.TypeCode) == "bar" || ((_props$widget4 = props.widget) === null || _props$widget4 === void 0 ? void 0 : _props$widget4.TypeCode) == "line") {
427
+ chart.dataSource = {
428
+ chart: chartinfo,
429
+ categories: buildCategories(seriesMeasures),
430
+ dataset: buildDataSet(seriesMeasures)
431
+ };
432
+ return;
433
+ }
434
+
435
+ chart.dataSource = {
436
+ chart: chartinfo,
437
+ data: buildDataSource(seriesMeasures)
438
+ };
439
+ }
440
+
441
+ function buildDataSource(values) {
442
+ var data = [];
443
+ if (!values || !values[0]) return data;
444
+ data = values[0].SeriesMeasureVulues.map(function (e) {
445
+ return {
446
+ value: e.Value,
447
+ label: e.Label,
448
+ id: {
449
+ GroupById: e.GroupById,
450
+ MeasureFieldId: values[0].MeasureFieldId
451
+ }
452
+ };
453
+ });
454
+ return data;
455
+ }
456
+
457
+ function buildDataSet(seriesMeasures) {
458
+ var dataSet = [];
459
+ var position = 1;
460
+ seriesMeasures.forEach(function (seriesMeasure) {
461
+ var datas = seriesMeasure.SeriesMeasureVulues.map(function (e) {
462
+ return {
463
+ value: e.Value,
464
+ id: {
465
+ GroupById: e.GroupById,
466
+ MeasureFieldId: seriesMeasure.MeasureFieldId
467
+ }
468
+ };
469
+ });
470
+ dataSet.push({
471
+ data: datas,
472
+ seriesname: "series-" + position
473
+ });
474
+ position++;
475
+ });
476
+ return dataSet;
477
+ }
478
+
479
+ function buildCategories(seriesMeasures) {
480
+ var categories = seriesMeasures[0].SeriesMeasureVulues.map(function (e) {
481
+ return {
482
+ label: e.Label
483
+ };
484
+ });
485
+ var result = [];
486
+ result.push({
487
+ category: categories
488
+ });
489
+ return result;
490
+ }
491
+
492
+ ReactFC.fcRoot(FusionCharts, Charts, FusionTheme);
493
+
494
+ var FusionChart = function FusionChart(props) {
495
+ var _useState = useState(false),
496
+ isView = _useState[0],
497
+ setisView = _useState[1];
498
+
499
+ var _useState2 = useState(false),
500
+ viewError = _useState2[0],
501
+ setViewError = _useState2[1];
502
+
503
+ var isLoadingDrow = useRef(true);
504
+ var widget = useRef();
505
+ var widgetRef = useRef();
506
+ var isDataLoaded = useRef(false);
507
+ var hasDataError = useRef(false);
508
+
509
+ var _useState3 = useState(''),
510
+ error = _useState3[0],
511
+ setError = _useState3[1];
512
+
513
+ var _useState4 = useState({}),
514
+ args = _useState4[0],
515
+ setArgs = _useState4[1];
516
+
517
+ var _useState5 = useState({}),
518
+ fChart = _useState5[0],
519
+ setFchart = _useState5[1];
397
520
 
398
521
  var entered = useRef(false);
399
522
  var id = (Math.random() + 1).toString(36).substring(7);
523
+ useEffect(function () {
524
+ var _props$dataBinding;
525
+
526
+ setTimeout(function () {
527
+ isLoadingDrow.current = false;
528
+ updateView();
529
+ }, 500);
530
+ widget.current = props.widget;
531
+ (_props$dataBinding = props.dataBinding) === null || _props$dataBinding === void 0 ? void 0 : _props$dataBinding.onEditWidget.subscribe(function (e) {
532
+ var _widget$current;
533
+
534
+ if (e.key == ((_widget$current = widget.current) === null || _widget$current === void 0 ? void 0 : _widget$current.key)) {
535
+ Tools.Map(e, widget.current);
536
+ RefreshData();
537
+ }
538
+ });
539
+ }, []);
540
+
541
+ var updateView = function updateView() {
542
+ if (isDataLoaded.current && !isLoadingDrow.current && !hasDataError.current) {
543
+ setisView(true);
544
+ setViewError(false);
545
+ }
546
+
547
+ if (isDataLoaded.current && !isLoadingDrow.current && hasDataError.current) {
548
+ setisView(false);
549
+ setViewError(true);
550
+ }
551
+ };
552
+
553
+ useEffect(function () {
554
+ widgetRef.current = props.widgetRef;
555
+ RefreshData();
556
+ }, []);
557
+ useEffect(function () {
558
+ widgetRef.current = props.widgetRef;
559
+ }, [props.widgetRef]);
560
+
561
+ var RefreshData = function RefreshData() {
562
+ var dashboardAnalyticsService = new DashboardAnalyticsService();
563
+
564
+ var postWidget = _extends({}, widget.current);
565
+
566
+ postWidget.onChange = undefined;
567
+ dashboardAnalyticsService.getData(postWidget).then(function (result) {
568
+ updateView();
569
+ var chart = BuildFusionChartObject(result.data, props);
570
+ setArgs(chart);
571
+ isDataLoaded.current = true;
572
+ hasDataError.current = false;
573
+ }, function (error) {
574
+ var _error$response, _error$response$data, _error$response2, _error$response2$data;
575
+
576
+ console.log('error', error);
577
+ 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);
578
+ isDataLoaded.current = true;
579
+ hasDataError.current = true;
580
+ updateView();
581
+ });
582
+ };
583
+
584
+ var dataplotClick = function dataplotClick(eventObj, dataObj) {
585
+ props.onSelectDataPoint({
586
+ GroupById: dataObj.id.groupbyid,
587
+ MeasureFieldId: dataObj.id.measurefieldid,
588
+ Widget: props.widget
589
+ });
590
+ };
400
591
 
401
592
  var renderComplete = function renderComplete(chart) {
402
593
  setFchart(chart);
@@ -417,14 +608,32 @@ function FusionChartTest() {
417
608
  }),
418
609
  ref = _useResizeObserver.ref;
419
610
 
420
- return React__default.createElement("div", {
611
+ return !isView && !viewError ? React__default.createElement("div", {
612
+ className: 'dl-full-hight dl-flex-content-center spinner-custome'
613
+ }, React__default.createElement(ProgressSpinner, {
614
+ style: {
615
+ width: '100px',
616
+ height: '100px'
617
+ },
618
+ strokeWidth: "4",
619
+ animationDuration: "2s"
620
+ })) : isView ? React__default.createElement("div", {
421
621
  className: 'db-fc-container',
422
- ref: ref,
423
- id: id
424
- }, React__default.createElement(ReactFC, Object.assign({}, chartConfigs, {
622
+ ref: ref
623
+ }, React__default.createElement(ReactFC, Object.assign({}, args, {
624
+ "fcEvent-dataplotClick": dataplotClick,
425
625
  onRender: renderComplete
426
- })));
427
- }
626
+ }))) : React__default.createElement("div", {
627
+ className: "dl-flex-content-center dl-full-hight "
628
+ }, React__default.createElement("div", {
629
+ className: "dl-tooltip"
630
+ }, React__default.createElement("img", {
631
+ width: 100,
632
+ src: "https://www.seekpng.com/png/full/334-3345964_error-icon-png.png"
633
+ }), React__default.createElement("span", {
634
+ className: "dl-tooltiptext"
635
+ }, error)));
636
+ };
428
637
 
429
638
  var WidgetCard = function WidgetCard(props, state) {
430
639
  var _props$widget2;
@@ -473,7 +682,12 @@ var WidgetCard = function WidgetCard(props, state) {
473
682
  widget: props.widget,
474
683
  widgetRef: props.widgetRef,
475
684
  onSelectDataPoint: props.onSelectDataPoint
476
- }) : React__default.createElement(FusionChartTest, null)));
685
+ }) : React__default.createElement(FusionChart, {
686
+ dataBinding: props.dataBinding,
687
+ widget: props.widget,
688
+ widgetRef: props.widgetRef,
689
+ onSelectDataPoint: props.onSelectDataPoint
690
+ })));
477
691
  };
478
692
 
479
693
  function deepClone(obj) {
@@ -1 +1 @@
1
- {"version":3,"file":"index.modern.js","sources":["../src/services/tools.ts","../src/services/ApiServices.ts","../src/services/DashboardAnalyticsService.ts","../src/features/Dashboard/ChartsComponents/CustomCharts/KpiChart.tsx","../src/features/Dashboard/ChartsComponents/CustomCharts/CustomChart.tsx","../src/features/Dashboard/ChartsComponents/FusionChartTest.tsx","../src/features/Dashboard/WidgetCard.tsx","../src/services/clone.ts","../src/features/Dashboard/DashboardDesigner.tsx","../src/index.tsx"],"sourcesContent":["export class Tools {\r\n public static GetLogitudeURL() {\r\n\r\n var logitude_url = location.href.replace('index.html', '');\r\n\r\n if (location.href.indexOf('localhost') > -1) {\r\n logitude_url = 'http://localhost:9996';//localhost:9996//';//\r\n }\r\n\r\n else {\r\n var urlArr = location.href.split(\"/index.html\");\r\n var url = urlArr[0];\r\n url = url.replace(url.substring(url.lastIndexOf('/'), url.length), \"\");\r\n logitude_url = url;\r\n }\r\n\r\n return logitude_url;\r\n }\r\n\r\n public static Map(from: any, to: any) {\r\n if (!from)\r\n return;\r\n if (!to)\r\n to = {};\r\n var keys = Object.keys(from);\r\n for (const k of keys) {\r\n if(from[k]){\r\n to[k] = from[k];\r\n }\r\n }\r\n }\r\n}","import axios from \"axios\";\r\nimport { ApiQueryFilters } from \"../common/data-contracts/ApiQueryFilter\";\r\nimport { APIResult } from \"../types/APIResult\";\r\nimport { Tools } from './tools';\r\n\r\n\r\nexport class ApiServices{ \r\n private _apiUrl: string;\r\n constructor(){\r\n this._apiUrl = Tools.GetLogitudeURL() ;\r\n }\r\n getByFilters<T>(api,filters: ApiQueryFilters) {\r\n \r\n let token: string = this.getTokenFromStorage();\r\n\t\tvar apiURL = `${this._apiUrl}${api}`;\r\n\t\tapiURL = this.ConcatFiltersToURL(filters, apiURL);\r\n\r\n return axios.get<APIResult<T>>(apiURL, { headers: { 'Content-Type': 'application/json', 'Token': token } });\r\n }\r\n get<T>(api) {\r\n \r\n let token: string = this.getTokenFromStorage();\r\n\t\tvar apiURL = `${this._apiUrl}${api}`;\r\n return axios.get<T>(apiURL, { headers: { 'Content-Type': 'application/json', 'Token': token } });\r\n }\r\n post<T>(api,date){\r\n let token: string = this.getTokenFromStorage();\r\n\t\tvar apiURL = `${this._apiUrl}${api}`;\r\n return axios.post<T>(apiURL,date, { headers: { 'Content-Type': 'application/json', 'Token': token } });\r\n }\r\n\r\n getTokenFromStorage(){\r\n return window.localStorage.getItem(\"token\") || '';\r\n }\r\n private ConcatFiltersToURL(filters: ApiQueryFilters, urlparameters: string)\r\n {\r\n var mykeys = Object.keys(filters);\r\n var addtionalFiltersValues: string | null = null;\r\n\r\n for (var i in mykeys) {\r\n var propName = mykeys[i];\r\n var propValue = filters[propName];\r\n var ignoreFilter = ((propName.indexOf(\"Operator\") > 0 && propValue == \"Equals\") || propName == \"AdditionalFilters\");\r\n\r\n if (urlparameters != \"?\") {\r\n urlparameters = urlparameters.concat('&');\r\n }\r\n\r\n if (!ignoreFilter) {\r\n propValue = propValue ? encodeURIComponent(propValue) : '';\r\n urlparameters = urlparameters.concat(propName.concat('=').concat(propValue));\r\n }\r\n\r\n if (propName == \"AdditionalFilters\" && propValue.length > 0) {\r\n addtionalFiltersValues = JSON.stringify(propValue);\r\n }\r\n }\r\n\r\n if (addtionalFiltersValues) {\r\n urlparameters = urlparameters.concat(\"&AdditionalFilters=\").concat(addtionalFiltersValues);\r\n }\r\n return urlparameters;\r\n }\r\n}","import axios from \"axios\";\r\nimport { ApiQueryFilters } from \"../common/data-contracts/ApiQueryFilter\";\r\nimport { ReactDashboardPM } from \"../types/Dashboard\";\r\nimport { SeriesMeasure } from \"../types/SeriesMeasure\";\r\nimport { ApiServices } from \"./ApiServices\";\r\nimport { Tools } from './tools';\r\nimport { ReactWidgetPM } from '../types/widget';\r\nimport { KpiChart } from \"../types/KpiChart\";\r\n\r\n\r\nexport class DashboardAnalyticsService{ \r\n _ApiServices:ApiServices;\r\n controller = 'DashboardAnalytics';\r\n constructor(){\r\n this._ApiServices = new ApiServices();\r\n }\r\n \r\n\r\n getData(widget: ReactWidgetPM) {\r\n return this._ApiServices.post<SeriesMeasure[]>(`/api/${this.controller}/PostGetDataAnalytic`,widget);\r\n }\r\n\r\n getKpiData(widget: ReactWidgetPM) {\r\n return this._ApiServices.post<KpiChart>(`/api/${this.controller}/PostGetKpiData`,widget);\r\n }\r\n \r\n \r\n}","import { ProgressSpinner } from \"primereact/progressspinner\";\r\nimport React, { useEffect, useRef, useState } from \"react\";\r\nimport { DashboardAnalyticsService } from \"../../../../services/DashboardAnalyticsService\";\r\nimport { Tools } from \"../../../../services/tools\";\r\nimport { DashboardDataBinding } from \"../../../../types/DashboardDataBinding\";\r\nimport { KpiChart } from \"../../../../types/KpiChart\";\r\nimport { DataPointSelection } from \"../../../../types/SeriesMeasure\";\r\nimport { ReactWidgetPM } from \"../../../../types/widget\";\r\nimport { CustomChartProps } from \"./CustomChart\";\r\n\r\ntype KpiChartProps = {\r\n customChartProps: CustomChartProps;\r\n};\r\nconst KpiChart = (props: KpiChartProps) => {\r\n const [isView, setisView] = useState<boolean>(false);\r\n const [viewError, setViewError] = useState<boolean>(false);\r\n const isLoadingDrow = useRef(true);\r\n const widget = useRef<ReactWidgetPM>();\r\n const widgetRef = useRef<ReactWidgetPM>();\r\n const isDataLoaded = useRef<boolean>(false);\r\n const hasDataError = useRef<boolean>(false);\r\n const [error, setEror] = useState<string>('');\r\n const [data, setData] = useState<KpiChart>();\r\n const [title, setTitle] = useState<string>();\r\n\r\n useEffect(() => {\r\n setTimeout(function () {\r\n isLoadingDrow.current = false;\r\n updateView();\r\n }, 500);\r\n widget.current = props.customChartProps.widget;\r\n props.customChartProps.dataBinding?.onEditWidget.subscribe(e => {\r\n if (e.key == widget.current?.key) {\r\n Tools.Map(e, widget.current);\r\n RefreshData();\r\n }\r\n\r\n })\r\n }, [])\r\n\r\n useEffect(() => {\r\n widgetRef.current = props.customChartProps.widgetRef;\r\n RefreshData();\r\n }, []);\r\n\r\n useEffect(() => {\r\n widgetRef.current = props.customChartProps.widgetRef;\r\n }, [props.customChartProps.widgetRef]);\r\n\r\n const RefreshData = () => {\r\n setTitle(props?.customChartProps?.widget?.Title)\r\n var dashboardAnalyticsService = new DashboardAnalyticsService();\r\n var postWidget: any = { ...widget.current };\r\n postWidget.onChange = undefined;\r\n dashboardAnalyticsService.getKpiData(postWidget as ReactWidgetPM).then(result => {\r\n setData(result.data);\r\n isDataLoaded.current = true;\r\n hasDataError.current = false;\r\n updateView();\r\n }, error => {\r\n console.log('error', error);\r\n if (error?.response?.data?.ErrorMessage)\r\n setEror(error?.response?.data?.ErrorMessage);\r\n else\r\n setEror(error.message);\r\n isDataLoaded.current = true;\r\n hasDataError.current = true;\r\n updateView();\r\n })\r\n }\r\n\r\n const updateView = () => {\r\n if (isDataLoaded.current && !isLoadingDrow.current && !hasDataError.current) {\r\n setisView(true);\r\n setViewError(false);\r\n }\r\n\r\n if (isDataLoaded.current && !isLoadingDrow.current && hasDataError.current) {\r\n setisView(false);\r\n setViewError(true);\r\n }\r\n\r\n }\r\n\r\n const kpiClick = () => {\r\n var measureFieldId;\r\n if (props.customChartProps?.widgetRef?.WidgetMeasures)\r\n measureFieldId = props.customChartProps?.widgetRef?.WidgetMeasures[0]?.MeasureFieldId;\r\n props.customChartProps.onSelectDataPoint({\r\n MeasureFieldId: measureFieldId,\r\n Widget: props.customChartProps.widget\r\n });\r\n }\r\n\r\n return (\r\n !isView && !viewError ?\r\n <div className={'dl-full-hight dl-flex-content-center spinner-custome'}>\r\n <ProgressSpinner style={{ width: '100px', height: '100px' }} strokeWidth=\"4\" animationDuration=\"2s\" />\r\n </div>\r\n :\r\n isView ?\r\n <div className={\"kpIcontainer\"} onClick={kpiClick}>\r\n <div className={\"kpIHeader\"}>{title}</div>\r\n <div>{data?.Value} </div>\r\n </div>\r\n : <div className=\"dl-flex-content-center dl-full-hight \" >\r\n <div className=\"dl-tooltip\">\r\n <img width={100} src={\"https://www.seekpng.com/png/full/334-3345964_error-icon-png.png\"} />\r\n <span className=\"dl-tooltiptext\">{error}</span>\r\n </div>\r\n\r\n\r\n </div>\r\n );\r\n}\r\n\r\n\r\nexport default KpiChart;","import React from \"react\";\r\nimport { DashboardDataBinding } from \"../../../../types/DashboardDataBinding\";\r\nimport { DataPointSelection } from \"../../../../types/SeriesMeasure\";\r\nimport { ReactWidgetPM } from \"../../../../types/widget\";\r\nimport KpiChart from \"./KpiChart\";\r\n\r\n\r\nexport type CustomChartProps = {\r\n widget: ReactWidgetPM | undefined,\r\n widgetRef: ReactWidgetPM | undefined,\r\n dataBinding: DashboardDataBinding;\r\n onSelectDataPoint: (dataPointSelection: DataPointSelection) => void;\r\n};\r\nconst CustomChart = (props: CustomChartProps) => {\r\n const project = () => {\r\n switch (props.widget?.TypeCode) {\r\n case \"kpi\": return <KpiChart customChartProps={props} />;\r\n default: return <div>Invalid Type</div>;\r\n }\r\n }\r\n return (\r\n <div style={{ height: '100%' }}>{project()}</div>\r\n );\r\n}\r\n\r\n\r\nexport default CustomChart;","import React, { useRef, useState } from 'react';\r\n\r\n// Step 2 - Include the react-fusioncharts component\r\nimport ReactFC from \"react-fusioncharts\";\r\n\r\n// Step 3 - Include the fusioncharts library\r\nimport FusionCharts from \"fusioncharts\";\r\n\r\n// Step 4 - Include the chart type\r\nimport Column2D from \"fusioncharts/fusioncharts.charts\";\r\n\r\n// Step 5 - Include the theme as fusion\r\nimport FusionTheme from \"fusioncharts/themes/fusioncharts.theme.fusion\";\r\nimport useResizeObserver from \"use-resize-observer\";\r\n// Step 6 - Adding the chart and theme as dependency to the core fusioncharts\r\nReactFC.fcRoot(FusionCharts, Column2D, FusionTheme);\r\n\r\n// Preparing the chart data\r\nconst chartData = [\r\n {\r\n label: \"Venezuela\",\r\n value: \"290\"\r\n },\r\n {\r\n label: \"Saudi\",\r\n value: \"260\"\r\n },\r\n {\r\n label: \"Canada\",\r\n value: \"180\"\r\n },\r\n {\r\n label: \"Iran\",\r\n value: \"140\"\r\n },\r\n {\r\n label: \"Russia\",\r\n value: \"115\"\r\n },\r\n {\r\n label: \"UAE\",\r\n value: \"100\"\r\n },\r\n {\r\n label: \"US\",\r\n value: \"30\"\r\n },\r\n {\r\n label: \"China\",\r\n value: \"30\"\r\n }\r\n];\r\n\r\n// Create a JSON object to store the chart configurations\r\nconst chartConfigs = {\r\n type: \"column2d\", // The chart type\r\n width: \"100%\", // Width of the chart\r\n height: \"80%\", // Height of the chart\r\n dataFormat: \"json\", // Data type\r\n dataSource: {\r\n // Chart Configuration\r\n chart: {\r\n caption: \"Countries With Most Oil Reserves [2017-18]\", //Set the chart caption\r\n subCaption: \"In MMbbl = One Million barrels\", //Set the chart subcaption\r\n xAxisName: \"Country\", //Set the x-axis name\r\n yAxisName: \"Reserves (MMbbl)\", //Set the y-axis name\r\n numberSuffix: \"K\",\r\n theme: \"fusion\" //Set the theme for your chart\r\n },\r\n // Chart Data - from step 2\r\n data: chartData\r\n }\r\n};\r\n\r\n\r\n\r\nfunction FusionChartTest() {\r\n const [fChart, setFchart] = useState<any>({});\r\n const entered = useRef<boolean>(false);\r\n const id = (Math.random() + 1).toString(36).substring(7);\r\n \r\n const renderComplete = (chart: any): void => {\r\n setFchart(chart);\r\n }\r\n \r\n const { ref } = useResizeObserver<HTMLDivElement>({\r\n onResize: ({ width, height }) => {\r\n if (entered.current == false) {\r\n entered.current = true;\r\n return;\r\n }\r\n fChart.resizeTo(width, height);\r\n },\r\n });\r\n\r\n return ( <div className={'db-fc-container'} ref={ref} id={id}><ReactFC {...chartConfigs} onRender={renderComplete}/></div> );\r\n}\r\n\r\nexport default FusionChartTest;\r\n","import { Button } from \"primereact/button\";\r\nimport { OverlayPanel } from \"primereact/overlaypanel\";\r\nimport React, { useRef} from \"react\";\r\nimport { DataPointSelection } from \"../../types/SeriesMeasure\";\r\nimport { ReactWidgetPM } from \"../../types/widget\";\r\nimport { DashboardDataBinding } from '../../types/DashboardDataBinding';\r\nimport CustomChart from \"./ChartsComponents/CustomCharts/CustomChart\";\r\nimport FusionChart from \"./ChartsComponents/FusionChart\";\r\nimport ApexChart from \"./ChartsComponents/ApexChart\";\r\nimport FusionChartTest from \"./ChartsComponents/FusionChartTest\";\r\n\r\n\r\n\r\ntype WidgetCardProps = {\r\n editBtnClicked(widget: any): any;\r\n deleteBtnClicked(i: any): any;\r\n widget: ReactWidgetPM | undefined;\r\n widgetRef: ReactWidgetPM | undefined;\r\n el: any;\r\n dateFilter: any;\r\n dataBinding: DashboardDataBinding;\r\n isInEditMode: boolean;\r\n onSelectDataPoint: (dataPointSelection: DataPointSelection) => void;\r\n}\r\n\r\n\r\nconst WidgetCard = (props: WidgetCardProps, state: any) => {\r\n const moreBtnToggle = useRef<OverlayPanel>(null);\r\n\r\n\r\n const editWidget = () => {\r\n moreBtnToggle.current?.hide();\r\n props.editBtnClicked(props.widget)\r\n };\r\n\r\n\r\n return (\r\n <div className=\"panel\" key={props.el.i}>\r\n <header style={ {paddingLeft: \"5px\"}}>\r\n <h1></h1>\r\n {\r\n props.isInEditMode ?\r\n <Button\r\n icon=\"pi pi-ellipsis-v\"\r\n className=\"p-button-lg p-button-rounded p-button-text\"\r\n onClick={(e) => moreBtnToggle.current?.toggle(e)}\r\n />\r\n : null\r\n }\r\n\r\n\r\n <OverlayPanel ref={moreBtnToggle} className=\"buttons-overlay\">\r\n <div className=\"buttons-list\">\r\n <div onClick={editWidget} > Edit </div>\r\n <div onClick={() => props.deleteBtnClicked(props.widget?.key)} >Remove</div>\r\n </div>\r\n </OverlayPanel>\r\n </header>\r\n\r\n <div className=\"dl-dashboard-widget\">\r\n {props?.widget?.TypeCode == \"kpi\" ?\r\n <CustomChart dataBinding={props.dataBinding} widget={props.widget} widgetRef={props.widgetRef} onSelectDataPoint={props.onSelectDataPoint} /> :\r\n <FusionChartTest/>\r\n //<ApexChart dataBinding={props.dataBinding} widget={props.widget} widgetRef={props.widgetRef} onSelectDataPoint={props.onSelectDataPoint} />\r\n }\r\n\r\n </div>\r\n </div>\r\n );\r\n};\r\n\r\nexport default WidgetCard;\r\n","export function deepClone (obj){\r\n return JSON.parse(JSON.stringify(obj))\r\n}","import { WidthProvider, Responsive, Layout, Layouts } from \"react-grid-layout\";\r\nimport React, { useEffect, useRef, useState } from \"react\";\r\nimport ColumnChartComponent from \"./ChartsComponents/ColumnChartComponent\";\r\nimport PieChartComponent from \"./ChartsComponents/PieChartComponent\";\r\nimport MixedChartComponent from \"./ChartsComponents/MixedChartComponent\";\r\nimport AreaChartComponent from \"./ChartsComponents/AreaChartComponent\";\r\nimport TimelineChartComponent from \"./ChartsComponents/TimelineChartComponent\";\r\nimport CandleChartComponent from \"./ChartsComponents/CandleChartComponent\";\r\nimport BarChartComponent from \"./ChartsComponents/BarChartComponent\";\r\nimport { ReactWidgetPM } from \"../../types/widget\";\r\nimport WidgetCard from \"./WidgetCard\";\r\nimport { DataPointSelection } from \"../../types/SeriesMeasure\";\r\nimport { DashboardDataBinding } from \"../../types/DashboardDataBinding\";\r\nimport { deepClone } from '../../services/clone';\r\n\r\nconst ResponsiveReactGridLayout = WidthProvider(Responsive);\r\n\r\ntype DashboardDesignerProps = {\r\n editMode: boolean,\r\n Widgetlayouts: { lg: ReactWidgetPM[] },\r\n openEditWidget: (widget: ReactWidgetPM) => void\r\n onLayoutChange: (layouts: Layouts) => void,\r\n dataBinding: DashboardDataBinding,\r\n onSelectDataPoint: (dataPointSelection: DataPointSelection) => void\r\n};\r\nconst DashboardDesigner = (props: DashboardDesignerProps) => {\r\n const array12 = Array.from({ length: 12 }).fill(null);\r\n const minimumPlaceholderRowsCount = 12;\r\n const [layouts, setLayouts] = useState<Layouts>({ lg: [] });\r\n const [placeholderRowsArray, setplaceholderRowsArray] = useState(Array.from({ length: minimumPlaceholderRowsCount }).fill(null));\r\n const [dateFilter, setDateFilter] = useState<Date | Date[] | undefined>(undefined);\r\n const [isInEditMode, setisInEditMode] = useState(false);\r\n const widgetsDictionaryRef = useRef<{ [k: string]: ReactWidgetPM }>({});\r\n const [widgets, setWidgets] = useState<{ lg: ReactWidgetPM[] }>({ lg: [] });\r\n const gridLayoutComponent = useRef<any>(null);\r\n const entered = useRef<boolean>(false);\r\n\r\n useEffect(() => {\r\n FillLayout(props.Widgetlayouts);\r\n }, [props.Widgetlayouts]);\r\n\r\n const FillLayout = (dashboardLayouts: { lg: ReactWidgetPM[] }) => {\r\n var clone: { lg: ReactWidgetPM[] } = deepClone(dashboardLayouts);\r\n var layout = createLayout(clone);\r\n FillWidgetDictionary(clone);\r\n setWidgets(clone);\r\n setLayouts(layout);\r\n UpdatePlaceholderDimensions(layout);\r\n }\r\n const FillWidgetDictionary = (clone: { lg: ReactWidgetPM[] }) => {\r\n for (const item of clone.lg) {\r\n widgetsDictionaryRef.current[item.key] = item;\r\n }\r\n }\r\n const createLayout = (dashboardLayouts: { lg: ReactWidgetPM[] }): Layouts => {\r\n var layout: any = { lg: [] };\r\n dashboardLayouts.lg.map(w => w.Layout as Layout).forEach(e => {\r\n layout.lg.push(e)\r\n })\r\n return layout;\r\n }\r\n useEffect(() => {\r\n setisInEditMode(props.editMode);\r\n }, [props.editMode]);\r\n\r\n\r\n function reset() {\r\n window.localStorage.clear();\r\n window.location.reload();\r\n }\r\n\r\n function onLayoutChange(layout: any, changedLayouts: Layouts) {\r\n // layoutsRef.current = changedLayouts;\r\n UpdateWidget(changedLayouts);\r\n setLayouts(changedLayouts);\r\n UpdatePlaceholderDimensions(changedLayouts);\r\n if (entered.current == false) {\r\n entered.current = true;\r\n return;\r\n }\r\n props.onLayoutChange(changedLayouts);\r\n }\r\n\r\n function UpdateWidget(changedLayouts: Layouts) {\r\n for (const item of changedLayouts.lg) {\r\n if (widgetsDictionaryRef.current[item.i]) {\r\n widgetsDictionaryRef.current[item.i].Layout = item;\r\n }\r\n }\r\n }\r\n\r\n function deletePanel(id) {\r\n var newLayouts = { lg: layouts.lg.filter(e => e.i != id) }\r\n // layoutsRef.current = newLayouts;\r\n setLayouts(newLayouts);\r\n\r\n var newWidgets = { lg: widgets.lg.filter(e => e.key != id) }\r\n FillWidgetDictionary(newWidgets);\r\n setWidgets(newWidgets);\r\n props.onLayoutChange(newLayouts)\r\n };\r\n\r\n function editWidget(widget: ReactWidgetPM) {\r\n widget.ChangeSetOp = 'Update';\r\n props.openEditWidget(widget);\r\n };\r\n\r\n function UpdatePlaceholderDimensions(layouts: Layouts) {\r\n if (!layouts)\r\n return;\r\n var max = minimumPlaceholderRowsCount;\r\n for (const layout of layouts['lg']) {\r\n if (layout.y + layout.h > max)\r\n max = layout.y + layout.h;\r\n }\r\n\r\n var newPlaceholderRows = max + 2;\r\n newPlaceholderRows = newPlaceholderRows < minimumPlaceholderRowsCount ? minimumPlaceholderRowsCount : newPlaceholderRows;\r\n setplaceholderRowsArray(Array.from({ length: newPlaceholderRows }).fill(null));\r\n }\r\n return (<div className=\"dl-full-hight-scroll\">\r\n <div className=\"dl-box\">\r\n {/* <div className=\"dl-row dl-header\">\r\n {renderPageHeader()}\r\n </div> */}\r\n <div className=\"dl-row dl-content\">\r\n <div className=\"dl-grid-container\">\r\n <div className=\"dl-grid dl-grid--bordered\">\r\n {isInEditMode ? placeholderRowsArray.map((e, i) =>\r\n array12.map((e, i) => (\r\n <div key={i}\r\n style={{\r\n height: layoutGridProps.rowHeight,\r\n }}\r\n ></div>\r\n ))\r\n\r\n ) : null}\r\n </div>\r\n\r\n\r\n <ResponsiveReactGridLayout ref={gridLayoutComponent}\r\n {...layoutGridProps}\r\n layouts={layouts}\r\n compactType=\"vertical\"\r\n isDraggable={isInEditMode}\r\n isResizable={isInEditMode}\r\n onWidthChange={() => { }}\r\n onLayoutChange={onLayoutChange}\r\n >\r\n {widgets.lg.map((widget) =>\r\n\r\n <div key={widget.Layout?.i}>\r\n <WidgetCard\r\n isInEditMode={isInEditMode}\r\n key={widget.Layout?.i}\r\n widget={widget}\r\n widgetRef={widgetsDictionaryRef.current[widget.key]}\r\n el={widget}\r\n dataBinding={props.dataBinding}\r\n dateFilter={dateFilter}\r\n editBtnClicked={editWidget}\r\n deleteBtnClicked={deletePanel}\r\n onSelectDataPoint={props.onSelectDataPoint}\r\n />\r\n </div>\r\n )}\r\n </ResponsiveReactGridLayout>\r\n </div>\r\n\r\n </div>\r\n {/* <div className=\"dl-row dl-footer\">\r\n <p><b>footer</b> (fixed height)</p>\r\n </div> */}\r\n </div>\r\n {/* {renderNewWidgetDialog()} */}\r\n\r\n\r\n\r\n\r\n\r\n </div>);\r\n\r\n}\r\n\r\n\r\nexport const layoutGridProps = {\r\n rowHeight: 50,\r\n className: \"layout\",\r\n cols: { lg: 12, md: 6, sm: 2, xs: 1, xxs: 1 },\r\n useCSSTransforms: true,\r\n}\r\n\r\nexport const WidgetTypes = [\r\n { Name: \"Filter\", Disabled: true },\r\n { Name: \"Chart\", Disabled: false },\r\n { Name: \"Data Table\", Disabled: true },\r\n { Name: \"Pivot Table\", Disabled: true },\r\n { Name: \"KPI\", Disabled: true },\r\n { Name: \"Gauge\", Disabled: true },\r\n];\r\nexport const widgetComponents = [\r\n { type: \"Bar\", component: BarChartComponent },\r\n { type: \"Column\", component: ColumnChartComponent },\r\n { type: \"Pie\", component: PieChartComponent },\r\n { type: \"Mixed\", component: MixedChartComponent },\r\n { type: \"Timeline\", component: TimelineChartComponent },\r\n { type: \"Candle\", component: CandleChartComponent },\r\n { type: \"Area\", component: AreaChartComponent },\r\n];\r\n\r\n\r\nexport default DashboardDesigner;\r\n","import * as React from 'react'\r\nimport DashboardDesigner from './features/Dashboard/DashboardDesigner'\r\nimport \"./styles.module.css\"\r\nimport { useEffect, useRef, useState } from \"react\";\r\nimport { Session } from './services/session';\r\nimport { ReactWidgetPM } from './types/widget';\r\nimport { DashboardDataBinding } from './types/DashboardDataBinding';\r\nimport { Layout, Layouts } from 'react-grid-layout';\r\nimport { deepClone } from './services/clone';\r\nimport { DataPointSelection } from './types/SeriesMeasure';\r\n\r\ntype DashboardProps = {\r\n token: string,\r\n tenant: number,\r\n userId: string,\r\n dataBinding: DashboardDataBinding,\r\n onChangeLayouts: (layouts: { lg: ReactWidgetPM[] }) => void,\r\n openEditWidget: (Widget: ReactWidgetPM) => void,\r\n onSelectDataPoint: (dataPointSelection: DataPointSelection) => void;\r\n};\r\nconst Dashboard = (props: DashboardProps) => {\r\n const Widgetlayouts = useRef<{ lg: ReactWidgetPM[] }>({ lg: [] });\r\n const [widgetlayoutsState, setWidgetlayoutsState] = useState<{ lg: ReactWidgetPM[] }>({ lg: [] });\r\n const [isInEditMode, setIsInEditMode] = useState<boolean>(false);\r\n\r\n useEffect(() => {\r\n props.dataBinding.onGetLayouts.subscribe(layouts => {\r\n Widgetlayouts.current = layouts;\r\n setWidgetlayoutsState(deepClone(Widgetlayouts.current));\r\n\r\n });\r\n props.dataBinding.isOnEditLayout.subscribe(e => {\r\n setIsInEditMode(e);\r\n });\r\n props.dataBinding.onAddWidget.subscribe(w => {\r\n Widgetlayouts.current.lg.push(w);\r\n setWidgetlayoutsState(deepClone(Widgetlayouts.current));\r\n });\r\n }, [])\r\n\r\n\r\n Session.CurrentUserId = props.userId;\r\n Session.Tenant = props.tenant;\r\n Session.Token = props.token;\r\n if (props?.token?.length > 0)\r\n localStorage.setItem(\"token\", props?.token);\r\n\r\n\r\n\r\n const updateWidgets = (layouts: Layouts) => {\r\n var layoutsDic: { [key: string]: Layout } = {};\r\n Object.keys(layouts).forEach(sizeType => {\r\n if (layouts[sizeType].length > 0) {\r\n layouts[sizeType].map(layout => {\r\n layoutsDic[layout.i] = layout;\r\n })\r\n return;\r\n }\r\n })\r\n var newWidgetlayouts: ReactWidgetPM[] = [];\r\n Widgetlayouts.current.lg.forEach(widget => {\r\n if (layoutsDic[widget.key]) {\r\n widget.StartPotistion = `${layoutsDic[widget.key].x},${layoutsDic[widget.key].y}`;\r\n widget.EndPosition = `${layoutsDic[widget.key].w},${layoutsDic[widget.key].h}`;\r\n widget.Layout = layoutsDic[widget.key];\r\n newWidgetlayouts.push(widget);\r\n }\r\n\r\n });\r\n Widgetlayouts.current = { lg: newWidgetlayouts };\r\n props.onChangeLayouts(Widgetlayouts.current);\r\n }\r\n\r\n\r\n\r\n return (\r\n <div className='dl-full-hight'>\r\n <div className='dl-dashboard-body'>\r\n <DashboardDesigner onSelectDataPoint={props.onSelectDataPoint} Widgetlayouts={widgetlayoutsState} dataBinding={props.dataBinding} editMode={isInEditMode} onLayoutChange={updateWidgets} openEditWidget={(widget: ReactWidgetPM) => props.openEditWidget(widget)} ></DashboardDesigner>\r\n </div>\r\n </div >\r\n\r\n )\r\n}\r\nexport default Dashboard;\r\n\r\n"],"names":["Tools","GetLogitudeURL","logitude_url","location","href","replace","indexOf","urlArr","split","url","substring","lastIndexOf","length","Map","from","to","keys","Object","k","ApiServices","_apiUrl","getByFilters","api","filters","token","getTokenFromStorage","apiURL","ConcatFiltersToURL","axios","get","headers","post","date","window","localStorage","getItem","urlparameters","mykeys","addtionalFiltersValues","i","propName","propValue","ignoreFilter","concat","encodeURIComponent","JSON","stringify","DashboardAnalyticsService","_ApiServices","getData","widget","controller","getKpiData","KpiChart","props","useState","isView","setisView","viewError","setViewError","isLoadingDrow","useRef","widgetRef","isDataLoaded","hasDataError","error","setEror","data","setData","title","setTitle","useEffect","setTimeout","current","updateView","customChartProps","dataBinding","onEditWidget","subscribe","e","key","RefreshData","Title","dashboardAnalyticsService","postWidget","onChange","undefined","then","result","console","log","response","ErrorMessage","message","kpiClick","measureFieldId","WidgetMeasures","MeasureFieldId","onSelectDataPoint","Widget","React","className","ProgressSpinner","style","width","height","strokeWidth","animationDuration","onClick","Value","src","CustomChart","project","TypeCode","ReactFC","fcRoot","FusionCharts","Column2D","FusionTheme","chartData","label","value","chartConfigs","type","dataFormat","dataSource","chart","caption","subCaption","xAxisName","yAxisName","numberSuffix","theme","FusionChartTest","fChart","setFchart","entered","id","Math","random","toString","renderComplete","useResizeObserver","onResize","resizeTo","ref","onRender","WidgetCard","state","moreBtnToggle","editWidget","hide","editBtnClicked","el","paddingLeft","isInEditMode","Button","icon","toggle","OverlayPanel","deleteBtnClicked","deepClone","obj","parse","ResponsiveReactGridLayout","WidthProvider","Responsive","DashboardDesigner","array12","Array","fill","minimumPlaceholderRowsCount","lg","layouts","setLayouts","placeholderRowsArray","setplaceholderRowsArray","dateFilter","setisInEditMode","widgetsDictionaryRef","widgets","setWidgets","gridLayoutComponent","FillLayout","Widgetlayouts","dashboardLayouts","clone","layout","createLayout","FillWidgetDictionary","UpdatePlaceholderDimensions","item","map","w","Layout","forEach","push","editMode","onLayoutChange","changedLayouts","UpdateWidget","deletePanel","newLayouts","filter","newWidgets","ChangeSetOp","openEditWidget","max","y","h","newPlaceholderRows","layoutGridProps","rowHeight","compactType","isDraggable","isResizable","onWidthChange","cols","md","sm","xs","xxs","useCSSTransforms","Dashboard","widgetlayoutsState","setWidgetlayoutsState","setIsInEditMode","onGetLayouts","isOnEditLayout","onAddWidget","setItem","updateWidgets","layoutsDic","sizeType","newWidgetlayouts","StartPotistion","x","EndPosition","onChangeLayouts"],"mappings":"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"}
1
+ {"version":3,"file":"index.modern.js","sources":["../src/services/tools.ts","../src/services/ApiServices.ts","../src/services/DashboardAnalyticsService.ts","../src/features/Dashboard/ChartsComponents/CustomCharts/KpiChart.tsx","../src/features/Dashboard/ChartsComponents/CustomCharts/CustomChart.tsx","../src/features/Dashboard/ChartsComponents/FusionChartObjectBuilder.tsx","../src/features/Dashboard/ChartsComponents/FusionChart.tsx","../src/features/Dashboard/WidgetCard.tsx","../src/services/clone.ts","../src/features/Dashboard/DashboardDesigner.tsx","../src/index.tsx"],"sourcesContent":["export class Tools {\r\n public static GetLogitudeURL() {\r\n\r\n var logitude_url = location.href.replace('index.html', '');\r\n\r\n if (location.href.indexOf('localhost') > -1) {\r\n logitude_url = 'http://localhost:9996';//localhost:9996//';//\r\n }\r\n\r\n else {\r\n var urlArr = location.href.split(\"/index.html\");\r\n var url = urlArr[0];\r\n url = url.replace(url.substring(url.lastIndexOf('/'), url.length), \"\");\r\n logitude_url = url;\r\n }\r\n\r\n return logitude_url;\r\n }\r\n\r\n public static Map(from: any, to: any) {\r\n if (!from)\r\n return;\r\n if (!to)\r\n to = {};\r\n var keys = Object.keys(from);\r\n for (const k of keys) {\r\n if(from[k]){\r\n to[k] = from[k];\r\n }\r\n }\r\n }\r\n}","import axios from \"axios\";\r\nimport { ApiQueryFilters } from \"../common/data-contracts/ApiQueryFilter\";\r\nimport { APIResult } from \"../types/APIResult\";\r\nimport { Tools } from './tools';\r\n\r\n\r\nexport class ApiServices{ \r\n private _apiUrl: string;\r\n constructor(){\r\n this._apiUrl = Tools.GetLogitudeURL() ;\r\n }\r\n getByFilters<T>(api,filters: ApiQueryFilters) {\r\n \r\n let token: string = this.getTokenFromStorage();\r\n\t\tvar apiURL = `${this._apiUrl}${api}`;\r\n\t\tapiURL = this.ConcatFiltersToURL(filters, apiURL);\r\n\r\n return axios.get<APIResult<T>>(apiURL, { headers: { 'Content-Type': 'application/json', 'Token': token } });\r\n }\r\n get<T>(api) {\r\n \r\n let token: string = this.getTokenFromStorage();\r\n\t\tvar apiURL = `${this._apiUrl}${api}`;\r\n return axios.get<T>(apiURL, { headers: { 'Content-Type': 'application/json', 'Token': token } });\r\n }\r\n post<T>(api,date){\r\n let token: string = this.getTokenFromStorage();\r\n\t\tvar apiURL = `${this._apiUrl}${api}`;\r\n return axios.post<T>(apiURL,date, { headers: { 'Content-Type': 'application/json', 'Token': token } });\r\n }\r\n\r\n getTokenFromStorage(){\r\n return window.localStorage.getItem(\"token\") || '';\r\n }\r\n private ConcatFiltersToURL(filters: ApiQueryFilters, urlparameters: string)\r\n {\r\n var mykeys = Object.keys(filters);\r\n var addtionalFiltersValues: string | null = null;\r\n\r\n for (var i in mykeys) {\r\n var propName = mykeys[i];\r\n var propValue = filters[propName];\r\n var ignoreFilter = ((propName.indexOf(\"Operator\") > 0 && propValue == \"Equals\") || propName == \"AdditionalFilters\");\r\n\r\n if (urlparameters != \"?\") {\r\n urlparameters = urlparameters.concat('&');\r\n }\r\n\r\n if (!ignoreFilter) {\r\n propValue = propValue ? encodeURIComponent(propValue) : '';\r\n urlparameters = urlparameters.concat(propName.concat('=').concat(propValue));\r\n }\r\n\r\n if (propName == \"AdditionalFilters\" && propValue.length > 0) {\r\n addtionalFiltersValues = JSON.stringify(propValue);\r\n }\r\n }\r\n\r\n if (addtionalFiltersValues) {\r\n urlparameters = urlparameters.concat(\"&AdditionalFilters=\").concat(addtionalFiltersValues);\r\n }\r\n return urlparameters;\r\n }\r\n}","import axios from \"axios\";\r\nimport { ApiQueryFilters } from \"../common/data-contracts/ApiQueryFilter\";\r\nimport { ReactDashboardPM } from \"../types/Dashboard\";\r\nimport { SeriesMeasure } from \"../types/SeriesMeasure\";\r\nimport { ApiServices } from \"./ApiServices\";\r\nimport { Tools } from './tools';\r\nimport { ReactWidgetPM } from '../types/widget';\r\nimport { KpiChart } from \"../types/KpiChart\";\r\n\r\n\r\nexport class DashboardAnalyticsService{ \r\n _ApiServices:ApiServices;\r\n controller = 'DashboardAnalytics';\r\n constructor(){\r\n this._ApiServices = new ApiServices();\r\n }\r\n \r\n\r\n getData(widget: ReactWidgetPM) {\r\n return this._ApiServices.post<SeriesMeasure[]>(`/api/${this.controller}/PostGetDataAnalytic`,widget);\r\n }\r\n\r\n getKpiData(widget: ReactWidgetPM) {\r\n return this._ApiServices.post<KpiChart>(`/api/${this.controller}/PostGetKpiData`,widget);\r\n }\r\n \r\n \r\n}","import { ProgressSpinner } from \"primereact/progressspinner\";\r\nimport React, { useEffect, useRef, useState } from \"react\";\r\nimport { DashboardAnalyticsService } from \"../../../../services/DashboardAnalyticsService\";\r\nimport { Tools } from \"../../../../services/tools\";\r\nimport { DashboardDataBinding } from \"../../../../types/DashboardDataBinding\";\r\nimport { KpiChart } from \"../../../../types/KpiChart\";\r\nimport { DataPointSelection } from \"../../../../types/SeriesMeasure\";\r\nimport { ReactWidgetPM } from \"../../../../types/widget\";\r\nimport { CustomChartProps } from \"./CustomChart\";\r\n\r\ntype KpiChartProps = {\r\n customChartProps: CustomChartProps;\r\n};\r\nconst KpiChart = (props: KpiChartProps) => {\r\n const [isView, setisView] = useState<boolean>(false);\r\n const [viewError, setViewError] = useState<boolean>(false);\r\n const isLoadingDrow = useRef(true);\r\n const widget = useRef<ReactWidgetPM>();\r\n const widgetRef = useRef<ReactWidgetPM>();\r\n const isDataLoaded = useRef<boolean>(false);\r\n const hasDataError = useRef<boolean>(false);\r\n const [error, setEror] = useState<string>('');\r\n const [data, setData] = useState<KpiChart>();\r\n const [title, setTitle] = useState<string>();\r\n\r\n useEffect(() => {\r\n setTimeout(function () {\r\n isLoadingDrow.current = false;\r\n updateView();\r\n }, 500);\r\n widget.current = props.customChartProps.widget;\r\n props.customChartProps.dataBinding?.onEditWidget.subscribe(e => {\r\n if (e.key == widget.current?.key) {\r\n Tools.Map(e, widget.current);\r\n RefreshData();\r\n }\r\n\r\n })\r\n }, [])\r\n\r\n useEffect(() => {\r\n widgetRef.current = props.customChartProps.widgetRef;\r\n RefreshData();\r\n }, []);\r\n\r\n useEffect(() => {\r\n widgetRef.current = props.customChartProps.widgetRef;\r\n }, [props.customChartProps.widgetRef]);\r\n\r\n const RefreshData = () => {\r\n setTitle(props?.customChartProps?.widget?.Title)\r\n var dashboardAnalyticsService = new DashboardAnalyticsService();\r\n var postWidget: any = { ...widget.current };\r\n postWidget.onChange = undefined;\r\n dashboardAnalyticsService.getKpiData(postWidget as ReactWidgetPM).then(result => {\r\n setData(result.data);\r\n isDataLoaded.current = true;\r\n hasDataError.current = false;\r\n updateView();\r\n }, error => {\r\n console.log('error', error);\r\n if (error?.response?.data?.ErrorMessage)\r\n setEror(error?.response?.data?.ErrorMessage);\r\n else\r\n setEror(error.message);\r\n isDataLoaded.current = true;\r\n hasDataError.current = true;\r\n updateView();\r\n })\r\n }\r\n\r\n const updateView = () => {\r\n if (isDataLoaded.current && !isLoadingDrow.current && !hasDataError.current) {\r\n setisView(true);\r\n setViewError(false);\r\n }\r\n\r\n if (isDataLoaded.current && !isLoadingDrow.current && hasDataError.current) {\r\n setisView(false);\r\n setViewError(true);\r\n }\r\n\r\n }\r\n\r\n const kpiClick = () => {\r\n var measureFieldId;\r\n if (props.customChartProps?.widgetRef?.WidgetMeasures)\r\n measureFieldId = props.customChartProps?.widgetRef?.WidgetMeasures[0]?.MeasureFieldId;\r\n props.customChartProps.onSelectDataPoint({\r\n MeasureFieldId: measureFieldId,\r\n Widget: props.customChartProps.widget\r\n });\r\n }\r\n\r\n return (\r\n !isView && !viewError ?\r\n <div className={'dl-full-hight dl-flex-content-center spinner-custome'}>\r\n <ProgressSpinner style={{ width: '100px', height: '100px' }} strokeWidth=\"4\" animationDuration=\"2s\" />\r\n </div>\r\n :\r\n isView ?\r\n <div className={\"kpIcontainer\"} onClick={kpiClick}>\r\n <div className={\"kpIHeader\"}>{title}</div>\r\n <div>{data?.Value} </div>\r\n </div>\r\n : <div className=\"dl-flex-content-center dl-full-hight \" >\r\n <div className=\"dl-tooltip\">\r\n <img width={100} src={\"https://www.seekpng.com/png/full/334-3345964_error-icon-png.png\"} />\r\n <span className=\"dl-tooltiptext\">{error}</span>\r\n </div>\r\n\r\n\r\n </div>\r\n );\r\n}\r\n\r\n\r\nexport default KpiChart;","import React from \"react\";\r\nimport { DashboardDataBinding } from \"../../../../types/DashboardDataBinding\";\r\nimport { DataPointSelection } from \"../../../../types/SeriesMeasure\";\r\nimport { ReactWidgetPM } from \"../../../../types/widget\";\r\nimport KpiChart from \"./KpiChart\";\r\n\r\n\r\nexport type CustomChartProps = {\r\n widget: ReactWidgetPM | undefined,\r\n widgetRef: ReactWidgetPM | undefined,\r\n dataBinding: DashboardDataBinding;\r\n onSelectDataPoint: (dataPointSelection: DataPointSelection) => void;\r\n};\r\nconst CustomChart = (props: CustomChartProps) => {\r\n const project = () => {\r\n switch (props.widget?.TypeCode) {\r\n case \"kpi\": return <KpiChart customChartProps={props} />;\r\n default: return <div>Invalid Type</div>;\r\n }\r\n }\r\n return (\r\n <div style={{ height: '100%' }}>{project()}</div>\r\n );\r\n}\r\n\r\n\r\nexport default CustomChart;","import { ChartObject } from \"fusioncharts\";\r\nimport { SeriesMeasure } from \"../../../types/SeriesMeasure\";\r\nimport { FusionChartProps } from \"./FusionChart\";\r\n\r\nexport function BuildFusionChartObject(seriesMeasures: SeriesMeasure[], props: FusionChartProps, id: string): ChartObject {\r\n handelNullLabels(seriesMeasures);\r\n let defaultChart = getDefaultChartobject(seriesMeasures, props, id);\r\n switch (props.widget?.TypeCode) {\r\n case 'bar':\r\n return getBarObject(seriesMeasures, defaultChart);\r\n case 'line':\r\n return getLineObject(seriesMeasures, defaultChart);\r\n case 'pie':\r\n return getPieObject(seriesMeasures, defaultChart);\r\n case 'donut':\r\n return getDonutObject(seriesMeasures, defaultChart);\r\n default:\r\n return defaultChart;\r\n }\r\n}\r\n\r\n\r\nfunction handelNullLabels(seriesMeasures: SeriesMeasure[]) {\r\n seriesMeasures.forEach(element => {\r\n element.SeriesMeasureVulues.forEach(value => {\r\n if (!value.Label || value.Label == '')\r\n value.Label = 'Not defined'\r\n });\r\n });\r\n}\r\n\r\nfunction getBarObject(seriesMeasures: SeriesMeasure[], chart: ChartObject): ChartObject {\r\n chart.type = \"scrollbar2d\";\r\n return chart;\r\n}\r\n\r\nfunction getLineObject(seriesMeasures: SeriesMeasure[], chart: ChartObject): ChartObject {\r\n chart.type = \"scrollline2d\";\r\n return chart;\r\n}\r\n\r\nfunction getDonutObject(seriesMeasures: SeriesMeasure[], chart: ChartObject): ChartObject {\r\n chart.type = \"doughnut2d\";\r\n return chart;\r\n}\r\n\r\nfunction getPieObject(seriesMeasures: SeriesMeasure[], chart: ChartObject): ChartObject {\r\n chart.type = \"pie2d\";\r\n return chart;\r\n}\r\n\r\nfunction getDefaultChartobject(seriesMeasures: SeriesMeasure[], props: FusionChartProps, id: string): ChartObject {\r\n let chart = {} as ChartObject;\r\n chart.type = \"column2d\";\r\n chart.width = \"100%\";\r\n chart.height = \"80%\";\r\n chart.dataFormat = \"json\";\r\n buildChartDataSource(chart, props, seriesMeasures);\r\n return chart;\r\n}\r\n\r\n\r\nfunction buildChartDataSource(chart: ChartObject, props: FusionChartProps, seriesMeasures: SeriesMeasure[]) {\r\n if (!seriesMeasures || !seriesMeasures[0]) return;\r\n let chartinfo = {\r\n caption: props.widget?.Title,\r\n theme: \"fusion\",\r\n scrollHeight: \"5\",\r\n scrollWidth: \"5\",\r\n scrollPadding: \"8\",\r\n flatScrollBars: \"1\",\r\n enableSlicing: \"0\",\r\n showLegend: \"0\",\r\n };\r\n\r\n // pie donut lines\r\n // smartLineColor: \"#ff0000\",\r\n // smartLineThickness: \"1\",\r\n // smartLineAlpha: \"100\",\r\n // isSmartLineSlanted: \"0\"\r\n if (props.widget?.TypeCode == \"bar\" || props.widget?.TypeCode == \"line\") {\r\n chart.dataSource = {\r\n chart: chartinfo,\r\n categories: buildCategories(seriesMeasures),\r\n dataset: buildDataSet(seriesMeasures)\r\n };\r\n return;\r\n }\r\n chart.dataSource = {\r\n chart: chartinfo,\r\n data: buildDataSource(seriesMeasures),\r\n };\r\n}\r\n\r\nfunction buildDataSource(values: SeriesMeasure[]) {\r\n let data: any[] = [];\r\n if (!values || !values[0]) return data;\r\n data = values[0].SeriesMeasureVulues.map((e) => {\r\n return {\r\n value: e.Value,\r\n label: e.Label,\r\n id: { GroupById: e.GroupById, MeasureFieldId: values[0].MeasureFieldId }\r\n }\r\n });\r\n return data;\r\n}\r\n\r\nfunction buildDataSet(seriesMeasures: SeriesMeasure[]) {\r\n let dataSet: any[] = [];\r\n let position = 1;\r\n seriesMeasures.forEach(seriesMeasure => {\r\n let datas = seriesMeasure.SeriesMeasureVulues.map(e => {\r\n return { value: e.Value, id: { GroupById: e.GroupById, MeasureFieldId: seriesMeasure.MeasureFieldId } }\r\n });\r\n dataSet.push({ data: datas, seriesname: \"series-\" + position });\r\n position++;\r\n });\r\n return dataSet;\r\n}\r\n\r\nfunction buildCategories(seriesMeasures: SeriesMeasure[]) {\r\n var categories = seriesMeasures[0].SeriesMeasureVulues.map((e) => {\r\n return {\r\n label: e.Label\r\n }\r\n });\r\n var result: any[] = [];\r\n result.push({ category: categories });\r\n return result;\r\n}","import React, { useId, useRef, useState } from \"react\";\r\nimport ReactFC from 'react-fusioncharts';\r\nimport { DashboardDataBinding } from \"../../../types/DashboardDataBinding\";\r\nimport { DataPointSelection } from \"../../../types/SeriesMeasure\";\r\nimport { ReactWidgetPM } from \"../../../types/widget\";\r\nimport FusionCharts, { ChartObject } from 'fusioncharts';\r\nimport Charts from 'fusioncharts/fusioncharts.charts';\r\nimport FusionTheme from 'fusioncharts/themes/fusioncharts.theme.fusion';\r\nimport { useEffect } from \"react\";\r\nimport { Tools } from \"../../../services/tools\";\r\nimport { DashboardAnalyticsService } from \"../../../services/DashboardAnalyticsService\";\r\nimport { ProgressSpinner } from \"primereact/progressspinner\";\r\nimport { BuildFusionChartObject } from \"./FusionChartObjectBuilder\";\r\nimport useResizeObserver from \"use-resize-observer\";\r\n\r\nReactFC.fcRoot(FusionCharts, Charts, FusionTheme);\r\n\r\nexport type FusionChartProps = {\r\n widget: ReactWidgetPM | undefined,\r\n widgetRef: ReactWidgetPM | undefined,\r\n dataBinding: DashboardDataBinding;\r\n onSelectDataPoint: (dataPointSelection: DataPointSelection) => void;\r\n};\r\nconst FusionChart = (props: FusionChartProps) => {\r\n const [isView, setisView] = useState<boolean>(false);\r\n const [viewError, setViewError] = useState<boolean>(false);\r\n const isLoadingDrow = useRef(true);\r\n const widget = useRef<ReactWidgetPM>();\r\n const widgetRef = useRef<ReactWidgetPM>();\r\n const isDataLoaded = useRef<boolean>(false);\r\n const hasDataError = useRef<boolean>(false);\r\n const [error, setError] = useState<string>('');\r\n const [args, setArgs] = useState<ChartObject>({});\r\n const [fChart, setFchart] = useState<any>({});\r\n const entered = useRef<boolean>(false);\r\n const id = (Math.random() + 1).toString(36).substring(7);\r\n\r\n useEffect(() => {\r\n setTimeout(function () {\r\n isLoadingDrow.current = false;\r\n updateView();\r\n }, 500);\r\n widget.current = props.widget;\r\n props.dataBinding?.onEditWidget.subscribe(e => {\r\n if (e.key == widget.current?.key) {\r\n Tools.Map(e, widget.current);\r\n RefreshData();\r\n }\r\n })\r\n }, [])\r\n\r\n const updateView = () => {\r\n if (isDataLoaded.current && !isLoadingDrow.current && !hasDataError.current) {\r\n setisView(true);\r\n setViewError(false);\r\n }\r\n\r\n if (isDataLoaded.current && !isLoadingDrow.current && hasDataError.current) {\r\n setisView(false);\r\n setViewError(true);\r\n }\r\n }\r\n\r\n useEffect(() => {\r\n widgetRef.current = props.widgetRef;\r\n RefreshData();\r\n }, []);\r\n\r\n useEffect(() => {\r\n widgetRef.current = props.widgetRef;\r\n }, [props.widgetRef]);\r\n\r\n const RefreshData = () => {\r\n var dashboardAnalyticsService = new DashboardAnalyticsService();\r\n var postWidget: any = { ...widget.current };\r\n postWidget.onChange = undefined;\r\n dashboardAnalyticsService.getData(postWidget as ReactWidgetPM).then(result => {\r\n updateView();\r\n const chart = BuildFusionChartObject(result.data, props, id);\r\n setArgs(chart);\r\n isDataLoaded.current = true;\r\n hasDataError.current = false;\r\n }, error => {\r\n console.log('error', error);\r\n if (error?.response?.data?.ErrorMessage)\r\n setError(error?.response?.data?.ErrorMessage);\r\n else\r\n setError(error.message);\r\n isDataLoaded.current = true;\r\n hasDataError.current = true;\r\n updateView();\r\n })\r\n }\r\n\r\n const dataplotClick = (eventObj: any, dataObj: any): void => {\r\n props.onSelectDataPoint({\r\n GroupById: dataObj.id.groupbyid,\r\n MeasureFieldId: dataObj.id.measurefieldid,\r\n Widget: props.widget\r\n });\r\n };\r\n\r\n const renderComplete = (chart: any): void => {\r\n setFchart(chart);\r\n }\r\n\r\n const { ref } = useResizeObserver<HTMLDivElement>({\r\n onResize: ({ width, height }) => {\r\n if (entered.current == false) {\r\n entered.current = true;\r\n return;\r\n }\r\n fChart.resizeTo(width, height);\r\n },\r\n });\r\n\r\n return (\r\n !isView && !viewError ?\r\n <div className={'dl-full-hight dl-flex-content-center spinner-custome'}>\r\n <ProgressSpinner style={{ width: '100px', height: '100px' }} strokeWidth=\"4\" animationDuration=\"2s\" />\r\n </div>\r\n :\r\n isView ?\r\n <div className={'db-fc-container'} ref={ref}><ReactFC {...args} fcEvent-dataplotClick={dataplotClick} onRender={renderComplete} /></div>\r\n : <div className=\"dl-flex-content-center dl-full-hight \" >\r\n <div className=\"dl-tooltip\">\r\n <img width={100} src={\"https://www.seekpng.com/png/full/334-3345964_error-icon-png.png\"} />\r\n <span className=\"dl-tooltiptext\">{error}</span>\r\n </div>\r\n </div>\r\n )\r\n}\r\nexport default FusionChart;","import { Button } from \"primereact/button\";\r\nimport { OverlayPanel } from \"primereact/overlaypanel\";\r\nimport React, { useRef} from \"react\";\r\nimport { DataPointSelection } from \"../../types/SeriesMeasure\";\r\nimport { ReactWidgetPM } from \"../../types/widget\";\r\nimport { DashboardDataBinding } from '../../types/DashboardDataBinding';\r\nimport CustomChart from \"./ChartsComponents/CustomCharts/CustomChart\";\r\nimport FusionChart from \"./ChartsComponents/FusionChart\";\r\nimport ApexChart from \"./ChartsComponents/ApexChart\";\r\n\r\n\r\n\r\ntype WidgetCardProps = {\r\n editBtnClicked(widget: any): any;\r\n deleteBtnClicked(i: any): any;\r\n widget: ReactWidgetPM | undefined;\r\n widgetRef: ReactWidgetPM | undefined;\r\n el: any;\r\n dateFilter: any;\r\n dataBinding: DashboardDataBinding;\r\n isInEditMode: boolean;\r\n onSelectDataPoint: (dataPointSelection: DataPointSelection) => void;\r\n}\r\n\r\n\r\nconst WidgetCard = (props: WidgetCardProps, state: any) => {\r\n const moreBtnToggle = useRef<OverlayPanel>(null);\r\n\r\n\r\n const editWidget = () => {\r\n moreBtnToggle.current?.hide();\r\n props.editBtnClicked(props.widget)\r\n };\r\n\r\n\r\n return (\r\n <div className=\"panel\" key={props.el.i}>\r\n <header style={ {paddingLeft: \"5px\"}}>\r\n <h1></h1>\r\n {\r\n props.isInEditMode ?\r\n <Button\r\n icon=\"pi pi-ellipsis-v\"\r\n className=\"p-button-lg p-button-rounded p-button-text\"\r\n onClick={(e) => moreBtnToggle.current?.toggle(e)}\r\n />\r\n : null\r\n }\r\n\r\n\r\n <OverlayPanel ref={moreBtnToggle} className=\"buttons-overlay\">\r\n <div className=\"buttons-list\">\r\n <div onClick={editWidget} > Edit </div>\r\n <div onClick={() => props.deleteBtnClicked(props.widget?.key)} >Remove</div>\r\n </div>\r\n </OverlayPanel>\r\n </header>\r\n\r\n <div className=\"dl-dashboard-widget\">\r\n {props?.widget?.TypeCode == \"kpi\" ?\r\n <CustomChart dataBinding={props.dataBinding} widget={props.widget} widgetRef={props.widgetRef} onSelectDataPoint={props.onSelectDataPoint} /> :\r\n <FusionChart dataBinding={props.dataBinding} widget={props.widget} widgetRef={props.widgetRef} onSelectDataPoint={props.onSelectDataPoint} />\r\n //<ApexChart dataBinding={props.dataBinding} widget={props.widget} widgetRef={props.widgetRef} onSelectDataPoint={props.onSelectDataPoint} />\r\n }\r\n\r\n </div>\r\n </div>\r\n );\r\n};\r\n\r\nexport default WidgetCard;\r\n","export function deepClone (obj){\r\n return JSON.parse(JSON.stringify(obj))\r\n}","import { WidthProvider, Responsive, Layout, Layouts } from \"react-grid-layout\";\r\nimport React, { useEffect, useRef, useState } from \"react\";\r\nimport ColumnChartComponent from \"./ChartsComponents/ColumnChartComponent\";\r\nimport PieChartComponent from \"./ChartsComponents/PieChartComponent\";\r\nimport MixedChartComponent from \"./ChartsComponents/MixedChartComponent\";\r\nimport AreaChartComponent from \"./ChartsComponents/AreaChartComponent\";\r\nimport TimelineChartComponent from \"./ChartsComponents/TimelineChartComponent\";\r\nimport CandleChartComponent from \"./ChartsComponents/CandleChartComponent\";\r\nimport BarChartComponent from \"./ChartsComponents/BarChartComponent\";\r\nimport { ReactWidgetPM } from \"../../types/widget\";\r\nimport WidgetCard from \"./WidgetCard\";\r\nimport { DataPointSelection } from \"../../types/SeriesMeasure\";\r\nimport { DashboardDataBinding } from \"../../types/DashboardDataBinding\";\r\nimport { deepClone } from '../../services/clone';\r\n\r\nconst ResponsiveReactGridLayout = WidthProvider(Responsive);\r\n\r\ntype DashboardDesignerProps = {\r\n editMode: boolean,\r\n Widgetlayouts: { lg: ReactWidgetPM[] },\r\n openEditWidget: (widget: ReactWidgetPM) => void\r\n onLayoutChange: (layouts: Layouts) => void,\r\n dataBinding: DashboardDataBinding,\r\n onSelectDataPoint: (dataPointSelection: DataPointSelection) => void\r\n};\r\nconst DashboardDesigner = (props: DashboardDesignerProps) => {\r\n const array12 = Array.from({ length: 12 }).fill(null);\r\n const minimumPlaceholderRowsCount = 12;\r\n const [layouts, setLayouts] = useState<Layouts>({ lg: [] });\r\n const [placeholderRowsArray, setplaceholderRowsArray] = useState(Array.from({ length: minimumPlaceholderRowsCount }).fill(null));\r\n const [dateFilter, setDateFilter] = useState<Date | Date[] | undefined>(undefined);\r\n const [isInEditMode, setisInEditMode] = useState(false);\r\n const widgetsDictionaryRef = useRef<{ [k: string]: ReactWidgetPM }>({});\r\n const [widgets, setWidgets] = useState<{ lg: ReactWidgetPM[] }>({ lg: [] });\r\n const gridLayoutComponent = useRef<any>(null);\r\n const entered = useRef<boolean>(false);\r\n\r\n useEffect(() => {\r\n FillLayout(props.Widgetlayouts);\r\n }, [props.Widgetlayouts]);\r\n\r\n const FillLayout = (dashboardLayouts: { lg: ReactWidgetPM[] }) => {\r\n var clone: { lg: ReactWidgetPM[] } = deepClone(dashboardLayouts);\r\n var layout = createLayout(clone);\r\n FillWidgetDictionary(clone);\r\n setWidgets(clone);\r\n setLayouts(layout);\r\n UpdatePlaceholderDimensions(layout);\r\n }\r\n const FillWidgetDictionary = (clone: { lg: ReactWidgetPM[] }) => {\r\n for (const item of clone.lg) {\r\n widgetsDictionaryRef.current[item.key] = item;\r\n }\r\n }\r\n const createLayout = (dashboardLayouts: { lg: ReactWidgetPM[] }): Layouts => {\r\n var layout: any = { lg: [] };\r\n dashboardLayouts.lg.map(w => w.Layout as Layout).forEach(e => {\r\n layout.lg.push(e)\r\n })\r\n return layout;\r\n }\r\n useEffect(() => {\r\n setisInEditMode(props.editMode);\r\n }, [props.editMode]);\r\n\r\n\r\n function reset() {\r\n window.localStorage.clear();\r\n window.location.reload();\r\n }\r\n\r\n function onLayoutChange(layout: any, changedLayouts: Layouts) {\r\n // layoutsRef.current = changedLayouts;\r\n UpdateWidget(changedLayouts);\r\n setLayouts(changedLayouts);\r\n UpdatePlaceholderDimensions(changedLayouts);\r\n if (entered.current == false) {\r\n entered.current = true;\r\n return;\r\n }\r\n props.onLayoutChange(changedLayouts);\r\n }\r\n\r\n function UpdateWidget(changedLayouts: Layouts) {\r\n for (const item of changedLayouts.lg) {\r\n if (widgetsDictionaryRef.current[item.i]) {\r\n widgetsDictionaryRef.current[item.i].Layout = item;\r\n }\r\n }\r\n }\r\n\r\n function deletePanel(id) {\r\n var newLayouts = { lg: layouts.lg.filter(e => e.i != id) }\r\n // layoutsRef.current = newLayouts;\r\n setLayouts(newLayouts);\r\n\r\n var newWidgets = { lg: widgets.lg.filter(e => e.key != id) }\r\n FillWidgetDictionary(newWidgets);\r\n setWidgets(newWidgets);\r\n props.onLayoutChange(newLayouts)\r\n };\r\n\r\n function editWidget(widget: ReactWidgetPM) {\r\n widget.ChangeSetOp = 'Update';\r\n props.openEditWidget(widget);\r\n };\r\n\r\n function UpdatePlaceholderDimensions(layouts: Layouts) {\r\n if (!layouts)\r\n return;\r\n var max = minimumPlaceholderRowsCount;\r\n for (const layout of layouts['lg']) {\r\n if (layout.y + layout.h > max)\r\n max = layout.y + layout.h;\r\n }\r\n\r\n var newPlaceholderRows = max + 2;\r\n newPlaceholderRows = newPlaceholderRows < minimumPlaceholderRowsCount ? minimumPlaceholderRowsCount : newPlaceholderRows;\r\n setplaceholderRowsArray(Array.from({ length: newPlaceholderRows }).fill(null));\r\n }\r\n return (<div className=\"dl-full-hight-scroll\">\r\n <div className=\"dl-box\">\r\n {/* <div className=\"dl-row dl-header\">\r\n {renderPageHeader()}\r\n </div> */}\r\n <div className=\"dl-row dl-content\">\r\n <div className=\"dl-grid-container\">\r\n <div className=\"dl-grid dl-grid--bordered\">\r\n {isInEditMode ? placeholderRowsArray.map((e, i) =>\r\n array12.map((e, i) => (\r\n <div key={i}\r\n style={{\r\n height: layoutGridProps.rowHeight,\r\n }}\r\n ></div>\r\n ))\r\n\r\n ) : null}\r\n </div>\r\n\r\n\r\n <ResponsiveReactGridLayout ref={gridLayoutComponent}\r\n {...layoutGridProps}\r\n layouts={layouts}\r\n compactType=\"vertical\"\r\n isDraggable={isInEditMode}\r\n isResizable={isInEditMode}\r\n onWidthChange={() => { }}\r\n onLayoutChange={onLayoutChange}\r\n >\r\n {widgets.lg.map((widget) =>\r\n\r\n <div key={widget.Layout?.i}>\r\n <WidgetCard\r\n isInEditMode={isInEditMode}\r\n key={widget.Layout?.i}\r\n widget={widget}\r\n widgetRef={widgetsDictionaryRef.current[widget.key]}\r\n el={widget}\r\n dataBinding={props.dataBinding}\r\n dateFilter={dateFilter}\r\n editBtnClicked={editWidget}\r\n deleteBtnClicked={deletePanel}\r\n onSelectDataPoint={props.onSelectDataPoint}\r\n />\r\n </div>\r\n )}\r\n </ResponsiveReactGridLayout>\r\n </div>\r\n\r\n </div>\r\n {/* <div className=\"dl-row dl-footer\">\r\n <p><b>footer</b> (fixed height)</p>\r\n </div> */}\r\n </div>\r\n {/* {renderNewWidgetDialog()} */}\r\n\r\n\r\n\r\n\r\n\r\n </div>);\r\n\r\n}\r\n\r\n\r\nexport const layoutGridProps = {\r\n rowHeight: 50,\r\n className: \"layout\",\r\n cols: { lg: 12, md: 6, sm: 2, xs: 1, xxs: 1 },\r\n useCSSTransforms: true,\r\n}\r\n\r\nexport const WidgetTypes = [\r\n { Name: \"Filter\", Disabled: true },\r\n { Name: \"Chart\", Disabled: false },\r\n { Name: \"Data Table\", Disabled: true },\r\n { Name: \"Pivot Table\", Disabled: true },\r\n { Name: \"KPI\", Disabled: true },\r\n { Name: \"Gauge\", Disabled: true },\r\n];\r\nexport const widgetComponents = [\r\n { type: \"Bar\", component: BarChartComponent },\r\n { type: \"Column\", component: ColumnChartComponent },\r\n { type: \"Pie\", component: PieChartComponent },\r\n { type: \"Mixed\", component: MixedChartComponent },\r\n { type: \"Timeline\", component: TimelineChartComponent },\r\n { type: \"Candle\", component: CandleChartComponent },\r\n { type: \"Area\", component: AreaChartComponent },\r\n];\r\n\r\n\r\nexport default DashboardDesigner;\r\n","import * as React from 'react'\r\nimport DashboardDesigner from './features/Dashboard/DashboardDesigner'\r\nimport \"./styles.module.css\"\r\nimport { useEffect, useRef, useState } from \"react\";\r\nimport { Session } from './services/session';\r\nimport { ReactWidgetPM } from './types/widget';\r\nimport { DashboardDataBinding } from './types/DashboardDataBinding';\r\nimport { Layout, Layouts } from 'react-grid-layout';\r\nimport { deepClone } from './services/clone';\r\nimport { DataPointSelection } from './types/SeriesMeasure';\r\n\r\ntype DashboardProps = {\r\n token: string,\r\n tenant: number,\r\n userId: string,\r\n dataBinding: DashboardDataBinding,\r\n onChangeLayouts: (layouts: { lg: ReactWidgetPM[] }) => void,\r\n openEditWidget: (Widget: ReactWidgetPM) => void,\r\n onSelectDataPoint: (dataPointSelection: DataPointSelection) => void;\r\n};\r\nconst Dashboard = (props: DashboardProps) => {\r\n const Widgetlayouts = useRef<{ lg: ReactWidgetPM[] }>({ lg: [] });\r\n const [widgetlayoutsState, setWidgetlayoutsState] = useState<{ lg: ReactWidgetPM[] }>({ lg: [] });\r\n const [isInEditMode, setIsInEditMode] = useState<boolean>(false);\r\n\r\n useEffect(() => {\r\n props.dataBinding.onGetLayouts.subscribe(layouts => {\r\n Widgetlayouts.current = layouts;\r\n setWidgetlayoutsState(deepClone(Widgetlayouts.current));\r\n\r\n });\r\n props.dataBinding.isOnEditLayout.subscribe(e => {\r\n setIsInEditMode(e);\r\n });\r\n props.dataBinding.onAddWidget.subscribe(w => {\r\n Widgetlayouts.current.lg.push(w);\r\n setWidgetlayoutsState(deepClone(Widgetlayouts.current));\r\n });\r\n }, [])\r\n\r\n\r\n Session.CurrentUserId = props.userId;\r\n Session.Tenant = props.tenant;\r\n Session.Token = props.token;\r\n if (props?.token?.length > 0)\r\n localStorage.setItem(\"token\", props?.token);\r\n\r\n\r\n\r\n const updateWidgets = (layouts: Layouts) => {\r\n var layoutsDic: { [key: string]: Layout } = {};\r\n Object.keys(layouts).forEach(sizeType => {\r\n if (layouts[sizeType].length > 0) {\r\n layouts[sizeType].map(layout => {\r\n layoutsDic[layout.i] = layout;\r\n })\r\n return;\r\n }\r\n })\r\n var newWidgetlayouts: ReactWidgetPM[] = [];\r\n Widgetlayouts.current.lg.forEach(widget => {\r\n if (layoutsDic[widget.key]) {\r\n widget.StartPotistion = `${layoutsDic[widget.key].x},${layoutsDic[widget.key].y}`;\r\n widget.EndPosition = `${layoutsDic[widget.key].w},${layoutsDic[widget.key].h}`;\r\n widget.Layout = layoutsDic[widget.key];\r\n newWidgetlayouts.push(widget);\r\n }\r\n\r\n });\r\n Widgetlayouts.current = { lg: newWidgetlayouts };\r\n props.onChangeLayouts(Widgetlayouts.current);\r\n }\r\n\r\n\r\n\r\n return (\r\n <div className='dl-full-hight'>\r\n <div className='dl-dashboard-body'>\r\n <DashboardDesigner onSelectDataPoint={props.onSelectDataPoint} Widgetlayouts={widgetlayoutsState} dataBinding={props.dataBinding} editMode={isInEditMode} onLayoutChange={updateWidgets} openEditWidget={(widget: ReactWidgetPM) => props.openEditWidget(widget)} ></DashboardDesigner>\r\n </div>\r\n </div >\r\n\r\n )\r\n}\r\nexport default Dashboard;\r\n\r\n"],"names":["Tools","GetLogitudeURL","logitude_url","location","href","replace","indexOf","urlArr","split","url","substring","lastIndexOf","length","Map","from","to","keys","Object","k","ApiServices","_apiUrl","getByFilters","api","filters","token","getTokenFromStorage","apiURL","ConcatFiltersToURL","axios","get","headers","post","date","window","localStorage","getItem","urlparameters","mykeys","addtionalFiltersValues","i","propName","propValue","ignoreFilter","concat","encodeURIComponent","JSON","stringify","DashboardAnalyticsService","_ApiServices","getData","widget","controller","getKpiData","KpiChart","props","useState","isView","setisView","viewError","setViewError","isLoadingDrow","useRef","widgetRef","isDataLoaded","hasDataError","error","setEror","data","setData","title","setTitle","useEffect","setTimeout","current","updateView","customChartProps","dataBinding","onEditWidget","subscribe","e","key","RefreshData","Title","dashboardAnalyticsService","postWidget","onChange","undefined","then","result","console","log","response","ErrorMessage","message","kpiClick","measureFieldId","WidgetMeasures","MeasureFieldId","onSelectDataPoint","Widget","React","className","ProgressSpinner","style","width","height","strokeWidth","animationDuration","onClick","Value","src","CustomChart","project","TypeCode","BuildFusionChartObject","seriesMeasures","id","handelNullLabels","defaultChart","getDefaultChartobject","getBarObject","getLineObject","getPieObject","getDonutObject","forEach","element","SeriesMeasureVulues","value","Label","chart","type","dataFormat","buildChartDataSource","chartinfo","caption","theme","scrollHeight","scrollWidth","scrollPadding","flatScrollBars","enableSlicing","showLegend","dataSource","categories","buildCategories","dataset","buildDataSet","buildDataSource","values","map","label","GroupById","dataSet","position","seriesMeasure","datas","push","seriesname","category","ReactFC","fcRoot","FusionCharts","Charts","FusionTheme","FusionChart","setError","args","setArgs","fChart","setFchart","entered","Math","random","toString","dataplotClick","eventObj","dataObj","groupbyid","measurefieldid","renderComplete","useResizeObserver","onResize","resizeTo","ref","onRender","WidgetCard","state","moreBtnToggle","editWidget","hide","editBtnClicked","el","paddingLeft","isInEditMode","Button","icon","toggle","OverlayPanel","deleteBtnClicked","deepClone","obj","parse","ResponsiveReactGridLayout","WidthProvider","Responsive","DashboardDesigner","array12","Array","fill","minimumPlaceholderRowsCount","lg","layouts","setLayouts","placeholderRowsArray","setplaceholderRowsArray","dateFilter","setisInEditMode","widgetsDictionaryRef","widgets","setWidgets","gridLayoutComponent","FillLayout","Widgetlayouts","dashboardLayouts","clone","layout","createLayout","FillWidgetDictionary","UpdatePlaceholderDimensions","item","w","Layout","editMode","onLayoutChange","changedLayouts","UpdateWidget","deletePanel","newLayouts","filter","newWidgets","ChangeSetOp","openEditWidget","max","y","h","newPlaceholderRows","layoutGridProps","rowHeight","compactType","isDraggable","isResizable","onWidthChange","cols","md","sm","xs","xxs","useCSSTransforms","Dashboard","widgetlayoutsState","setWidgetlayoutsState","setIsInEditMode","onGetLayouts","isOnEditLayout","onAddWidget","setItem","updateWidgets","layoutsDic","sizeType","newWidgetlayouts","StartPotistion","x","EndPosition","onChangeLayouts"],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "logitude-dashboard-library",
3
- "version": "1.3.86",
3
+ "version": "1.3.87",
4
4
  "description": "Made with create-react-library",
5
5
  "author": "logitude",
6
6
  "license": "MIT",