logitude-dashboard-library 1.2.52 → 1.2.53

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.
@@ -304,4 +304,7 @@ $dark-grey: #717585;
304
304
 
305
305
  .dl-m-t-s{
306
306
  margin-top: 10px;
307
+ }
308
+ .dl-m-r-s{
309
+ margin-right: 10px;
307
310
  }
package/dist/index.js CHANGED
@@ -8,6 +8,7 @@ var ReactApexChart = _interopDefault(require('react-apexcharts'));
8
8
  var axios = _interopDefault(require('axios'));
9
9
  var overlaypanel = require('primereact/overlaypanel');
10
10
  var dropdown = require('primereact/dropdown');
11
+ var dialog = require('primereact/dialog');
11
12
  var ripple = require('primereact/ripple');
12
13
  var uuid = require('uuid');
13
14
 
@@ -262,7 +263,9 @@ var DashboardDesigner = function DashboardDesigner(props) {
262
263
  placeholderRowsArray = _useState[0],
263
264
  setplaceholderRowsArray = _useState[1];
264
265
 
265
- var _useState2 = React.useState(false);
266
+ var _useState2 = React.useState(true),
267
+ firstChange = _useState2[0],
268
+ setFirstChange = _useState2[1];
266
269
 
267
270
  var _useState3 = React.useState(undefined),
268
271
  dateFilter = _useState3[0];
@@ -281,6 +284,7 @@ var DashboardDesigner = function DashboardDesigner(props) {
281
284
  setPlaceholderRows = _useState7[1];
282
285
 
283
286
  React.useEffect(function () {
287
+ setFirstChange(true);
284
288
  console.log('useEffect setLayouts');
285
289
  layouts.current = createLayout();
286
290
  setWidgets(props.dashboardLayouts);
@@ -288,6 +292,12 @@ var DashboardDesigner = function DashboardDesigner(props) {
288
292
 
289
293
  function _onLayoutChange(layout, changedLayouts) {
290
294
  console.log(layout, layouts);
295
+
296
+ if (firstChange) {
297
+ setFirstChange(false);
298
+ return;
299
+ }
300
+
291
301
  layouts.current = changedLayouts;
292
302
  UpdatePlaceholderDimensions();
293
303
  props.onLayoutChange(changedLayouts);
@@ -522,8 +532,9 @@ var Dashboard = function Dashboard(props) {
522
532
  beforEditDashbord = _useState3[0],
523
533
  setBeforEditDashbord = _useState3[1];
524
534
 
525
- var _useState4 = React.useState(),
526
- selectedWidget = _useState4[0];
535
+ var _useState4 = React.useState(false),
536
+ hasChanges = _useState4[0],
537
+ setHasChanges = _useState4[1];
527
538
 
528
539
  var _useState5 = React.useState(false),
529
540
  isInEditMode = _useState5[0],
@@ -539,6 +550,10 @@ var Dashboard = function Dashboard(props) {
539
550
  layouts = _useState7[0],
540
551
  setLayouts = _useState7[1];
541
552
 
553
+ var _useState8 = React.useState(false),
554
+ cancelConfirmDialog = _useState8[0],
555
+ setCancelConfirmDialog = _useState8[1];
556
+
542
557
  var dashboardMoreButtonToggle = React.createRef();
543
558
  var dashboardService = new DashBoardService();
544
559
  var widgetTypeListService = new WidgetTypeListService();
@@ -649,11 +664,24 @@ var Dashboard = function Dashboard(props) {
649
664
  setIsInEditMode(false);
650
665
  console.log('onSaveDashboard > ', currentDashbord);
651
666
  props.onSaveDashboard(currentDashbord);
667
+ onHide();
668
+ setHasChanges(false);
652
669
  };
653
670
 
654
671
  var cancelSave = function cancelSave() {
672
+ if (!hasChanges) {
673
+ setIsInEditMode(false);
674
+ setHasChanges(false);
675
+ } else {
676
+ setCancelConfirmDialog(true);
677
+ }
678
+ };
679
+
680
+ var dontSave = function dontSave() {
681
+ setHasChanges(false);
655
682
  setIsInEditMode(false);
656
683
  props.dataBinding.onGetDashboard.next(beforEditDashbord);
684
+ setCancelConfirmDialog(false);
657
685
  };
658
686
 
659
687
  var changeDashboard = function changeDashboard(event) {
@@ -712,6 +740,34 @@ var Dashboard = function Dashboard(props) {
712
740
  }
713
741
 
714
742
  console.log('after update widget', currentDashbord);
743
+ setHasChanges(true);
744
+ };
745
+
746
+ var renderCancelConfirmDialogFooter = function renderCancelConfirmDialogFooter() {
747
+ return React.createElement("div", null, React.createElement(button.Button, {
748
+ label: "Cancel",
749
+ onClick: function onClick() {
750
+ return onHide();
751
+ },
752
+ className: "p-button-secondary"
753
+ }), React.createElement(button.Button, {
754
+ label: "Don't Save",
755
+ onClick: function onClick() {
756
+ return dontSave();
757
+ },
758
+ className: "p-button-secondary"
759
+ }), React.createElement(button.Button, {
760
+ label: "Save",
761
+ onClick: function onClick() {
762
+ return save();
763
+ },
764
+ autoFocus: true,
765
+ className: "p-button-warning"
766
+ }));
767
+ };
768
+
769
+ var onHide = function onHide() {
770
+ setCancelConfirmDialog(false);
715
771
  };
716
772
 
717
773
  return React.createElement("div", {
@@ -773,20 +829,28 @@ var Dashboard = function Dashboard(props) {
773
829
  className: 'dl-flex-row'
774
830
  }, React.createElement(button.Button, {
775
831
  label: "Cancel",
776
- className: "p-button-text",
832
+ className: "p-button-secondary dl-m-r-s",
777
833
  onClick: cancelSave
778
- }), React.createElement(button.Button, {
834
+ }), React.createElement(dialog.Dialog, {
835
+ header: "Unsaved Changes",
836
+ visible: cancelConfirmDialog,
837
+ style: {
838
+ width: '50vw'
839
+ },
840
+ footer: renderCancelConfirmDialogFooter(),
841
+ onHide: onHide
842
+ }, React.createElement("p", null, "This Dashboard has unsaved changes do you want to save it?")), React.createElement(button.Button, {
779
843
  label: "Save",
780
844
  form: "frm",
781
845
  onClick: save,
782
- autoFocus: true
846
+ autoFocus: true,
847
+ className: hasChanges ? "p-button-warning" : "p-button-secondary"
783
848
  }), React.createElement("div", {
784
849
  style: {
785
850
  width: '192px',
786
851
  marginLeft: '15px'
787
852
  }
788
853
  }, React.createElement(dropdown.Dropdown, {
789
- value: selectedWidget,
790
854
  options: WidgetTypes,
791
855
  optionValue: "Code",
792
856
  optionLabel: "Name",
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/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
+ {"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\nimport { TRUE } from \"sass\";\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 [firstChange, setFirstChange] = useState(true);\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 setFirstChange(true);\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 if(firstChange){\r\n setFirstChange(false);\r\n return;\r\n }\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\n\r\ntype DashboardProps = {\r\n token: string,\r\n tenant: number,\r\n userId: string,\r\n dataBinding: DashboardDataBinding,\r\n openAddEditWidget: (widget: ReactWidgetPM | undefined) => void,\r\n openAddEditDashboard: (dashboard: ReactDashboardPM | undefined) => void,\r\n onChangeDashboard: (dashboard: ReactDashboardPM | undefined) => void,\r\n onSaveDashboard: (dashboard: ReactDashboardPM | undefined) => void,\r\n};\r\nconst Dashboard = (props: DashboardProps) => {\r\n const newWidgetWidth = 3;\r\n const newWidgetHeight = 5;\r\n\r\n const [dashbords, setDashbords] = useState<ReactDashboardPM[]>([]);\r\n const [currentDashbord, setCurrentDashbord] = useState<ReactDashboardPM | undefined>(undefined);\r\n const [beforEditDashbord, setBeforEditDashbord] = useState<ReactDashboardPM | undefined>(undefined);\r\n const [hasChanges, setHasChanges] = useState(false);\r\n const [isInEditMode, setIsInEditMode] = useState<boolean>(false);\r\n const [WidgetTypes, setWidgetTypes] = useState<WidgetType[]>();\r\n const [layouts, setLayouts] = useState<{ lg: any[] }>({ lg: [] });\r\n const [cancelConfirmDialog, setCancelConfirmDialog] = useState(false);\r\n const dashboardMoreButtonToggle = createRef<OverlayPanel>();\r\n const dashboardService = new DashBoardService();\r\n const widgetTypeListService = new WidgetTypeListService();\r\n useEffect(() => {\r\n getWidgetTypes();\r\n\r\n props.dataBinding.onGetDashboard.subscribe(e => {\r\n console.log('onGetDashboard.subscribe', e)\r\n setCurrentDashbord(e);\r\n applyLayouts(e);\r\n })\r\n props.dataBinding.onGetAllDashboards.subscribe(e => {\r\n console.log('onGetAllDashboard.subscribe', e)\r\n\r\n setDashbords(e);\r\n })\r\n\r\n }, [])\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 onHide();\r\n setHasChanges(false);\r\n }\r\n\r\n const cancelSave = () => {\r\n if (!hasChanges) {\r\n setIsInEditMode(false)\r\n setHasChanges(false)\r\n } else {\r\n setCancelConfirmDialog(true);\r\n }\r\n\r\n\r\n }\r\n\r\n const dontSave = () => {\r\n setHasChanges(false)\r\n setIsInEditMode(false)\r\n props.dataBinding.onGetDashboard.next(beforEditDashbord);\r\n setCancelConfirmDialog(false);\r\n }\r\n const changeDashboard = (event) => {\r\n if (event.value == currentDashbord?.Id)\r\n return;\r\n var dasboard = dashbords.find(e => e.Id == event.value);\r\n\r\n props.onChangeDashboard(dasboard);\r\n props.dataBinding.onGetDashboard.next(dasboard);\r\n\r\n }\r\n\r\n const applyLayouts = (dashbord: ReactDashboardPM | undefined) => {\r\n if ((!dashbord?.Widgets))\r\n return;\r\n var layout: { lg: ReactWidgetPM[] } = { lg: [] };\r\n dashbord?.Widgets.map(widget => {\r\n if (widget.Id && widget.Id.length > 0)\r\n widget.key = widget.Id;\r\n else\r\n widget.key = uuidv4();\r\n widget.Layout = {\r\n minH: 5,\r\n minW: 3,\r\n i: widget.key,\r\n w: +widget.EndPosition.split(',')[0],\r\n h: +widget.EndPosition.split(',')[1],\r\n x: +widget.StartPotistion.split(',')[0],\r\n y: +widget.StartPotistion.split(',')[1],\r\n }\r\n layout.lg.push(widget\r\n\r\n )\r\n });\r\n console.log('setLayouts -- > ', layout)\r\n setLayouts(layout);\r\n\r\n }\r\n const updateWidgets = (layouts: Layouts) => {\r\n console.log('updateWidgets = (layouts:Layouts', layouts)\r\n var layoutsDic: { [key: string]: Layout } = {};\r\n Object.keys(layouts).forEach(sizeType => {\r\n if (layouts[sizeType].length > 0) {\r\n layouts[sizeType].map(layout => {\r\n layoutsDic[layout.i] = layout;\r\n })\r\n return;\r\n }\r\n })\r\n var widgets: ReactWidgetPM[] = [];\r\n currentDashbord?.Widgets.forEach(widget => {\r\n if (layoutsDic[widget.key]) {\r\n widget.StartPotistion = `${layoutsDic[widget.key].x},${layoutsDic[widget.key].y}`;\r\n widget.EndPosition = `${layoutsDic[widget.key].w},${layoutsDic[widget.key].h}`;\r\n widgets.push(widget)\r\n }\r\n\r\n });\r\n if (currentDashbord) {\r\n currentDashbord.Widgets = widgets;\r\n }\r\n console.log('after update widget', currentDashbord)\r\n setHasChanges(true);\r\n }\r\n\r\n const renderCancelConfirmDialogFooter = () => {\r\n return (\r\n <div>\r\n <Button label=\"Cancel\" onClick={() => onHide()} className=\"p-button-secondary\" />\r\n <Button label=\"Don't Save\" onClick={() => dontSave()} className=\"p-button-secondary\" />\r\n <Button label=\"Save\" onClick={() => save()} autoFocus className=\"p-button-warning\" />\r\n </div>\r\n );\r\n }\r\n const onHide = () => {\r\n setCancelConfirmDialog(false)\r\n }\r\n return (\r\n <div className='dl-full-hight'>\r\n\r\n <div className='dl-dashboard-header dl-card'>\r\n <div className='dl-flex-row dl-custom-btn'>\r\n <div className='dl-title-1'>{currentDashbord?.Name}</div>\r\n <Button\r\n icon=\"pi pi-ellipsis-v\"\r\n onClick={(e) => dashboardMoreButtonToggle?.current?.toggle(e)}\r\n className=\"p-button p-button-icon-only p-button-rounded p-button-text\"\r\n >\r\n <Ripple />\r\n </Button>\r\n <OverlayPanel ref={dashboardMoreButtonToggle} className=\"buttons-overlay\">\r\n <div className=\"buttons-list\">\r\n <div onClick={() => EditDashBoard()}>Edit</div>\r\n <div onClick={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-secondary dl-m-r-s\"\r\n onClick={cancelSave}\r\n />\r\n\r\n <Dialog header=\"Unsaved Changes\" visible={cancelConfirmDialog} style={{ width: '50vw' }} footer={renderCancelConfirmDialogFooter()} onHide={onHide}>\r\n <p>This Dashboard has unsaved changes do you want to save it?</p>\r\n </Dialog>\r\n\r\n <Button\r\n label=\"Save\"\r\n form=\"frm\"\r\n // icon=\"pi pi-check\"\r\n onClick={save}\r\n autoFocus\r\n className={hasChanges ? \"p-button-warning\" : \"p-button-secondary\"}\r\n />\r\n\r\n <div style={{ width: '192px', marginLeft: '15px' }}>\r\n <Dropdown\r\n options={WidgetTypes}\r\n optionValue=\"Code\"\r\n optionLabel=\"Name\"\r\n onChange={(e) => addWidget(e.value)}\r\n placeholder=\"Add Component\"\r\n optionDisabled={(option) => {\r\n return option?.Disabled;\r\n }}\r\n scrollHeight=\"300px\"\r\n />\r\n </div>\r\n </div>\r\n : null}\r\n </div>\r\n\r\n\r\n </div>\r\n\r\n <div className='dl-dashboard-body'>\r\n <DashboardDesigner 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","firstChange","setFirstChange","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","hasChanges","setHasChanges","isInEditMode","setIsInEditMode","WidgetTypes","setWidgetTypes","setLayouts","cancelConfirmDialog","setCancelConfirmDialog","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","onHide","cancelSave","dontSave","next","changeDashboard","event","value","Id","dasboard","onChangeDashboard","dashbord","Widgets","uuidv4","minH","minW","push","updateWidgets","layoutsDic","forEach","sizeType","renderCancelConfirmDialogFooter","label","autoFocus","Name","Ripple","Dropdown","optionValue","optionLabel","onChange","placeholder","optionDisabled","option","Disabled","scrollHeight","Dialog","header","visible","footer","form","marginLeft"],"mappings":"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"}
@@ -5,6 +5,7 @@ import ReactApexChart from 'react-apexcharts';
5
5
  import axios from 'axios';
6
6
  import { OverlayPanel } from 'primereact/overlaypanel';
7
7
  import { Dropdown } from 'primereact/dropdown';
8
+ import { Dialog } from 'primereact/dialog';
8
9
  import { Ripple } from 'primereact/ripple';
9
10
  import { v4 } from 'uuid';
10
11
 
@@ -259,7 +260,9 @@ var DashboardDesigner = function DashboardDesigner(props) {
259
260
  placeholderRowsArray = _useState[0],
260
261
  setplaceholderRowsArray = _useState[1];
261
262
 
262
- var _useState2 = useState(false);
263
+ var _useState2 = useState(true),
264
+ firstChange = _useState2[0],
265
+ setFirstChange = _useState2[1];
263
266
 
264
267
  var _useState3 = useState(undefined),
265
268
  dateFilter = _useState3[0];
@@ -278,6 +281,7 @@ var DashboardDesigner = function DashboardDesigner(props) {
278
281
  setPlaceholderRows = _useState7[1];
279
282
 
280
283
  useEffect(function () {
284
+ setFirstChange(true);
281
285
  console.log('useEffect setLayouts');
282
286
  layouts.current = createLayout();
283
287
  setWidgets(props.dashboardLayouts);
@@ -285,6 +289,12 @@ var DashboardDesigner = function DashboardDesigner(props) {
285
289
 
286
290
  function _onLayoutChange(layout, changedLayouts) {
287
291
  console.log(layout, layouts);
292
+
293
+ if (firstChange) {
294
+ setFirstChange(false);
295
+ return;
296
+ }
297
+
288
298
  layouts.current = changedLayouts;
289
299
  UpdatePlaceholderDimensions();
290
300
  props.onLayoutChange(changedLayouts);
@@ -519,8 +529,9 @@ var Dashboard = function Dashboard(props) {
519
529
  beforEditDashbord = _useState3[0],
520
530
  setBeforEditDashbord = _useState3[1];
521
531
 
522
- var _useState4 = useState(),
523
- selectedWidget = _useState4[0];
532
+ var _useState4 = useState(false),
533
+ hasChanges = _useState4[0],
534
+ setHasChanges = _useState4[1];
524
535
 
525
536
  var _useState5 = useState(false),
526
537
  isInEditMode = _useState5[0],
@@ -536,6 +547,10 @@ var Dashboard = function Dashboard(props) {
536
547
  layouts = _useState7[0],
537
548
  setLayouts = _useState7[1];
538
549
 
550
+ var _useState8 = useState(false),
551
+ cancelConfirmDialog = _useState8[0],
552
+ setCancelConfirmDialog = _useState8[1];
553
+
539
554
  var dashboardMoreButtonToggle = createRef();
540
555
  var dashboardService = new DashBoardService();
541
556
  var widgetTypeListService = new WidgetTypeListService();
@@ -646,11 +661,24 @@ var Dashboard = function Dashboard(props) {
646
661
  setIsInEditMode(false);
647
662
  console.log('onSaveDashboard > ', currentDashbord);
648
663
  props.onSaveDashboard(currentDashbord);
664
+ onHide();
665
+ setHasChanges(false);
649
666
  };
650
667
 
651
668
  var cancelSave = function cancelSave() {
669
+ if (!hasChanges) {
670
+ setIsInEditMode(false);
671
+ setHasChanges(false);
672
+ } else {
673
+ setCancelConfirmDialog(true);
674
+ }
675
+ };
676
+
677
+ var dontSave = function dontSave() {
678
+ setHasChanges(false);
652
679
  setIsInEditMode(false);
653
680
  props.dataBinding.onGetDashboard.next(beforEditDashbord);
681
+ setCancelConfirmDialog(false);
654
682
  };
655
683
 
656
684
  var changeDashboard = function changeDashboard(event) {
@@ -709,6 +737,34 @@ var Dashboard = function Dashboard(props) {
709
737
  }
710
738
 
711
739
  console.log('after update widget', currentDashbord);
740
+ setHasChanges(true);
741
+ };
742
+
743
+ var renderCancelConfirmDialogFooter = function renderCancelConfirmDialogFooter() {
744
+ return createElement("div", null, createElement(Button, {
745
+ label: "Cancel",
746
+ onClick: function onClick() {
747
+ return onHide();
748
+ },
749
+ className: "p-button-secondary"
750
+ }), createElement(Button, {
751
+ label: "Don't Save",
752
+ onClick: function onClick() {
753
+ return dontSave();
754
+ },
755
+ className: "p-button-secondary"
756
+ }), createElement(Button, {
757
+ label: "Save",
758
+ onClick: function onClick() {
759
+ return save();
760
+ },
761
+ autoFocus: true,
762
+ className: "p-button-warning"
763
+ }));
764
+ };
765
+
766
+ var onHide = function onHide() {
767
+ setCancelConfirmDialog(false);
712
768
  };
713
769
 
714
770
  return createElement("div", {
@@ -770,20 +826,28 @@ var Dashboard = function Dashboard(props) {
770
826
  className: 'dl-flex-row'
771
827
  }, createElement(Button, {
772
828
  label: "Cancel",
773
- className: "p-button-text",
829
+ className: "p-button-secondary dl-m-r-s",
774
830
  onClick: cancelSave
775
- }), createElement(Button, {
831
+ }), createElement(Dialog, {
832
+ header: "Unsaved Changes",
833
+ visible: cancelConfirmDialog,
834
+ style: {
835
+ width: '50vw'
836
+ },
837
+ footer: renderCancelConfirmDialogFooter(),
838
+ onHide: onHide
839
+ }, createElement("p", null, "This Dashboard has unsaved changes do you want to save it?")), createElement(Button, {
776
840
  label: "Save",
777
841
  form: "frm",
778
842
  onClick: save,
779
- autoFocus: true
843
+ autoFocus: true,
844
+ className: hasChanges ? "p-button-warning" : "p-button-secondary"
780
845
  }), createElement("div", {
781
846
  style: {
782
847
  width: '192px',
783
848
  marginLeft: '15px'
784
849
  }
785
850
  }, createElement(Dropdown, {
786
- value: selectedWidget,
787
851
  options: WidgetTypes,
788
852
  optionValue: "Code",
789
853
  optionLabel: "Name",
@@ -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/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
+ {"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\nimport { TRUE } from \"sass\";\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 [firstChange, setFirstChange] = useState(true);\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 setFirstChange(true);\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 if(firstChange){\r\n setFirstChange(false);\r\n return;\r\n }\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\n\r\ntype DashboardProps = {\r\n token: string,\r\n tenant: number,\r\n userId: string,\r\n dataBinding: DashboardDataBinding,\r\n openAddEditWidget: (widget: ReactWidgetPM | undefined) => void,\r\n openAddEditDashboard: (dashboard: ReactDashboardPM | undefined) => void,\r\n onChangeDashboard: (dashboard: ReactDashboardPM | undefined) => void,\r\n onSaveDashboard: (dashboard: ReactDashboardPM | undefined) => void,\r\n};\r\nconst Dashboard = (props: DashboardProps) => {\r\n const newWidgetWidth = 3;\r\n const newWidgetHeight = 5;\r\n\r\n const [dashbords, setDashbords] = useState<ReactDashboardPM[]>([]);\r\n const [currentDashbord, setCurrentDashbord] = useState<ReactDashboardPM | undefined>(undefined);\r\n const [beforEditDashbord, setBeforEditDashbord] = useState<ReactDashboardPM | undefined>(undefined);\r\n const [hasChanges, setHasChanges] = useState(false);\r\n const [isInEditMode, setIsInEditMode] = useState<boolean>(false);\r\n const [WidgetTypes, setWidgetTypes] = useState<WidgetType[]>();\r\n const [layouts, setLayouts] = useState<{ lg: any[] }>({ lg: [] });\r\n const [cancelConfirmDialog, setCancelConfirmDialog] = useState(false);\r\n const dashboardMoreButtonToggle = createRef<OverlayPanel>();\r\n const dashboardService = new DashBoardService();\r\n const widgetTypeListService = new WidgetTypeListService();\r\n useEffect(() => {\r\n getWidgetTypes();\r\n\r\n props.dataBinding.onGetDashboard.subscribe(e => {\r\n console.log('onGetDashboard.subscribe', e)\r\n setCurrentDashbord(e);\r\n applyLayouts(e);\r\n })\r\n props.dataBinding.onGetAllDashboards.subscribe(e => {\r\n console.log('onGetAllDashboard.subscribe', e)\r\n\r\n setDashbords(e);\r\n })\r\n\r\n }, [])\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 onHide();\r\n setHasChanges(false);\r\n }\r\n\r\n const cancelSave = () => {\r\n if (!hasChanges) {\r\n setIsInEditMode(false)\r\n setHasChanges(false)\r\n } else {\r\n setCancelConfirmDialog(true);\r\n }\r\n\r\n\r\n }\r\n\r\n const dontSave = () => {\r\n setHasChanges(false)\r\n setIsInEditMode(false)\r\n props.dataBinding.onGetDashboard.next(beforEditDashbord);\r\n setCancelConfirmDialog(false);\r\n }\r\n const changeDashboard = (event) => {\r\n if (event.value == currentDashbord?.Id)\r\n return;\r\n var dasboard = dashbords.find(e => e.Id == event.value);\r\n\r\n props.onChangeDashboard(dasboard);\r\n props.dataBinding.onGetDashboard.next(dasboard);\r\n\r\n }\r\n\r\n const applyLayouts = (dashbord: ReactDashboardPM | undefined) => {\r\n if ((!dashbord?.Widgets))\r\n return;\r\n var layout: { lg: ReactWidgetPM[] } = { lg: [] };\r\n dashbord?.Widgets.map(widget => {\r\n if (widget.Id && widget.Id.length > 0)\r\n widget.key = widget.Id;\r\n else\r\n widget.key = uuidv4();\r\n widget.Layout = {\r\n minH: 5,\r\n minW: 3,\r\n i: widget.key,\r\n w: +widget.EndPosition.split(',')[0],\r\n h: +widget.EndPosition.split(',')[1],\r\n x: +widget.StartPotistion.split(',')[0],\r\n y: +widget.StartPotistion.split(',')[1],\r\n }\r\n layout.lg.push(widget\r\n\r\n )\r\n });\r\n console.log('setLayouts -- > ', layout)\r\n setLayouts(layout);\r\n\r\n }\r\n const updateWidgets = (layouts: Layouts) => {\r\n console.log('updateWidgets = (layouts:Layouts', layouts)\r\n var layoutsDic: { [key: string]: Layout } = {};\r\n Object.keys(layouts).forEach(sizeType => {\r\n if (layouts[sizeType].length > 0) {\r\n layouts[sizeType].map(layout => {\r\n layoutsDic[layout.i] = layout;\r\n })\r\n return;\r\n }\r\n })\r\n var widgets: ReactWidgetPM[] = [];\r\n currentDashbord?.Widgets.forEach(widget => {\r\n if (layoutsDic[widget.key]) {\r\n widget.StartPotistion = `${layoutsDic[widget.key].x},${layoutsDic[widget.key].y}`;\r\n widget.EndPosition = `${layoutsDic[widget.key].w},${layoutsDic[widget.key].h}`;\r\n widgets.push(widget)\r\n }\r\n\r\n });\r\n if (currentDashbord) {\r\n currentDashbord.Widgets = widgets;\r\n }\r\n console.log('after update widget', currentDashbord)\r\n setHasChanges(true);\r\n }\r\n\r\n const renderCancelConfirmDialogFooter = () => {\r\n return (\r\n <div>\r\n <Button label=\"Cancel\" onClick={() => onHide()} className=\"p-button-secondary\" />\r\n <Button label=\"Don't Save\" onClick={() => dontSave()} className=\"p-button-secondary\" />\r\n <Button label=\"Save\" onClick={() => save()} autoFocus className=\"p-button-warning\" />\r\n </div>\r\n );\r\n }\r\n const onHide = () => {\r\n setCancelConfirmDialog(false)\r\n }\r\n return (\r\n <div className='dl-full-hight'>\r\n\r\n <div className='dl-dashboard-header dl-card'>\r\n <div className='dl-flex-row dl-custom-btn'>\r\n <div className='dl-title-1'>{currentDashbord?.Name}</div>\r\n <Button\r\n icon=\"pi pi-ellipsis-v\"\r\n onClick={(e) => dashboardMoreButtonToggle?.current?.toggle(e)}\r\n className=\"p-button p-button-icon-only p-button-rounded p-button-text\"\r\n >\r\n <Ripple />\r\n </Button>\r\n <OverlayPanel ref={dashboardMoreButtonToggle} className=\"buttons-overlay\">\r\n <div className=\"buttons-list\">\r\n <div onClick={() => EditDashBoard()}>Edit</div>\r\n <div onClick={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-secondary dl-m-r-s\"\r\n onClick={cancelSave}\r\n />\r\n\r\n <Dialog header=\"Unsaved Changes\" visible={cancelConfirmDialog} style={{ width: '50vw' }} footer={renderCancelConfirmDialogFooter()} onHide={onHide}>\r\n <p>This Dashboard has unsaved changes do you want to save it?</p>\r\n </Dialog>\r\n\r\n <Button\r\n label=\"Save\"\r\n form=\"frm\"\r\n // icon=\"pi pi-check\"\r\n onClick={save}\r\n autoFocus\r\n className={hasChanges ? \"p-button-warning\" : \"p-button-secondary\"}\r\n />\r\n\r\n <div style={{ width: '192px', marginLeft: '15px' }}>\r\n <Dropdown\r\n options={WidgetTypes}\r\n optionValue=\"Code\"\r\n optionLabel=\"Name\"\r\n onChange={(e) => addWidget(e.value)}\r\n placeholder=\"Add Component\"\r\n optionDisabled={(option) => {\r\n return option?.Disabled;\r\n }}\r\n scrollHeight=\"300px\"\r\n />\r\n </div>\r\n </div>\r\n : null}\r\n </div>\r\n\r\n\r\n </div>\r\n\r\n <div className='dl-dashboard-body'>\r\n <DashboardDesigner 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","firstChange","setFirstChange","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","hasChanges","setHasChanges","isInEditMode","setIsInEditMode","WidgetTypes","setWidgetTypes","setLayouts","cancelConfirmDialog","setCancelConfirmDialog","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","onHide","cancelSave","dontSave","next","changeDashboard","event","value","Id","dasboard","onChangeDashboard","dashbord","Widgets","uuidv4","minH","minW","push","updateWidgets","layoutsDic","forEach","sizeType","renderCancelConfirmDialogFooter","label","autoFocus","Name","Ripple","Dropdown","optionValue","optionLabel","onChange","placeholder","optionDisabled","option","Disabled","scrollHeight","Dialog","header","visible","footer","form","marginLeft"],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "logitude-dashboard-library",
3
- "version": "1.2.52",
3
+ "version": "1.2.53",
4
4
  "description": "Made with create-react-library",
5
5
  "author": "logitude",
6
6
  "license": "MIT",