logitude-dashboard-library 1.3.44 → 1.3.45
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.
|
@@ -5,6 +5,7 @@ import { ApexOptions } from "apexcharts";
|
|
|
5
5
|
import { DashboardDataBinding } from "../../../types/DashboardDataBinding";
|
|
6
6
|
declare type ApexChartProps = {
|
|
7
7
|
widget: ReactWidgetPM | undefined;
|
|
8
|
+
widgetRef: ReactWidgetPM | undefined;
|
|
8
9
|
dataBinding: DashboardDataBinding;
|
|
9
10
|
onSelectDataPoint: (dataPointSelection: DataPointSelection) => void;
|
|
10
11
|
};
|
package/dist/index.js
CHANGED
|
@@ -200,6 +200,7 @@ var ApexChart = function ApexChart(props) {
|
|
|
200
200
|
setEror = _useState[1];
|
|
201
201
|
|
|
202
202
|
var widget = React.useRef();
|
|
203
|
+
var widgetRef = React.useRef();
|
|
203
204
|
var MeasuresIds = React.useRef([]);
|
|
204
205
|
var GroupByIds = React.useRef([]);
|
|
205
206
|
var GroupCount = React.useRef(0);
|
|
@@ -241,8 +242,12 @@ var ApexChart = function ApexChart(props) {
|
|
|
241
242
|
});
|
|
242
243
|
}, []);
|
|
243
244
|
React.useEffect(function () {
|
|
245
|
+
widgetRef.current = props.widgetRef;
|
|
244
246
|
RefreshData();
|
|
245
247
|
}, []);
|
|
248
|
+
React.useEffect(function () {
|
|
249
|
+
widgetRef.current = props.widgetRef;
|
|
250
|
+
}, [props.widgetRef]);
|
|
246
251
|
|
|
247
252
|
var RefreshData = function RefreshData() {
|
|
248
253
|
var dashboardAnalyticsService = new DashboardAnalyticsService();
|
|
@@ -478,11 +483,12 @@ var ApexChart = function ApexChart(props) {
|
|
|
478
483
|
};
|
|
479
484
|
|
|
480
485
|
var formatLabel = function formatLabel(legendName, opts) {
|
|
481
|
-
var
|
|
486
|
+
var _widgetRef$current, _widgetRef$current$La, _widgetRef$current2, _widgetRef$current2$L;
|
|
482
487
|
|
|
483
|
-
var LayoutWidth = (
|
|
484
|
-
var Layoutheight = (
|
|
485
|
-
|
|
488
|
+
var LayoutWidth = (_widgetRef$current = widgetRef.current) === null || _widgetRef$current === void 0 ? void 0 : (_widgetRef$current$La = _widgetRef$current.Layout) === null || _widgetRef$current$La === void 0 ? void 0 : _widgetRef$current$La.w;
|
|
489
|
+
var Layoutheight = (_widgetRef$current2 = widgetRef.current) === null || _widgetRef$current2 === void 0 ? void 0 : (_widgetRef$current2$L = _widgetRef$current2.Layout) === null || _widgetRef$current2$L === void 0 ? void 0 : _widgetRef$current2$L.h;
|
|
490
|
+
console.log('W,H (', LayoutWidth, Layoutheight, ')');
|
|
491
|
+
var width = 120 * LayoutWidth / 3;
|
|
486
492
|
var text = "<div style=\"white-space: nowrap; text-overflow: ellipsis; overflow: hidden;width:" + width + "px;display: inline-block; \">" + legendName + "</div>";
|
|
487
493
|
return text;
|
|
488
494
|
};
|
|
@@ -583,11 +589,17 @@ var ApexChart = function ApexChart(props) {
|
|
|
583
589
|
};
|
|
584
590
|
|
|
585
591
|
var dataPointSelection = function dataPointSelection(e, chart, options) {
|
|
586
|
-
|
|
587
|
-
|
|
588
|
-
|
|
589
|
-
|
|
590
|
-
|
|
592
|
+
console.log(options.dataPointIndex, options.seriesIndex);
|
|
593
|
+
if (options.seriesIndex < 0 || options.seriesIndex > MeasuresIds.current.length - 1) options.seriesIndex = 0;
|
|
594
|
+
|
|
595
|
+
if (GroupByIds.current[options.dataPointIndex] && MeasuresIds.current[options.seriesIndex]) {
|
|
596
|
+
console.log(options.dataPointIndex, options.seriesIndex);
|
|
597
|
+
props.onSelectDataPoint({
|
|
598
|
+
GroupById: GroupByIds.current[options.dataPointIndex],
|
|
599
|
+
MeasureFieldId: MeasuresIds.current[options.seriesIndex],
|
|
600
|
+
Widget: props.widget
|
|
601
|
+
});
|
|
602
|
+
}
|
|
591
603
|
};
|
|
592
604
|
|
|
593
605
|
var getChartOptions = function getChartOptions(values) {
|
|
@@ -680,6 +692,7 @@ var WidgetCard = function WidgetCard(props, state) {
|
|
|
680
692
|
}, React__default.createElement(ApexChart, {
|
|
681
693
|
dataBinding: props.dataBinding,
|
|
682
694
|
widget: props.widget,
|
|
695
|
+
widgetRef: props.widgetRef,
|
|
683
696
|
onSelectDataPoint: props.onSelectDataPoint
|
|
684
697
|
})));
|
|
685
698
|
};
|
|
@@ -715,6 +728,8 @@ var DashboardDesigner = function DashboardDesigner(props) {
|
|
|
715
728
|
isInEditMode = _useState4[0],
|
|
716
729
|
setisInEditMode = _useState4[1];
|
|
717
730
|
|
|
731
|
+
var widgetsDictionaryRef = React.useRef({});
|
|
732
|
+
|
|
718
733
|
var _useState5 = React.useState({
|
|
719
734
|
lg: []
|
|
720
735
|
}),
|
|
@@ -724,17 +739,24 @@ var DashboardDesigner = function DashboardDesigner(props) {
|
|
|
724
739
|
var gridLayoutComponent = React.useRef(null);
|
|
725
740
|
React.useEffect(function () {
|
|
726
741
|
FillLayout(props.Widgetlayouts);
|
|
727
|
-
console.log('Widgetlayouts change DashboardDesigner => ', props.Widgetlayouts);
|
|
728
742
|
UpdatePlaceholderDimensions();
|
|
729
743
|
}, [props.Widgetlayouts]);
|
|
730
744
|
|
|
731
745
|
var FillLayout = function FillLayout(dashboardLayouts) {
|
|
732
746
|
var clone = deepClone(dashboardLayouts);
|
|
733
747
|
var layout = createLayout(clone);
|
|
748
|
+
FillWidgetDictionary(clone);
|
|
734
749
|
setWidgets(clone);
|
|
735
750
|
setLayouts(layout);
|
|
736
751
|
};
|
|
737
752
|
|
|
753
|
+
var FillWidgetDictionary = function FillWidgetDictionary(clone) {
|
|
754
|
+
for (var _iterator = _createForOfIteratorHelperLoose(clone.lg), _step; !(_step = _iterator()).done;) {
|
|
755
|
+
var item = _step.value;
|
|
756
|
+
widgetsDictionaryRef.current[item.key] = item;
|
|
757
|
+
}
|
|
758
|
+
};
|
|
759
|
+
|
|
738
760
|
var createLayout = function createLayout(dashboardLayouts) {
|
|
739
761
|
var layout = {
|
|
740
762
|
lg: []
|
|
@@ -749,15 +771,25 @@ var DashboardDesigner = function DashboardDesigner(props) {
|
|
|
749
771
|
|
|
750
772
|
React.useEffect(function () {
|
|
751
773
|
setisInEditMode(props.editMode);
|
|
752
|
-
console.log(' setisInEditMode(props.editMode);');
|
|
753
774
|
}, [props.editMode]);
|
|
754
775
|
|
|
755
776
|
function _onLayoutChange(layout, changedLayouts) {
|
|
777
|
+
UpdateWidget(changedLayouts);
|
|
756
778
|
setLayouts(changedLayouts);
|
|
757
779
|
UpdatePlaceholderDimensions();
|
|
758
780
|
props.onLayoutChange(changedLayouts);
|
|
759
781
|
}
|
|
760
782
|
|
|
783
|
+
function UpdateWidget(changedLayouts) {
|
|
784
|
+
for (var _iterator2 = _createForOfIteratorHelperLoose(changedLayouts.lg), _step2; !(_step2 = _iterator2()).done;) {
|
|
785
|
+
var item = _step2.value;
|
|
786
|
+
|
|
787
|
+
if (widgetsDictionaryRef.current[item.i]) {
|
|
788
|
+
widgetsDictionaryRef.current[item.i].Layout = item;
|
|
789
|
+
}
|
|
790
|
+
}
|
|
791
|
+
}
|
|
792
|
+
|
|
761
793
|
function deletePanel(id) {
|
|
762
794
|
var newLayouts = {
|
|
763
795
|
lg: layouts.lg.filter(function (e) {
|
|
@@ -770,6 +802,7 @@ var DashboardDesigner = function DashboardDesigner(props) {
|
|
|
770
802
|
return e.key != id;
|
|
771
803
|
})
|
|
772
804
|
};
|
|
805
|
+
FillWidgetDictionary(newWidgets);
|
|
773
806
|
setWidgets(newWidgets);
|
|
774
807
|
props.onLayoutChange(newLayouts);
|
|
775
808
|
}
|
|
@@ -782,14 +815,12 @@ var DashboardDesigner = function DashboardDesigner(props) {
|
|
|
782
815
|
function UpdatePlaceholderDimensions() {
|
|
783
816
|
var gridLayout = gridLayoutComponent.current;
|
|
784
817
|
if (!gridLayout) return;
|
|
785
|
-
console.log('setplaceholderRowsArray(', gridLayout);
|
|
786
818
|
var gridElementHeight = gridLayout.elementRef.current.clientHeight;
|
|
787
819
|
var newPlaceholderRows = Math.floor(gridElementHeight / layoutGridProps.rowHeight);
|
|
788
820
|
newPlaceholderRows = newPlaceholderRows < minimumPlaceholderRowsCount ? minimumPlaceholderRowsCount : newPlaceholderRows;
|
|
789
821
|
setplaceholderRowsArray(Array.from({
|
|
790
822
|
length: newPlaceholderRows
|
|
791
823
|
}).fill(null));
|
|
792
|
-
console.log('setplaceholderRowsArray(', newPlaceholderRows);
|
|
793
824
|
}
|
|
794
825
|
|
|
795
826
|
return React__default.createElement("div", {
|
|
@@ -833,6 +864,7 @@ var DashboardDesigner = function DashboardDesigner(props) {
|
|
|
833
864
|
isInEditMode: isInEditMode,
|
|
834
865
|
key: (_widget$Layout2 = widget.Layout) === null || _widget$Layout2 === void 0 ? void 0 : _widget$Layout2.i,
|
|
835
866
|
widget: widget,
|
|
867
|
+
widgetRef: widgetsDictionaryRef.current[widget.key],
|
|
836
868
|
el: widget,
|
|
837
869
|
dataBinding: props.dataBinding,
|
|
838
870
|
dateFilter: dateFilter,
|
|
@@ -880,7 +912,6 @@ var Dashboard = function Dashboard(props) {
|
|
|
880
912
|
React.useEffect(function () {
|
|
881
913
|
props.dataBinding.onGetLayouts.subscribe(function (layouts) {
|
|
882
914
|
FirstSetLayout.current = true;
|
|
883
|
-
console.log("index > dataBinding.onGetLayouts = > ", layouts);
|
|
884
915
|
Widgetlayouts.current = layouts;
|
|
885
916
|
setWidgetlayoutsState(deepClone(Widgetlayouts.current));
|
|
886
917
|
});
|
|
@@ -900,7 +931,6 @@ var Dashboard = function Dashboard(props) {
|
|
|
900
931
|
return;
|
|
901
932
|
}
|
|
902
933
|
|
|
903
|
-
console.log('updateWidgets = (layouts:Layouts', layouts);
|
|
904
934
|
var layoutsDic = {};
|
|
905
935
|
Object.keys(layouts).forEach(function (sizeType) {
|
|
906
936
|
if (layouts[sizeType].length > 0) {
|
|
@@ -922,7 +952,6 @@ var Dashboard = function Dashboard(props) {
|
|
|
922
952
|
Widgetlayouts.current = {
|
|
923
953
|
lg: newWidgetlayouts
|
|
924
954
|
};
|
|
925
|
-
console.log('after update widget', Widgetlayouts.current);
|
|
926
955
|
props.onChangeLayouts(Widgetlayouts.current);
|
|
927
956
|
};
|
|
928
957
|
|
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/ApexChart.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\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}","import React, { useEffect, useRef } from \"react\";\r\nimport ReactApexChart from \"react-apexcharts\";\r\nimport { ProgressSpinner } from 'primereact/progressspinner';\r\nimport { ReactWidgetPM } from \"../../../types/widget\";\r\nimport { useState } from 'react';\r\nimport { DashboardAnalyticsService } from \"../../../services/DashboardAnalyticsService\";\r\nimport { DataPointSelection, SeriesMeasure } from '../../../types/SeriesMeasure';\r\nimport { ApexOptions } from \"apexcharts\";\r\nimport { DashboardDataBinding } from \"../../../types/DashboardDataBinding\";\r\nimport { Tools } from \"../../../services/tools\";\r\n\r\ntype ApexChartProps = {\r\n widget: ReactWidgetPM | undefined,\r\n dataBinding: DashboardDataBinding;\r\n onSelectDataPoint: (dataPointSelection: DataPointSelection) => void;\r\n};\r\nconst ApexChart = (props: ApexChartProps) => {\r\n\r\n const [error, setEror] = useState<string>('');\r\n const widget = useRef<ReactWidgetPM>();\r\n const MeasuresIds = useRef<string[]>([]);\r\n const GroupByIds = useRef<string[]>([]);\r\n const GroupCount = useRef<number>(0);\r\n const [isView, setisView] = useState<boolean>(false);\r\n const [viewError, setViewError] = useState<boolean>(false);\r\n const isDataLoaded = useRef<boolean>(false);\r\n const hasDataError = useRef<boolean>(false);\r\n const [args, serArgs] = useState<ApexChartArgs>({\r\n series: [],\r\n options: {}\r\n });\r\n const isLoadingDrow = useRef(true);\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 useEffect(() => {\r\n\r\n RefreshData();\r\n\r\n\r\n }, []);\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 fillIds(result.data);\r\n const data = getChartOptions(result.data);\r\n serArgs(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 const fillIds = (datas: SeriesMeasure[]) => {\r\n var measuresIds: string[] = [];\r\n var groupByIds: string[] = [];\r\n for (const seriesMeasure of datas) {\r\n measuresIds.push(seriesMeasure.MeasureFieldId);\r\n }\r\n\r\n for (const seriesMeasure of datas) {\r\n for (const vulue of seriesMeasure.SeriesMeasureVulues) {\r\n groupByIds.push(vulue.GroupById);\r\n }\r\n break;\r\n }\r\n\r\n MeasuresIds.current = measuresIds;\r\n GroupByIds.current = groupByIds;\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 lineOptoins = (values: SeriesMeasure[]): ApexChartArgs => {\r\n\r\n\r\n var series: any = [];\r\n var categories: any = [];\r\n if (values && values[0]) {\r\n series = values.map(e => {\r\n return { data: e.SeriesMeasureVulues.map(z => z.Value) }\r\n }\r\n );\r\n categories = values[0].SeriesMeasureVulues.map(e => e.Label);\r\n }\r\n\r\n return {\r\n\r\n series: series,\r\n options: {\r\n chart: {\r\n height: 350,\r\n type: 'line',\r\n zoom: {\r\n enabled: false\r\n },\r\n events: {\r\n click: dataPointSelection,\r\n },\r\n toolbar: {\r\n tools: {\r\n download: false,\r\n }\r\n }\r\n },\r\n dataLabels: {\r\n enabled: false\r\n },\r\n stroke: {\r\n curve: 'straight'\r\n },\r\n title: {\r\n text: '',\r\n align: 'left'\r\n },\r\n grid: {\r\n row: {\r\n colors: ['#f3f3f3', 'transparent'], // takes an array which will be repeated on columns\r\n opacity: 0.5\r\n },\r\n },\r\n xaxis: {\r\n categories: categories\r\n },\r\n noData: {\r\n text: 'No Data Found',\r\n\r\n }\r\n },\r\n\r\n\r\n };\r\n }\r\n const barOptoins = (values: SeriesMeasure[]): ApexChartArgs => {\r\n var series: any = [{\r\n data: []\r\n }];\r\n var categories: any = [];\r\n if (values && values[0]) {\r\n series = values.map(e => {\r\n return { data: e.SeriesMeasureVulues.map(z => z.Value) }\r\n }\r\n );\r\n categories = values[0].SeriesMeasureVulues.map(e => e.Label);\r\n }\r\n return {\r\n series: series\r\n ,\r\n options: {\r\n chart: {\r\n type: 'bar',\r\n height: 430,\r\n events: {\r\n dataPointSelection: dataPointSelection\r\n },\r\n toolbar: {\r\n tools: {\r\n download: false,\r\n }\r\n }\r\n },\r\n plotOptions: {\r\n bar: {\r\n horizontal: true,\r\n dataLabels: {\r\n position: 'top',\r\n\r\n },\r\n }\r\n },\r\n dataLabels: {\r\n enabled: false,\r\n offsetX: -6,\r\n style: {\r\n fontSize: '12px',\r\n colors: ['#fff']\r\n }\r\n },\r\n stroke: {\r\n show: true,\r\n width: 1,\r\n colors: ['#fff']\r\n },\r\n tooltip: {\r\n shared: true,\r\n intersect: false\r\n },\r\n xaxis: {\r\n categories: categories\r\n\r\n },\r\n noData: {\r\n text: 'No Data Found',\r\n\r\n }\r\n },\r\n\r\n\r\n };\r\n }\r\n const pieOptoins = (values: SeriesMeasure[]): ApexChartArgs => {\r\n\r\n var series: any = [];\r\n var labels: any = [];\r\n if (values && values[0]) {\r\n series = values[0].SeriesMeasureVulues.map(e => e.Value);\r\n labels = values[0].SeriesMeasureVulues.map(e => e.Label);\r\n }\r\n var colors = CreateColors(labels.length);\r\n\r\n return {\r\n\r\n series: series,\r\n options: {\r\n chart: {\r\n type: 'pie',\r\n events: {\r\n dataPointSelection: dataPointSelection\r\n },\r\n toolbar: {\r\n tools: {\r\n download: false,\r\n }\r\n }\r\n },\r\n labels: labels,\r\n colors: colors,\r\n tooltip: {\r\n fillSeriesColor: false\r\n },\r\n noData: {\r\n text: 'No Data Found',\r\n\r\n },\r\n legend: {\r\n formatter :formatLabel,\r\n \r\n }\r\n\r\n },\r\n\r\n\r\n\r\n };\r\n }\r\n const formatLabel = (legendName, opts?) => {\r\n let LayoutWidth:number = widget.current?.Layout?.w as number; \r\n let Layoutheight:number = widget.current?.Layout?.h as number; \r\n var width = 120 * LayoutWidth / 3 + (LayoutWidth / 3 / Layoutheight) * 2\r\n var text = `<div style=\"white-space: nowrap; text-overflow: ellipsis; overflow: hidden;width:${width}px;display: inline-block; \">${legendName}</div>`;\r\n // if(legendName.length > 17){\r\n // text = text.substring(0,17) + '...'\r\n // }\r\n return text;\r\n }\r\n\r\n const tooltipHoverFormatter = (legendName, opts?) => {\r\n \r\n }\r\n const CreateColors = (count: number): any[] | undefined => {\r\n GroupCount.current = count;\r\n var colors: any[] = [];\r\n CreateDifferentColors(colors, 0, 100, 50);\r\n if (GroupCount.current <= 0)\r\n return colors;\r\n CreateDifferentColors(colors, 15, 100, 50);\r\n if (GroupCount.current <= 0)\r\n return colors;\r\n CreateDifferentColors(colors, 0, 50, 50);\r\n if (GroupCount.current <= 0)\r\n return colors;\r\n CreateDifferentColors(colors, 15, 50, 50);\r\n if (GroupCount.current <= 0)\r\n return colors;\r\n CreateDifferentColors(colors, 0, 50, 30);\r\n if (GroupCount.current <= 0)\r\n return colors;\r\n CreateDifferentColors(colors, 15, 50, 30);\r\n if (GroupCount.current <= 0)\r\n return colors;\r\n\r\n return undefined;\r\n\r\n\r\n }\r\n const CreateDifferentColors = (colors: any[], startAngle: number, s: number, v: number) => {\r\n for (let index = 0; GroupCount.current > 0 && index < 12; index++) {\r\n var color = `hsl(${startAngle + index * 30}deg ${s}% ${v}%)`;\r\n colors.push(color);\r\n GroupCount.current--;\r\n }\r\n }\r\n const donutOptoins = (values: SeriesMeasure[]): ApexChartArgs => {\r\n var series: any[] = [];\r\n var labels: any[] = [];\r\n if (values && values[0]) {\r\n series = values[0].SeriesMeasureVulues.map(e => e.Value);\r\n labels = values[0].SeriesMeasureVulues.map(e => e.Label);\r\n // var ll = labels.length;\r\n // for (let index = 0; index < ll; index++) {\r\n // series[index] = 100;\r\n // series.push(100);\r\n // labels.push(labels[index]+'TT');\r\n // }\r\n // for (let index = 0; index < ll; index++) {\r\n // series.push(100);\r\n // labels.push(labels[index]+'TT2');\r\n // }\r\n }\r\n var colors = CreateColors(labels.length);\r\n var result: { series, options: ApexOptions } = {\r\n\r\n series: series,\r\n options: {\r\n chart: {\r\n width: 380,\r\n type: 'donut',\r\n events: {\r\n dataPointSelection: dataPointSelection\r\n },\r\n toolbar: {\r\n tools: {\r\n download: false,\r\n }\r\n }\r\n },\r\n dataLabels: {\r\n enabled: false\r\n },\r\n responsive: [{\r\n breakpoint: 480,\r\n options: {\r\n chart: {\r\n width: 200\r\n },\r\n legend: {\r\n show: false\r\n }\r\n }\r\n }],\r\n legend: {\r\n position: 'right',\r\n offsetY: 0,\r\n height: 230,\r\n },\r\n labels: labels,\r\n colors: colors,\r\n tooltip: {\r\n fillSeriesColor: false\r\n },\r\n noData: {\r\n text: 'No Data Found',\r\n\r\n }\r\n },\r\n\r\n\r\n };\r\n return result;\r\n }\r\n\r\n const handelNullLabels = (values: SeriesMeasure[]) => {\r\n values.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\n\r\n\r\n\r\n const dataPointSelection = (e: any, chart?: any, options?: any): void => {\r\n props.onSelectDataPoint({\r\n GroupById: GroupByIds.current[options.dataPointIndex],\r\n MeasureFieldId: MeasuresIds.current[options.seriesIndex],\r\n Widget: props.widget\r\n })\r\n };\r\n\r\n const getChartOptions = (values: SeriesMeasure[]): ApexChartArgs => {\r\n handelNullLabels(values);\r\n switch (props.widget?.TypeCode) {\r\n case 'bar':\r\n return barOptoins(values);\r\n break;\r\n case 'line':\r\n return lineOptoins(values);\r\n break;\r\n case 'pie':\r\n return pieOptoins(values);\r\n break;\r\n case 'donut':\r\n return donutOptoins(values);\r\n break;\r\n default:\r\n break;\r\n }\r\n return barOptoins(values);\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 <ReactApexChart\r\n options={args?.options}\r\n series={args?.series}\r\n type={props.widget?.TypeCode}\r\n height={\"100%\"}\r\n width={\"100%\"}\r\n\r\n />\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 type ApexChartArgs = {\r\n options: ApexOptions;\r\n series: ApexAxisChartSeries | ApexNonAxisChartSeries;\r\n}\r\n\r\nexport default ApexChart;\r\n\r\n\r\n","import { stat } from \"fs\";\r\nimport { Button } from \"primereact/button\";\r\nimport { OverlayPanel } from \"primereact/overlaypanel\";\r\nimport React, { useRef, useState, useEffect } from \"react\";\r\nimport { DataPointSelection } from \"../../types/SeriesMeasure\";\r\nimport { ReactWidgetPM } from \"../../types/widget\";\r\nimport ApexChart from \"./ChartsComponents/ApexChart\";\r\nimport { DashboardDataBinding } from '../../types/DashboardDataBinding';\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 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>\r\n <h1>{props.widget?.Title || \"not set\"}</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 <ApexChart dataBinding={props.dataBinding} widget={props.widget} onSelectDataPoint={props.onSelectDataPoint} />\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}","\r\n\r\nimport { WidthProvider, Responsive, Layout, Layouts } from \"react-grid-layout\";\r\n\r\nimport React, { createRef, useEffect, useRef, useState } from \"react\";\r\nimport { Button } from \"primereact/button\";\r\nimport _, { find } from \"lodash\";\r\nimport { Ripple } from \"primereact/ripple\";\r\nimport { OverlayPanel } from \"primereact/overlaypanel\";\r\nimport { Dropdown } from \"primereact/dropdown\";\r\n\r\n\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 { WidgetComponent } from \"../../types/WidgetComponent\";\r\nimport { ReactWidgetPM } from \"../../types/widget\";\r\nimport WidgetCard from \"./WidgetCard\";\r\nimport { TRUE } from \"sass\";\r\nimport { DataPointSelection } from \"../../types/SeriesMeasure\";\r\nimport { DashboardDataBinding } from \"../../types/DashboardDataBinding\";\r\nimport { Tools } from \"../../services/tools\";\r\nimport { Subject } from 'rxjs';\r\nimport { deepClone } from '../../services/clone';\r\n\r\nconst ResponsiveReactGridLayout = WidthProvider(Responsive);\r\nconst newWidgetWidth = 3;\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\r\n\r\n const array12 = Array.from({ length: 12 }).fill(null);\r\n const minimumPlaceholderRowsCount = 12;\r\n // const layoutsRef = useRef<Layouts>({ lg: [] });\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 widgetsRef = useRef<{ lg: ReactWidgetPM[] }>({ lg: [] });\r\n const [widgets, setWidgets] = useState<{ lg: ReactWidgetPM[] }>({ lg: [] });\r\n const gridLayoutComponent = useRef<any>(null);\r\n\r\n \r\n\r\n useEffect(() => {\r\n\r\n FillLayout(props.Widgetlayouts);\r\n console.log('Widgetlayouts change DashboardDesigner => ',props.Widgetlayouts)\r\n UpdatePlaceholderDimensions();\r\n }, [props.Widgetlayouts]);\r\n\r\n const FillLayout = (dashboardLayouts: { lg: ReactWidgetPM[] }) => {\r\n var clone = deepClone(dashboardLayouts);\r\n var layout = createLayout(clone);\r\n setWidgets(clone);\r\n setLayouts(layout);\r\n\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 console.log(' setisInEditMode(props.editMode);')\r\n }, [props.editMode]);\r\n\r\n\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\r\n setLayouts(changedLayouts);\r\n UpdatePlaceholderDimensions();\r\n props.onLayoutChange(changedLayouts)\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 // widgetsRef.current = 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\r\n function UpdatePlaceholderDimensions() {\r\n var gridLayout = gridLayoutComponent.current;\r\n if (!gridLayout)\r\n return;\r\n console.log('setplaceholderRowsArray(', gridLayout);\r\n const gridElementHeight = gridLayout.elementRef.current.clientHeight;\r\n\r\n let newPlaceholderRows = Math.floor(gridElementHeight / layoutGridProps.rowHeight);\r\n newPlaceholderRows = newPlaceholderRows < minimumPlaceholderRowsCount ? minimumPlaceholderRowsCount : newPlaceholderRows;\r\n setplaceholderRowsArray(Array.from({ length: newPlaceholderRows }).fill(null));\r\n console.log('setplaceholderRowsArray(', newPlaceholderRows);\r\n }\r\n return (<div className=\"dl-full-hight\">\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={() => UpdatePlaceholderDimensions()}\r\n onLayoutChange={(layout, layouts) =>\r\n onLayoutChange(layout, layouts)\r\n }\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 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\n\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 { Card } from 'primereact/card';\r\nimport { Button } from \"primereact/button\";\r\nimport DashboardDesigner, { layoutGridProps } from './features/Dashboard/DashboardDesigner'\r\nimport \"./styles.module.css\"\r\nimport { Dropdown } from 'primereact/dropdown';\r\nimport { createRef, useEffect, useRef, useState } from \"react\";\r\nimport { DashBoardService } from './services/DashBoardService';\r\nimport { ApiQueryFilters } from './common/data-contracts/ApiQueryFilter';\r\nimport { ReactDashboardPM } from './types/Dashboard';\r\nimport { Dialog } from 'primereact/dialog';\r\nimport DashboardDialogComponent from './features/Dashboard/dashboard-dialog/dashboard-dialog-component';\r\nimport { Session } from './services/session';\r\nimport { WidgetTypeListService } from './services/WidgetTypeListService';\r\nimport { WidgetType } from './types/WidgetType';\r\nimport { ReactWidgetPM } from './types/widget';\r\nimport { OverlayPanel } from 'primereact/overlaypanel';\r\nimport { Ripple } from 'primereact/ripple';\r\nimport { DashboardDataBinding } from './types/DashboardDataBinding';\r\nimport { Layout, Layouts } from 'react-grid-layout';\r\nimport { v4 as uuidv4 } from 'uuid';\r\nimport { deepClone } from './services/clone';\r\nimport { DataPointSelection } from './types/SeriesMeasure';\r\nimport { Tools } from './services/tools';\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 [reactDashboardPM, setReactDashboardPM] = useState<{ lg: ReactDashboardPM[] }>({ lg: [] });\r\n\r\n const newWidgetWidth = 3;\r\n const newWidgetHeight = 5;\r\n\r\n const Widgetlayouts = useRef<{ lg: ReactWidgetPM[] }>({ lg: [] });\r\n const FirstSetLayout = useRef<boolean>(false);\r\n const [widgetlayoutsState, setWidgetlayoutsState] = useState<{ lg: ReactWidgetPM[] }>({ lg: [] });\r\n const [isInEditMode, setIsInEditMode] = useState<boolean>(false);\r\n useEffect(() => {\r\n props.dataBinding.onGetLayouts.subscribe(layouts => {\r\n FirstSetLayout.current = true;\r\n console.log(\"index > dataBinding.onGetLayouts = > \", 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\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 if (FirstSetLayout.current) {\r\n FirstSetLayout.current = false;\r\n return;\r\n }\r\n\r\n console.log('updateWidgets = (layouts: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 console.log('after update widget', Widgetlayouts.current)\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","ApexChart","props","useState","error","setEror","useRef","MeasuresIds","GroupByIds","GroupCount","isView","setisView","viewError","setViewError","isDataLoaded","hasDataError","series","options","args","serArgs","isLoadingDrow","useEffect","setTimeout","current","updateView","dataBinding","onEditWidget","subscribe","e","key","RefreshData","dashboardAnalyticsService","postWidget","onChange","undefined","then","result","fillIds","data","getChartOptions","console","log","response","ErrorMessage","message","datas","measuresIds","groupByIds","seriesMeasure","push","MeasureFieldId","SeriesMeasureVulues","vulue","GroupById","lineOptoins","values","categories","map","z","Value","Label","chart","height","type","zoom","enabled","events","click","dataPointSelection","toolbar","tools","download","dataLabels","stroke","curve","title","text","align","grid","row","colors","opacity","xaxis","noData","barOptoins","plotOptions","bar","horizontal","position","offsetX","style","fontSize","show","width","tooltip","shared","intersect","pieOptoins","labels","CreateColors","fillSeriesColor","legend","formatter","formatLabel","legendName","opts","LayoutWidth","Layout","w","Layoutheight","h","count","CreateDifferentColors","startAngle","s","v","index","color","donutOptoins","responsive","breakpoint","offsetY","handelNullLabels","forEach","element","value","onSelectDataPoint","dataPointIndex","seriesIndex","Widget","TypeCode","React","className","ProgressSpinner","strokeWidth","animationDuration","ReactApexChart","src","WidgetCard","state","moreBtnToggle","editWidget","hide","editBtnClicked","el","Title","isInEditMode","Button","icon","onClick","toggle","OverlayPanel","ref","deleteBtnClicked","deepClone","obj","parse","ResponsiveReactGridLayout","WidthProvider","Responsive","DashboardDesigner","array12","Array","fill","minimumPlaceholderRowsCount","lg","layouts","setLayouts","placeholderRowsArray","setplaceholderRowsArray","dateFilter","setisInEditMode","widgets","setWidgets","gridLayoutComponent","FillLayout","Widgetlayouts","UpdatePlaceholderDimensions","dashboardLayouts","clone","layout","createLayout","editMode","onLayoutChange","changedLayouts","deletePanel","id","newLayouts","filter","newWidgets","ChangeSetOp","openEditWidget","gridLayout","gridElementHeight","elementRef","clientHeight","newPlaceholderRows","Math","floor","layoutGridProps","rowHeight","compactType","isDraggable","isResizable","onWidthChange","cols","md","sm","xs","xxs","useCSSTransforms","Dashboard","FirstSetLayout","widgetlayoutsState","setWidgetlayoutsState","setIsInEditMode","onGetLayouts","isOnEditLayout","onAddWidget","setItem","updateWidgets","layoutsDic","sizeType","newWidgetlayouts","StartPotistion","x","y","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/ApexChart.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\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}","import React, { useEffect, useRef } from \"react\";\r\nimport ReactApexChart from \"react-apexcharts\";\r\nimport { ProgressSpinner } from 'primereact/progressspinner';\r\nimport { ReactWidgetPM } from \"../../../types/widget\";\r\nimport { useState } from 'react';\r\nimport { DashboardAnalyticsService } from \"../../../services/DashboardAnalyticsService\";\r\nimport { DataPointSelection, SeriesMeasure } from '../../../types/SeriesMeasure';\r\nimport { ApexOptions } from \"apexcharts\";\r\nimport { DashboardDataBinding } from \"../../../types/DashboardDataBinding\";\r\nimport { Tools } from \"../../../services/tools\";\r\n\r\ntype ApexChartProps = {\r\n widget: ReactWidgetPM | undefined,\r\n widgetRef: ReactWidgetPM | undefined,\r\n dataBinding: DashboardDataBinding;\r\n onSelectDataPoint: (dataPointSelection: DataPointSelection) => void;\r\n};\r\nconst ApexChart = (props: ApexChartProps) => {\r\n\r\n const [error, setEror] = useState<string>('');\r\n const widget = useRef<ReactWidgetPM>();\r\n const widgetRef = useRef<ReactWidgetPM>();\r\n const MeasuresIds = useRef<string[]>([]);\r\n const GroupByIds = useRef<string[]>([]);\r\n const GroupCount = useRef<number>(0);\r\n const [isView, setisView] = useState<boolean>(false);\r\n const [viewError, setViewError] = useState<boolean>(false);\r\n const isDataLoaded = useRef<boolean>(false);\r\n const hasDataError = useRef<boolean>(false);\r\n const [args, serArgs] = useState<ApexChartArgs>({\r\n series: [],\r\n options: {}\r\n });\r\n const isLoadingDrow = useRef(true);\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 useEffect(() => {\r\n widgetRef.current = props.widgetRef;\r\n RefreshData();\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 fillIds(result.data);\r\n const data = getChartOptions(result.data);\r\n serArgs(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 const fillIds = (datas: SeriesMeasure[]) => {\r\n var measuresIds: string[] = [];\r\n var groupByIds: string[] = [];\r\n for (const seriesMeasure of datas) {\r\n measuresIds.push(seriesMeasure.MeasureFieldId);\r\n }\r\n\r\n for (const seriesMeasure of datas) {\r\n for (const vulue of seriesMeasure.SeriesMeasureVulues) {\r\n groupByIds.push(vulue.GroupById);\r\n }\r\n break;\r\n }\r\n\r\n MeasuresIds.current = measuresIds;\r\n GroupByIds.current = groupByIds;\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 lineOptoins = (values: SeriesMeasure[]): ApexChartArgs => {\r\n\r\n\r\n var series: any = [];\r\n var categories: any = [];\r\n if (values && values[0]) {\r\n series = values.map(e => {\r\n return { data: e.SeriesMeasureVulues.map(z => z.Value) }\r\n }\r\n );\r\n categories = values[0].SeriesMeasureVulues.map(e => e.Label);\r\n }\r\n\r\n return {\r\n\r\n series: series,\r\n options: {\r\n chart: {\r\n height: 350,\r\n type: 'line',\r\n zoom: {\r\n enabled: false\r\n },\r\n events: {\r\n click: dataPointSelection,\r\n },\r\n toolbar: {\r\n tools: {\r\n download: false,\r\n }\r\n }\r\n },\r\n dataLabels: {\r\n enabled: false\r\n },\r\n stroke: {\r\n curve: 'straight'\r\n },\r\n title: {\r\n text: '',\r\n align: 'left'\r\n },\r\n grid: {\r\n row: {\r\n colors: ['#f3f3f3', 'transparent'], // takes an array which will be repeated on columns\r\n opacity: 0.5\r\n },\r\n },\r\n xaxis: {\r\n categories: categories\r\n },\r\n noData: {\r\n text: 'No Data Found',\r\n\r\n }\r\n },\r\n\r\n\r\n };\r\n }\r\n const barOptoins = (values: SeriesMeasure[]): ApexChartArgs => {\r\n var series: any = [{\r\n data: []\r\n }];\r\n var categories: any = [];\r\n if (values && values[0]) {\r\n series = values.map(e => {\r\n return { data: e.SeriesMeasureVulues.map(z => z.Value) }\r\n }\r\n );\r\n categories = values[0].SeriesMeasureVulues.map(e => e.Label);\r\n }\r\n return {\r\n series: series\r\n ,\r\n options: {\r\n chart: {\r\n type: 'bar',\r\n height: 430,\r\n events: {\r\n dataPointSelection: dataPointSelection\r\n },\r\n toolbar: {\r\n tools: {\r\n download: false,\r\n }\r\n }\r\n },\r\n plotOptions: {\r\n bar: {\r\n horizontal: true,\r\n dataLabels: {\r\n position: 'top',\r\n\r\n },\r\n }\r\n },\r\n dataLabels: {\r\n enabled: false,\r\n offsetX: -6,\r\n style: {\r\n fontSize: '12px',\r\n colors: ['#fff']\r\n }\r\n },\r\n stroke: {\r\n show: true,\r\n width: 1,\r\n colors: ['#fff']\r\n },\r\n tooltip: {\r\n shared: true,\r\n intersect: false\r\n },\r\n xaxis: {\r\n categories: categories\r\n\r\n },\r\n noData: {\r\n text: 'No Data Found',\r\n\r\n }\r\n },\r\n\r\n\r\n };\r\n }\r\n const pieOptoins = (values: SeriesMeasure[]): ApexChartArgs => {\r\n\r\n var series: any = [];\r\n var labels: any = [];\r\n if (values && values[0]) {\r\n series = values[0].SeriesMeasureVulues.map(e => e.Value);\r\n labels = values[0].SeriesMeasureVulues.map(e => e.Label);\r\n }\r\n var colors = CreateColors(labels.length);\r\n\r\n return {\r\n\r\n series: series,\r\n options: {\r\n chart: {\r\n type: 'pie',\r\n events: {\r\n dataPointSelection: dataPointSelection\r\n },\r\n toolbar: {\r\n tools: {\r\n download: false,\r\n }\r\n }\r\n },\r\n labels: labels,\r\n colors: colors,\r\n tooltip: {\r\n fillSeriesColor: false\r\n },\r\n noData: {\r\n text: 'No Data Found',\r\n\r\n },\r\n legend: {\r\n formatter: formatLabel,\r\n\r\n }\r\n\r\n },\r\n\r\n\r\n\r\n };\r\n }\r\n const formatLabel = (legendName, opts?) => {\r\n let LayoutWidth: number = widgetRef.current?.Layout?.w as number;\r\n let Layoutheight: number = widgetRef.current?.Layout?.h as number;\r\n console.log('W,H (', LayoutWidth, Layoutheight, ')')\r\n var width = 120 * LayoutWidth / 3 ;\r\n var text = `<div style=\"white-space: nowrap; text-overflow: ellipsis; overflow: hidden;width:${width}px;display: inline-block; \">${legendName}</div>`;\r\n // if(legendName.length > 17){\r\n // text = text.substring(0,17) + '...'\r\n // }\r\n return text;\r\n }\r\n\r\n const tooltipHoverFormatter = (legendName, opts?) => {\r\n\r\n }\r\n const CreateColors = (count: number): any[] | undefined => {\r\n GroupCount.current = count;\r\n var colors: any[] = [];\r\n CreateDifferentColors(colors, 0, 100, 50);\r\n if (GroupCount.current <= 0)\r\n return colors;\r\n CreateDifferentColors(colors, 15, 100, 50);\r\n if (GroupCount.current <= 0)\r\n return colors;\r\n CreateDifferentColors(colors, 0, 50, 50);\r\n if (GroupCount.current <= 0)\r\n return colors;\r\n CreateDifferentColors(colors, 15, 50, 50);\r\n if (GroupCount.current <= 0)\r\n return colors;\r\n CreateDifferentColors(colors, 0, 50, 30);\r\n if (GroupCount.current <= 0)\r\n return colors;\r\n CreateDifferentColors(colors, 15, 50, 30);\r\n if (GroupCount.current <= 0)\r\n return colors;\r\n\r\n return undefined;\r\n\r\n\r\n }\r\n const CreateDifferentColors = (colors: any[], startAngle: number, s: number, v: number) => {\r\n for (let index = 0; GroupCount.current > 0 && index < 12; index++) {\r\n var color = `hsl(${startAngle + index * 30}deg ${s}% ${v}%)`;\r\n colors.push(color);\r\n GroupCount.current--;\r\n }\r\n }\r\n const donutOptoins = (values: SeriesMeasure[]): ApexChartArgs => {\r\n var series: any[] = [];\r\n var labels: any[] = [];\r\n if (values && values[0]) {\r\n series = values[0].SeriesMeasureVulues.map(e => e.Value);\r\n labels = values[0].SeriesMeasureVulues.map(e => e.Label);\r\n // var ll = labels.length;\r\n // for (let index = 0; index < ll; index++) {\r\n // series[index] = 100;\r\n // series.push(100);\r\n // labels.push(labels[index]+'TT');\r\n // }\r\n // for (let index = 0; index < ll; index++) {\r\n // series.push(100);\r\n // labels.push(labels[index]+'TT2');\r\n // }\r\n }\r\n var colors = CreateColors(labels.length);\r\n var result: { series, options: ApexOptions } = {\r\n\r\n series: series,\r\n options: {\r\n chart: {\r\n width: 380,\r\n type: 'donut',\r\n events: {\r\n dataPointSelection: dataPointSelection\r\n },\r\n toolbar: {\r\n tools: {\r\n download: false,\r\n }\r\n }\r\n },\r\n dataLabels: {\r\n enabled: false\r\n },\r\n responsive: [{\r\n breakpoint: 480,\r\n options: {\r\n chart: {\r\n width: 200\r\n },\r\n legend: {\r\n show: false\r\n }\r\n }\r\n }],\r\n legend: {\r\n position: 'right',\r\n offsetY: 0,\r\n height: 230,\r\n },\r\n labels: labels,\r\n colors: colors,\r\n tooltip: {\r\n fillSeriesColor: false\r\n },\r\n noData: {\r\n text: 'No Data Found',\r\n\r\n }\r\n },\r\n\r\n\r\n };\r\n return result;\r\n }\r\n\r\n const handelNullLabels = (values: SeriesMeasure[]) => {\r\n values.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\n\r\n\r\n\r\n const dataPointSelection = (e: any, chart?: any, options?: any): void => {\r\n console.log(options.dataPointIndex, options.seriesIndex)\r\n if (options.seriesIndex < 0 || options.seriesIndex > MeasuresIds.current.length -1 )\r\n options.seriesIndex = 0\r\n if (GroupByIds.current[options.dataPointIndex] && MeasuresIds.current[options.seriesIndex]) {\r\n console.log(options.dataPointIndex, options.seriesIndex)\r\n props.onSelectDataPoint({\r\n GroupById: GroupByIds.current[options.dataPointIndex],\r\n MeasureFieldId: MeasuresIds.current[options.seriesIndex],\r\n Widget: props.widget\r\n });\r\n }\r\n\r\n };\r\n\r\n const getChartOptions = (values: SeriesMeasure[]): ApexChartArgs => {\r\n handelNullLabels(values);\r\n switch (props.widget?.TypeCode) {\r\n case 'bar':\r\n return barOptoins(values);\r\n break;\r\n case 'line':\r\n return lineOptoins(values);\r\n break;\r\n case 'pie':\r\n return pieOptoins(values);\r\n break;\r\n case 'donut':\r\n return donutOptoins(values);\r\n break;\r\n default:\r\n break;\r\n }\r\n return barOptoins(values);\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 <ReactApexChart\r\n options={args?.options}\r\n series={args?.series}\r\n type={props.widget?.TypeCode}\r\n height={\"100%\"}\r\n width={\"100%\"}\r\n\r\n />\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 type ApexChartArgs = {\r\n options: ApexOptions;\r\n series: ApexAxisChartSeries | ApexNonAxisChartSeries;\r\n}\r\n\r\nexport default ApexChart;\r\n\r\n\r\n","import { stat } from \"fs\";\r\nimport { Button } from \"primereact/button\";\r\nimport { OverlayPanel } from \"primereact/overlaypanel\";\r\nimport React, { useRef, useState, useEffect } from \"react\";\r\nimport { DataPointSelection } from \"../../types/SeriesMeasure\";\r\nimport { ReactWidgetPM } from \"../../types/widget\";\r\nimport ApexChart from \"./ChartsComponents/ApexChart\";\r\nimport { DashboardDataBinding } from '../../types/DashboardDataBinding';\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>\r\n <h1>{props.widget?.Title || \"not set\"}</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 <ApexChart dataBinding={props.dataBinding} widget={props.widget} widgetRef={props.widgetRef} onSelectDataPoint={props.onSelectDataPoint} />\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}","\r\n\r\nimport { WidthProvider, Responsive, Layout, Layouts } from \"react-grid-layout\";\r\n\r\nimport React, { createRef, useEffect, useRef, useState } from \"react\";\r\nimport { Button } from \"primereact/button\";\r\nimport _, { find } from \"lodash\";\r\nimport { Ripple } from \"primereact/ripple\";\r\nimport { OverlayPanel } from \"primereact/overlaypanel\";\r\nimport { Dropdown } from \"primereact/dropdown\";\r\n\r\n\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 { WidgetComponent } from \"../../types/WidgetComponent\";\r\nimport { ReactWidgetPM } from \"../../types/widget\";\r\nimport WidgetCard from \"./WidgetCard\";\r\nimport { TRUE } from \"sass\";\r\nimport { DataPointSelection } from \"../../types/SeriesMeasure\";\r\nimport { DashboardDataBinding } from \"../../types/DashboardDataBinding\";\r\nimport { Tools } from \"../../services/tools\";\r\nimport { Subject } from 'rxjs';\r\nimport { deepClone } from '../../services/clone';\r\n\r\nconst ResponsiveReactGridLayout = WidthProvider(Responsive);\r\nconst newWidgetWidth = 3;\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\r\n\r\n const array12 = Array.from({ length: 12 }).fill(null);\r\n const minimumPlaceholderRowsCount = 12;\r\n // const layoutsRef = useRef<Layouts>({ lg: [] });\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\r\n \r\n\r\n useEffect(() => {\r\n\r\n FillLayout(props.Widgetlayouts);\r\n UpdatePlaceholderDimensions();\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 }\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\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();\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\r\n function UpdatePlaceholderDimensions() {\r\n var gridLayout = gridLayoutComponent.current;\r\n if (!gridLayout)\r\n return;\r\n const gridElementHeight = gridLayout.elementRef.current.clientHeight;\r\n\r\n let newPlaceholderRows = Math.floor(gridElementHeight / layoutGridProps.rowHeight);\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\">\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={() => UpdatePlaceholderDimensions()}\r\n onLayoutChange={(layout, layouts) =>\r\n onLayoutChange(layout, layouts)\r\n }\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\n\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 { Card } from 'primereact/card';\r\nimport { Button } from \"primereact/button\";\r\nimport DashboardDesigner, { layoutGridProps } from './features/Dashboard/DashboardDesigner'\r\nimport \"./styles.module.css\"\r\nimport { Dropdown } from 'primereact/dropdown';\r\nimport { createRef, useEffect, useRef, useState } from \"react\";\r\nimport { DashBoardService } from './services/DashBoardService';\r\nimport { ApiQueryFilters } from './common/data-contracts/ApiQueryFilter';\r\nimport { ReactDashboardPM } from './types/Dashboard';\r\nimport { Dialog } from 'primereact/dialog';\r\nimport DashboardDialogComponent from './features/Dashboard/dashboard-dialog/dashboard-dialog-component';\r\nimport { Session } from './services/session';\r\nimport { WidgetTypeListService } from './services/WidgetTypeListService';\r\nimport { WidgetType } from './types/WidgetType';\r\nimport { ReactWidgetPM } from './types/widget';\r\nimport { OverlayPanel } from 'primereact/overlaypanel';\r\nimport { Ripple } from 'primereact/ripple';\r\nimport { DashboardDataBinding } from './types/DashboardDataBinding';\r\nimport { Layout, Layouts } from 'react-grid-layout';\r\nimport { v4 as uuidv4 } from 'uuid';\r\nimport { deepClone } from './services/clone';\r\nimport { DataPointSelection } from './types/SeriesMeasure';\r\nimport { Tools } from './services/tools';\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 [reactDashboardPM, setReactDashboardPM] = useState<{ lg: ReactDashboardPM[] }>({ lg: [] });\r\n\r\n const newWidgetWidth = 3;\r\n const newWidgetHeight = 5;\r\n\r\n const Widgetlayouts = useRef<{ lg: ReactWidgetPM[] }>({ lg: [] });\r\n const FirstSetLayout = useRef<boolean>(false);\r\n const [widgetlayoutsState, setWidgetlayoutsState] = useState<{ lg: ReactWidgetPM[] }>({ lg: [] });\r\n const [isInEditMode, setIsInEditMode] = useState<boolean>(false);\r\n useEffect(() => {\r\n props.dataBinding.onGetLayouts.subscribe(layouts => {\r\n FirstSetLayout.current = true;\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\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 if (FirstSetLayout.current) {\r\n FirstSetLayout.current = false;\r\n return;\r\n }\r\n\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","ApexChart","props","useState","error","setEror","useRef","widgetRef","MeasuresIds","GroupByIds","GroupCount","isView","setisView","viewError","setViewError","isDataLoaded","hasDataError","series","options","args","serArgs","isLoadingDrow","useEffect","setTimeout","current","updateView","dataBinding","onEditWidget","subscribe","e","key","RefreshData","dashboardAnalyticsService","postWidget","onChange","undefined","then","result","fillIds","data","getChartOptions","console","log","response","ErrorMessage","message","datas","measuresIds","groupByIds","seriesMeasure","push","MeasureFieldId","SeriesMeasureVulues","vulue","GroupById","lineOptoins","values","categories","map","z","Value","Label","chart","height","type","zoom","enabled","events","click","dataPointSelection","toolbar","tools","download","dataLabels","stroke","curve","title","text","align","grid","row","colors","opacity","xaxis","noData","barOptoins","plotOptions","bar","horizontal","position","offsetX","style","fontSize","show","width","tooltip","shared","intersect","pieOptoins","labels","CreateColors","fillSeriesColor","legend","formatter","formatLabel","legendName","opts","LayoutWidth","Layout","w","Layoutheight","h","count","CreateDifferentColors","startAngle","s","v","index","color","donutOptoins","responsive","breakpoint","offsetY","handelNullLabels","forEach","element","value","dataPointIndex","seriesIndex","onSelectDataPoint","Widget","TypeCode","React","className","ProgressSpinner","strokeWidth","animationDuration","ReactApexChart","src","WidgetCard","state","moreBtnToggle","editWidget","hide","editBtnClicked","el","Title","isInEditMode","Button","icon","onClick","toggle","OverlayPanel","ref","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","UpdatePlaceholderDimensions","dashboardLayouts","clone","layout","createLayout","FillWidgetDictionary","item","editMode","onLayoutChange","changedLayouts","UpdateWidget","deletePanel","id","newLayouts","filter","newWidgets","ChangeSetOp","openEditWidget","gridLayout","gridElementHeight","elementRef","clientHeight","newPlaceholderRows","Math","floor","layoutGridProps","rowHeight","compactType","isDraggable","isResizable","onWidthChange","cols","md","sm","xs","xxs","useCSSTransforms","Dashboard","FirstSetLayout","widgetlayoutsState","setWidgetlayoutsState","setIsInEditMode","onGetLayouts","isOnEditLayout","onAddWidget","setItem","updateWidgets","layoutsDic","sizeType","newWidgetlayouts","StartPotistion","x","y","EndPosition","onChangeLayouts"],"mappings":"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"}
|
package/dist/index.modern.js
CHANGED
|
@@ -197,6 +197,7 @@ var ApexChart = function ApexChart(props) {
|
|
|
197
197
|
setEror = _useState[1];
|
|
198
198
|
|
|
199
199
|
var widget = useRef();
|
|
200
|
+
var widgetRef = useRef();
|
|
200
201
|
var MeasuresIds = useRef([]);
|
|
201
202
|
var GroupByIds = useRef([]);
|
|
202
203
|
var GroupCount = useRef(0);
|
|
@@ -238,8 +239,12 @@ var ApexChart = function ApexChart(props) {
|
|
|
238
239
|
});
|
|
239
240
|
}, []);
|
|
240
241
|
useEffect(function () {
|
|
242
|
+
widgetRef.current = props.widgetRef;
|
|
241
243
|
RefreshData();
|
|
242
244
|
}, []);
|
|
245
|
+
useEffect(function () {
|
|
246
|
+
widgetRef.current = props.widgetRef;
|
|
247
|
+
}, [props.widgetRef]);
|
|
243
248
|
|
|
244
249
|
var RefreshData = function RefreshData() {
|
|
245
250
|
var dashboardAnalyticsService = new DashboardAnalyticsService();
|
|
@@ -475,11 +480,12 @@ var ApexChart = function ApexChart(props) {
|
|
|
475
480
|
};
|
|
476
481
|
|
|
477
482
|
var formatLabel = function formatLabel(legendName, opts) {
|
|
478
|
-
var
|
|
483
|
+
var _widgetRef$current, _widgetRef$current$La, _widgetRef$current2, _widgetRef$current2$L;
|
|
479
484
|
|
|
480
|
-
var LayoutWidth = (
|
|
481
|
-
var Layoutheight = (
|
|
482
|
-
|
|
485
|
+
var LayoutWidth = (_widgetRef$current = widgetRef.current) === null || _widgetRef$current === void 0 ? void 0 : (_widgetRef$current$La = _widgetRef$current.Layout) === null || _widgetRef$current$La === void 0 ? void 0 : _widgetRef$current$La.w;
|
|
486
|
+
var Layoutheight = (_widgetRef$current2 = widgetRef.current) === null || _widgetRef$current2 === void 0 ? void 0 : (_widgetRef$current2$L = _widgetRef$current2.Layout) === null || _widgetRef$current2$L === void 0 ? void 0 : _widgetRef$current2$L.h;
|
|
487
|
+
console.log('W,H (', LayoutWidth, Layoutheight, ')');
|
|
488
|
+
var width = 120 * LayoutWidth / 3;
|
|
483
489
|
var text = "<div style=\"white-space: nowrap; text-overflow: ellipsis; overflow: hidden;width:" + width + "px;display: inline-block; \">" + legendName + "</div>";
|
|
484
490
|
return text;
|
|
485
491
|
};
|
|
@@ -580,11 +586,17 @@ var ApexChart = function ApexChart(props) {
|
|
|
580
586
|
};
|
|
581
587
|
|
|
582
588
|
var dataPointSelection = function dataPointSelection(e, chart, options) {
|
|
583
|
-
|
|
584
|
-
|
|
585
|
-
|
|
586
|
-
|
|
587
|
-
|
|
589
|
+
console.log(options.dataPointIndex, options.seriesIndex);
|
|
590
|
+
if (options.seriesIndex < 0 || options.seriesIndex > MeasuresIds.current.length - 1) options.seriesIndex = 0;
|
|
591
|
+
|
|
592
|
+
if (GroupByIds.current[options.dataPointIndex] && MeasuresIds.current[options.seriesIndex]) {
|
|
593
|
+
console.log(options.dataPointIndex, options.seriesIndex);
|
|
594
|
+
props.onSelectDataPoint({
|
|
595
|
+
GroupById: GroupByIds.current[options.dataPointIndex],
|
|
596
|
+
MeasureFieldId: MeasuresIds.current[options.seriesIndex],
|
|
597
|
+
Widget: props.widget
|
|
598
|
+
});
|
|
599
|
+
}
|
|
588
600
|
};
|
|
589
601
|
|
|
590
602
|
var getChartOptions = function getChartOptions(values) {
|
|
@@ -677,6 +689,7 @@ var WidgetCard = function WidgetCard(props, state) {
|
|
|
677
689
|
}, React__default.createElement(ApexChart, {
|
|
678
690
|
dataBinding: props.dataBinding,
|
|
679
691
|
widget: props.widget,
|
|
692
|
+
widgetRef: props.widgetRef,
|
|
680
693
|
onSelectDataPoint: props.onSelectDataPoint
|
|
681
694
|
})));
|
|
682
695
|
};
|
|
@@ -712,6 +725,8 @@ var DashboardDesigner = function DashboardDesigner(props) {
|
|
|
712
725
|
isInEditMode = _useState4[0],
|
|
713
726
|
setisInEditMode = _useState4[1];
|
|
714
727
|
|
|
728
|
+
var widgetsDictionaryRef = useRef({});
|
|
729
|
+
|
|
715
730
|
var _useState5 = useState({
|
|
716
731
|
lg: []
|
|
717
732
|
}),
|
|
@@ -721,17 +736,24 @@ var DashboardDesigner = function DashboardDesigner(props) {
|
|
|
721
736
|
var gridLayoutComponent = useRef(null);
|
|
722
737
|
useEffect(function () {
|
|
723
738
|
FillLayout(props.Widgetlayouts);
|
|
724
|
-
console.log('Widgetlayouts change DashboardDesigner => ', props.Widgetlayouts);
|
|
725
739
|
UpdatePlaceholderDimensions();
|
|
726
740
|
}, [props.Widgetlayouts]);
|
|
727
741
|
|
|
728
742
|
var FillLayout = function FillLayout(dashboardLayouts) {
|
|
729
743
|
var clone = deepClone(dashboardLayouts);
|
|
730
744
|
var layout = createLayout(clone);
|
|
745
|
+
FillWidgetDictionary(clone);
|
|
731
746
|
setWidgets(clone);
|
|
732
747
|
setLayouts(layout);
|
|
733
748
|
};
|
|
734
749
|
|
|
750
|
+
var FillWidgetDictionary = function FillWidgetDictionary(clone) {
|
|
751
|
+
for (var _iterator = _createForOfIteratorHelperLoose(clone.lg), _step; !(_step = _iterator()).done;) {
|
|
752
|
+
var item = _step.value;
|
|
753
|
+
widgetsDictionaryRef.current[item.key] = item;
|
|
754
|
+
}
|
|
755
|
+
};
|
|
756
|
+
|
|
735
757
|
var createLayout = function createLayout(dashboardLayouts) {
|
|
736
758
|
var layout = {
|
|
737
759
|
lg: []
|
|
@@ -746,15 +768,25 @@ var DashboardDesigner = function DashboardDesigner(props) {
|
|
|
746
768
|
|
|
747
769
|
useEffect(function () {
|
|
748
770
|
setisInEditMode(props.editMode);
|
|
749
|
-
console.log(' setisInEditMode(props.editMode);');
|
|
750
771
|
}, [props.editMode]);
|
|
751
772
|
|
|
752
773
|
function _onLayoutChange(layout, changedLayouts) {
|
|
774
|
+
UpdateWidget(changedLayouts);
|
|
753
775
|
setLayouts(changedLayouts);
|
|
754
776
|
UpdatePlaceholderDimensions();
|
|
755
777
|
props.onLayoutChange(changedLayouts);
|
|
756
778
|
}
|
|
757
779
|
|
|
780
|
+
function UpdateWidget(changedLayouts) {
|
|
781
|
+
for (var _iterator2 = _createForOfIteratorHelperLoose(changedLayouts.lg), _step2; !(_step2 = _iterator2()).done;) {
|
|
782
|
+
var item = _step2.value;
|
|
783
|
+
|
|
784
|
+
if (widgetsDictionaryRef.current[item.i]) {
|
|
785
|
+
widgetsDictionaryRef.current[item.i].Layout = item;
|
|
786
|
+
}
|
|
787
|
+
}
|
|
788
|
+
}
|
|
789
|
+
|
|
758
790
|
function deletePanel(id) {
|
|
759
791
|
var newLayouts = {
|
|
760
792
|
lg: layouts.lg.filter(function (e) {
|
|
@@ -767,6 +799,7 @@ var DashboardDesigner = function DashboardDesigner(props) {
|
|
|
767
799
|
return e.key != id;
|
|
768
800
|
})
|
|
769
801
|
};
|
|
802
|
+
FillWidgetDictionary(newWidgets);
|
|
770
803
|
setWidgets(newWidgets);
|
|
771
804
|
props.onLayoutChange(newLayouts);
|
|
772
805
|
}
|
|
@@ -779,14 +812,12 @@ var DashboardDesigner = function DashboardDesigner(props) {
|
|
|
779
812
|
function UpdatePlaceholderDimensions() {
|
|
780
813
|
var gridLayout = gridLayoutComponent.current;
|
|
781
814
|
if (!gridLayout) return;
|
|
782
|
-
console.log('setplaceholderRowsArray(', gridLayout);
|
|
783
815
|
var gridElementHeight = gridLayout.elementRef.current.clientHeight;
|
|
784
816
|
var newPlaceholderRows = Math.floor(gridElementHeight / layoutGridProps.rowHeight);
|
|
785
817
|
newPlaceholderRows = newPlaceholderRows < minimumPlaceholderRowsCount ? minimumPlaceholderRowsCount : newPlaceholderRows;
|
|
786
818
|
setplaceholderRowsArray(Array.from({
|
|
787
819
|
length: newPlaceholderRows
|
|
788
820
|
}).fill(null));
|
|
789
|
-
console.log('setplaceholderRowsArray(', newPlaceholderRows);
|
|
790
821
|
}
|
|
791
822
|
|
|
792
823
|
return React__default.createElement("div", {
|
|
@@ -830,6 +861,7 @@ var DashboardDesigner = function DashboardDesigner(props) {
|
|
|
830
861
|
isInEditMode: isInEditMode,
|
|
831
862
|
key: (_widget$Layout2 = widget.Layout) === null || _widget$Layout2 === void 0 ? void 0 : _widget$Layout2.i,
|
|
832
863
|
widget: widget,
|
|
864
|
+
widgetRef: widgetsDictionaryRef.current[widget.key],
|
|
833
865
|
el: widget,
|
|
834
866
|
dataBinding: props.dataBinding,
|
|
835
867
|
dateFilter: dateFilter,
|
|
@@ -877,7 +909,6 @@ var Dashboard = function Dashboard(props) {
|
|
|
877
909
|
useEffect(function () {
|
|
878
910
|
props.dataBinding.onGetLayouts.subscribe(function (layouts) {
|
|
879
911
|
FirstSetLayout.current = true;
|
|
880
|
-
console.log("index > dataBinding.onGetLayouts = > ", layouts);
|
|
881
912
|
Widgetlayouts.current = layouts;
|
|
882
913
|
setWidgetlayoutsState(deepClone(Widgetlayouts.current));
|
|
883
914
|
});
|
|
@@ -897,7 +928,6 @@ var Dashboard = function Dashboard(props) {
|
|
|
897
928
|
return;
|
|
898
929
|
}
|
|
899
930
|
|
|
900
|
-
console.log('updateWidgets = (layouts:Layouts', layouts);
|
|
901
931
|
var layoutsDic = {};
|
|
902
932
|
Object.keys(layouts).forEach(function (sizeType) {
|
|
903
933
|
if (layouts[sizeType].length > 0) {
|
|
@@ -919,7 +949,6 @@ var Dashboard = function Dashboard(props) {
|
|
|
919
949
|
Widgetlayouts.current = {
|
|
920
950
|
lg: newWidgetlayouts
|
|
921
951
|
};
|
|
922
|
-
console.log('after update widget', Widgetlayouts.current);
|
|
923
952
|
props.onChangeLayouts(Widgetlayouts.current);
|
|
924
953
|
};
|
|
925
954
|
|
package/dist/index.modern.js.map
CHANGED
|
@@ -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/ApexChart.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\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}","import React, { useEffect, useRef } from \"react\";\r\nimport ReactApexChart from \"react-apexcharts\";\r\nimport { ProgressSpinner } from 'primereact/progressspinner';\r\nimport { ReactWidgetPM } from \"../../../types/widget\";\r\nimport { useState } from 'react';\r\nimport { DashboardAnalyticsService } from \"../../../services/DashboardAnalyticsService\";\r\nimport { DataPointSelection, SeriesMeasure } from '../../../types/SeriesMeasure';\r\nimport { ApexOptions } from \"apexcharts\";\r\nimport { DashboardDataBinding } from \"../../../types/DashboardDataBinding\";\r\nimport { Tools } from \"../../../services/tools\";\r\n\r\ntype ApexChartProps = {\r\n widget: ReactWidgetPM | undefined,\r\n dataBinding: DashboardDataBinding;\r\n onSelectDataPoint: (dataPointSelection: DataPointSelection) => void;\r\n};\r\nconst ApexChart = (props: ApexChartProps) => {\r\n\r\n const [error, setEror] = useState<string>('');\r\n const widget = useRef<ReactWidgetPM>();\r\n const MeasuresIds = useRef<string[]>([]);\r\n const GroupByIds = useRef<string[]>([]);\r\n const GroupCount = useRef<number>(0);\r\n const [isView, setisView] = useState<boolean>(false);\r\n const [viewError, setViewError] = useState<boolean>(false);\r\n const isDataLoaded = useRef<boolean>(false);\r\n const hasDataError = useRef<boolean>(false);\r\n const [args, serArgs] = useState<ApexChartArgs>({\r\n series: [],\r\n options: {}\r\n });\r\n const isLoadingDrow = useRef(true);\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 useEffect(() => {\r\n\r\n RefreshData();\r\n\r\n\r\n }, []);\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 fillIds(result.data);\r\n const data = getChartOptions(result.data);\r\n serArgs(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 const fillIds = (datas: SeriesMeasure[]) => {\r\n var measuresIds: string[] = [];\r\n var groupByIds: string[] = [];\r\n for (const seriesMeasure of datas) {\r\n measuresIds.push(seriesMeasure.MeasureFieldId);\r\n }\r\n\r\n for (const seriesMeasure of datas) {\r\n for (const vulue of seriesMeasure.SeriesMeasureVulues) {\r\n groupByIds.push(vulue.GroupById);\r\n }\r\n break;\r\n }\r\n\r\n MeasuresIds.current = measuresIds;\r\n GroupByIds.current = groupByIds;\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 lineOptoins = (values: SeriesMeasure[]): ApexChartArgs => {\r\n\r\n\r\n var series: any = [];\r\n var categories: any = [];\r\n if (values && values[0]) {\r\n series = values.map(e => {\r\n return { data: e.SeriesMeasureVulues.map(z => z.Value) }\r\n }\r\n );\r\n categories = values[0].SeriesMeasureVulues.map(e => e.Label);\r\n }\r\n\r\n return {\r\n\r\n series: series,\r\n options: {\r\n chart: {\r\n height: 350,\r\n type: 'line',\r\n zoom: {\r\n enabled: false\r\n },\r\n events: {\r\n click: dataPointSelection,\r\n },\r\n toolbar: {\r\n tools: {\r\n download: false,\r\n }\r\n }\r\n },\r\n dataLabels: {\r\n enabled: false\r\n },\r\n stroke: {\r\n curve: 'straight'\r\n },\r\n title: {\r\n text: '',\r\n align: 'left'\r\n },\r\n grid: {\r\n row: {\r\n colors: ['#f3f3f3', 'transparent'], // takes an array which will be repeated on columns\r\n opacity: 0.5\r\n },\r\n },\r\n xaxis: {\r\n categories: categories\r\n },\r\n noData: {\r\n text: 'No Data Found',\r\n\r\n }\r\n },\r\n\r\n\r\n };\r\n }\r\n const barOptoins = (values: SeriesMeasure[]): ApexChartArgs => {\r\n var series: any = [{\r\n data: []\r\n }];\r\n var categories: any = [];\r\n if (values && values[0]) {\r\n series = values.map(e => {\r\n return { data: e.SeriesMeasureVulues.map(z => z.Value) }\r\n }\r\n );\r\n categories = values[0].SeriesMeasureVulues.map(e => e.Label);\r\n }\r\n return {\r\n series: series\r\n ,\r\n options: {\r\n chart: {\r\n type: 'bar',\r\n height: 430,\r\n events: {\r\n dataPointSelection: dataPointSelection\r\n },\r\n toolbar: {\r\n tools: {\r\n download: false,\r\n }\r\n }\r\n },\r\n plotOptions: {\r\n bar: {\r\n horizontal: true,\r\n dataLabels: {\r\n position: 'top',\r\n\r\n },\r\n }\r\n },\r\n dataLabels: {\r\n enabled: false,\r\n offsetX: -6,\r\n style: {\r\n fontSize: '12px',\r\n colors: ['#fff']\r\n }\r\n },\r\n stroke: {\r\n show: true,\r\n width: 1,\r\n colors: ['#fff']\r\n },\r\n tooltip: {\r\n shared: true,\r\n intersect: false\r\n },\r\n xaxis: {\r\n categories: categories\r\n\r\n },\r\n noData: {\r\n text: 'No Data Found',\r\n\r\n }\r\n },\r\n\r\n\r\n };\r\n }\r\n const pieOptoins = (values: SeriesMeasure[]): ApexChartArgs => {\r\n\r\n var series: any = [];\r\n var labels: any = [];\r\n if (values && values[0]) {\r\n series = values[0].SeriesMeasureVulues.map(e => e.Value);\r\n labels = values[0].SeriesMeasureVulues.map(e => e.Label);\r\n }\r\n var colors = CreateColors(labels.length);\r\n\r\n return {\r\n\r\n series: series,\r\n options: {\r\n chart: {\r\n type: 'pie',\r\n events: {\r\n dataPointSelection: dataPointSelection\r\n },\r\n toolbar: {\r\n tools: {\r\n download: false,\r\n }\r\n }\r\n },\r\n labels: labels,\r\n colors: colors,\r\n tooltip: {\r\n fillSeriesColor: false\r\n },\r\n noData: {\r\n text: 'No Data Found',\r\n\r\n },\r\n legend: {\r\n formatter :formatLabel,\r\n \r\n }\r\n\r\n },\r\n\r\n\r\n\r\n };\r\n }\r\n const formatLabel = (legendName, opts?) => {\r\n let LayoutWidth:number = widget.current?.Layout?.w as number; \r\n let Layoutheight:number = widget.current?.Layout?.h as number; \r\n var width = 120 * LayoutWidth / 3 + (LayoutWidth / 3 / Layoutheight) * 2\r\n var text = `<div style=\"white-space: nowrap; text-overflow: ellipsis; overflow: hidden;width:${width}px;display: inline-block; \">${legendName}</div>`;\r\n // if(legendName.length > 17){\r\n // text = text.substring(0,17) + '...'\r\n // }\r\n return text;\r\n }\r\n\r\n const tooltipHoverFormatter = (legendName, opts?) => {\r\n \r\n }\r\n const CreateColors = (count: number): any[] | undefined => {\r\n GroupCount.current = count;\r\n var colors: any[] = [];\r\n CreateDifferentColors(colors, 0, 100, 50);\r\n if (GroupCount.current <= 0)\r\n return colors;\r\n CreateDifferentColors(colors, 15, 100, 50);\r\n if (GroupCount.current <= 0)\r\n return colors;\r\n CreateDifferentColors(colors, 0, 50, 50);\r\n if (GroupCount.current <= 0)\r\n return colors;\r\n CreateDifferentColors(colors, 15, 50, 50);\r\n if (GroupCount.current <= 0)\r\n return colors;\r\n CreateDifferentColors(colors, 0, 50, 30);\r\n if (GroupCount.current <= 0)\r\n return colors;\r\n CreateDifferentColors(colors, 15, 50, 30);\r\n if (GroupCount.current <= 0)\r\n return colors;\r\n\r\n return undefined;\r\n\r\n\r\n }\r\n const CreateDifferentColors = (colors: any[], startAngle: number, s: number, v: number) => {\r\n for (let index = 0; GroupCount.current > 0 && index < 12; index++) {\r\n var color = `hsl(${startAngle + index * 30}deg ${s}% ${v}%)`;\r\n colors.push(color);\r\n GroupCount.current--;\r\n }\r\n }\r\n const donutOptoins = (values: SeriesMeasure[]): ApexChartArgs => {\r\n var series: any[] = [];\r\n var labels: any[] = [];\r\n if (values && values[0]) {\r\n series = values[0].SeriesMeasureVulues.map(e => e.Value);\r\n labels = values[0].SeriesMeasureVulues.map(e => e.Label);\r\n // var ll = labels.length;\r\n // for (let index = 0; index < ll; index++) {\r\n // series[index] = 100;\r\n // series.push(100);\r\n // labels.push(labels[index]+'TT');\r\n // }\r\n // for (let index = 0; index < ll; index++) {\r\n // series.push(100);\r\n // labels.push(labels[index]+'TT2');\r\n // }\r\n }\r\n var colors = CreateColors(labels.length);\r\n var result: { series, options: ApexOptions } = {\r\n\r\n series: series,\r\n options: {\r\n chart: {\r\n width: 380,\r\n type: 'donut',\r\n events: {\r\n dataPointSelection: dataPointSelection\r\n },\r\n toolbar: {\r\n tools: {\r\n download: false,\r\n }\r\n }\r\n },\r\n dataLabels: {\r\n enabled: false\r\n },\r\n responsive: [{\r\n breakpoint: 480,\r\n options: {\r\n chart: {\r\n width: 200\r\n },\r\n legend: {\r\n show: false\r\n }\r\n }\r\n }],\r\n legend: {\r\n position: 'right',\r\n offsetY: 0,\r\n height: 230,\r\n },\r\n labels: labels,\r\n colors: colors,\r\n tooltip: {\r\n fillSeriesColor: false\r\n },\r\n noData: {\r\n text: 'No Data Found',\r\n\r\n }\r\n },\r\n\r\n\r\n };\r\n return result;\r\n }\r\n\r\n const handelNullLabels = (values: SeriesMeasure[]) => {\r\n values.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\n\r\n\r\n\r\n const dataPointSelection = (e: any, chart?: any, options?: any): void => {\r\n props.onSelectDataPoint({\r\n GroupById: GroupByIds.current[options.dataPointIndex],\r\n MeasureFieldId: MeasuresIds.current[options.seriesIndex],\r\n Widget: props.widget\r\n })\r\n };\r\n\r\n const getChartOptions = (values: SeriesMeasure[]): ApexChartArgs => {\r\n handelNullLabels(values);\r\n switch (props.widget?.TypeCode) {\r\n case 'bar':\r\n return barOptoins(values);\r\n break;\r\n case 'line':\r\n return lineOptoins(values);\r\n break;\r\n case 'pie':\r\n return pieOptoins(values);\r\n break;\r\n case 'donut':\r\n return donutOptoins(values);\r\n break;\r\n default:\r\n break;\r\n }\r\n return barOptoins(values);\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 <ReactApexChart\r\n options={args?.options}\r\n series={args?.series}\r\n type={props.widget?.TypeCode}\r\n height={\"100%\"}\r\n width={\"100%\"}\r\n\r\n />\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 type ApexChartArgs = {\r\n options: ApexOptions;\r\n series: ApexAxisChartSeries | ApexNonAxisChartSeries;\r\n}\r\n\r\nexport default ApexChart;\r\n\r\n\r\n","import { stat } from \"fs\";\r\nimport { Button } from \"primereact/button\";\r\nimport { OverlayPanel } from \"primereact/overlaypanel\";\r\nimport React, { useRef, useState, useEffect } from \"react\";\r\nimport { DataPointSelection } from \"../../types/SeriesMeasure\";\r\nimport { ReactWidgetPM } from \"../../types/widget\";\r\nimport ApexChart from \"./ChartsComponents/ApexChart\";\r\nimport { DashboardDataBinding } from '../../types/DashboardDataBinding';\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 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>\r\n <h1>{props.widget?.Title || \"not set\"}</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 <ApexChart dataBinding={props.dataBinding} widget={props.widget} onSelectDataPoint={props.onSelectDataPoint} />\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}","\r\n\r\nimport { WidthProvider, Responsive, Layout, Layouts } from \"react-grid-layout\";\r\n\r\nimport React, { createRef, useEffect, useRef, useState } from \"react\";\r\nimport { Button } from \"primereact/button\";\r\nimport _, { find } from \"lodash\";\r\nimport { Ripple } from \"primereact/ripple\";\r\nimport { OverlayPanel } from \"primereact/overlaypanel\";\r\nimport { Dropdown } from \"primereact/dropdown\";\r\n\r\n\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 { WidgetComponent } from \"../../types/WidgetComponent\";\r\nimport { ReactWidgetPM } from \"../../types/widget\";\r\nimport WidgetCard from \"./WidgetCard\";\r\nimport { TRUE } from \"sass\";\r\nimport { DataPointSelection } from \"../../types/SeriesMeasure\";\r\nimport { DashboardDataBinding } from \"../../types/DashboardDataBinding\";\r\nimport { Tools } from \"../../services/tools\";\r\nimport { Subject } from 'rxjs';\r\nimport { deepClone } from '../../services/clone';\r\n\r\nconst ResponsiveReactGridLayout = WidthProvider(Responsive);\r\nconst newWidgetWidth = 3;\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\r\n\r\n const array12 = Array.from({ length: 12 }).fill(null);\r\n const minimumPlaceholderRowsCount = 12;\r\n // const layoutsRef = useRef<Layouts>({ lg: [] });\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 widgetsRef = useRef<{ lg: ReactWidgetPM[] }>({ lg: [] });\r\n const [widgets, setWidgets] = useState<{ lg: ReactWidgetPM[] }>({ lg: [] });\r\n const gridLayoutComponent = useRef<any>(null);\r\n\r\n \r\n\r\n useEffect(() => {\r\n\r\n FillLayout(props.Widgetlayouts);\r\n console.log('Widgetlayouts change DashboardDesigner => ',props.Widgetlayouts)\r\n UpdatePlaceholderDimensions();\r\n }, [props.Widgetlayouts]);\r\n\r\n const FillLayout = (dashboardLayouts: { lg: ReactWidgetPM[] }) => {\r\n var clone = deepClone(dashboardLayouts);\r\n var layout = createLayout(clone);\r\n setWidgets(clone);\r\n setLayouts(layout);\r\n\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 console.log(' setisInEditMode(props.editMode);')\r\n }, [props.editMode]);\r\n\r\n\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\r\n setLayouts(changedLayouts);\r\n UpdatePlaceholderDimensions();\r\n props.onLayoutChange(changedLayouts)\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 // widgetsRef.current = 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\r\n function UpdatePlaceholderDimensions() {\r\n var gridLayout = gridLayoutComponent.current;\r\n if (!gridLayout)\r\n return;\r\n console.log('setplaceholderRowsArray(', gridLayout);\r\n const gridElementHeight = gridLayout.elementRef.current.clientHeight;\r\n\r\n let newPlaceholderRows = Math.floor(gridElementHeight / layoutGridProps.rowHeight);\r\n newPlaceholderRows = newPlaceholderRows < minimumPlaceholderRowsCount ? minimumPlaceholderRowsCount : newPlaceholderRows;\r\n setplaceholderRowsArray(Array.from({ length: newPlaceholderRows }).fill(null));\r\n console.log('setplaceholderRowsArray(', newPlaceholderRows);\r\n }\r\n return (<div className=\"dl-full-hight\">\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={() => UpdatePlaceholderDimensions()}\r\n onLayoutChange={(layout, layouts) =>\r\n onLayoutChange(layout, layouts)\r\n }\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 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\n\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 { Card } from 'primereact/card';\r\nimport { Button } from \"primereact/button\";\r\nimport DashboardDesigner, { layoutGridProps } from './features/Dashboard/DashboardDesigner'\r\nimport \"./styles.module.css\"\r\nimport { Dropdown } from 'primereact/dropdown';\r\nimport { createRef, useEffect, useRef, useState } from \"react\";\r\nimport { DashBoardService } from './services/DashBoardService';\r\nimport { ApiQueryFilters } from './common/data-contracts/ApiQueryFilter';\r\nimport { ReactDashboardPM } from './types/Dashboard';\r\nimport { Dialog } from 'primereact/dialog';\r\nimport DashboardDialogComponent from './features/Dashboard/dashboard-dialog/dashboard-dialog-component';\r\nimport { Session } from './services/session';\r\nimport { WidgetTypeListService } from './services/WidgetTypeListService';\r\nimport { WidgetType } from './types/WidgetType';\r\nimport { ReactWidgetPM } from './types/widget';\r\nimport { OverlayPanel } from 'primereact/overlaypanel';\r\nimport { Ripple } from 'primereact/ripple';\r\nimport { DashboardDataBinding } from './types/DashboardDataBinding';\r\nimport { Layout, Layouts } from 'react-grid-layout';\r\nimport { v4 as uuidv4 } from 'uuid';\r\nimport { deepClone } from './services/clone';\r\nimport { DataPointSelection } from './types/SeriesMeasure';\r\nimport { Tools } from './services/tools';\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 [reactDashboardPM, setReactDashboardPM] = useState<{ lg: ReactDashboardPM[] }>({ lg: [] });\r\n\r\n const newWidgetWidth = 3;\r\n const newWidgetHeight = 5;\r\n\r\n const Widgetlayouts = useRef<{ lg: ReactWidgetPM[] }>({ lg: [] });\r\n const FirstSetLayout = useRef<boolean>(false);\r\n const [widgetlayoutsState, setWidgetlayoutsState] = useState<{ lg: ReactWidgetPM[] }>({ lg: [] });\r\n const [isInEditMode, setIsInEditMode] = useState<boolean>(false);\r\n useEffect(() => {\r\n props.dataBinding.onGetLayouts.subscribe(layouts => {\r\n FirstSetLayout.current = true;\r\n console.log(\"index > dataBinding.onGetLayouts = > \", 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\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 if (FirstSetLayout.current) {\r\n FirstSetLayout.current = false;\r\n return;\r\n }\r\n\r\n console.log('updateWidgets = (layouts: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 console.log('after update widget', Widgetlayouts.current)\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","ApexChart","props","useState","error","setEror","useRef","MeasuresIds","GroupByIds","GroupCount","isView","setisView","viewError","setViewError","isDataLoaded","hasDataError","series","options","args","serArgs","isLoadingDrow","useEffect","setTimeout","current","updateView","dataBinding","onEditWidget","subscribe","e","key","RefreshData","dashboardAnalyticsService","postWidget","onChange","undefined","then","result","fillIds","data","getChartOptions","console","log","response","ErrorMessage","message","datas","measuresIds","groupByIds","seriesMeasure","push","MeasureFieldId","SeriesMeasureVulues","vulue","GroupById","lineOptoins","values","categories","map","z","Value","Label","chart","height","type","zoom","enabled","events","click","dataPointSelection","toolbar","tools","download","dataLabels","stroke","curve","title","text","align","grid","row","colors","opacity","xaxis","noData","barOptoins","plotOptions","bar","horizontal","position","offsetX","style","fontSize","show","width","tooltip","shared","intersect","pieOptoins","labels","CreateColors","fillSeriesColor","legend","formatter","formatLabel","legendName","opts","LayoutWidth","Layout","w","Layoutheight","h","count","CreateDifferentColors","startAngle","s","v","index","color","donutOptoins","responsive","breakpoint","offsetY","handelNullLabels","forEach","element","value","onSelectDataPoint","dataPointIndex","seriesIndex","Widget","TypeCode","React","className","ProgressSpinner","strokeWidth","animationDuration","ReactApexChart","src","WidgetCard","state","moreBtnToggle","editWidget","hide","editBtnClicked","el","Title","isInEditMode","Button","icon","onClick","toggle","OverlayPanel","ref","deleteBtnClicked","deepClone","obj","parse","ResponsiveReactGridLayout","WidthProvider","Responsive","DashboardDesigner","array12","Array","fill","minimumPlaceholderRowsCount","lg","layouts","setLayouts","placeholderRowsArray","setplaceholderRowsArray","dateFilter","setisInEditMode","widgets","setWidgets","gridLayoutComponent","FillLayout","Widgetlayouts","UpdatePlaceholderDimensions","dashboardLayouts","clone","layout","createLayout","editMode","onLayoutChange","changedLayouts","deletePanel","id","newLayouts","filter","newWidgets","ChangeSetOp","openEditWidget","gridLayout","gridElementHeight","elementRef","clientHeight","newPlaceholderRows","Math","floor","layoutGridProps","rowHeight","compactType","isDraggable","isResizable","onWidthChange","cols","md","sm","xs","xxs","useCSSTransforms","Dashboard","FirstSetLayout","widgetlayoutsState","setWidgetlayoutsState","setIsInEditMode","onGetLayouts","isOnEditLayout","onAddWidget","setItem","updateWidgets","layoutsDic","sizeType","newWidgetlayouts","StartPotistion","x","y","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/ApexChart.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\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}","import React, { useEffect, useRef } from \"react\";\r\nimport ReactApexChart from \"react-apexcharts\";\r\nimport { ProgressSpinner } from 'primereact/progressspinner';\r\nimport { ReactWidgetPM } from \"../../../types/widget\";\r\nimport { useState } from 'react';\r\nimport { DashboardAnalyticsService } from \"../../../services/DashboardAnalyticsService\";\r\nimport { DataPointSelection, SeriesMeasure } from '../../../types/SeriesMeasure';\r\nimport { ApexOptions } from \"apexcharts\";\r\nimport { DashboardDataBinding } from \"../../../types/DashboardDataBinding\";\r\nimport { Tools } from \"../../../services/tools\";\r\n\r\ntype ApexChartProps = {\r\n widget: ReactWidgetPM | undefined,\r\n widgetRef: ReactWidgetPM | undefined,\r\n dataBinding: DashboardDataBinding;\r\n onSelectDataPoint: (dataPointSelection: DataPointSelection) => void;\r\n};\r\nconst ApexChart = (props: ApexChartProps) => {\r\n\r\n const [error, setEror] = useState<string>('');\r\n const widget = useRef<ReactWidgetPM>();\r\n const widgetRef = useRef<ReactWidgetPM>();\r\n const MeasuresIds = useRef<string[]>([]);\r\n const GroupByIds = useRef<string[]>([]);\r\n const GroupCount = useRef<number>(0);\r\n const [isView, setisView] = useState<boolean>(false);\r\n const [viewError, setViewError] = useState<boolean>(false);\r\n const isDataLoaded = useRef<boolean>(false);\r\n const hasDataError = useRef<boolean>(false);\r\n const [args, serArgs] = useState<ApexChartArgs>({\r\n series: [],\r\n options: {}\r\n });\r\n const isLoadingDrow = useRef(true);\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 useEffect(() => {\r\n widgetRef.current = props.widgetRef;\r\n RefreshData();\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 fillIds(result.data);\r\n const data = getChartOptions(result.data);\r\n serArgs(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 const fillIds = (datas: SeriesMeasure[]) => {\r\n var measuresIds: string[] = [];\r\n var groupByIds: string[] = [];\r\n for (const seriesMeasure of datas) {\r\n measuresIds.push(seriesMeasure.MeasureFieldId);\r\n }\r\n\r\n for (const seriesMeasure of datas) {\r\n for (const vulue of seriesMeasure.SeriesMeasureVulues) {\r\n groupByIds.push(vulue.GroupById);\r\n }\r\n break;\r\n }\r\n\r\n MeasuresIds.current = measuresIds;\r\n GroupByIds.current = groupByIds;\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 lineOptoins = (values: SeriesMeasure[]): ApexChartArgs => {\r\n\r\n\r\n var series: any = [];\r\n var categories: any = [];\r\n if (values && values[0]) {\r\n series = values.map(e => {\r\n return { data: e.SeriesMeasureVulues.map(z => z.Value) }\r\n }\r\n );\r\n categories = values[0].SeriesMeasureVulues.map(e => e.Label);\r\n }\r\n\r\n return {\r\n\r\n series: series,\r\n options: {\r\n chart: {\r\n height: 350,\r\n type: 'line',\r\n zoom: {\r\n enabled: false\r\n },\r\n events: {\r\n click: dataPointSelection,\r\n },\r\n toolbar: {\r\n tools: {\r\n download: false,\r\n }\r\n }\r\n },\r\n dataLabels: {\r\n enabled: false\r\n },\r\n stroke: {\r\n curve: 'straight'\r\n },\r\n title: {\r\n text: '',\r\n align: 'left'\r\n },\r\n grid: {\r\n row: {\r\n colors: ['#f3f3f3', 'transparent'], // takes an array which will be repeated on columns\r\n opacity: 0.5\r\n },\r\n },\r\n xaxis: {\r\n categories: categories\r\n },\r\n noData: {\r\n text: 'No Data Found',\r\n\r\n }\r\n },\r\n\r\n\r\n };\r\n }\r\n const barOptoins = (values: SeriesMeasure[]): ApexChartArgs => {\r\n var series: any = [{\r\n data: []\r\n }];\r\n var categories: any = [];\r\n if (values && values[0]) {\r\n series = values.map(e => {\r\n return { data: e.SeriesMeasureVulues.map(z => z.Value) }\r\n }\r\n );\r\n categories = values[0].SeriesMeasureVulues.map(e => e.Label);\r\n }\r\n return {\r\n series: series\r\n ,\r\n options: {\r\n chart: {\r\n type: 'bar',\r\n height: 430,\r\n events: {\r\n dataPointSelection: dataPointSelection\r\n },\r\n toolbar: {\r\n tools: {\r\n download: false,\r\n }\r\n }\r\n },\r\n plotOptions: {\r\n bar: {\r\n horizontal: true,\r\n dataLabels: {\r\n position: 'top',\r\n\r\n },\r\n }\r\n },\r\n dataLabels: {\r\n enabled: false,\r\n offsetX: -6,\r\n style: {\r\n fontSize: '12px',\r\n colors: ['#fff']\r\n }\r\n },\r\n stroke: {\r\n show: true,\r\n width: 1,\r\n colors: ['#fff']\r\n },\r\n tooltip: {\r\n shared: true,\r\n intersect: false\r\n },\r\n xaxis: {\r\n categories: categories\r\n\r\n },\r\n noData: {\r\n text: 'No Data Found',\r\n\r\n }\r\n },\r\n\r\n\r\n };\r\n }\r\n const pieOptoins = (values: SeriesMeasure[]): ApexChartArgs => {\r\n\r\n var series: any = [];\r\n var labels: any = [];\r\n if (values && values[0]) {\r\n series = values[0].SeriesMeasureVulues.map(e => e.Value);\r\n labels = values[0].SeriesMeasureVulues.map(e => e.Label);\r\n }\r\n var colors = CreateColors(labels.length);\r\n\r\n return {\r\n\r\n series: series,\r\n options: {\r\n chart: {\r\n type: 'pie',\r\n events: {\r\n dataPointSelection: dataPointSelection\r\n },\r\n toolbar: {\r\n tools: {\r\n download: false,\r\n }\r\n }\r\n },\r\n labels: labels,\r\n colors: colors,\r\n tooltip: {\r\n fillSeriesColor: false\r\n },\r\n noData: {\r\n text: 'No Data Found',\r\n\r\n },\r\n legend: {\r\n formatter: formatLabel,\r\n\r\n }\r\n\r\n },\r\n\r\n\r\n\r\n };\r\n }\r\n const formatLabel = (legendName, opts?) => {\r\n let LayoutWidth: number = widgetRef.current?.Layout?.w as number;\r\n let Layoutheight: number = widgetRef.current?.Layout?.h as number;\r\n console.log('W,H (', LayoutWidth, Layoutheight, ')')\r\n var width = 120 * LayoutWidth / 3 ;\r\n var text = `<div style=\"white-space: nowrap; text-overflow: ellipsis; overflow: hidden;width:${width}px;display: inline-block; \">${legendName}</div>`;\r\n // if(legendName.length > 17){\r\n // text = text.substring(0,17) + '...'\r\n // }\r\n return text;\r\n }\r\n\r\n const tooltipHoverFormatter = (legendName, opts?) => {\r\n\r\n }\r\n const CreateColors = (count: number): any[] | undefined => {\r\n GroupCount.current = count;\r\n var colors: any[] = [];\r\n CreateDifferentColors(colors, 0, 100, 50);\r\n if (GroupCount.current <= 0)\r\n return colors;\r\n CreateDifferentColors(colors, 15, 100, 50);\r\n if (GroupCount.current <= 0)\r\n return colors;\r\n CreateDifferentColors(colors, 0, 50, 50);\r\n if (GroupCount.current <= 0)\r\n return colors;\r\n CreateDifferentColors(colors, 15, 50, 50);\r\n if (GroupCount.current <= 0)\r\n return colors;\r\n CreateDifferentColors(colors, 0, 50, 30);\r\n if (GroupCount.current <= 0)\r\n return colors;\r\n CreateDifferentColors(colors, 15, 50, 30);\r\n if (GroupCount.current <= 0)\r\n return colors;\r\n\r\n return undefined;\r\n\r\n\r\n }\r\n const CreateDifferentColors = (colors: any[], startAngle: number, s: number, v: number) => {\r\n for (let index = 0; GroupCount.current > 0 && index < 12; index++) {\r\n var color = `hsl(${startAngle + index * 30}deg ${s}% ${v}%)`;\r\n colors.push(color);\r\n GroupCount.current--;\r\n }\r\n }\r\n const donutOptoins = (values: SeriesMeasure[]): ApexChartArgs => {\r\n var series: any[] = [];\r\n var labels: any[] = [];\r\n if (values && values[0]) {\r\n series = values[0].SeriesMeasureVulues.map(e => e.Value);\r\n labels = values[0].SeriesMeasureVulues.map(e => e.Label);\r\n // var ll = labels.length;\r\n // for (let index = 0; index < ll; index++) {\r\n // series[index] = 100;\r\n // series.push(100);\r\n // labels.push(labels[index]+'TT');\r\n // }\r\n // for (let index = 0; index < ll; index++) {\r\n // series.push(100);\r\n // labels.push(labels[index]+'TT2');\r\n // }\r\n }\r\n var colors = CreateColors(labels.length);\r\n var result: { series, options: ApexOptions } = {\r\n\r\n series: series,\r\n options: {\r\n chart: {\r\n width: 380,\r\n type: 'donut',\r\n events: {\r\n dataPointSelection: dataPointSelection\r\n },\r\n toolbar: {\r\n tools: {\r\n download: false,\r\n }\r\n }\r\n },\r\n dataLabels: {\r\n enabled: false\r\n },\r\n responsive: [{\r\n breakpoint: 480,\r\n options: {\r\n chart: {\r\n width: 200\r\n },\r\n legend: {\r\n show: false\r\n }\r\n }\r\n }],\r\n legend: {\r\n position: 'right',\r\n offsetY: 0,\r\n height: 230,\r\n },\r\n labels: labels,\r\n colors: colors,\r\n tooltip: {\r\n fillSeriesColor: false\r\n },\r\n noData: {\r\n text: 'No Data Found',\r\n\r\n }\r\n },\r\n\r\n\r\n };\r\n return result;\r\n }\r\n\r\n const handelNullLabels = (values: SeriesMeasure[]) => {\r\n values.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\n\r\n\r\n\r\n const dataPointSelection = (e: any, chart?: any, options?: any): void => {\r\n console.log(options.dataPointIndex, options.seriesIndex)\r\n if (options.seriesIndex < 0 || options.seriesIndex > MeasuresIds.current.length -1 )\r\n options.seriesIndex = 0\r\n if (GroupByIds.current[options.dataPointIndex] && MeasuresIds.current[options.seriesIndex]) {\r\n console.log(options.dataPointIndex, options.seriesIndex)\r\n props.onSelectDataPoint({\r\n GroupById: GroupByIds.current[options.dataPointIndex],\r\n MeasureFieldId: MeasuresIds.current[options.seriesIndex],\r\n Widget: props.widget\r\n });\r\n }\r\n\r\n };\r\n\r\n const getChartOptions = (values: SeriesMeasure[]): ApexChartArgs => {\r\n handelNullLabels(values);\r\n switch (props.widget?.TypeCode) {\r\n case 'bar':\r\n return barOptoins(values);\r\n break;\r\n case 'line':\r\n return lineOptoins(values);\r\n break;\r\n case 'pie':\r\n return pieOptoins(values);\r\n break;\r\n case 'donut':\r\n return donutOptoins(values);\r\n break;\r\n default:\r\n break;\r\n }\r\n return barOptoins(values);\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 <ReactApexChart\r\n options={args?.options}\r\n series={args?.series}\r\n type={props.widget?.TypeCode}\r\n height={\"100%\"}\r\n width={\"100%\"}\r\n\r\n />\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 type ApexChartArgs = {\r\n options: ApexOptions;\r\n series: ApexAxisChartSeries | ApexNonAxisChartSeries;\r\n}\r\n\r\nexport default ApexChart;\r\n\r\n\r\n","import { stat } from \"fs\";\r\nimport { Button } from \"primereact/button\";\r\nimport { OverlayPanel } from \"primereact/overlaypanel\";\r\nimport React, { useRef, useState, useEffect } from \"react\";\r\nimport { DataPointSelection } from \"../../types/SeriesMeasure\";\r\nimport { ReactWidgetPM } from \"../../types/widget\";\r\nimport ApexChart from \"./ChartsComponents/ApexChart\";\r\nimport { DashboardDataBinding } from '../../types/DashboardDataBinding';\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>\r\n <h1>{props.widget?.Title || \"not set\"}</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 <ApexChart dataBinding={props.dataBinding} widget={props.widget} widgetRef={props.widgetRef} onSelectDataPoint={props.onSelectDataPoint} />\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}","\r\n\r\nimport { WidthProvider, Responsive, Layout, Layouts } from \"react-grid-layout\";\r\n\r\nimport React, { createRef, useEffect, useRef, useState } from \"react\";\r\nimport { Button } from \"primereact/button\";\r\nimport _, { find } from \"lodash\";\r\nimport { Ripple } from \"primereact/ripple\";\r\nimport { OverlayPanel } from \"primereact/overlaypanel\";\r\nimport { Dropdown } from \"primereact/dropdown\";\r\n\r\n\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 { WidgetComponent } from \"../../types/WidgetComponent\";\r\nimport { ReactWidgetPM } from \"../../types/widget\";\r\nimport WidgetCard from \"./WidgetCard\";\r\nimport { TRUE } from \"sass\";\r\nimport { DataPointSelection } from \"../../types/SeriesMeasure\";\r\nimport { DashboardDataBinding } from \"../../types/DashboardDataBinding\";\r\nimport { Tools } from \"../../services/tools\";\r\nimport { Subject } from 'rxjs';\r\nimport { deepClone } from '../../services/clone';\r\n\r\nconst ResponsiveReactGridLayout = WidthProvider(Responsive);\r\nconst newWidgetWidth = 3;\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\r\n\r\n const array12 = Array.from({ length: 12 }).fill(null);\r\n const minimumPlaceholderRowsCount = 12;\r\n // const layoutsRef = useRef<Layouts>({ lg: [] });\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\r\n \r\n\r\n useEffect(() => {\r\n\r\n FillLayout(props.Widgetlayouts);\r\n UpdatePlaceholderDimensions();\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 }\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\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();\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\r\n function UpdatePlaceholderDimensions() {\r\n var gridLayout = gridLayoutComponent.current;\r\n if (!gridLayout)\r\n return;\r\n const gridElementHeight = gridLayout.elementRef.current.clientHeight;\r\n\r\n let newPlaceholderRows = Math.floor(gridElementHeight / layoutGridProps.rowHeight);\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\">\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={() => UpdatePlaceholderDimensions()}\r\n onLayoutChange={(layout, layouts) =>\r\n onLayoutChange(layout, layouts)\r\n }\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\n\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 { Card } from 'primereact/card';\r\nimport { Button } from \"primereact/button\";\r\nimport DashboardDesigner, { layoutGridProps } from './features/Dashboard/DashboardDesigner'\r\nimport \"./styles.module.css\"\r\nimport { Dropdown } from 'primereact/dropdown';\r\nimport { createRef, useEffect, useRef, useState } from \"react\";\r\nimport { DashBoardService } from './services/DashBoardService';\r\nimport { ApiQueryFilters } from './common/data-contracts/ApiQueryFilter';\r\nimport { ReactDashboardPM } from './types/Dashboard';\r\nimport { Dialog } from 'primereact/dialog';\r\nimport DashboardDialogComponent from './features/Dashboard/dashboard-dialog/dashboard-dialog-component';\r\nimport { Session } from './services/session';\r\nimport { WidgetTypeListService } from './services/WidgetTypeListService';\r\nimport { WidgetType } from './types/WidgetType';\r\nimport { ReactWidgetPM } from './types/widget';\r\nimport { OverlayPanel } from 'primereact/overlaypanel';\r\nimport { Ripple } from 'primereact/ripple';\r\nimport { DashboardDataBinding } from './types/DashboardDataBinding';\r\nimport { Layout, Layouts } from 'react-grid-layout';\r\nimport { v4 as uuidv4 } from 'uuid';\r\nimport { deepClone } from './services/clone';\r\nimport { DataPointSelection } from './types/SeriesMeasure';\r\nimport { Tools } from './services/tools';\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 [reactDashboardPM, setReactDashboardPM] = useState<{ lg: ReactDashboardPM[] }>({ lg: [] });\r\n\r\n const newWidgetWidth = 3;\r\n const newWidgetHeight = 5;\r\n\r\n const Widgetlayouts = useRef<{ lg: ReactWidgetPM[] }>({ lg: [] });\r\n const FirstSetLayout = useRef<boolean>(false);\r\n const [widgetlayoutsState, setWidgetlayoutsState] = useState<{ lg: ReactWidgetPM[] }>({ lg: [] });\r\n const [isInEditMode, setIsInEditMode] = useState<boolean>(false);\r\n useEffect(() => {\r\n props.dataBinding.onGetLayouts.subscribe(layouts => {\r\n FirstSetLayout.current = true;\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\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 if (FirstSetLayout.current) {\r\n FirstSetLayout.current = false;\r\n return;\r\n }\r\n\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","ApexChart","props","useState","error","setEror","useRef","widgetRef","MeasuresIds","GroupByIds","GroupCount","isView","setisView","viewError","setViewError","isDataLoaded","hasDataError","series","options","args","serArgs","isLoadingDrow","useEffect","setTimeout","current","updateView","dataBinding","onEditWidget","subscribe","e","key","RefreshData","dashboardAnalyticsService","postWidget","onChange","undefined","then","result","fillIds","data","getChartOptions","console","log","response","ErrorMessage","message","datas","measuresIds","groupByIds","seriesMeasure","push","MeasureFieldId","SeriesMeasureVulues","vulue","GroupById","lineOptoins","values","categories","map","z","Value","Label","chart","height","type","zoom","enabled","events","click","dataPointSelection","toolbar","tools","download","dataLabels","stroke","curve","title","text","align","grid","row","colors","opacity","xaxis","noData","barOptoins","plotOptions","bar","horizontal","position","offsetX","style","fontSize","show","width","tooltip","shared","intersect","pieOptoins","labels","CreateColors","fillSeriesColor","legend","formatter","formatLabel","legendName","opts","LayoutWidth","Layout","w","Layoutheight","h","count","CreateDifferentColors","startAngle","s","v","index","color","donutOptoins","responsive","breakpoint","offsetY","handelNullLabels","forEach","element","value","dataPointIndex","seriesIndex","onSelectDataPoint","Widget","TypeCode","React","className","ProgressSpinner","strokeWidth","animationDuration","ReactApexChart","src","WidgetCard","state","moreBtnToggle","editWidget","hide","editBtnClicked","el","Title","isInEditMode","Button","icon","onClick","toggle","OverlayPanel","ref","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","UpdatePlaceholderDimensions","dashboardLayouts","clone","layout","createLayout","FillWidgetDictionary","item","editMode","onLayoutChange","changedLayouts","UpdateWidget","deletePanel","id","newLayouts","filter","newWidgets","ChangeSetOp","openEditWidget","gridLayout","gridElementHeight","elementRef","clientHeight","newPlaceholderRows","Math","floor","layoutGridProps","rowHeight","compactType","isDraggable","isResizable","onWidthChange","cols","md","sm","xs","xxs","useCSSTransforms","Dashboard","FirstSetLayout","widgetlayoutsState","setWidgetlayoutsState","setIsInEditMode","onGetLayouts","isOnEditLayout","onAddWidget","setItem","updateWidgets","layoutsDic","sizeType","newWidgetlayouts","StartPotistion","x","y","EndPosition","onChangeLayouts"],"mappings":"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"}
|