logitude-dashboard-library 1.2.49 → 1.2.52

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.js CHANGED
@@ -4,12 +4,12 @@ var React = require('react');
4
4
  var React__default = _interopDefault(React);
5
5
  var button = require('primereact/button');
6
6
  var reactGridLayout = require('react-grid-layout');
7
- var _ = _interopDefault(require('lodash'));
8
7
  var ReactApexChart = _interopDefault(require('react-apexcharts'));
9
8
  var axios = _interopDefault(require('axios'));
10
9
  var overlaypanel = require('primereact/overlaypanel');
11
10
  var dropdown = require('primereact/dropdown');
12
11
  var ripple = require('primereact/ripple');
12
+ var uuid = require('uuid');
13
13
 
14
14
  var Tools = /*#__PURE__*/function () {
15
15
  function Tools() {}
@@ -203,7 +203,6 @@ var WidgetCard = function WidgetCard(props, state) {
203
203
  setLoading(false);
204
204
  }, 200);
205
205
  }, []);
206
- console.log('WidgetCard', props.el);
207
206
  return React__default.createElement("div", {
208
207
  className: "panel",
209
208
  key: props.el.i
@@ -226,7 +225,9 @@ var WidgetCard = function WidgetCard(props, state) {
226
225
  }
227
226
  }, " Edit "), React__default.createElement("div", {
228
227
  onClick: function onClick() {
229
- return props.deleteBtnClicked(props.el.i);
228
+ var _props$widget2;
229
+
230
+ return props.deleteBtnClicked((_props$widget2 = props.widget) === null || _props$widget2 === void 0 ? void 0 : _props$widget2.key);
230
231
  }
231
232
  }, "Remove")))), React__default.createElement("div", {
232
233
  className: "dl-dashboard-widget"
@@ -250,87 +251,69 @@ var DashboardDesigner = function DashboardDesigner(props) {
250
251
  var array12 = Array.from({
251
252
  length: 12
252
253
  }).fill(null);
253
- var savedWidgets = getFromStorage("grid-widgets");
254
254
  var minimumPlaceholderRowsCount = 12;
255
-
256
- var _useState = React.useState(createLayout() || {
255
+ var layouts = React.useRef(createLayout() || {
257
256
  lg: []
258
- }),
259
- layouts = _useState[0],
260
- setLayouts = _useState[1];
257
+ });
261
258
 
262
- var _useState2 = React.useState(Array.from({
259
+ var _useState = React.useState(Array.from({
263
260
  length: minimumPlaceholderRowsCount
264
261
  }).fill(null)),
265
- placeholderRowsArray = _useState2[0],
266
- setplaceholderRowsArray = _useState2[1];
262
+ placeholderRowsArray = _useState[0],
263
+ setplaceholderRowsArray = _useState[1];
267
264
 
268
- var _useState3 = React.useState(false),
269
- setShowMsg = _useState3[1];
265
+ var _useState2 = React.useState(false);
270
266
 
271
- var _useState4 = React.useState(undefined),
272
- dateFilter = _useState4[0];
267
+ var _useState3 = React.useState(undefined),
268
+ dateFilter = _useState3[0];
273
269
 
274
- var _useState5 = React.useState(false);
270
+ var _useState4 = React.useState(false);
275
271
 
276
- var _useState6 = React.useState("");
272
+ var _useState5 = React.useState("");
277
273
 
278
- var _useState7 = React.useState(savedWidgets || []),
279
- widgets = _useState7[0],
280
- setWidgets = _useState7[1];
274
+ var _useState6 = React.useState({
275
+ lg: []
276
+ }),
277
+ widgets = _useState6[0],
278
+ setWidgets = _useState6[1];
281
279
 
282
- var _useState8 = React.useState(minimumPlaceholderRowsCount),
283
- setPlaceholderRows = _useState8[1];
280
+ var _useState7 = React.useState(minimumPlaceholderRowsCount),
281
+ setPlaceholderRows = _useState7[1];
284
282
 
285
283
  React.useEffect(function () {
286
284
  console.log('useEffect setLayouts');
287
- setLayouts(createLayout());
285
+ layouts.current = createLayout();
286
+ setWidgets(props.dashboardLayouts);
288
287
  }, [props.dashboardLayouts]);
289
288
 
290
- function _onLayoutChange(layout, layouts) {
289
+ function _onLayoutChange(layout, changedLayouts) {
291
290
  console.log(layout, layouts);
292
- setLayouts(layouts);
291
+ layouts.current = changedLayouts;
293
292
  UpdatePlaceholderDimensions();
294
- props.onLayoutChange(layouts);
293
+ props.onLayoutChange(changedLayouts);
295
294
  }
296
295
 
297
296
  function deletePanel(id) {
298
- var layout = layouts["lg"];
299
- var itemIndex = layout.findIndex(function (d) {
300
- return d.i === id;
301
- });
302
- layout.splice(itemIndex, 1);
303
- setLayouts({
304
- lg: [].concat(layout)
305
- });
306
- setWidgets(_.reject(widgets, {
307
- i: id
308
- }));
309
- SaveGrid();
310
- }
311
-
312
- function SaveGrid() {
313
- saveToStorage("grid-layout", layouts);
314
- saveToStorage("grid-widgets", widgets);
297
+ console.log('deletePanel(id)', id);
298
+ var newLayouts = {
299
+ lg: layouts.current.lg.filter(function (e) {
300
+ return e.i != id;
301
+ })
302
+ };
303
+ layouts.current = newLayouts;
304
+ var newWidgets = {
305
+ lg: widgets.lg.filter(function (e) {
306
+ return e.key != id;
307
+ })
308
+ };
309
+ setWidgets(newWidgets);
310
+ props.onLayoutChange(newLayouts);
315
311
  }
316
312
 
317
313
  function editWidget(widget) {
318
314
  props.openEditWidget(widget);
319
315
  }
320
316
 
321
- function saveToStorage(key, value) {
322
- setShowMsg(true);
323
- setTimeout(function () {
324
- setShowMsg(false);
325
- }, 2000);
326
- window.localStorage.setItem(key, JSON.stringify(value));
327
- }
328
-
329
- function getFromStorage(key) {
330
- var layout = window.localStorage.getItem(key);
331
- return JSON.parse(layout);
332
- }
333
-
334
317
  function UpdatePlaceholderDimensions() {
335
318
  var _gridLayout$;
336
319
 
@@ -365,7 +348,7 @@ var DashboardDesigner = function DashboardDesigner(props) {
365
348
  });
366
349
  });
367
350
  })), React__default.createElement(ResponsiveReactGridLayout, Object.assign({}, layoutGridProps, {
368
- layouts: layouts,
351
+ layouts: layouts.current,
369
352
  compactType: "vertical",
370
353
  onWidthChange: function onWidthChange() {
371
354
  return UpdatePlaceholderDimensions();
@@ -373,7 +356,7 @@ var DashboardDesigner = function DashboardDesigner(props) {
373
356
  onLayoutChange: function onLayoutChange(layout, layouts) {
374
357
  return _onLayoutChange(layout, layouts);
375
358
  }
376
- }), props.dashboardLayouts.lg.map(function (widget) {
359
+ }), widgets.lg.map(function (widget) {
377
360
  var _widget$Layout, _widget$Layout2;
378
361
 
379
362
  return React__default.createElement("div", {
@@ -517,6 +500,10 @@ var WidgetTypeListService = /*#__PURE__*/function () {
517
500
  return WidgetTypeListService;
518
501
  }();
519
502
 
503
+ function deepClone(obj) {
504
+ return JSON.parse(JSON.stringify(obj));
505
+ }
506
+
520
507
  var Dashboard = function Dashboard(props) {
521
508
  var _props$token;
522
509
 
@@ -655,12 +642,12 @@ var Dashboard = function Dashboard(props) {
655
642
 
656
643
  setIsInEditMode(true);
657
644
  dashboardMoreButtonToggle === null || dashboardMoreButtonToggle === void 0 ? void 0 : (_dashboardMoreButtonT2 = dashboardMoreButtonToggle.current) === null || _dashboardMoreButtonT2 === void 0 ? void 0 : _dashboardMoreButtonT2.hide();
658
- console.log(WidgetTypes);
659
- setBeforEditDashbord(currentDashbord);
645
+ setBeforEditDashbord(deepClone(currentDashbord));
660
646
  };
661
647
 
662
648
  var save = function save() {
663
649
  setIsInEditMode(false);
650
+ console.log('onSaveDashboard > ', currentDashbord);
664
651
  props.onSaveDashboard(currentDashbord);
665
652
  };
666
653
 
@@ -684,7 +671,7 @@ var Dashboard = function Dashboard(props) {
684
671
  lg: []
685
672
  };
686
673
  dashbord === null || dashbord === void 0 ? void 0 : dashbord.Widgets.map(function (widget) {
687
- if (widget.Id && widget.Id.length > 0) widget.key = widget.Id;else widget.key = uuidv4();
674
+ if (widget.Id && widget.Id.length > 0) widget.key = widget.Id;else widget.key = uuid.v4();
688
675
  widget.Layout = {
689
676
  minH: 5,
690
677
  minW: 3,
@@ -696,6 +683,7 @@ var Dashboard = function Dashboard(props) {
696
683
  };
697
684
  layout.lg.push(widget);
698
685
  });
686
+ console.log('setLayouts -- > ', layout);
699
687
  setLayouts(layout);
700
688
  };
701
689
 
@@ -710,10 +698,20 @@ var Dashboard = function Dashboard(props) {
710
698
  return;
711
699
  }
712
700
  });
701
+ var widgets = [];
713
702
  currentDashbord === null || currentDashbord === void 0 ? void 0 : currentDashbord.Widgets.forEach(function (widget) {
714
- widget.StartPotistion = layoutsDic[widget.key].x + "," + layoutsDic[widget.key].y;
715
- widget.EndPosition = layoutsDic[widget.key].w + "," + layoutsDic[widget.key].h;
703
+ if (layoutsDic[widget.key]) {
704
+ widget.StartPotistion = layoutsDic[widget.key].x + "," + layoutsDic[widget.key].y;
705
+ widget.EndPosition = layoutsDic[widget.key].w + "," + layoutsDic[widget.key].h;
706
+ widgets.push(widget);
707
+ }
716
708
  });
709
+
710
+ if (currentDashbord) {
711
+ currentDashbord.Widgets = widgets;
712
+ }
713
+
714
+ console.log('after update widget', currentDashbord);
717
715
  };
718
716
 
719
717
  return React.createElement("div", {
@@ -811,9 +809,5 @@ var Dashboard = function Dashboard(props) {
811
809
  })));
812
810
  };
813
811
 
814
- function uuidv4() {
815
- throw new Error('Function not implemented.');
816
- }
817
-
818
812
  module.exports = Dashboard;
819
813
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":["../src/services/tools.ts","../src/features/Dashboard/ChartsComponents/ApexChart.tsx","../src/features/Dashboard/WidgetCard.tsx","../src/features/Dashboard/DashboardDesigner.tsx","../src/services/ApiServices.ts","../src/services/DashBoardService.ts","../src/services/WidgetTypeListService.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 React, { useEffect, useRef } from \"react\";\r\nimport ReactApexChart from \"react-apexcharts\";\r\nimport { ReactWidgetPM } from \"../../../types/widget\";\r\n\r\ntype ApexChartProps = {\r\n widget: ReactWidgetPM|null\r\n};\r\nconst ApexChart = (props: ApexChartProps) => {\r\n\r\n const lineOptoins = () => {\r\n\r\n return {\r\n\r\n series: [{\r\n name: \"Desktops\",\r\n data: [10, 41, 35, 51, 49, 62, 69, 91, 148]\r\n }],\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: ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep'],\r\n }\r\n },\r\n\r\n\r\n };\r\n }\r\n const barOptoins = () => {\r\n\r\n return {\r\n series: [{\r\n data: [44, 55, 41, 64, 22, 43, 21]\r\n }, {\r\n data: [53, 32, 33, 52, 13, 44, 32]\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: [2001, 2002, 2003, 2004, 2005, 2006, 2007],\r\n },\r\n },\r\n\r\n\r\n };\r\n }\r\n const pieOptoins = (): ApexChartArgs => {\r\n\r\n return {\r\n\r\n series: [44, 55, 13, 43, 22],\r\n options: {\r\n chart: {\r\n type: 'pie',\r\n },\r\n labels: ['Team A', 'Team B', 'Team C', 'Team D', 'Team E'],\r\n \r\n },\r\n \r\n\r\n\r\n };\r\n }\r\n const donutOptoins = (): ApexChartArgs => {\r\n\r\n return {\r\n\r\n series: [44, 55, 13, 33],\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 },\r\n\r\n\r\n };\r\n }\r\n const getChartOptions = () => {\r\n switch (props.widget?.TypeCode) {\r\n case 'bar':\r\n return barOptoins();\r\n break;\r\n case 'line':\r\n return lineOptoins();\r\n break;\r\n case 'pie':\r\n return pieOptoins();\r\n break;\r\n case 'donut':\r\n return donutOptoins();\r\n break;\r\n default:\r\n break;\r\n }\r\n return barOptoins();\r\n };\r\n const args = getChartOptions();\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}\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 },200);\r\n },[])\r\n\r\n const widgetComponents: any[] = [\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 console.log('WidgetCard',props.el)\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 <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\r\n <OverlayPanel ref={moreBtnToggle} className=\"buttons-overlay\">\r\n <div className=\"buttons-list\">\r\n <div onClick={() => props.editBtnClicked(props.widget)} > Edit </div>\r\n <div onClick={() => props.deleteBtnClicked(props.el.i)} >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\n\r\nconst ResponsiveReactGridLayout = WidthProvider(Responsive);\r\nconst newWidgetWidth = 3;\r\n\r\ntype DashboardDesignerProps = {\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 // const [widgetButtonToggle, setWidgetButtonToggle] = useState(createRef<OverlayPanel>());\r\n // const [addWidgetButtonToggle, setAddWidgetButtonToggle] = useState(createRef<OverlayPanel>());\r\n // const [widgetComponents, setWidgetComponents] = useState([\r\n // { type: \"Bar\", component: BarChartComponent },\r\n // { type: \"Col\", component: ColumnChartComponent },\r\n // { type: \"Pie\", component: PieChartComponent },\r\n // { type: \"Are\", component: AreaChartComponent },\r\n // ]);\r\n const createLayout = ():Layouts => {\r\n var layout = { lg:props.dashboardLayouts.lg.map(w=>w.Layout as Layout)};\r\n return layout;\r\n }\r\n\r\n const array12 = Array.from({ length: 12 }).fill(null);\r\n var savedWidgets = getFromStorage(\"grid-widgets\");\r\n const minimumPlaceholderRowsCount = 12;\r\n const [layouts, setLayouts] = useState<Layouts>( createLayout() || { lg: [] });\r\n const [placeholderRowsArray, setplaceholderRowsArray] = useState(Array.from({ length: minimumPlaceholderRowsCount }).fill(null));\r\n const [showMsg, setShowMsg] = useState(false);\r\n const [dateFilter, setDateFilter] = useState<Date | Date[] | undefined>(undefined);\r\n const [displayDialog, setDisplayDialog] = useState(false);\r\n const [dashboardTitle, setDashboardTitle] = useState(\"\");\r\n const [widgets, setWidgets] = useState(savedWidgets || []);\r\n const [placeholderRows, setPlaceholderRows] = useState(minimumPlaceholderRowsCount);\r\n\r\n // const [widgetToEdit, setWidgetToEdit] = useState<Widget | null>(null);\r\n // const renderPageHeader = () => {\r\n // return (\r\n\r\n // <div className=\"dl-heder-row\">\r\n // {/* <Calendar\r\n // value={dateFilter}\r\n // showIcon={true}\r\n // onChange={(e) => setDateFilter(e.value)}\r\n // placeholder=\"filter by date...\"\r\n // ></Calendar> */}\r\n\r\n\r\n\r\n // </div>\r\n\r\n // );\r\n // }\r\n\r\n useEffect(()=>{\r\n\r\n console.log('useEffect setLayouts')\r\n setLayouts(createLayout())\r\n },[props.dashboardLayouts]);\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 renderGridWidgetsPlaceholder() {\r\n // console.log(placeholderRows)\r\n // return (\r\n // <div className=\"dl-grid dl-grid--bordered\">\r\n // {[...Array(placeholderRows)].map((e, i) =>\r\n // [...Array(layoutGridProps.cols.lg)].map((e, i) => (\r\n // <div key={i}\r\n // style={{\r\n // height: layoutGridProps.rowHeight,\r\n // }}\r\n // ></div>\r\n // ))\r\n // )}\r\n // </div>\r\n // );\r\n // }\r\n\r\n function onLayoutChange(layout: any, layouts:Layouts) {\r\n console.log(layout, layouts);\r\n setLayouts(layouts);\r\n UpdatePlaceholderDimensions();\r\n props.onLayoutChange(layouts)\r\n }\r\n function renderWidgetComponent(el: any) {\r\n const widget = FindWidget(el);\r\n\r\n return (\r\n <div key={el.i}>\r\n <WidgetCard\r\n key={el.i}\r\n widget={widget}\r\n el={el}\r\n dateFilter={dateFilter}\r\n editBtnClicked={editWidget}\r\n deleteBtnClicked={deletePanel}\r\n />\r\n </div>\r\n );\r\n }\r\n function deletePanel(id) {\r\n let layout = layouts[\"lg\"];\r\n var itemIndex = layout.findIndex((d) => d.i === id);\r\n layout.splice(itemIndex, 1);\r\n setLayouts({ lg: [...layout] });\r\n setWidgets(_.reject(widgets, { i: id }));\r\n SaveGrid();\r\n };\r\n function SaveGrid() {\r\n saveToStorage(\"grid-layout\", layouts);\r\n saveToStorage(\"grid-widgets\", widgets);\r\n }\r\n function editWidget(widget: ReactWidgetPM) {\r\n props.openEditWidget(widget);\r\n };\r\n function FindWidget(el: any) {\r\n return widgets.find((d) => d.i === el.i);\r\n }\r\n function saveToStorage(key, value) {\r\n setShowMsg(true);\r\n setTimeout(() => {\r\n setShowMsg(false);\r\n }, 2000);\r\n window.localStorage.setItem(key, JSON.stringify(value));\r\n };\r\n function getFromStorage(key) {\r\n const layout: any = window.localStorage.getItem(key);\r\n return JSON.parse(layout);\r\n };\r\n // function toggleDialog() {\r\n // setDisplayDialog(!displayDialog);\r\n // }\r\n // function renderNewWidgetDialog() {\r\n\r\n // return (\r\n // <Dialog\r\n\r\n // header={widgetToEdit ? \"Edit Chart\" : \"New Chart\"}\r\n // visible={displayDialog}\r\n // onHide={toggleDialog}\r\n // breakpoints={{ \"850px\": \"95vw\", \"600px\": \"100vw\" }}\r\n // style={{ width: \"800px\" }}\r\n // >\r\n // <NewWidget\r\n // onOkButton={onOkButton}\r\n // onCancelButton={onCancelButton}\r\n // widget={widgetToEdit}\r\n // />\r\n // </Dialog>\r\n // );\r\n // }\r\n // function addPanel(newWidget: ReactWidgetPM) {\r\n\r\n // let newWidgetPosition = EvaluateNewWidgetPosition();\r\n\r\n // const widgetComponent = widgetComponents.find(\r\n // (wc) => wc.type === newWidget.TypeCode\r\n // );\r\n\r\n // const randomIndex = getRandomInt(100, 999);\r\n // const newPanel = {\r\n // i: \"\" + randomIndex,\r\n // x: newWidgetPosition.x,\r\n // y: newWidgetPosition.y,\r\n // w: newWidgetWidth,\r\n // h: 5,\r\n // minH: 5,\r\n // minW: 3,\r\n // };\r\n\r\n // widgets.push({\r\n // i: \"\" + randomIndex,\r\n // title: newWidget.Title,\r\n // component: widgetComponent?.component,\r\n // ...newWidget,\r\n // });\r\n // setLayouts({ lg: layouts[\"lg\"].concat(newPanel) });\r\n // setWidgets(widgets);\r\n\r\n // };\r\n\r\n // function EvaluateNewWidgetPosition() {\r\n // let widgetYPosition = 0;\r\n // let widgetXPosition = 0;\r\n // let layout: { x: number, y: number, w: number }[] = layouts[\"lg\"];\r\n // const maxY = layout.reduce((max, widget) => {\r\n // if (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 };\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 };\r\n // }\r\n // function onOkButton(data: any) {\r\n // setWidgetToEdit(null);\r\n // toggleDialog();\r\n // addPanel(data);\r\n // };\r\n // function onCancelButton() {\r\n // setWidgetToEdit(null);\r\n // toggleDialog();\r\n // };\r\n function getRandomInt(min, max) {\r\n return Math.floor(Math.random() * (max - min + 1)) + min;\r\n }\r\n\r\n // useEffect(() => {\r\n\r\n // });\r\n function UpdatePlaceholderDimensions() {\r\n\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 setPlaceholderRows(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 {/* {renderGridWidgetsPlaceholder()} */}\r\n <div className=\"dl-grid dl-grid--bordered\">\r\n {placeholderRowsArray.map((e, i) =>\r\n array12.map((e, i) => (\r\n <div key={i}\r\n style={{\r\n height: layoutGridProps.rowHeight,\r\n }}\r\n ></div>\r\n ))\r\n )}\r\n </div>\r\n\r\n\r\n <ResponsiveReactGridLayout\r\n {...layoutGridProps}\r\n layouts={layouts}\r\n compactType=\"vertical\"\r\n\r\n onWidthChange={() => UpdatePlaceholderDimensions()}\r\n onLayoutChange={(layout, layouts) =>\r\n onLayoutChange(layout, layouts)\r\n }\r\n >\r\n {props.dashboardLayouts.lg.map((widget) =>\r\n\r\n <div key={widget.Layout?.i}>\r\n <WidgetCard\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 { 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:T){\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 { 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}","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\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 [selectedWidget, setSelectedWidget] = useState();\r\n const [isInEditMode, setIsInEditMode] = useState<boolean>(false);\r\n const [WidgetTypes, setWidgetTypes] = useState<WidgetType[]>();\r\n const [layouts, setLayouts] = useState<{ lg: any[] }>({ lg: [] });\r\n\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 }, [])\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}` } as ReactWidgetPM);\r\n\r\n }\r\n const EvaluateNewWidgetPosition = () => {\r\n let widgetYPosition = 0;\r\n let widgetXPosition = 0;\r\n let layout: { x: number, y: number, w: number }[] = layouts[\"lg\"].map(e => e.Layout);\r\n const maxY = layout.reduce((max, widget) => {\r\n if (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 editDesign = () => {\r\n setIsInEditMode(true)\r\n dashboardMoreButtonToggle?.current?.hide();\r\n console.log(WidgetTypes)\r\n setBeforEditDashbord(currentDashbord);\r\n }\r\n const save = () => {\r\n setIsInEditMode(false)\r\n\r\n props.onSaveDashboard(currentDashbord)\r\n }\r\n\r\n const cancelSave = () => {\r\n setIsInEditMode(false)\r\n props.dataBinding.onGetDashboard.next(beforEditDashbord);\r\n }\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 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\r\n currentDashbord?.Widgets.forEach(widget => {\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 });\r\n }\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={editDesign}>Edit Design</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-text\"\r\n onClick={cancelSave}\r\n />\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 />\r\n\r\n <div style={{ width: '192px', marginLeft: '15px' }}>\r\n <Dropdown\r\n value={selectedWidget}\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 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\nfunction uuidv4(): any {\r\n throw new Error('Function not implemented.');\r\n}\r\n"],"names":["Tools","GetLogitudeURL","logitude_url","location","href","replace","indexOf","urlArr","split","url","substring","lastIndexOf","length","ApexChart","props","lineOptoins","series","name","data","options","chart","height","type","zoom","enabled","dataLabels","stroke","curve","title","text","align","grid","row","colors","opacity","xaxis","categories","barOptoins","plotOptions","bar","horizontal","position","offsetX","style","fontSize","show","width","tooltip","shared","intersect","pieOptoins","labels","donutOptoins","responsive","breakpoint","legend","offsetY","getChartOptions","widget","TypeCode","args","React","ReactApexChart","WidgetCard","state","moreBtnToggle","useRef","useState","loading","setLoading","useEffect","setTimeout","console","log","el","className","key","i","Title","Button","icon","onClick","e","current","toggle","OverlayPanel","ref","editBtnClicked","deleteBtnClicked","ResponsiveReactGridLayout","WidthProvider","Responsive","DashboardDesigner","createLayout","layout","lg","dashboardLayouts","map","w","Layout","array12","Array","from","fill","savedWidgets","getFromStorage","minimumPlaceholderRowsCount","layouts","setLayouts","placeholderRowsArray","setplaceholderRowsArray","showMsg","setShowMsg","undefined","dateFilter","widgets","setWidgets","placeholderRows","setPlaceholderRows","onLayoutChange","UpdatePlaceholderDimensions","deletePanel","id","itemIndex","findIndex","d","splice","_","reject","SaveGrid","saveToStorage","editWidget","openEditWidget","value","window","localStorage","setItem","JSON","stringify","getItem","parse","gridLayout","document","getElementsByClassName","gridElementHeight","clientHeight","newPlaceholderRows","Math","floor","layoutGridProps","rowHeight","compactType","onWidthChange","cols","md","sm","xs","xxs","useCSSTransforms","ApiServices","_apiUrl","getByFilters","api","filters","token","getTokenFromStorage","apiURL","ConcatFiltersToURL","axios","get","headers","post","date","urlparameters","mykeys","Object","keys","addtionalFiltersValues","propName","propValue","ignoreFilter","concat","encodeURIComponent","DashBoardService","_ApiServices","getDataByFilters","tableName","add","WidgetTypeListService","getAll","Dashboard","newWidgetWidth","newWidgetHeight","dashbords","setDashbords","currentDashbord","setCurrentDashbord","beforEditDashbord","setBeforEditDashbord","selectedWidget","isInEditMode","setIsInEditMode","WidgetTypes","setWidgetTypes","dashboardMoreButtonToggle","createRef","dashboardService","widgetTypeListService","getWidgetTypes","dataBinding","onGetDashboard","subscribe","applyLayouts","onGetAllDashboards","then","EditDashBoard","openAddEditDashboard","hide","addWidget","widgetCode","EvaluateNewWidgetPosition","openAddEditWidget","StartPotistion","x","y","EndPosition","h","widgetYPosition","widgetXPosition","maxY","reduce","max","widgetsRow","filter","lastWidgetStartXPosition","apply","a","lastWidget","find","lastWidgetEndXPosition","availableHorizontalSlots","editDesign","save","onSaveDashboard","cancelSave","next","changeDashboard","event","Id","dasboard","onChangeDashboard","dashbord","Widgets","uuidv4","minH","minW","push","updateWidgets","layoutsDic","forEach","sizeType","Name","Ripple","Dropdown","optionValue","optionLabel","onChange","placeholder","optionDisabled","option","Disabled","scrollHeight","label","form","autoFocus","marginLeft","Error"],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sources":["../src/services/tools.ts","../src/features/Dashboard/ChartsComponents/ApexChart.tsx","../src/features/Dashboard/WidgetCard.tsx","../src/features/Dashboard/DashboardDesigner.tsx","../src/services/ApiServices.ts","../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 React, { useEffect, useRef } from \"react\";\r\nimport ReactApexChart from \"react-apexcharts\";\r\nimport { ReactWidgetPM } from \"../../../types/widget\";\r\n\r\ntype ApexChartProps = {\r\n widget: ReactWidgetPM|null\r\n};\r\nconst ApexChart = (props: ApexChartProps) => {\r\n\r\n const lineOptoins = () => {\r\n\r\n return {\r\n\r\n series: [{\r\n name: \"Desktops\",\r\n data: [10, 41, 35, 51, 49, 62, 69, 91, 148]\r\n }],\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: ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep'],\r\n }\r\n },\r\n\r\n\r\n };\r\n }\r\n const barOptoins = () => {\r\n\r\n return {\r\n series: [{\r\n data: [44, 55, 41, 64, 22, 43, 21]\r\n }, {\r\n data: [53, 32, 33, 52, 13, 44, 32]\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: [2001, 2002, 2003, 2004, 2005, 2006, 2007],\r\n },\r\n },\r\n\r\n\r\n };\r\n }\r\n const pieOptoins = (): ApexChartArgs => {\r\n\r\n return {\r\n\r\n series: [44, 55, 13, 43, 22],\r\n options: {\r\n chart: {\r\n type: 'pie',\r\n },\r\n labels: ['Team A', 'Team B', 'Team C', 'Team D', 'Team E'],\r\n \r\n },\r\n \r\n\r\n\r\n };\r\n }\r\n const donutOptoins = (): ApexChartArgs => {\r\n\r\n return {\r\n\r\n series: [44, 55, 13, 33],\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 },\r\n\r\n\r\n };\r\n }\r\n const getChartOptions = () => {\r\n switch (props.widget?.TypeCode) {\r\n case 'bar':\r\n return barOptoins();\r\n break;\r\n case 'line':\r\n return lineOptoins();\r\n break;\r\n case 'pie':\r\n return pieOptoins();\r\n break;\r\n case 'donut':\r\n return donutOptoins();\r\n break;\r\n default:\r\n break;\r\n }\r\n return barOptoins();\r\n };\r\n const args = getChartOptions();\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}\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 },200);\r\n },[])\r\n\r\n const widgetComponents: any[] = [\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 return (\r\n <div className=\"panel\" key={props.el.i}>\r\n <header>\r\n <h1>{props.widget?.Title || \"not set\"}</h1>\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\r\n <OverlayPanel ref={moreBtnToggle} className=\"buttons-overlay\">\r\n <div className=\"buttons-list\">\r\n <div onClick={() => props.editBtnClicked(props.widget)} > 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\n\r\nconst ResponsiveReactGridLayout = WidthProvider(Responsive);\r\nconst newWidgetWidth = 3;\r\n\r\ntype DashboardDesignerProps = {\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 const createLayout = (): Layouts => {\r\n var layout = { lg: props.dashboardLayouts.lg.map(w => w.Layout as Layout) };\r\n return layout;\r\n }\r\n\r\n const array12 = Array.from({ length: 12 }).fill(null);\r\n const minimumPlaceholderRowsCount = 12;\r\n const layouts = useRef<Layouts>(createLayout() || { lg: [] });\r\n const [placeholderRowsArray, setplaceholderRowsArray] = useState(Array.from({ length: minimumPlaceholderRowsCount }).fill(null));\r\n const [showMsg, setShowMsg] = useState(false);\r\n const [dateFilter, setDateFilter] = useState<Date | Date[] | undefined>(undefined);\r\n const [displayDialog, setDisplayDialog] = useState(false);\r\n const [dashboardTitle, setDashboardTitle] = useState(\"\");\r\n const [widgets, setWidgets] = useState<{ lg: ReactWidgetPM[] }>({ lg: [] });\r\n const [placeholderRows, setPlaceholderRows] = useState(minimumPlaceholderRowsCount);\r\n\r\n\r\n useEffect(() => {\r\n\r\n console.log('useEffect setLayouts')\r\n layouts.current = createLayout();\r\n setWidgets(props.dashboardLayouts);\r\n }, [props.dashboardLayouts]);\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 layouts.current = 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.current.lg.filter(e => e.i != id) }\r\n layouts.current = newLayouts;\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 props.openEditWidget(widget);\r\n };\r\n\r\n\r\n function UpdatePlaceholderDimensions() {\r\n\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 setPlaceholderRows(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 {/* {renderGridWidgetsPlaceholder()} */}\r\n <div className=\"dl-grid dl-grid--bordered\">\r\n {placeholderRowsArray.map((e, i) =>\r\n array12.map((e, i) => (\r\n <div key={i}\r\n style={{\r\n height: layoutGridProps.rowHeight,\r\n }}\r\n ></div>\r\n ))\r\n )}\r\n </div>\r\n\r\n\r\n <ResponsiveReactGridLayout\r\n {...layoutGridProps}\r\n layouts={layouts.current}\r\n compactType=\"vertical\"\r\n\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 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 { 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:T){\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 { 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\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 [selectedWidget, setSelectedWidget] = useState();\r\n const [isInEditMode, setIsInEditMode] = useState<boolean>(false);\r\n const [WidgetTypes, setWidgetTypes] = useState<WidgetType[]>();\r\n const [layouts, setLayouts] = useState<{ lg: any[] }>({ lg: [] });\r\n\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 }, [])\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}` } as ReactWidgetPM);\r\n\r\n }\r\n const EvaluateNewWidgetPosition = () => {\r\n let widgetYPosition = 0;\r\n let widgetXPosition = 0;\r\n let layout: { x: number, y: number, w: number }[] = layouts[\"lg\"].map(e => e.Layout);\r\n const maxY = layout.reduce((max, widget) => {\r\n if (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 editDesign = () => {\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 }\r\n\r\n const cancelSave = () => {\r\n setIsInEditMode(false)\r\n props.dataBinding.onGetDashboard.next(beforEditDashbord);\r\n }\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 }\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={editDesign}>Edit Design</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-text\"\r\n onClick={cancelSave}\r\n />\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 />\r\n\r\n <div style={{ width: '192px', marginLeft: '15px' }}>\r\n <Dropdown\r\n value={selectedWidget}\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 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","ApexChart","props","lineOptoins","series","name","data","options","chart","height","type","zoom","enabled","dataLabels","stroke","curve","title","text","align","grid","row","colors","opacity","xaxis","categories","barOptoins","plotOptions","bar","horizontal","position","offsetX","style","fontSize","show","width","tooltip","shared","intersect","pieOptoins","labels","donutOptoins","responsive","breakpoint","legend","offsetY","getChartOptions","widget","TypeCode","args","React","ReactApexChart","WidgetCard","state","moreBtnToggle","useRef","useState","loading","setLoading","useEffect","setTimeout","className","key","el","i","Title","Button","icon","onClick","e","current","toggle","OverlayPanel","ref","editBtnClicked","deleteBtnClicked","ResponsiveReactGridLayout","WidthProvider","Responsive","DashboardDesigner","createLayout","layout","lg","dashboardLayouts","map","w","Layout","array12","Array","from","fill","minimumPlaceholderRowsCount","layouts","placeholderRowsArray","setplaceholderRowsArray","undefined","dateFilter","widgets","setWidgets","placeholderRows","setPlaceholderRows","console","log","onLayoutChange","changedLayouts","UpdatePlaceholderDimensions","deletePanel","id","newLayouts","filter","newWidgets","editWidget","openEditWidget","gridLayout","document","getElementsByClassName","gridElementHeight","clientHeight","newPlaceholderRows","Math","floor","layoutGridProps","rowHeight","compactType","onWidthChange","cols","md","sm","xs","xxs","useCSSTransforms","ApiServices","_apiUrl","getByFilters","api","filters","token","getTokenFromStorage","apiURL","ConcatFiltersToURL","axios","get","headers","post","date","window","localStorage","getItem","urlparameters","mykeys","Object","keys","addtionalFiltersValues","propName","propValue","ignoreFilter","concat","encodeURIComponent","JSON","stringify","DashBoardService","_ApiServices","getDataByFilters","tableName","add","WidgetTypeListService","getAll","deepClone","obj","parse","Dashboard","newWidgetWidth","newWidgetHeight","dashbords","setDashbords","currentDashbord","setCurrentDashbord","beforEditDashbord","setBeforEditDashbord","selectedWidget","isInEditMode","setIsInEditMode","WidgetTypes","setWidgetTypes","setLayouts","dashboardMoreButtonToggle","createRef","dashboardService","widgetTypeListService","getWidgetTypes","dataBinding","onGetDashboard","subscribe","applyLayouts","onGetAllDashboards","setItem","then","EditDashBoard","openAddEditDashboard","hide","addWidget","widgetCode","EvaluateNewWidgetPosition","openAddEditWidget","StartPotistion","x","y","EndPosition","h","widgetYPosition","widgetXPosition","maxY","reduce","max","widgetsRow","d","lastWidgetStartXPosition","apply","a","lastWidget","find","lastWidgetEndXPosition","availableHorizontalSlots","editDesign","save","onSaveDashboard","cancelSave","next","changeDashboard","event","value","Id","dasboard","onChangeDashboard","dashbord","Widgets","uuidv4","minH","minW","push","updateWidgets","layoutsDic","forEach","sizeType","Name","Ripple","Dropdown","optionValue","optionLabel","onChange","placeholder","optionDisabled","option","Disabled","scrollHeight","label","form","autoFocus","marginLeft"],"mappings":"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"}
@@ -1,12 +1,12 @@
1
1
  import React__default, { useRef, useState, useEffect, createRef, createElement } from 'react';
2
2
  import { Button } from 'primereact/button';
3
3
  import { WidthProvider, Responsive } from 'react-grid-layout';
4
- import _ from 'lodash';
5
4
  import ReactApexChart from 'react-apexcharts';
6
5
  import axios from 'axios';
7
6
  import { OverlayPanel } from 'primereact/overlaypanel';
8
7
  import { Dropdown } from 'primereact/dropdown';
9
8
  import { Ripple } from 'primereact/ripple';
9
+ import { v4 } from 'uuid';
10
10
 
11
11
  var Tools = /*#__PURE__*/function () {
12
12
  function Tools() {}
@@ -200,7 +200,6 @@ var WidgetCard = function WidgetCard(props, state) {
200
200
  setLoading(false);
201
201
  }, 200);
202
202
  }, []);
