logitude-dashboard-library 1.2.73 → 1.2.76
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/assets/styles/dl-dashboard.scss +74 -31
- package/dist/index.js +63 -20
- package/dist/index.js.map +1 -1
- package/dist/index.modern.js +64 -21
- package/dist/index.modern.js.map +1 -1
- package/package.json +1 -1
|
@@ -28,17 +28,55 @@ $dark-grey: #717585;
|
|
|
28
28
|
justify-content: space-between;
|
|
29
29
|
|
|
30
30
|
}
|
|
31
|
-
|
|
31
|
+
|
|
32
|
+
.dl-flex-row {
|
|
32
33
|
display: flex;
|
|
33
|
-
|
|
34
|
+
|
|
34
35
|
flex-direction: row;
|
|
35
36
|
}
|
|
36
|
-
|
|
37
|
+
|
|
38
|
+
.dl-flex-row-end {
|
|
37
39
|
display: flex;
|
|
38
40
|
justify-content: flex-end;
|
|
39
41
|
|
|
40
42
|
}
|
|
41
|
-
|
|
43
|
+
|
|
44
|
+
.dl-flex-content-center {
|
|
45
|
+
display: flex;
|
|
46
|
+
align-content: center;
|
|
47
|
+
align-items: center;
|
|
48
|
+
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
.spinner-custome {
|
|
52
|
+
|
|
53
|
+
@keyframes p-progress-spinner-color {
|
|
54
|
+
|
|
55
|
+
100%,
|
|
56
|
+
0% {
|
|
57
|
+
stroke: #6EB2D6;
|
|
58
|
+
}
|
|
59
|
+
|
|
60
|
+
40% {
|
|
61
|
+
stroke: #6EB2D6;
|
|
62
|
+
}
|
|
63
|
+
|
|
64
|
+
66% {
|
|
65
|
+
stroke: #6EB2D6;
|
|
66
|
+
}
|
|
67
|
+
|
|
68
|
+
80%,
|
|
69
|
+
90% {
|
|
70
|
+
stroke :#6EB2D6;
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
|
|
74
|
+
}
|
|
75
|
+
|
|
76
|
+
|
|
77
|
+
|
|
78
|
+
|
|
79
|
+
.dl-title-1 {
|
|
42
80
|
text-transform: capitalize;
|
|
43
81
|
font-size: 20px;
|
|
44
82
|
font-family: "Roboto Flex";
|
|
@@ -49,14 +87,15 @@ $dark-grey: #717585;
|
|
|
49
87
|
font-weight: bolder;
|
|
50
88
|
padding: 0px 0px 0 13px;
|
|
51
89
|
}
|
|
52
|
-
|
|
90
|
+
|
|
91
|
+
.dl-heder-row {
|
|
53
92
|
width: 100%;
|
|
54
93
|
display: flex;
|
|
55
94
|
padding: 0px 11px;
|
|
56
95
|
flex-direction: row-reverse;
|
|
57
96
|
}
|
|
58
97
|
|
|
59
|
-
.dl-full-hight{
|
|
98
|
+
.dl-full-hight {
|
|
60
99
|
height: 100%;
|
|
61
100
|
}
|
|
62
101
|
|
|
@@ -74,6 +113,7 @@ $dark-grey: #717585;
|
|
|
74
113
|
}
|
|
75
114
|
|
|
76
115
|
}
|
|
116
|
+
|
|
77
117
|
.dl-grid-container {
|
|
78
118
|
position: relative;
|
|
79
119
|
|
|
@@ -83,19 +123,20 @@ $dark-grey: #717585;
|
|
|
83
123
|
width: 100%;
|
|
84
124
|
}
|
|
85
125
|
}
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
}
|
|
126
|
+
|
|
127
|
+
.dl-custom-btn {
|
|
128
|
+
.p-button.p-button-lg {}
|
|
90
129
|
}
|
|
91
|
-
|
|
92
|
-
|
|
130
|
+
|
|
131
|
+
.dl-relativ-container {
|
|
132
|
+
|
|
93
133
|
position: relative;
|
|
94
134
|
width: 100%;
|
|
95
135
|
height: 100%;
|
|
96
136
|
|
|
97
137
|
}
|
|
98
|
-
|
|
138
|
+
|
|
139
|
+
.dl-scroll-container {
|
|
99
140
|
position: absolute;
|
|
100
141
|
left: 0;
|
|
101
142
|
top: 0;
|
|
@@ -104,7 +145,7 @@ $dark-grey: #717585;
|
|
|
104
145
|
overflow-y: scroll;
|
|
105
146
|
}
|
|
106
147
|
|
|
107
|
-
.dl-flex-stretch{
|
|
148
|
+
.dl-flex-stretch {
|
|
108
149
|
height: 100%;
|
|
109
150
|
flex-direction: row;
|
|
110
151
|
box-sizing: border-box;
|
|
@@ -118,27 +159,27 @@ $dark-grey: #717585;
|
|
|
118
159
|
display: flex;
|
|
119
160
|
flex-flow: column;
|
|
120
161
|
height: 100%;
|
|
121
|
-
|
|
122
|
-
|
|
162
|
+
}
|
|
163
|
+
|
|
164
|
+
|
|
123
165
|
|
|
124
|
-
|
|
125
|
-
.dl-box .dl-row.dl-header {
|
|
166
|
+
.dl-box .dl-row.dl-header {
|
|
126
167
|
flex: 0 1 auto;
|
|
127
168
|
/* The above is shorthand for:
|
|
128
169
|
flex-grow: 0,
|
|
129
170
|
flex-shrink: 1,
|
|
130
171
|
flex-basis: auto
|
|
131
172
|
*/
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
173
|
+
}
|
|
174
|
+
|
|
175
|
+
.dl-box .dl-row.dl-content {
|
|
135
176
|
flex: 1 1 auto;
|
|
136
177
|
overflow-y: scroll;
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
178
|
+
}
|
|
179
|
+
|
|
180
|
+
.dl-box .dl-row.dl-footer {
|
|
140
181
|
flex: 0 1 40px;
|
|
141
|
-
|
|
182
|
+
}
|
|
142
183
|
|
|
143
184
|
|
|
144
185
|
|
|
@@ -266,7 +307,7 @@ $dark-grey: #717585;
|
|
|
266
307
|
height: calc(100% - 40px);
|
|
267
308
|
box-sizing: border-box;
|
|
268
309
|
|
|
269
|
-
|
|
310
|
+
|
|
270
311
|
}
|
|
271
312
|
|
|
272
313
|
|
|
@@ -294,25 +335,27 @@ $dark-grey: #717585;
|
|
|
294
335
|
display: none;
|
|
295
336
|
}
|
|
296
337
|
|
|
297
|
-
.dl-dashboard-add{
|
|
338
|
+
.dl-dashboard-add {
|
|
298
339
|
//height: 40px !important;
|
|
299
340
|
margin: 3px 3px 0px 8px !important;
|
|
300
341
|
//width: 40px !important ;
|
|
301
342
|
}
|
|
302
343
|
|
|
303
|
-
.dl-card{
|
|
344
|
+
.dl-card {
|
|
304
345
|
border-radius: 19px;
|
|
305
346
|
background-color: #f5f6fb;
|
|
306
347
|
padding: 6px 0px 0px 0px;
|
|
307
348
|
margin: 0px 0px 10px 0px;
|
|
308
349
|
}
|
|
309
350
|
|
|
310
|
-
.dl-m-t-s{
|
|
351
|
+
.dl-m-t-s {
|
|
311
352
|
margin-top: 10px;
|
|
312
353
|
}
|
|
313
|
-
|
|
354
|
+
|
|
355
|
+
.dl-m-r-s {
|
|
314
356
|
margin-right: 10px;
|
|
315
357
|
}
|
|
316
|
-
|
|
358
|
+
|
|
359
|
+
.dl-m-t-8 {
|
|
317
360
|
margin-top: 8px;
|
|
318
361
|
}
|
package/dist/index.js
CHANGED
|
@@ -7,6 +7,7 @@ var reactGridLayout = require('react-grid-layout');
|
|
|
7
7
|
var ReactApexChart = _interopDefault(require('react-apexcharts'));
|
|
8
8
|
var axios = _interopDefault(require('axios'));
|
|
9
9
|
var overlaypanel = require('primereact/overlaypanel');
|
|
10
|
+
var progressspinner = require('primereact/progressspinner');
|
|
10
11
|
var dropdown = require('primereact/dropdown');
|
|
11
12
|
var dialog = require('primereact/dialog');
|
|
12
13
|
var ripple = require('primereact/ripple');
|
|
@@ -129,21 +130,40 @@ var DashboardAnalyticsService = /*#__PURE__*/function () {
|
|
|
129
130
|
var ApexChart = function ApexChart(props) {
|
|
130
131
|
var _props$widget, _props$widget2, _props$widget3, _props$widget5;
|
|
131
132
|
|
|
132
|
-
var _useState = React.useState(
|
|
133
|
+
var _useState = React.useState(false),
|
|
134
|
+
isView = _useState[0],
|
|
135
|
+
setisView = _useState[1];
|
|
136
|
+
|
|
137
|
+
var isDataLoaded = React.useRef(false);
|
|
138
|
+
|
|
139
|
+
var _useState2 = React.useState({
|
|
133
140
|
series: [],
|
|
134
141
|
options: {}
|
|
135
142
|
}),
|
|
136
|
-
args =
|
|
137
|
-
serArgs =
|
|
143
|
+
args = _useState2[0],
|
|
144
|
+
serArgs = _useState2[1];
|
|
138
145
|
|
|
146
|
+
var isLoadingDrow = React.useRef(true);
|
|
147
|
+
React.useEffect(function () {
|
|
148
|
+
setTimeout(function () {
|
|
149
|
+
isLoadingDrow.current = false;
|
|
150
|
+
updateView();
|
|
151
|
+
}, 500);
|
|
152
|
+
}, []);
|
|
139
153
|
React.useEffect(function () {
|
|
140
154
|
console.log('useEffect ApexChart', props.widget);
|
|
141
155
|
var dashboardAnalyticsService = new DashboardAnalyticsService();
|
|
142
156
|
dashboardAnalyticsService.getData(props.widget).then(function (result) {
|
|
143
157
|
var data = getChartOptions(result.data);
|
|
144
158
|
serArgs(data);
|
|
159
|
+
isDataLoaded.current = true;
|
|
160
|
+
updateView();
|
|
145
161
|
});
|
|
146
|
-
}, [
|
|
162
|
+
}, [(_props$widget = props.widget) === null || _props$widget === void 0 ? void 0 : _props$widget.EntityId, (_props$widget2 = props.widget) === null || _props$widget2 === void 0 ? void 0 : _props$widget2.Filters, (_props$widget3 = props.widget) === null || _props$widget3 === void 0 ? void 0 : _props$widget3.WidgetMeasures]);
|
|
163
|
+
|
|
164
|
+
var updateView = function updateView() {
|
|
165
|
+
if (isDataLoaded.current && !isLoadingDrow.current) setisView(true);
|
|
166
|
+
};
|
|
147
167
|
|
|
148
168
|
var lineOptoins = function lineOptoins(values) {
|
|
149
169
|
var series = [];
|
|
@@ -182,7 +202,7 @@ var ApexChart = function ApexChart(props) {
|
|
|
182
202
|
curve: 'straight'
|
|
183
203
|
},
|
|
184
204
|
title: {
|
|
185
|
-
text: '
|
|
205
|
+
text: '',
|
|
186
206
|
align: 'left'
|
|
187
207
|
},
|
|
188
208
|
grid: {
|
|
@@ -296,12 +316,18 @@ var ApexChart = function ApexChart(props) {
|
|
|
296
316
|
});
|
|
297
317
|
}
|
|
298
318
|
|
|
299
|
-
|
|
319
|
+
var result = {
|
|
300
320
|
series: series,
|
|
301
321
|
options: {
|
|
302
322
|
chart: {
|
|
303
323
|
width: 380,
|
|
304
|
-
type: 'donut'
|
|
324
|
+
type: 'donut',
|
|
325
|
+
events: {
|
|
326
|
+
markerClick: markerClick,
|
|
327
|
+
legendClick: legendClick,
|
|
328
|
+
click: chartClick,
|
|
329
|
+
dataPointSelection: dataPointSelection
|
|
330
|
+
}
|
|
305
331
|
},
|
|
306
332
|
dataLabels: {
|
|
307
333
|
enabled: false
|
|
@@ -325,6 +351,7 @@ var ApexChart = function ApexChart(props) {
|
|
|
325
351
|
labels: labels
|
|
326
352
|
}
|
|
327
353
|
};
|
|
354
|
+
return result;
|
|
328
355
|
};
|
|
329
356
|
|
|
330
357
|
var handelNullLabels = function handelNullLabels(values) {
|
|
@@ -335,6 +362,22 @@ var ApexChart = function ApexChart(props) {
|
|
|
335
362
|
});
|
|
336
363
|
};
|
|
337
364
|
|
|
365
|
+
var markerClick = function markerClick(e, chart, options) {
|
|
366
|
+
console.log('markerClick e: any, chart?: any, options?: any', e, chart, options);
|
|
367
|
+
};
|
|
368
|
+
|
|
369
|
+
var chartClick = function chartClick(e, chart, options) {
|
|
370
|
+
console.log('chartClick e: any, chart?: any, options?: any', e, chart, options);
|
|
371
|
+
};
|
|
372
|
+
|
|
373
|
+
var legendClick = function legendClick(chart, seriesIndex, options) {
|
|
374
|
+
console.log('legendClick chart: any, seriesIndex?: number, options?: any', chart, seriesIndex, options);
|
|
375
|
+
};
|
|
376
|
+
|
|
377
|
+
var dataPointSelection = function dataPointSelection(e, chart, options) {
|
|
378
|
+
console.log('dataPointSelection e: any, chart?: any, options?: any', e, chart, options);
|
|
379
|
+
};
|
|
380
|
+
|
|
338
381
|
var getChartOptions = function getChartOptions(values) {
|
|
339
382
|
var _props$widget4;
|
|
340
383
|
|
|
@@ -357,13 +400,22 @@ var ApexChart = function ApexChart(props) {
|
|
|
357
400
|
return barOptoins(values);
|
|
358
401
|
};
|
|
359
402
|
|
|
360
|
-
return React__default.createElement(ReactApexChart, {
|
|
403
|
+
return isView ? React__default.createElement(ReactApexChart, {
|
|
361
404
|
options: args === null || args === void 0 ? void 0 : args.options,
|
|
362
405
|
series: args === null || args === void 0 ? void 0 : args.series,
|
|
363
406
|
type: (_props$widget5 = props.widget) === null || _props$widget5 === void 0 ? void 0 : _props$widget5.TypeCode,
|
|
364
407
|
height: "100%",
|
|
365
408
|
width: "100%"
|
|
366
|
-
})
|
|
409
|
+
}) : React__default.createElement("div", {
|
|
410
|
+
className: 'dl-full-hight dl-flex-content-center spinner-custome'
|
|
411
|
+
}, React__default.createElement(progressspinner.ProgressSpinner, {
|
|
412
|
+
style: {
|
|
413
|
+
width: '100px',
|
|
414
|
+
height: '100px'
|
|
415
|
+
},
|
|
416
|
+
strokeWidth: "4",
|
|
417
|
+
animationDuration: "2s"
|
|
418
|
+
}));
|
|
367
419
|
};
|
|
368
420
|
|
|
369
421
|
var WidgetCard = function WidgetCard(props, state) {
|
|
@@ -371,16 +423,6 @@ var WidgetCard = function WidgetCard(props, state) {
|
|
|
371
423
|
|
|
372
424
|
var moreBtnToggle = React.useRef(null);
|
|
373
425
|
|
|
374
|
-
var _useState = React.useState(true),
|
|
375
|
-
loading = _useState[0],
|
|
376
|
-
setLoading = _useState[1];
|
|
377
|
-
|
|
378
|
-
React.useEffect(function () {
|
|
379
|
-
setTimeout(function () {
|
|
380
|
-
setLoading(false);
|
|
381
|
-
}, 500);
|
|
382
|
-
}, []);
|
|
383
|
-
|
|
384
426
|
var editWidget = function editWidget() {
|
|
385
427
|
var _moreBtnToggle$curren;
|
|
386
428
|
|
|
@@ -414,7 +456,7 @@ var WidgetCard = function WidgetCard(props, state) {
|
|
|
414
456
|
}
|
|
415
457
|
}, "Remove")))), React__default.createElement("div", {
|
|
416
458
|
className: "dl-dashboard-widget"
|
|
417
|
-
},
|
|
459
|
+
}, React__default.createElement(ApexChart, {
|
|
418
460
|
widget: props.widget
|
|
419
461
|
})));
|
|
420
462
|
};
|
|
@@ -777,6 +819,7 @@ var Dashboard = function Dashboard(props) {
|
|
|
777
819
|
var _dashboardMoreButtonT2;
|
|
778
820
|
|
|
779
821
|
setIsInEditMode(true);
|
|
822
|
+
setHasChanges(false);
|
|
780
823
|
dashboardMoreButtonToggle === null || dashboardMoreButtonToggle === void 0 ? void 0 : (_dashboardMoreButtonT2 = dashboardMoreButtonToggle.current) === null || _dashboardMoreButtonT2 === void 0 ? void 0 : _dashboardMoreButtonT2.hide();
|
|
781
824
|
setBeforEditDashbord(deepClone(currentDashbord));
|
|
782
825
|
};
|
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/features/Dashboard/DashboardDesigner.tsx","../src/services/DashBoardService.ts","../src/services/WidgetTypeListService.ts","../src/services/clone.ts","../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}","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 { ReactWidgetPM } from \"../../../types/widget\";\r\nimport { useState } from 'react';\r\nimport { DashboardAnalyticsService } from \"../../../services/DashboardAnalyticsService\";\r\nimport { SeriesMeasure } from \"../../../types/SeriesMeasure\";\r\n\r\ntype ApexChartProps = {\r\n widget: ReactWidgetPM | null\r\n};\r\nconst ApexChart = (props: ApexChartProps) => {\r\n\r\n const [args, serArgs] = useState<ApexChartArgs>({\r\n series:[],\r\n options:{}\r\n });\r\n useEffect(() => {\r\n console.log('useEffect ApexChart' ,props.widget);\r\n var dashboardAnalyticsService = new DashboardAnalyticsService();\r\n dashboardAnalyticsService.getData(props.widget as ReactWidgetPM).then(result => {\r\n const data = getChartOptions(result.data);\r\n serArgs(data);\r\n })\r\n\r\n\r\n }, [props.widget,props.widget?.EntityId,props.widget?.Filters,props.widget?.WidgetMeasures]);\r\n\r\n const lineOptoins = (values: SeriesMeasure[]) => {\r\n\r\n\r\n var series: any = [];\r\n var categories: any = [];\r\n if (values && values[0]) {\r\n var s = values[0].SeriesMeasureVulues.map(z => z.Value);\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 },\r\n dataLabels: {\r\n enabled: false\r\n },\r\n stroke: {\r\n curve: 'straight'\r\n },\r\n title: {\r\n text: 'Product Trends by Month',\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 },\r\n\r\n\r\n };\r\n }\r\n const barOptoins = (values: SeriesMeasure[]) => {\r\n var series: any = [{\r\n data:[]\r\n }];\r\n var categories: any = [];\r\n if (values && values[0]) {\r\n var s = values[0].SeriesMeasureVulues.map(z => z.Value);\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 },\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 dataLabels: {\r\n enabled: true,\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 },\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 return {\r\n\r\n series: series,\r\n options: {\r\n chart: {\r\n type: 'pie',\r\n },\r\n labels: labels\r\n\r\n },\r\n\r\n\r\n\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 }\r\n return {\r\n\r\n series: series,\r\n options: {\r\n chart: {\r\n width: 380,\r\n type: 'donut',\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 },\r\n\r\n\r\n };\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 const getChartOptions = (values: SeriesMeasure[]) => {\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 <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}\r\nexport type ApexChartArgs = {\r\n options: any;\r\n series: any;\r\n}\r\n\r\nexport default ApexChart;\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 { ReactWidgetPM } from \"../../types/widget\";\r\nimport ApexChart from \"./ChartsComponents/ApexChart\";\r\nimport AreaChartComponent from \"./ChartsComponents/AreaChartComponent\";\r\nimport BarChartComponent from \"./ChartsComponents/BarChartComponent\";\r\nimport CandleChartComponent from \"./ChartsComponents/CandleChartComponent\";\r\nimport ColumnChartComponent from \"./ChartsComponents/ColumnChartComponent\";\r\nimport MixedChartComponent from \"./ChartsComponents/MixedChartComponent\";\r\nimport PieChartComponent from \"./ChartsComponents/PieChartComponent\";\r\nimport TimelineChartComponent from \"./ChartsComponents/TimelineChartComponent\";\r\n\r\n\r\ntype WidgetCardProps = {\r\n editBtnClicked(widget: any): any;\r\n deleteBtnClicked(i: any): any;\r\n widget: ReactWidgetPM | null;\r\n el: any;\r\n dateFilter: any;\r\n isInEditMode: boolean;\r\n}\r\n\r\n\r\nconst WidgetCard = (props: WidgetCardProps, state: any) => {\r\n const moreBtnToggle = useRef<OverlayPanel>(null);\r\n const [loading, setLoading] = useState(true);\r\n useEffect(() => {\r\n setTimeout(function () {\r\n setLoading(false);\r\n }, 500);\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 {loading ? null : <ApexChart widget={props.widget} />}\r\n </div>\r\n </div>\r\n );\r\n};\r\n\r\nexport default WidgetCard;\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\n\r\nconst ResponsiveReactGridLayout = WidthProvider(Responsive);\r\nconst newWidgetWidth = 3;\r\n\r\ntype DashboardDesignerProps = {\r\n editMode: boolean,\r\n dashboardLayouts: { lg: ReactWidgetPM[] },\r\n openEditWidget: (widget: ReactWidgetPM) => void\r\n onLayoutChange: (layouts: Layouts) => 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 [layouts, setLayouts] = useState<Layouts>({ lg: [] });\r\n const [placeholderRowsArray, setplaceholderRowsArray] = useState(Array.from({ length: minimumPlaceholderRowsCount }).fill(null));\r\n const [firstChange, setFirstChange] = useState(true);\r\n const [dateFilter, setDateFilter] = useState<Date | Date[] | undefined>(undefined);\r\n const [isInEditMode, setisInEditMode] = useState(false);\r\n const [widgets, setWidgets] = useState<{ lg: ReactWidgetPM[] }>({ lg: [] });\r\n\r\n\r\n useEffect(() => {\r\n setFirstChange(true);\r\n console.log('useEffect setLayouts')\r\n setLayouts({});\r\n setLayouts(createLayout());\r\n setWidgets(props.dashboardLayouts);\r\n }, [props.dashboardLayouts]);\r\n\r\n const createLayout = (): Layouts => {\r\n var layout: any = { lg: [] };\r\n props.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 // const applyModeSetting = () => {\r\n // layouts.current.lg.forEach(element => {\r\n // element.isDraggable = props.editMode;\r\n // element.isResizable = 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 console.log(layout, layouts);\r\n if (firstChange) {\r\n setFirstChange(false);\r\n return;\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 console.log('deletePanel(id)', id)\r\n var newLayouts = { lg: layouts.lg.filter(e => e.i != id) }\r\n\r\n setLayouts(newLayouts);\r\n\r\n var newWidgets = { lg: widgets.lg.filter(e => e.key != id) }\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 console.log('UpdatePlaceholderDimensions', layouts)\r\n var gridLayout = document.getElementsByClassName('react-grid-layout')\r\n if (!gridLayout)\r\n return;\r\n const gridElementHeight = gridLayout[0]?.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 {props.editMode ? 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 ) : null}\r\n </div>\r\n\r\n\r\n <ResponsiveReactGridLayout\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 dateFilter={dateFilter}\r\n editBtnClicked={editWidget}\r\n deleteBtnClicked={deletePanel}\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 axios from \"axios\";\r\nimport { ApiQueryFilters } from \"../common/data-contracts/ApiQueryFilter\";\r\nimport { ReactDashboardPM } from \"../types/Dashboard\";\r\nimport { ApiServices } from \"./ApiServices\";\r\nimport { Tools } from './tools';\r\n\r\n\r\nexport class DashBoardService{ \r\n _ApiServices:ApiServices;\r\n tableName = 'DashBoard';\r\n constructor(){\r\n this._ApiServices = new ApiServices();\r\n }\r\n \r\n\r\n getDataByFilters(filters: ApiQueryFilters) {\r\n return this._ApiServices.getByFilters<ReactDashboardPM>(`/api/${this.tableName}Views/getbyfilters?`,filters);\r\n }\r\n\r\n add(data:ReactDashboardPM){\r\n return this._ApiServices.post(`/api/DashBoards`,data);\r\n }\r\n \r\n}","import axios from \"axios\";\r\nimport { ApiQueryFilters } from \"../common/data-contracts/ApiQueryFilter\";\r\nimport { ReactDashboardPM } from \"../types/Dashboard\";\r\nimport { WidgetType } from \"../types/WidgetType\";\r\nimport { ApiServices } from \"./ApiServices\";\r\nimport { Tools } from './tools';\r\n\r\n\r\nexport class WidgetTypeListService{ \r\n _ApiServices:ApiServices;\r\n\r\n constructor(){\r\n this._ApiServices = new ApiServices();\r\n }\r\n \r\n\r\n getDataByFilters(filters: ApiQueryFilters) {\r\n return this._ApiServices.getByFilters<WidgetType>(`/api/WidgetTypeViews/getbyfilters?`,filters);\r\n }\r\n\r\n getAll() {\r\n return this._ApiServices.get<WidgetType[]>(`/api/WidgetTypeViews/getall`);\r\n }\r\n\r\n \r\n}","export function deepClone (obj){\r\n return JSON.parse(JSON.stringify(obj))\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\n\r\ntype DashboardProps = {\r\n token: string,\r\n tenant: number,\r\n userId: string,\r\n dataBinding: DashboardDataBinding,\r\n openAddEditWidget: (widget: ReactWidgetPM | undefined) => void,\r\n openAddEditDashboard: (dashboard: ReactDashboardPM | undefined) => void,\r\n onChangeDashboard: (dashboard: ReactDashboardPM | undefined) => void,\r\n onSaveDashboard: (dashboard: ReactDashboardPM | undefined) => void,\r\n};\r\nconst Dashboard = (props: DashboardProps) => {\r\n const newWidgetWidth = 3;\r\n const newWidgetHeight = 5;\r\n\r\n const [dashbords, setDashbords] = useState<ReactDashboardPM[]>([]);\r\n const [currentDashbord, setCurrentDashbord] = useState<ReactDashboardPM | undefined>(undefined);\r\n const [beforEditDashbord, setBeforEditDashbord] = useState<ReactDashboardPM | undefined>(undefined);\r\n const [hasChanges, setHasChanges] = useState(false);\r\n const [isInEditMode, setIsInEditMode] = useState<boolean>(false);\r\n const [WidgetTypes, setWidgetTypes] = useState<WidgetType[]>();\r\n const [layouts, setLayouts] = useState<{ lg: ReactWidgetPM[] }>({ lg: [] });\r\n const [cancelConfirmDialog, setCancelConfirmDialog] = useState(false);\r\n const dashboardMoreButtonToggle = createRef<OverlayPanel>();\r\n const dashboardService = new DashBoardService();\r\n const widgetTypeListService = new WidgetTypeListService();\r\n useEffect(() => {\r\n getWidgetTypes();\r\n\r\n props.dataBinding.onGetDashboard.subscribe(e => {\r\n console.log('onGetDashboard.subscribe', e)\r\n setCurrentDashbord(e);\r\n applyLayouts(e);\r\n })\r\n props.dataBinding.onGetAllDashboards.subscribe(e => {\r\n console.log('onGetAllDashboard.subscribe', e)\r\n\r\n setDashbords(e);\r\n });\r\n\r\n props.dataBinding.onAddUpdateWidget.subscribe(isUpdated => {\r\n if (!isUpdated)\r\n return;\r\n setHasChanges(true);\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 const getWidgetTypes = () => {\r\n widgetTypeListService.getAll().then(data => {\r\n setWidgetTypes(data.data);\r\n });\r\n }\r\n const EditDashBoard = () => {\r\n props.openAddEditDashboard(currentDashbord);\r\n dashboardMoreButtonToggle?.current?.hide();\r\n\r\n }\r\n const addWidget = (widgetCode) => {\r\n var position = EvaluateNewWidgetPosition();\r\n props.openAddEditWidget({ TypeCode: widgetCode, StartPotistion: `${position.x},${position.y}`, EndPosition: `${position.w},${position.h}`, ChangeSetOp: 'Insert' } as ReactWidgetPM);\r\n\r\n }\r\n const EvaluateNewWidgetPosition = () => {\r\n let widgetYPosition = 0;\r\n let widgetXPosition = 0;\r\n let layout = layouts[\"lg\"].map(e => e.Layout);\r\n const maxY = layout.reduce((max, widget) => {\r\n if (widget && widget.y > max) max = widget.y;\r\n return max;\r\n }, 0);\r\n\r\n for (let y = 0; y <= maxY; y++) {\r\n const widgetsRow = layout.filter(d => d?.y == y);\r\n const lastWidgetStartXPosition = Math.max.apply(Math, widgetsRow.map(a => a?.x));\r\n const lastWidget: any = widgetsRow.find(a => a?.x == lastWidgetStartXPosition);\r\n if (lastWidget) {\r\n const lastWidgetEndXPosition = lastWidgetStartXPosition + lastWidget.w;\r\n const availableHorizontalSlots = layoutGridProps.cols.lg - lastWidgetEndXPosition;\r\n if (availableHorizontalSlots >= newWidgetWidth) {\r\n widgetYPosition = y;\r\n widgetXPosition = lastWidgetEndXPosition;\r\n return { x: widgetXPosition, y: widgetYPosition, w: newWidgetWidth, h: newWidgetHeight };\r\n\r\n } else {\r\n widgetYPosition = y + 1;\r\n }\r\n } else {\r\n widgetYPosition = y + 1;\r\n }\r\n }\r\n\r\n return { x: widgetXPosition, y: widgetYPosition, w: newWidgetWidth, h: newWidgetHeight };\r\n }\r\n const editLayout = () => {\r\n setIsInEditMode(true)\r\n dashboardMoreButtonToggle?.current?.hide();\r\n\r\n setBeforEditDashbord(deepClone(currentDashbord));\r\n }\r\n const save = () => {\r\n setIsInEditMode(false)\r\n console.log('onSaveDashboard > ', currentDashbord)\r\n props.onSaveDashboard(currentDashbord);\r\n onHide();\r\n\r\n setHasChanges(false); ;\r\n }\r\n\r\n const cancelSave = () => {\r\n if (!hasChanges) {\r\n setIsInEditMode(false);\r\n setHasChanges(false);\r\n\r\n } else {\r\n setCancelConfirmDialog(true);\r\n }\r\n\r\n\r\n }\r\n\r\n const dontSave = () => {\r\n setHasChanges(false)\r\n setIsInEditMode(false);\r\n props.dataBinding.onGetDashboard.next(beforEditDashbord);\r\n setCancelConfirmDialog(false);\r\n }\r\n const changeDashboard = (event) => {\r\n if (event.value == currentDashbord?.Id)\r\n return;\r\n var dasboard = dashbords.find(e => e.Id == event.value);\r\n\r\n props.onChangeDashboard(dasboard);\r\n props.dataBinding.onGetDashboard.next(dasboard);\r\n\r\n }\r\n\r\n const applyLayouts = (dashbord: ReactDashboardPM | undefined) => {\r\n if ((!dashbord?.Widgets))\r\n return;\r\n var layout: { lg: ReactWidgetPM[] } = { lg: [] };\r\n dashbord?.Widgets.map(widget => {\r\n if (widget.Id && widget.Id.length > 0)\r\n widget.key = widget.Id;\r\n else\r\n widget.key = uuidv4();\r\n widget.Layout = {\r\n minH: 5,\r\n minW: 3,\r\n i: widget.key,\r\n w: +widget.EndPosition.split(',')[0],\r\n h: +widget.EndPosition.split(',')[1],\r\n x: +widget.StartPotistion.split(',')[0],\r\n y: +widget.StartPotistion.split(',')[1],\r\n }\r\n layout.lg.push(widget\r\n\r\n )\r\n });\r\n console.log('setLayouts -- > ', layout)\r\n setLayouts(layout);\r\n\r\n }\r\n const updateWidgets = (layouts: Layouts) => {\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 widgets: ReactWidgetPM[] = [];\r\n currentDashbord?.Widgets.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 widgets.push(widget)\r\n }\r\n\r\n });\r\n if (currentDashbord) {\r\n currentDashbord.Widgets = widgets;\r\n }\r\n console.log('after update widget', currentDashbord)\r\n setHasChanges(true);\r\n\r\n }\r\n\r\n const renderCancelConfirmDialogFooter = () => {\r\n return (\r\n <div className='dl-flex-row-end' >\r\n <Button label=\"Cancel\" onClick={() => onHide()} className=\"p-button-secondary\" />\r\n <Button label=\"Don't Save\" onClick={() => dontSave()} className=\"p-button-secondary\" />\r\n <Button label=\"Save\" onClick={() => save()} autoFocus className=\"p-button-warning\" />\r\n </div>\r\n );\r\n }\r\n const onHide = () => {\r\n setCancelConfirmDialog(false)\r\n }\r\n return (\r\n <div className='dl-full-hight'>\r\n\r\n <div className='dl-dashboard-header dl-card'>\r\n <div className='dl-flex-row dl-custom-btn'>\r\n <div className='dl-title-1'>{currentDashbord?.Name}</div>\r\n <Button\r\n icon=\"pi pi-ellipsis-v\"\r\n onClick={(e) => dashboardMoreButtonToggle?.current?.toggle(e)}\r\n className=\"p-button p-button-icon-only p-button-rounded p-button-text\"\r\n >\r\n <Ripple />\r\n </Button>\r\n <OverlayPanel ref={dashboardMoreButtonToggle} className=\"buttons-overlay\">\r\n <div className=\"buttons-list\">\r\n <div onClick={() => EditDashBoard()}>Edit</div>\r\n <div onClick={editLayout}>Edit Layout</div>\r\n\r\n </div>\r\n </OverlayPanel >\r\n </div>\r\n <div className='dl-flex-row'>\r\n {!isInEditMode ?\r\n <div className='dl-flex-row'>\r\n\r\n\r\n <div style={{ width: \"161px\" }}>\r\n <Dropdown\r\n value={[]}\r\n options={dashbords}\r\n optionValue=\"Id\"\r\n optionLabel=\"Name\"\r\n onChange={changeDashboard}\r\n placeholder=\"Choose Dashboard\"\r\n optionDisabled={(option) => {\r\n return option?.Disabled;\r\n }}\r\n scrollHeight=\"300px\"\r\n style={{ width: '100%' }}\r\n />\r\n </div>\r\n <Button icon=\"pi pi-plus\" onClick={() => props.openAddEditDashboard(undefined)}\r\n className=\"dl-dashboard-add p-button-rounded p-button-success\" />\r\n </div>\r\n : null}\r\n {/* <DashboardDialogComponent display={displayAddDashboard} onClose={onDashboardDialogClose}></DashboardDialogComponent> */}\r\n\r\n\r\n\r\n {isInEditMode ?\r\n <div className='dl-flex-row'>\r\n\r\n <Button\r\n label=\"Cancel\"\r\n className=\"p-button-secondary dl-m-r-s dl-m-t-8\"\r\n onClick={cancelSave}\r\n />\r\n\r\n <Dialog header=\"Unsaved Changes\" visible={cancelConfirmDialog} style={{ width: '50vw' }} footer={renderCancelConfirmDialogFooter()} onHide={onHide}>\r\n <p>This Dashboard has unsaved changes do you want to save it?</p>\r\n </Dialog>\r\n\r\n {hasChanges ?\r\n <Button\r\n label=\"Save\"\r\n form=\"frm\"\r\n // icon=\"pi pi-check\"\r\n onClick={save}\r\n autoFocus\r\n className={\"p-button-warning dl-m-t-8\"}\r\n /> : null\r\n }\r\n {!hasChanges ?\r\n <Button\r\n label=\"Save\"\r\n form=\"frm\"\r\n // icon=\"pi pi-check\"\r\n onClick={save}\r\n autoFocus\r\n className={\"p-button-secondary dl-m-t-8\"}\r\n /> : null\r\n }\r\n\r\n <div style={{ width: '192px', marginLeft: '15px' }}>\r\n <Dropdown\r\n options={WidgetTypes}\r\n optionValue=\"Code\"\r\n optionLabel=\"Name\"\r\n onChange={(e) => addWidget(e.value)}\r\n placeholder=\"Add Component\"\r\n optionDisabled={(option) => {\r\n return option?.Disabled;\r\n }}\r\n scrollHeight=\"300px\"\r\n />\r\n </div>\r\n </div>\r\n : null}\r\n </div>\r\n\r\n\r\n </div>\r\n\r\n <div className='dl-dashboard-body'>\r\n <DashboardDesigner editMode={isInEditMode} onLayoutChange={updateWidgets} dashboardLayouts={layouts} openEditWidget={(widget: ReactWidgetPM) => props.openAddEditWidget(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","ApiServices","_apiUrl","getByFilters","api","filters","token","getTokenFromStorage","apiURL","ConcatFiltersToURL","axios","get","headers","post","date","window","localStorage","getItem","urlparameters","mykeys","Object","keys","addtionalFiltersValues","i","propName","propValue","ignoreFilter","concat","encodeURIComponent","JSON","stringify","DashboardAnalyticsService","_ApiServices","getData","widget","controller","ApexChart","props","useState","series","options","args","serArgs","useEffect","console","log","dashboardAnalyticsService","then","result","data","getChartOptions","EntityId","Filters","WidgetMeasures","lineOptoins","values","categories","s","SeriesMeasureVulues","map","z","Value","e","Label","chart","height","type","zoom","enabled","dataLabels","stroke","curve","title","text","align","grid","row","colors","opacity","xaxis","barOptoins","plotOptions","bar","horizontal","position","offsetX","style","fontSize","show","width","tooltip","shared","intersect","pieOptoins","labels","donutOptoins","responsive","breakpoint","legend","offsetY","handelNullLabels","forEach","element","value","TypeCode","React","ReactApexChart","WidgetCard","state","moreBtnToggle","useRef","loading","setLoading","setTimeout","editWidget","current","hide","editBtnClicked","className","key","el","Title","isInEditMode","Button","icon","onClick","toggle","OverlayPanel","ref","deleteBtnClicked","ResponsiveReactGridLayout","WidthProvider","Responsive","DashboardDesigner","array12","Array","from","fill","minimumPlaceholderRowsCount","lg","layouts","setLayouts","placeholderRowsArray","setplaceholderRowsArray","firstChange","setFirstChange","undefined","dateFilter","setisInEditMode","widgets","setWidgets","createLayout","dashboardLayouts","layout","w","Layout","push","editMode","onLayoutChange","changedLayouts","UpdatePlaceholderDimensions","deletePanel","id","newLayouts","filter","newWidgets","ChangeSetOp","openEditWidget","gridLayout","document","getElementsByClassName","gridElementHeight","clientHeight","newPlaceholderRows","Math","floor","layoutGridProps","rowHeight","compactType","isDraggable","isResizable","onWidthChange","cols","md","sm","xs","xxs","useCSSTransforms","DashBoardService","getDataByFilters","tableName","add","WidgetTypeListService","getAll","deepClone","obj","parse","Dashboard","newWidgetWidth","newWidgetHeight","dashbords","setDashbords","currentDashbord","setCurrentDashbord","beforEditDashbord","setBeforEditDashbord","hasChanges","setHasChanges","setIsInEditMode","WidgetTypes","setWidgetTypes","cancelConfirmDialog","setCancelConfirmDialog","dashboardMoreButtonToggle","createRef","dashboardService","widgetTypeListService","getWidgetTypes","dataBinding","onGetDashboard","subscribe","applyLayouts","onGetAllDashboards","onAddUpdateWidget","isUpdated","setItem","EditDashBoard","openAddEditDashboard","addWidget","widgetCode","EvaluateNewWidgetPosition","openAddEditWidget","StartPotistion","x","y","EndPosition","h","widgetYPosition","widgetXPosition","maxY","reduce","max","widgetsRow","d","lastWidgetStartXPosition","apply","a","lastWidget","find","lastWidgetEndXPosition","availableHorizontalSlots","editLayout","save","onSaveDashboard","onHide","cancelSave","dontSave","next","changeDashboard","event","Id","dasboard","onChangeDashboard","dashbord","Widgets","uuidv4","minH","minW","updateWidgets","layoutsDic","sizeType","renderCancelConfirmDialogFooter","label","autoFocus","Name","Ripple","Dropdown","optionValue","optionLabel","onChange","placeholder","optionDisabled","option","Disabled","scrollHeight","Dialog","header","visible","footer","form","marginLeft"],"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/features/Dashboard/DashboardDesigner.tsx","../src/services/DashBoardService.ts","../src/services/WidgetTypeListService.ts","../src/services/clone.ts","../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}","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 { SeriesMeasure } from \"../../../types/SeriesMeasure\";\r\nimport { ApexOptions } from \"apexcharts\";\r\n\r\ntype ApexChartProps = {\r\n widget: ReactWidgetPM | null\r\n};\r\nconst ApexChart = (props: ApexChartProps) => {\r\n\r\n const [isView, setisView] = useState<boolean>(false);\r\n const isDataLoaded = 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 }, [])\r\n useEffect(() => {\r\n console.log('useEffect ApexChart', props.widget);\r\n var dashboardAnalyticsService = new DashboardAnalyticsService();\r\n dashboardAnalyticsService.getData(props.widget as ReactWidgetPM).then(result => {\r\n const data = getChartOptions(result.data);\r\n serArgs(data);\r\n isDataLoaded.current = true;\r\n updateView();\r\n })\r\n\r\n\r\n }, [props.widget?.EntityId, props.widget?.Filters, props.widget?.WidgetMeasures]);\r\n\r\n const updateView = () => {\r\n if (isDataLoaded.current && !isLoadingDrow.current)\r\n setisView(true);\r\n }\r\n\r\n const lineOptoins = (values: SeriesMeasure[]) => {\r\n\r\n\r\n var series: any = [];\r\n var categories: any = [];\r\n if (values && values[0]) {\r\n var s = values[0].SeriesMeasureVulues.map(z => z.Value);\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 },\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 },\r\n\r\n\r\n };\r\n }\r\n const barOptoins = (values: SeriesMeasure[]) => {\r\n var series: any = [{\r\n data: []\r\n }];\r\n var categories: any = [];\r\n if (values && values[0]) {\r\n var s = values[0].SeriesMeasureVulues.map(z => z.Value);\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 },\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 dataLabels: {\r\n enabled: true,\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 },\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 return {\r\n\r\n series: series,\r\n options: {\r\n chart: {\r\n type: 'pie',\r\n },\r\n labels: labels\r\n\r\n },\r\n\r\n\r\n\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 }\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 markerClick: markerClick,\r\n legendClick: legendClick,\r\n click: chartClick,\r\n dataPointSelection: dataPointSelection\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 },\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 const markerClick = (e: any, chart?: any, options?: any): void => {\r\n console.log('markerClick e: any, chart?: any, options?: any', e, chart, options)\r\n };\r\n\r\n const chartClick = (e: any, chart?: any, options?: any): void => {\r\n console.log('chartClick e: any, chart?: any, options?: any', e, chart, options)\r\n };\r\n\r\n const legendClick = (chart: any, seriesIndex?: number, options?: any): void => {\r\n console.log('legendClick chart: any, seriesIndex?: number, options?: any', chart, seriesIndex, options)\r\n };\r\n\r\n const dataPointSelection = (e: any, chart?: any, options?: any): void => {\r\n console.log('dataPointSelection e: any, chart?: any, options?: any', e, chart, options)\r\n };\r\n\r\n const getChartOptions = (values: SeriesMeasure[]) => {\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 ?\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 :\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}\r\nexport type ApexChartArgs = {\r\n options: any;\r\n series: any;\r\n}\r\n\r\nexport default ApexChart;\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 { ReactWidgetPM } from \"../../types/widget\";\r\nimport ApexChart from \"./ChartsComponents/ApexChart\";\r\n\r\n\r\n\r\ntype WidgetCardProps = {\r\n editBtnClicked(widget: any): any;\r\n deleteBtnClicked(i: any): any;\r\n widget: ReactWidgetPM | null;\r\n el: any;\r\n dateFilter: any;\r\n isInEditMode: boolean;\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 widget={props.widget} />\r\n </div>\r\n </div>\r\n );\r\n};\r\n\r\nexport default WidgetCard;\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\n\r\nconst ResponsiveReactGridLayout = WidthProvider(Responsive);\r\nconst newWidgetWidth = 3;\r\n\r\ntype DashboardDesignerProps = {\r\n editMode: boolean,\r\n dashboardLayouts: { lg: ReactWidgetPM[] },\r\n openEditWidget: (widget: ReactWidgetPM) => void\r\n onLayoutChange: (layouts: Layouts) => 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 [layouts, setLayouts] = useState<Layouts>({ lg: [] });\r\n const [placeholderRowsArray, setplaceholderRowsArray] = useState(Array.from({ length: minimumPlaceholderRowsCount }).fill(null));\r\n const [firstChange, setFirstChange] = useState(true);\r\n const [dateFilter, setDateFilter] = useState<Date | Date[] | undefined>(undefined);\r\n const [isInEditMode, setisInEditMode] = useState(false);\r\n const [widgets, setWidgets] = useState<{ lg: ReactWidgetPM[] }>({ lg: [] });\r\n\r\n\r\n useEffect(() => {\r\n setFirstChange(true);\r\n console.log('useEffect setLayouts')\r\n setLayouts({});\r\n setLayouts(createLayout());\r\n setWidgets(props.dashboardLayouts);\r\n }, [props.dashboardLayouts]);\r\n\r\n const createLayout = (): Layouts => {\r\n var layout: any = { lg: [] };\r\n props.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 // const applyModeSetting = () => {\r\n // layouts.current.lg.forEach(element => {\r\n // element.isDraggable = props.editMode;\r\n // element.isResizable = 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 console.log(layout, layouts);\r\n if (firstChange) {\r\n setFirstChange(false);\r\n return;\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 console.log('deletePanel(id)', id)\r\n var newLayouts = { lg: layouts.lg.filter(e => e.i != id) }\r\n\r\n setLayouts(newLayouts);\r\n\r\n var newWidgets = { lg: widgets.lg.filter(e => e.key != id) }\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 console.log('UpdatePlaceholderDimensions', layouts)\r\n var gridLayout = document.getElementsByClassName('react-grid-layout')\r\n if (!gridLayout)\r\n return;\r\n const gridElementHeight = gridLayout[0]?.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 {props.editMode ? 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 ) : null}\r\n </div>\r\n\r\n\r\n <ResponsiveReactGridLayout\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 dateFilter={dateFilter}\r\n editBtnClicked={editWidget}\r\n deleteBtnClicked={deletePanel}\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 axios from \"axios\";\r\nimport { ApiQueryFilters } from \"../common/data-contracts/ApiQueryFilter\";\r\nimport { ReactDashboardPM } from \"../types/Dashboard\";\r\nimport { ApiServices } from \"./ApiServices\";\r\nimport { Tools } from './tools';\r\n\r\n\r\nexport class DashBoardService{ \r\n _ApiServices:ApiServices;\r\n tableName = 'DashBoard';\r\n constructor(){\r\n this._ApiServices = new ApiServices();\r\n }\r\n \r\n\r\n getDataByFilters(filters: ApiQueryFilters) {\r\n return this._ApiServices.getByFilters<ReactDashboardPM>(`/api/${this.tableName}Views/getbyfilters?`,filters);\r\n }\r\n\r\n add(data:ReactDashboardPM){\r\n return this._ApiServices.post(`/api/DashBoards`,data);\r\n }\r\n \r\n}","import axios from \"axios\";\r\nimport { ApiQueryFilters } from \"../common/data-contracts/ApiQueryFilter\";\r\nimport { ReactDashboardPM } from \"../types/Dashboard\";\r\nimport { WidgetType } from \"../types/WidgetType\";\r\nimport { ApiServices } from \"./ApiServices\";\r\nimport { Tools } from './tools';\r\n\r\n\r\nexport class WidgetTypeListService{ \r\n _ApiServices:ApiServices;\r\n\r\n constructor(){\r\n this._ApiServices = new ApiServices();\r\n }\r\n \r\n\r\n getDataByFilters(filters: ApiQueryFilters) {\r\n return this._ApiServices.getByFilters<WidgetType>(`/api/WidgetTypeViews/getbyfilters?`,filters);\r\n }\r\n\r\n getAll() {\r\n return this._ApiServices.get<WidgetType[]>(`/api/WidgetTypeViews/getall`);\r\n }\r\n\r\n \r\n}","export function deepClone (obj){\r\n return JSON.parse(JSON.stringify(obj))\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\n\r\ntype DashboardProps = {\r\n token: string,\r\n tenant: number,\r\n userId: string,\r\n dataBinding: DashboardDataBinding,\r\n openAddEditWidget: (widget: ReactWidgetPM | undefined) => void,\r\n openAddEditDashboard: (dashboard: ReactDashboardPM | undefined) => void,\r\n onChangeDashboard: (dashboard: ReactDashboardPM | undefined) => void,\r\n onSaveDashboard: (dashboard: ReactDashboardPM | undefined) => void,\r\n};\r\nconst Dashboard = (props: DashboardProps) => {\r\n const newWidgetWidth = 3;\r\n const newWidgetHeight = 5;\r\n\r\n const [dashbords, setDashbords] = useState<ReactDashboardPM[]>([]);\r\n const [currentDashbord, setCurrentDashbord] = useState<ReactDashboardPM | undefined>(undefined);\r\n const [beforEditDashbord, setBeforEditDashbord] = useState<ReactDashboardPM | undefined>(undefined);\r\n const [hasChanges, setHasChanges] = useState(false);\r\n const [isInEditMode, setIsInEditMode] = useState<boolean>(false);\r\n const [WidgetTypes, setWidgetTypes] = useState<WidgetType[]>();\r\n const [layouts, setLayouts] = useState<{ lg: ReactWidgetPM[] }>({ lg: [] });\r\n const [cancelConfirmDialog, setCancelConfirmDialog] = useState(false);\r\n const dashboardMoreButtonToggle = createRef<OverlayPanel>();\r\n const dashboardService = new DashBoardService();\r\n const widgetTypeListService = new WidgetTypeListService();\r\n useEffect(() => {\r\n getWidgetTypes();\r\n\r\n props.dataBinding.onGetDashboard.subscribe(e => {\r\n console.log('onGetDashboard.subscribe', e)\r\n setCurrentDashbord(e);\r\n applyLayouts(e);\r\n })\r\n props.dataBinding.onGetAllDashboards.subscribe(e => {\r\n console.log('onGetAllDashboard.subscribe', e)\r\n\r\n setDashbords(e);\r\n });\r\n\r\n props.dataBinding.onAddUpdateWidget.subscribe(isUpdated => {\r\n if (!isUpdated)\r\n return;\r\n setHasChanges(true);\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 const getWidgetTypes = () => {\r\n widgetTypeListService.getAll().then(data => {\r\n setWidgetTypes(data.data);\r\n });\r\n }\r\n const EditDashBoard = () => {\r\n props.openAddEditDashboard(currentDashbord);\r\n dashboardMoreButtonToggle?.current?.hide();\r\n\r\n }\r\n const addWidget = (widgetCode) => {\r\n var position = EvaluateNewWidgetPosition();\r\n props.openAddEditWidget({ TypeCode: widgetCode, StartPotistion: `${position.x},${position.y}`, EndPosition: `${position.w},${position.h}`, ChangeSetOp: 'Insert' } as ReactWidgetPM);\r\n\r\n }\r\n const EvaluateNewWidgetPosition = () => {\r\n let widgetYPosition = 0;\r\n let widgetXPosition = 0;\r\n let layout = layouts[\"lg\"].map(e => e.Layout);\r\n const maxY = layout.reduce((max, widget) => {\r\n if (widget && widget.y > max) max = widget.y;\r\n return max;\r\n }, 0);\r\n\r\n for (let y = 0; y <= maxY; y++) {\r\n const widgetsRow = layout.filter(d => d?.y == y);\r\n const lastWidgetStartXPosition = Math.max.apply(Math, widgetsRow.map(a => a?.x));\r\n const lastWidget: any = widgetsRow.find(a => a?.x == lastWidgetStartXPosition);\r\n if (lastWidget) {\r\n const lastWidgetEndXPosition = lastWidgetStartXPosition + lastWidget.w;\r\n const availableHorizontalSlots = layoutGridProps.cols.lg - lastWidgetEndXPosition;\r\n if (availableHorizontalSlots >= newWidgetWidth) {\r\n widgetYPosition = y;\r\n widgetXPosition = lastWidgetEndXPosition;\r\n return { x: widgetXPosition, y: widgetYPosition, w: newWidgetWidth, h: newWidgetHeight };\r\n\r\n } else {\r\n widgetYPosition = y + 1;\r\n }\r\n } else {\r\n widgetYPosition = y + 1;\r\n }\r\n }\r\n\r\n return { x: widgetXPosition, y: widgetYPosition, w: newWidgetWidth, h: newWidgetHeight };\r\n }\r\n const editLayout = () => {\r\n setIsInEditMode(true);\r\n setHasChanges(false); \r\n dashboardMoreButtonToggle?.current?.hide();\r\n\r\n setBeforEditDashbord(deepClone(currentDashbord));\r\n }\r\n const save = () => {\r\n setIsInEditMode(false)\r\n console.log('onSaveDashboard > ', currentDashbord)\r\n props.onSaveDashboard(currentDashbord);\r\n onHide();\r\n\r\n setHasChanges(false); ;\r\n }\r\n\r\n const cancelSave = () => {\r\n if (!hasChanges) {\r\n setIsInEditMode(false);\r\n setHasChanges(false);\r\n\r\n } else {\r\n setCancelConfirmDialog(true);\r\n }\r\n\r\n\r\n }\r\n\r\n const dontSave = () => {\r\n setHasChanges(false)\r\n setIsInEditMode(false);\r\n props.dataBinding.onGetDashboard.next(beforEditDashbord);\r\n setCancelConfirmDialog(false);\r\n }\r\n const changeDashboard = (event) => {\r\n if (event.value == currentDashbord?.Id)\r\n return;\r\n var dasboard = dashbords.find(e => e.Id == event.value);\r\n\r\n props.onChangeDashboard(dasboard);\r\n props.dataBinding.onGetDashboard.next(dasboard);\r\n\r\n }\r\n\r\n const applyLayouts = (dashbord: ReactDashboardPM | undefined) => {\r\n if ((!dashbord?.Widgets))\r\n return;\r\n var layout: { lg: ReactWidgetPM[] } = { lg: [] };\r\n dashbord?.Widgets.map(widget => {\r\n if (widget.Id && widget.Id.length > 0)\r\n widget.key = widget.Id;\r\n else\r\n widget.key = uuidv4();\r\n widget.Layout = {\r\n minH: 5,\r\n minW: 3,\r\n i: widget.key,\r\n w: +widget.EndPosition.split(',')[0],\r\n h: +widget.EndPosition.split(',')[1],\r\n x: +widget.StartPotistion.split(',')[0],\r\n y: +widget.StartPotistion.split(',')[1],\r\n }\r\n layout.lg.push(widget\r\n\r\n )\r\n });\r\n console.log('setLayouts -- > ', layout)\r\n setLayouts(layout);\r\n\r\n }\r\n const updateWidgets = (layouts: Layouts) => {\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 widgets: ReactWidgetPM[] = [];\r\n currentDashbord?.Widgets.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 widgets.push(widget)\r\n }\r\n\r\n });\r\n if (currentDashbord) {\r\n currentDashbord.Widgets = widgets;\r\n }\r\n console.log('after update widget', currentDashbord)\r\n setHasChanges(true);\r\n\r\n }\r\n\r\n const renderCancelConfirmDialogFooter = () => {\r\n return (\r\n <div className='dl-flex-row-end' >\r\n <Button label=\"Cancel\" onClick={() => onHide()} className=\"p-button-secondary\" />\r\n <Button label=\"Don't Save\" onClick={() => dontSave()} className=\"p-button-secondary\" />\r\n <Button label=\"Save\" onClick={() => save()} autoFocus className=\"p-button-warning\" />\r\n </div>\r\n );\r\n }\r\n const onHide = () => {\r\n setCancelConfirmDialog(false)\r\n }\r\n return (\r\n <div className='dl-full-hight'>\r\n\r\n <div className='dl-dashboard-header dl-card'>\r\n <div className='dl-flex-row dl-custom-btn'>\r\n <div className='dl-title-1'>{currentDashbord?.Name}</div>\r\n <Button\r\n icon=\"pi pi-ellipsis-v\"\r\n onClick={(e) => dashboardMoreButtonToggle?.current?.toggle(e)}\r\n className=\"p-button p-button-icon-only p-button-rounded p-button-text\"\r\n >\r\n <Ripple />\r\n </Button>\r\n <OverlayPanel ref={dashboardMoreButtonToggle} className=\"buttons-overlay\">\r\n <div className=\"buttons-list\">\r\n <div onClick={() => EditDashBoard()}>Edit</div>\r\n <div onClick={editLayout}>Edit Layout</div>\r\n\r\n </div>\r\n </OverlayPanel >\r\n </div>\r\n <div className='dl-flex-row'>\r\n {!isInEditMode ?\r\n <div className='dl-flex-row'>\r\n\r\n\r\n <div style={{ width: \"161px\" }}>\r\n <Dropdown\r\n value={[]}\r\n options={dashbords}\r\n optionValue=\"Id\"\r\n optionLabel=\"Name\"\r\n onChange={changeDashboard}\r\n placeholder=\"Choose Dashboard\"\r\n optionDisabled={(option) => {\r\n return option?.Disabled;\r\n }}\r\n scrollHeight=\"300px\"\r\n style={{ width: '100%' }}\r\n />\r\n </div>\r\n <Button icon=\"pi pi-plus\" onClick={() => props.openAddEditDashboard(undefined)}\r\n className=\"dl-dashboard-add p-button-rounded p-button-success\" />\r\n </div>\r\n : null}\r\n {/* <DashboardDialogComponent display={displayAddDashboard} onClose={onDashboardDialogClose}></DashboardDialogComponent> */}\r\n\r\n\r\n\r\n {isInEditMode ?\r\n <div className='dl-flex-row'>\r\n\r\n <Button\r\n label=\"Cancel\"\r\n className=\"p-button-secondary dl-m-r-s dl-m-t-8\"\r\n onClick={cancelSave}\r\n />\r\n\r\n <Dialog header=\"Unsaved Changes\" visible={cancelConfirmDialog} style={{ width: '50vw' }} footer={renderCancelConfirmDialogFooter()} onHide={onHide}>\r\n <p>This Dashboard has unsaved changes do you want to save it?</p>\r\n </Dialog>\r\n\r\n {hasChanges ?\r\n <Button\r\n label=\"Save\"\r\n form=\"frm\"\r\n // icon=\"pi pi-check\"\r\n onClick={save}\r\n autoFocus\r\n className={\"p-button-warning dl-m-t-8\"}\r\n /> : null\r\n }\r\n {!hasChanges ?\r\n <Button\r\n label=\"Save\"\r\n form=\"frm\"\r\n // icon=\"pi pi-check\"\r\n onClick={save}\r\n autoFocus\r\n className={\"p-button-secondary dl-m-t-8\"}\r\n /> : null\r\n }\r\n\r\n <div style={{ width: '192px', marginLeft: '15px' }}>\r\n <Dropdown\r\n options={WidgetTypes}\r\n optionValue=\"Code\"\r\n optionLabel=\"Name\"\r\n onChange={(e) => addWidget(e.value)}\r\n placeholder=\"Add Component\"\r\n optionDisabled={(option) => {\r\n return option?.Disabled;\r\n }}\r\n scrollHeight=\"300px\"\r\n />\r\n </div>\r\n </div>\r\n : null}\r\n </div>\r\n\r\n\r\n </div>\r\n\r\n <div className='dl-dashboard-body'>\r\n <DashboardDesigner editMode={isInEditMode} onLayoutChange={updateWidgets} dashboardLayouts={layouts} openEditWidget={(widget: ReactWidgetPM) => props.openAddEditWidget(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","ApiServices","_apiUrl","getByFilters","api","filters","token","getTokenFromStorage","apiURL","ConcatFiltersToURL","axios","get","headers","post","date","window","localStorage","getItem","urlparameters","mykeys","Object","keys","addtionalFiltersValues","i","propName","propValue","ignoreFilter","concat","encodeURIComponent","JSON","stringify","DashboardAnalyticsService","_ApiServices","getData","widget","controller","ApexChart","props","useState","isView","setisView","isDataLoaded","useRef","series","options","args","serArgs","isLoadingDrow","useEffect","setTimeout","current","updateView","console","log","dashboardAnalyticsService","then","result","data","getChartOptions","EntityId","Filters","WidgetMeasures","lineOptoins","values","categories","s","SeriesMeasureVulues","map","z","Value","e","Label","chart","height","type","zoom","enabled","dataLabels","stroke","curve","title","text","align","grid","row","colors","opacity","xaxis","barOptoins","plotOptions","bar","horizontal","position","offsetX","style","fontSize","show","width","tooltip","shared","intersect","pieOptoins","labels","donutOptoins","events","markerClick","legendClick","click","chartClick","dataPointSelection","responsive","breakpoint","legend","offsetY","handelNullLabels","forEach","element","value","seriesIndex","TypeCode","React","ReactApexChart","className","ProgressSpinner","strokeWidth","animationDuration","WidgetCard","state","moreBtnToggle","editWidget","hide","editBtnClicked","key","el","Title","isInEditMode","Button","icon","onClick","toggle","OverlayPanel","ref","deleteBtnClicked","ResponsiveReactGridLayout","WidthProvider","Responsive","DashboardDesigner","array12","Array","from","fill","minimumPlaceholderRowsCount","lg","layouts","setLayouts","placeholderRowsArray","setplaceholderRowsArray","firstChange","setFirstChange","undefined","dateFilter","setisInEditMode","widgets","setWidgets","createLayout","dashboardLayouts","layout","w","Layout","push","editMode","onLayoutChange","changedLayouts","UpdatePlaceholderDimensions","deletePanel","id","newLayouts","filter","newWidgets","ChangeSetOp","openEditWidget","gridLayout","document","getElementsByClassName","gridElementHeight","clientHeight","newPlaceholderRows","Math","floor","layoutGridProps","rowHeight","compactType","isDraggable","isResizable","onWidthChange","cols","md","sm","xs","xxs","useCSSTransforms","DashBoardService","getDataByFilters","tableName","add","WidgetTypeListService","getAll","deepClone","obj","parse","Dashboard","newWidgetWidth","newWidgetHeight","dashbords","setDashbords","currentDashbord","setCurrentDashbord","beforEditDashbord","setBeforEditDashbord","hasChanges","setHasChanges","setIsInEditMode","WidgetTypes","setWidgetTypes","cancelConfirmDialog","setCancelConfirmDialog","dashboardMoreButtonToggle","createRef","dashboardService","widgetTypeListService","getWidgetTypes","dataBinding","onGetDashboard","subscribe","applyLayouts","onGetAllDashboards","onAddUpdateWidget","isUpdated","setItem","EditDashBoard","openAddEditDashboard","addWidget","widgetCode","EvaluateNewWidgetPosition","openAddEditWidget","StartPotistion","x","y","EndPosition","h","widgetYPosition","widgetXPosition","maxY","reduce","max","widgetsRow","d","lastWidgetStartXPosition","apply","a","lastWidget","find","lastWidgetEndXPosition","availableHorizontalSlots","editLayout","save","onSaveDashboard","onHide","cancelSave","dontSave","next","changeDashboard","event","Id","dasboard","onChangeDashboard","dashbord","Widgets","uuidv4","minH","minW","updateWidgets","layoutsDic","sizeType","renderCancelConfirmDialogFooter","label","autoFocus","Name","Ripple","Dropdown","optionValue","optionLabel","onChange","placeholder","optionDisabled","option","Disabled","scrollHeight","Dialog","header","visible","footer","form","marginLeft"],"mappings":"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"}
|
package/dist/index.modern.js
CHANGED
|
@@ -1,9 +1,10 @@
|
|
|
1
|
-
import React__default, { useState,
|
|
1
|
+
import React__default, { useState, useRef, useEffect, createRef, createElement } from 'react';
|
|
2
2
|
import { Button } from 'primereact/button';
|
|
3
3
|
import { WidthProvider, Responsive } from 'react-grid-layout';
|
|
4
4
|
import ReactApexChart from 'react-apexcharts';
|
|
5
5
|
import axios from 'axios';
|
|
6
6
|
import { OverlayPanel } from 'primereact/overlaypanel';
|
|
7
|
+
import { ProgressSpinner } from 'primereact/progressspinner';
|
|
7
8
|
import { Dropdown } from 'primereact/dropdown';
|
|
8
9
|
import { Dialog } from 'primereact/dialog';
|
|
9
10
|
import { Ripple } from 'primereact/ripple';
|
|
@@ -126,21 +127,40 @@ var DashboardAnalyticsService = /*#__PURE__*/function () {
|
|
|
126
127
|
var ApexChart = function ApexChart(props) {
|
|
127
128
|
var _props$widget, _props$widget2, _props$widget3, _props$widget5;
|
|
128
129
|
|
|
129
|
-
var _useState = useState(
|
|
130
|
+
var _useState = useState(false),
|
|
131
|
+
isView = _useState[0],
|
|
132
|
+
setisView = _useState[1];
|
|
133
|
+
|
|
134
|
+
var isDataLoaded = useRef(false);
|
|
135
|
+
|
|
136
|
+
var _useState2 = useState({
|
|
130
137
|
series: [],
|
|
131
138
|
options: {}
|
|
132
139
|
}),
|
|
133
|
-
args =
|
|
134
|
-
serArgs =
|
|
140
|
+
args = _useState2[0],
|
|
141
|
+
serArgs = _useState2[1];
|
|
135
142
|
|
|
143
|
+
var isLoadingDrow = useRef(true);
|
|
144
|
+
useEffect(function () {
|
|
145
|
+
setTimeout(function () {
|
|
146
|
+
isLoadingDrow.current = false;
|
|
147
|
+
updateView();
|
|
148
|
+
}, 500);
|
|
149
|
+
}, []);
|
|
136
150
|
useEffect(function () {
|
|
137
151
|
console.log('useEffect ApexChart', props.widget);
|
|
138
152
|
var dashboardAnalyticsService = new DashboardAnalyticsService();
|
|
139
153
|
dashboardAnalyticsService.getData(props.widget).then(function (result) {
|
|
140
154
|
var data = getChartOptions(result.data);
|
|
141
155
|
serArgs(data);
|
|
156
|
+
isDataLoaded.current = true;
|
|
157
|
+
updateView();
|
|
142
158
|
});
|
|
143
|
-
}, [
|
|
159
|
+
}, [(_props$widget = props.widget) === null || _props$widget === void 0 ? void 0 : _props$widget.EntityId, (_props$widget2 = props.widget) === null || _props$widget2 === void 0 ? void 0 : _props$widget2.Filters, (_props$widget3 = props.widget) === null || _props$widget3 === void 0 ? void 0 : _props$widget3.WidgetMeasures]);
|
|
160
|
+
|
|
161
|
+
var updateView = function updateView() {
|
|
162
|
+
if (isDataLoaded.current && !isLoadingDrow.current) setisView(true);
|
|
163
|
+
};
|
|
144
164
|
|
|
145
165
|
var lineOptoins = function lineOptoins(values) {
|
|
146
166
|
var series = [];
|
|
@@ -179,7 +199,7 @@ var ApexChart = function ApexChart(props) {
|
|
|
179
199
|
curve: 'straight'
|
|
180
200
|
},
|
|
181
201
|
title: {
|
|
182
|
-
text: '
|
|
202
|
+
text: '',
|
|
183
203
|
align: 'left'
|
|
184
204
|
},
|
|
185
205
|
grid: {
|
|
@@ -293,12 +313,18 @@ var ApexChart = function ApexChart(props) {
|
|
|
293
313
|
});
|
|
294
314
|
}
|
|
295
315
|
|
|
296
|
-
|
|
316
|
+
var result = {
|
|
297
317
|
series: series,
|
|
298
318
|
options: {
|
|
299
319
|
chart: {
|
|
300
320
|
width: 380,
|
|
301
|
-
type: 'donut'
|
|
321
|
+
type: 'donut',
|
|
322
|
+
events: {
|
|
323
|
+
markerClick: markerClick,
|
|
324
|
+
legendClick: legendClick,
|
|
325
|
+
click: chartClick,
|
|
326
|
+
dataPointSelection: dataPointSelection
|
|
327
|
+
}
|
|
302
328
|
},
|
|
303
329
|
dataLabels: {
|
|
304
330
|
enabled: false
|
|
@@ -322,6 +348,7 @@ var ApexChart = function ApexChart(props) {
|
|
|
322
348
|
labels: labels
|
|
323
349
|
}
|
|
324
350
|
};
|
|
351
|
+
return result;
|
|
325
352
|
};
|
|
326
353
|
|
|
327
354
|
var handelNullLabels = function handelNullLabels(values) {
|
|
@@ -332,6 +359,22 @@ var ApexChart = function ApexChart(props) {
|
|
|
332
359
|
});
|
|
333
360
|
};
|
|
334
361
|
|
|
362
|
+
var markerClick = function markerClick(e, chart, options) {
|
|
363
|
+
console.log('markerClick e: any, chart?: any, options?: any', e, chart, options);
|
|
364
|
+
};
|
|
365
|
+
|
|
366
|
+
var chartClick = function chartClick(e, chart, options) {
|
|
367
|
+
console.log('chartClick e: any, chart?: any, options?: any', e, chart, options);
|
|
368
|
+
};
|
|
369
|
+
|
|
370
|
+
var legendClick = function legendClick(chart, seriesIndex, options) {
|
|
371
|
+
console.log('legendClick chart: any, seriesIndex?: number, options?: any', chart, seriesIndex, options);
|
|
372
|
+
};
|
|
373
|
+
|
|
374
|
+
var dataPointSelection = function dataPointSelection(e, chart, options) {
|
|
375
|
+
console.log('dataPointSelection e: any, chart?: any, options?: any', e, chart, options);
|
|
376
|
+
};
|
|
377
|
+
|
|
335
378
|
var getChartOptions = function getChartOptions(values) {
|
|
336
379
|
var _props$widget4;
|
|
337
380
|
|
|
@@ -354,13 +397,22 @@ var ApexChart = function ApexChart(props) {
|
|
|
354
397
|
return barOptoins(values);
|
|
355
398
|
};
|
|
356
399
|
|
|
357
|
-
return React__default.createElement(ReactApexChart, {
|
|
400
|
+
return isView ? React__default.createElement(ReactApexChart, {
|
|
358
401
|
options: args === null || args === void 0 ? void 0 : args.options,
|
|
359
402
|
series: args === null || args === void 0 ? void 0 : args.series,
|
|
360
403
|
type: (_props$widget5 = props.widget) === null || _props$widget5 === void 0 ? void 0 : _props$widget5.TypeCode,
|
|
361
404
|
height: "100%",
|
|
362
405
|
width: "100%"
|
|
363
|
-
})
|
|
406
|
+
}) : React__default.createElement("div", {
|
|
407
|
+
className: 'dl-full-hight dl-flex-content-center spinner-custome'
|
|
408
|
+
}, React__default.createElement(ProgressSpinner, {
|
|
409
|
+
style: {
|
|
410
|
+
width: '100px',
|
|
411
|
+
height: '100px'
|
|
412
|
+
},
|
|
413
|
+
strokeWidth: "4",
|
|
414
|
+
animationDuration: "2s"
|
|
415
|
+
}));
|
|
364
416
|
};
|
|
365
417
|
|
|
366
418
|
var WidgetCard = function WidgetCard(props, state) {
|
|
@@ -368,16 +420,6 @@ var WidgetCard = function WidgetCard(props, state) {
|
|
|
368
420
|
|
|
369
421
|
var moreBtnToggle = useRef(null);
|
|
370
422
|
|
|
371
|
-
var _useState = useState(true),
|
|
372
|
-
loading = _useState[0],
|
|
373
|
-
setLoading = _useState[1];
|
|
374
|
-
|
|
375
|
-
useEffect(function () {
|
|
376
|
-
setTimeout(function () {
|
|
377
|
-
setLoading(false);
|
|
378
|
-
}, 500);
|
|
379
|
-
}, []);
|
|
380
|
-
|
|
381
423
|
var editWidget = function editWidget() {
|
|
382
424
|
var _moreBtnToggle$curren;
|
|
383
425
|
|
|
@@ -411,7 +453,7 @@ var WidgetCard = function WidgetCard(props, state) {
|
|
|
411
453
|
}
|
|
412
454
|
}, "Remove")))), React__default.createElement("div", {
|
|
413
455
|
className: "dl-dashboard-widget"
|
|
414
|
-
},
|
|
456
|
+
}, React__default.createElement(ApexChart, {
|
|
415
457
|
widget: props.widget
|
|
416
458
|
})));
|
|
417
459
|
};
|
|
@@ -774,6 +816,7 @@ var Dashboard = function Dashboard(props) {
|
|
|
774
816
|
var _dashboardMoreButtonT2;
|
|
775
817
|
|
|
776
818
|
setIsInEditMode(true);
|
|
819
|
+
setHasChanges(false);
|
|
777
820
|
dashboardMoreButtonToggle === null || dashboardMoreButtonToggle === void 0 ? void 0 : (_dashboardMoreButtonT2 = dashboardMoreButtonToggle.current) === null || _dashboardMoreButtonT2 === void 0 ? void 0 : _dashboardMoreButtonT2.hide();
|
|
778
821
|
setBeforEditDashbord(deepClone(currentDashbord));
|
|
779
822
|
};
|
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/features/Dashboard/DashboardDesigner.tsx","../src/services/DashBoardService.ts","../src/services/WidgetTypeListService.ts","../src/services/clone.ts","../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}","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 { ReactWidgetPM } from \"../../../types/widget\";\r\nimport { useState } from 'react';\r\nimport { DashboardAnalyticsService } from \"../../../services/DashboardAnalyticsService\";\r\nimport { SeriesMeasure } from \"../../../types/SeriesMeasure\";\r\n\r\ntype ApexChartProps = {\r\n widget: ReactWidgetPM | null\r\n};\r\nconst ApexChart = (props: ApexChartProps) => {\r\n\r\n const [args, serArgs] = useState<ApexChartArgs>({\r\n series:[],\r\n options:{}\r\n });\r\n useEffect(() => {\r\n console.log('useEffect ApexChart' ,props.widget);\r\n var dashboardAnalyticsService = new DashboardAnalyticsService();\r\n dashboardAnalyticsService.getData(props.widget as ReactWidgetPM).then(result => {\r\n const data = getChartOptions(result.data);\r\n serArgs(data);\r\n })\r\n\r\n\r\n }, [props.widget,props.widget?.EntityId,props.widget?.Filters,props.widget?.WidgetMeasures]);\r\n\r\n const lineOptoins = (values: SeriesMeasure[]) => {\r\n\r\n\r\n var series: any = [];\r\n var categories: any = [];\r\n if (values && values[0]) {\r\n var s = values[0].SeriesMeasureVulues.map(z => z.Value);\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 },\r\n dataLabels: {\r\n enabled: false\r\n },\r\n stroke: {\r\n curve: 'straight'\r\n },\r\n title: {\r\n text: 'Product Trends by Month',\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 },\r\n\r\n\r\n };\r\n }\r\n const barOptoins = (values: SeriesMeasure[]) => {\r\n var series: any = [{\r\n data:[]\r\n }];\r\n var categories: any = [];\r\n if (values && values[0]) {\r\n var s = values[0].SeriesMeasureVulues.map(z => z.Value);\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 },\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 dataLabels: {\r\n enabled: true,\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 },\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 return {\r\n\r\n series: series,\r\n options: {\r\n chart: {\r\n type: 'pie',\r\n },\r\n labels: labels\r\n\r\n },\r\n\r\n\r\n\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 }\r\n return {\r\n\r\n series: series,\r\n options: {\r\n chart: {\r\n width: 380,\r\n type: 'donut',\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 },\r\n\r\n\r\n };\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 const getChartOptions = (values: SeriesMeasure[]) => {\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 <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}\r\nexport type ApexChartArgs = {\r\n options: any;\r\n series: any;\r\n}\r\n\r\nexport default ApexChart;\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 { ReactWidgetPM } from \"../../types/widget\";\r\nimport ApexChart from \"./ChartsComponents/ApexChart\";\r\nimport AreaChartComponent from \"./ChartsComponents/AreaChartComponent\";\r\nimport BarChartComponent from \"./ChartsComponents/BarChartComponent\";\r\nimport CandleChartComponent from \"./ChartsComponents/CandleChartComponent\";\r\nimport ColumnChartComponent from \"./ChartsComponents/ColumnChartComponent\";\r\nimport MixedChartComponent from \"./ChartsComponents/MixedChartComponent\";\r\nimport PieChartComponent from \"./ChartsComponents/PieChartComponent\";\r\nimport TimelineChartComponent from \"./ChartsComponents/TimelineChartComponent\";\r\n\r\n\r\ntype WidgetCardProps = {\r\n editBtnClicked(widget: any): any;\r\n deleteBtnClicked(i: any): any;\r\n widget: ReactWidgetPM | null;\r\n el: any;\r\n dateFilter: any;\r\n isInEditMode: boolean;\r\n}\r\n\r\n\r\nconst WidgetCard = (props: WidgetCardProps, state: any) => {\r\n const moreBtnToggle = useRef<OverlayPanel>(null);\r\n const [loading, setLoading] = useState(true);\r\n useEffect(() => {\r\n setTimeout(function () {\r\n setLoading(false);\r\n }, 500);\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 {loading ? null : <ApexChart widget={props.widget} />}\r\n </div>\r\n </div>\r\n );\r\n};\r\n\r\nexport default WidgetCard;\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\n\r\nconst ResponsiveReactGridLayout = WidthProvider(Responsive);\r\nconst newWidgetWidth = 3;\r\n\r\ntype DashboardDesignerProps = {\r\n editMode: boolean,\r\n dashboardLayouts: { lg: ReactWidgetPM[] },\r\n openEditWidget: (widget: ReactWidgetPM) => void\r\n onLayoutChange: (layouts: Layouts) => 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 [layouts, setLayouts] = useState<Layouts>({ lg: [] });\r\n const [placeholderRowsArray, setplaceholderRowsArray] = useState(Array.from({ length: minimumPlaceholderRowsCount }).fill(null));\r\n const [firstChange, setFirstChange] = useState(true);\r\n const [dateFilter, setDateFilter] = useState<Date | Date[] | undefined>(undefined);\r\n const [isInEditMode, setisInEditMode] = useState(false);\r\n const [widgets, setWidgets] = useState<{ lg: ReactWidgetPM[] }>({ lg: [] });\r\n\r\n\r\n useEffect(() => {\r\n setFirstChange(true);\r\n console.log('useEffect setLayouts')\r\n setLayouts({});\r\n setLayouts(createLayout());\r\n setWidgets(props.dashboardLayouts);\r\n }, [props.dashboardLayouts]);\r\n\r\n const createLayout = (): Layouts => {\r\n var layout: any = { lg: [] };\r\n props.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 // const applyModeSetting = () => {\r\n // layouts.current.lg.forEach(element => {\r\n // element.isDraggable = props.editMode;\r\n // element.isResizable = 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 console.log(layout, layouts);\r\n if (firstChange) {\r\n setFirstChange(false);\r\n return;\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 console.log('deletePanel(id)', id)\r\n var newLayouts = { lg: layouts.lg.filter(e => e.i != id) }\r\n\r\n setLayouts(newLayouts);\r\n\r\n var newWidgets = { lg: widgets.lg.filter(e => e.key != id) }\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 console.log('UpdatePlaceholderDimensions', layouts)\r\n var gridLayout = document.getElementsByClassName('react-grid-layout')\r\n if (!gridLayout)\r\n return;\r\n const gridElementHeight = gridLayout[0]?.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 {props.editMode ? 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 ) : null}\r\n </div>\r\n\r\n\r\n <ResponsiveReactGridLayout\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 dateFilter={dateFilter}\r\n editBtnClicked={editWidget}\r\n deleteBtnClicked={deletePanel}\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 axios from \"axios\";\r\nimport { ApiQueryFilters } from \"../common/data-contracts/ApiQueryFilter\";\r\nimport { ReactDashboardPM } from \"../types/Dashboard\";\r\nimport { ApiServices } from \"./ApiServices\";\r\nimport { Tools } from './tools';\r\n\r\n\r\nexport class DashBoardService{ \r\n _ApiServices:ApiServices;\r\n tableName = 'DashBoard';\r\n constructor(){\r\n this._ApiServices = new ApiServices();\r\n }\r\n \r\n\r\n getDataByFilters(filters: ApiQueryFilters) {\r\n return this._ApiServices.getByFilters<ReactDashboardPM>(`/api/${this.tableName}Views/getbyfilters?`,filters);\r\n }\r\n\r\n add(data:ReactDashboardPM){\r\n return this._ApiServices.post(`/api/DashBoards`,data);\r\n }\r\n \r\n}","import axios from \"axios\";\r\nimport { ApiQueryFilters } from \"../common/data-contracts/ApiQueryFilter\";\r\nimport { ReactDashboardPM } from \"../types/Dashboard\";\r\nimport { WidgetType } from \"../types/WidgetType\";\r\nimport { ApiServices } from \"./ApiServices\";\r\nimport { Tools } from './tools';\r\n\r\n\r\nexport class WidgetTypeListService{ \r\n _ApiServices:ApiServices;\r\n\r\n constructor(){\r\n this._ApiServices = new ApiServices();\r\n }\r\n \r\n\r\n getDataByFilters(filters: ApiQueryFilters) {\r\n return this._ApiServices.getByFilters<WidgetType>(`/api/WidgetTypeViews/getbyfilters?`,filters);\r\n }\r\n\r\n getAll() {\r\n return this._ApiServices.get<WidgetType[]>(`/api/WidgetTypeViews/getall`);\r\n }\r\n\r\n \r\n}","export function deepClone (obj){\r\n return JSON.parse(JSON.stringify(obj))\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\n\r\ntype DashboardProps = {\r\n token: string,\r\n tenant: number,\r\n userId: string,\r\n dataBinding: DashboardDataBinding,\r\n openAddEditWidget: (widget: ReactWidgetPM | undefined) => void,\r\n openAddEditDashboard: (dashboard: ReactDashboardPM | undefined) => void,\r\n onChangeDashboard: (dashboard: ReactDashboardPM | undefined) => void,\r\n onSaveDashboard: (dashboard: ReactDashboardPM | undefined) => void,\r\n};\r\nconst Dashboard = (props: DashboardProps) => {\r\n const newWidgetWidth = 3;\r\n const newWidgetHeight = 5;\r\n\r\n const [dashbords, setDashbords] = useState<ReactDashboardPM[]>([]);\r\n const [currentDashbord, setCurrentDashbord] = useState<ReactDashboardPM | undefined>(undefined);\r\n const [beforEditDashbord, setBeforEditDashbord] = useState<ReactDashboardPM | undefined>(undefined);\r\n const [hasChanges, setHasChanges] = useState(false);\r\n const [isInEditMode, setIsInEditMode] = useState<boolean>(false);\r\n const [WidgetTypes, setWidgetTypes] = useState<WidgetType[]>();\r\n const [layouts, setLayouts] = useState<{ lg: ReactWidgetPM[] }>({ lg: [] });\r\n const [cancelConfirmDialog, setCancelConfirmDialog] = useState(false);\r\n const dashboardMoreButtonToggle = createRef<OverlayPanel>();\r\n const dashboardService = new DashBoardService();\r\n const widgetTypeListService = new WidgetTypeListService();\r\n useEffect(() => {\r\n getWidgetTypes();\r\n\r\n props.dataBinding.onGetDashboard.subscribe(e => {\r\n console.log('onGetDashboard.subscribe', e)\r\n setCurrentDashbord(e);\r\n applyLayouts(e);\r\n })\r\n props.dataBinding.onGetAllDashboards.subscribe(e => {\r\n console.log('onGetAllDashboard.subscribe', e)\r\n\r\n setDashbords(e);\r\n });\r\n\r\n props.dataBinding.onAddUpdateWidget.subscribe(isUpdated => {\r\n if (!isUpdated)\r\n return;\r\n setHasChanges(true);\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 const getWidgetTypes = () => {\r\n widgetTypeListService.getAll().then(data => {\r\n setWidgetTypes(data.data);\r\n });\r\n }\r\n const EditDashBoard = () => {\r\n props.openAddEditDashboard(currentDashbord);\r\n dashboardMoreButtonToggle?.current?.hide();\r\n\r\n }\r\n const addWidget = (widgetCode) => {\r\n var position = EvaluateNewWidgetPosition();\r\n props.openAddEditWidget({ TypeCode: widgetCode, StartPotistion: `${position.x},${position.y}`, EndPosition: `${position.w},${position.h}`, ChangeSetOp: 'Insert' } as ReactWidgetPM);\r\n\r\n }\r\n const EvaluateNewWidgetPosition = () => {\r\n let widgetYPosition = 0;\r\n let widgetXPosition = 0;\r\n let layout = layouts[\"lg\"].map(e => e.Layout);\r\n const maxY = layout.reduce((max, widget) => {\r\n if (widget && widget.y > max) max = widget.y;\r\n return max;\r\n }, 0);\r\n\r\n for (let y = 0; y <= maxY; y++) {\r\n const widgetsRow = layout.filter(d => d?.y == y);\r\n const lastWidgetStartXPosition = Math.max.apply(Math, widgetsRow.map(a => a?.x));\r\n const lastWidget: any = widgetsRow.find(a => a?.x == lastWidgetStartXPosition);\r\n if (lastWidget) {\r\n const lastWidgetEndXPosition = lastWidgetStartXPosition + lastWidget.w;\r\n const availableHorizontalSlots = layoutGridProps.cols.lg - lastWidgetEndXPosition;\r\n if (availableHorizontalSlots >= newWidgetWidth) {\r\n widgetYPosition = y;\r\n widgetXPosition = lastWidgetEndXPosition;\r\n return { x: widgetXPosition, y: widgetYPosition, w: newWidgetWidth, h: newWidgetHeight };\r\n\r\n } else {\r\n widgetYPosition = y + 1;\r\n }\r\n } else {\r\n widgetYPosition = y + 1;\r\n }\r\n }\r\n\r\n return { x: widgetXPosition, y: widgetYPosition, w: newWidgetWidth, h: newWidgetHeight };\r\n }\r\n const editLayout = () => {\r\n setIsInEditMode(true)\r\n dashboardMoreButtonToggle?.current?.hide();\r\n\r\n setBeforEditDashbord(deepClone(currentDashbord));\r\n }\r\n const save = () => {\r\n setIsInEditMode(false)\r\n console.log('onSaveDashboard > ', currentDashbord)\r\n props.onSaveDashboard(currentDashbord);\r\n onHide();\r\n\r\n setHasChanges(false); ;\r\n }\r\n\r\n const cancelSave = () => {\r\n if (!hasChanges) {\r\n setIsInEditMode(false);\r\n setHasChanges(false);\r\n\r\n } else {\r\n setCancelConfirmDialog(true);\r\n }\r\n\r\n\r\n }\r\n\r\n const dontSave = () => {\r\n setHasChanges(false)\r\n setIsInEditMode(false);\r\n props.dataBinding.onGetDashboard.next(beforEditDashbord);\r\n setCancelConfirmDialog(false);\r\n }\r\n const changeDashboard = (event) => {\r\n if (event.value == currentDashbord?.Id)\r\n return;\r\n var dasboard = dashbords.find(e => e.Id == event.value);\r\n\r\n props.onChangeDashboard(dasboard);\r\n props.dataBinding.onGetDashboard.next(dasboard);\r\n\r\n }\r\n\r\n const applyLayouts = (dashbord: ReactDashboardPM | undefined) => {\r\n if ((!dashbord?.Widgets))\r\n return;\r\n var layout: { lg: ReactWidgetPM[] } = { lg: [] };\r\n dashbord?.Widgets.map(widget => {\r\n if (widget.Id && widget.Id.length > 0)\r\n widget.key = widget.Id;\r\n else\r\n widget.key = uuidv4();\r\n widget.Layout = {\r\n minH: 5,\r\n minW: 3,\r\n i: widget.key,\r\n w: +widget.EndPosition.split(',')[0],\r\n h: +widget.EndPosition.split(',')[1],\r\n x: +widget.StartPotistion.split(',')[0],\r\n y: +widget.StartPotistion.split(',')[1],\r\n }\r\n layout.lg.push(widget\r\n\r\n )\r\n });\r\n console.log('setLayouts -- > ', layout)\r\n setLayouts(layout);\r\n\r\n }\r\n const updateWidgets = (layouts: Layouts) => {\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 widgets: ReactWidgetPM[] = [];\r\n currentDashbord?.Widgets.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 widgets.push(widget)\r\n }\r\n\r\n });\r\n if (currentDashbord) {\r\n currentDashbord.Widgets = widgets;\r\n }\r\n console.log('after update widget', currentDashbord)\r\n setHasChanges(true);\r\n\r\n }\r\n\r\n const renderCancelConfirmDialogFooter = () => {\r\n return (\r\n <div className='dl-flex-row-end' >\r\n <Button label=\"Cancel\" onClick={() => onHide()} className=\"p-button-secondary\" />\r\n <Button label=\"Don't Save\" onClick={() => dontSave()} className=\"p-button-secondary\" />\r\n <Button label=\"Save\" onClick={() => save()} autoFocus className=\"p-button-warning\" />\r\n </div>\r\n );\r\n }\r\n const onHide = () => {\r\n setCancelConfirmDialog(false)\r\n }\r\n return (\r\n <div className='dl-full-hight'>\r\n\r\n <div className='dl-dashboard-header dl-card'>\r\n <div className='dl-flex-row dl-custom-btn'>\r\n <div className='dl-title-1'>{currentDashbord?.Name}</div>\r\n <Button\r\n icon=\"pi pi-ellipsis-v\"\r\n onClick={(e) => dashboardMoreButtonToggle?.current?.toggle(e)}\r\n className=\"p-button p-button-icon-only p-button-rounded p-button-text\"\r\n >\r\n <Ripple />\r\n </Button>\r\n <OverlayPanel ref={dashboardMoreButtonToggle} className=\"buttons-overlay\">\r\n <div className=\"buttons-list\">\r\n <div onClick={() => EditDashBoard()}>Edit</div>\r\n <div onClick={editLayout}>Edit Layout</div>\r\n\r\n </div>\r\n </OverlayPanel >\r\n </div>\r\n <div className='dl-flex-row'>\r\n {!isInEditMode ?\r\n <div className='dl-flex-row'>\r\n\r\n\r\n <div style={{ width: \"161px\" }}>\r\n <Dropdown\r\n value={[]}\r\n options={dashbords}\r\n optionValue=\"Id\"\r\n optionLabel=\"Name\"\r\n onChange={changeDashboard}\r\n placeholder=\"Choose Dashboard\"\r\n optionDisabled={(option) => {\r\n return option?.Disabled;\r\n }}\r\n scrollHeight=\"300px\"\r\n style={{ width: '100%' }}\r\n />\r\n </div>\r\n <Button icon=\"pi pi-plus\" onClick={() => props.openAddEditDashboard(undefined)}\r\n className=\"dl-dashboard-add p-button-rounded p-button-success\" />\r\n </div>\r\n : null}\r\n {/* <DashboardDialogComponent display={displayAddDashboard} onClose={onDashboardDialogClose}></DashboardDialogComponent> */}\r\n\r\n\r\n\r\n {isInEditMode ?\r\n <div className='dl-flex-row'>\r\n\r\n <Button\r\n label=\"Cancel\"\r\n className=\"p-button-secondary dl-m-r-s dl-m-t-8\"\r\n onClick={cancelSave}\r\n />\r\n\r\n <Dialog header=\"Unsaved Changes\" visible={cancelConfirmDialog} style={{ width: '50vw' }} footer={renderCancelConfirmDialogFooter()} onHide={onHide}>\r\n <p>This Dashboard has unsaved changes do you want to save it?</p>\r\n </Dialog>\r\n\r\n {hasChanges ?\r\n <Button\r\n label=\"Save\"\r\n form=\"frm\"\r\n // icon=\"pi pi-check\"\r\n onClick={save}\r\n autoFocus\r\n className={\"p-button-warning dl-m-t-8\"}\r\n /> : null\r\n }\r\n {!hasChanges ?\r\n <Button\r\n label=\"Save\"\r\n form=\"frm\"\r\n // icon=\"pi pi-check\"\r\n onClick={save}\r\n autoFocus\r\n className={\"p-button-secondary dl-m-t-8\"}\r\n /> : null\r\n }\r\n\r\n <div style={{ width: '192px', marginLeft: '15px' }}>\r\n <Dropdown\r\n options={WidgetTypes}\r\n optionValue=\"Code\"\r\n optionLabel=\"Name\"\r\n onChange={(e) => addWidget(e.value)}\r\n placeholder=\"Add Component\"\r\n optionDisabled={(option) => {\r\n return option?.Disabled;\r\n }}\r\n scrollHeight=\"300px\"\r\n />\r\n </div>\r\n </div>\r\n : null}\r\n </div>\r\n\r\n\r\n </div>\r\n\r\n <div className='dl-dashboard-body'>\r\n <DashboardDesigner editMode={isInEditMode} onLayoutChange={updateWidgets} dashboardLayouts={layouts} openEditWidget={(widget: ReactWidgetPM) => props.openAddEditWidget(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","ApiServices","_apiUrl","getByFilters","api","filters","token","getTokenFromStorage","apiURL","ConcatFiltersToURL","axios","get","headers","post","date","window","localStorage","getItem","urlparameters","mykeys","Object","keys","addtionalFiltersValues","i","propName","propValue","ignoreFilter","concat","encodeURIComponent","JSON","stringify","DashboardAnalyticsService","_ApiServices","getData","widget","controller","ApexChart","props","useState","series","options","args","serArgs","useEffect","console","log","dashboardAnalyticsService","then","result","data","getChartOptions","EntityId","Filters","WidgetMeasures","lineOptoins","values","categories","s","SeriesMeasureVulues","map","z","Value","e","Label","chart","height","type","zoom","enabled","dataLabels","stroke","curve","title","text","align","grid","row","colors","opacity","xaxis","barOptoins","plotOptions","bar","horizontal","position","offsetX","style","fontSize","show","width","tooltip","shared","intersect","pieOptoins","labels","donutOptoins","responsive","breakpoint","legend","offsetY","handelNullLabels","forEach","element","value","TypeCode","React","ReactApexChart","WidgetCard","state","moreBtnToggle","useRef","loading","setLoading","setTimeout","editWidget","current","hide","editBtnClicked","className","key","el","Title","isInEditMode","Button","icon","onClick","toggle","OverlayPanel","ref","deleteBtnClicked","ResponsiveReactGridLayout","WidthProvider","Responsive","DashboardDesigner","array12","Array","from","fill","minimumPlaceholderRowsCount","lg","layouts","setLayouts","placeholderRowsArray","setplaceholderRowsArray","firstChange","setFirstChange","undefined","dateFilter","setisInEditMode","widgets","setWidgets","createLayout","dashboardLayouts","layout","w","Layout","push","editMode","onLayoutChange","changedLayouts","UpdatePlaceholderDimensions","deletePanel","id","newLayouts","filter","newWidgets","ChangeSetOp","openEditWidget","gridLayout","document","getElementsByClassName","gridElementHeight","clientHeight","newPlaceholderRows","Math","floor","layoutGridProps","rowHeight","compactType","isDraggable","isResizable","onWidthChange","cols","md","sm","xs","xxs","useCSSTransforms","DashBoardService","getDataByFilters","tableName","add","WidgetTypeListService","getAll","deepClone","obj","parse","Dashboard","newWidgetWidth","newWidgetHeight","dashbords","setDashbords","currentDashbord","setCurrentDashbord","beforEditDashbord","setBeforEditDashbord","hasChanges","setHasChanges","setIsInEditMode","WidgetTypes","setWidgetTypes","cancelConfirmDialog","setCancelConfirmDialog","dashboardMoreButtonToggle","createRef","dashboardService","widgetTypeListService","getWidgetTypes","dataBinding","onGetDashboard","subscribe","applyLayouts","onGetAllDashboards","onAddUpdateWidget","isUpdated","setItem","EditDashBoard","openAddEditDashboard","addWidget","widgetCode","EvaluateNewWidgetPosition","openAddEditWidget","StartPotistion","x","y","EndPosition","h","widgetYPosition","widgetXPosition","maxY","reduce","max","widgetsRow","d","lastWidgetStartXPosition","apply","a","lastWidget","find","lastWidgetEndXPosition","availableHorizontalSlots","editLayout","save","onSaveDashboard","onHide","cancelSave","dontSave","next","changeDashboard","event","Id","dasboard","onChangeDashboard","dashbord","Widgets","uuidv4","minH","minW","updateWidgets","layoutsDic","sizeType","renderCancelConfirmDialogFooter","label","autoFocus","Name","Ripple","Dropdown","optionValue","optionLabel","onChange","placeholder","optionDisabled","option","Disabled","scrollHeight","Dialog","header","visible","footer","form","marginLeft"],"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/features/Dashboard/DashboardDesigner.tsx","../src/services/DashBoardService.ts","../src/services/WidgetTypeListService.ts","../src/services/clone.ts","../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}","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 { SeriesMeasure } from \"../../../types/SeriesMeasure\";\r\nimport { ApexOptions } from \"apexcharts\";\r\n\r\ntype ApexChartProps = {\r\n widget: ReactWidgetPM | null\r\n};\r\nconst ApexChart = (props: ApexChartProps) => {\r\n\r\n const [isView, setisView] = useState<boolean>(false);\r\n const isDataLoaded = 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 }, [])\r\n useEffect(() => {\r\n console.log('useEffect ApexChart', props.widget);\r\n var dashboardAnalyticsService = new DashboardAnalyticsService();\r\n dashboardAnalyticsService.getData(props.widget as ReactWidgetPM).then(result => {\r\n const data = getChartOptions(result.data);\r\n serArgs(data);\r\n isDataLoaded.current = true;\r\n updateView();\r\n })\r\n\r\n\r\n }, [props.widget?.EntityId, props.widget?.Filters, props.widget?.WidgetMeasures]);\r\n\r\n const updateView = () => {\r\n if (isDataLoaded.current && !isLoadingDrow.current)\r\n setisView(true);\r\n }\r\n\r\n const lineOptoins = (values: SeriesMeasure[]) => {\r\n\r\n\r\n var series: any = [];\r\n var categories: any = [];\r\n if (values && values[0]) {\r\n var s = values[0].SeriesMeasureVulues.map(z => z.Value);\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 },\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 },\r\n\r\n\r\n };\r\n }\r\n const barOptoins = (values: SeriesMeasure[]) => {\r\n var series: any = [{\r\n data: []\r\n }];\r\n var categories: any = [];\r\n if (values && values[0]) {\r\n var s = values[0].SeriesMeasureVulues.map(z => z.Value);\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 },\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 dataLabels: {\r\n enabled: true,\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 },\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 return {\r\n\r\n series: series,\r\n options: {\r\n chart: {\r\n type: 'pie',\r\n },\r\n labels: labels\r\n\r\n },\r\n\r\n\r\n\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 }\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 markerClick: markerClick,\r\n legendClick: legendClick,\r\n click: chartClick,\r\n dataPointSelection: dataPointSelection\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 },\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 const markerClick = (e: any, chart?: any, options?: any): void => {\r\n console.log('markerClick e: any, chart?: any, options?: any', e, chart, options)\r\n };\r\n\r\n const chartClick = (e: any, chart?: any, options?: any): void => {\r\n console.log('chartClick e: any, chart?: any, options?: any', e, chart, options)\r\n };\r\n\r\n const legendClick = (chart: any, seriesIndex?: number, options?: any): void => {\r\n console.log('legendClick chart: any, seriesIndex?: number, options?: any', chart, seriesIndex, options)\r\n };\r\n\r\n const dataPointSelection = (e: any, chart?: any, options?: any): void => {\r\n console.log('dataPointSelection e: any, chart?: any, options?: any', e, chart, options)\r\n };\r\n\r\n const getChartOptions = (values: SeriesMeasure[]) => {\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 ?\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 :\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}\r\nexport type ApexChartArgs = {\r\n options: any;\r\n series: any;\r\n}\r\n\r\nexport default ApexChart;\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 { ReactWidgetPM } from \"../../types/widget\";\r\nimport ApexChart from \"./ChartsComponents/ApexChart\";\r\n\r\n\r\n\r\ntype WidgetCardProps = {\r\n editBtnClicked(widget: any): any;\r\n deleteBtnClicked(i: any): any;\r\n widget: ReactWidgetPM | null;\r\n el: any;\r\n dateFilter: any;\r\n isInEditMode: boolean;\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 widget={props.widget} />\r\n </div>\r\n </div>\r\n );\r\n};\r\n\r\nexport default WidgetCard;\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\n\r\nconst ResponsiveReactGridLayout = WidthProvider(Responsive);\r\nconst newWidgetWidth = 3;\r\n\r\ntype DashboardDesignerProps = {\r\n editMode: boolean,\r\n dashboardLayouts: { lg: ReactWidgetPM[] },\r\n openEditWidget: (widget: ReactWidgetPM) => void\r\n onLayoutChange: (layouts: Layouts) => 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 [layouts, setLayouts] = useState<Layouts>({ lg: [] });\r\n const [placeholderRowsArray, setplaceholderRowsArray] = useState(Array.from({ length: minimumPlaceholderRowsCount }).fill(null));\r\n const [firstChange, setFirstChange] = useState(true);\r\n const [dateFilter, setDateFilter] = useState<Date | Date[] | undefined>(undefined);\r\n const [isInEditMode, setisInEditMode] = useState(false);\r\n const [widgets, setWidgets] = useState<{ lg: ReactWidgetPM[] }>({ lg: [] });\r\n\r\n\r\n useEffect(() => {\r\n setFirstChange(true);\r\n console.log('useEffect setLayouts')\r\n setLayouts({});\r\n setLayouts(createLayout());\r\n setWidgets(props.dashboardLayouts);\r\n }, [props.dashboardLayouts]);\r\n\r\n const createLayout = (): Layouts => {\r\n var layout: any = { lg: [] };\r\n props.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 // const applyModeSetting = () => {\r\n // layouts.current.lg.forEach(element => {\r\n // element.isDraggable = props.editMode;\r\n // element.isResizable = 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 console.log(layout, layouts);\r\n if (firstChange) {\r\n setFirstChange(false);\r\n return;\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 console.log('deletePanel(id)', id)\r\n var newLayouts = { lg: layouts.lg.filter(e => e.i != id) }\r\n\r\n setLayouts(newLayouts);\r\n\r\n var newWidgets = { lg: widgets.lg.filter(e => e.key != id) }\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 console.log('UpdatePlaceholderDimensions', layouts)\r\n var gridLayout = document.getElementsByClassName('react-grid-layout')\r\n if (!gridLayout)\r\n return;\r\n const gridElementHeight = gridLayout[0]?.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 {props.editMode ? 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 ) : null}\r\n </div>\r\n\r\n\r\n <ResponsiveReactGridLayout\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 dateFilter={dateFilter}\r\n editBtnClicked={editWidget}\r\n deleteBtnClicked={deletePanel}\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 axios from \"axios\";\r\nimport { ApiQueryFilters } from \"../common/data-contracts/ApiQueryFilter\";\r\nimport { ReactDashboardPM } from \"../types/Dashboard\";\r\nimport { ApiServices } from \"./ApiServices\";\r\nimport { Tools } from './tools';\r\n\r\n\r\nexport class DashBoardService{ \r\n _ApiServices:ApiServices;\r\n tableName = 'DashBoard';\r\n constructor(){\r\n this._ApiServices = new ApiServices();\r\n }\r\n \r\n\r\n getDataByFilters(filters: ApiQueryFilters) {\r\n return this._ApiServices.getByFilters<ReactDashboardPM>(`/api/${this.tableName}Views/getbyfilters?`,filters);\r\n }\r\n\r\n add(data:ReactDashboardPM){\r\n return this._ApiServices.post(`/api/DashBoards`,data);\r\n }\r\n \r\n}","import axios from \"axios\";\r\nimport { ApiQueryFilters } from \"../common/data-contracts/ApiQueryFilter\";\r\nimport { ReactDashboardPM } from \"../types/Dashboard\";\r\nimport { WidgetType } from \"../types/WidgetType\";\r\nimport { ApiServices } from \"./ApiServices\";\r\nimport { Tools } from './tools';\r\n\r\n\r\nexport class WidgetTypeListService{ \r\n _ApiServices:ApiServices;\r\n\r\n constructor(){\r\n this._ApiServices = new ApiServices();\r\n }\r\n \r\n\r\n getDataByFilters(filters: ApiQueryFilters) {\r\n return this._ApiServices.getByFilters<WidgetType>(`/api/WidgetTypeViews/getbyfilters?`,filters);\r\n }\r\n\r\n getAll() {\r\n return this._ApiServices.get<WidgetType[]>(`/api/WidgetTypeViews/getall`);\r\n }\r\n\r\n \r\n}","export function deepClone (obj){\r\n return JSON.parse(JSON.stringify(obj))\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\n\r\ntype DashboardProps = {\r\n token: string,\r\n tenant: number,\r\n userId: string,\r\n dataBinding: DashboardDataBinding,\r\n openAddEditWidget: (widget: ReactWidgetPM | undefined) => void,\r\n openAddEditDashboard: (dashboard: ReactDashboardPM | undefined) => void,\r\n onChangeDashboard: (dashboard: ReactDashboardPM | undefined) => void,\r\n onSaveDashboard: (dashboard: ReactDashboardPM | undefined) => void,\r\n};\r\nconst Dashboard = (props: DashboardProps) => {\r\n const newWidgetWidth = 3;\r\n const newWidgetHeight = 5;\r\n\r\n const [dashbords, setDashbords] = useState<ReactDashboardPM[]>([]);\r\n const [currentDashbord, setCurrentDashbord] = useState<ReactDashboardPM | undefined>(undefined);\r\n const [beforEditDashbord, setBeforEditDashbord] = useState<ReactDashboardPM | undefined>(undefined);\r\n const [hasChanges, setHasChanges] = useState(false);\r\n const [isInEditMode, setIsInEditMode] = useState<boolean>(false);\r\n const [WidgetTypes, setWidgetTypes] = useState<WidgetType[]>();\r\n const [layouts, setLayouts] = useState<{ lg: ReactWidgetPM[] }>({ lg: [] });\r\n const [cancelConfirmDialog, setCancelConfirmDialog] = useState(false);\r\n const dashboardMoreButtonToggle = createRef<OverlayPanel>();\r\n const dashboardService = new DashBoardService();\r\n const widgetTypeListService = new WidgetTypeListService();\r\n useEffect(() => {\r\n getWidgetTypes();\r\n\r\n props.dataBinding.onGetDashboard.subscribe(e => {\r\n console.log('onGetDashboard.subscribe', e)\r\n setCurrentDashbord(e);\r\n applyLayouts(e);\r\n })\r\n props.dataBinding.onGetAllDashboards.subscribe(e => {\r\n console.log('onGetAllDashboard.subscribe', e)\r\n\r\n setDashbords(e);\r\n });\r\n\r\n props.dataBinding.onAddUpdateWidget.subscribe(isUpdated => {\r\n if (!isUpdated)\r\n return;\r\n setHasChanges(true);\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 const getWidgetTypes = () => {\r\n widgetTypeListService.getAll().then(data => {\r\n setWidgetTypes(data.data);\r\n });\r\n }\r\n const EditDashBoard = () => {\r\n props.openAddEditDashboard(currentDashbord);\r\n dashboardMoreButtonToggle?.current?.hide();\r\n\r\n }\r\n const addWidget = (widgetCode) => {\r\n var position = EvaluateNewWidgetPosition();\r\n props.openAddEditWidget({ TypeCode: widgetCode, StartPotistion: `${position.x},${position.y}`, EndPosition: `${position.w},${position.h}`, ChangeSetOp: 'Insert' } as ReactWidgetPM);\r\n\r\n }\r\n const EvaluateNewWidgetPosition = () => {\r\n let widgetYPosition = 0;\r\n let widgetXPosition = 0;\r\n let layout = layouts[\"lg\"].map(e => e.Layout);\r\n const maxY = layout.reduce((max, widget) => {\r\n if (widget && widget.y > max) max = widget.y;\r\n return max;\r\n }, 0);\r\n\r\n for (let y = 0; y <= maxY; y++) {\r\n const widgetsRow = layout.filter(d => d?.y == y);\r\n const lastWidgetStartXPosition = Math.max.apply(Math, widgetsRow.map(a => a?.x));\r\n const lastWidget: any = widgetsRow.find(a => a?.x == lastWidgetStartXPosition);\r\n if (lastWidget) {\r\n const lastWidgetEndXPosition = lastWidgetStartXPosition + lastWidget.w;\r\n const availableHorizontalSlots = layoutGridProps.cols.lg - lastWidgetEndXPosition;\r\n if (availableHorizontalSlots >= newWidgetWidth) {\r\n widgetYPosition = y;\r\n widgetXPosition = lastWidgetEndXPosition;\r\n return { x: widgetXPosition, y: widgetYPosition, w: newWidgetWidth, h: newWidgetHeight };\r\n\r\n } else {\r\n widgetYPosition = y + 1;\r\n }\r\n } else {\r\n widgetYPosition = y + 1;\r\n }\r\n }\r\n\r\n return { x: widgetXPosition, y: widgetYPosition, w: newWidgetWidth, h: newWidgetHeight };\r\n }\r\n const editLayout = () => {\r\n setIsInEditMode(true);\r\n setHasChanges(false); \r\n dashboardMoreButtonToggle?.current?.hide();\r\n\r\n setBeforEditDashbord(deepClone(currentDashbord));\r\n }\r\n const save = () => {\r\n setIsInEditMode(false)\r\n console.log('onSaveDashboard > ', currentDashbord)\r\n props.onSaveDashboard(currentDashbord);\r\n onHide();\r\n\r\n setHasChanges(false); ;\r\n }\r\n\r\n const cancelSave = () => {\r\n if (!hasChanges) {\r\n setIsInEditMode(false);\r\n setHasChanges(false);\r\n\r\n } else {\r\n setCancelConfirmDialog(true);\r\n }\r\n\r\n\r\n }\r\n\r\n const dontSave = () => {\r\n setHasChanges(false)\r\n setIsInEditMode(false);\r\n props.dataBinding.onGetDashboard.next(beforEditDashbord);\r\n setCancelConfirmDialog(false);\r\n }\r\n const changeDashboard = (event) => {\r\n if (event.value == currentDashbord?.Id)\r\n return;\r\n var dasboard = dashbords.find(e => e.Id == event.value);\r\n\r\n props.onChangeDashboard(dasboard);\r\n props.dataBinding.onGetDashboard.next(dasboard);\r\n\r\n }\r\n\r\n const applyLayouts = (dashbord: ReactDashboardPM | undefined) => {\r\n if ((!dashbord?.Widgets))\r\n return;\r\n var layout: { lg: ReactWidgetPM[] } = { lg: [] };\r\n dashbord?.Widgets.map(widget => {\r\n if (widget.Id && widget.Id.length > 0)\r\n widget.key = widget.Id;\r\n else\r\n widget.key = uuidv4();\r\n widget.Layout = {\r\n minH: 5,\r\n minW: 3,\r\n i: widget.key,\r\n w: +widget.EndPosition.split(',')[0],\r\n h: +widget.EndPosition.split(',')[1],\r\n x: +widget.StartPotistion.split(',')[0],\r\n y: +widget.StartPotistion.split(',')[1],\r\n }\r\n layout.lg.push(widget\r\n\r\n )\r\n });\r\n console.log('setLayouts -- > ', layout)\r\n setLayouts(layout);\r\n\r\n }\r\n const updateWidgets = (layouts: Layouts) => {\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 widgets: ReactWidgetPM[] = [];\r\n currentDashbord?.Widgets.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 widgets.push(widget)\r\n }\r\n\r\n });\r\n if (currentDashbord) {\r\n currentDashbord.Widgets = widgets;\r\n }\r\n console.log('after update widget', currentDashbord)\r\n setHasChanges(true);\r\n\r\n }\r\n\r\n const renderCancelConfirmDialogFooter = () => {\r\n return (\r\n <div className='dl-flex-row-end' >\r\n <Button label=\"Cancel\" onClick={() => onHide()} className=\"p-button-secondary\" />\r\n <Button label=\"Don't Save\" onClick={() => dontSave()} className=\"p-button-secondary\" />\r\n <Button label=\"Save\" onClick={() => save()} autoFocus className=\"p-button-warning\" />\r\n </div>\r\n );\r\n }\r\n const onHide = () => {\r\n setCancelConfirmDialog(false)\r\n }\r\n return (\r\n <div className='dl-full-hight'>\r\n\r\n <div className='dl-dashboard-header dl-card'>\r\n <div className='dl-flex-row dl-custom-btn'>\r\n <div className='dl-title-1'>{currentDashbord?.Name}</div>\r\n <Button\r\n icon=\"pi pi-ellipsis-v\"\r\n onClick={(e) => dashboardMoreButtonToggle?.current?.toggle(e)}\r\n className=\"p-button p-button-icon-only p-button-rounded p-button-text\"\r\n >\r\n <Ripple />\r\n </Button>\r\n <OverlayPanel ref={dashboardMoreButtonToggle} className=\"buttons-overlay\">\r\n <div className=\"buttons-list\">\r\n <div onClick={() => EditDashBoard()}>Edit</div>\r\n <div onClick={editLayout}>Edit Layout</div>\r\n\r\n </div>\r\n </OverlayPanel >\r\n </div>\r\n <div className='dl-flex-row'>\r\n {!isInEditMode ?\r\n <div className='dl-flex-row'>\r\n\r\n\r\n <div style={{ width: \"161px\" }}>\r\n <Dropdown\r\n value={[]}\r\n options={dashbords}\r\n optionValue=\"Id\"\r\n optionLabel=\"Name\"\r\n onChange={changeDashboard}\r\n placeholder=\"Choose Dashboard\"\r\n optionDisabled={(option) => {\r\n return option?.Disabled;\r\n }}\r\n scrollHeight=\"300px\"\r\n style={{ width: '100%' }}\r\n />\r\n </div>\r\n <Button icon=\"pi pi-plus\" onClick={() => props.openAddEditDashboard(undefined)}\r\n className=\"dl-dashboard-add p-button-rounded p-button-success\" />\r\n </div>\r\n : null}\r\n {/* <DashboardDialogComponent display={displayAddDashboard} onClose={onDashboardDialogClose}></DashboardDialogComponent> */}\r\n\r\n\r\n\r\n {isInEditMode ?\r\n <div className='dl-flex-row'>\r\n\r\n <Button\r\n label=\"Cancel\"\r\n className=\"p-button-secondary dl-m-r-s dl-m-t-8\"\r\n onClick={cancelSave}\r\n />\r\n\r\n <Dialog header=\"Unsaved Changes\" visible={cancelConfirmDialog} style={{ width: '50vw' }} footer={renderCancelConfirmDialogFooter()} onHide={onHide}>\r\n <p>This Dashboard has unsaved changes do you want to save it?</p>\r\n </Dialog>\r\n\r\n {hasChanges ?\r\n <Button\r\n label=\"Save\"\r\n form=\"frm\"\r\n // icon=\"pi pi-check\"\r\n onClick={save}\r\n autoFocus\r\n className={\"p-button-warning dl-m-t-8\"}\r\n /> : null\r\n }\r\n {!hasChanges ?\r\n <Button\r\n label=\"Save\"\r\n form=\"frm\"\r\n // icon=\"pi pi-check\"\r\n onClick={save}\r\n autoFocus\r\n className={\"p-button-secondary dl-m-t-8\"}\r\n /> : null\r\n }\r\n\r\n <div style={{ width: '192px', marginLeft: '15px' }}>\r\n <Dropdown\r\n options={WidgetTypes}\r\n optionValue=\"Code\"\r\n optionLabel=\"Name\"\r\n onChange={(e) => addWidget(e.value)}\r\n placeholder=\"Add Component\"\r\n optionDisabled={(option) => {\r\n return option?.Disabled;\r\n }}\r\n scrollHeight=\"300px\"\r\n />\r\n </div>\r\n </div>\r\n : null}\r\n </div>\r\n\r\n\r\n </div>\r\n\r\n <div className='dl-dashboard-body'>\r\n <DashboardDesigner editMode={isInEditMode} onLayoutChange={updateWidgets} dashboardLayouts={layouts} openEditWidget={(widget: ReactWidgetPM) => props.openAddEditWidget(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","ApiServices","_apiUrl","getByFilters","api","filters","token","getTokenFromStorage","apiURL","ConcatFiltersToURL","axios","get","headers","post","date","window","localStorage","getItem","urlparameters","mykeys","Object","keys","addtionalFiltersValues","i","propName","propValue","ignoreFilter","concat","encodeURIComponent","JSON","stringify","DashboardAnalyticsService","_ApiServices","getData","widget","controller","ApexChart","props","useState","isView","setisView","isDataLoaded","useRef","series","options","args","serArgs","isLoadingDrow","useEffect","setTimeout","current","updateView","console","log","dashboardAnalyticsService","then","result","data","getChartOptions","EntityId","Filters","WidgetMeasures","lineOptoins","values","categories","s","SeriesMeasureVulues","map","z","Value","e","Label","chart","height","type","zoom","enabled","dataLabels","stroke","curve","title","text","align","grid","row","colors","opacity","xaxis","barOptoins","plotOptions","bar","horizontal","position","offsetX","style","fontSize","show","width","tooltip","shared","intersect","pieOptoins","labels","donutOptoins","events","markerClick","legendClick","click","chartClick","dataPointSelection","responsive","breakpoint","legend","offsetY","handelNullLabels","forEach","element","value","seriesIndex","TypeCode","React","ReactApexChart","className","ProgressSpinner","strokeWidth","animationDuration","WidgetCard","state","moreBtnToggle","editWidget","hide","editBtnClicked","key","el","Title","isInEditMode","Button","icon","onClick","toggle","OverlayPanel","ref","deleteBtnClicked","ResponsiveReactGridLayout","WidthProvider","Responsive","DashboardDesigner","array12","Array","from","fill","minimumPlaceholderRowsCount","lg","layouts","setLayouts","placeholderRowsArray","setplaceholderRowsArray","firstChange","setFirstChange","undefined","dateFilter","setisInEditMode","widgets","setWidgets","createLayout","dashboardLayouts","layout","w","Layout","push","editMode","onLayoutChange","changedLayouts","UpdatePlaceholderDimensions","deletePanel","id","newLayouts","filter","newWidgets","ChangeSetOp","openEditWidget","gridLayout","document","getElementsByClassName","gridElementHeight","clientHeight","newPlaceholderRows","Math","floor","layoutGridProps","rowHeight","compactType","isDraggable","isResizable","onWidthChange","cols","md","sm","xs","xxs","useCSSTransforms","DashBoardService","getDataByFilters","tableName","add","WidgetTypeListService","getAll","deepClone","obj","parse","Dashboard","newWidgetWidth","newWidgetHeight","dashbords","setDashbords","currentDashbord","setCurrentDashbord","beforEditDashbord","setBeforEditDashbord","hasChanges","setHasChanges","setIsInEditMode","WidgetTypes","setWidgetTypes","cancelConfirmDialog","setCancelConfirmDialog","dashboardMoreButtonToggle","createRef","dashboardService","widgetTypeListService","getWidgetTypes","dataBinding","onGetDashboard","subscribe","applyLayouts","onGetAllDashboards","onAddUpdateWidget","isUpdated","setItem","EditDashBoard","openAddEditDashboard","addWidget","widgetCode","EvaluateNewWidgetPosition","openAddEditWidget","StartPotistion","x","y","EndPosition","h","widgetYPosition","widgetXPosition","maxY","reduce","max","widgetsRow","d","lastWidgetStartXPosition","apply","a","lastWidget","find","lastWidgetEndXPosition","availableHorizontalSlots","editLayout","save","onSaveDashboard","onHide","cancelSave","dontSave","next","changeDashboard","event","Id","dasboard","onChangeDashboard","dashbord","Widgets","uuidv4","minH","minW","updateWidgets","layoutsDic","sizeType","renderCancelConfirmDialogFooter","label","autoFocus","Name","Ripple","Dropdown","optionValue","optionLabel","onChange","placeholder","optionDisabled","option","Disabled","scrollHeight","Dialog","header","visible","footer","form","marginLeft"],"mappings":"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"}
|