logitude-dashboard-library 1.3.0 → 1.3.2

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.
@@ -3,7 +3,7 @@ import { ReactWidgetPM } from "../../../types/widget";
3
3
  import { DataPointSelection } from '../../../types/SeriesMeasure';
4
4
  import { ApexOptions } from "apexcharts";
5
5
  declare type ApexChartProps = {
6
- widget: ReactWidgetPM | null;
6
+ widget: ReactWidgetPM | undefined;
7
7
  onSelectDataPoint: (dataPointSelection: DataPointSelection) => void;
8
8
  };
9
9
  declare const ApexChart: (props: ApexChartProps) => JSX.Element;
@@ -4,7 +4,7 @@ import { ReactWidgetPM } from "../../types/widget";
4
4
  declare type WidgetCardProps = {
5
5
  editBtnClicked(widget: any): any;
6
6
  deleteBtnClicked(i: any): any;
7
- widget: ReactWidgetPM | null;
7
+ widget: ReactWidgetPM | undefined;
8
8
  el: any;
9
9
  dateFilter: any;
10
10
  isInEditMode: boolean;
package/dist/index.js CHANGED
@@ -174,6 +174,7 @@ var ApexChart = function ApexChart(props) {
174
174
 
175
175
  var MeasuresIds = React.useRef([]);
176
176
  var GroupByIds = React.useRef([]);
177
+ var GroupCount = React.useRef(0);
177
178
 
178
179
  var _useState2 = React.useState(false),
179
180
  isView = _useState2[0],
@@ -400,6 +401,7 @@ var ApexChart = function ApexChart(props) {
400
401
  });
401
402
  }
402
403
 
404
+ var colors = CreateColors(labels.length);
403
405
  return {
404
406
  series: series,
405
407
  options: {
@@ -415,6 +417,7 @@ var ApexChart = function ApexChart(props) {
415
417
  }
416
418
  },
417
419
  labels: labels,
420
+ colors: colors,
418
421
  noData: {
419
422
  text: 'No Data Found'
420
423
  }
@@ -422,6 +425,32 @@ var ApexChart = function ApexChart(props) {
422
425
  };
423
426
  };
424
427
 