203
- console.log('WidgetCard', props.el);
204
203
  return React__default.createElement("div", {
205
204
  className: "panel",
206
205
  key: props.el.i
@@ -223,7 +222,9 @@ var WidgetCard = function WidgetCard(props, state) {
223
222
  }
224
223
  }, " Edit "), React__default.createElement("div", {
225
224
  onClick: function onClick() {
226
- return props.deleteBtnClicked(props.el.i);
225
+ var _props$widget2;
226
+
227
+ return props.deleteBtnClicked((_props$widget2 = props.widget) === null || _props$widget2 === void 0 ? void 0 : _props$widget2.key);
227
228
  }
228
229
  }, "Remove")))), React__default.createElement("div", {
229
230
  className: "dl-dashboard-widget"
@@ -247,87 +248,69 @@ var DashboardDesigner = function DashboardDesigner(props) {
247
248
  var array12 = Array.from({
248
249
  length: 12
249
250
  }).fill(null);
250
- var savedWidgets = getFromStorage("grid-widgets");
251
251
  var minimumPlaceholderRowsCount = 12;
252
-
253
- var _useState = useState(createLayout() || {
252
+ var layouts = useRef(createLayout() || {
254
253
  lg: []
255
- }),
256
- layouts = _useState[0],
257
- setLayouts = _useState[1];
254
+ });
258
255
 
259
- var _useState2 = useState(Array.from({
256
+ var _useState = useState(Array.from({
260
257
  length: minimumPlaceholderRowsCount
261
258
  }).fill(null)),
262
- placeholderRowsArray = _useState2[0],
263
- setplaceholderRowsArray = _useState2[1];
259
+ placeholderRowsArray = _useState[0],
260
+ setplaceholderRowsArray = _useState[1];
264
261
 
265
- var _useState3 = useState(false),
266
- setShowMsg = _useState3[1];
262
+ var _useState2 = useState(false);
267
263
 
268
- var _useState4 = useState(undefined),
269
- dateFilter = _useState4[0];
264
+ var _useState3 = useState(undefined),
265
+ dateFilter = _useState3[0];
270
266
 
271
- var _useState5 = useState(false);
267
+ var _useState4 = useState(false);
272
268
 
273
- var _useState6 = useState("");
269
+ var _useState5 = useState("");
274
270
 
275
- var _useState7 = useState(savedWidgets || []),
276
- widgets = _useState7[0],
277
- setWidgets = _useState7[1];
271
+ var _useState6 = useState({
272
+ lg: []
273
+ }),
274
+ widgets = _useState6[0],
275
+ setWidgets = _useState6[1];
278
276
 
279
- var _useState8 = useState(minimumPlaceholderRowsCount),
280
- setPlaceholderRows = _useState8[1];
277
+ var _useState7 = useState(minimumPlaceholderRowsCount),
278
+ setPlaceholderRows = _useState7[1];
281
279
 
282
280
  useEffect(function () {
283
281
  console.log('useEffect setLayouts');
284
- setLayouts(createLayout());
282
+ layouts.current = createLayout();
283
+ setWidgets(props.dashboardLayouts);
285
284
  }, [props.dashboardLayouts]);
286
285
 
287
- function _onLayoutChange(layout, layouts) {
286
+ function _onLayoutChange(layout, changedLayouts) {
288
287
  console.log(layout, layouts);
289
- setLayouts(layouts);
288
+ layouts.current = changedLayouts;
290
289
  UpdatePlaceholderDimensions();
291
- props.onLayoutChange(layouts);
290
+ props.onLayoutChange(changedLayouts);
292
291
  }
293
292
 
294
293
  function deletePanel(id) {
295
- var layout = layouts["lg"];
296
- var itemIndex = layout.findIndex(function (d) {
297
- return d.i === id;
298
- });
299
- layout.splice(itemIndex, 1);
300
- setLayouts({
301
- lg: [].concat(layout)
302
- });
303
- setWidgets(_.reject(widgets, {
304
- i: id
305
- }));
306
- SaveGrid();
307
- }
308
-
309
- function SaveGrid() {
310
- saveToStorage("grid-layout", layouts);
311
- saveToStorage("grid-widgets", widgets);
294
+ console.log('deletePanel(id)', id);
295
+ var newLayouts = {
296
+ lg: layouts.current.lg.filter(function (e) {
297
+ return e.i != id;
298
+ })
299
+ };
300
+ layouts.current = newLayouts;
301
+ var newWidgets = {
302
+ lg: widgets.lg.filter(function (e) {
303
+ return e.key != id;
304
+ })
305
+ };
306
+ setWidgets(newWidgets);
307
+ props.onLayoutChange(newLayouts);
312
308
  }
313
309
 
314
310
  function editWidget(widget) {
315
311
  props.openEditWidget(widget);
316
312
  }
317
313
 
318
- function saveToStorage(key, value) {
319
- setShowMsg(true);
320
- setTimeout(function () {
321
- setShowMsg(false);
322
- }, 2000);
323
- window.localStorage.setItem(key, JSON.stringify(value));
324
- }
325
-
326
- function getFromStorage(key) {
327
- var layout = window.localStorage.getItem(key);
328
- return JSON.parse(layout);
329
- }
330
-
331
314
  function UpdatePlaceholderDimensions() {
332
315
  var _gridLayout$;
333
316
 
@@ -362,7 +345,7 @@ var DashboardDesigner = function DashboardDesigner(props) {
362
345
  });
363
346
  });
364
347
  })), React__default.createElement(ResponsiveReactGridLayout, Object.assign({}, layoutGridProps, {
365
- layouts: layouts,
348
+ layouts: layouts.current,
366
349
  compactType: "vertical",
367
350
  onWidthChange: function onWidthChange() {
368
351
  return UpdatePlaceholderDimensions();
@@ -370,7 +353,7 @@ var DashboardDesigner = function DashboardDesigner(props) {
370
353
  onLayoutChange: function onLayoutChange(layout, layouts) {
371
354
  return _onLayoutChange(layout, layouts);
372
355
  }
373
- }), props.dashboardLayouts.lg.map(function (widget) {
356
+ }), widgets.lg.map(function (widget) {
374
357
  var _widget$Layout, _widget$Layout2;
375
358
 
376
359
  return React__default.createElement("div", {
@@ -514,6 +497,10 @@ var WidgetTypeListService = /*#__PURE__*/function () {
514
497
  return WidgetTypeListService;
515
498
  }();
516
499
 
500
+ function deepClone(obj) {
501
+ return JSON.parse(JSON.stringify(obj));
502
+ }
503
+
517
504
  var Dashboard = function Dashboard(props) {
518
505
  var _props$token;
519
506
 
@@ -652,12 +639,12 @@ var Dashboard = function Dashboard(props) {
652
639
 
653
640
  setIsInEditMode(true);
654
641
  dashboardMoreButtonToggle === null || dashboardMoreButtonToggle === void 0 ? void 0 : (_dashboardMoreButtonT2 = dashboardMoreButtonToggle.current) === null || _dashboardMoreButtonT2 === void 0 ? void 0 : _dashboardMoreButtonT2.hide();
655
- console.log(WidgetTypes);
656
- setBeforEditDashbord(currentDashbord);
642
+ setBeforEditDashbord(deepClone(currentDashbord));
657
643
  };
658
644
 
659
645
  var save = function save() {
660
646
  setIsInEditMode(false);
647
+ console.log('onSaveDashboard > ', currentDashbord);
661
648
  props.onSaveDashboard(currentDashbord);
662
649
  };
663
650
 
@@ -681,7 +668,7 @@ var Dashboard = function Dashboard(props) {
681
668
  lg: []
682
669
  };
683
670
  dashbord === null || dashbord === void 0 ? void 0 : dashbord.Widgets.map(function (widget) {
684
- if (widget.Id && widget.Id.length > 0) widget.key = widget.Id;else widget.key = uuidv4();
671
+ if (widget.Id && widget.Id.length > 0) widget.key = widget.Id;else widget.key = v4();
685
672
  widget.Layout = {
686
673
  minH: 5,
687
674
  minW: 3,
@@ -693,6 +680,7 @@ var Dashboard = function Dashboard(props) {
693
680
  };
694
681
  layout.lg.push(widget);
695
682
  });
683
+ console.log('setLayouts -- > ', layout);
696
684
  setLayouts(layout);
697
685
  };
698
686
 
@@ -707,10 +695,20 @@ var Dashboard = function Dashboard(props) {
707
695
  return;
708
696
  }
709
697
  });
698
+ var widgets = [];
710
699
  currentDashbord === null || currentDashbord === void 0 ? void 0 : currentDashbord.Widgets.forEach(function (widget) {
711
- widget.StartPotistion = layoutsDic[widget.key].x + "," + layoutsDic[widget.key].y;
712
- widget.EndPosition = layoutsDic[widget.key].w + "," + layoutsDic[widget.key].h;
700
+ if (layoutsDic[widget.key]) {
701
+ widget.StartPotistion = layoutsDic[widget.key].x + "," + layoutsDic[widget.key].y;
702
+ widget.EndPosition = layoutsDic[widget.key].w + "," + layoutsDic[widget.key].h;
703
+ widgets.push(widget);
704
+ }
713
705
  });
706
+
707
+ if (currentDashbord) {
708
+ currentDashbord.Widgets = widgets;
709
+ }
710
+
711
+ console.log('after update widget', currentDashbord);
714
712
  };
715
713
 
716
714
  return createElement("div", {
@@ -808,9 +806,5 @@ var Dashboard = function Dashboard(props) {
808
806
  })));
809
807
  };
810
808
 
811
- function uuidv4() {
812
- throw new Error('Function not implemented.');
813
- }
814
-
815
809
  export default Dashboard;
816
810
  //# sourceMappingURL=index.modern.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.modern.js","sources":["../src/services/tools.ts","../src/features/Dashboard/ChartsComponents/ApexChart.tsx","../src/features/Dashboard/WidgetCard.tsx","../src/features/Dashboard/DashboardDesigner.tsx","../src/services/ApiServices.ts","../src/services/DashBoardService.ts","../src/services/WidgetTypeListService.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 React, { useEffect, useRef } from \"react\";\r\nimport ReactApexChart from \"react-apexcharts\";\r\nimport { ReactWidgetPM } from \"../../../types/widget\";\r\n\r\ntype ApexChartProps = {\r\n widget: ReactWidgetPM|null\r\n};\r\nconst ApexChart = (props: ApexChartProps) => {\r\n\r\n const lineOptoins = () => {\r\n\r\n return {\r\n\r\n series: [{\r\n name: \"Desktops\",\r\n data: [10, 41, 35, 51, 49, 62, 69, 91, 148]\r\n }],\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: ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep'],\r\n }\r\n },\r\n\r\n\r\n };\r\n }\r\n const barOptoins = () => {\r\n\r\n return {\r\n series: [{\r\n data: [44, 55, 41, 64, 22, 43, 21]\r\n }, {\r\n data: [53, 32, 33, 52, 13, 44, 32]\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: [2001, 2002, 2003, 2004, 2005, 2006, 2007],\r\n },\r\n },\r\n\r\n\r\n };\r\n }\r\n const pieOptoins = (): ApexChartArgs => {\r\n\r\n return {\r\n\r\n series: [44, 55, 13, 43, 22],\r\n options: {\r\n chart: {\r\n type: 'pie',\r\n },\r\n labels: ['Team A', 'Team B', 'Team C', 'Team D', 'Team E'],\r\n \r\n },\r\n \r\n\r\n\r\n };\r\n }\r\n const donutOptoins = (): ApexChartArgs => {\r\n\r\n return {\r\n\r\n series: [44, 55, 13, 33],\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 },\r\n\r\n\r\n };\r\n }\r\n const getChartOptions = () => {\r\n switch (props.widget?.TypeCode) {\r\n case 'bar':\r\n return barOptoins();\r\n break;\r\n case 'line':\r\n return lineOptoins();\r\n break;\r\n case 'pie':\r\n return pieOptoins();\r\n break;\r\n case 'donut':\r\n return donutOptoins();\r\n break;\r\n default:\r\n break;\r\n }\r\n return barOptoins();\r\n };\r\n const args = getChartOptions();\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}\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 },200);\r\n },[])\r\n\r\n const widgetComponents: any[] = [\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 console.log('WidgetCard',props.el)\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 <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\r\n <OverlayPanel ref={moreBtnToggle} className=\"buttons-overlay\">\r\n <div className=\"buttons-list\">\r\n <div onClick={() => props.editBtnClicked(props.widget)} > Edit </div>\r\n <div onClick={() => props.deleteBtnClicked(props.el.i)} >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\n\r\nconst ResponsiveReactGridLayout = WidthProvider(Responsive);\r\nconst newWidgetWidth = 3;\r\n\r\ntype DashboardDesignerProps = {\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 // const [widgetButtonToggle, setWidgetButtonToggle] = useState(createRef<OverlayPanel>());\r\n // const [addWidgetButtonToggle, setAddWidgetButtonToggle] = useState(createRef<OverlayPanel>());\r\n // const [widgetComponents, setWidgetComponents] = useState([\r\n // { type: \"Bar\", component: BarChartComponent },\r\n // { type: \"Col\", component: ColumnChartComponent },\r\n // { type: \"Pie\", component: PieChartComponent },\r\n // { type: \"Are\", component: AreaChartComponent },\r\n // ]);\r\n const createLayout = ():Layouts => {\r\n var layout = { lg:props.dashboardLayouts.lg.map(w=>w.Layout as Layout)};\r\n return layout;\r\n }\r\n\r\n const array12 = Array.from({ length: 12 }).fill(null);\r\n var savedWidgets = getFromStorage(\"grid-widgets\");\r\n const minimumPlaceholderRowsCount = 12;\r\n const [layouts, setLayouts] = useState<Layouts>( createLayout() || { lg: [] });\r\n const [placeholderRowsArray, setplaceholderRowsArray] = useState(Array.from({ length: minimumPlaceholderRowsCount }).fill(null));\r\n const [showMsg, setShowMsg] = useState(false);\r\n const [dateFilter, setDateFilter] = useState<Date | Date[] | undefined>(undefined);\r\n const [displayDialog, setDisplayDialog] = useState(false);\r\n const [dashboardTitle, setDashboardTitle] = useState(\"\");\r\n const [widgets, setWidgets] = useState(savedWidgets || []);\r\n const [placeholderRows, setPlaceholderRows] = useState(minimumPlaceholderRowsCount);\r\n\r\n // const [widgetToEdit, setWidgetToEdit] = useState<Widget | null>(null);\r\n // const renderPageHeader = () => {\r\n // return (\r\n\r\n // <div className=\"dl-heder-row\">\r\n // {/* <Calendar\r\n // value={dateFilter}\r\n // showIcon={true}\r\n // onChange={(e) => setDateFilter(e.value)}\r\n // placeholder=\"filter by date...\"\r\n // ></Calendar> */}\r\n\r\n\r\n\r\n // </div>\r\n\r\n // );\r\n // }\r\n\r\n useEffect(()=>{\r\n\r\n console.log('useEffect setLayouts')\r\n setLayouts(createLayout())\r\n },[props.dashboardLayouts]);\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 renderGridWidgetsPlaceholder() {\r\n // console.log(placeholderRows)\r\n // return (\r\n // <div className=\"dl-grid dl-grid--bordered\">\r\n // {[...Array(placeholderRows)].map((e, i) =>\r\n // [...Array(layoutGridProps.cols.lg)].map((e, i) => (\r\n // <div key={i}\r\n // style={{\r\n // height: layoutGridProps.rowHeight,\r\n // }}\r\n // ></div>\r\n // ))\r\n // )}\r\n // </div>\r\n // );\r\n // }\r\n\r\n function onLayoutChange(layout: any, layouts:Layouts) {\r\n console.log(layout, layouts);\r\n setLayouts(layouts);\r\n UpdatePlaceholderDimensions();\r\n props.onLayoutChange(layouts)\r\n }\r\n function renderWidgetComponent(el: any) {\r\n const widget = FindWidget(el);\r\n\r\n return (\r\n <div key={el.i}>\r\n <WidgetCard\r\n key={el.i}\r\n widget={widget}\r\n el={el}\r\n dateFilter={dateFilter}\r\n editBtnClicked={editWidget}\r\n deleteBtnClicked={deletePanel}\r\n />\r\n </div>\r\n );\r\n }\r\n function deletePanel(id) {\r\n let layout = layouts[\"lg\"];\r\n var itemIndex = layout.findIndex((d) => d.i === id);\r\n layout.splice(itemIndex, 1);\r\n setLayouts({ lg: [...layout] });\r\n setWidgets(_.reject(widgets, { i: id }));\r\n SaveGrid();\r\n };\r\n function SaveGrid() {\r\n saveToStorage(\"grid-layout\", layouts);\r\n saveToStorage(\"grid-widgets\", widgets);\r\n }\r\n function editWidget(widget: ReactWidgetPM) {\r\n props.openEditWidget(widget);\r\n };\r\n function FindWidget(el: any) {\r\n return widgets.find((d) => d.i === el.i);\r\n }\r\n function saveToStorage(key, value) {\r\n setShowMsg(true);\r\n setTimeout(() => {\r\n setShowMsg(false);\r\n }, 2000);\r\n window.localStorage.setItem(key, JSON.stringify(value));\r\n };\r\n function getFromStorage(key) {\r\n const layout: any = window.localStorage.getItem(key);\r\n return JSON.parse(layout);\r\n };\r\n // function toggleDialog() {\r\n // setDisplayDialog(!displayDialog);\r\n // }\r\n // function renderNewWidgetDialog() {\r\n\r\n // return (\r\n // <Dialog\r\n\r\n // header={widgetToEdit ? \"Edit Chart\" : \"New Chart\"}\r\n // visible={displayDialog}\r\n // onHide={toggleDialog}\r\n // breakpoints={{ \"850px\": \"95vw\", \"600px\": \"100vw\" }}\r\n // style={{ width: \"800px\" }}\r\n // >\r\n // <NewWidget\r\n // onOkButton={onOkButton}\r\n // onCancelButton={onCancelButton}\r\n // widget={widgetToEdit}\r\n // />\r\n // </Dialog>\r\n // );\r\n // }\r\n // function addPanel(newWidget: ReactWidgetPM) {\r\n\r\n // let newWidgetPosition = EvaluateNewWidgetPosition();\r\n\r\n // const widgetComponent = widgetComponents.find(\r\n // (wc) => wc.type === newWidget.TypeCode\r\n // );\r\n\r\n // const randomIndex = getRandomInt(100, 999);\r\n // const newPanel = {\r\n // i: \"\" + randomIndex,\r\n // x: newWidgetPosition.x,\r\n // y: newWidgetPosition.y,\r\n // w: newWidgetWidth,\r\n // h: 5,\r\n // minH: 5,\r\n // minW: 3,\r\n // };\r\n\r\n // widgets.push({\r\n // i: \"\" + randomIndex,\r\n // title: newWidget.Title,\r\n // component: widgetComponent?.component,\r\n // ...newWidget,\r\n // });\r\n // setLayouts({ lg: layouts[\"lg\"].concat(newPanel) });\r\n // setWidgets(widgets);\r\n\r\n // };\r\n\r\n // function EvaluateNewWidgetPosition() {\r\n // let widgetYPosition = 0;\r\n // let widgetXPosition = 0;\r\n // let layout: { x: number, y: number, w: number }[] = layouts[\"lg\"];\r\n // const maxY = layout.reduce((max, widget) => {\r\n // if (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 };\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 };\r\n // }\r\n // function onOkButton(data: any) {\r\n // setWidgetToEdit(null);\r\n // toggleDialog();\r\n // addPanel(data);\r\n // };\r\n // function onCancelButton() {\r\n // setWidgetToEdit(null);\r\n // toggleDialog();\r\n // };\r\n function getRandomInt(min, max) {\r\n return Math.floor(Math.random() * (max - min + 1)) + min;\r\n }\r\n\r\n // useEffect(() => {\r\n\r\n // });\r\n function UpdatePlaceholderDimensions() {\r\n\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 setPlaceholderRows(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 {/* {renderGridWidgetsPlaceholder()} */}\r\n <div className=\"dl-grid dl-grid--bordered\">\r\n {placeholderRowsArray.map((e, i) =>\r\n array12.map((e, i) => (\r\n <div key={i}\r\n style={{\r\n height: layoutGridProps.rowHeight,\r\n }}\r\n ></div>\r\n ))\r\n )}\r\n </div>\r\n\r\n\r\n <ResponsiveReactGridLayout\r\n {...layoutGridProps}\r\n layouts={layouts}\r\n compactType=\"vertical\"\r\n\r\n onWidthChange={() => UpdatePlaceholderDimensions()}\r\n onLayoutChange={(layout, layouts) =>\r\n onLayoutChange(layout, layouts)\r\n }\r\n >\r\n {props.dashboardLayouts.lg.map((widget) =>\r\n\r\n <div key={widget.Layout?.i}>\r\n <WidgetCard\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 { 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:T){\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 { 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}","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\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 [selectedWidget, setSelectedWidget] = useState();\r\n const [isInEditMode, setIsInEditMode] = useState<boolean>(false);\r\n const [WidgetTypes, setWidgetTypes] = useState<WidgetType[]>();\r\n const [layouts, setLayouts] = useState<{ lg: any[] }>({ lg: [] });\r\n\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 }, [])\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}` } as ReactWidgetPM);\r\n\r\n }\r\n const EvaluateNewWidgetPosition = () => {\r\n let widgetYPosition = 0;\r\n let widgetXPosition = 0;\r\n let layout: { x: number, y: number, w: number }[] = layouts[\"lg\"].map(e => e.Layout);\r\n const maxY = layout.reduce((max, widget) => {\r\n if (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 editDesign = () => {\r\n setIsInEditMode(true)\r\n dashboardMoreButtonToggle?.current?.hide();\r\n console.log(WidgetTypes)\r\n setBeforEditDashbord(currentDashbord);\r\n }\r\n const save = () => {\r\n setIsInEditMode(false)\r\n\r\n props.onSaveDashboard(currentDashbord)\r\n }\r\n\r\n const cancelSave = () => {\r\n setIsInEditMode(false)\r\n props.dataBinding.onGetDashboard.next(beforEditDashbord);\r\n }\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 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\r\n currentDashbord?.Widgets.forEach(widget => {\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 });\r\n }\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={editDesign}>Edit Design</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-text\"\r\n onClick={cancelSave}\r\n />\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 />\r\n\r\n <div style={{ width: '192px', marginLeft: '15px' }}>\r\n <Dropdown\r\n value={selectedWidget}\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 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\nfunction uuidv4(): any {\r\n throw new Error('Function not implemented.');\r\n}\r\n"],"names":["Tools","GetLogitudeURL","logitude_url","location","href","replace","indexOf","urlArr","split","url","substring","lastIndexOf","length","ApexChart","props","lineOptoins","series","name","data","options","chart","height","type","zoom","enabled","dataLabels","stroke","curve","title","text","align","grid","row","colors","opacity","xaxis","categories","barOptoins","plotOptions","bar","horizontal","position","offsetX","style","fontSize","show","width","tooltip","shared","intersect","pieOptoins","labels","donutOptoins","responsive","breakpoint","legend","offsetY","getChartOptions","widget","TypeCode","args","React","ReactApexChart","WidgetCard","state","moreBtnToggle","useRef","useState","loading","setLoading","useEffect","setTimeout","console","log","el","className","key","i","Title","Button","icon","onClick","e","current","toggle","OverlayPanel","ref","editBtnClicked","deleteBtnClicked","ResponsiveReactGridLayout","WidthProvider","Responsive","DashboardDesigner","createLayout","layout","lg","dashboardLayouts","map","w","Layout","array12","Array","from","fill","savedWidgets","getFromStorage","minimumPlaceholderRowsCount","layouts","setLayouts","placeholderRowsArray","setplaceholderRowsArray","showMsg","setShowMsg","undefined","dateFilter","widgets","setWidgets","placeholderRows","setPlaceholderRows","onLayoutChange","UpdatePlaceholderDimensions","deletePanel","id","itemIndex","findIndex","d","splice","_","reject","SaveGrid","saveToStorage","editWidget","openEditWidget","value","window","localStorage","setItem","JSON","stringify","getItem","parse","gridLayout","document","getElementsByClassName","gridElementHeight","clientHeight","newPlaceholderRows","Math","floor","layoutGridProps","rowHeight","compactType","onWidthChange","cols","md","sm","xs","xxs","useCSSTransforms","ApiServices","_apiUrl","getByFilters","api","filters","token","getTokenFromStorage","apiURL","ConcatFiltersToURL","axios","get","headers","post","date","urlparameters","mykeys","Object","keys","addtionalFiltersValues","propName","propValue","ignoreFilter","concat","encodeURIComponent","DashBoardService","_ApiServices","getDataByFilters","tableName","add","WidgetTypeListService","getAll","Dashboard","newWidgetWidth","newWidgetHeight","dashbords","setDashbords","currentDashbord","setCurrentDashbord","beforEditDashbord","setBeforEditDashbord","selectedWidget","isInEditMode","setIsInEditMode","WidgetTypes","setWidgetTypes","dashboardMoreButtonToggle","createRef","dashboardService","widgetTypeListService","getWidgetTypes","dataBinding","onGetDashboard","subscribe","applyLayouts","onGetAllDashboards","then","EditDashBoard","openAddEditDashboard","hide","addWidget","widgetCode","EvaluateNewWidgetPosition","openAddEditWidget","StartPotistion","x","y","EndPosition","h","widgetYPosition","widgetXPosition","maxY","reduce","max","widgetsRow","filter","lastWidgetStartXPosition","apply","a","lastWidget","find","lastWidgetEndXPosition","availableHorizontalSlots","editDesign","save","onSaveDashboard","cancelSave","next","changeDashboard","event","Id","dasboard","onChangeDashboard","dashbord","Widgets","uuidv4","minH","minW","push","updateWidgets","layoutsDic","forEach","sizeType","Name","Ripple","Dropdown","optionValue","optionLabel","onChange","placeholder","optionDisabled","option","Disabled","scrollHeight","label","form","autoFocus","marginLeft","Error"],"mappings":"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"}
1
+ {"version":3,"file":"index.modern.js","sources":["../src/services/tools.ts","../src/features/Dashboard/ChartsComponents/ApexChart.tsx","../src/features/Dashboard/WidgetCard.tsx","../src/features/Dashboard/DashboardDesigner.tsx","../src/services/ApiServices.ts","../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 React, { useEffect, useRef } from \"react\";\r\nimport ReactApexChart from \"react-apexcharts\";\r\nimport { ReactWidgetPM } from \"../../../types/widget\";\r\n\r\ntype ApexChartProps = {\r\n widget: ReactWidgetPM|null\r\n};\r\nconst ApexChart = (props: ApexChartProps) => {\r\n\r\n const lineOptoins = () => {\r\n\r\n return {\r\n\r\n series: [{\r\n name: \"Desktops\",\r\n data: [10, 41, 35, 51, 49, 62, 69, 91, 148]\r\n }],\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: ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep'],\r\n }\r\n },\r\n\r\n\r\n };\r\n }\r\n const barOptoins = () => {\r\n\r\n return {\r\n series: [{\r\n data: [44, 55, 41, 64, 22, 43, 21]\r\n }, {\r\n data: [53, 32, 33, 52, 13, 44, 32]\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: [2001, 2002, 2003, 2004, 2005, 2006, 2007],\r\n },\r\n },\r\n\r\n\r\n };\r\n }\r\n const pieOptoins = (): ApexChartArgs => {\r\n\r\n return {\r\n\r\n series: [44, 55, 13, 43, 22],\r\n options: {\r\n chart: {\r\n type: 'pie',\r\n },\r\n labels: ['Team A', 'Team B', 'Team C', 'Team D', 'Team E'],\r\n \r\n },\r\n \r\n\r\n\r\n };\r\n }\r\n const donutOptoins = (): ApexChartArgs => {\r\n\r\n return {\r\n\r\n series: [44, 55, 13, 33],\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 },\r\n\r\n\r\n };\r\n }\r\n const getChartOptions = () => {\r\n switch (props.widget?.TypeCode) {\r\n case 'bar':\r\n return barOptoins();\r\n break;\r\n case 'line':\r\n return lineOptoins();\r\n break;\r\n case 'pie':\r\n return pieOptoins();\r\n break;\r\n case 'donut':\r\n return donutOptoins();\r\n break;\r\n default:\r\n break;\r\n }\r\n return barOptoins();\r\n };\r\n const args = getChartOptions();\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}\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 },200);\r\n },[])\r\n\r\n const widgetComponents: any[] = [\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 return (\r\n <div className=\"panel\" key={props.el.i}>\r\n <header>\r\n <h1>{props.widget?.Title || \"not set\"}</h1>\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\r\n <OverlayPanel ref={moreBtnToggle} className=\"buttons-overlay\">\r\n <div className=\"buttons-list\">\r\n <div onClick={() => props.editBtnClicked(props.widget)} > 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\n\r\nconst ResponsiveReactGridLayout = WidthProvider(Responsive);\r\nconst newWidgetWidth = 3;\r\n\r\ntype DashboardDesignerProps = {\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 const createLayout = (): Layouts => {\r\n var layout = { lg: props.dashboardLayouts.lg.map(w => w.Layout as Layout) };\r\n return layout;\r\n }\r\n\r\n const array12 = Array.from({ length: 12 }).fill(null);\r\n const minimumPlaceholderRowsCount = 12;\r\n const layouts = useRef<Layouts>(createLayout() || { lg: [] });\r\n const [placeholderRowsArray, setplaceholderRowsArray] = useState(Array.from({ length: minimumPlaceholderRowsCount }).fill(null));\r\n const [showMsg, setShowMsg] = useState(false);\r\n const [dateFilter, setDateFilter] = useState<Date | Date[] | undefined>(undefined);\r\n const [displayDialog, setDisplayDialog] = useState(false);\r\n const [dashboardTitle, setDashboardTitle] = useState(\"\");\r\n const [widgets, setWidgets] = useState<{ lg: ReactWidgetPM[] }>({ lg: [] });\r\n const [placeholderRows, setPlaceholderRows] = useState(minimumPlaceholderRowsCount);\r\n\r\n\r\n useEffect(() => {\r\n\r\n console.log('useEffect setLayouts')\r\n layouts.current = createLayout();\r\n setWidgets(props.dashboardLayouts);\r\n }, [props.dashboardLayouts]);\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 layouts.current = 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.current.lg.filter(e => e.i != id) }\r\n layouts.current = newLayouts;\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 props.openEditWidget(widget);\r\n };\r\n\r\n\r\n function UpdatePlaceholderDimensions() {\r\n\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 setPlaceholderRows(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 {/* {renderGridWidgetsPlaceholder()} */}\r\n <div className=\"dl-grid dl-grid--bordered\">\r\n {placeholderRowsArray.map((e, i) =>\r\n array12.map((e, i) => (\r\n <div key={i}\r\n style={{\r\n height: layoutGridProps.rowHeight,\r\n }}\r\n ></div>\r\n ))\r\n )}\r\n </div>\r\n\r\n\r\n <ResponsiveReactGridLayout\r\n {...layoutGridProps}\r\n layouts={layouts.current}\r\n compactType=\"vertical\"\r\n\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 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 { 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:T){\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 { 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\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 [selectedWidget, setSelectedWidget] = useState();\r\n const [isInEditMode, setIsInEditMode] = useState<boolean>(false);\r\n const [WidgetTypes, setWidgetTypes] = useState<WidgetType[]>();\r\n const [layouts, setLayouts] = useState<{ lg: any[] }>({ lg: [] });\r\n\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 }, [])\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}` } as ReactWidgetPM);\r\n\r\n }\r\n const EvaluateNewWidgetPosition = () => {\r\n let widgetYPosition = 0;\r\n let widgetXPosition = 0;\r\n let layout: { x: number, y: number, w: number }[] = layouts[\"lg\"].map(e => e.Layout);\r\n const maxY = layout.reduce((max, widget) => {\r\n if (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 editDesign = () => {\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 }\r\n\r\n const cancelSave = () => {\r\n setIsInEditMode(false)\r\n props.dataBinding.onGetDashboard.next(beforEditDashbord);\r\n }\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 }\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={editDesign}>Edit Design</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-text\"\r\n onClick={cancelSave}\r\n />\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 />\r\n\r\n <div style={{ width: '192px', marginLeft: '15px' }}>\r\n <Dropdown\r\n value={selectedWidget}\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 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","ApexChart","props","lineOptoins","series","name","data","options","chart","height","type","zoom","enabled","dataLabels","stroke","curve","title","text","align","grid","row","colors","opacity","xaxis","categories","barOptoins","plotOptions","bar","horizontal","position","offsetX","style","fontSize","show","width","tooltip","shared","intersect","pieOptoins","labels","donutOptoins","responsive","breakpoint","legend","offsetY","getChartOptions","widget","TypeCode","args","React","ReactApexChart","WidgetCard","state","moreBtnToggle","useRef","useState","loading","setLoading","useEffect","setTimeout","className","key","el","i","Title","Button","icon","onClick","e","current","toggle","OverlayPanel","ref","editBtnClicked","deleteBtnClicked","ResponsiveReactGridLayout","WidthProvider","Responsive","DashboardDesigner","createLayout","layout","lg","dashboardLayouts","map","w","Layout","array12","Array","from","fill","minimumPlaceholderRowsCount","layouts","placeholderRowsArray","setplaceholderRowsArray","undefined","dateFilter","widgets","setWidgets","placeholderRows","setPlaceholderRows","console","log","onLayoutChange","changedLayouts","UpdatePlaceholderDimensions","deletePanel","id","newLayouts","filter","newWidgets","editWidget","openEditWidget","gridLayout","document","getElementsByClassName","gridElementHeight","clientHeight","newPlaceholderRows","Math","floor","layoutGridProps","rowHeight","compactType","onWidthChange","cols","md","sm","xs","xxs","useCSSTransforms","ApiServices","_apiUrl","getByFilters","api","filters","token","getTokenFromStorage","apiURL","ConcatFiltersToURL","axios","get","headers","post","date","window","localStorage","getItem","urlparameters","mykeys","Object","keys","addtionalFiltersValues","propName","propValue","ignoreFilter","concat","encodeURIComponent","JSON","stringify","DashBoardService","_ApiServices","getDataByFilters","tableName","add","WidgetTypeListService","getAll","deepClone","obj","parse","Dashboard","newWidgetWidth","newWidgetHeight","dashbords","setDashbords","currentDashbord","setCurrentDashbord","beforEditDashbord","setBeforEditDashbord","selectedWidget","isInEditMode","setIsInEditMode","WidgetTypes","setWidgetTypes","setLayouts","dashboardMoreButtonToggle","createRef","dashboardService","widgetTypeListService","getWidgetTypes","dataBinding","onGetDashboard","subscribe","applyLayouts","onGetAllDashboards","setItem","then","EditDashBoard","openAddEditDashboard","hide","addWidget","widgetCode","EvaluateNewWidgetPosition","openAddEditWidget","StartPotistion","x","y","EndPosition","h","widgetYPosition","widgetXPosition","maxY","reduce","max","widgetsRow","d","lastWidgetStartXPosition","apply","a","lastWidget","find","lastWidgetEndXPosition","availableHorizontalSlots","editDesign","save","onSaveDashboard","cancelSave","next","changeDashboard","event","value","Id","dasboard","onChangeDashboard","dashbord","Widgets","uuidv4","minH","minW","push","updateWidgets","layoutsDic","forEach","sizeType","Name","Ripple","Dropdown","optionValue","optionLabel","onChange","placeholder","optionDisabled","option","Disabled","scrollHeight","label","form","autoFocus","marginLeft"],"mappings":";;;;;;;;;;IAAaA,KAAb;EAAA;;EAAA,MACkBC,cADlB,GACW;IAEH,IAAIC,YAAY,GAAGC,QAAQ,CAACC,IAAT,CAAcC,OAAd,CAAsB,YAAtB,EAAoC,EAApC,CAAnB;;IAEA,IAAIF,QAAQ,CAACC,IAAT,CAAcE,OAAd,CAAsB,WAAtB,IAAqC,CAAC,CAA1C,EAA6C;MACzCJ,YAAY,GAAG,uBAAf;KADJ,MAIK;MACD,IAAIK,MAAM,GAAGJ,QAAQ,CAACC,IAAT,CAAcI,KAAd,CAAoB,aAApB,CAAb;MACA,IAAIC,GAAG,GAAGF,MAAM,CAAC,CAAD,CAAhB;MACAE,GAAG,GAAGA,GAAG,CAACJ,OAAJ,CAAYI,GAAG,CAACC,SAAJ,CAAcD,GAAG,CAACE,WAAJ,CAAgB,GAAhB,CAAd,EAAoCF,GAAG,CAACG,MAAxC,CAAZ,EAA6D,EAA7D,CAAN;MACAV,YAAY,GAAGO,GAAf;;;IAGJ,OAAOP,YAAP;GAhBR;;EAAA;AAAA;;ACOA,IAAMW,SAAS,GAAG,SAAZA,SAAY,CAACC,KAAD;;;EAEd,IAAMC,WAAW,GAAG,SAAdA,WAAc;IAEhB,OAAO;MAEHC,MAAM,EAAE,CAAC;QACLC,IAAI,EAAE,UADD;QAELC,IAAI,EAAE,CAAC,EAAD,EAAK,EAAL,EAAS,EAAT,EAAa,EAAb,EAAiB,EAAjB,EAAqB,EAArB,EAAyB,EAAzB,EAA6B,EAA7B,EAAiC,GAAjC;OAFF,CAFL;MAMHC,OAAO,EAAE;QACLC,KAAK,EAAE;UACHC,MAAM,EAAE,GADL;UAEHC,IAAI,EAAE,MAFH;UAGHC,IAAI,EAAE;YACFC,OAAO,EAAE;;SALZ;QAQLC,UAAU,EAAE;UACRD,OAAO,EAAE;SATR;QAWLE,MAAM,EAAE;UACJC,KAAK,EAAE;SAZN;QAcLC,KAAK,EAAE;UACHC,IAAI,EAAE,yBADH;UAEHC,KAAK,EAAE;SAhBN;QAkBLC,IAAI,EAAE;UACFC,GAAG,EAAE;YACDC,MAAM,EAAE,CAAC,SAAD,EAAY,aAAZ,CADP;YAEDC,OAAO,EAAE;;SArBZ;QAwBLC,KAAK,EAAE;UACHC,UAAU,EAAE,CAAC,KAAD,EAAQ,KAAR,EAAe,KAAf,EAAsB,KAAtB,EAA6B,KAA7B,EAAoC,KAApC,EAA2C,KAA3C,EAAkD,KAAlD,EAAyD,KAAzD;;;KA/BxB;GAFJ;;EAwCA,IAAMC,UAAU,GAAG,SAAbA,UAAa;IAEf,OAAO;MACHrB,MAAM,EAAE,CAAC;QACLE,IAAI,EAAE,CAAC,EAAD,EAAK,EAAL,EAAS,EAAT,EAAa,EAAb,EAAiB,EAAjB,EAAqB,EAArB,EAAyB,EAAzB;OADF,EAEL;QACCA,IAAI,EAAE,CAAC,EAAD,EAAK,EAAL,EAAS,EAAT,EAAa,EAAb,EAAiB,EAAjB,EAAqB,EAArB,EAAyB,EAAzB;OAHF,CADL;MAMHC,OAAO,EAAE;QACLC,KAAK,EAAE;UACHE,IAAI,EAAE,KADH;UAEHD,MAAM,EAAE;SAHP;QAKLiB,WAAW,EAAE;UACTC,GAAG,EAAE;YACDC,UAAU,EAAE,IADX;YAEDf,UAAU,EAAE;cACRgB,QAAQ,EAAE;;;SATjB;QAaLhB,UAAU,EAAE;UACRD,OAAO,EAAE,IADD;UAERkB,OAAO,EAAE,CAAC,CAFF;UAGRC,KAAK,EAAE;YACHC,QAAQ,EAAE,MADP;YAEHX,MAAM,EAAE,CAAC,MAAD;;SAlBX;QAqBLP,MAAM,EAAE;UACJmB,IAAI,EAAE,IADF;UAEJC,KAAK,EAAE,CAFH;UAGJb,MAAM,EAAE,CAAC,MAAD;SAxBP;QA0BLc,OAAO,EAAE;UACLC,MAAM,EAAE,IADH;UAELC,SAAS,EAAE;SA5BV;QA8BLd,KAAK,EAAE;UACHC,UAAU,EAAE,CAAC,IAAD,EAAO,IAAP,EAAa,IAAb,EAAmB,IAAnB,EAAyB,IAAzB,EAA+B,IAA/B,EAAqC,IAArC;;;KArCxB;GAFJ;;EA8CA,IAAMc,UAAU,GAAG,SAAbA,UAAa;IAEf,OAAO;MAEHlC,MAAM,EAAE,CAAC,EAAD,EAAK,EAAL,EAAS,EAAT,EAAa,EAAb,EAAiB,EAAjB,CAFL;MAGHG,OAAO,EAAE;QACLC,KAAK,EAAE;UACHE,IAAI,EAAE;SAFL;QAIL6B,MAAM,EAAE,CAAC,QAAD,EAAW,QAAX,EAAqB,QAArB,EAA+B,QAA/B,EAAyC,QAAzC;;KAPhB;GAFJ;;EAiBA,IAAMC,YAAY,GAAG,SAAfA,YAAe;IAEjB,OAAO;MAEHpC,MAAM,EAAE,CAAC,EAAD,EAAK,EAAL,EAAS,EAAT,EAAa,EAAb,CAFL;MAGHG,OAAO,EAAE;QACLC,KAAK,EAAE;UACH0B,KAAK,EAAE,GADJ;UAEHxB,IAAI,EAAE;SAHL;QAKLG,UAAU,EAAE;UACRD,OAAO,EAAE;SANR;QAQL6B,UAAU,EAAE,CAAC;UACTC,UAAU,EAAE,GADH;UAETnC,OAAO,EAAE;YACLC,KAAK,EAAE;cACH0B,KAAK,EAAE;aAFN;YAILS,MAAM,EAAE;cACJV,IAAI,EAAE;;;SAPN,CARP;QAmBLU,MAAM,EAAE;UACJd,QAAQ,EAAE,OADN;UAEJe,OAAO,EAAE,CAFL;UAGJnC,MAAM,EAAE;;;KAzBpB;GAFJ;;EAkCA,IAAMoC,eAAe,GAAG,SAAlBA,eAAkB;;;IACpB,yBAAQ3C,KAAK,CAAC4C,MAAd,kDAAQ,cAAcC,QAAtB;MACI,KAAK,KAAL;QACI,OAAOtB,UAAU,EAAjB;;MAEJ,KAAK,MAAL;QACI,OAAOtB,WAAW,EAAlB;;MAEJ,KAAK,KAAL;QACI,OAAOmC,UAAU,EAAjB;;MAEJ,KAAK,OAAL;QACI,OAAOE,YAAY,EAAnB;;;IAKR,OAAOf,UAAU,EAAjB;GAjBJ;;EAmBA,IAAMuB,IAAI,GAAGH,eAAe,EAA5B;EACA,OACII,4BAAA,CAACC,cAAD;IACI3C,OAAO,EAAEyC,IAAF,aAAEA,IAAF,uBAAEA,IAAI,CAAEzC;IACfH,MAAM,EAAE4C,IAAF,aAAEA,IAAF,uBAAEA,IAAI,CAAE5C;IACdM,IAAI,oBAAER,KAAK,CAAC4C,MAAR,mDAAE,eAAcC;IACpBtC,MAAM,EAAE;IACRyB,KAAK,EAAE;GALX,CADJ;AASH,CAxKD;;ACiBA,IAAMiB,UAAU,GAAG,SAAbA,UAAa,CAACjD,KAAD,EAAyBkD,KAAzB;;;EACjB,IAAMC,aAAa,GAAGC,MAAM,CAAe,IAAf,CAA5B;;EACA,gBAA6BC,QAAQ,CAAC,IAAD,CAArC;MAAOC,OAAP;MAAeC,UAAf;;EACAC,SAAS,CAAC;IACRC,UAAU,CAAC;MACTF,UAAU,CAAC,KAAD,CAAV;KADQ,EAEV,GAFU,CAAV;GADO,EAIP,EAJO,CAAT;EAeA,OACIR,4BAAA,MAAA;IAAKW,SAAS,EAAC;IAAQC,GAAG,EAAE3D,KAAK,CAAC4D,EAAN,CAASC;GAArC,EACEd,4BAAA,SAAA,MAAA,EACEA,4BAAA,KAAA,MAAA,EAAK,kBAAA/C,KAAK,CAAC4C,MAAN,gEAAckB,KAAd,KAAuB,SAA5B,CADF,EAEEf,4BAAA,CAACgB,MAAD;IACEC,IAAI,EAAC;IACLN,SAAS,EAAC;IACVO,OAAO,EAAE,iBAACC,CAAD;MAAA;;MAAA,gCAAOf,aAAa,CAACgB,OAArB,0DAAO,sBAAuBC,MAAvB,CAA8BF,CAA9B,CAAP;;GAHX,CAFF,EAQEnB,4BAAA,CAACsB,YAAD;IAAcC,GAAG,EAAEnB;IAAeO,SAAS,EAAC;GAA5C,EACIX,4BAAA,MAAA;IAAKW,SAAS,EAAC;GAAf,EACEX,4BAAA,MAAA;IAAKkB,OAAO,EAAE;MAAA,OAAMjE,KAAK,CAACuE,cAAN,CAAqBvE,KAAK,CAAC4C,MAA3B,CAAN;;GAAd,UAAA,CADF,EAEEG,4BAAA,MAAA;IAAKkB,OAAO,EAAE;MAAA;;MAAA,OAAMjE,KAAK,CAACwE,gBAAN,mBAAuBxE,KAAK,CAAC4C,MAA7B,mDAAuB,eAAce,GAArC,CAAN;;GAAd,UAAA,CAFF,CADJ,CARF,CADF,EAiBEZ,4BAAA,MAAA;IAAKW,SAAS,EAAC;GAAf,EACGJ,OAAO,GAAG,IAAH,GAAUP,4BAAA,CAAChD,SAAD;IAAW6C,MAAM,EAAE5C,KAAK,CAAC4C;GAAzB,CADpB,CAjBF,CADJ;AAuBD,CAzCD;;ACDA,IAAM6B,yBAAyB,GAAGC,aAAa,CAACC,UAAD,CAA/C;AACA;AAOA,IAAMC,iBAAiB,GAAG,SAApBA,iBAAoB,CAAC5E,KAAD;EACxB,IAAM6E,YAAY,GAAG,SAAfA,YAAe;IACnB,IAAIC,MAAM,GAAG;MAAEC,EAAE,EAAE/E,KAAK,CAACgF,gBAAN,CAAuBD,EAAvB,CAA0BE,GAA1B,CAA8B,UAAAC,CAAC;QAAA,OAAIA,CAAC,CAACC,MAAN;OAA/B;KAAnB;IACA,OAAOL,MAAP;GAFF;;EAKA,IAAMM,OAAO,GAAGC,KAAK,CAACC,IAAN,CAAW;IAAExF,MAAM,EAAE;GAArB,EAA2ByF,IAA3B,CAAgC,IAAhC,CAAhB;EACA,IAAMC,2BAA2B,GAAG,EAApC;EACA,IAAMC,OAAO,GAAGrC,MAAM,CAAUyB,YAAY,MAAM;IAAEE,EAAE,EAAE;GAAlC,CAAtB;;EACA,gBAAwD1B,QAAQ,CAACgC,KAAK,CAACC,IAAN,CAAW;IAAExF,MAAM,EAAE0F;GAArB,EAAoDD,IAApD,CAAyD,IAAzD,CAAD,CAAhE;MAAOG,oBAAP;MAA6BC,uBAA7B;;EACA,iBAA8BtC,QAAQ,CAAC,KAAD,CAAtC;;EACA,iBAAoCA,QAAQ,CAA4BuC,SAA5B,CAA5C;MAAOC,UAAP;;EACA,iBAA0CxC,QAAQ,CAAC,KAAD,CAAlD;;EACA,iBAA4CA,QAAQ,CAAC,EAAD,CAApD;;EACA,iBAA8BA,QAAQ,CAA0B;IAAE0B,EAAE,EAAE;GAAhC,CAAtC;MAAOe,OAAP;MAAgBC,UAAhB;;EACA,iBAA8C1C,QAAQ,CAACmC,2BAAD,CAAtD;MAAOQ,AAAiBC,kBAAxB;;EAGAzC,SAAS,CAAC;IAER0C,OAAO,CAACC,GAAR,CAAY,sBAAZ;IACAV,OAAO,CAACtB,OAAR,GAAkBU,YAAY,EAA9B;IACAkB,UAAU,CAAC/F,KAAK,CAACgF,gBAAP,CAAV;GAJO,EAKN,CAAChF,KAAK,CAACgF,gBAAP,CALM,CAAT;;EAcA,SAASoB,eAAT,CAAwBtB,MAAxB,EAAqCuB,cAArC;IACEH,OAAO,CAACC,GAAR,CAAYrB,MAAZ,EAAoBW,OAApB;IACAA,OAAO,CAACtB,OAAR,GAAkBkC,cAAlB;IACAC,2BAA2B;IAC3BtG,KAAK,CAACoG,cAAN,CAAqBC,cAArB;;;EAGF,SAASE,WAAT,CAAqBC,EAArB;IACEN,OAAO,CAACC,GAAR,CAAY,iBAAZ,EAA+BK,EAA/B;IACA,IAAIC,UAAU,GAAG;MAAE1B,EAAE,EAAEU,OAAO,CAACtB,OAAR,CAAgBY,EAAhB,CAAmB2B,MAAnB,CAA0B,UAAAxC,CAAC;QAAA,OAAIA,CAAC,CAACL,CAAF,IAAO2C,EAAX;OAA3B;KAAvB;IACAf,OAAO,CAACtB,OAAR,GAAkBsC,UAAlB;IACA,IAAIE,UAAU,GAAG;MAAE5B,EAAE,EAAEe,OAAO,CAACf,EAAR,CAAW2B,MAAX,CAAkB,UAAAxC,CAAC;QAAA,OAAIA,CAAC,CAACP,GAAF,IAAS6C,EAAb;OAAnB;KAAvB;IACAT,UAAU,CAACY,UAAD,CAAV;IACA3G,KAAK,CAACoG,cAAN,CAAqBK,UAArB;;;EAGF,SAASG,UAAT,CAAoBhE,MAApB;IACE5C,KAAK,CAAC6G,cAAN,CAAqBjE,MAArB;;;EAIF,SAAS0D,2BAAT;;;IAEE,IAAIQ,UAAU,GAAGC,QAAQ,CAACC,sBAAT,CAAgC,mBAAhC,CAAjB;IACA,IAAI,CAACF,UAAL,EACE;IACF,IAAMG,iBAAiB,mBAAGH,UAAU,CAAC,CAAD,CAAb,iDAAG,aAAeI,YAAzC;IAEA,IAAIC,kBAAkB,GAAGC,IAAI,CAACC,KAAL,CAAWJ,iBAAiB,GAAGK,eAAe,CAACC,SAA/C,CAAzB;IACAJ,kBAAkB,GAAGA,kBAAkB,GAAG3B,2BAArB,GAAmDA,2BAAnD,GAAiF2B,kBAAtG;IACAlB,kBAAkB,CAACkB,kBAAD,CAAlB;IACAxB,uBAAuB,CAACN,KAAK,CAACC,IAAN,CAAW;MAAExF,MAAM,EAAEqH;KAArB,EAA2C5B,IAA3C,CAAgD,IAAhD,CAAD,CAAvB;;;EAEF,OAAQxC,4BAAA,MAAA;IAAKW,SAAS,EAAC;GAAf,EACNX,4BAAA,MAAA;IAAKW,SAAS,EAAC;GAAf,EAIEX,4BAAA,MAAA;IAAKW,SAAS,EAAC;GAAf,EACEX,4BAAA,MAAA;IAAKW,SAAS,EAAC;GAAf,EAEEX,4BAAA,MAAA;IAAKW,SAAS,EAAC;GAAf,EACGgC,oBAAoB,CAACT,GAArB,CAAyB,UAACf,CAAD,EAAIL,CAAJ;IAAA,OACxBuB,OAAO,CAACH,GAAR,CAAY,UAACf,CAAD,EAAIL,CAAJ;MAAA,OACVd,4BAAA,MAAA;QAAKY,GAAG,EAAEE;QACRhC,KAAK,EAAE;UACLtB,MAAM,EAAE+G,eAAe,CAACC;;OAF5B,CADU;KAAZ,CADwB;GAAzB,CADH,CAFF,EAeExE,4BAAA,CAAC0B,yBAAD,oBACM6C;IACJ7B,OAAO,EAAEA,OAAO,CAACtB;IACjBqD,WAAW,EAAC;IAEZC,aAAa,EAAE;MAAA,OAAMnB,2BAA2B,EAAjC;;IACfF,cAAc,EAAE,wBAACtB,MAAD,EAASW,OAAT;MAAA,OACdW,eAAc,CAACtB,MAAD,EAASW,OAAT,CADA;;IANlB,EAUGK,OAAO,CAACf,EAAR,CAAWE,GAAX,CAAe,UAACrC,MAAD;IAAA;;IAAA,OAEdG,4BAAA,MAAA;MAAKY,GAAG,oBAAEf,MAAM,CAACuC,MAAT,mDAAE,eAAetB;KAAzB,EACEd,4BAAA,CAACE,UAAD;MACEU,GAAG,qBAAEf,MAAM,CAACuC,MAAT,oDAAE,gBAAetB;MACpBjB,MAAM,EAAEA;MACRgB,EAAE,EAAEhB;MACJiD,UAAU,EAAEA;MACZtB,cAAc,EAAEqC;MAChBpC,gBAAgB,EAAE+B;KANpB,CADF,CAFc;GAAf,CAVH,CAfF,CADF,CAJF,CADM,CAAR;AA4DD,CA7HD;;AAgIA,AAAO,IAAMe,eAAe,GAAG;EAC7BC,SAAS,EAAE,EADkB;EAE7B7D,SAAS,EAAE,QAFkB;EAG7BgE,IAAI,EAAE;IAAE3C,EAAE,EAAE,EAAN;IAAU4C,EAAE,EAAE,CAAd;IAAiBC,EAAE,EAAE,CAArB;IAAwBC,EAAE,EAAE,CAA5B;IAA+BC,GAAG,EAAE;GAHb;EAI7BC,gBAAgB,EAAE;AAJW,CAAxB;;ICzJMC,WAAb;EAEI;IACI,KAAKC,OAAL,GAAe/I,KAAK,CAACC,cAAN,EAAf;;;EAHR;;EAAA,OAKI+I,YALJ,GAKI,sBAAgBC,GAAhB,EAAoBC,OAApB;IAEI,IAAIC,KAAK,GAAW,KAAKC,mBAAL,EAApB;IACN,IAAIC,MAAM,QAAM,KAAKN,OAAX,GAAqBE,GAA/B;IACAI,MAAM,GAAG,KAAKC,kBAAL,CAAwBJ,OAAxB,EAAiCG,MAAjC,CAAT;IAEM,OAAOE,KAAK,CAACC,GAAN,CAAwBH,MAAxB,EAAgC;MAAEI,OAAO,EAAE;QAAE,gBAAgB,kBAAlB;QAAsC,SAASN;;KAA1F,CAAP;GAXR;;EAAA,OAaIK,GAbJ,GAaI,aAAOP,GAAP;IAEI,IAAIE,KAAK,GAAW,KAAKC,mBAAL,EAApB;IACN,IAAIC,MAAM,QAAM,KAAKN,OAAX,GAAqBE,GAA/B;IACM,OAAOM,KAAK,CAACC,GAAN,CAAaH,MAAb,EAAqB;MAAEI,OAAO,EAAE;QAAE,gBAAgB,kBAAlB;QAAsC,SAASN;;KAA/E,CAAP;GAjBR;;EAAA,OAmBIO,IAnBJ,GAmBI,cAAQT,GAAR,EAAYU,IAAZ;IACI,IAAIR,KAAK,GAAW,KAAKC,mBAAL,EAApB;IACN,IAAIC,MAAM,QAAM,KAAKN,OAAX,GAAqBE,GAA/B;IACM,OAAOM,KAAK,CAACG,IAAN,CAAcL,MAAd,EAAqBM,IAArB,EAA2B;MAAEF,OAAO,EAAE;QAAE,gBAAgB,kBAAlB;QAAsC,SAASN;;KAArF,CAAP;GAtBR;;EAAA,OAyBIC,mBAzBJ,GAyBI;IACI,OAAOQ,MAAM,CAACC,YAAP,CAAoBC,OAApB,CAA4B,OAA5B,KAAwC,EAA/C;GA1BR;;EAAA,OA4BYR,kBA5BZ,GA4BY,4BAAmBJ,OAAnB,EAA6Ca,aAA7C;IAEJ,IAAIC,MAAM,GAAGC,MAAM,CAACC,IAAP,CAAYhB,OAAZ,CAAb;IACA,IAAIiB,sBAAsB,GAAkB,IAA5C;;IAEA,KAAK,IAAIxF,CAAT,IAAcqF,MAAd,EAAsB;MAClB,IAAII,QAAQ,GAAGJ,MAAM,CAACrF,CAAD,CAArB;MACA,IAAI0F,SAAS,GAAGnB,OAAO,CAACkB,QAAD,CAAvB;MACA,IAAIE,YAAY,GAAKF,QAAQ,CAAC9J,OAAT,CAAiB,UAAjB,IAA+B,CAA/B,IAAoC+J,SAAS,IAAI,QAAlD,IAA+DD,QAAQ,IAAI,mBAA/F;;MAEA,IAAIL,aAAa,IAAI,GAArB,EAA0B;QACtBA,aAAa,GAAGA,aAAa,CAACQ,MAAd,CAAqB,GAArB,CAAhB;;;MAGJ,IAAI,CAACD,YAAL,EAAmB;QACfD,SAAS,GAAGA,SAAS,GAAGG,kBAAkB,CAACH,SAAD,CAArB,GAAmC,EAAxD;QACAN,aAAa,GAAGA,aAAa,CAACQ,MAAd,CAAqBH,QAAQ,CAACG,MAAT,CAAgB,GAAhB,EAAqBA,MAArB,CAA4BF,SAA5B,CAArB,CAAhB;;;MAGJ,IAAID,QAAQ,IAAI,mBAAZ,IAAmCC,SAAS,CAACzJ,MAAV,GAAmB,CAA1D,EAA6D;QACzDuJ,sBAAsB,GAAGM,IAAI,CAACC,SAAL,CAAeL,SAAf,CAAzB;;;;IAIR,IAAIF,sBAAJ,EAA4B;MACxBJ,aAAa,GAAGA,aAAa,CAACQ,MAAd,CAAqB,qBAArB,EAA4CA,MAA5C,CAAmDJ,sBAAnD,CAAhB;;;IAEJ,OAAOJ,aAAP;GAvDR;;EAAA;AAAA;;ICCaY,gBAAb;EAGI;IADA,cAAA,GAAY,WAAZ;IAEI,KAAKC,YAAL,GAAoB,IAAI9B,WAAJ,EAApB;;;EAJR;;EAAA,OAQI+B,gBARJ,GAQI,0BAAiB3B,OAAjB;IACI,OAAO,KAAK0B,YAAL,CAAkB5B,YAAlB,WAAyD,KAAK8B,SAA9D,0BAA6F5B,OAA7F,CAAP;GATR;;EAAA,OAYI6B,GAZJ,GAYI,aAAI7J,IAAJ;IACI,OAAO,KAAK0J,YAAL,CAAkBlB,IAAlB,oBAAyCxI,IAAzC,CAAP;GAbR;;EAAA;AAAA;;ICCa8J,qBAAb;EAGI;IACI,KAAKJ,YAAL,GAAoB,IAAI9B,WAAJ,EAApB;;;EAJR;;EAAA,OAQI+B,gBARJ,GAQI,0BAAiB3B,OAAjB;IACI,OAAO,KAAK0B,YAAL,CAAkB5B,YAAlB,uCAAgFE,OAAhF,CAAP;GATR;;EAAA,OAYI+B,MAZJ,GAYI;IACI,OAAO,KAAKL,YAAL,CAAkBpB,GAAlB,+BAAP;GAbR;;EAAA;AAAA;;SCRgB0B,UAAWC;EACvB,OAAOV,IAAI,CAACW,KAAL,CAAWX,IAAI,CAACC,SAAL,CAAeS,GAAf,CAAX,CAAP;AACH;;AC8BD,IAAME,SAAS,GAAG,SAAZA,SAAY,CAACvK,KAAD;;;EAChB,IAAMwK,cAAc,GAAG,CAAvB;EACA,IAAMC,eAAe,GAAG,CAAxB;;EAEA,gBAAkCpH,QAAQ,CAAqB,EAArB,CAA1C;MAAOqH,SAAP;MAAkBC,YAAlB;;EACA,iBAA8CtH,QAAQ,CAA+BuC,SAA/B,CAAtD;MAAOgF,eAAP;MAAwBC,kBAAxB;;EACA,iBAAkDxH,QAAQ,CAA+BuC,SAA/B,CAA1D;MAAOkF,iBAAP;MAA0BC,oBAA1B;;EACA,iBAA4C1H,QAAQ,EAApD;MAAO2H,cAAP;;EACA,iBAAwC3H,QAAQ,CAAU,KAAV,CAAhD;MAAO4H,YAAP;MAAqBC,eAArB;;EACA,iBAAsC7H,QAAQ,EAA9C;MAAO8H,WAAP;MAAoBC,cAApB;;EACA,iBAA8B/H,QAAQ,CAAgB;IAAE0B,EAAE,EAAE;GAAtB,CAAtC;MAAOU,OAAP;MAAgB4F,UAAhB;;EAEA,IAAMC,yBAAyB,GAAGC,SAAS,EAA3C;EACA,IAAMC,gBAAgB,GAAG,IAAI3B,gBAAJ,EAAzB;EACA,IAAM4B,qBAAqB,GAAG,IAAIvB,qBAAJ,EAA9B;EACA1G,SAAS,CAAC;IACRkI,cAAc;IAEd1L,KAAK,CAAC2L,WAAN,CAAkBC,cAAlB,CAAiCC,SAAjC,CAA2C,UAAA3H,CAAC;MAC1CgC,OAAO,CAACC,GAAR,CAAY,0BAAZ,EAAwCjC,CAAxC;MACA2G,kBAAkB,CAAC3G,CAAD,CAAlB;MACA4H,YAAY,CAAC5H,CAAD,CAAZ;KAHF;IAKAlE,KAAK,CAAC2L,WAAN,CAAkBI,kBAAlB,CAAqCF,SAArC,CAA+C,UAAA3H,CAAC;MAC9CgC,OAAO,CAACC,GAAR,CAAY,6BAAZ,EAA2CjC,CAA3C;MAEAyG,YAAY,CAACzG,CAAD,CAAZ;KAHF;GARO,EAcN,EAdM,CAAT;EAmBA,IAAI,CAAAlE,KAAK,SAAL,IAAAA,KAAK,WAAL,4BAAAA,KAAK,CAAEqI,KAAP,8DAAcvI,MAAd,IAAuB,CAA3B,EACEiJ,YAAY,CAACiD,OAAb,CAAqB,OAArB,EAA8BhM,KAA9B,aAA8BA,KAA9B,uBAA8BA,KAAK,CAAEqI,KAArC;;EAGF,IAAMqD,cAAc,GAAG,SAAjBA,cAAiB;IACrBD,qBAAqB,CAACtB,MAAtB,GAA+B8B,IAA/B,CAAoC,UAAA7L,IAAI;MACtCgL,cAAc,CAAChL,IAAI,CAACA,IAAN,CAAd;KADF;GADF;;EAKA,IAAM8L,aAAa,GAAG,SAAhBA,aAAgB;;;IACpBlM,KAAK,CAACmM,oBAAN,CAA2BvB,eAA3B;IACAU,yBAAyB,SAAzB,IAAAA,yBAAyB,WAAzB,qCAAAA,yBAAyB,CAAEnH,OAA3B,gFAAoCiI,IAApC;GAFF;;EAKA,IAAMC,SAAS,GAAG,SAAZA,SAAY,CAACC,UAAD;IAChB,IAAI3K,QAAQ,GAAG4K,yBAAyB,EAAxC;IACAvM,KAAK,CAACwM,iBAAN,CAAwB;MAAE3J,QAAQ,EAAEyJ,UAAZ;MAAwBG,cAAc,EAAK9K,QAAQ,CAAC+K,CAAd,SAAmB/K,QAAQ,CAACgL,CAAlE;MAAuEC,WAAW,EAAKjL,QAAQ,CAACuD,CAAd,SAAmBvD,QAAQ,CAACkL;KAAtI;GAFF;;EAKA,IAAMN,yBAAyB,GAAG,SAA5BA,yBAA4B;IAChC,IAAIO,eAAe,GAAG,CAAtB;IACA,IAAIC,eAAe,GAAG,CAAtB;IACA,IAAIjI,MAAM,GAA0CW,OAAO,CAAC,IAAD,CAAP,CAAcR,GAAd,CAAkB,UAAAf,CAAC;MAAA,OAAIA,CAAC,CAACiB,MAAN;KAAnB,CAApD;IACA,IAAM6H,IAAI,GAAGlI,MAAM,CAACmI,MAAP,CAAc,UAACC,GAAD,EAAMtK,MAAN;MACzB,IAAIA,MAAM,CAAC+J,CAAP,GAAWO,GAAf,EAAoBA,GAAG,GAAGtK,MAAM,CAAC+J,CAAb;MACpB,OAAOO,GAAP;KAFW,EAGV,CAHU,CAAb;;+BAKSP;MACP,IAAMQ,UAAU,GAAGrI,MAAM,CAAC4B,MAAP,CAAc,UAAA0G,CAAC;QAAA,OAAIA,CAAC,CAACT,CAAF,IAAOA,CAAX;OAAf,CAAnB;MACA,IAAMU,wBAAwB,GAAGjG,IAAI,CAAC8F,GAAL,CAASI,KAAT,CAAelG,IAAf,EAAqB+F,UAAU,CAAClI,GAAX,CAAe,UAAAsI,CAAC;QAAA,OAAIA,CAAC,CAACb,CAAN;OAAhB,CAArB,CAAjC;MACA,IAAMc,UAAU,GAAQL,UAAU,CAACM,IAAX,CAAgB,UAAAF,CAAC;QAAA,OAAIA,CAAC,CAACb,CAAF,IAAOW,wBAAX;OAAjB,CAAxB;;MACA,IAAIG,UAAJ,EAAgB;QACd,IAAME,sBAAsB,GAAGL,wBAAwB,GAAGG,UAAU,CAACtI,CAArE;QACA,IAAMyI,wBAAwB,GAAGrG,eAAe,CAACI,IAAhB,CAAqB3C,EAArB,GAA0B2I,sBAA3D;;QACA,IAAIC,wBAAwB,IAAInD,cAAhC,EAAgD;UAC9CsC,eAAe,GAAGH,CAAlB;UACAI,eAAe,GAAGW,sBAAlB;UACA;YAAA,GAAO;cAAEhB,CAAC,EAAEK,eAAL;cAAsBJ,CAAC,EAAEG,eAAzB;cAA0C5H,CAAC,EAAEsF,cAA7C;cAA6DqC,CAAC,EAAEpC;;;SAHzE,MAKO;UACLqC,eAAe,GAAGH,CAAC,GAAG,CAAtB;;OATJ,MAWO;QACLG,eAAe,GAAGH,CAAC,GAAG,CAAtB;;;;IAhBJ,KAAK,IAAIA,CAAC,GAAG,CAAb,EAAgBA,CAAC,IAAIK,IAArB,EAA2BL,CAAC,EAA5B,EAAgC;MAAA,iBAAvBA,CAAuB;;MAAA;;;IAoBhC,OAAO;MAAED,CAAC,EAAEK,eAAL;MAAsBJ,CAAC,EAAEG,eAAzB;MAA0C5H,CAAC,EAAEsF,cAA7C;MAA6DqC,CAAC,EAAEpC;KAAvE;GA7BF;;EA+BA,IAAMmD,UAAU,GAAG,SAAbA,UAAa;;;IACjB1C,eAAe,CAAC,IAAD,CAAf;IACAI,yBAAyB,SAAzB,IAAAA,yBAAyB,WAAzB,sCAAAA,yBAAyB,CAAEnH,OAA3B,kFAAoCiI,IAApC;IAEArB,oBAAoB,CAACX,SAAS,CAACQ,eAAD,CAAV,CAApB;GAJF;;EAMA,IAAMiD,IAAI,GAAG,SAAPA,IAAO;IACX3C,eAAe,CAAC,KAAD,CAAf;IACAhF,OAAO,CAACC,GAAR,CAAY,oBAAZ,EAAkCyE,eAAlC;IACA5K,KAAK,CAAC8N,eAAN,CAAsBlD,eAAtB;GAHF;;EAMA,IAAMmD,UAAU,GAAG,SAAbA,UAAa;IACjB7C,eAAe,CAAC,KAAD,CAAf;IACAlL,KAAK,CAAC2L,WAAN,CAAkBC,cAAlB,CAAiCoC,IAAjC,CAAsClD,iBAAtC;GAFF;;EAKA,IAAMmD,eAAe,GAAG,SAAlBA,eAAkB,CAACC,KAAD;IACtB,IAAIA,KAAK,CAACC,KAAN,KAAevD,eAAf,aAAeA,eAAf,uBAAeA,eAAe,CAAEwD,EAAhC,CAAJ,EACE;IACF,IAAIC,QAAQ,GAAG3D,SAAS,CAAC+C,IAAV,CAAe,UAAAvJ,CAAC;MAAA,OAAIA,CAAC,CAACkK,EAAF,IAAQF,KAAK,CAACC,KAAlB;KAAhB,CAAf;IAEAnO,KAAK,CAACsO,iBAAN,CAAwBD,QAAxB;IACArO,KAAK,CAAC2L,WAAN,CAAkBC,cAAlB,CAAiCoC,IAAjC,CAAsCK,QAAtC;GANF;;EAUA,IAAMvC,YAAY,GAAG,SAAfA,YAAe,CAACyC,QAAD;IACnB,IAAK,EAACA,QAAD,aAACA,QAAD,eAACA,QAAQ,CAAEC,OAAX,CAAL,EACE;IACF,IAAI1J,MAAM,GAA4B;MAAEC,EAAE,EAAE;KAA5C;IACAwJ,QAAQ,SAAR,IAAAA,QAAQ,WAAR,YAAAA,QAAQ,CAAEC,OAAV,CAAkBvJ,GAAlB,CAAsB,UAAArC,MAAM;MAC1B,IAAIA,MAAM,CAACwL,EAAP,IAAaxL,MAAM,CAACwL,EAAP,CAAUtO,MAAV,GAAmB,CAApC,EACE8C,MAAM,CAACe,GAAP,GAAaf,MAAM,CAACwL,EAApB,CADF,KAGExL,MAAM,CAACe,GAAP,GAAa8K,EAAM,EAAnB;MACF7L,MAAM,CAACuC,MAAP,GAAgB;QACduJ,IAAI,EAAE,CADQ;QAEdC,IAAI,EAAE,CAFQ;QAGd9K,CAAC,EAAEjB,MAAM,CAACe,GAHI;QAIduB,CAAC,EAAE,CAACtC,MAAM,CAACgK,WAAP,CAAmBlN,KAAnB,CAAyB,GAAzB,EAA8B,CAA9B,CAJU;QAKdmN,CAAC,EAAE,CAACjK,MAAM,CAACgK,WAAP,CAAmBlN,KAAnB,CAAyB,GAAzB,EAA8B,CAA9B,CALU;QAMdgN,CAAC,EAAE,CAAC9J,MAAM,CAAC6J,cAAP,CAAsB/M,KAAtB,CAA4B,GAA5B,EAAiC,CAAjC,CANU;QAOdiN,CAAC,EAAE,CAAC/J,MAAM,CAAC6J,cAAP,CAAsB/M,KAAtB,CAA4B,GAA5B,EAAiC,CAAjC;OAPN;MASAoF,MAAM,CAACC,EAAP,CAAU6J,IAAV,CAAehM,MAAf;KAdF;IAkBAsD,OAAO,CAACC,GAAR,CAAY,kBAAZ,EAAgCrB,MAAhC;IACAuG,UAAU,CAACvG,MAAD,CAAV;GAvBF;;EA0BA,IAAM+J,aAAa,GAAG,SAAhBA,aAAgB,CAACpJ,OAAD;IACpBS,OAAO,CAACC,GAAR,CAAY,kCAAZ,EAAgDV,OAAhD;IACA,IAAIqJ,UAAU,GAA8B,EAA5C;IACA3F,MAAM,CAACC,IAAP,CAAY3D,OAAZ,EAAqBsJ,OAArB,CAA6B,UAAAC,QAAQ;MACnC,IAAIvJ,OAAO,CAACuJ,QAAD,CAAP,CAAkBlP,MAAlB,GAA2B,CAA/B,EAAkC;QAChC2F,OAAO,CAACuJ,QAAD,CAAP,CAAkB/J,GAAlB,CAAsB,UAAAH,MAAM;UAC1BgK,UAAU,CAAChK,MAAM,CAACjB,CAAR,CAAV,GAAuBiB,MAAvB;SADF;QAGA;;KALJ;IAQA,IAAIgB,OAAO,GAAoB,EAA/B;IACA8E,eAAe,SAAf,IAAAA,eAAe,WAAf,YAAAA,eAAe,CAAE4D,OAAjB,CAAyBO,OAAzB,CAAiC,UAAAnM,MAAM;MACrC,IAAIkM,UAAU,CAAClM,MAAM,CAACe,GAAR,CAAd,EAA4B;QAC1Bf,MAAM,CAAC6J,cAAP,GAA2BqC,UAAU,CAAClM,MAAM,CAACe,GAAR,CAAV,CAAuB+I,CAAlD,SAAuDoC,UAAU,CAAClM,MAAM,CAACe,GAAR,CAAV,CAAuBgJ,CAA9E;QACA/J,MAAM,CAACgK,WAAP,GAAwBkC,UAAU,CAAClM,MAAM,CAACe,GAAR,CAAV,CAAuBuB,CAA/C,SAAoD4J,UAAU,CAAClM,MAAM,CAACe,GAAR,CAAV,CAAuBkJ,CAA3E;QACA/G,OAAO,CAAC8I,IAAR,CAAahM,MAAb;;KAJJ;;IAQA,IAAIgI,eAAJ,EAAqB;MACnBA,eAAe,CAAC4D,OAAhB,GAA0B1I,OAA1B;;;IAEFI,OAAO,CAACC,GAAR,CAAY,qBAAZ,EAAmCyE,eAAnC;GAvBF;;EA0BA,OACE7H,aAAA,MAAA;IAAKW,SAAS,EAAC;GAAf,EAEEX,aAAA,MAAA;IAAKW,SAAS,EAAC;GAAf,EACEX,aAAA,MAAA;IAAKW,SAAS,EAAC;GAAf,EACEX,aAAA,MAAA;IAAKW,SAAS,EAAC;GAAf,EAA6BkH,eAA7B,aAA6BA,eAA7B,uBAA6BA,eAAe,CAAEqE,IAA9C,CADF,EAEElM,aAAA,CAACgB,MAAD;IACEC,IAAI,EAAC;IACLC,OAAO,EAAE,iBAACC,CAAD;MAAA;;MAAA,OAAOoH,yBAAP,aAAOA,yBAAP,iDAAOA,yBAAyB,CAAEnH,OAAlC,2DAAO,uBAAoCC,MAApC,CAA2CF,CAA3C,CAAP;;IACTR,SAAS,EAAC;GAHZ,EAKEX,aAAA,CAACmM,MAAD,MAAA,CALF,CAFF,EASEnM,aAAA,CAACsB,YAAD;IAAcC,GAAG,EAAEgH;IAA2B5H,SAAS,EAAC;GAAxD,EACEX,aAAA,MAAA;IAAKW,SAAS,EAAC;GAAf,EACEX,aAAA,MAAA;IAAKkB,OAAO,EAAE;MAAA,OAAMiI,aAAa,EAAnB;;GAAd,QAAA,CADF,EAEEnJ,aAAA,MAAA;IAAKkB,OAAO,EAAE2J;GAAd,eAAA,CAFF,CADF,CATF,CADF,EAkBE7K,aAAA,MAAA;IAAKW,SAAS,EAAC;GAAf,EACG,CAACuH,YAAD,GACClI,aAAA,MAAA;IAAKW,SAAS,EAAC;GAAf,EAGEX,aAAA,MAAA;IAAKlB,KAAK,EAAE;MAAEG,KAAK,EAAE;;GAArB,EACEe,aAAA,CAACoM,QAAD;IACEhB,KAAK,EAAE;IACP9N,OAAO,EAAEqK;IACT0E,WAAW,EAAC;IACZC,WAAW,EAAC;IACZC,QAAQ,EAAErB;IACVsB,WAAW,EAAC;IACZC,cAAc,EAAE,wBAACC,MAAD;MACd,OAAOA,MAAP,aAAOA,MAAP,uBAAOA,MAAM,CAAEC,QAAf;;IAEFC,YAAY,EAAC;IACb9N,KAAK,EAAE;MAAEG,KAAK,EAAE;;GAXlB,CADF,CAHF,EAkBEe,aAAA,CAACgB,MAAD;IAAQC,IAAI,EAAC;IAAaC,OAAO,EAAE;MAAA,OAAMjE,KAAK,CAACmM,oBAAN,CAA2BvG,SAA3B,CAAN;;IACjClC,SAAS,EAAC;GADZ,CAlBF,CADD,GAsBG,IAvBN,EA4BGuH,YAAY,GACXlI,aAAA,MAAA;IAAKW,SAAS,EAAC;GAAf,EAEEX,aAAA,CAACgB,MAAD;IACE6L,KAAK,EAAC;IACNlM,SAAS,EAAC;IACVO,OAAO,EAAE8J;GAHX,CAFF,EAOEhL,aAAA,CAACgB,MAAD;IACE6L,KAAK,EAAC;IACNC,IAAI,EAAC;IAEL5L,OAAO,EAAE4J;IACTiC,SAAS;GALX,CAPF,EAeE/M,aAAA,MAAA;IAAKlB,KAAK,EAAE;MAAEG,KAAK,EAAE,OAAT;MAAkB+N,UAAU,EAAE;;GAA1C,EACEhN,aAAA,CAACoM,QAAD;IACEhB,KAAK,EAAEnD;IACP3K,OAAO,EAAE8K;IACTiE,WAAW,EAAC;IACZC,WAAW,EAAC;IACZC,QAAQ,EAAE,kBAACpL,CAAD;MAAA,OAAOmI,SAAS,CAACnI,CAAC,CAACiK,KAAH,CAAhB;;IACVoB,WAAW,EAAC;IACZC,cAAc,EAAE,wBAACC,MAAD;MACd,OAAOA,MAAP,aAAOA,MAAP,uBAAOA,MAAM,CAAEC,QAAf;;IAEFC,YAAY,EAAC;GAVf,CADF,CAfF,CADW,GA+BT,IA3DN,CAlBF,CAFF,EAqFE5M,aAAA,MAAA;IAAKW,SAAS,EAAC;GAAf,EACEX,aAAA,CAAC6B,iBAAD;IAAmBwB,cAAc,EAAEyI;IAAe7J,gBAAgB,EAAES;IAASoB,cAAc,EAAE,wBAACjE,MAAD;MAAA,OAA2B5C,KAAK,CAACwM,iBAAN,CAAwB5J,MAAxB,CAA3B;;GAA7F,CADF,CArFF,CADF;AA4FD,CA/PD;;;;"}
@@ -0,0 +1 @@
1
+ export declare function deepClone(obj: any): any;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "logitude-dashboard-library",
3
- "version": "1.2.49",
3
+ "version": "1.2.52",
4
4
  "description": "Made with create-react-library",
5
5
  "author": "logitude",
6
6
  "license": "MIT",