428
+ var CreateColors = function CreateColors(count) {
429
+ GroupCount.current = count;
430
+ var colors = [];
431
+ CreateDeferuntColors(colors, 0, 100, 50);
432
+ if (GroupCount.current <= 0) return colors;
433
+ CreateDeferuntColors(colors, 15, 100, 50);
434
+ if (GroupCount.current <= 0) return colors;
435
+ CreateDeferuntColors(colors, 0, 50, 50);
436
+ if (GroupCount.current <= 0) return colors;
437
+ CreateDeferuntColors(colors, 15, 50, 50);
438
+ if (GroupCount.current <= 0) return colors;
439
+ CreateDeferuntColors(colors, 0, 50, 30);
440
+ if (GroupCount.current <= 0) return colors;
441
+ CreateDeferuntColors(colors, 15, 50, 30);
442
+ if (GroupCount.current <= 0) return colors;
443
+ return undefined;
444
+ };
445
+
446
+ var CreateDeferuntColors = function CreateDeferuntColors(colors, startAngle, s, v) {
447
+ for (var index = 0; GroupCount.current > 0 && index < 12; index++) {
448
+ var color = "hsl(" + (startAngle + index * 30) + "deg " + s + "% " + v + "%)";
449
+ colors.push(color);
450
+ GroupCount.current--;
451
+ }
452
+ };
453
+
425
454
  var donutOptoins = function donutOptoins(values) {
426
455
  var series = [];
427
456
  var labels = [];
@@ -433,8 +462,21 @@ var ApexChart = function ApexChart(props) {
433
462
  labels = values[0].SeriesMeasureVulues.map(function (e) {
434
463
  return e.Label;
435
464
  });
465
+ var ll = labels.length;
466
+
467
+ for (var index = 0; index < ll; index++) {
468
+ series[index] = 100;
469
+ series.push(100);
470
+ labels.push(labels[index] + 'TT');
471
+ }
472
+
473
+ for (var _index = 0; _index < ll; _index++) {
474
+ series.push(100);
475
+ labels.push(labels[_index] + 'TT2');
476
+ }
436
477
  }
437
478
 
479
+ var colors = CreateColors(labels.length);
438
480
  var result = {
439
481
  series: series,
440
482
  options: {
@@ -470,6 +512,7 @@ var ApexChart = function ApexChart(props) {
470
512
  height: 230
471
513
  },
472
514
  labels: labels,
515
+ colors: colors,
473
516
  noData: {
474
517
  text: 'No Data Found'
475
518
  }
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":["../src/services/tools.ts","../src/services/ApiServices.ts","../src/services/DashboardAnalyticsService.ts","../src/features/Dashboard/ChartsComponents/ApexChart.tsx","../src/features/Dashboard/WidgetCard.tsx","../src/features/Dashboard/DashboardDesigner.tsx","../src/services/DashBoardService.ts","../src/services/WidgetTypeListService.ts","../src/services/clone.ts","../src/index.tsx"],"sourcesContent":["export class Tools{\r\n public static GetLogitudeURL() {\r\n\r\n var logitude_url = location.href.replace('index.html', '');\r\n\r\n if (location.href.indexOf('localhost') > -1) {\r\n logitude_url = 'http://localhost:9996';//localhost:9996//';//\r\n }\r\n\r\n else {\r\n var urlArr = location.href.split(\"/index.html\");\r\n var url = urlArr[0];\r\n url = url.replace(url.substring(url.lastIndexOf('/'), url.length), \"\");\r\n logitude_url = url ;\r\n }\r\n\r\n return logitude_url;\r\n }\r\n}","import axios from \"axios\";\r\nimport { ApiQueryFilters } from \"../common/data-contracts/ApiQueryFilter\";\r\nimport { APIResult } from \"../types/APIResult\";\r\nimport { Tools } from './tools';\r\n\r\n\r\nexport class ApiServices{ \r\n private _apiUrl: string;\r\n constructor(){\r\n this._apiUrl = Tools.GetLogitudeURL() ;\r\n }\r\n getByFilters<T>(api,filters: ApiQueryFilters) {\r\n \r\n let token: string = this.getTokenFromStorage();\r\n\t\tvar apiURL = `${this._apiUrl}${api}`;\r\n\t\tapiURL = this.ConcatFiltersToURL(filters, apiURL);\r\n\r\n return axios.get<APIResult<T>>(apiURL, { headers: { 'Content-Type': 'application/json', 'Token': token } });\r\n }\r\n get<T>(api) {\r\n \r\n let token: string = this.getTokenFromStorage();\r\n\t\tvar apiURL = `${this._apiUrl}${api}`;\r\n return axios.get<T>(apiURL, { headers: { 'Content-Type': 'application/json', 'Token': token } });\r\n }\r\n post<T>(api,date){\r\n let token: string = this.getTokenFromStorage();\r\n\t\tvar apiURL = `${this._apiUrl}${api}`;\r\n return axios.post<T>(apiURL,date, { headers: { 'Content-Type': 'application/json', 'Token': token } });\r\n }\r\n\r\n getTokenFromStorage(){\r\n return window.localStorage.getItem(\"token\") || '';\r\n }\r\n private ConcatFiltersToURL(filters: ApiQueryFilters, urlparameters: string)\r\n {\r\n var mykeys = Object.keys(filters);\r\n var addtionalFiltersValues: string | null = null;\r\n\r\n for (var i in mykeys) {\r\n var propName = mykeys[i];\r\n var propValue = filters[propName];\r\n var ignoreFilter = ((propName.indexOf(\"Operator\") > 0 && propValue == \"Equals\") || propName == \"AdditionalFilters\");\r\n\r\n if (urlparameters != \"?\") {\r\n urlparameters = urlparameters.concat('&');\r\n }\r\n\r\n if (!ignoreFilter) {\r\n propValue = propValue ? encodeURIComponent(propValue) : '';\r\n urlparameters = urlparameters.concat(propName.concat('=').concat(propValue));\r\n }\r\n\r\n if (propName == \"AdditionalFilters\" && propValue.length > 0) {\r\n addtionalFiltersValues = JSON.stringify(propValue);\r\n }\r\n }\r\n\r\n if (addtionalFiltersValues) {\r\n urlparameters = urlparameters.concat(\"&AdditionalFilters=\").concat(addtionalFiltersValues);\r\n }\r\n return urlparameters;\r\n }\r\n}","import axios from \"axios\";\r\nimport { ApiQueryFilters } from \"../common/data-contracts/ApiQueryFilter\";\r\nimport { ReactDashboardPM } from \"../types/Dashboard\";\r\nimport { SeriesMeasure } from \"../types/SeriesMeasure\";\r\nimport { ApiServices } from \"./ApiServices\";\r\nimport { Tools } from './tools';\r\nimport { ReactWidgetPM } from '../types/widget';\r\n\r\n\r\nexport class DashboardAnalyticsService{ \r\n _ApiServices:ApiServices;\r\n controller = 'DashboardAnalytics';\r\n constructor(){\r\n this._ApiServices = new ApiServices();\r\n }\r\n \r\n\r\n getData(widget: ReactWidgetPM) {\r\n return this._ApiServices.post<SeriesMeasure[]>(`/api/${this.controller}/PostGetDataAnalytic`,widget);\r\n }\r\n \r\n}","import React, { useEffect, useRef } from \"react\";\r\nimport ReactApexChart from \"react-apexcharts\";\r\nimport { ProgressSpinner } from 'primereact/progressspinner';\r\nimport { ReactWidgetPM } from \"../../../types/widget\";\r\nimport { useState } from 'react';\r\nimport { DashboardAnalyticsService } from \"../../../services/DashboardAnalyticsService\";\r\nimport { DataPointSelection, SeriesMeasure } from '../../../types/SeriesMeasure';\r\nimport { ApexOptions } from \"apexcharts\";\r\n\r\ntype ApexChartProps = {\r\n widget: ReactWidgetPM | undefined,\r\n onSelectDataPoint:(dataPointSelection:DataPointSelection) =>void;\r\n};\r\nconst ApexChart = (props: ApexChartProps) => {\r\n\r\n const [error, setEror] = useState<string>('');\r\n const MeasuresIds = useRef<string[]>([]); \r\n const GroupByIds = useRef<string[]>([]); \r\n const [isView, setisView] = useState<boolean>(false);\r\n const [viewError, setViewError] = useState<boolean>(false);\r\n const isDataLoaded = useRef<boolean>(false);\r\n const hasDataError = useRef<boolean>(false);\r\n const [args, serArgs] = useState<ApexChartArgs>({\r\n series: [],\r\n options: {}\r\n });\r\n const isLoadingDrow = useRef(true);\r\n\r\n useEffect(() => {\r\n setTimeout(function () {\r\n isLoadingDrow.current = false;\r\n updateView();\r\n }, 500);\r\n }, [])\r\n useEffect(() => {\r\n console.log('useEffect ApexChart', props.widget);\r\n var dashboardAnalyticsService = new DashboardAnalyticsService();\r\n dashboardAnalyticsService.getData(props.widget as ReactWidgetPM).then(result => {\r\n fillIds(result.data);\r\n const data = getChartOptions(result.data);\r\n serArgs(data);\r\n isDataLoaded.current = true;\r\n hasDataError.current = false;\r\n updateView();\r\n }, error => {\r\n console.log('error', error);\r\n if (error?.response?.data?.ErrorMessage)\r\n setEror(error?.response?.data?.ErrorMessage);\r\n else\r\n setEror(error.message);\r\n isDataLoaded.current = true;\r\n hasDataError.current = true;\r\n updateView();\r\n })\r\n\r\n\r\n }, [props.widget?.EntityId, props.widget?.Filters, props.widget?.WidgetMeasures]);\r\n\r\n const fillIds = (datas :SeriesMeasure[]) => {\r\n var measuresIds:string[] = [];\r\n var groupByIds:string[] = [];\r\n for (const seriesMeasure of datas) {\r\n measuresIds.push(seriesMeasure.MeasureFieldId);\r\n }\r\n \r\n for (const seriesMeasure of datas) {\r\n for (const vulue of seriesMeasure.SeriesMeasureVulues) {\r\n groupByIds.push(vulue.GroupById);\r\n }\r\n break;\r\n }\r\n \r\n MeasuresIds.current = measuresIds;\r\n GroupByIds.current = groupByIds;\r\n\r\n }\r\n const updateView = () => {\r\n if (isDataLoaded.current && !isLoadingDrow.current && !hasDataError.current) {\r\n setisView(true);\r\n setViewError(false);\r\n }\r\n\r\n if (isDataLoaded.current && !isLoadingDrow.current && hasDataError.current) {\r\n setisView(false);\r\n setViewError(true);\r\n }\r\n\r\n }\r\n\r\n const lineOptoins = (values: SeriesMeasure[]):ApexChartArgs => {\r\n\r\n\r\n var series: any = [];\r\n var categories: any = [];\r\n if (values && values[0]) {\r\n series = values.map(e => {\r\n return { data: e.SeriesMeasureVulues.map(z => z.Value) }\r\n }\r\n );\r\n categories = values[0].SeriesMeasureVulues.map(e => e.Label);\r\n }\r\n\r\n return {\r\n\r\n series: series,\r\n options: {\r\n chart: {\r\n height: 350,\r\n type: 'line',\r\n zoom: {\r\n enabled: false\r\n },\r\n events: {\r\n click: dataPointSelection,\r\n },\r\n toolbar:{\r\n tools:{\r\n download:false,\r\n }\r\n }\r\n },\r\n dataLabels: {\r\n enabled: false\r\n },\r\n stroke: {\r\n curve: 'straight'\r\n },\r\n title: {\r\n text: '',\r\n align: 'left'\r\n },\r\n grid: {\r\n row: {\r\n colors: ['#f3f3f3', 'transparent'], // takes an array which will be repeated on columns\r\n opacity: 0.5\r\n },\r\n },\r\n xaxis: {\r\n categories: categories\r\n },\r\n noData:{\r\n text: 'No Data Found',\r\n \r\n }\r\n },\r\n\r\n\r\n };\r\n }\r\n const barOptoins = (values: SeriesMeasure[]):ApexChartArgs => {\r\n var series: any = [{\r\n data: []\r\n }];\r\n var categories: any = [];\r\n if (values && values[0]) {\r\n series = values.map(e => {\r\n return { data: e.SeriesMeasureVulues.map(z => z.Value) }\r\n }\r\n );\r\n categories = values[0].SeriesMeasureVulues.map(e => e.Label);\r\n }\r\n return {\r\n series: series\r\n ,\r\n options: {\r\n chart: {\r\n type: 'bar',\r\n height: 430,\r\n events: {\r\n dataPointSelection: dataPointSelection\r\n },\r\n toolbar:{\r\n tools:{\r\n download:false,\r\n }\r\n }\r\n },\r\n plotOptions: {\r\n bar: {\r\n horizontal: true,\r\n dataLabels: {\r\n position: 'top',\r\n },\r\n }\r\n },\r\n dataLabels: {\r\n enabled: true,\r\n offsetX: -6,\r\n style: {\r\n fontSize: '12px',\r\n colors: ['#fff']\r\n }\r\n },\r\n stroke: {\r\n show: true,\r\n width: 1,\r\n colors: ['#fff']\r\n },\r\n tooltip: {\r\n shared: true,\r\n intersect: false\r\n },\r\n xaxis: {\r\n categories: categories\r\n\r\n },\r\n noData:{\r\n text: 'No Data Found',\r\n \r\n }\r\n },\r\n\r\n\r\n };\r\n }\r\n const pieOptoins = (values: SeriesMeasure[]): ApexChartArgs => {\r\n\r\n var series: any = [];\r\n var labels: any = [];\r\n if (values && values[0]) {\r\n series = values[0].SeriesMeasureVulues.map(e => e.Value);\r\n labels = values[0].SeriesMeasureVulues.map(e => e.Label);\r\n }\r\n return {\r\n\r\n series: series,\r\n options: {\r\n chart: {\r\n type: 'pie',\r\n events: {\r\n dataPointSelection: dataPointSelection\r\n },\r\n toolbar:{\r\n tools:{\r\n download:false,\r\n }\r\n }\r\n },\r\n labels: labels,\r\n noData:{\r\n text: 'No Data Found',\r\n \r\n }\r\n\r\n },\r\n\r\n\r\n\r\n };\r\n }\r\n const donutOptoins = (values: SeriesMeasure[]): ApexChartArgs => {\r\n var series: any = [];\r\n var labels: any = [];\r\n if (values && values[0]) {\r\n series = values[0].SeriesMeasureVulues.map(e => e.Value);\r\n labels = values[0].SeriesMeasureVulues.map(e => e.Label);\r\n }\r\n var result: { series, options: ApexOptions } = {\r\n\r\n series: series,\r\n options: {\r\n chart: {\r\n width: 380,\r\n type: 'donut',\r\n events: {\r\n dataPointSelection: dataPointSelection\r\n },\r\n toolbar:{\r\n tools:{\r\n download:false,\r\n }\r\n }\r\n },\r\n dataLabels: {\r\n enabled: false\r\n },\r\n responsive: [{\r\n breakpoint: 480,\r\n options: {\r\n chart: {\r\n width: 200\r\n },\r\n legend: {\r\n show: false\r\n }\r\n }\r\n }],\r\n legend: {\r\n position: 'right',\r\n offsetY: 0,\r\n height: 230,\r\n },\r\n labels: labels,\r\n noData:{\r\n text: 'No Data Found',\r\n \r\n }\r\n },\r\n\r\n\r\n };\r\n return result;\r\n }\r\n\r\n const handelNullLabels = (values: SeriesMeasure[]) => {\r\n values.forEach(element => {\r\n element.SeriesMeasureVulues.forEach(value => {\r\n if (!value.Label || value.Label == '')\r\n value.Label = 'Not defined'\r\n });\r\n });\r\n }\r\n\r\n\r\n\r\n\r\n const dataPointSelection = (e: any, chart?: any, options?: any): void => {\r\n props.onSelectDataPoint({\r\n GroupById:GroupByIds.current[options.dataPointIndex],\r\n MeasureFieldId:MeasuresIds.current[options.seriesIndex],\r\n Widget:props.widget\r\n })\r\n };\r\n\r\n const getChartOptions = (values: SeriesMeasure[]):ApexChartArgs => {\r\n handelNullLabels(values);\r\n switch (props.widget?.TypeCode) {\r\n case 'bar':\r\n return barOptoins(values);\r\n break;\r\n case 'line':\r\n return lineOptoins(values);\r\n break;\r\n case 'pie':\r\n return pieOptoins(values);\r\n break;\r\n case 'donut':\r\n return donutOptoins(values);\r\n break;\r\n default:\r\n break;\r\n }\r\n return barOptoins(values);\r\n };\r\n\r\n return (\r\n !isView && !viewError ?\r\n <div className={'dl-full-hight dl-flex-content-center spinner-custome'}>\r\n <ProgressSpinner style={{ width: '100px', height: '100px' }} strokeWidth=\"4\" animationDuration=\"2s\" />\r\n </div>\r\n :\r\n isView ?\r\n <ReactApexChart\r\n options={args?.options}\r\n series={args?.series}\r\n type={props.widget?.TypeCode}\r\n height={\"100%\"}\r\n width={\"100%\"}\r\n\r\n />\r\n : <div className=\"dl-flex-content-center dl-full-hight \" >\r\n <div className=\"dl-tooltip\">\r\n <img width={100} src={\"https://www.seekpng.com/png/full/334-3345964_error-icon-png.png\"} />\r\n <span className=\"dl-tooltiptext\">{error}</span>\r\n </div>\r\n\r\n\r\n </div>\r\n\r\n\r\n )\r\n}\r\nexport type ApexChartArgs = {\r\n options: ApexOptions;\r\n series: ApexAxisChartSeries | ApexNonAxisChartSeries;\r\n}\r\n\r\nexport default ApexChart;\r\n\r\n","import { stat } from \"fs\";\r\nimport { Button } from \"primereact/button\";\r\nimport { OverlayPanel } from \"primereact/overlaypanel\";\r\nimport React, { useRef, useState, useEffect } from \"react\";\r\nimport { DataPointSelection } from \"../../types/SeriesMeasure\";\r\nimport { ReactWidgetPM } from \"../../types/widget\";\r\nimport ApexChart from \"./ChartsComponents/ApexChart\";\r\n\r\n\r\n\r\ntype WidgetCardProps = {\r\n editBtnClicked(widget: any): any;\r\n deleteBtnClicked(i: any): any;\r\n widget: ReactWidgetPM | undefined;\r\n el: any;\r\n dateFilter: any;\r\n isInEditMode: boolean;\r\n onSelectDataPoint:(dataPointSelection:DataPointSelection) =>void;\r\n}\r\n\r\n\r\nconst WidgetCard = (props: WidgetCardProps, state: any) => {\r\n const moreBtnToggle = useRef<OverlayPanel>(null);\r\n \r\n\r\n const editWidget = ()=>{\r\n moreBtnToggle.current?.hide();\r\n props.editBtnClicked(props.widget)\r\n };\r\n\r\n\r\n return (\r\n <div className=\"panel\" key={props.el.i}>\r\n <header>\r\n <h1>{props.widget?.Title || \"not set\"}</h1>\r\n {\r\n props.isInEditMode ? \r\n <Button\r\n icon=\"pi pi-ellipsis-v\"\r\n className=\"p-button-lg p-button-rounded p-button-text\"\r\n onClick={(e) => moreBtnToggle.current?.toggle(e)}\r\n /> \r\n : null\r\n }\r\n\r\n\r\n <OverlayPanel ref={moreBtnToggle} className=\"buttons-overlay\">\r\n <div className=\"buttons-list\">\r\n <div onClick={editWidget} > Edit </div>\r\n <div onClick={() => props.deleteBtnClicked(props.widget?.key)} >Remove</div>\r\n </div>\r\n </OverlayPanel>\r\n </header>\r\n\r\n <div className=\"dl-dashboard-widget\">\r\n <ApexChart widget={props.widget} onSelectDataPoint={props.onSelectDataPoint} />\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\nimport { DataPointSelection } from \"../../types/SeriesMeasure\";\r\n\r\nconst ResponsiveReactGridLayout = WidthProvider(Responsive);\r\nconst newWidgetWidth = 3;\r\n\r\ntype DashboardDesignerProps = {\r\n editMode: boolean,\r\n dashboardLayouts: { lg: ReactWidgetPM[] },\r\n openEditWidget: (widget: ReactWidgetPM) => void\r\n onLayoutChange: (layouts: Layouts) => void,\r\n onSelectDataPoint:(dataPointSelection:DataPointSelection) =>void\r\n};\r\nconst DashboardDesigner = (props: DashboardDesignerProps) => {\r\n\r\n\r\n const array12 = Array.from({ length: 12 }).fill(null);\r\n const minimumPlaceholderRowsCount = 12;\r\n const [layouts, setLayouts] = useState<Layouts>({ lg: [] });\r\n const [placeholderRowsArray, setplaceholderRowsArray] = useState(Array.from({ length: minimumPlaceholderRowsCount }).fill(null));\r\n const [firstChange, setFirstChange] = useState(true);\r\n const [dateFilter, setDateFilter] = useState<Date | Date[] | undefined>(undefined);\r\n const [isInEditMode, setisInEditMode] = useState(false);\r\n const [widgets, setWidgets] = useState<{ lg: ReactWidgetPM[] }>({ lg: [] });\r\n const gridLayoutComponent = useRef<any>(null);\r\n\r\n useEffect(() => {\r\n setFirstChange(true);\r\n setLayouts({});\r\n setLayouts(createLayout());\r\n setWidgets(props.dashboardLayouts);\r\n }, [props.dashboardLayouts]);\r\n\r\n const createLayout = (): Layouts => {\r\n var layout: any = { lg: [] };\r\n props.dashboardLayouts.lg.map(w => w.Layout as Layout).forEach(e => {\r\n layout.lg.push(e)\r\n })\r\n return layout;\r\n }\r\n useEffect(() => {\r\n setisInEditMode(props.editMode);\r\n console.log(' setisInEditMode(props.editMode);')\r\n }, [props.editMode]);\r\n\r\n\r\n // const applyModeSetting = () => {\r\n // layouts.current.lg.forEach(element => {\r\n // element.isDraggable = props.editMode;\r\n // element.isResizable = props.editMode;\r\n\r\n // });\r\n // }\r\n\r\n function reset() {\r\n window.localStorage.clear();\r\n window.location.reload();\r\n }\r\n\r\n function onLayoutChange(layout: any, changedLayouts: Layouts) {\r\n if (firstChange) {\r\n setFirstChange(false);\r\n return;\r\n }\r\n setLayouts(changedLayouts);\r\n UpdatePlaceholderDimensions();\r\n props.onLayoutChange(changedLayouts)\r\n }\r\n\r\n function deletePanel(id) {\r\n var newLayouts = { lg: layouts.lg.filter(e => e.i != id) }\r\n\r\n setLayouts(newLayouts);\r\n\r\n var newWidgets = { lg: widgets.lg.filter(e => e.key != id) }\r\n setWidgets(newWidgets);\r\n props.onLayoutChange(newLayouts)\r\n };\r\n\r\n function editWidget(widget: ReactWidgetPM) {\r\n widget.ChangeSetOp = 'Update';\r\n props.openEditWidget(widget);\r\n };\r\n\r\n\r\n function UpdatePlaceholderDimensions() {\r\n var gridLayout = gridLayoutComponent.current;\r\n if (!gridLayout)\r\n return;\r\n console.log('setplaceholderRowsArray(',gridLayout);\r\n const gridElementHeight = gridLayout.elementRef.current.clientHeight;\r\n\r\n let newPlaceholderRows = Math.floor(gridElementHeight / layoutGridProps.rowHeight);\r\n newPlaceholderRows = newPlaceholderRows < minimumPlaceholderRowsCount ? minimumPlaceholderRowsCount : newPlaceholderRows;\r\n setplaceholderRowsArray(Array.from({ length: newPlaceholderRows }).fill(null));\r\n console.log('setplaceholderRowsArray(',newPlaceholderRows);\r\n }\r\n return (<div className=\"dl-full-hight\">\r\n <div className=\"dl-box\">\r\n {/* <div className=\"dl-row dl-header\">\r\n {renderPageHeader()}\r\n </div> */}\r\n <div className=\"dl-row dl-content\">\r\n <div className=\"dl-grid-container\">\r\n <div className=\"dl-grid dl-grid--bordered\">\r\n {isInEditMode ? placeholderRowsArray.map((e, i) =>\r\n array12.map((e, i) => (\r\n <div key={i}\r\n style={{\r\n height: layoutGridProps.rowHeight,\r\n }}\r\n ></div>\r\n ))\r\n \r\n ) : null}\r\n </div>\r\n\r\n\r\n <ResponsiveReactGridLayout ref={gridLayoutComponent}\r\n {...layoutGridProps}\r\n layouts={layouts}\r\n compactType=\"vertical\"\r\n isDraggable={isInEditMode}\r\n isResizable={isInEditMode}\r\n onWidthChange={() => UpdatePlaceholderDimensions()}\r\n onLayoutChange={(layout, layouts) =>\r\n onLayoutChange(layout, layouts)\r\n }\r\n >\r\n {widgets.lg.map((widget) =>\r\n\r\n <div key={widget.Layout?.i}>\r\n <WidgetCard\r\n isInEditMode={isInEditMode}\r\n key={widget.Layout?.i}\r\n widget={widget}\r\n el={widget}\r\n dateFilter={dateFilter}\r\n editBtnClicked={editWidget}\r\n deleteBtnClicked={deletePanel}\r\n onSelectDataPoint={props.onSelectDataPoint}\r\n />\r\n </div>\r\n )}\r\n </ResponsiveReactGridLayout>\r\n </div>\r\n\r\n </div>\r\n {/* <div className=\"dl-row dl-footer\">\r\n <p><b>footer</b> (fixed height)</p>\r\n </div> */}\r\n </div>\r\n {/* {renderNewWidgetDialog()} */}\r\n\r\n\r\n\r\n\r\n\r\n </div>);\r\n\r\n}\r\n\r\n\r\nexport const layoutGridProps = {\r\n rowHeight: 50,\r\n className: \"layout\",\r\n cols: { lg: 12, md: 6, sm: 2, xs: 1, xxs: 1 },\r\n useCSSTransforms: true,\r\n}\r\n\r\n\r\n\r\n\r\nexport const WidgetTypes = [\r\n { Name: \"Filter\", Disabled: true },\r\n { Name: \"Chart\", Disabled: false },\r\n { Name: \"Data Table\", Disabled: true },\r\n { Name: \"Pivot Table\", Disabled: true },\r\n { Name: \"KPI\", Disabled: true },\r\n { Name: \"Gauge\", Disabled: true },\r\n];\r\nexport const widgetComponents = [\r\n { type: \"Bar\", component: BarChartComponent },\r\n { type: \"Column\", component: ColumnChartComponent },\r\n { type: \"Pie\", component: PieChartComponent },\r\n { type: \"Mixed\", component: MixedChartComponent },\r\n { type: \"Timeline\", component: TimelineChartComponent },\r\n { type: \"Candle\", component: CandleChartComponent },\r\n { type: \"Area\", component: AreaChartComponent },\r\n];\r\n\r\n\r\nexport default DashboardDesigner;\r\n","import 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\nimport { DataPointSelection } from './types/SeriesMeasure';\r\n\r\ntype DashboardProps = {\r\n token: string,\r\n tenant: number,\r\n userId: string,\r\n dataBinding: DashboardDataBinding,\r\n 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 onSelectDataPoint:(dataPointSelection:DataPointSelection) =>void;\r\n};\r\nconst Dashboard = (props: DashboardProps) => {\r\n const newWidgetWidth = 3;\r\n const newWidgetHeight = 5;\r\n\r\n const [dashbords, setDashbords] = useState<ReactDashboardPM[]>([]);\r\n const [currentDashbord, setCurrentDashbord] = useState<ReactDashboardPM | undefined>(undefined);\r\n const [beforEditDashbord, setBeforEditDashbord] = useState<ReactDashboardPM | undefined>(undefined);\r\n const [hasChanges, setHasChanges] = useState(false);\r\n const [isInEditMode, setIsInEditMode] = useState<boolean>(false);\r\n const [WidgetTypes, setWidgetTypes] = useState<WidgetType[]>();\r\n const [layouts, setLayouts] = useState<{ lg: ReactWidgetPM[] }>({ lg: [] });\r\n const [cancelConfirmDialog, setCancelConfirmDialog] = useState(false);\r\n const dashboardMoreButtonToggle = createRef<OverlayPanel>();\r\n const dashboardService = new DashBoardService();\r\n const widgetTypeListService = new WidgetTypeListService();\r\n useEffect(() => {\r\n getWidgetTypes();\r\n\r\n props.dataBinding.onGetDashboard.subscribe(e => {\r\n console.log('onGetDashboard.subscribe', e)\r\n setCurrentDashbord(e);\r\n applyLayouts(e);\r\n })\r\n props.dataBinding.onGetAllDashboards.subscribe(e => {\r\n console.log('onGetAllDashboard.subscribe', e)\r\n\r\n setDashbords(e);\r\n });\r\n\r\n props.dataBinding.onAddUpdateWidget.subscribe(isUpdated => {\r\n if (!isUpdated)\r\n return;\r\n setHasChanges(true);\r\n });\r\n\r\n }, [])\r\n\r\n Session.CurrentUserId = props.userId;\r\n Session.Tenant = props.tenant;\r\n Session.Token = props.token;\r\n if (props?.token?.length > 0)\r\n localStorage.setItem(\"token\", props?.token);\r\n\r\n\r\n const getWidgetTypes = () => {\r\n widgetTypeListService.getAll().then(data => {\r\n setWidgetTypes(data.data);\r\n });\r\n }\r\n const EditDashBoard = () => {\r\n props.openAddEditDashboard(currentDashbord);\r\n dashboardMoreButtonToggle?.current?.hide();\r\n\r\n }\r\n const addWidget = (widgetCode) => {\r\n var position = EvaluateNewWidgetPosition();\r\n props.openAddEditWidget({ TypeCode: widgetCode, StartPotistion: `${position.x},${position.y}`, EndPosition: `${position.w},${position.h}`, ChangeSetOp: 'Insert' } as ReactWidgetPM);\r\n\r\n }\r\n const EvaluateNewWidgetPosition = () => {\r\n let widgetYPosition = 0;\r\n let widgetXPosition = 0;\r\n let allLayouts = layouts[\"lg\"].map(e => e.Layout);\r\n for (let y = 0; true; y++) {\r\n widgetYPosition = y;\r\n for (let x = 0; x < 10; x++) {\r\n widgetXPosition = x;\r\n\r\n var exisitWidgetInNewPosition = allLayouts.find(e => {\r\n return e\r\n && widgetXPosition < e.x + e.w && widgetXPosition + newWidgetWidth > e.x\r\n && widgetYPosition < e.y + e.h && widgetYPosition + newWidgetHeight > e.y\r\n });\r\n if (!exisitWidgetInNewPosition)\r\n return { x: widgetXPosition, y: widgetYPosition, w: newWidgetWidth, h: newWidgetHeight };\r\n }\r\n\r\n }\r\n\r\n }\r\n const editLayout = () => {\r\n setIsInEditMode(true);\r\n setHasChanges(false);\r\n dashboardMoreButtonToggle?.current?.hide();\r\n\r\n setBeforEditDashbord(deepClone(currentDashbord));\r\n }\r\n const save = () => {\r\n setIsInEditMode(false)\r\n console.log('onSaveDashboard > ', currentDashbord)\r\n props.onSaveDashboard(currentDashbord);\r\n onHide();\r\n\r\n setHasChanges(false);;\r\n }\r\n\r\n const cancelSave = () => {\r\n if (!hasChanges) {\r\n setIsInEditMode(false);\r\n setHasChanges(false);\r\n\r\n } else {\r\n setCancelConfirmDialog(true);\r\n }\r\n\r\n\r\n }\r\n\r\n const dontSave = () => {\r\n setHasChanges(false)\r\n setIsInEditMode(false);\r\n props.dataBinding.onGetDashboard.next(beforEditDashbord);\r\n setCancelConfirmDialog(false);\r\n }\r\n const changeDashboard = (event) => {\r\n if (event.value == currentDashbord?.Id)\r\n return;\r\n var dasboard = dashbords.find(e => e.Id == event.value);\r\n\r\n props.onChangeDashboard(dasboard);\r\n props.dataBinding.onGetDashboard.next(dasboard);\r\n\r\n }\r\n\r\n const applyLayouts = (dashbord: ReactDashboardPM | undefined) => {\r\n if ((!dashbord?.Widgets))\r\n return;\r\n var layout: { lg: ReactWidgetPM[] } = { lg: [] };\r\n dashbord?.Widgets.map(widget => {\r\n if (widget.Id && widget.Id.length > 0)\r\n widget.key = widget.Id;\r\n else\r\n widget.key = uuidv4();\r\n widget.Layout = {\r\n minH: 5,\r\n minW: 3,\r\n i: widget.key,\r\n w: +widget.EndPosition.split(',')[0],\r\n h: +widget.EndPosition.split(',')[1],\r\n x: +widget.StartPotistion.split(',')[0],\r\n y: +widget.StartPotistion.split(',')[1],\r\n }\r\n layout.lg.push(widget\r\n\r\n )\r\n });\r\n console.log('setLayouts -- > ', layout)\r\n setLayouts(layout);\r\n\r\n }\r\n const updateWidgets = (layouts: Layouts) => {\r\n console.log('updateWidgets = (layouts:Layouts', layouts)\r\n var layoutsDic: { [key: string]: Layout } = {};\r\n Object.keys(layouts).forEach(sizeType => {\r\n if (layouts[sizeType].length > 0) {\r\n layouts[sizeType].map(layout => {\r\n layoutsDic[layout.i] = layout;\r\n })\r\n return;\r\n }\r\n })\r\n var widgets: ReactWidgetPM[] = [];\r\n currentDashbord?.Widgets.forEach(widget => {\r\n if (layoutsDic[widget.key]) {\r\n widget.StartPotistion = `${layoutsDic[widget.key].x},${layoutsDic[widget.key].y}`;\r\n widget.EndPosition = `${layoutsDic[widget.key].w},${layoutsDic[widget.key].h}`;\r\n widget.Layout = layoutsDic[widget.key];\r\n widgets.push(widget)\r\n }\r\n\r\n });\r\n if (currentDashbord) {\r\n currentDashbord.Widgets = widgets;\r\n }\r\n console.log('after update widget', currentDashbord)\r\n setHasChanges(true);\r\n\r\n }\r\n\r\n const renderCancelConfirmDialogFooter = () => {\r\n return (\r\n <div className='dl-flex-row-end' >\r\n <Button label=\"Cancel\" onClick={() => onHide()} className=\"p-button-secondary\" />\r\n <Button label=\"Don't Save\" onClick={() => dontSave()} className=\"p-button-secondary\" />\r\n <Button label=\"Save\" onClick={() => save()} autoFocus className=\"p-button-warning\" />\r\n </div>\r\n );\r\n }\r\n const onHide = () => {\r\n setCancelConfirmDialog(false)\r\n }\r\n return (\r\n <div className='dl-full-hight'>\r\n\r\n <div className='dl-dashboard-header dl-card'>\r\n <div className='dl-flex-row dl-custom-btn'>\r\n <div className='dl-title-1'>{currentDashbord?.Name}</div>\r\n <Button\r\n icon=\"pi pi-ellipsis-v\"\r\n onClick={(e) => dashboardMoreButtonToggle?.current?.toggle(e)}\r\n className=\"p-button p-button-icon-only p-button-rounded p-button-text\"\r\n >\r\n <Ripple />\r\n </Button>\r\n <OverlayPanel ref={dashboardMoreButtonToggle} className=\"buttons-overlay\">\r\n <div className=\"buttons-list\">\r\n <div onClick={() => EditDashBoard()}>Edit</div>\r\n <div onClick={editLayout}>Edit Layout</div>\r\n\r\n </div>\r\n </OverlayPanel >\r\n </div>\r\n <div className='dl-flex-row'>\r\n {!isInEditMode ?\r\n <div className='dl-flex-row'>\r\n\r\n\r\n <div style={{ width: \"161px\" }}>\r\n <Dropdown\r\n value={[]}\r\n options={dashbords}\r\n optionValue=\"Id\"\r\n optionLabel=\"Name\"\r\n onChange={changeDashboard}\r\n placeholder=\"Choose Dashboard\"\r\n optionDisabled={(option) => {\r\n return option?.Disabled;\r\n }}\r\n scrollHeight=\"300px\"\r\n style={{ width: '100%' }}\r\n />\r\n </div>\r\n <Button icon=\"pi pi-plus\" onClick={() => props.openAddEditDashboard(undefined)}\r\n className=\"dl-dashboard-add p-button-rounded p-button-success\" />\r\n </div>\r\n : null}\r\n {/* <DashboardDialogComponent display={displayAddDashboard} onClose={onDashboardDialogClose}></DashboardDialogComponent> */}\r\n\r\n\r\n\r\n {isInEditMode ?\r\n <div className='dl-flex-row'>\r\n\r\n <Button\r\n label=\"Cancel\"\r\n className=\"p-button-secondary dl-m-r-s \"\r\n onClick={cancelSave}\r\n />\r\n\r\n <Dialog header=\"Unsaved Changes\" visible={cancelConfirmDialog} style={{ width: '50vw' }} footer={renderCancelConfirmDialogFooter()} onHide={onHide}>\r\n <p>This Dashboard has unsaved changes do you want to save it?</p>\r\n </Dialog>\r\n\r\n {hasChanges ?\r\n <Button\r\n label=\"Save\"\r\n form=\"frm\"\r\n // icon=\"pi pi-check\"\r\n onClick={save}\r\n autoFocus\r\n className={\"p-button-warning \"}\r\n /> : null\r\n }\r\n {!hasChanges ?\r\n <Button\r\n label=\"Save\"\r\n form=\"frm\"\r\n // icon=\"pi pi-check\"\r\n onClick={save}\r\n autoFocus\r\n className={\"p-button-secondary \"}\r\n /> : null\r\n }\r\n\r\n <div style={{ width: '192px', marginLeft: '15px' }}>\r\n <Dropdown\r\n options={WidgetTypes}\r\n optionValue=\"Code\"\r\n optionLabel=\"Name\"\r\n onChange={(e) => addWidget(e.value)}\r\n placeholder=\"Add Component\"\r\n optionDisabled={(option) => {\r\n return option?.Disabled;\r\n }}\r\n scrollHeight=\"300px\"\r\n />\r\n </div>\r\n </div>\r\n : null}\r\n </div>\r\n\r\n\r\n </div>\r\n\r\n <div className='dl-dashboard-body'>\r\n <DashboardDesigner onSelectDataPoint={props.onSelectDataPoint} editMode={isInEditMode} onLayoutChange={updateWidgets} dashboardLayouts={layouts} openEditWidget={(widget: ReactWidgetPM) => props.openAddEditWidget(widget)} ></DashboardDesigner>\r\n </div>\r\n </div >\r\n\r\n )\r\n}\r\nexport default Dashboard;\r\n\r\n"],"names":["Tools","GetLogitudeURL","logitude_url","location","href","replace","indexOf","urlArr","split","url","substring","lastIndexOf","length","ApiServices","_apiUrl","getByFilters","api","filters","token","getTokenFromStorage","apiURL","ConcatFiltersToURL","axios","get","headers","post","date","window","localStorage","getItem","urlparameters","mykeys","Object","keys","addtionalFiltersValues","i","propName","propValue","ignoreFilter","concat","encodeURIComponent","JSON","stringify","DashboardAnalyticsService","_ApiServices","getData","widget","controller","ApexChart","props","useState","error","setEror","MeasuresIds","useRef","GroupByIds","isView","setisView","viewError","setViewError","isDataLoaded","hasDataError","series","options","args","serArgs","isLoadingDrow","useEffect","setTimeout","current","updateView","console","log","dashboardAnalyticsService","then","result","fillIds","data","getChartOptions","response","ErrorMessage","message","EntityId","Filters","WidgetMeasures","datas","measuresIds","groupByIds","seriesMeasure","push","MeasureFieldId","SeriesMeasureVulues","vulue","GroupById","lineOptoins","values","categories","map","e","z","Value","Label","chart","height","type","zoom","enabled","events","click","dataPointSelection","toolbar","tools","download","dataLabels","stroke","curve","title","text","align","grid","row","colors","opacity","xaxis","noData","barOptoins","plotOptions","bar","horizontal","position","offsetX","style","fontSize","show","width","tooltip","shared","intersect","pieOptoins","labels","donutOptoins","responsive","breakpoint","legend","offsetY","handelNullLabels","forEach","element","value","onSelectDataPoint","dataPointIndex","seriesIndex","Widget","TypeCode","React","className","ProgressSpinner","strokeWidth","animationDuration","ReactApexChart","src","WidgetCard","state","moreBtnToggle","editWidget","hide","editBtnClicked","key","el","Title","isInEditMode","Button","icon","onClick","toggle","OverlayPanel","ref","deleteBtnClicked","ResponsiveReactGridLayout","WidthProvider","Responsive","DashboardDesigner","array12","Array","from","fill","minimumPlaceholderRowsCount","lg","layouts","setLayouts","placeholderRowsArray","setplaceholderRowsArray","firstChange","setFirstChange","undefined","dateFilter","setisInEditMode","widgets","setWidgets","gridLayoutComponent","createLayout","dashboardLayouts","layout","w","Layout","editMode","onLayoutChange","changedLayouts","UpdatePlaceholderDimensions","deletePanel","id","newLayouts","filter","newWidgets","ChangeSetOp","openEditWidget","gridLayout","gridElementHeight","elementRef","clientHeight","newPlaceholderRows","Math","floor","layoutGridProps","rowHeight","compactType","isDraggable","isResizable","onWidthChange","cols","md","sm","xs","xxs","useCSSTransforms","DashBoardService","getDataByFilters","tableName","add","WidgetTypeListService","getAll","deepClone","obj","parse","Dashboard","newWidgetWidth","newWidgetHeight","dashbords","setDashbords","currentDashbord","setCurrentDashbord","beforEditDashbord","setBeforEditDashbord","hasChanges","setHasChanges","setIsInEditMode","WidgetTypes","setWidgetTypes","cancelConfirmDialog","setCancelConfirmDialog","dashboardMoreButtonToggle","createRef","dashboardService","widgetTypeListService","getWidgetTypes","dataBinding","onGetDashboard","subscribe","applyLayouts","onGetAllDashboards","onAddUpdateWidget","isUpdated","setItem","EditDashBoard","openAddEditDashboard","addWidget","widgetCode","EvaluateNewWidgetPosition","openAddEditWidget","StartPotistion","x","y","EndPosition","h","widgetYPosition","widgetXPosition","allLayouts","exisitWidgetInNewPosition","find","editLayout","save","onSaveDashboard","onHide","cancelSave","dontSave","next","changeDashboard","event","Id","dasboard","onChangeDashboard","dashbord","Widgets","uuidv4","minH","minW","updateWidgets","layoutsDic","sizeType","renderCancelConfirmDialogFooter","label","autoFocus","Name","Ripple","Dropdown","optionValue","optionLabel","onChange","placeholder","optionDisabled","option","Disabled","scrollHeight","Dialog","header","visible","footer","form","marginLeft"],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sources":["../src/services/tools.ts","../src/services/ApiServices.ts","../src/services/DashboardAnalyticsService.ts","../src/features/Dashboard/ChartsComponents/ApexChart.tsx","../src/features/Dashboard/WidgetCard.tsx","../src/features/Dashboard/DashboardDesigner.tsx","../src/services/DashBoardService.ts","../src/services/WidgetTypeListService.ts","../src/services/clone.ts","../src/index.tsx"],"sourcesContent":["export class Tools{\r\n public static GetLogitudeURL() {\r\n\r\n var logitude_url = location.href.replace('index.html', '');\r\n\r\n if (location.href.indexOf('localhost') > -1) {\r\n logitude_url = 'http://localhost:9996';//localhost:9996//';//\r\n }\r\n\r\n else {\r\n var urlArr = location.href.split(\"/index.html\");\r\n var url = urlArr[0];\r\n url = url.replace(url.substring(url.lastIndexOf('/'), url.length), \"\");\r\n logitude_url = url ;\r\n }\r\n\r\n return logitude_url;\r\n }\r\n}","import axios from \"axios\";\r\nimport { ApiQueryFilters } from \"../common/data-contracts/ApiQueryFilter\";\r\nimport { APIResult } from \"../types/APIResult\";\r\nimport { Tools } from './tools';\r\n\r\n\r\nexport class ApiServices{ \r\n private _apiUrl: string;\r\n constructor(){\r\n this._apiUrl = Tools.GetLogitudeURL() ;\r\n }\r\n getByFilters<T>(api,filters: ApiQueryFilters) {\r\n \r\n let token: string = this.getTokenFromStorage();\r\n\t\tvar apiURL = `${this._apiUrl}${api}`;\r\n\t\tapiURL = this.ConcatFiltersToURL(filters, apiURL);\r\n\r\n return axios.get<APIResult<T>>(apiURL, { headers: { 'Content-Type': 'application/json', 'Token': token } });\r\n }\r\n get<T>(api) {\r\n \r\n let token: string = this.getTokenFromStorage();\r\n\t\tvar apiURL = `${this._apiUrl}${api}`;\r\n return axios.get<T>(apiURL, { headers: { 'Content-Type': 'application/json', 'Token': token } });\r\n }\r\n post<T>(api,date){\r\n let token: string = this.getTokenFromStorage();\r\n\t\tvar apiURL = `${this._apiUrl}${api}`;\r\n return axios.post<T>(apiURL,date, { headers: { 'Content-Type': 'application/json', 'Token': token } });\r\n }\r\n\r\n getTokenFromStorage(){\r\n return window.localStorage.getItem(\"token\") || '';\r\n }\r\n private ConcatFiltersToURL(filters: ApiQueryFilters, urlparameters: string)\r\n {\r\n var mykeys = Object.keys(filters);\r\n var addtionalFiltersValues: string | null = null;\r\n\r\n for (var i in mykeys) {\r\n var propName = mykeys[i];\r\n var propValue = filters[propName];\r\n var ignoreFilter = ((propName.indexOf(\"Operator\") > 0 && propValue == \"Equals\") || propName == \"AdditionalFilters\");\r\n\r\n if (urlparameters != \"?\") {\r\n urlparameters = urlparameters.concat('&');\r\n }\r\n\r\n if (!ignoreFilter) {\r\n propValue = propValue ? encodeURIComponent(propValue) : '';\r\n urlparameters = urlparameters.concat(propName.concat('=').concat(propValue));\r\n }\r\n\r\n if (propName == \"AdditionalFilters\" && propValue.length > 0) {\r\n addtionalFiltersValues = JSON.stringify(propValue);\r\n }\r\n }\r\n\r\n if (addtionalFiltersValues) {\r\n urlparameters = urlparameters.concat(\"&AdditionalFilters=\").concat(addtionalFiltersValues);\r\n }\r\n return urlparameters;\r\n }\r\n}","import axios from \"axios\";\r\nimport { ApiQueryFilters } from \"../common/data-contracts/ApiQueryFilter\";\r\nimport { ReactDashboardPM } from \"../types/Dashboard\";\r\nimport { SeriesMeasure } from \"../types/SeriesMeasure\";\r\nimport { ApiServices } from \"./ApiServices\";\r\nimport { Tools } from './tools';\r\nimport { ReactWidgetPM } from '../types/widget';\r\n\r\n\r\nexport class DashboardAnalyticsService{ \r\n _ApiServices:ApiServices;\r\n controller = 'DashboardAnalytics';\r\n constructor(){\r\n this._ApiServices = new ApiServices();\r\n }\r\n \r\n\r\n getData(widget: ReactWidgetPM) {\r\n return this._ApiServices.post<SeriesMeasure[]>(`/api/${this.controller}/PostGetDataAnalytic`,widget);\r\n }\r\n \r\n}","import React, { useEffect, useRef } from \"react\";\r\nimport ReactApexChart from \"react-apexcharts\";\r\nimport { ProgressSpinner } from 'primereact/progressspinner';\r\nimport { ReactWidgetPM } from \"../../../types/widget\";\r\nimport { useState } from 'react';\r\nimport { DashboardAnalyticsService } from \"../../../services/DashboardAnalyticsService\";\r\nimport { DataPointSelection, SeriesMeasure } from '../../../types/SeriesMeasure';\r\nimport { ApexOptions } from \"apexcharts\";\r\n\r\ntype ApexChartProps = {\r\n widget: ReactWidgetPM | undefined,\r\n onSelectDataPoint: (dataPointSelection: DataPointSelection) => void;\r\n};\r\nconst ApexChart = (props: ApexChartProps) => {\r\n\r\n const [error, setEror] = useState<string>('');\r\n const MeasuresIds = useRef<string[]>([]);\r\n const GroupByIds = useRef<string[]>([]);\r\n const GroupCount = useRef<number>(0);\r\n const [isView, setisView] = useState<boolean>(false);\r\n const [viewError, setViewError] = useState<boolean>(false);\r\n const isDataLoaded = useRef<boolean>(false);\r\n const hasDataError = useRef<boolean>(false);\r\n const [args, serArgs] = useState<ApexChartArgs>({\r\n series: [],\r\n options: {}\r\n });\r\n const isLoadingDrow = useRef(true);\r\n\r\n useEffect(() => {\r\n setTimeout(function () {\r\n isLoadingDrow.current = false;\r\n updateView();\r\n }, 500);\r\n }, [])\r\n useEffect(() => {\r\n console.log('useEffect ApexChart', props.widget);\r\n var dashboardAnalyticsService = new DashboardAnalyticsService();\r\n dashboardAnalyticsService.getData(props.widget as ReactWidgetPM).then(result => {\r\n fillIds(result.data);\r\n const data = getChartOptions(result.data);\r\n serArgs(data);\r\n isDataLoaded.current = true;\r\n hasDataError.current = false;\r\n updateView();\r\n }, error => {\r\n console.log('error', error);\r\n if (error?.response?.data?.ErrorMessage)\r\n setEror(error?.response?.data?.ErrorMessage);\r\n else\r\n setEror(error.message);\r\n isDataLoaded.current = true;\r\n hasDataError.current = true;\r\n updateView();\r\n })\r\n\r\n\r\n }, [props.widget?.EntityId, props.widget?.Filters, props.widget?.WidgetMeasures]);\r\n\r\n const fillIds = (datas: SeriesMeasure[]) => {\r\n var measuresIds: string[] = [];\r\n var groupByIds: string[] = [];\r\n for (const seriesMeasure of datas) {\r\n measuresIds.push(seriesMeasure.MeasureFieldId);\r\n }\r\n\r\n for (const seriesMeasure of datas) {\r\n for (const vulue of seriesMeasure.SeriesMeasureVulues) {\r\n groupByIds.push(vulue.GroupById);\r\n }\r\n break;\r\n }\r\n\r\n MeasuresIds.current = measuresIds;\r\n GroupByIds.current = groupByIds;\r\n\r\n }\r\n const updateView = () => {\r\n if (isDataLoaded.current && !isLoadingDrow.current && !hasDataError.current) {\r\n setisView(true);\r\n setViewError(false);\r\n }\r\n\r\n if (isDataLoaded.current && !isLoadingDrow.current && hasDataError.current) {\r\n setisView(false);\r\n setViewError(true);\r\n }\r\n\r\n }\r\n\r\n const lineOptoins = (values: SeriesMeasure[]): ApexChartArgs => {\r\n\r\n\r\n var series: any = [];\r\n var categories: any = [];\r\n if (values && values[0]) {\r\n series = values.map(e => {\r\n return { data: e.SeriesMeasureVulues.map(z => z.Value) }\r\n }\r\n );\r\n categories = values[0].SeriesMeasureVulues.map(e => e.Label);\r\n }\r\n\r\n return {\r\n\r\n series: series,\r\n options: {\r\n chart: {\r\n height: 350,\r\n type: 'line',\r\n zoom: {\r\n enabled: false\r\n },\r\n events: {\r\n click: dataPointSelection,\r\n },\r\n toolbar: {\r\n tools: {\r\n download: false,\r\n }\r\n }\r\n },\r\n dataLabels: {\r\n enabled: false\r\n },\r\n stroke: {\r\n curve: 'straight'\r\n },\r\n title: {\r\n text: '',\r\n align: 'left'\r\n },\r\n grid: {\r\n row: {\r\n colors: ['#f3f3f3', 'transparent'], // takes an array which will be repeated on columns\r\n opacity: 0.5\r\n },\r\n },\r\n xaxis: {\r\n categories: categories\r\n },\r\n noData: {\r\n text: 'No Data Found',\r\n\r\n }\r\n },\r\n\r\n\r\n };\r\n }\r\n const barOptoins = (values: SeriesMeasure[]): ApexChartArgs => {\r\n var series: any = [{\r\n data: []\r\n }];\r\n var categories: any = [];\r\n if (values && values[0]) {\r\n series = values.map(e => {\r\n return { data: e.SeriesMeasureVulues.map(z => z.Value) }\r\n }\r\n );\r\n categories = values[0].SeriesMeasureVulues.map(e => e.Label);\r\n }\r\n return {\r\n series: series\r\n ,\r\n options: {\r\n chart: {\r\n type: 'bar',\r\n height: 430,\r\n events: {\r\n dataPointSelection: dataPointSelection\r\n },\r\n toolbar: {\r\n tools: {\r\n download: false,\r\n }\r\n }\r\n },\r\n plotOptions: {\r\n bar: {\r\n horizontal: true,\r\n dataLabels: {\r\n position: 'top',\r\n },\r\n }\r\n },\r\n dataLabels: {\r\n enabled: true,\r\n offsetX: -6,\r\n style: {\r\n fontSize: '12px',\r\n colors: ['#fff']\r\n }\r\n },\r\n stroke: {\r\n show: true,\r\n width: 1,\r\n colors: ['#fff']\r\n },\r\n tooltip: {\r\n shared: true,\r\n intersect: false\r\n },\r\n xaxis: {\r\n categories: categories\r\n\r\n },\r\n noData: {\r\n text: 'No Data Found',\r\n\r\n }\r\n },\r\n\r\n\r\n };\r\n }\r\n const pieOptoins = (values: SeriesMeasure[]): ApexChartArgs => {\r\n\r\n var series: any = [];\r\n var labels: any = [];\r\n if (values && values[0]) {\r\n series = values[0].SeriesMeasureVulues.map(e => e.Value);\r\n labels = values[0].SeriesMeasureVulues.map(e => e.Label);\r\n }\r\n var colors = CreateColors(labels.length);\r\n\r\n return {\r\n\r\n series: series,\r\n options: {\r\n chart: {\r\n type: 'pie',\r\n events: {\r\n dataPointSelection: dataPointSelection\r\n },\r\n toolbar: {\r\n tools: {\r\n download: false,\r\n }\r\n }\r\n },\r\n labels: labels,\r\n colors:colors,\r\n noData: {\r\n text: 'No Data Found',\r\n\r\n }\r\n\r\n },\r\n\r\n\r\n\r\n };\r\n }\r\n const CreateColors = (count: number): any[] | undefined => {\r\n GroupCount.current = count;\r\n var colors: any[] = [];\r\n CreateDeferuntColors(colors, 0, 100, 50);\r\n if (GroupCount.current <= 0)\r\n return colors;\r\n CreateDeferuntColors(colors, 15, 100, 50);\r\n if (GroupCount.current <= 0)\r\n return colors;\r\n CreateDeferuntColors(colors, 0, 50, 50);\r\n if (GroupCount.current <= 0)\r\n return colors;\r\n CreateDeferuntColors(colors, 15, 50, 50);\r\n if (GroupCount.current <= 0)\r\n return colors;\r\n CreateDeferuntColors(colors, 0, 50, 30);\r\n if (GroupCount.current <= 0)\r\n return colors;\r\n CreateDeferuntColors(colors, 15, 50, 30);\r\n if (GroupCount.current <= 0)\r\n return colors;\r\n\r\n return undefined;\r\n\r\n\r\n }\r\n const CreateDeferuntColors = (colors: any[], startAngle: number, s: number, v: number) => {\r\n for (let index = 0; GroupCount.current > 0 && index < 12; index++) {\r\n var color = `hsl(${startAngle + index * 30}deg ${s}% ${v}%)`;\r\n colors.push(color);\r\n GroupCount.current--;\r\n }\r\n }\r\n const donutOptoins = (values: SeriesMeasure[]): ApexChartArgs => {\r\n var series: any[] = [];\r\n var labels: any[] = [];\r\n if (values && values[0]) {\r\n series = values[0].SeriesMeasureVulues.map(e => e.Value);\r\n labels = values[0].SeriesMeasureVulues.map(e => e.Label);\r\n var ll = labels.length;\r\n for (let index = 0; index < ll; index++) {\r\n series[index] = 100;\r\n series.push(100);\r\n labels.push(labels[index]+'TT');\r\n }\r\n for (let index = 0; index < ll; index++) {\r\n series.push(100);\r\n labels.push(labels[index]+'TT2');\r\n }\r\n }\r\n var colors = CreateColors(labels.length);\r\n var result: { series, options: ApexOptions } = {\r\n\r\n series: series,\r\n options: {\r\n chart: {\r\n width: 380,\r\n type: 'donut',\r\n events: {\r\n dataPointSelection: dataPointSelection\r\n },\r\n toolbar: {\r\n tools: {\r\n download: false,\r\n }\r\n }\r\n },\r\n dataLabels: {\r\n enabled: false\r\n },\r\n responsive: [{\r\n breakpoint: 480,\r\n options: {\r\n chart: {\r\n width: 200\r\n },\r\n legend: {\r\n show: false\r\n }\r\n }\r\n }],\r\n legend: {\r\n position: 'right',\r\n offsetY: 0,\r\n height: 230,\r\n },\r\n labels: labels,\r\n colors:colors,\r\n noData: {\r\n text: 'No Data Found',\r\n\r\n }\r\n },\r\n\r\n\r\n };\r\n return result;\r\n }\r\n\r\n const handelNullLabels = (values: SeriesMeasure[]) => {\r\n values.forEach(element => {\r\n element.SeriesMeasureVulues.forEach(value => {\r\n if (!value.Label || value.Label == '')\r\n value.Label = 'Not defined'\r\n });\r\n });\r\n }\r\n\r\n\r\n\r\n\r\n const dataPointSelection = (e: any, chart?: any, options?: any): void => {\r\n props.onSelectDataPoint({\r\n GroupById: GroupByIds.current[options.dataPointIndex],\r\n MeasureFieldId: MeasuresIds.current[options.seriesIndex],\r\n Widget: props.widget\r\n })\r\n };\r\n\r\n const getChartOptions = (values: SeriesMeasure[]): ApexChartArgs => {\r\n handelNullLabels(values);\r\n switch (props.widget?.TypeCode) {\r\n case 'bar':\r\n return barOptoins(values);\r\n break;\r\n case 'line':\r\n return lineOptoins(values);\r\n break;\r\n case 'pie':\r\n return pieOptoins(values);\r\n break;\r\n case 'donut':\r\n return donutOptoins(values);\r\n break;\r\n default:\r\n break;\r\n }\r\n return barOptoins(values);\r\n };\r\n\r\n return (\r\n !isView && !viewError ?\r\n <div className={'dl-full-hight dl-flex-content-center spinner-custome'}>\r\n <ProgressSpinner style={{ width: '100px', height: '100px' }} strokeWidth=\"4\" animationDuration=\"2s\" />\r\n </div>\r\n :\r\n isView ?\r\n <ReactApexChart\r\n options={args?.options}\r\n series={args?.series}\r\n type={props.widget?.TypeCode}\r\n height={\"100%\"}\r\n width={\"100%\"}\r\n\r\n />\r\n : <div className=\"dl-flex-content-center dl-full-hight \" >\r\n <div className=\"dl-tooltip\">\r\n <img width={100} src={\"https://www.seekpng.com/png/full/334-3345964_error-icon-png.png\"} />\r\n <span className=\"dl-tooltiptext\">{error}</span>\r\n </div>\r\n\r\n\r\n </div>\r\n\r\n\r\n )\r\n}\r\nexport type ApexChartArgs = {\r\n options: ApexOptions;\r\n series: ApexAxisChartSeries | ApexNonAxisChartSeries;\r\n}\r\n\r\nexport default ApexChart;\r\n\r\n\r\n","import { stat } from \"fs\";\r\nimport { Button } from \"primereact/button\";\r\nimport { OverlayPanel } from \"primereact/overlaypanel\";\r\nimport React, { useRef, useState, useEffect } from \"react\";\r\nimport { DataPointSelection } from \"../../types/SeriesMeasure\";\r\nimport { ReactWidgetPM } from \"../../types/widget\";\r\nimport ApexChart from \"./ChartsComponents/ApexChart\";\r\n\r\n\r\n\r\ntype WidgetCardProps = {\r\n editBtnClicked(widget: any): any;\r\n deleteBtnClicked(i: any): any;\r\n widget: ReactWidgetPM | undefined;\r\n el: any;\r\n dateFilter: any;\r\n isInEditMode: boolean;\r\n onSelectDataPoint:(dataPointSelection:DataPointSelection) =>void;\r\n}\r\n\r\n\r\nconst WidgetCard = (props: WidgetCardProps, state: any) => {\r\n const moreBtnToggle = useRef<OverlayPanel>(null);\r\n \r\n\r\n const editWidget = ()=>{\r\n moreBtnToggle.current?.hide();\r\n props.editBtnClicked(props.widget)\r\n };\r\n\r\n\r\n return (\r\n <div className=\"panel\" key={props.el.i}>\r\n <header>\r\n <h1>{props.widget?.Title || \"not set\"}</h1>\r\n {\r\n props.isInEditMode ? \r\n <Button\r\n icon=\"pi pi-ellipsis-v\"\r\n className=\"p-button-lg p-button-rounded p-button-text\"\r\n onClick={(e) => moreBtnToggle.current?.toggle(e)}\r\n /> \r\n : null\r\n }\r\n\r\n\r\n <OverlayPanel ref={moreBtnToggle} className=\"buttons-overlay\">\r\n <div className=\"buttons-list\">\r\n <div onClick={editWidget} > Edit </div>\r\n <div onClick={() => props.deleteBtnClicked(props.widget?.key)} >Remove</div>\r\n </div>\r\n </OverlayPanel>\r\n </header>\r\n\r\n <div className=\"dl-dashboard-widget\">\r\n <ApexChart widget={props.widget} onSelectDataPoint={props.onSelectDataPoint} />\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\nimport { DataPointSelection } from \"../../types/SeriesMeasure\";\r\n\r\nconst ResponsiveReactGridLayout = WidthProvider(Responsive);\r\nconst newWidgetWidth = 3;\r\n\r\ntype DashboardDesignerProps = {\r\n editMode: boolean,\r\n dashboardLayouts: { lg: ReactWidgetPM[] },\r\n openEditWidget: (widget: ReactWidgetPM) => void\r\n onLayoutChange: (layouts: Layouts) => void,\r\n onSelectDataPoint:(dataPointSelection:DataPointSelection) =>void\r\n};\r\nconst DashboardDesigner = (props: DashboardDesignerProps) => {\r\n\r\n\r\n const array12 = Array.from({ length: 12 }).fill(null);\r\n const minimumPlaceholderRowsCount = 12;\r\n const [layouts, setLayouts] = useState<Layouts>({ lg: [] });\r\n const [placeholderRowsArray, setplaceholderRowsArray] = useState(Array.from({ length: minimumPlaceholderRowsCount }).fill(null));\r\n const [firstChange, setFirstChange] = useState(true);\r\n const [dateFilter, setDateFilter] = useState<Date | Date[] | undefined>(undefined);\r\n const [isInEditMode, setisInEditMode] = useState(false);\r\n const [widgets, setWidgets] = useState<{ lg: ReactWidgetPM[] }>({ lg: [] });\r\n const gridLayoutComponent = useRef<any>(null);\r\n\r\n useEffect(() => {\r\n setFirstChange(true);\r\n setLayouts({});\r\n setLayouts(createLayout());\r\n setWidgets(props.dashboardLayouts);\r\n }, [props.dashboardLayouts]);\r\n\r\n const createLayout = (): Layouts => {\r\n var layout: any = { lg: [] };\r\n props.dashboardLayouts.lg.map(w => w.Layout as Layout).forEach(e => {\r\n layout.lg.push(e)\r\n })\r\n return layout;\r\n }\r\n useEffect(() => {\r\n setisInEditMode(props.editMode);\r\n console.log(' setisInEditMode(props.editMode);')\r\n }, [props.editMode]);\r\n\r\n\r\n // const applyModeSetting = () => {\r\n // layouts.current.lg.forEach(element => {\r\n // element.isDraggable = props.editMode;\r\n // element.isResizable = props.editMode;\r\n\r\n // });\r\n // }\r\n\r\n function reset() {\r\n window.localStorage.clear();\r\n window.location.reload();\r\n }\r\n\r\n function onLayoutChange(layout: any, changedLayouts: Layouts) {\r\n if (firstChange) {\r\n setFirstChange(false);\r\n return;\r\n }\r\n setLayouts(changedLayouts);\r\n UpdatePlaceholderDimensions();\r\n props.onLayoutChange(changedLayouts)\r\n }\r\n\r\n function deletePanel(id) {\r\n var newLayouts = { lg: layouts.lg.filter(e => e.i != id) }\r\n\r\n setLayouts(newLayouts);\r\n\r\n var newWidgets = { lg: widgets.lg.filter(e => e.key != id) }\r\n setWidgets(newWidgets);\r\n props.onLayoutChange(newLayouts)\r\n };\r\n\r\n function editWidget(widget: ReactWidgetPM) {\r\n widget.ChangeSetOp = 'Update';\r\n props.openEditWidget(widget);\r\n };\r\n\r\n\r\n function UpdatePlaceholderDimensions() {\r\n var gridLayout = gridLayoutComponent.current;\r\n if (!gridLayout)\r\n return;\r\n console.log('setplaceholderRowsArray(',gridLayout);\r\n const gridElementHeight = gridLayout.elementRef.current.clientHeight;\r\n\r\n let newPlaceholderRows = Math.floor(gridElementHeight / layoutGridProps.rowHeight);\r\n newPlaceholderRows = newPlaceholderRows < minimumPlaceholderRowsCount ? minimumPlaceholderRowsCount : newPlaceholderRows;\r\n setplaceholderRowsArray(Array.from({ length: newPlaceholderRows }).fill(null));\r\n console.log('setplaceholderRowsArray(',newPlaceholderRows);\r\n }\r\n return (<div className=\"dl-full-hight\">\r\n <div className=\"dl-box\">\r\n {/* <div className=\"dl-row dl-header\">\r\n {renderPageHeader()}\r\n </div> */}\r\n <div className=\"dl-row dl-content\">\r\n <div className=\"dl-grid-container\">\r\n <div className=\"dl-grid dl-grid--bordered\">\r\n {isInEditMode ? placeholderRowsArray.map((e, i) =>\r\n array12.map((e, i) => (\r\n <div key={i}\r\n style={{\r\n height: layoutGridProps.rowHeight,\r\n }}\r\n ></div>\r\n ))\r\n \r\n ) : null}\r\n </div>\r\n\r\n\r\n <ResponsiveReactGridLayout ref={gridLayoutComponent}\r\n {...layoutGridProps}\r\n layouts={layouts}\r\n compactType=\"vertical\"\r\n isDraggable={isInEditMode}\r\n isResizable={isInEditMode}\r\n onWidthChange={() => UpdatePlaceholderDimensions()}\r\n onLayoutChange={(layout, layouts) =>\r\n onLayoutChange(layout, layouts)\r\n }\r\n >\r\n {widgets.lg.map((widget) =>\r\n\r\n <div key={widget.Layout?.i}>\r\n <WidgetCard\r\n isInEditMode={isInEditMode}\r\n key={widget.Layout?.i}\r\n widget={widget}\r\n el={widget}\r\n dateFilter={dateFilter}\r\n editBtnClicked={editWidget}\r\n deleteBtnClicked={deletePanel}\r\n onSelectDataPoint={props.onSelectDataPoint}\r\n />\r\n </div>\r\n )}\r\n </ResponsiveReactGridLayout>\r\n </div>\r\n\r\n </div>\r\n {/* <div className=\"dl-row dl-footer\">\r\n <p><b>footer</b> (fixed height)</p>\r\n </div> */}\r\n </div>\r\n {/* {renderNewWidgetDialog()} */}\r\n\r\n\r\n\r\n\r\n\r\n </div>);\r\n\r\n}\r\n\r\n\r\nexport const layoutGridProps = {\r\n rowHeight: 50,\r\n className: \"layout\",\r\n cols: { lg: 12, md: 6, sm: 2, xs: 1, xxs: 1 },\r\n useCSSTransforms: true,\r\n}\r\n\r\n\r\n\r\n\r\nexport const WidgetTypes = [\r\n { Name: \"Filter\", Disabled: true },\r\n { Name: \"Chart\", Disabled: false },\r\n { Name: \"Data Table\", Disabled: true },\r\n { Name: \"Pivot Table\", Disabled: true },\r\n { Name: \"KPI\", Disabled: true },\r\n { Name: \"Gauge\", Disabled: true },\r\n];\r\nexport const widgetComponents = [\r\n { type: \"Bar\", component: BarChartComponent },\r\n { type: \"Column\", component: ColumnChartComponent },\r\n { type: \"Pie\", component: PieChartComponent },\r\n { type: \"Mixed\", component: MixedChartComponent },\r\n { type: \"Timeline\", component: TimelineChartComponent },\r\n { type: \"Candle\", component: CandleChartComponent },\r\n { type: \"Area\", component: AreaChartComponent },\r\n];\r\n\r\n\r\nexport default DashboardDesigner;\r\n","import 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\nimport { DataPointSelection } from './types/SeriesMeasure';\r\n\r\ntype DashboardProps = {\r\n token: string,\r\n tenant: number,\r\n userId: string,\r\n dataBinding: DashboardDataBinding,\r\n 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 onSelectDataPoint:(dataPointSelection:DataPointSelection) =>void;\r\n};\r\nconst Dashboard = (props: DashboardProps) => {\r\n const newWidgetWidth = 3;\r\n const newWidgetHeight = 5;\r\n\r\n const [dashbords, setDashbords] = useState<ReactDashboardPM[]>([]);\r\n const [currentDashbord, setCurrentDashbord] = useState<ReactDashboardPM | undefined>(undefined);\r\n const [beforEditDashbord, setBeforEditDashbord] = useState<ReactDashboardPM | undefined>(undefined);\r\n const [hasChanges, setHasChanges] = useState(false);\r\n const [isInEditMode, setIsInEditMode] = useState<boolean>(false);\r\n const [WidgetTypes, setWidgetTypes] = useState<WidgetType[]>();\r\n const [layouts, setLayouts] = useState<{ lg: ReactWidgetPM[] }>({ lg: [] });\r\n const [cancelConfirmDialog, setCancelConfirmDialog] = useState(false);\r\n const dashboardMoreButtonToggle = createRef<OverlayPanel>();\r\n const dashboardService = new DashBoardService();\r\n const widgetTypeListService = new WidgetTypeListService();\r\n useEffect(() => {\r\n getWidgetTypes();\r\n\r\n props.dataBinding.onGetDashboard.subscribe(e => {\r\n console.log('onGetDashboard.subscribe', e)\r\n setCurrentDashbord(e);\r\n applyLayouts(e);\r\n })\r\n props.dataBinding.onGetAllDashboards.subscribe(e => {\r\n console.log('onGetAllDashboard.subscribe', e)\r\n\r\n setDashbords(e);\r\n });\r\n\r\n props.dataBinding.onAddUpdateWidget.subscribe(isUpdated => {\r\n if (!isUpdated)\r\n return;\r\n setHasChanges(true);\r\n });\r\n\r\n }, [])\r\n\r\n Session.CurrentUserId = props.userId;\r\n Session.Tenant = props.tenant;\r\n Session.Token = props.token;\r\n if (props?.token?.length > 0)\r\n localStorage.setItem(\"token\", props?.token);\r\n\r\n\r\n const getWidgetTypes = () => {\r\n widgetTypeListService.getAll().then(data => {\r\n setWidgetTypes(data.data);\r\n });\r\n }\r\n const EditDashBoard = () => {\r\n props.openAddEditDashboard(currentDashbord);\r\n dashboardMoreButtonToggle?.current?.hide();\r\n\r\n }\r\n const addWidget = (widgetCode) => {\r\n var position = EvaluateNewWidgetPosition();\r\n props.openAddEditWidget({ TypeCode: widgetCode, StartPotistion: `${position.x},${position.y}`, EndPosition: `${position.w},${position.h}`, ChangeSetOp: 'Insert' } as ReactWidgetPM);\r\n\r\n }\r\n const EvaluateNewWidgetPosition = () => {\r\n let widgetYPosition = 0;\r\n let widgetXPosition = 0;\r\n let allLayouts = layouts[\"lg\"].map(e => e.Layout);\r\n for (let y = 0; true; y++) {\r\n widgetYPosition = y;\r\n for (let x = 0; x < 10; x++) {\r\n widgetXPosition = x;\r\n\r\n var exisitWidgetInNewPosition = allLayouts.find(e => {\r\n return e\r\n && widgetXPosition < e.x + e.w && widgetXPosition + newWidgetWidth > e.x\r\n && widgetYPosition < e.y + e.h && widgetYPosition + newWidgetHeight > e.y\r\n });\r\n if (!exisitWidgetInNewPosition)\r\n return { x: widgetXPosition, y: widgetYPosition, w: newWidgetWidth, h: newWidgetHeight };\r\n }\r\n\r\n }\r\n\r\n }\r\n const editLayout = () => {\r\n setIsInEditMode(true);\r\n setHasChanges(false);\r\n dashboardMoreButtonToggle?.current?.hide();\r\n\r\n setBeforEditDashbord(deepClone(currentDashbord));\r\n }\r\n const save = () => {\r\n setIsInEditMode(false)\r\n console.log('onSaveDashboard > ', currentDashbord)\r\n props.onSaveDashboard(currentDashbord);\r\n onHide();\r\n\r\n setHasChanges(false);;\r\n }\r\n\r\n const cancelSave = () => {\r\n if (!hasChanges) {\r\n setIsInEditMode(false);\r\n setHasChanges(false);\r\n\r\n } else {\r\n setCancelConfirmDialog(true);\r\n }\r\n\r\n\r\n }\r\n\r\n const dontSave = () => {\r\n setHasChanges(false)\r\n setIsInEditMode(false);\r\n props.dataBinding.onGetDashboard.next(beforEditDashbord);\r\n setCancelConfirmDialog(false);\r\n }\r\n const changeDashboard = (event) => {\r\n if (event.value == currentDashbord?.Id)\r\n return;\r\n var dasboard = dashbords.find(e => e.Id == event.value);\r\n\r\n props.onChangeDashboard(dasboard);\r\n props.dataBinding.onGetDashboard.next(dasboard);\r\n\r\n }\r\n\r\n const applyLayouts = (dashbord: ReactDashboardPM | undefined) => {\r\n if ((!dashbord?.Widgets))\r\n return;\r\n var layout: { lg: ReactWidgetPM[] } = { lg: [] };\r\n dashbord?.Widgets.map(widget => {\r\n if (widget.Id && widget.Id.length > 0)\r\n widget.key = widget.Id;\r\n else\r\n widget.key = uuidv4();\r\n widget.Layout = {\r\n minH: 5,\r\n minW: 3,\r\n i: widget.key,\r\n w: +widget.EndPosition.split(',')[0],\r\n h: +widget.EndPosition.split(',')[1],\r\n x: +widget.StartPotistion.split(',')[0],\r\n y: +widget.StartPotistion.split(',')[1],\r\n }\r\n layout.lg.push(widget\r\n\r\n )\r\n });\r\n console.log('setLayouts -- > ', layout)\r\n setLayouts(layout);\r\n\r\n }\r\n const updateWidgets = (layouts: Layouts) => {\r\n console.log('updateWidgets = (layouts:Layouts', layouts)\r\n var layoutsDic: { [key: string]: Layout } = {};\r\n Object.keys(layouts).forEach(sizeType => {\r\n if (layouts[sizeType].length > 0) {\r\n layouts[sizeType].map(layout => {\r\n layoutsDic[layout.i] = layout;\r\n })\r\n return;\r\n }\r\n })\r\n var widgets: ReactWidgetPM[] = [];\r\n currentDashbord?.Widgets.forEach(widget => {\r\n if (layoutsDic[widget.key]) {\r\n widget.StartPotistion = `${layoutsDic[widget.key].x},${layoutsDic[widget.key].y}`;\r\n widget.EndPosition = `${layoutsDic[widget.key].w},${layoutsDic[widget.key].h}`;\r\n widget.Layout = layoutsDic[widget.key];\r\n widgets.push(widget)\r\n }\r\n\r\n });\r\n if (currentDashbord) {\r\n currentDashbord.Widgets = widgets;\r\n }\r\n console.log('after update widget', currentDashbord)\r\n setHasChanges(true);\r\n\r\n }\r\n\r\n const renderCancelConfirmDialogFooter = () => {\r\n return (\r\n <div className='dl-flex-row-end' >\r\n <Button label=\"Cancel\" onClick={() => onHide()} className=\"p-button-secondary\" />\r\n <Button label=\"Don't Save\" onClick={() => dontSave()} className=\"p-button-secondary\" />\r\n <Button label=\"Save\" onClick={() => save()} autoFocus className=\"p-button-warning\" />\r\n </div>\r\n );\r\n }\r\n const onHide = () => {\r\n setCancelConfirmDialog(false)\r\n }\r\n return (\r\n <div className='dl-full-hight'>\r\n\r\n <div className='dl-dashboard-header dl-card'>\r\n <div className='dl-flex-row dl-custom-btn'>\r\n <div className='dl-title-1'>{currentDashbord?.Name}</div>\r\n <Button\r\n icon=\"pi pi-ellipsis-v\"\r\n onClick={(e) => dashboardMoreButtonToggle?.current?.toggle(e)}\r\n className=\"p-button p-button-icon-only p-button-rounded p-button-text\"\r\n >\r\n <Ripple />\r\n </Button>\r\n <OverlayPanel ref={dashboardMoreButtonToggle} className=\"buttons-overlay\">\r\n <div className=\"buttons-list\">\r\n <div onClick={() => EditDashBoard()}>Edit</div>\r\n <div onClick={editLayout}>Edit Layout</div>\r\n\r\n </div>\r\n </OverlayPanel >\r\n </div>\r\n <div className='dl-flex-row'>\r\n {!isInEditMode ?\r\n <div className='dl-flex-row'>\r\n\r\n\r\n <div style={{ width: \"161px\" }}>\r\n <Dropdown\r\n value={[]}\r\n options={dashbords}\r\n optionValue=\"Id\"\r\n optionLabel=\"Name\"\r\n onChange={changeDashboard}\r\n placeholder=\"Choose Dashboard\"\r\n optionDisabled={(option) => {\r\n return option?.Disabled;\r\n }}\r\n scrollHeight=\"300px\"\r\n style={{ width: '100%' }}\r\n />\r\n </div>\r\n <Button icon=\"pi pi-plus\" onClick={() => props.openAddEditDashboard(undefined)}\r\n className=\"dl-dashboard-add p-button-rounded p-button-success\" />\r\n </div>\r\n : null}\r\n {/* <DashboardDialogComponent display={displayAddDashboard} onClose={onDashboardDialogClose}></DashboardDialogComponent> */}\r\n\r\n\r\n\r\n {isInEditMode ?\r\n <div className='dl-flex-row'>\r\n\r\n <Button\r\n label=\"Cancel\"\r\n className=\"p-button-secondary dl-m-r-s \"\r\n onClick={cancelSave}\r\n />\r\n\r\n <Dialog header=\"Unsaved Changes\" visible={cancelConfirmDialog} style={{ width: '50vw' }} footer={renderCancelConfirmDialogFooter()} onHide={onHide}>\r\n <p>This Dashboard has unsaved changes do you want to save it?</p>\r\n </Dialog>\r\n\r\n {hasChanges ?\r\n <Button\r\n label=\"Save\"\r\n form=\"frm\"\r\n // icon=\"pi pi-check\"\r\n onClick={save}\r\n autoFocus\r\n className={\"p-button-warning \"}\r\n /> : null\r\n }\r\n {!hasChanges ?\r\n <Button\r\n label=\"Save\"\r\n form=\"frm\"\r\n // icon=\"pi pi-check\"\r\n onClick={save}\r\n autoFocus\r\n className={\"p-button-secondary \"}\r\n /> : null\r\n }\r\n\r\n <div style={{ width: '192px', marginLeft: '15px' }}>\r\n <Dropdown\r\n options={WidgetTypes}\r\n optionValue=\"Code\"\r\n optionLabel=\"Name\"\r\n onChange={(e) => addWidget(e.value)}\r\n placeholder=\"Add Component\"\r\n optionDisabled={(option) => {\r\n return option?.Disabled;\r\n }}\r\n scrollHeight=\"300px\"\r\n />\r\n </div>\r\n </div>\r\n : null}\r\n </div>\r\n\r\n\r\n </div>\r\n\r\n <div className='dl-dashboard-body'>\r\n <DashboardDesigner onSelectDataPoint={props.onSelectDataPoint} editMode={isInEditMode} onLayoutChange={updateWidgets} dashboardLayouts={layouts} openEditWidget={(widget: ReactWidgetPM) => props.openAddEditWidget(widget)} ></DashboardDesigner>\r\n </div>\r\n </div >\r\n\r\n )\r\n}\r\nexport default Dashboard;\r\n\r\n"],"names":["Tools","GetLogitudeURL","logitude_url","location","href","replace","indexOf","urlArr","split","url","substring","lastIndexOf","length","ApiServices","_apiUrl","getByFilters","api","filters","token","getTokenFromStorage","apiURL","ConcatFiltersToURL","axios","get","headers","post","date","window","localStorage","getItem","urlparameters","mykeys","Object","keys","addtionalFiltersValues","i","propName","propValue","ignoreFilter","concat","encodeURIComponent","JSON","stringify","DashboardAnalyticsService","_ApiServices","getData","widget","controller","ApexChart","props","useState","error","setEror","MeasuresIds","useRef","GroupByIds","GroupCount","isView","setisView","viewError","setViewError","isDataLoaded","hasDataError","series","options","args","serArgs","isLoadingDrow","useEffect","setTimeout","current","updateView","console","log","dashboardAnalyticsService","then","result","fillIds","data","getChartOptions","response","ErrorMessage","message","EntityId","Filters","WidgetMeasures","datas","measuresIds","groupByIds","seriesMeasure","push","MeasureFieldId","SeriesMeasureVulues","vulue","GroupById","lineOptoins","values","categories","map","e","z","Value","Label","chart","height","type","zoom","enabled","events","click","dataPointSelection","toolbar","tools","download","dataLabels","stroke","curve","title","text","align","grid","row","colors","opacity","xaxis","noData","barOptoins","plotOptions","bar","horizontal","position","offsetX","style","fontSize","show","width","tooltip","shared","intersect","pieOptoins","labels","CreateColors","count","CreateDeferuntColors","undefined","startAngle","s","v","index","color","donutOptoins","ll","responsive","breakpoint","legend","offsetY","handelNullLabels","forEach","element","value","onSelectDataPoint","dataPointIndex","seriesIndex","Widget","TypeCode","React","className","ProgressSpinner","strokeWidth","animationDuration","ReactApexChart","src","WidgetCard","state","moreBtnToggle","editWidget","hide","editBtnClicked","key","el","Title","isInEditMode","Button","icon","onClick","toggle","OverlayPanel","ref","deleteBtnClicked","ResponsiveReactGridLayout","WidthProvider","Responsive","DashboardDesigner","array12","Array","from","fill","minimumPlaceholderRowsCount","lg","layouts","setLayouts","placeholderRowsArray","setplaceholderRowsArray","firstChange","setFirstChange","dateFilter","setisInEditMode","widgets","setWidgets","gridLayoutComponent","createLayout","dashboardLayouts","layout","w","Layout","editMode","onLayoutChange","changedLayouts","UpdatePlaceholderDimensions","deletePanel","id","newLayouts","filter","newWidgets","ChangeSetOp","openEditWidget","gridLayout","gridElementHeight","elementRef","clientHeight","newPlaceholderRows","Math","floor","layoutGridProps","rowHeight","compactType","isDraggable","isResizable","onWidthChange","cols","md","sm","xs","xxs","useCSSTransforms","DashBoardService","getDataByFilters","tableName","add","WidgetTypeListService","getAll","deepClone","obj","parse","Dashboard","newWidgetWidth","newWidgetHeight","dashbords","setDashbords","currentDashbord","setCurrentDashbord","beforEditDashbord","setBeforEditDashbord","hasChanges","setHasChanges","setIsInEditMode","WidgetTypes","setWidgetTypes","cancelConfirmDialog","setCancelConfirmDialog","dashboardMoreButtonToggle","createRef","dashboardService","widgetTypeListService","getWidgetTypes","dataBinding","onGetDashboard","subscribe","applyLayouts","onGetAllDashboards","onAddUpdateWidget","isUpdated","setItem","EditDashBoard","openAddEditDashboard","addWidget","widgetCode","EvaluateNewWidgetPosition","openAddEditWidget","StartPotistion","x","y","EndPosition","h","widgetYPosition","widgetXPosition","allLayouts","exisitWidgetInNewPosition","find","editLayout","save","onSaveDashboard","onHide","cancelSave","dontSave","next","changeDashboard","event","Id","dasboard","onChangeDashboard","dashbord","Widgets","uuidv4","minH","minW","updateWidgets","layoutsDic","sizeType","renderCancelConfirmDialogFooter","label","autoFocus","Name","Ripple","Dropdown","optionValue","optionLabel","onChange","placeholder","optionDisabled","option","Disabled","scrollHeight","Dialog","header","visible","footer","form","marginLeft"],"mappings":"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"}
@@ -171,6 +171,7 @@ var ApexChart = function ApexChart(props) {
171
171
 
172
172
  var MeasuresIds = useRef([]);
173
173
  var GroupByIds = useRef([]);
174
+ var GroupCount = useRef(0);
174
175
 
175
176
  var _useState2 = useState(false),
176
177
  isView = _useState2[0],
@@ -397,6 +398,7 @@ var ApexChart = function ApexChart(props) {
397
398
  });
398
399
  }
399
400
 
401
+ var colors = CreateColors(labels.length);
400
402
  return {
401
403
  series: series,
402
404
  options: {
@@ -412,6 +414,7 @@ var ApexChart = function ApexChart(props) {
412
414
  }
413
415
  },
414
416
  labels: labels,
417
+ colors: colors,
415
418
  noData: {
416
419
  text: 'No Data Found'
417
420
  }
@@ -419,6 +422,32 @@ var ApexChart = function ApexChart(props) {
419
422
  };
420
423
  };
421
424
 
425
+ var CreateColors = function CreateColors(count) {
426
+ GroupCount.current = count;
427
+ var colors = [];
428
+ CreateDeferuntColors(colors, 0, 100, 50);
429
+ if (GroupCount.current <= 0) return colors;
430
+ CreateDeferuntColors(colors, 15, 100, 50);
431
+ if (GroupCount.current <= 0) return colors;
432
+ CreateDeferuntColors(colors, 0, 50, 50);
433
+ if (GroupCount.current <= 0) return colors;
434
+ CreateDeferuntColors(colors, 15, 50, 50);
435
+ if (GroupCount.current <= 0) return colors;
436
+ CreateDeferuntColors(colors, 0, 50, 30);
437
+ if (GroupCount.current <= 0) return colors;
438
+ CreateDeferuntColors(colors, 15, 50, 30);
439
+ if (GroupCount.current <= 0) return colors;
440
+ return undefined;
441
+ };
442
+
443
+ var CreateDeferuntColors = function CreateDeferuntColors(colors, startAngle, s, v) {
444
+ for (var index = 0; GroupCount.current > 0 && index < 12; index++) {
445
+ var color = "hsl(" + (startAngle + index * 30) + "deg " + s + "% " + v + "%)";
446
+ colors.push(color);
447
+ GroupCount.current--;
448
+ }
449
+ };
450
+
422
451
  var donutOptoins = function donutOptoins(values) {
423
452
  var series = [];
424
453
  var labels = [];
@@ -430,8 +459,21 @@ var ApexChart = function ApexChart(props) {
430
459
  labels = values[0].SeriesMeasureVulues.map(function (e) {
431
460
  return e.Label;
432
461
  });
462
+ var ll = labels.length;
463
+
464
+ for (var index = 0; index < ll; index++) {
465
+ series[index] = 100;
466
+ series.push(100);
467
+ labels.push(labels[index] + 'TT');
468
+ }
469
+
470
+ for (var _index = 0; _index < ll; _index++) {
471
+ series.push(100);
472
+ labels.push(labels[_index] + 'TT2');
473
+ }
433
474
  }
434
475
 
476
+ var colors = CreateColors(labels.length);
435
477
  var result = {
436
478
  series: series,
437
479
  options: {
@@ -467,6 +509,7 @@ var ApexChart = function ApexChart(props) {
467
509
  height: 230
468
510
  },
469
511
  labels: labels,
512
+ colors: colors,
470
513
  noData: {
471
514
  text: 'No Data Found'
472
515
  }
@@ -1 +1 @@
1
- {"version":3,"file":"index.modern.js","sources":["../src/services/tools.ts","../src/services/ApiServices.ts","../src/services/DashboardAnalyticsService.ts","../src/features/Dashboard/ChartsComponents/ApexChart.tsx","../src/features/Dashboard/WidgetCard.tsx","../src/features/Dashboard/DashboardDesigner.tsx","../src/services/DashBoardService.ts","../src/services/WidgetTypeListService.ts","../src/services/clone.ts","../src/index.tsx"],"sourcesContent":["export class Tools{\r\n public static GetLogitudeURL() {\r\n\r\n var logitude_url = location.href.replace('index.html', '');\r\n\r\n if (location.href.indexOf('localhost') > -1) {\r\n logitude_url = 'http://localhost:9996';//localhost:9996//';//\r\n }\r\n\r\n else {\r\n var urlArr = location.href.split(\"/index.html\");\r\n var url = urlArr[0];\r\n url = url.replace(url.substring(url.lastIndexOf('/'), url.length), \"\");\r\n logitude_url = url ;\r\n }\r\n\r\n return logitude_url;\r\n }\r\n}","import axios from \"axios\";\r\nimport { ApiQueryFilters } from \"../common/data-contracts/ApiQueryFilter\";\r\nimport { APIResult } from \"../types/APIResult\";\r\nimport { Tools } from './tools';\r\n\r\n\r\nexport class ApiServices{ \r\n private _apiUrl: string;\r\n constructor(){\r\n this._apiUrl = Tools.GetLogitudeURL() ;\r\n }\r\n getByFilters<T>(api,filters: ApiQueryFilters) {\r\n \r\n let token: string = this.getTokenFromStorage();\r\n\t\tvar apiURL = `${this._apiUrl}${api}`;\r\n\t\tapiURL = this.ConcatFiltersToURL(filters, apiURL);\r\n\r\n return axios.get<APIResult<T>>(apiURL, { headers: { 'Content-Type': 'application/json', 'Token': token } });\r\n }\r\n get<T>(api) {\r\n \r\n let token: string = this.getTokenFromStorage();\r\n\t\tvar apiURL = `${this._apiUrl}${api}`;\r\n return axios.get<T>(apiURL, { headers: { 'Content-Type': 'application/json', 'Token': token } });\r\n }\r\n post<T>(api,date){\r\n let token: string = this.getTokenFromStorage();\r\n\t\tvar apiURL = `${this._apiUrl}${api}`;\r\n return axios.post<T>(apiURL,date, { headers: { 'Content-Type': 'application/json', 'Token': token } });\r\n }\r\n\r\n getTokenFromStorage(){\r\n return window.localStorage.getItem(\"token\") || '';\r\n }\r\n private ConcatFiltersToURL(filters: ApiQueryFilters, urlparameters: string)\r\n {\r\n var mykeys = Object.keys(filters);\r\n var addtionalFiltersValues: string | null = null;\r\n\r\n for (var i in mykeys) {\r\n var propName = mykeys[i];\r\n var propValue = filters[propName];\r\n var ignoreFilter = ((propName.indexOf(\"Operator\") > 0 && propValue == \"Equals\") || propName == \"AdditionalFilters\");\r\n\r\n if (urlparameters != \"?\") {\r\n urlparameters = urlparameters.concat('&');\r\n }\r\n\r\n if (!ignoreFilter) {\r\n propValue = propValue ? encodeURIComponent(propValue) : '';\r\n urlparameters = urlparameters.concat(propName.concat('=').concat(propValue));\r\n }\r\n\r\n if (propName == \"AdditionalFilters\" && propValue.length > 0) {\r\n addtionalFiltersValues = JSON.stringify(propValue);\r\n }\r\n }\r\n\r\n if (addtionalFiltersValues) {\r\n urlparameters = urlparameters.concat(\"&AdditionalFilters=\").concat(addtionalFiltersValues);\r\n }\r\n return urlparameters;\r\n }\r\n}","import axios from \"axios\";\r\nimport { ApiQueryFilters } from \"../common/data-contracts/ApiQueryFilter\";\r\nimport { ReactDashboardPM } from \"../types/Dashboard\";\r\nimport { SeriesMeasure } from \"../types/SeriesMeasure\";\r\nimport { ApiServices } from \"./ApiServices\";\r\nimport { Tools } from './tools';\r\nimport { ReactWidgetPM } from '../types/widget';\r\n\r\n\r\nexport class DashboardAnalyticsService{ \r\n _ApiServices:ApiServices;\r\n controller = 'DashboardAnalytics';\r\n constructor(){\r\n this._ApiServices = new ApiServices();\r\n }\r\n \r\n\r\n getData(widget: ReactWidgetPM) {\r\n return this._ApiServices.post<SeriesMeasure[]>(`/api/${this.controller}/PostGetDataAnalytic`,widget);\r\n }\r\n \r\n}","import React, { useEffect, useRef } from \"react\";\r\nimport ReactApexChart from \"react-apexcharts\";\r\nimport { ProgressSpinner } from 'primereact/progressspinner';\r\nimport { ReactWidgetPM } from \"../../../types/widget\";\r\nimport { useState } from 'react';\r\nimport { DashboardAnalyticsService } from \"../../../services/DashboardAnalyticsService\";\r\nimport { DataPointSelection, SeriesMeasure } from '../../../types/SeriesMeasure';\r\nimport { ApexOptions } from \"apexcharts\";\r\n\r\ntype ApexChartProps = {\r\n widget: ReactWidgetPM | undefined,\r\n onSelectDataPoint:(dataPointSelection:DataPointSelection) =>void;\r\n};\r\nconst ApexChart = (props: ApexChartProps) => {\r\n\r\n const [error, setEror] = useState<string>('');\r\n const MeasuresIds = useRef<string[]>([]); \r\n const GroupByIds = useRef<string[]>([]); \r\n const [isView, setisView] = useState<boolean>(false);\r\n const [viewError, setViewError] = useState<boolean>(false);\r\n const isDataLoaded = useRef<boolean>(false);\r\n const hasDataError = useRef<boolean>(false);\r\n const [args, serArgs] = useState<ApexChartArgs>({\r\n series: [],\r\n options: {}\r\n });\r\n const isLoadingDrow = useRef(true);\r\n\r\n useEffect(() => {\r\n setTimeout(function () {\r\n isLoadingDrow.current = false;\r\n updateView();\r\n }, 500);\r\n }, [])\r\n useEffect(() => {\r\n console.log('useEffect ApexChart', props.widget);\r\n var dashboardAnalyticsService = new DashboardAnalyticsService();\r\n dashboardAnalyticsService.getData(props.widget as ReactWidgetPM).then(result => {\r\n fillIds(result.data);\r\n const data = getChartOptions(result.data);\r\n serArgs(data);\r\n isDataLoaded.current = true;\r\n hasDataError.current = false;\r\n updateView();\r\n }, error => {\r\n console.log('error', error);\r\n if (error?.response?.data?.ErrorMessage)\r\n setEror(error?.response?.data?.ErrorMessage);\r\n else\r\n setEror(error.message);\r\n isDataLoaded.current = true;\r\n hasDataError.current = true;\r\n updateView();\r\n })\r\n\r\n\r\n }, [props.widget?.EntityId, props.widget?.Filters, props.widget?.WidgetMeasures]);\r\n\r\n const fillIds = (datas :SeriesMeasure[]) => {\r\n var measuresIds:string[] = [];\r\n var groupByIds:string[] = [];\r\n for (const seriesMeasure of datas) {\r\n measuresIds.push(seriesMeasure.MeasureFieldId);\r\n }\r\n \r\n for (const seriesMeasure of datas) {\r\n for (const vulue of seriesMeasure.SeriesMeasureVulues) {\r\n groupByIds.push(vulue.GroupById);\r\n }\r\n break;\r\n }\r\n \r\n MeasuresIds.current = measuresIds;\r\n GroupByIds.current = groupByIds;\r\n\r\n }\r\n const updateView = () => {\r\n if (isDataLoaded.current && !isLoadingDrow.current && !hasDataError.current) {\r\n setisView(true);\r\n setViewError(false);\r\n }\r\n\r\n if (isDataLoaded.current && !isLoadingDrow.current && hasDataError.current) {\r\n setisView(false);\r\n setViewError(true);\r\n }\r\n\r\n }\r\n\r\n const lineOptoins = (values: SeriesMeasure[]):ApexChartArgs => {\r\n\r\n\r\n var series: any = [];\r\n var categories: any = [];\r\n if (values && values[0]) {\r\n series = values.map(e => {\r\n return { data: e.SeriesMeasureVulues.map(z => z.Value) }\r\n }\r\n );\r\n categories = values[0].SeriesMeasureVulues.map(e => e.Label);\r\n }\r\n\r\n return {\r\n\r\n series: series,\r\n options: {\r\n chart: {\r\n height: 350,\r\n type: 'line',\r\n zoom: {\r\n enabled: false\r\n },\r\n events: {\r\n click: dataPointSelection,\r\n },\r\n toolbar:{\r\n tools:{\r\n download:false,\r\n }\r\n }\r\n },\r\n dataLabels: {\r\n enabled: false\r\n },\r\n stroke: {\r\n curve: 'straight'\r\n },\r\n title: {\r\n text: '',\r\n align: 'left'\r\n },\r\n grid: {\r\n row: {\r\n colors: ['#f3f3f3', 'transparent'], // takes an array which will be repeated on columns\r\n opacity: 0.5\r\n },\r\n },\r\n xaxis: {\r\n categories: categories\r\n },\r\n noData:{\r\n text: 'No Data Found',\r\n \r\n }\r\n },\r\n\r\n\r\n };\r\n }\r\n const barOptoins = (values: SeriesMeasure[]):ApexChartArgs => {\r\n var series: any = [{\r\n data: []\r\n }];\r\n var categories: any = [];\r\n if (values && values[0]) {\r\n series = values.map(e => {\r\n return { data: e.SeriesMeasureVulues.map(z => z.Value) }\r\n }\r\n );\r\n categories = values[0].SeriesMeasureVulues.map(e => e.Label);\r\n }\r\n return {\r\n series: series\r\n ,\r\n options: {\r\n chart: {\r\n type: 'bar',\r\n height: 430,\r\n events: {\r\n dataPointSelection: dataPointSelection\r\n },\r\n toolbar:{\r\n tools:{\r\n download:false,\r\n }\r\n }\r\n },\r\n plotOptions: {\r\n bar: {\r\n horizontal: true,\r\n dataLabels: {\r\n position: 'top',\r\n },\r\n }\r\n },\r\n dataLabels: {\r\n enabled: true,\r\n offsetX: -6,\r\n style: {\r\n fontSize: '12px',\r\n colors: ['#fff']\r\n }\r\n },\r\n stroke: {\r\n show: true,\r\n width: 1,\r\n colors: ['#fff']\r\n },\r\n tooltip: {\r\n shared: true,\r\n intersect: false\r\n },\r\n xaxis: {\r\n categories: categories\r\n\r\n },\r\n noData:{\r\n text: 'No Data Found',\r\n \r\n }\r\n },\r\n\r\n\r\n };\r\n }\r\n const pieOptoins = (values: SeriesMeasure[]): ApexChartArgs => {\r\n\r\n var series: any = [];\r\n var labels: any = [];\r\n if (values && values[0]) {\r\n series = values[0].SeriesMeasureVulues.map(e => e.Value);\r\n labels = values[0].SeriesMeasureVulues.map(e => e.Label);\r\n }\r\n return {\r\n\r\n series: series,\r\n options: {\r\n chart: {\r\n type: 'pie',\r\n events: {\r\n dataPointSelection: dataPointSelection\r\n },\r\n toolbar:{\r\n tools:{\r\n download:false,\r\n }\r\n }\r\n },\r\n labels: labels,\r\n noData:{\r\n text: 'No Data Found',\r\n \r\n }\r\n\r\n },\r\n\r\n\r\n\r\n };\r\n }\r\n const donutOptoins = (values: SeriesMeasure[]): ApexChartArgs => {\r\n var series: any = [];\r\n var labels: any = [];\r\n if (values && values[0]) {\r\n series = values[0].SeriesMeasureVulues.map(e => e.Value);\r\n labels = values[0].SeriesMeasureVulues.map(e => e.Label);\r\n }\r\n var result: { series, options: ApexOptions } = {\r\n\r\n series: series,\r\n options: {\r\n chart: {\r\n width: 380,\r\n type: 'donut',\r\n events: {\r\n dataPointSelection: dataPointSelection\r\n },\r\n toolbar:{\r\n tools:{\r\n download:false,\r\n }\r\n }\r\n },\r\n dataLabels: {\r\n enabled: false\r\n },\r\n responsive: [{\r\n breakpoint: 480,\r\n options: {\r\n chart: {\r\n width: 200\r\n },\r\n legend: {\r\n show: false\r\n }\r\n }\r\n }],\r\n legend: {\r\n position: 'right',\r\n offsetY: 0,\r\n height: 230,\r\n },\r\n labels: labels,\r\n noData:{\r\n text: 'No Data Found',\r\n \r\n }\r\n },\r\n\r\n\r\n };\r\n return result;\r\n }\r\n\r\n const handelNullLabels = (values: SeriesMeasure[]) => {\r\n values.forEach(element => {\r\n element.SeriesMeasureVulues.forEach(value => {\r\n if (!value.Label || value.Label == '')\r\n value.Label = 'Not defined'\r\n });\r\n });\r\n }\r\n\r\n\r\n\r\n\r\n const dataPointSelection = (e: any, chart?: any, options?: any): void => {\r\n props.onSelectDataPoint({\r\n GroupById:GroupByIds.current[options.dataPointIndex],\r\n MeasureFieldId:MeasuresIds.current[options.seriesIndex],\r\n Widget:props.widget\r\n })\r\n };\r\n\r\n const getChartOptions = (values: SeriesMeasure[]):ApexChartArgs => {\r\n handelNullLabels(values);\r\n switch (props.widget?.TypeCode) {\r\n case 'bar':\r\n return barOptoins(values);\r\n break;\r\n case 'line':\r\n return lineOptoins(values);\r\n break;\r\n case 'pie':\r\n return pieOptoins(values);\r\n break;\r\n case 'donut':\r\n return donutOptoins(values);\r\n break;\r\n default:\r\n break;\r\n }\r\n return barOptoins(values);\r\n };\r\n\r\n return (\r\n !isView && !viewError ?\r\n <div className={'dl-full-hight dl-flex-content-center spinner-custome'}>\r\n <ProgressSpinner style={{ width: '100px', height: '100px' }} strokeWidth=\"4\" animationDuration=\"2s\" />\r\n </div>\r\n :\r\n isView ?\r\n <ReactApexChart\r\n options={args?.options}\r\n series={args?.series}\r\n type={props.widget?.TypeCode}\r\n height={\"100%\"}\r\n width={\"100%\"}\r\n\r\n />\r\n : <div className=\"dl-flex-content-center dl-full-hight \" >\r\n <div className=\"dl-tooltip\">\r\n <img width={100} src={\"https://www.seekpng.com/png/full/334-3345964_error-icon-png.png\"} />\r\n <span className=\"dl-tooltiptext\">{error}</span>\r\n </div>\r\n\r\n\r\n </div>\r\n\r\n\r\n )\r\n}\r\nexport type ApexChartArgs = {\r\n options: ApexOptions;\r\n series: ApexAxisChartSeries | ApexNonAxisChartSeries;\r\n}\r\n\r\nexport default ApexChart;\r\n\r\n","import { stat } from \"fs\";\r\nimport { Button } from \"primereact/button\";\r\nimport { OverlayPanel } from \"primereact/overlaypanel\";\r\nimport React, { useRef, useState, useEffect } from \"react\";\r\nimport { DataPointSelection } from \"../../types/SeriesMeasure\";\r\nimport { ReactWidgetPM } from \"../../types/widget\";\r\nimport ApexChart from \"./ChartsComponents/ApexChart\";\r\n\r\n\r\n\r\ntype WidgetCardProps = {\r\n editBtnClicked(widget: any): any;\r\n deleteBtnClicked(i: any): any;\r\n widget: ReactWidgetPM | undefined;\r\n el: any;\r\n dateFilter: any;\r\n isInEditMode: boolean;\r\n onSelectDataPoint:(dataPointSelection:DataPointSelection) =>void;\r\n}\r\n\r\n\r\nconst WidgetCard = (props: WidgetCardProps, state: any) => {\r\n const moreBtnToggle = useRef<OverlayPanel>(null);\r\n \r\n\r\n const editWidget = ()=>{\r\n moreBtnToggle.current?.hide();\r\n props.editBtnClicked(props.widget)\r\n };\r\n\r\n\r\n return (\r\n <div className=\"panel\" key={props.el.i}>\r\n <header>\r\n <h1>{props.widget?.Title || \"not set\"}</h1>\r\n {\r\n props.isInEditMode ? \r\n <Button\r\n icon=\"pi pi-ellipsis-v\"\r\n className=\"p-button-lg p-button-rounded p-button-text\"\r\n onClick={(e) => moreBtnToggle.current?.toggle(e)}\r\n /> \r\n : null\r\n }\r\n\r\n\r\n <OverlayPanel ref={moreBtnToggle} className=\"buttons-overlay\">\r\n <div className=\"buttons-list\">\r\n <div onClick={editWidget} > Edit </div>\r\n <div onClick={() => props.deleteBtnClicked(props.widget?.key)} >Remove</div>\r\n </div>\r\n </OverlayPanel>\r\n </header>\r\n\r\n <div className=\"dl-dashboard-widget\">\r\n <ApexChart widget={props.widget} onSelectDataPoint={props.onSelectDataPoint} />\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\nimport { DataPointSelection } from \"../../types/SeriesMeasure\";\r\n\r\nconst ResponsiveReactGridLayout = WidthProvider(Responsive);\r\nconst newWidgetWidth = 3;\r\n\r\ntype DashboardDesignerProps = {\r\n editMode: boolean,\r\n dashboardLayouts: { lg: ReactWidgetPM[] },\r\n openEditWidget: (widget: ReactWidgetPM) => void\r\n onLayoutChange: (layouts: Layouts) => void,\r\n onSelectDataPoint:(dataPointSelection:DataPointSelection) =>void\r\n};\r\nconst DashboardDesigner = (props: DashboardDesignerProps) => {\r\n\r\n\r\n const array12 = Array.from({ length: 12 }).fill(null);\r\n const minimumPlaceholderRowsCount = 12;\r\n const [layouts, setLayouts] = useState<Layouts>({ lg: [] });\r\n const [placeholderRowsArray, setplaceholderRowsArray] = useState(Array.from({ length: minimumPlaceholderRowsCount }).fill(null));\r\n const [firstChange, setFirstChange] = useState(true);\r\n const [dateFilter, setDateFilter] = useState<Date | Date[] | undefined>(undefined);\r\n const [isInEditMode, setisInEditMode] = useState(false);\r\n const [widgets, setWidgets] = useState<{ lg: ReactWidgetPM[] }>({ lg: [] });\r\n const gridLayoutComponent = useRef<any>(null);\r\n\r\n useEffect(() => {\r\n setFirstChange(true);\r\n setLayouts({});\r\n setLayouts(createLayout());\r\n setWidgets(props.dashboardLayouts);\r\n }, [props.dashboardLayouts]);\r\n\r\n const createLayout = (): Layouts => {\r\n var layout: any = { lg: [] };\r\n props.dashboardLayouts.lg.map(w => w.Layout as Layout).forEach(e => {\r\n layout.lg.push(e)\r\n })\r\n return layout;\r\n }\r\n useEffect(() => {\r\n setisInEditMode(props.editMode);\r\n console.log(' setisInEditMode(props.editMode);')\r\n }, [props.editMode]);\r\n\r\n\r\n // const applyModeSetting = () => {\r\n // layouts.current.lg.forEach(element => {\r\n // element.isDraggable = props.editMode;\r\n // element.isResizable = props.editMode;\r\n\r\n // });\r\n // }\r\n\r\n function reset() {\r\n window.localStorage.clear();\r\n window.location.reload();\r\n }\r\n\r\n function onLayoutChange(layout: any, changedLayouts: Layouts) {\r\n if (firstChange) {\r\n setFirstChange(false);\r\n return;\r\n }\r\n setLayouts(changedLayouts);\r\n UpdatePlaceholderDimensions();\r\n props.onLayoutChange(changedLayouts)\r\n }\r\n\r\n function deletePanel(id) {\r\n var newLayouts = { lg: layouts.lg.filter(e => e.i != id) }\r\n\r\n setLayouts(newLayouts);\r\n\r\n var newWidgets = { lg: widgets.lg.filter(e => e.key != id) }\r\n setWidgets(newWidgets);\r\n props.onLayoutChange(newLayouts)\r\n };\r\n\r\n function editWidget(widget: ReactWidgetPM) {\r\n widget.ChangeSetOp = 'Update';\r\n props.openEditWidget(widget);\r\n };\r\n\r\n\r\n function UpdatePlaceholderDimensions() {\r\n var gridLayout = gridLayoutComponent.current;\r\n if (!gridLayout)\r\n return;\r\n console.log('setplaceholderRowsArray(',gridLayout);\r\n const gridElementHeight = gridLayout.elementRef.current.clientHeight;\r\n\r\n let newPlaceholderRows = Math.floor(gridElementHeight / layoutGridProps.rowHeight);\r\n newPlaceholderRows = newPlaceholderRows < minimumPlaceholderRowsCount ? minimumPlaceholderRowsCount : newPlaceholderRows;\r\n setplaceholderRowsArray(Array.from({ length: newPlaceholderRows }).fill(null));\r\n console.log('setplaceholderRowsArray(',newPlaceholderRows);\r\n }\r\n return (<div className=\"dl-full-hight\">\r\n <div className=\"dl-box\">\r\n {/* <div className=\"dl-row dl-header\">\r\n {renderPageHeader()}\r\n </div> */}\r\n <div className=\"dl-row dl-content\">\r\n <div className=\"dl-grid-container\">\r\n <div className=\"dl-grid dl-grid--bordered\">\r\n {isInEditMode ? placeholderRowsArray.map((e, i) =>\r\n array12.map((e, i) => (\r\n <div key={i}\r\n style={{\r\n height: layoutGridProps.rowHeight,\r\n }}\r\n ></div>\r\n ))\r\n \r\n ) : null}\r\n </div>\r\n\r\n\r\n <ResponsiveReactGridLayout ref={gridLayoutComponent}\r\n {...layoutGridProps}\r\n layouts={layouts}\r\n compactType=\"vertical\"\r\n isDraggable={isInEditMode}\r\n isResizable={isInEditMode}\r\n onWidthChange={() => UpdatePlaceholderDimensions()}\r\n onLayoutChange={(layout, layouts) =>\r\n onLayoutChange(layout, layouts)\r\n }\r\n >\r\n {widgets.lg.map((widget) =>\r\n\r\n <div key={widget.Layout?.i}>\r\n <WidgetCard\r\n isInEditMode={isInEditMode}\r\n key={widget.Layout?.i}\r\n widget={widget}\r\n el={widget}\r\n dateFilter={dateFilter}\r\n editBtnClicked={editWidget}\r\n deleteBtnClicked={deletePanel}\r\n onSelectDataPoint={props.onSelectDataPoint}\r\n />\r\n </div>\r\n )}\r\n </ResponsiveReactGridLayout>\r\n </div>\r\n\r\n </div>\r\n {/* <div className=\"dl-row dl-footer\">\r\n <p><b>footer</b> (fixed height)</p>\r\n </div> */}\r\n </div>\r\n {/* {renderNewWidgetDialog()} */}\r\n\r\n\r\n\r\n\r\n\r\n </div>);\r\n\r\n}\r\n\r\n\r\nexport const layoutGridProps = {\r\n rowHeight: 50,\r\n className: \"layout\",\r\n cols: { lg: 12, md: 6, sm: 2, xs: 1, xxs: 1 },\r\n useCSSTransforms: true,\r\n}\r\n\r\n\r\n\r\n\r\nexport const WidgetTypes = [\r\n { Name: \"Filter\", Disabled: true },\r\n { Name: \"Chart\", Disabled: false },\r\n { Name: \"Data Table\", Disabled: true },\r\n { Name: \"Pivot Table\", Disabled: true },\r\n { Name: \"KPI\", Disabled: true },\r\n { Name: \"Gauge\", Disabled: true },\r\n];\r\nexport const widgetComponents = [\r\n { type: \"Bar\", component: BarChartComponent },\r\n { type: \"Column\", component: ColumnChartComponent },\r\n { type: \"Pie\", component: PieChartComponent },\r\n { type: \"Mixed\", component: MixedChartComponent },\r\n { type: \"Timeline\", component: TimelineChartComponent },\r\n { type: \"Candle\", component: CandleChartComponent },\r\n { type: \"Area\", component: AreaChartComponent },\r\n];\r\n\r\n\r\nexport default DashboardDesigner;\r\n","import 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\nimport { DataPointSelection } from './types/SeriesMeasure';\r\n\r\ntype DashboardProps = {\r\n token: string,\r\n tenant: number,\r\n userId: string,\r\n dataBinding: DashboardDataBinding,\r\n 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 onSelectDataPoint:(dataPointSelection:DataPointSelection) =>void;\r\n};\r\nconst Dashboard = (props: DashboardProps) => {\r\n const newWidgetWidth = 3;\r\n const newWidgetHeight = 5;\r\n\r\n const [dashbords, setDashbords] = useState<ReactDashboardPM[]>([]);\r\n const [currentDashbord, setCurrentDashbord] = useState<ReactDashboardPM | undefined>(undefined);\r\n const [beforEditDashbord, setBeforEditDashbord] = useState<ReactDashboardPM | undefined>(undefined);\r\n const [hasChanges, setHasChanges] = useState(false);\r\n const [isInEditMode, setIsInEditMode] = useState<boolean>(false);\r\n const [WidgetTypes, setWidgetTypes] = useState<WidgetType[]>();\r\n const [layouts, setLayouts] = useState<{ lg: ReactWidgetPM[] }>({ lg: [] });\r\n const [cancelConfirmDialog, setCancelConfirmDialog] = useState(false);\r\n const dashboardMoreButtonToggle = createRef<OverlayPanel>();\r\n const dashboardService = new DashBoardService();\r\n const widgetTypeListService = new WidgetTypeListService();\r\n useEffect(() => {\r\n getWidgetTypes();\r\n\r\n props.dataBinding.onGetDashboard.subscribe(e => {\r\n console.log('onGetDashboard.subscribe', e)\r\n setCurrentDashbord(e);\r\n applyLayouts(e);\r\n })\r\n props.dataBinding.onGetAllDashboards.subscribe(e => {\r\n console.log('onGetAllDashboard.subscribe', e)\r\n\r\n setDashbords(e);\r\n });\r\n\r\n props.dataBinding.onAddUpdateWidget.subscribe(isUpdated => {\r\n if (!isUpdated)\r\n return;\r\n setHasChanges(true);\r\n });\r\n\r\n }, [])\r\n\r\n Session.CurrentUserId = props.userId;\r\n Session.Tenant = props.tenant;\r\n Session.Token = props.token;\r\n if (props?.token?.length > 0)\r\n localStorage.setItem(\"token\", props?.token);\r\n\r\n\r\n const getWidgetTypes = () => {\r\n widgetTypeListService.getAll().then(data => {\r\n setWidgetTypes(data.data);\r\n });\r\n }\r\n const EditDashBoard = () => {\r\n props.openAddEditDashboard(currentDashbord);\r\n dashboardMoreButtonToggle?.current?.hide();\r\n\r\n }\r\n const addWidget = (widgetCode) => {\r\n var position = EvaluateNewWidgetPosition();\r\n props.openAddEditWidget({ TypeCode: widgetCode, StartPotistion: `${position.x},${position.y}`, EndPosition: `${position.w},${position.h}`, ChangeSetOp: 'Insert' } as ReactWidgetPM);\r\n\r\n }\r\n const EvaluateNewWidgetPosition = () => {\r\n let widgetYPosition = 0;\r\n let widgetXPosition = 0;\r\n let allLayouts = layouts[\"lg\"].map(e => e.Layout);\r\n for (let y = 0; true; y++) {\r\n widgetYPosition = y;\r\n for (let x = 0; x < 10; x++) {\r\n widgetXPosition = x;\r\n\r\n var exisitWidgetInNewPosition = allLayouts.find(e => {\r\n return e\r\n && widgetXPosition < e.x + e.w && widgetXPosition + newWidgetWidth > e.x\r\n && widgetYPosition < e.y + e.h && widgetYPosition + newWidgetHeight > e.y\r\n });\r\n if (!exisitWidgetInNewPosition)\r\n return { x: widgetXPosition, y: widgetYPosition, w: newWidgetWidth, h: newWidgetHeight };\r\n }\r\n\r\n }\r\n\r\n }\r\n const editLayout = () => {\r\n setIsInEditMode(true);\r\n setHasChanges(false);\r\n dashboardMoreButtonToggle?.current?.hide();\r\n\r\n setBeforEditDashbord(deepClone(currentDashbord));\r\n }\r\n const save = () => {\r\n setIsInEditMode(false)\r\n console.log('onSaveDashboard > ', currentDashbord)\r\n props.onSaveDashboard(currentDashbord);\r\n onHide();\r\n\r\n setHasChanges(false);;\r\n }\r\n\r\n const cancelSave = () => {\r\n if (!hasChanges) {\r\n setIsInEditMode(false);\r\n setHasChanges(false);\r\n\r\n } else {\r\n setCancelConfirmDialog(true);\r\n }\r\n\r\n\r\n }\r\n\r\n const dontSave = () => {\r\n setHasChanges(false)\r\n setIsInEditMode(false);\r\n props.dataBinding.onGetDashboard.next(beforEditDashbord);\r\n setCancelConfirmDialog(false);\r\n }\r\n const changeDashboard = (event) => {\r\n if (event.value == currentDashbord?.Id)\r\n return;\r\n var dasboard = dashbords.find(e => e.Id == event.value);\r\n\r\n props.onChangeDashboard(dasboard);\r\n props.dataBinding.onGetDashboard.next(dasboard);\r\n\r\n }\r\n\r\n const applyLayouts = (dashbord: ReactDashboardPM | undefined) => {\r\n if ((!dashbord?.Widgets))\r\n return;\r\n var layout: { lg: ReactWidgetPM[] } = { lg: [] };\r\n dashbord?.Widgets.map(widget => {\r\n if (widget.Id && widget.Id.length > 0)\r\n widget.key = widget.Id;\r\n else\r\n widget.key = uuidv4();\r\n widget.Layout = {\r\n minH: 5,\r\n minW: 3,\r\n i: widget.key,\r\n w: +widget.EndPosition.split(',')[0],\r\n h: +widget.EndPosition.split(',')[1],\r\n x: +widget.StartPotistion.split(',')[0],\r\n y: +widget.StartPotistion.split(',')[1],\r\n }\r\n layout.lg.push(widget\r\n\r\n )\r\n });\r\n console.log('setLayouts -- > ', layout)\r\n setLayouts(layout);\r\n\r\n }\r\n const updateWidgets = (layouts: Layouts) => {\r\n console.log('updateWidgets = (layouts:Layouts', layouts)\r\n var layoutsDic: { [key: string]: Layout } = {};\r\n Object.keys(layouts).forEach(sizeType => {\r\n if (layouts[sizeType].length > 0) {\r\n layouts[sizeType].map(layout => {\r\n layoutsDic[layout.i] = layout;\r\n })\r\n return;\r\n }\r\n })\r\n var widgets: ReactWidgetPM[] = [];\r\n currentDashbord?.Widgets.forEach(widget => {\r\n if (layoutsDic[widget.key]) {\r\n widget.StartPotistion = `${layoutsDic[widget.key].x},${layoutsDic[widget.key].y}`;\r\n widget.EndPosition = `${layoutsDic[widget.key].w},${layoutsDic[widget.key].h}`;\r\n widget.Layout = layoutsDic[widget.key];\r\n widgets.push(widget)\r\n }\r\n\r\n });\r\n if (currentDashbord) {\r\n currentDashbord.Widgets = widgets;\r\n }\r\n console.log('after update widget', currentDashbord)\r\n setHasChanges(true);\r\n\r\n }\r\n\r\n const renderCancelConfirmDialogFooter = () => {\r\n return (\r\n <div className='dl-flex-row-end' >\r\n <Button label=\"Cancel\" onClick={() => onHide()} className=\"p-button-secondary\" />\r\n <Button label=\"Don't Save\" onClick={() => dontSave()} className=\"p-button-secondary\" />\r\n <Button label=\"Save\" onClick={() => save()} autoFocus className=\"p-button-warning\" />\r\n </div>\r\n );\r\n }\r\n const onHide = () => {\r\n setCancelConfirmDialog(false)\r\n }\r\n return (\r\n <div className='dl-full-hight'>\r\n\r\n <div className='dl-dashboard-header dl-card'>\r\n <div className='dl-flex-row dl-custom-btn'>\r\n <div className='dl-title-1'>{currentDashbord?.Name}</div>\r\n <Button\r\n icon=\"pi pi-ellipsis-v\"\r\n onClick={(e) => dashboardMoreButtonToggle?.current?.toggle(e)}\r\n className=\"p-button p-button-icon-only p-button-rounded p-button-text\"\r\n >\r\n <Ripple />\r\n </Button>\r\n <OverlayPanel ref={dashboardMoreButtonToggle} className=\"buttons-overlay\">\r\n <div className=\"buttons-list\">\r\n <div onClick={() => EditDashBoard()}>Edit</div>\r\n <div onClick={editLayout}>Edit Layout</div>\r\n\r\n </div>\r\n </OverlayPanel >\r\n </div>\r\n <div className='dl-flex-row'>\r\n {!isInEditMode ?\r\n <div className='dl-flex-row'>\r\n\r\n\r\n <div style={{ width: \"161px\" }}>\r\n <Dropdown\r\n value={[]}\r\n options={dashbords}\r\n optionValue=\"Id\"\r\n optionLabel=\"Name\"\r\n onChange={changeDashboard}\r\n placeholder=\"Choose Dashboard\"\r\n optionDisabled={(option) => {\r\n return option?.Disabled;\r\n }}\r\n scrollHeight=\"300px\"\r\n style={{ width: '100%' }}\r\n />\r\n </div>\r\n <Button icon=\"pi pi-plus\" onClick={() => props.openAddEditDashboard(undefined)}\r\n className=\"dl-dashboard-add p-button-rounded p-button-success\" />\r\n </div>\r\n : null}\r\n {/* <DashboardDialogComponent display={displayAddDashboard} onClose={onDashboardDialogClose}></DashboardDialogComponent> */}\r\n\r\n\r\n\r\n {isInEditMode ?\r\n <div className='dl-flex-row'>\r\n\r\n <Button\r\n label=\"Cancel\"\r\n className=\"p-button-secondary dl-m-r-s \"\r\n onClick={cancelSave}\r\n />\r\n\r\n <Dialog header=\"Unsaved Changes\" visible={cancelConfirmDialog} style={{ width: '50vw' }} footer={renderCancelConfirmDialogFooter()} onHide={onHide}>\r\n <p>This Dashboard has unsaved changes do you want to save it?</p>\r\n </Dialog>\r\n\r\n {hasChanges ?\r\n <Button\r\n label=\"Save\"\r\n form=\"frm\"\r\n // icon=\"pi pi-check\"\r\n onClick={save}\r\n autoFocus\r\n className={\"p-button-warning \"}\r\n /> : null\r\n }\r\n {!hasChanges ?\r\n <Button\r\n label=\"Save\"\r\n form=\"frm\"\r\n // icon=\"pi pi-check\"\r\n onClick={save}\r\n autoFocus\r\n className={\"p-button-secondary \"}\r\n /> : null\r\n }\r\n\r\n <div style={{ width: '192px', marginLeft: '15px' }}>\r\n <Dropdown\r\n options={WidgetTypes}\r\n optionValue=\"Code\"\r\n optionLabel=\"Name\"\r\n onChange={(e) => addWidget(e.value)}\r\n placeholder=\"Add Component\"\r\n optionDisabled={(option) => {\r\n return option?.Disabled;\r\n }}\r\n scrollHeight=\"300px\"\r\n />\r\n </div>\r\n </div>\r\n : null}\r\n </div>\r\n\r\n\r\n </div>\r\n\r\n <div className='dl-dashboard-body'>\r\n <DashboardDesigner onSelectDataPoint={props.onSelectDataPoint} editMode={isInEditMode} onLayoutChange={updateWidgets} dashboardLayouts={layouts} openEditWidget={(widget: ReactWidgetPM) => props.openAddEditWidget(widget)} ></DashboardDesigner>\r\n </div>\r\n </div >\r\n\r\n )\r\n}\r\nexport default Dashboard;\r\n\r\n"],"names":["Tools","GetLogitudeURL","logitude_url","location","href","replace","indexOf","urlArr","split","url","substring","lastIndexOf","length","ApiServices","_apiUrl","getByFilters","api","filters","token","getTokenFromStorage","apiURL","ConcatFiltersToURL","axios","get","headers","post","date","window","localStorage","getItem","urlparameters","mykeys","Object","keys","addtionalFiltersValues","i","propName","propValue","ignoreFilter","concat","encodeURIComponent","JSON","stringify","DashboardAnalyticsService","_ApiServices","getData","widget","controller","ApexChart","props","useState","error","setEror","MeasuresIds","useRef","GroupByIds","isView","setisView","viewError","setViewError","isDataLoaded","hasDataError","series","options","args","serArgs","isLoadingDrow","useEffect","setTimeout","current","updateView","console","log","dashboardAnalyticsService","then","result","fillIds","data","getChartOptions","response","ErrorMessage","message","EntityId","Filters","WidgetMeasures","datas","measuresIds","groupByIds","seriesMeasure","push","MeasureFieldId","SeriesMeasureVulues","vulue","GroupById","lineOptoins","values","categories","map","e","z","Value","Label","chart","height","type","zoom","enabled","events","click","dataPointSelection","toolbar","tools","download","dataLabels","stroke","curve","title","text","align","grid","row","colors","opacity","xaxis","noData","barOptoins","plotOptions","bar","horizontal","position","offsetX","style","fontSize","show","width","tooltip","shared","intersect","pieOptoins","labels","donutOptoins","responsive","breakpoint","legend","offsetY","handelNullLabels","forEach","element","value","onSelectDataPoint","dataPointIndex","seriesIndex","Widget","TypeCode","React","className","ProgressSpinner","strokeWidth","animationDuration","ReactApexChart","src","WidgetCard","state","moreBtnToggle","editWidget","hide","editBtnClicked","key","el","Title","isInEditMode","Button","icon","onClick","toggle","OverlayPanel","ref","deleteBtnClicked","ResponsiveReactGridLayout","WidthProvider","Responsive","DashboardDesigner","array12","Array","from","fill","minimumPlaceholderRowsCount","lg","layouts","setLayouts","placeholderRowsArray","setplaceholderRowsArray","firstChange","setFirstChange","undefined","dateFilter","setisInEditMode","widgets","setWidgets","gridLayoutComponent","createLayout","dashboardLayouts","layout","w","Layout","editMode","onLayoutChange","changedLayouts","UpdatePlaceholderDimensions","deletePanel","id","newLayouts","filter","newWidgets","ChangeSetOp","openEditWidget","gridLayout","gridElementHeight","elementRef","clientHeight","newPlaceholderRows","Math","floor","layoutGridProps","rowHeight","compactType","isDraggable","isResizable","onWidthChange","cols","md","sm","xs","xxs","useCSSTransforms","DashBoardService","getDataByFilters","tableName","add","WidgetTypeListService","getAll","deepClone","obj","parse","Dashboard","newWidgetWidth","newWidgetHeight","dashbords","setDashbords","currentDashbord","setCurrentDashbord","beforEditDashbord","setBeforEditDashbord","hasChanges","setHasChanges","setIsInEditMode","WidgetTypes","setWidgetTypes","cancelConfirmDialog","setCancelConfirmDialog","dashboardMoreButtonToggle","createRef","dashboardService","widgetTypeListService","getWidgetTypes","dataBinding","onGetDashboard","subscribe","applyLayouts","onGetAllDashboards","onAddUpdateWidget","isUpdated","setItem","EditDashBoard","openAddEditDashboard","addWidget","widgetCode","EvaluateNewWidgetPosition","openAddEditWidget","StartPotistion","x","y","EndPosition","h","widgetYPosition","widgetXPosition","allLayouts","exisitWidgetInNewPosition","find","editLayout","save","onSaveDashboard","onHide","cancelSave","dontSave","next","changeDashboard","event","Id","dasboard","onChangeDashboard","dashbord","Widgets","uuidv4","minH","minW","updateWidgets","layoutsDic","sizeType","renderCancelConfirmDialogFooter","label","autoFocus","Name","Ripple","Dropdown","optionValue","optionLabel","onChange","placeholder","optionDisabled","option","Disabled","scrollHeight","Dialog","header","visible","footer","form","marginLeft"],"mappings":"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"}
1
+ {"version":3,"file":"index.modern.js","sources":["../src/services/tools.ts","../src/services/ApiServices.ts","../src/services/DashboardAnalyticsService.ts","../src/features/Dashboard/ChartsComponents/ApexChart.tsx","../src/features/Dashboard/WidgetCard.tsx","../src/features/Dashboard/DashboardDesigner.tsx","../src/services/DashBoardService.ts","../src/services/WidgetTypeListService.ts","../src/services/clone.ts","../src/index.tsx"],"sourcesContent":["export class Tools{\r\n public static GetLogitudeURL() {\r\n\r\n var logitude_url = location.href.replace('index.html', '');\r\n\r\n if (location.href.indexOf('localhost') > -1) {\r\n logitude_url = 'http://localhost:9996';//localhost:9996//';//\r\n }\r\n\r\n else {\r\n var urlArr = location.href.split(\"/index.html\");\r\n var url = urlArr[0];\r\n url = url.replace(url.substring(url.lastIndexOf('/'), url.length), \"\");\r\n logitude_url = url ;\r\n }\r\n\r\n return logitude_url;\r\n }\r\n}","import axios from \"axios\";\r\nimport { ApiQueryFilters } from \"../common/data-contracts/ApiQueryFilter\";\r\nimport { APIResult } from \"../types/APIResult\";\r\nimport { Tools } from './tools';\r\n\r\n\r\nexport class ApiServices{ \r\n private _apiUrl: string;\r\n constructor(){\r\n this._apiUrl = Tools.GetLogitudeURL() ;\r\n }\r\n getByFilters<T>(api,filters: ApiQueryFilters) {\r\n \r\n let token: string = this.getTokenFromStorage();\r\n\t\tvar apiURL = `${this._apiUrl}${api}`;\r\n\t\tapiURL = this.ConcatFiltersToURL(filters, apiURL);\r\n\r\n return axios.get<APIResult<T>>(apiURL, { headers: { 'Content-Type': 'application/json', 'Token': token } });\r\n }\r\n get<T>(api) {\r\n \r\n let token: string = this.getTokenFromStorage();\r\n\t\tvar apiURL = `${this._apiUrl}${api}`;\r\n return axios.get<T>(apiURL, { headers: { 'Content-Type': 'application/json', 'Token': token } });\r\n }\r\n post<T>(api,date){\r\n let token: string = this.getTokenFromStorage();\r\n\t\tvar apiURL = `${this._apiUrl}${api}`;\r\n return axios.post<T>(apiURL,date, { headers: { 'Content-Type': 'application/json', 'Token': token } });\r\n }\r\n\r\n getTokenFromStorage(){\r\n return window.localStorage.getItem(\"token\") || '';\r\n }\r\n private ConcatFiltersToURL(filters: ApiQueryFilters, urlparameters: string)\r\n {\r\n var mykeys = Object.keys(filters);\r\n var addtionalFiltersValues: string | null = null;\r\n\r\n for (var i in mykeys) {\r\n var propName = mykeys[i];\r\n var propValue = filters[propName];\r\n var ignoreFilter = ((propName.indexOf(\"Operator\") > 0 && propValue == \"Equals\") || propName == \"AdditionalFilters\");\r\n\r\n if (urlparameters != \"?\") {\r\n urlparameters = urlparameters.concat('&');\r\n }\r\n\r\n if (!ignoreFilter) {\r\n propValue = propValue ? encodeURIComponent(propValue) : '';\r\n urlparameters = urlparameters.concat(propName.concat('=').concat(propValue));\r\n }\r\n\r\n if (propName == \"AdditionalFilters\" && propValue.length > 0) {\r\n addtionalFiltersValues = JSON.stringify(propValue);\r\n }\r\n }\r\n\r\n if (addtionalFiltersValues) {\r\n urlparameters = urlparameters.concat(\"&AdditionalFilters=\").concat(addtionalFiltersValues);\r\n }\r\n return urlparameters;\r\n }\r\n}","import axios from \"axios\";\r\nimport { ApiQueryFilters } from \"../common/data-contracts/ApiQueryFilter\";\r\nimport { ReactDashboardPM } from \"../types/Dashboard\";\r\nimport { SeriesMeasure } from \"../types/SeriesMeasure\";\r\nimport { ApiServices } from \"./ApiServices\";\r\nimport { Tools } from './tools';\r\nimport { ReactWidgetPM } from '../types/widget';\r\n\r\n\r\nexport class DashboardAnalyticsService{ \r\n _ApiServices:ApiServices;\r\n controller = 'DashboardAnalytics';\r\n constructor(){\r\n this._ApiServices = new ApiServices();\r\n }\r\n \r\n\r\n getData(widget: ReactWidgetPM) {\r\n return this._ApiServices.post<SeriesMeasure[]>(`/api/${this.controller}/PostGetDataAnalytic`,widget);\r\n }\r\n \r\n}","import React, { useEffect, useRef } from \"react\";\r\nimport ReactApexChart from \"react-apexcharts\";\r\nimport { ProgressSpinner } from 'primereact/progressspinner';\r\nimport { ReactWidgetPM } from \"../../../types/widget\";\r\nimport { useState } from 'react';\r\nimport { DashboardAnalyticsService } from \"../../../services/DashboardAnalyticsService\";\r\nimport { DataPointSelection, SeriesMeasure } from '../../../types/SeriesMeasure';\r\nimport { ApexOptions } from \"apexcharts\";\r\n\r\ntype ApexChartProps = {\r\n widget: ReactWidgetPM | undefined,\r\n onSelectDataPoint: (dataPointSelection: DataPointSelection) => void;\r\n};\r\nconst ApexChart = (props: ApexChartProps) => {\r\n\r\n const [error, setEror] = useState<string>('');\r\n const MeasuresIds = useRef<string[]>([]);\r\n const GroupByIds = useRef<string[]>([]);\r\n const GroupCount = useRef<number>(0);\r\n const [isView, setisView] = useState<boolean>(false);\r\n const [viewError, setViewError] = useState<boolean>(false);\r\n const isDataLoaded = useRef<boolean>(false);\r\n const hasDataError = useRef<boolean>(false);\r\n const [args, serArgs] = useState<ApexChartArgs>({\r\n series: [],\r\n options: {}\r\n });\r\n const isLoadingDrow = useRef(true);\r\n\r\n useEffect(() => {\r\n setTimeout(function () {\r\n isLoadingDrow.current = false;\r\n updateView();\r\n }, 500);\r\n }, [])\r\n useEffect(() => {\r\n console.log('useEffect ApexChart', props.widget);\r\n var dashboardAnalyticsService = new DashboardAnalyticsService();\r\n dashboardAnalyticsService.getData(props.widget as ReactWidgetPM).then(result => {\r\n fillIds(result.data);\r\n const data = getChartOptions(result.data);\r\n serArgs(data);\r\n isDataLoaded.current = true;\r\n hasDataError.current = false;\r\n updateView();\r\n }, error => {\r\n console.log('error', error);\r\n if (error?.response?.data?.ErrorMessage)\r\n setEror(error?.response?.data?.ErrorMessage);\r\n else\r\n setEror(error.message);\r\n isDataLoaded.current = true;\r\n hasDataError.current = true;\r\n updateView();\r\n })\r\n\r\n\r\n }, [props.widget?.EntityId, props.widget?.Filters, props.widget?.WidgetMeasures]);\r\n\r\n const fillIds = (datas: SeriesMeasure[]) => {\r\n var measuresIds: string[] = [];\r\n var groupByIds: string[] = [];\r\n for (const seriesMeasure of datas) {\r\n measuresIds.push(seriesMeasure.MeasureFieldId);\r\n }\r\n\r\n for (const seriesMeasure of datas) {\r\n for (const vulue of seriesMeasure.SeriesMeasureVulues) {\r\n groupByIds.push(vulue.GroupById);\r\n }\r\n break;\r\n }\r\n\r\n MeasuresIds.current = measuresIds;\r\n GroupByIds.current = groupByIds;\r\n\r\n }\r\n const updateView = () => {\r\n if (isDataLoaded.current && !isLoadingDrow.current && !hasDataError.current) {\r\n setisView(true);\r\n setViewError(false);\r\n }\r\n\r\n if (isDataLoaded.current && !isLoadingDrow.current && hasDataError.current) {\r\n setisView(false);\r\n setViewError(true);\r\n }\r\n\r\n }\r\n\r\n const lineOptoins = (values: SeriesMeasure[]): ApexChartArgs => {\r\n\r\n\r\n var series: any = [];\r\n var categories: any = [];\r\n if (values && values[0]) {\r\n series = values.map(e => {\r\n return { data: e.SeriesMeasureVulues.map(z => z.Value) }\r\n }\r\n );\r\n categories = values[0].SeriesMeasureVulues.map(e => e.Label);\r\n }\r\n\r\n return {\r\n\r\n series: series,\r\n options: {\r\n chart: {\r\n height: 350,\r\n type: 'line',\r\n zoom: {\r\n enabled: false\r\n },\r\n events: {\r\n click: dataPointSelection,\r\n },\r\n toolbar: {\r\n tools: {\r\n download: false,\r\n }\r\n }\r\n },\r\n dataLabels: {\r\n enabled: false\r\n },\r\n stroke: {\r\n curve: 'straight'\r\n },\r\n title: {\r\n text: '',\r\n align: 'left'\r\n },\r\n grid: {\r\n row: {\r\n colors: ['#f3f3f3', 'transparent'], // takes an array which will be repeated on columns\r\n opacity: 0.5\r\n },\r\n },\r\n xaxis: {\r\n categories: categories\r\n },\r\n noData: {\r\n text: 'No Data Found',\r\n\r\n }\r\n },\r\n\r\n\r\n };\r\n }\r\n const barOptoins = (values: SeriesMeasure[]): ApexChartArgs => {\r\n var series: any = [{\r\n data: []\r\n }];\r\n var categories: any = [];\r\n if (values && values[0]) {\r\n series = values.map(e => {\r\n return { data: e.SeriesMeasureVulues.map(z => z.Value) }\r\n }\r\n );\r\n categories = values[0].SeriesMeasureVulues.map(e => e.Label);\r\n }\r\n return {\r\n series: series\r\n ,\r\n options: {\r\n chart: {\r\n type: 'bar',\r\n height: 430,\r\n events: {\r\n dataPointSelection: dataPointSelection\r\n },\r\n toolbar: {\r\n tools: {\r\n download: false,\r\n }\r\n }\r\n },\r\n plotOptions: {\r\n bar: {\r\n horizontal: true,\r\n dataLabels: {\r\n position: 'top',\r\n },\r\n }\r\n },\r\n dataLabels: {\r\n enabled: true,\r\n offsetX: -6,\r\n style: {\r\n fontSize: '12px',\r\n colors: ['#fff']\r\n }\r\n },\r\n stroke: {\r\n show: true,\r\n width: 1,\r\n colors: ['#fff']\r\n },\r\n tooltip: {\r\n shared: true,\r\n intersect: false\r\n },\r\n xaxis: {\r\n categories: categories\r\n\r\n },\r\n noData: {\r\n text: 'No Data Found',\r\n\r\n }\r\n },\r\n\r\n\r\n };\r\n }\r\n const pieOptoins = (values: SeriesMeasure[]): ApexChartArgs => {\r\n\r\n var series: any = [];\r\n var labels: any = [];\r\n if (values && values[0]) {\r\n series = values[0].SeriesMeasureVulues.map(e => e.Value);\r\n labels = values[0].SeriesMeasureVulues.map(e => e.Label);\r\n }\r\n var colors = CreateColors(labels.length);\r\n\r\n return {\r\n\r\n series: series,\r\n options: {\r\n chart: {\r\n type: 'pie',\r\n events: {\r\n dataPointSelection: dataPointSelection\r\n },\r\n toolbar: {\r\n tools: {\r\n download: false,\r\n }\r\n }\r\n },\r\n labels: labels,\r\n colors:colors,\r\n noData: {\r\n text: 'No Data Found',\r\n\r\n }\r\n\r\n },\r\n\r\n\r\n\r\n };\r\n }\r\n const CreateColors = (count: number): any[] | undefined => {\r\n GroupCount.current = count;\r\n var colors: any[] = [];\r\n CreateDeferuntColors(colors, 0, 100, 50);\r\n if (GroupCount.current <= 0)\r\n return colors;\r\n CreateDeferuntColors(colors, 15, 100, 50);\r\n if (GroupCount.current <= 0)\r\n return colors;\r\n CreateDeferuntColors(colors, 0, 50, 50);\r\n if (GroupCount.current <= 0)\r\n return colors;\r\n CreateDeferuntColors(colors, 15, 50, 50);\r\n if (GroupCount.current <= 0)\r\n return colors;\r\n CreateDeferuntColors(colors, 0, 50, 30);\r\n if (GroupCount.current <= 0)\r\n return colors;\r\n CreateDeferuntColors(colors, 15, 50, 30);\r\n if (GroupCount.current <= 0)\r\n return colors;\r\n\r\n return undefined;\r\n\r\n\r\n }\r\n const CreateDeferuntColors = (colors: any[], startAngle: number, s: number, v: number) => {\r\n for (let index = 0; GroupCount.current > 0 && index < 12; index++) {\r\n var color = `hsl(${startAngle + index * 30}deg ${s}% ${v}%)`;\r\n colors.push(color);\r\n GroupCount.current--;\r\n }\r\n }\r\n const donutOptoins = (values: SeriesMeasure[]): ApexChartArgs => {\r\n var series: any[] = [];\r\n var labels: any[] = [];\r\n if (values && values[0]) {\r\n series = values[0].SeriesMeasureVulues.map(e => e.Value);\r\n labels = values[0].SeriesMeasureVulues.map(e => e.Label);\r\n var ll = labels.length;\r\n for (let index = 0; index < ll; index++) {\r\n series[index] = 100;\r\n series.push(100);\r\n labels.push(labels[index]+'TT');\r\n }\r\n for (let index = 0; index < ll; index++) {\r\n series.push(100);\r\n labels.push(labels[index]+'TT2');\r\n }\r\n }\r\n var colors = CreateColors(labels.length);\r\n var result: { series, options: ApexOptions } = {\r\n\r\n series: series,\r\n options: {\r\n chart: {\r\n width: 380,\r\n type: 'donut',\r\n events: {\r\n dataPointSelection: dataPointSelection\r\n },\r\n toolbar: {\r\n tools: {\r\n download: false,\r\n }\r\n }\r\n },\r\n dataLabels: {\r\n enabled: false\r\n },\r\n responsive: [{\r\n breakpoint: 480,\r\n options: {\r\n chart: {\r\n width: 200\r\n },\r\n legend: {\r\n show: false\r\n }\r\n }\r\n }],\r\n legend: {\r\n position: 'right',\r\n offsetY: 0,\r\n height: 230,\r\n },\r\n labels: labels,\r\n colors:colors,\r\n noData: {\r\n text: 'No Data Found',\r\n\r\n }\r\n },\r\n\r\n\r\n };\r\n return result;\r\n }\r\n\r\n const handelNullLabels = (values: SeriesMeasure[]) => {\r\n values.forEach(element => {\r\n element.SeriesMeasureVulues.forEach(value => {\r\n if (!value.Label || value.Label == '')\r\n value.Label = 'Not defined'\r\n });\r\n });\r\n }\r\n\r\n\r\n\r\n\r\n const dataPointSelection = (e: any, chart?: any, options?: any): void => {\r\n props.onSelectDataPoint({\r\n GroupById: GroupByIds.current[options.dataPointIndex],\r\n MeasureFieldId: MeasuresIds.current[options.seriesIndex],\r\n Widget: props.widget\r\n })\r\n };\r\n\r\n const getChartOptions = (values: SeriesMeasure[]): ApexChartArgs => {\r\n handelNullLabels(values);\r\n switch (props.widget?.TypeCode) {\r\n case 'bar':\r\n return barOptoins(values);\r\n break;\r\n case 'line':\r\n return lineOptoins(values);\r\n break;\r\n case 'pie':\r\n return pieOptoins(values);\r\n break;\r\n case 'donut':\r\n return donutOptoins(values);\r\n break;\r\n default:\r\n break;\r\n }\r\n return barOptoins(values);\r\n };\r\n\r\n return (\r\n !isView && !viewError ?\r\n <div className={'dl-full-hight dl-flex-content-center spinner-custome'}>\r\n <ProgressSpinner style={{ width: '100px', height: '100px' }} strokeWidth=\"4\" animationDuration=\"2s\" />\r\n </div>\r\n :\r\n isView ?\r\n <ReactApexChart\r\n options={args?.options}\r\n series={args?.series}\r\n type={props.widget?.TypeCode}\r\n height={\"100%\"}\r\n width={\"100%\"}\r\n\r\n />\r\n : <div className=\"dl-flex-content-center dl-full-hight \" >\r\n <div className=\"dl-tooltip\">\r\n <img width={100} src={\"https://www.seekpng.com/png/full/334-3345964_error-icon-png.png\"} />\r\n <span className=\"dl-tooltiptext\">{error}</span>\r\n </div>\r\n\r\n\r\n </div>\r\n\r\n\r\n )\r\n}\r\nexport type ApexChartArgs = {\r\n options: ApexOptions;\r\n series: ApexAxisChartSeries | ApexNonAxisChartSeries;\r\n}\r\n\r\nexport default ApexChart;\r\n\r\n\r\n","import { stat } from \"fs\";\r\nimport { Button } from \"primereact/button\";\r\nimport { OverlayPanel } from \"primereact/overlaypanel\";\r\nimport React, { useRef, useState, useEffect } from \"react\";\r\nimport { DataPointSelection } from \"../../types/SeriesMeasure\";\r\nimport { ReactWidgetPM } from \"../../types/widget\";\r\nimport ApexChart from \"./ChartsComponents/ApexChart\";\r\n\r\n\r\n\r\ntype WidgetCardProps = {\r\n editBtnClicked(widget: any): any;\r\n deleteBtnClicked(i: any): any;\r\n widget: ReactWidgetPM | undefined;\r\n el: any;\r\n dateFilter: any;\r\n isInEditMode: boolean;\r\n onSelectDataPoint:(dataPointSelection:DataPointSelection) =>void;\r\n}\r\n\r\n\r\nconst WidgetCard = (props: WidgetCardProps, state: any) => {\r\n const moreBtnToggle = useRef<OverlayPanel>(null);\r\n \r\n\r\n const editWidget = ()=>{\r\n moreBtnToggle.current?.hide();\r\n props.editBtnClicked(props.widget)\r\n };\r\n\r\n\r\n return (\r\n <div className=\"panel\" key={props.el.i}>\r\n <header>\r\n <h1>{props.widget?.Title || \"not set\"}</h1>\r\n {\r\n props.isInEditMode ? \r\n <Button\r\n icon=\"pi pi-ellipsis-v\"\r\n className=\"p-button-lg p-button-rounded p-button-text\"\r\n onClick={(e) => moreBtnToggle.current?.toggle(e)}\r\n /> \r\n : null\r\n }\r\n\r\n\r\n <OverlayPanel ref={moreBtnToggle} className=\"buttons-overlay\">\r\n <div className=\"buttons-list\">\r\n <div onClick={editWidget} > Edit </div>\r\n <div onClick={() => props.deleteBtnClicked(props.widget?.key)} >Remove</div>\r\n </div>\r\n </OverlayPanel>\r\n </header>\r\n\r\n <div className=\"dl-dashboard-widget\">\r\n <ApexChart widget={props.widget} onSelectDataPoint={props.onSelectDataPoint} />\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\nimport { DataPointSelection } from \"../../types/SeriesMeasure\";\r\n\r\nconst ResponsiveReactGridLayout = WidthProvider(Responsive);\r\nconst newWidgetWidth = 3;\r\n\r\ntype DashboardDesignerProps = {\r\n editMode: boolean,\r\n dashboardLayouts: { lg: ReactWidgetPM[] },\r\n openEditWidget: (widget: ReactWidgetPM) => void\r\n onLayoutChange: (layouts: Layouts) => void,\r\n onSelectDataPoint:(dataPointSelection:DataPointSelection) =>void\r\n};\r\nconst DashboardDesigner = (props: DashboardDesignerProps) => {\r\n\r\n\r\n const array12 = Array.from({ length: 12 }).fill(null);\r\n const minimumPlaceholderRowsCount = 12;\r\n const [layouts, setLayouts] = useState<Layouts>({ lg: [] });\r\n const [placeholderRowsArray, setplaceholderRowsArray] = useState(Array.from({ length: minimumPlaceholderRowsCount }).fill(null));\r\n const [firstChange, setFirstChange] = useState(true);\r\n const [dateFilter, setDateFilter] = useState<Date | Date[] | undefined>(undefined);\r\n const [isInEditMode, setisInEditMode] = useState(false);\r\n const [widgets, setWidgets] = useState<{ lg: ReactWidgetPM[] }>({ lg: [] });\r\n const gridLayoutComponent = useRef<any>(null);\r\n\r\n useEffect(() => {\r\n setFirstChange(true);\r\n setLayouts({});\r\n setLayouts(createLayout());\r\n setWidgets(props.dashboardLayouts);\r\n }, [props.dashboardLayouts]);\r\n\r\n const createLayout = (): Layouts => {\r\n var layout: any = { lg: [] };\r\n props.dashboardLayouts.lg.map(w => w.Layout as Layout).forEach(e => {\r\n layout.lg.push(e)\r\n })\r\n return layout;\r\n }\r\n useEffect(() => {\r\n setisInEditMode(props.editMode);\r\n console.log(' setisInEditMode(props.editMode);')\r\n }, [props.editMode]);\r\n\r\n\r\n // const applyModeSetting = () => {\r\n // layouts.current.lg.forEach(element => {\r\n // element.isDraggable = props.editMode;\r\n // element.isResizable = props.editMode;\r\n\r\n // });\r\n // }\r\n\r\n function reset() {\r\n window.localStorage.clear();\r\n window.location.reload();\r\n }\r\n\r\n function onLayoutChange(layout: any, changedLayouts: Layouts) {\r\n if (firstChange) {\r\n setFirstChange(false);\r\n return;\r\n }\r\n setLayouts(changedLayouts);\r\n UpdatePlaceholderDimensions();\r\n props.onLayoutChange(changedLayouts)\r\n }\r\n\r\n function deletePanel(id) {\r\n var newLayouts = { lg: layouts.lg.filter(e => e.i != id) }\r\n\r\n setLayouts(newLayouts);\r\n\r\n var newWidgets = { lg: widgets.lg.filter(e => e.key != id) }\r\n setWidgets(newWidgets);\r\n props.onLayoutChange(newLayouts)\r\n };\r\n\r\n function editWidget(widget: ReactWidgetPM) {\r\n widget.ChangeSetOp = 'Update';\r\n props.openEditWidget(widget);\r\n };\r\n\r\n\r\n function UpdatePlaceholderDimensions() {\r\n var gridLayout = gridLayoutComponent.current;\r\n if (!gridLayout)\r\n return;\r\n console.log('setplaceholderRowsArray(',gridLayout);\r\n const gridElementHeight = gridLayout.elementRef.current.clientHeight;\r\n\r\n let newPlaceholderRows = Math.floor(gridElementHeight / layoutGridProps.rowHeight);\r\n newPlaceholderRows = newPlaceholderRows < minimumPlaceholderRowsCount ? minimumPlaceholderRowsCount : newPlaceholderRows;\r\n setplaceholderRowsArray(Array.from({ length: newPlaceholderRows }).fill(null));\r\n console.log('setplaceholderRowsArray(',newPlaceholderRows);\r\n }\r\n return (<div className=\"dl-full-hight\">\r\n <div className=\"dl-box\">\r\n {/* <div className=\"dl-row dl-header\">\r\n {renderPageHeader()}\r\n </div> */}\r\n <div className=\"dl-row dl-content\">\r\n <div className=\"dl-grid-container\">\r\n <div className=\"dl-grid dl-grid--bordered\">\r\n {isInEditMode ? placeholderRowsArray.map((e, i) =>\r\n array12.map((e, i) => (\r\n <div key={i}\r\n style={{\r\n height: layoutGridProps.rowHeight,\r\n }}\r\n ></div>\r\n ))\r\n \r\n ) : null}\r\n </div>\r\n\r\n\r\n <ResponsiveReactGridLayout ref={gridLayoutComponent}\r\n {...layoutGridProps}\r\n layouts={layouts}\r\n compactType=\"vertical\"\r\n isDraggable={isInEditMode}\r\n isResizable={isInEditMode}\r\n onWidthChange={() => UpdatePlaceholderDimensions()}\r\n onLayoutChange={(layout, layouts) =>\r\n onLayoutChange(layout, layouts)\r\n }\r\n >\r\n {widgets.lg.map((widget) =>\r\n\r\n <div key={widget.Layout?.i}>\r\n <WidgetCard\r\n isInEditMode={isInEditMode}\r\n key={widget.Layout?.i}\r\n widget={widget}\r\n el={widget}\r\n dateFilter={dateFilter}\r\n editBtnClicked={editWidget}\r\n deleteBtnClicked={deletePanel}\r\n onSelectDataPoint={props.onSelectDataPoint}\r\n />\r\n </div>\r\n )}\r\n </ResponsiveReactGridLayout>\r\n </div>\r\n\r\n </div>\r\n {/* <div className=\"dl-row dl-footer\">\r\n <p><b>footer</b> (fixed height)</p>\r\n </div> */}\r\n </div>\r\n {/* {renderNewWidgetDialog()} */}\r\n\r\n\r\n\r\n\r\n\r\n </div>);\r\n\r\n}\r\n\r\n\r\nexport const layoutGridProps = {\r\n rowHeight: 50,\r\n className: \"layout\",\r\n cols: { lg: 12, md: 6, sm: 2, xs: 1, xxs: 1 },\r\n useCSSTransforms: true,\r\n}\r\n\r\n\r\n\r\n\r\nexport const WidgetTypes = [\r\n { Name: \"Filter\", Disabled: true },\r\n { Name: \"Chart\", Disabled: false },\r\n { Name: \"Data Table\", Disabled: true },\r\n { Name: \"Pivot Table\", Disabled: true },\r\n { Name: \"KPI\", Disabled: true },\r\n { Name: \"Gauge\", Disabled: true },\r\n];\r\nexport const widgetComponents = [\r\n { type: \"Bar\", component: BarChartComponent },\r\n { type: \"Column\", component: ColumnChartComponent },\r\n { type: \"Pie\", component: PieChartComponent },\r\n { type: \"Mixed\", component: MixedChartComponent },\r\n { type: \"Timeline\", component: TimelineChartComponent },\r\n { type: \"Candle\", component: CandleChartComponent },\r\n { type: \"Area\", component: AreaChartComponent },\r\n];\r\n\r\n\r\nexport default DashboardDesigner;\r\n","import 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\nimport { DataPointSelection } from './types/SeriesMeasure';\r\n\r\ntype DashboardProps = {\r\n token: string,\r\n tenant: number,\r\n userId: string,\r\n dataBinding: DashboardDataBinding,\r\n 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 onSelectDataPoint:(dataPointSelection:DataPointSelection) =>void;\r\n};\r\nconst Dashboard = (props: DashboardProps) => {\r\n const newWidgetWidth = 3;\r\n const newWidgetHeight = 5;\r\n\r\n const [dashbords, setDashbords] = useState<ReactDashboardPM[]>([]);\r\n const [currentDashbord, setCurrentDashbord] = useState<ReactDashboardPM | undefined>(undefined);\r\n const [beforEditDashbord, setBeforEditDashbord] = useState<ReactDashboardPM | undefined>(undefined);\r\n const [hasChanges, setHasChanges] = useState(false);\r\n const [isInEditMode, setIsInEditMode] = useState<boolean>(false);\r\n const [WidgetTypes, setWidgetTypes] = useState<WidgetType[]>();\r\n const [layouts, setLayouts] = useState<{ lg: ReactWidgetPM[] }>({ lg: [] });\r\n const [cancelConfirmDialog, setCancelConfirmDialog] = useState(false);\r\n const dashboardMoreButtonToggle = createRef<OverlayPanel>();\r\n const dashboardService = new DashBoardService();\r\n const widgetTypeListService = new WidgetTypeListService();\r\n useEffect(() => {\r\n getWidgetTypes();\r\n\r\n props.dataBinding.onGetDashboard.subscribe(e => {\r\n console.log('onGetDashboard.subscribe', e)\r\n setCurrentDashbord(e);\r\n applyLayouts(e);\r\n })\r\n props.dataBinding.onGetAllDashboards.subscribe(e => {\r\n console.log('onGetAllDashboard.subscribe', e)\r\n\r\n setDashbords(e);\r\n });\r\n\r\n props.dataBinding.onAddUpdateWidget.subscribe(isUpdated => {\r\n if (!isUpdated)\r\n return;\r\n setHasChanges(true);\r\n });\r\n\r\n }, [])\r\n\r\n Session.CurrentUserId = props.userId;\r\n Session.Tenant = props.tenant;\r\n Session.Token = props.token;\r\n if (props?.token?.length > 0)\r\n localStorage.setItem(\"token\", props?.token);\r\n\r\n\r\n const getWidgetTypes = () => {\r\n widgetTypeListService.getAll().then(data => {\r\n setWidgetTypes(data.data);\r\n });\r\n }\r\n const EditDashBoard = () => {\r\n props.openAddEditDashboard(currentDashbord);\r\n dashboardMoreButtonToggle?.current?.hide();\r\n\r\n }\r\n const addWidget = (widgetCode) => {\r\n var position = EvaluateNewWidgetPosition();\r\n props.openAddEditWidget({ TypeCode: widgetCode, StartPotistion: `${position.x},${position.y}`, EndPosition: `${position.w},${position.h}`, ChangeSetOp: 'Insert' } as ReactWidgetPM);\r\n\r\n }\r\n const EvaluateNewWidgetPosition = () => {\r\n let widgetYPosition = 0;\r\n let widgetXPosition = 0;\r\n let allLayouts = layouts[\"lg\"].map(e => e.Layout);\r\n for (let y = 0; true; y++) {\r\n widgetYPosition = y;\r\n for (let x = 0; x < 10; x++) {\r\n widgetXPosition = x;\r\n\r\n var exisitWidgetInNewPosition = allLayouts.find(e => {\r\n return e\r\n && widgetXPosition < e.x + e.w && widgetXPosition + newWidgetWidth > e.x\r\n && widgetYPosition < e.y + e.h && widgetYPosition + newWidgetHeight > e.y\r\n });\r\n if (!exisitWidgetInNewPosition)\r\n return { x: widgetXPosition, y: widgetYPosition, w: newWidgetWidth, h: newWidgetHeight };\r\n }\r\n\r\n }\r\n\r\n }\r\n const editLayout = () => {\r\n setIsInEditMode(true);\r\n setHasChanges(false);\r\n dashboardMoreButtonToggle?.current?.hide();\r\n\r\n setBeforEditDashbord(deepClone(currentDashbord));\r\n }\r\n const save = () => {\r\n setIsInEditMode(false)\r\n console.log('onSaveDashboard > ', currentDashbord)\r\n props.onSaveDashboard(currentDashbord);\r\n onHide();\r\n\r\n setHasChanges(false);;\r\n }\r\n\r\n const cancelSave = () => {\r\n if (!hasChanges) {\r\n setIsInEditMode(false);\r\n setHasChanges(false);\r\n\r\n } else {\r\n setCancelConfirmDialog(true);\r\n }\r\n\r\n\r\n }\r\n\r\n const dontSave = () => {\r\n setHasChanges(false)\r\n setIsInEditMode(false);\r\n props.dataBinding.onGetDashboard.next(beforEditDashbord);\r\n setCancelConfirmDialog(false);\r\n }\r\n const changeDashboard = (event) => {\r\n if (event.value == currentDashbord?.Id)\r\n return;\r\n var dasboard = dashbords.find(e => e.Id == event.value);\r\n\r\n props.onChangeDashboard(dasboard);\r\n props.dataBinding.onGetDashboard.next(dasboard);\r\n\r\n }\r\n\r\n const applyLayouts = (dashbord: ReactDashboardPM | undefined) => {\r\n if ((!dashbord?.Widgets))\r\n return;\r\n var layout: { lg: ReactWidgetPM[] } = { lg: [] };\r\n dashbord?.Widgets.map(widget => {\r\n if (widget.Id && widget.Id.length > 0)\r\n widget.key = widget.Id;\r\n else\r\n widget.key = uuidv4();\r\n widget.Layout = {\r\n minH: 5,\r\n minW: 3,\r\n i: widget.key,\r\n w: +widget.EndPosition.split(',')[0],\r\n h: +widget.EndPosition.split(',')[1],\r\n x: +widget.StartPotistion.split(',')[0],\r\n y: +widget.StartPotistion.split(',')[1],\r\n }\r\n layout.lg.push(widget\r\n\r\n )\r\n });\r\n console.log('setLayouts -- > ', layout)\r\n setLayouts(layout);\r\n\r\n }\r\n const updateWidgets = (layouts: Layouts) => {\r\n console.log('updateWidgets = (layouts:Layouts', layouts)\r\n var layoutsDic: { [key: string]: Layout } = {};\r\n Object.keys(layouts).forEach(sizeType => {\r\n if (layouts[sizeType].length > 0) {\r\n layouts[sizeType].map(layout => {\r\n layoutsDic[layout.i] = layout;\r\n })\r\n return;\r\n }\r\n })\r\n var widgets: ReactWidgetPM[] = [];\r\n currentDashbord?.Widgets.forEach(widget => {\r\n if (layoutsDic[widget.key]) {\r\n widget.StartPotistion = `${layoutsDic[widget.key].x},${layoutsDic[widget.key].y}`;\r\n widget.EndPosition = `${layoutsDic[widget.key].w},${layoutsDic[widget.key].h}`;\r\n widget.Layout = layoutsDic[widget.key];\r\n widgets.push(widget)\r\n }\r\n\r\n });\r\n if (currentDashbord) {\r\n currentDashbord.Widgets = widgets;\r\n }\r\n console.log('after update widget', currentDashbord)\r\n setHasChanges(true);\r\n\r\n }\r\n\r\n const renderCancelConfirmDialogFooter = () => {\r\n return (\r\n <div className='dl-flex-row-end' >\r\n <Button label=\"Cancel\" onClick={() => onHide()} className=\"p-button-secondary\" />\r\n <Button label=\"Don't Save\" onClick={() => dontSave()} className=\"p-button-secondary\" />\r\n <Button label=\"Save\" onClick={() => save()} autoFocus className=\"p-button-warning\" />\r\n </div>\r\n );\r\n }\r\n const onHide = () => {\r\n setCancelConfirmDialog(false)\r\n }\r\n return (\r\n <div className='dl-full-hight'>\r\n\r\n <div className='dl-dashboard-header dl-card'>\r\n <div className='dl-flex-row dl-custom-btn'>\r\n <div className='dl-title-1'>{currentDashbord?.Name}</div>\r\n <Button\r\n icon=\"pi pi-ellipsis-v\"\r\n onClick={(e) => dashboardMoreButtonToggle?.current?.toggle(e)}\r\n className=\"p-button p-button-icon-only p-button-rounded p-button-text\"\r\n >\r\n <Ripple />\r\n </Button>\r\n <OverlayPanel ref={dashboardMoreButtonToggle} className=\"buttons-overlay\">\r\n <div className=\"buttons-list\">\r\n <div onClick={() => EditDashBoard()}>Edit</div>\r\n <div onClick={editLayout}>Edit Layout</div>\r\n\r\n </div>\r\n </OverlayPanel >\r\n </div>\r\n <div className='dl-flex-row'>\r\n {!isInEditMode ?\r\n <div className='dl-flex-row'>\r\n\r\n\r\n <div style={{ width: \"161px\" }}>\r\n <Dropdown\r\n value={[]}\r\n options={dashbords}\r\n optionValue=\"Id\"\r\n optionLabel=\"Name\"\r\n onChange={changeDashboard}\r\n placeholder=\"Choose Dashboard\"\r\n optionDisabled={(option) => {\r\n return option?.Disabled;\r\n }}\r\n scrollHeight=\"300px\"\r\n style={{ width: '100%' }}\r\n />\r\n </div>\r\n <Button icon=\"pi pi-plus\" onClick={() => props.openAddEditDashboard(undefined)}\r\n className=\"dl-dashboard-add p-button-rounded p-button-success\" />\r\n </div>\r\n : null}\r\n {/* <DashboardDialogComponent display={displayAddDashboard} onClose={onDashboardDialogClose}></DashboardDialogComponent> */}\r\n\r\n\r\n\r\n {isInEditMode ?\r\n <div className='dl-flex-row'>\r\n\r\n <Button\r\n label=\"Cancel\"\r\n className=\"p-button-secondary dl-m-r-s \"\r\n onClick={cancelSave}\r\n />\r\n\r\n <Dialog header=\"Unsaved Changes\" visible={cancelConfirmDialog} style={{ width: '50vw' }} footer={renderCancelConfirmDialogFooter()} onHide={onHide}>\r\n <p>This Dashboard has unsaved changes do you want to save it?</p>\r\n </Dialog>\r\n\r\n {hasChanges ?\r\n <Button\r\n label=\"Save\"\r\n form=\"frm\"\r\n // icon=\"pi pi-check\"\r\n onClick={save}\r\n autoFocus\r\n className={\"p-button-warning \"}\r\n /> : null\r\n }\r\n {!hasChanges ?\r\n <Button\r\n label=\"Save\"\r\n form=\"frm\"\r\n // icon=\"pi pi-check\"\r\n onClick={save}\r\n autoFocus\r\n className={\"p-button-secondary \"}\r\n /> : null\r\n }\r\n\r\n <div style={{ width: '192px', marginLeft: '15px' }}>\r\n <Dropdown\r\n options={WidgetTypes}\r\n optionValue=\"Code\"\r\n optionLabel=\"Name\"\r\n onChange={(e) => addWidget(e.value)}\r\n placeholder=\"Add Component\"\r\n optionDisabled={(option) => {\r\n return option?.Disabled;\r\n }}\r\n scrollHeight=\"300px\"\r\n />\r\n </div>\r\n </div>\r\n : null}\r\n </div>\r\n\r\n\r\n </div>\r\n\r\n <div className='dl-dashboard-body'>\r\n <DashboardDesigner onSelectDataPoint={props.onSelectDataPoint} editMode={isInEditMode} onLayoutChange={updateWidgets} dashboardLayouts={layouts} openEditWidget={(widget: ReactWidgetPM) => props.openAddEditWidget(widget)} ></DashboardDesigner>\r\n </div>\r\n </div >\r\n\r\n )\r\n}\r\nexport default Dashboard;\r\n\r\n"],"names":["Tools","GetLogitudeURL","logitude_url","location","href","replace","indexOf","urlArr","split","url","substring","lastIndexOf","length","ApiServices","_apiUrl","getByFilters","api","filters","token","getTokenFromStorage","apiURL","ConcatFiltersToURL","axios","get","headers","post","date","window","localStorage","getItem","urlparameters","mykeys","Object","keys","addtionalFiltersValues","i","propName","propValue","ignoreFilter","concat","encodeURIComponent","JSON","stringify","DashboardAnalyticsService","_ApiServices","getData","widget","controller","ApexChart","props","useState","error","setEror","MeasuresIds","useRef","GroupByIds","GroupCount","isView","setisView","viewError","setViewError","isDataLoaded","hasDataError","series","options","args","serArgs","isLoadingDrow","useEffect","setTimeout","current","updateView","console","log","dashboardAnalyticsService","then","result","fillIds","data","getChartOptions","response","ErrorMessage","message","EntityId","Filters","WidgetMeasures","datas","measuresIds","groupByIds","seriesMeasure","push","MeasureFieldId","SeriesMeasureVulues","vulue","GroupById","lineOptoins","values","categories","map","e","z","Value","Label","chart","height","type","zoom","enabled","events","click","dataPointSelection","toolbar","tools","download","dataLabels","stroke","curve","title","text","align","grid","row","colors","opacity","xaxis","noData","barOptoins","plotOptions","bar","horizontal","position","offsetX","style","fontSize","show","width","tooltip","shared","intersect","pieOptoins","labels","CreateColors","count","CreateDeferuntColors","undefined","startAngle","s","v","index","color","donutOptoins","ll","responsive","breakpoint","legend","offsetY","handelNullLabels","forEach","element","value","onSelectDataPoint","dataPointIndex","seriesIndex","Widget","TypeCode","React","className","ProgressSpinner","strokeWidth","animationDuration","ReactApexChart","src","WidgetCard","state","moreBtnToggle","editWidget","hide","editBtnClicked","key","el","Title","isInEditMode","Button","icon","onClick","toggle","OverlayPanel","ref","deleteBtnClicked","ResponsiveReactGridLayout","WidthProvider","Responsive","DashboardDesigner","array12","Array","from","fill","minimumPlaceholderRowsCount","lg","layouts","setLayouts","placeholderRowsArray","setplaceholderRowsArray","firstChange","setFirstChange","dateFilter","setisInEditMode","widgets","setWidgets","gridLayoutComponent","createLayout","dashboardLayouts","layout","w","Layout","editMode","onLayoutChange","changedLayouts","UpdatePlaceholderDimensions","deletePanel","id","newLayouts","filter","newWidgets","ChangeSetOp","openEditWidget","gridLayout","gridElementHeight","elementRef","clientHeight","newPlaceholderRows","Math","floor","layoutGridProps","rowHeight","compactType","isDraggable","isResizable","onWidthChange","cols","md","sm","xs","xxs","useCSSTransforms","DashBoardService","getDataByFilters","tableName","add","WidgetTypeListService","getAll","deepClone","obj","parse","Dashboard","newWidgetWidth","newWidgetHeight","dashbords","setDashbords","currentDashbord","setCurrentDashbord","beforEditDashbord","setBeforEditDashbord","hasChanges","setHasChanges","setIsInEditMode","WidgetTypes","setWidgetTypes","cancelConfirmDialog","setCancelConfirmDialog","dashboardMoreButtonToggle","createRef","dashboardService","widgetTypeListService","getWidgetTypes","dataBinding","onGetDashboard","subscribe","applyLayouts","onGetAllDashboards","onAddUpdateWidget","isUpdated","setItem","EditDashBoard","openAddEditDashboard","addWidget","widgetCode","EvaluateNewWidgetPosition","openAddEditWidget","StartPotistion","x","y","EndPosition","h","widgetYPosition","widgetXPosition","allLayouts","exisitWidgetInNewPosition","find","editLayout","save","onSaveDashboard","onHide","cancelSave","dontSave","next","changeDashboard","event","Id","dasboard","onChangeDashboard","dashbord","Widgets","uuidv4","minH","minW","updateWidgets","layoutsDic","sizeType","renderCancelConfirmDialogFooter","label","autoFocus","Name","Ripple","Dropdown","optionValue","optionLabel","onChange","placeholder","optionDisabled","option","Disabled","scrollHeight","Dialog","header","visible","footer","form","marginLeft"],"mappings":"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"}
@@ -9,5 +9,14 @@ export declare type ReactDashboardPM = {
9
9
  Description: string;
10
10
  Name: string;
11
11
  SearchFields?: string;
12
+ PermissionLevelCode?: string;
13
+ DashboardSharedUsers?: ReactDashboardSharedUserPM[];
12
14
  Widgets: ReactWidgetPM[];
13
15
  };
16
+ export declare type ReactDashboardSharedUserPM = {
17
+ Id: string;
18
+ Tenant: number;
19
+ DashboardId: string;
20
+ UserId: string;
21
+ UserName: string;
22
+ };
@@ -1,3 +1,4 @@
1
+ import { ReactWidgetPM } from './widget';
1
2
  export declare type SeriesMeasure = {
2
3
  MeasureFieldId: string;
3
4
  SeriesMeasureVulues: SeriesMeasureVulue[];
@@ -10,4 +11,5 @@ export declare type SeriesMeasureVulue = {
10
11
  export declare type DataPointSelection = {
11
12
  GroupById: string;
12
13
  MeasureFieldId: string;
14
+ Widget?: ReactWidgetPM;
13
15
  };
@@ -16,4 +16,7 @@ export declare type ReactWidgetPM = {
16
16
  WidgetMeasures?: ReactWidgetMeasurePM[];
17
17
  ChangeSetOp?: string;
18
18
  DateGroupCode?: string;
19
+ SortDirection?: string;
20
+ SortBy?: number;
21
+ MaximumGrouping?: number;
19
22
  };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "logitude-dashboard-library",
3
- "version": "1.3.0",
3
+ "version": "1.3.2",
4
4
  "description": "Made with create-react-library",
5
5
  "author": "logitude",
6
6
  "license": "MIT",