logitude-dashboard-library 1.2.63 → 1.2.67

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.
@@ -2,7 +2,9 @@
2
2
  import { Layouts } from "react-grid-layout";
3
3
  import ColumnChartComponent from "./ChartsComponents/ColumnChartComponent";
4
4
  import { ReactWidgetPM } from "../../types/widget";
5
+ import { DashboardDataBinding } from "../../types/DashboardDataBinding";
5
6
  declare type DashboardDesignerProps = {
7
+ dataBinding: DashboardDataBinding;
6
8
  editMode: boolean;
7
9
  dashboardLayouts: {
8
10
  lg: ReactWidgetPM[];
package/dist/index.js CHANGED
@@ -439,6 +439,13 @@ var DashboardDesigner = function DashboardDesigner(props) {
439
439
  widgets = _useState6[0],
440
440
  setWidgets = _useState6[1];
441
441
 
442
+ React.useEffect(function () {
443
+ props.dataBinding.onAddUpdateWidget.subscribe(function (e) {
444
+ setLayouts({});
445
+ setLayouts(createLayout());
446
+ setWidgets(props.dashboardLayouts);
447
+ });
448
+ }, []);
442
449
  React.useEffect(function () {
443
450
  setFirstChange(true);
444
451
  console.log('useEffect setLayouts');
@@ -971,6 +978,7 @@ var Dashboard = function Dashboard(props) {
971
978
  }))) : null)), React.createElement("div", {
972
979
  className: 'dl-dashboard-body'
973
980
  }, React.createElement(DashboardDesigner, {
981
+ dataBinding: props.dataBinding,
974
982
  editMode: isInEditMode,
975
983
  onLayoutChange: updateWidgets,
976
984
  dashboardLayouts: layouts,
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":["../src/services/tools.ts","../src/services/ApiServices.ts","../src/services/DashboardAnalyticsService.ts","../src/features/Dashboard/ChartsComponents/ApexChart.tsx","../src/features/Dashboard/WidgetCard.tsx","../src/features/Dashboard/DashboardDesigner.tsx","../src/services/DashBoardService.ts","../src/services/WidgetTypeListService.ts","../src/services/clone.ts","../src/index.tsx"],"sourcesContent":["export class Tools{\r\n public static GetLogitudeURL() {\r\n\r\n var logitude_url = location.href.replace('index.html', '');\r\n\r\n if (location.href.indexOf('localhost') > -1) {\r\n logitude_url = 'http://localhost:9996';//localhost:9996//';//\r\n }\r\n\r\n else {\r\n var urlArr = location.href.split(\"/index.html\");\r\n var url = urlArr[0];\r\n url = url.replace(url.substring(url.lastIndexOf('/'), url.length), \"\");\r\n logitude_url = url ;\r\n }\r\n\r\n return logitude_url;\r\n }\r\n}","import axios from \"axios\";\r\nimport { ApiQueryFilters } from \"../common/data-contracts/ApiQueryFilter\";\r\nimport { APIResult } from \"../types/APIResult\";\r\nimport { Tools } from './tools';\r\n\r\n\r\nexport class ApiServices{ \r\n private _apiUrl: string;\r\n constructor(){\r\n this._apiUrl = Tools.GetLogitudeURL() ;\r\n }\r\n getByFilters<T>(api,filters: ApiQueryFilters) {\r\n \r\n let token: string = this.getTokenFromStorage();\r\n\t\tvar apiURL = `${this._apiUrl}${api}`;\r\n\t\tapiURL = this.ConcatFiltersToURL(filters, apiURL);\r\n\r\n return axios.get<APIResult<T>>(apiURL, { headers: { 'Content-Type': 'application/json', 'Token': token } });\r\n }\r\n get<T>(api) {\r\n \r\n let token: string = this.getTokenFromStorage();\r\n\t\tvar apiURL = `${this._apiUrl}${api}`;\r\n return axios.get<T>(apiURL, { headers: { 'Content-Type': 'application/json', 'Token': token } });\r\n }\r\n post<T>(api,date){\r\n let token: string = this.getTokenFromStorage();\r\n\t\tvar apiURL = `${this._apiUrl}${api}`;\r\n return axios.post<T>(apiURL,date, { headers: { 'Content-Type': 'application/json', 'Token': token } });\r\n }\r\n\r\n getTokenFromStorage(){\r\n return window.localStorage.getItem(\"token\") || '';\r\n }\r\n private ConcatFiltersToURL(filters: ApiQueryFilters, urlparameters: string)\r\n {\r\n var mykeys = Object.keys(filters);\r\n var addtionalFiltersValues: string | null = null;\r\n\r\n for (var i in mykeys) {\r\n var propName = mykeys[i];\r\n var propValue = filters[propName];\r\n var ignoreFilter = ((propName.indexOf(\"Operator\") > 0 && propValue == \"Equals\") || propName == \"AdditionalFilters\");\r\n\r\n if (urlparameters != \"?\") {\r\n urlparameters = urlparameters.concat('&');\r\n }\r\n\r\n if (!ignoreFilter) {\r\n propValue = propValue ? encodeURIComponent(propValue) : '';\r\n urlparameters = urlparameters.concat(propName.concat('=').concat(propValue));\r\n }\r\n\r\n if (propName == \"AdditionalFilters\" && propValue.length > 0) {\r\n addtionalFiltersValues = JSON.stringify(propValue);\r\n }\r\n }\r\n\r\n if (addtionalFiltersValues) {\r\n urlparameters = urlparameters.concat(\"&AdditionalFilters=\").concat(addtionalFiltersValues);\r\n }\r\n return urlparameters;\r\n }\r\n}","import axios from \"axios\";\r\nimport { ApiQueryFilters } from \"../common/data-contracts/ApiQueryFilter\";\r\nimport { ReactDashboardPM } from \"../types/Dashboard\";\r\nimport { SeriesMeasure } from \"../types/SeriesMeasure\";\r\nimport { ApiServices } from \"./ApiServices\";\r\nimport { Tools } from './tools';\r\nimport { ReactWidgetPM } from '../types/widget';\r\n\r\n\r\nexport class DashboardAnalyticsService{ \r\n _ApiServices:ApiServices;\r\n controller = 'DashboardAnalytics';\r\n constructor(){\r\n this._ApiServices = new ApiServices();\r\n }\r\n \r\n\r\n getData(widget: ReactWidgetPM) {\r\n return this._ApiServices.post<SeriesMeasure[]>(`/api/${this.controller}/PostGetDataAnalytic`,widget);\r\n }\r\n \r\n}","import React, { useEffect, useRef } from \"react\";\r\nimport ReactApexChart from \"react-apexcharts\";\r\nimport { ReactWidgetPM } from \"../../../types/widget\";\r\nimport { useState } from 'react';\r\nimport { DashboardAnalyticsService } from \"../../../services/DashboardAnalyticsService\";\r\nimport { SeriesMeasure } from \"../../../types/SeriesMeasure\";\r\n\r\ntype ApexChartProps = {\r\n widget: ReactWidgetPM | null\r\n};\r\nconst ApexChart = (props: ApexChartProps) => {\r\n\r\n const [args, serArgs] = useState<ApexChartArgs>({\r\n series:[],\r\n options:{}\r\n });\r\n useEffect(() => {\r\n var dashboardAnalyticsService = new DashboardAnalyticsService();\r\n dashboardAnalyticsService.getData(props.widget as ReactWidgetPM).then(result => {\r\n const data = getChartOptions(result.data);\r\n serArgs(data);\r\n })\r\n\r\n\r\n }, []);\r\n\r\n const lineOptoins = (values: SeriesMeasure[]) => {\r\n\r\n\r\n var series: any = [];\r\n var categories: any = [];\r\n if (values && values[0]) {\r\n var s = values[0].SeriesMeasureVulues.map(z => z.Value);\r\n series = values.map(e => {\r\n return {data: e.SeriesMeasureVulues.map(z => z.Value)}\r\n }\r\n );\r\n categories = values[0].SeriesMeasureVulues.map(e => e.Label);\r\n }\r\n\r\n return {\r\n\r\n series: series,\r\n options: {\r\n chart: {\r\n height: 350,\r\n type: 'line',\r\n zoom: {\r\n enabled: false\r\n }\r\n },\r\n dataLabels: {\r\n enabled: false\r\n },\r\n stroke: {\r\n curve: 'straight'\r\n },\r\n title: {\r\n text: 'Product Trends by Month',\r\n align: 'left'\r\n },\r\n grid: {\r\n row: {\r\n colors: ['#f3f3f3', 'transparent'], // takes an array which will be repeated on columns\r\n opacity: 0.5\r\n },\r\n },\r\n xaxis: {\r\n categories: categories\r\n }\r\n },\r\n\r\n\r\n };\r\n }\r\n const barOptoins = (values: SeriesMeasure[]) => {\r\n var series: any = [{\r\n data:[]\r\n }];\r\n var categories: any = [];\r\n if (values && values[0]) {\r\n var s = values[0].SeriesMeasureVulues.map(z => z.Value);\r\n series = values.map(e => {\r\n return {data: e.SeriesMeasureVulues.map(z => z.Value)}\r\n }\r\n );\r\n categories = values[0].SeriesMeasureVulues.map(e => e.Label);\r\n }\r\n return {\r\n series: series\r\n ,\r\n options: {\r\n chart: {\r\n type: 'bar',\r\n height: 430\r\n },\r\n plotOptions: {\r\n bar: {\r\n horizontal: true,\r\n dataLabels: {\r\n position: 'top',\r\n },\r\n }\r\n },\r\n dataLabels: {\r\n enabled: true,\r\n offsetX: -6,\r\n style: {\r\n fontSize: '12px',\r\n colors: ['#fff']\r\n }\r\n },\r\n stroke: {\r\n show: true,\r\n width: 1,\r\n colors: ['#fff']\r\n },\r\n tooltip: {\r\n shared: true,\r\n intersect: false\r\n },\r\n xaxis: {\r\n categories: categories\r\n\r\n },\r\n },\r\n\r\n\r\n };\r\n }\r\n const pieOptoins = (values: SeriesMeasure[]): ApexChartArgs => {\r\n\r\n var series: any = [];\r\n var labels: any = [];\r\n if (values && values[0]) {\r\n series = values[0].SeriesMeasureVulues.map(e => e.Value);\r\n labels = values[0].SeriesMeasureVulues.map(e => e.Label);\r\n }\r\n return {\r\n\r\n series: series,\r\n options: {\r\n chart: {\r\n type: 'pie',\r\n },\r\n labels: labels\r\n\r\n },\r\n\r\n\r\n\r\n };\r\n }\r\n const donutOptoins = (values: SeriesMeasure[]): ApexChartArgs => {\r\n var series: any = [];\r\n var labels: any = [];\r\n if (values && values[0]) {\r\n series = values[0].SeriesMeasureVulues.map(e => e.Value);\r\n labels = values[0].SeriesMeasureVulues.map(e => e.Label);\r\n }\r\n return {\r\n\r\n series: series,\r\n options: {\r\n chart: {\r\n width: 380,\r\n type: 'donut',\r\n },\r\n dataLabels: {\r\n enabled: false\r\n },\r\n responsive: [{\r\n breakpoint: 480,\r\n options: {\r\n chart: {\r\n width: 200\r\n },\r\n legend: {\r\n show: false\r\n }\r\n }\r\n }],\r\n legend: {\r\n position: 'right',\r\n offsetY: 0,\r\n height: 230,\r\n },\r\n labels: labels\r\n },\r\n\r\n\r\n };\r\n }\r\n const getChartOptions = (values: SeriesMeasure[]) => {\r\n switch (props.widget?.TypeCode) {\r\n case 'bar':\r\n return barOptoins(values);\r\n break;\r\n case 'line':\r\n return lineOptoins(values);\r\n break;\r\n case 'pie':\r\n return pieOptoins(values);\r\n break;\r\n case 'donut':\r\n return donutOptoins(values);\r\n break;\r\n default:\r\n break;\r\n }\r\n return barOptoins(values);\r\n };\r\n\r\n return (\r\n <ReactApexChart\r\n options={args?.options}\r\n series={args?.series}\r\n type={props.widget?.TypeCode}\r\n height={\"100%\"}\r\n width={\"100%\"}\r\n />\r\n )\r\n}\r\nexport type ApexChartArgs = {\r\n options: any;\r\n series: any;\r\n}\r\n\r\nexport default ApexChart;\r\n\r\n","import { stat } from \"fs\";\r\nimport { Button } from \"primereact/button\";\r\nimport { OverlayPanel } from \"primereact/overlaypanel\";\r\nimport React, { useRef, useState, useEffect } from \"react\";\r\nimport { ReactWidgetPM } from \"../../types/widget\";\r\nimport ApexChart from \"./ChartsComponents/ApexChart\";\r\nimport AreaChartComponent from \"./ChartsComponents/AreaChartComponent\";\r\nimport BarChartComponent from \"./ChartsComponents/BarChartComponent\";\r\nimport CandleChartComponent from \"./ChartsComponents/CandleChartComponent\";\r\nimport ColumnChartComponent from \"./ChartsComponents/ColumnChartComponent\";\r\nimport MixedChartComponent from \"./ChartsComponents/MixedChartComponent\";\r\nimport PieChartComponent from \"./ChartsComponents/PieChartComponent\";\r\nimport TimelineChartComponent from \"./ChartsComponents/TimelineChartComponent\";\r\n\r\n\r\ntype WidgetCardProps = {\r\n editBtnClicked(widget: any): any;\r\n deleteBtnClicked(i: any): any;\r\n widget: ReactWidgetPM | null;\r\n el: any;\r\n dateFilter: any;\r\n isInEditMode: boolean;\r\n}\r\n\r\n\r\nconst WidgetCard = (props: WidgetCardProps, state: any) => {\r\n const moreBtnToggle = useRef<OverlayPanel>(null);\r\n const [loading, setLoading] = useState(true);\r\n useEffect(() => {\r\n setTimeout(function () {\r\n setLoading(false);\r\n }, 500);\r\n }, [])\r\n\r\n 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={() => props.editBtnClicked(props.widget)} > Edit </div>\r\n <div onClick={() => props.deleteBtnClicked(props.widget?.key)} >Remove</div>\r\n </div>\r\n </OverlayPanel>\r\n </header>\r\n\r\n <div className=\"dl-dashboard-widget\">\r\n {loading ? null : <ApexChart widget={props.widget} />}\r\n </div>\r\n </div>\r\n );\r\n};\r\n\r\nexport default WidgetCard;\r\n","\r\n\r\nimport { WidthProvider, Responsive, Layout, Layouts } from \"react-grid-layout\";\r\n\r\nimport React, { createRef, useEffect, useRef, useState } from \"react\";\r\nimport { Button } from \"primereact/button\";\r\nimport _, { find } from \"lodash\";\r\nimport { Ripple } from \"primereact/ripple\";\r\nimport { OverlayPanel } from \"primereact/overlaypanel\";\r\nimport { Dropdown } from \"primereact/dropdown\";\r\n\r\n\r\nimport ColumnChartComponent from \"./ChartsComponents/ColumnChartComponent\";\r\nimport PieChartComponent from \"./ChartsComponents/PieChartComponent\";\r\nimport MixedChartComponent from \"./ChartsComponents/MixedChartComponent\";\r\nimport AreaChartComponent from \"./ChartsComponents/AreaChartComponent\";\r\nimport TimelineChartComponent from \"./ChartsComponents/TimelineChartComponent\";\r\nimport CandleChartComponent from \"./ChartsComponents/CandleChartComponent\";\r\nimport BarChartComponent from \"./ChartsComponents/BarChartComponent\";\r\nimport { WidgetComponent } from \"../../types/WidgetComponent\";\r\nimport { ReactWidgetPM } from \"../../types/widget\";\r\nimport WidgetCard from \"./WidgetCard\";\r\nimport { TRUE } from \"sass\";\r\n\r\nconst ResponsiveReactGridLayout = WidthProvider(Responsive);\r\nconst newWidgetWidth = 3;\r\n\r\ntype DashboardDesignerProps = {\r\n editMode: boolean,\r\n dashboardLayouts: { lg: ReactWidgetPM[] },\r\n openEditWidget: (widget: ReactWidgetPM) => void\r\n onLayoutChange: (layouts: Layouts) => void\r\n};\r\nconst DashboardDesigner = (props: DashboardDesignerProps) => {\r\n\r\n\r\n const array12 = Array.from({ length: 12 }).fill(null);\r\n const minimumPlaceholderRowsCount = 12;\r\n const [layouts, setLayouts] = useState<Layouts>({ lg: [] });\r\n const [placeholderRowsArray, setplaceholderRowsArray] = useState(Array.from({ length: minimumPlaceholderRowsCount }).fill(null));\r\n const [firstChange, setFirstChange] = useState(true);\r\n const [dateFilter, setDateFilter] = useState<Date | Date[] | undefined>(undefined);\r\n const [isInEditMode, setisInEditMode] = useState(false);\r\n const [widgets, setWidgets] = useState<{ lg: ReactWidgetPM[] }>({ lg: [] });\r\n\r\n\r\n useEffect(() => {\r\n setFirstChange(true);\r\n console.log('useEffect setLayouts')\r\n setLayouts({});\r\n setLayouts(createLayout());\r\n setWidgets(props.dashboardLayouts);\r\n }, [props.dashboardLayouts]);\r\n\r\n const createLayout = (): Layouts => {\r\n var layout: any = { lg: [] };\r\n props.dashboardLayouts.lg.map(w => w.Layout as Layout).forEach(e => {\r\n layout.lg.push(e)\r\n })\r\n return layout;\r\n }\r\n useEffect(() => {\r\n setisInEditMode(props.editMode);\r\n }, [props.editMode]);\r\n\r\n\r\n // const applyModeSetting = () => {\r\n // layouts.current.lg.forEach(element => {\r\n // element.isDraggable = props.editMode;\r\n // element.isResizable = props.editMode;\r\n\r\n // });\r\n // }\r\n\r\n function reset() {\r\n window.localStorage.clear();\r\n window.location.reload();\r\n }\r\n\r\n function onLayoutChange(layout: any, changedLayouts: Layouts) {\r\n console.log(layout, layouts);\r\n if (firstChange) {\r\n setFirstChange(false);\r\n return;\r\n }\r\n setLayouts(changedLayouts);\r\n UpdatePlaceholderDimensions();\r\n props.onLayoutChange(changedLayouts)\r\n }\r\n\r\n function deletePanel(id) {\r\n console.log('deletePanel(id)', id)\r\n var newLayouts = { lg: layouts.lg.filter(e => e.i != id) }\r\n\r\n setLayouts(newLayouts);\r\n\r\n var newWidgets = { lg: widgets.lg.filter(e => e.key != id) }\r\n setWidgets(newWidgets);\r\n props.onLayoutChange(newLayouts)\r\n };\r\n\r\n function editWidget(widget: ReactWidgetPM) {\r\n widget.ChangeSetOp = 'Update';\r\n props.openEditWidget(widget);\r\n };\r\n\r\n\r\n function UpdatePlaceholderDimensions() {\r\n console.log('UpdatePlaceholderDimensions', layouts)\r\n var gridLayout = document.getElementsByClassName('react-grid-layout')\r\n if (!gridLayout)\r\n return;\r\n const gridElementHeight = gridLayout[0]?.clientHeight;\r\n\r\n let newPlaceholderRows = Math.floor(gridElementHeight / layoutGridProps.rowHeight);\r\n newPlaceholderRows = newPlaceholderRows < minimumPlaceholderRowsCount ? minimumPlaceholderRowsCount : newPlaceholderRows;\r\n setplaceholderRowsArray(Array.from({ length: newPlaceholderRows }).fill(null));\r\n }\r\n return (<div className=\"dl-full-hight\">\r\n <div className=\"dl-box\">\r\n {/* <div className=\"dl-row dl-header\">\r\n {renderPageHeader()}\r\n </div> */}\r\n <div className=\"dl-row dl-content\">\r\n <div className=\"dl-grid-container\">\r\n <div className=\"dl-grid dl-grid--bordered\">\r\n {props.editMode ? placeholderRowsArray.map((e, i) =>\r\n array12.map((e, i) => (\r\n <div key={i}\r\n style={{\r\n height: layoutGridProps.rowHeight,\r\n }}\r\n ></div>\r\n ))\r\n ) : null}\r\n </div>\r\n\r\n\r\n <ResponsiveReactGridLayout\r\n {...layoutGridProps}\r\n layouts={layouts}\r\n compactType=\"vertical\"\r\n isDraggable={isInEditMode}\r\n isResizable={isInEditMode}\r\n onWidthChange={() => UpdatePlaceholderDimensions()}\r\n onLayoutChange={(layout, layouts) =>\r\n onLayoutChange(layout, layouts)\r\n }\r\n >\r\n {widgets.lg.map((widget) =>\r\n\r\n <div key={widget.Layout?.i}>\r\n <WidgetCard\r\n isInEditMode={isInEditMode}\r\n key={widget.Layout?.i}\r\n widget={widget}\r\n el={widget}\r\n dateFilter={dateFilter}\r\n editBtnClicked={editWidget}\r\n deleteBtnClicked={deletePanel}\r\n />\r\n </div>\r\n )}\r\n </ResponsiveReactGridLayout>\r\n </div>\r\n\r\n </div>\r\n {/* <div className=\"dl-row dl-footer\">\r\n <p><b>footer</b> (fixed height)</p>\r\n </div> */}\r\n </div>\r\n {/* {renderNewWidgetDialog()} */}\r\n\r\n\r\n\r\n\r\n\r\n </div>);\r\n\r\n}\r\n\r\n\r\nexport const layoutGridProps = {\r\n rowHeight: 50,\r\n className: \"layout\",\r\n cols: { lg: 12, md: 6, sm: 2, xs: 1, xxs: 1 },\r\n useCSSTransforms: true,\r\n}\r\n\r\n\r\n\r\n\r\nexport const WidgetTypes = [\r\n { Name: \"Filter\", Disabled: true },\r\n { Name: \"Chart\", Disabled: false },\r\n { Name: \"Data Table\", Disabled: true },\r\n { Name: \"Pivot Table\", Disabled: true },\r\n { Name: \"KPI\", Disabled: true },\r\n { Name: \"Gauge\", Disabled: true },\r\n];\r\nexport const widgetComponents = [\r\n { type: \"Bar\", component: BarChartComponent },\r\n { type: \"Column\", component: ColumnChartComponent },\r\n { type: \"Pie\", component: PieChartComponent },\r\n { type: \"Mixed\", component: MixedChartComponent },\r\n { type: \"Timeline\", component: TimelineChartComponent },\r\n { type: \"Candle\", component: CandleChartComponent },\r\n { type: \"Area\", component: AreaChartComponent },\r\n];\r\n\r\n\r\nexport default DashboardDesigner;\r\n","import axios from \"axios\";\r\nimport { ApiQueryFilters } from \"../common/data-contracts/ApiQueryFilter\";\r\nimport { ReactDashboardPM } from \"../types/Dashboard\";\r\nimport { ApiServices } from \"./ApiServices\";\r\nimport { Tools } from './tools';\r\n\r\n\r\nexport class DashBoardService{ \r\n _ApiServices:ApiServices;\r\n tableName = 'DashBoard';\r\n constructor(){\r\n this._ApiServices = new ApiServices();\r\n }\r\n \r\n\r\n getDataByFilters(filters: ApiQueryFilters) {\r\n return this._ApiServices.getByFilters<ReactDashboardPM>(`/api/${this.tableName}Views/getbyfilters?`,filters);\r\n }\r\n\r\n add(data:ReactDashboardPM){\r\n return this._ApiServices.post(`/api/DashBoards`,data);\r\n }\r\n \r\n}","import axios from \"axios\";\r\nimport { ApiQueryFilters } from \"../common/data-contracts/ApiQueryFilter\";\r\nimport { ReactDashboardPM } from \"../types/Dashboard\";\r\nimport { WidgetType } from \"../types/WidgetType\";\r\nimport { ApiServices } from \"./ApiServices\";\r\nimport { Tools } from './tools';\r\n\r\n\r\nexport class WidgetTypeListService{ \r\n _ApiServices:ApiServices;\r\n\r\n constructor(){\r\n this._ApiServices = new ApiServices();\r\n }\r\n \r\n\r\n getDataByFilters(filters: ApiQueryFilters) {\r\n return this._ApiServices.getByFilters<WidgetType>(`/api/WidgetTypeViews/getbyfilters?`,filters);\r\n }\r\n\r\n getAll() {\r\n return this._ApiServices.get<WidgetType[]>(`/api/WidgetTypeViews/getall`);\r\n }\r\n\r\n \r\n}","export function deepClone (obj){\r\n return JSON.parse(JSON.stringify(obj))\r\n}","import * as React from 'react'\r\nimport { Card } from 'primereact/card';\r\nimport { Button } from \"primereact/button\";\r\nimport DashboardDesigner, { layoutGridProps } from './features/Dashboard/DashboardDesigner'\r\nimport \"./styles.module.css\"\r\nimport { Dropdown } from 'primereact/dropdown';\r\nimport { createRef, useEffect, useRef, useState } from \"react\";\r\nimport { DashBoardService } from './services/DashBoardService';\r\nimport { ApiQueryFilters } from './common/data-contracts/ApiQueryFilter';\r\nimport { ReactDashboardPM } from './types/Dashboard';\r\nimport { Dialog } from 'primereact/dialog';\r\nimport DashboardDialogComponent from './features/Dashboard/dashboard-dialog/dashboard-dialog-component';\r\nimport { Session } from './services/session';\r\nimport { WidgetTypeListService } from './services/WidgetTypeListService';\r\nimport { WidgetType } from './types/WidgetType';\r\nimport { ReactWidgetPM } from './types/widget';\r\nimport { OverlayPanel } from 'primereact/overlaypanel';\r\nimport { Ripple } from 'primereact/ripple';\r\nimport { DashboardDataBinding } from './types/DashboardDataBinding';\r\nimport { Layout, Layouts } from 'react-grid-layout';\r\nimport { v4 as uuidv4 } from 'uuid';\r\nimport { deepClone } from './services/clone';\r\n\r\ntype DashboardProps = {\r\n token: string,\r\n tenant: number,\r\n userId: string,\r\n dataBinding: DashboardDataBinding,\r\n openAddEditWidget: (widget: ReactWidgetPM | undefined) => void,\r\n openAddEditDashboard: (dashboard: ReactDashboardPM | undefined) => void,\r\n onChangeDashboard: (dashboard: ReactDashboardPM | undefined) => void,\r\n onSaveDashboard: (dashboard: ReactDashboardPM | undefined) => void,\r\n};\r\nconst Dashboard = (props: DashboardProps) => {\r\n const newWidgetWidth = 3;\r\n const newWidgetHeight = 5;\r\n\r\n const [dashbords, setDashbords] = useState<ReactDashboardPM[]>([]);\r\n const [currentDashbord, setCurrentDashbord] = useState<ReactDashboardPM | undefined>(undefined);\r\n const [beforEditDashbord, setBeforEditDashbord] = useState<ReactDashboardPM | undefined>(undefined);\r\n const [hasChanges, setHasChanges] = useState(false);\r\n const [isInEditMode, setIsInEditMode] = useState<boolean>(false);\r\n const [WidgetTypes, setWidgetTypes] = useState<WidgetType[]>();\r\n const [layouts, setLayouts] = useState<{ lg: ReactWidgetPM[] }>({ lg: [] });\r\n const [cancelConfirmDialog, setCancelConfirmDialog] = useState(false);\r\n const dashboardMoreButtonToggle = createRef<OverlayPanel>();\r\n const dashboardService = new DashBoardService();\r\n const widgetTypeListService = new WidgetTypeListService();\r\n useEffect(() => {\r\n getWidgetTypes();\r\n\r\n props.dataBinding.onGetDashboard.subscribe(e => {\r\n console.log('onGetDashboard.subscribe', e)\r\n setCurrentDashbord(e);\r\n applyLayouts(e);\r\n })\r\n props.dataBinding.onGetAllDashboards.subscribe(e => {\r\n console.log('onGetAllDashboard.subscribe', e)\r\n\r\n setDashbords(e);\r\n });\r\n\r\n props.dataBinding.onAddUpdateWidget.subscribe(isUpdated => {\r\n if (!isUpdated)\r\n return;\r\n setHasChanges(true);\r\n });\r\n\r\n }, [])\r\n\r\n Session.CurrentUserId = props.userId;\r\n Session.Tenant = props.tenant;\r\n Session.Token = props.token;\r\n if (props?.token?.length > 0)\r\n localStorage.setItem(\"token\", props?.token);\r\n\r\n\r\n const getWidgetTypes = () => {\r\n widgetTypeListService.getAll().then(data => {\r\n setWidgetTypes(data.data);\r\n });\r\n }\r\n const EditDashBoard = () => {\r\n props.openAddEditDashboard(currentDashbord);\r\n dashboardMoreButtonToggle?.current?.hide();\r\n\r\n }\r\n const addWidget = (widgetCode) => {\r\n var position = EvaluateNewWidgetPosition();\r\n props.openAddEditWidget({ TypeCode: widgetCode, StartPotistion: `${position.x},${position.y}`, EndPosition: `${position.w},${position.h}`,ChangeSetOp:'Insert' } as ReactWidgetPM);\r\n\r\n }\r\n const EvaluateNewWidgetPosition = () => {\r\n let widgetYPosition = 0;\r\n let widgetXPosition = 0;\r\n let layout = layouts[\"lg\"].map(e => e.Layout);\r\n const maxY = layout.reduce((max, widget) => {\r\n if (widget && widget.y > max) max = widget.y;\r\n return max;\r\n }, 0);\r\n\r\n for (let y = 0; y <= maxY; y++) {\r\n const widgetsRow = layout.filter(d => d?.y == y);\r\n const lastWidgetStartXPosition = Math.max.apply(Math, widgetsRow.map(a => a?.x));\r\n const lastWidget: any = widgetsRow.find(a => a?.x == lastWidgetStartXPosition);\r\n if (lastWidget) {\r\n const lastWidgetEndXPosition = lastWidgetStartXPosition + lastWidget.w;\r\n const availableHorizontalSlots = layoutGridProps.cols.lg - lastWidgetEndXPosition;\r\n if (availableHorizontalSlots >= newWidgetWidth) {\r\n widgetYPosition = y;\r\n widgetXPosition = lastWidgetEndXPosition;\r\n return { x: widgetXPosition, y: widgetYPosition, w: newWidgetWidth, h: newWidgetHeight };\r\n\r\n } else {\r\n widgetYPosition = y + 1;\r\n }\r\n } else {\r\n widgetYPosition = y + 1;\r\n }\r\n }\r\n\r\n return { x: widgetXPosition, y: widgetYPosition, w: newWidgetWidth, h: newWidgetHeight };\r\n }\r\n const editLayout = () => {\r\n setIsInEditMode(true)\r\n dashboardMoreButtonToggle?.current?.hide();\r\n\r\n setBeforEditDashbord(deepClone(currentDashbord));\r\n }\r\n const save = () => {\r\n setIsInEditMode(false)\r\n console.log('onSaveDashboard > ', currentDashbord)\r\n props.onSaveDashboard(currentDashbord);\r\n onHide();\r\n setHasChanges(false);\r\n }\r\n\r\n const cancelSave = () => {\r\n if (!hasChanges) {\r\n setIsInEditMode(false);\r\n setHasChanges(false);\r\n } else {\r\n setCancelConfirmDialog(true);\r\n }\r\n\r\n\r\n }\r\n\r\n const dontSave = () => {\r\n setHasChanges(false);\r\n setIsInEditMode(false);\r\n props.dataBinding.onGetDashboard.next(beforEditDashbord);\r\n setCancelConfirmDialog(false);\r\n }\r\n const changeDashboard = (event) => {\r\n if (event.value == currentDashbord?.Id)\r\n return;\r\n var dasboard = dashbords.find(e => e.Id == event.value);\r\n\r\n props.onChangeDashboard(dasboard);\r\n props.dataBinding.onGetDashboard.next(dasboard);\r\n\r\n }\r\n\r\n const applyLayouts = (dashbord: ReactDashboardPM | undefined) => {\r\n if ((!dashbord?.Widgets))\r\n return;\r\n var layout: { lg: ReactWidgetPM[] } = { lg: [] };\r\n dashbord?.Widgets.map(widget => {\r\n if (widget.Id && widget.Id.length > 0)\r\n widget.key = widget.Id;\r\n else\r\n widget.key = uuidv4();\r\n widget.Layout = {\r\n minH: 5,\r\n minW: 3,\r\n i: widget.key,\r\n w: +widget.EndPosition.split(',')[0],\r\n h: +widget.EndPosition.split(',')[1],\r\n x: +widget.StartPotistion.split(',')[0],\r\n y: +widget.StartPotistion.split(',')[1],\r\n }\r\n layout.lg.push(widget\r\n\r\n )\r\n });\r\n console.log('setLayouts -- > ', layout)\r\n setLayouts(layout);\r\n\r\n }\r\n const updateWidgets = (layouts: Layouts) => {\r\n console.log('updateWidgets = (layouts:Layouts', layouts)\r\n var layoutsDic: { [key: string]: Layout } = {};\r\n Object.keys(layouts).forEach(sizeType => {\r\n if (layouts[sizeType].length > 0) {\r\n layouts[sizeType].map(layout => {\r\n layoutsDic[layout.i] = layout;\r\n })\r\n return;\r\n }\r\n })\r\n var widgets: ReactWidgetPM[] = [];\r\n currentDashbord?.Widgets.forEach(widget => {\r\n if (layoutsDic[widget.key]) {\r\n widget.StartPotistion = `${layoutsDic[widget.key].x},${layoutsDic[widget.key].y}`;\r\n widget.EndPosition = `${layoutsDic[widget.key].w},${layoutsDic[widget.key].h}`;\r\n widgets.push(widget)\r\n }\r\n\r\n });\r\n if (currentDashbord) {\r\n currentDashbord.Widgets = widgets;\r\n }\r\n console.log('after update widget', currentDashbord)\r\n setHasChanges(true);\r\n }\r\n\r\n const renderCancelConfirmDialogFooter = () => {\r\n return (\r\n <div className='dl-flex-row-end' >\r\n <Button label=\"Cancel\" onClick={() => onHide()} className=\"p-button-secondary\" />\r\n <Button label=\"Don't Save\" onClick={() => dontSave()} className=\"p-button-secondary\" />\r\n <Button label=\"Save\" onClick={() => save()} autoFocus className=\"p-button-warning\" />\r\n </div>\r\n );\r\n }\r\n const onHide = () => {\r\n setCancelConfirmDialog(false)\r\n }\r\n return (\r\n <div className='dl-full-hight'>\r\n\r\n <div className='dl-dashboard-header dl-card'>\r\n <div className='dl-flex-row dl-custom-btn'>\r\n <div className='dl-title-1'>{currentDashbord?.Name}</div>\r\n <Button\r\n icon=\"pi pi-ellipsis-v\"\r\n onClick={(e) => dashboardMoreButtonToggle?.current?.toggle(e)}\r\n className=\"p-button p-button-icon-only p-button-rounded p-button-text\"\r\n >\r\n <Ripple />\r\n </Button>\r\n <OverlayPanel ref={dashboardMoreButtonToggle} className=\"buttons-overlay\">\r\n <div className=\"buttons-list\">\r\n <div onClick={() => EditDashBoard()}>Edit</div>\r\n <div onClick={editLayout}>Edit Layout</div>\r\n\r\n </div>\r\n </OverlayPanel >\r\n </div>\r\n <div className='dl-flex-row'>\r\n {!isInEditMode ?\r\n <div className='dl-flex-row'>\r\n\r\n\r\n <div style={{ width: \"161px\" }}>\r\n <Dropdown\r\n value={[]}\r\n options={dashbords}\r\n optionValue=\"Id\"\r\n optionLabel=\"Name\"\r\n onChange={changeDashboard}\r\n placeholder=\"Choose Dashboard\"\r\n optionDisabled={(option) => {\r\n return option?.Disabled;\r\n }}\r\n scrollHeight=\"300px\"\r\n style={{ width: '100%' }}\r\n />\r\n </div>\r\n <Button icon=\"pi pi-plus\" onClick={() => props.openAddEditDashboard(undefined)}\r\n className=\"dl-dashboard-add p-button-rounded p-button-success\" />\r\n </div>\r\n : null}\r\n {/* <DashboardDialogComponent display={displayAddDashboard} onClose={onDashboardDialogClose}></DashboardDialogComponent> */}\r\n\r\n\r\n\r\n {isInEditMode ?\r\n <div className='dl-flex-row'>\r\n\r\n <Button\r\n label=\"Cancel\"\r\n className=\"p-button-secondary dl-m-r-s dl-m-t-8\"\r\n onClick={cancelSave}\r\n />\r\n\r\n <Dialog header=\"Unsaved Changes\" visible={cancelConfirmDialog} style={{ width: '50vw' }} footer={renderCancelConfirmDialogFooter()} onHide={onHide}>\r\n <p>This Dashboard has unsaved changes do you want to save it?</p>\r\n </Dialog>\r\n\r\n <Button\r\n label=\"Save\"\r\n form=\"frm\"\r\n // icon=\"pi pi-check\"\r\n onClick={save}\r\n autoFocus\r\n className={hasChanges ? \"p-button-warning dl-m-t-8\" : \"p-button-secondary dl-m-t-8\"}\r\n />\r\n\r\n <div style={{ width: '192px', marginLeft: '15px' }}>\r\n <Dropdown\r\n options={WidgetTypes}\r\n optionValue=\"Code\"\r\n optionLabel=\"Name\"\r\n onChange={(e) => addWidget(e.value)}\r\n placeholder=\"Add Component\"\r\n optionDisabled={(option) => {\r\n return option?.Disabled;\r\n }}\r\n scrollHeight=\"300px\"\r\n />\r\n </div>\r\n </div>\r\n : null}\r\n </div>\r\n\r\n\r\n </div>\r\n\r\n <div className='dl-dashboard-body'>\r\n <DashboardDesigner editMode={isInEditMode} onLayoutChange={updateWidgets} dashboardLayouts={layouts} openEditWidget={(widget: ReactWidgetPM) => props.openAddEditWidget(widget)} ></DashboardDesigner>\r\n </div>\r\n </div >\r\n\r\n )\r\n}\r\nexport default Dashboard;\r\n\r\n"],"names":["Tools","GetLogitudeURL","logitude_url","location","href","replace","indexOf","urlArr","split","url","substring","lastIndexOf","length","ApiServices","_apiUrl","getByFilters","api","filters","token","getTokenFromStorage","apiURL","ConcatFiltersToURL","axios","get","headers","post","date","window","localStorage","getItem","urlparameters","mykeys","Object","keys","addtionalFiltersValues","i","propName","propValue","ignoreFilter","concat","encodeURIComponent","JSON","stringify","DashboardAnalyticsService","_ApiServices","getData","widget","controller","ApexChart","props","useState","series","options","args","serArgs","useEffect","dashboardAnalyticsService","then","result","data","getChartOptions","lineOptoins","values","categories","s","SeriesMeasureVulues","map","z","Value","e","Label","chart","height","type","zoom","enabled","dataLabels","stroke","curve","title","text","align","grid","row","colors","opacity","xaxis","barOptoins","plotOptions","bar","horizontal","position","offsetX","style","fontSize","show","width","tooltip","shared","intersect","pieOptoins","labels","donutOptoins","responsive","breakpoint","legend","offsetY","TypeCode","React","ReactApexChart","WidgetCard","state","moreBtnToggle","useRef","loading","setLoading","setTimeout","className","key","el","Title","isInEditMode","Button","icon","onClick","current","toggle","OverlayPanel","ref","editBtnClicked","deleteBtnClicked","ResponsiveReactGridLayout","WidthProvider","Responsive","DashboardDesigner","array12","Array","from","fill","minimumPlaceholderRowsCount","lg","layouts","setLayouts","placeholderRowsArray","setplaceholderRowsArray","firstChange","setFirstChange","undefined","dateFilter","setisInEditMode","widgets","setWidgets","console","log","createLayout","dashboardLayouts","layout","w","Layout","forEach","push","editMode","onLayoutChange","changedLayouts","UpdatePlaceholderDimensions","deletePanel","id","newLayouts","filter","newWidgets","editWidget","ChangeSetOp","openEditWidget","gridLayout","document","getElementsByClassName","gridElementHeight","clientHeight","newPlaceholderRows","Math","floor","layoutGridProps","rowHeight","compactType","isDraggable","isResizable","onWidthChange","cols","md","sm","xs","xxs","useCSSTransforms","DashBoardService","getDataByFilters","tableName","add","WidgetTypeListService","getAll","deepClone","obj","parse","Dashboard","newWidgetWidth","newWidgetHeight","dashbords","setDashbords","currentDashbord","setCurrentDashbord","beforEditDashbord","setBeforEditDashbord","hasChanges","setHasChanges","setIsInEditMode","WidgetTypes","setWidgetTypes","cancelConfirmDialog","setCancelConfirmDialog","dashboardMoreButtonToggle","createRef","dashboardService","widgetTypeListService","getWidgetTypes","dataBinding","onGetDashboard","subscribe","applyLayouts","onGetAllDashboards","onAddUpdateWidget","isUpdated","setItem","EditDashBoard","openAddEditDashboard","hide","addWidget","widgetCode","EvaluateNewWidgetPosition","openAddEditWidget","StartPotistion","x","y","EndPosition","h","widgetYPosition","widgetXPosition","maxY","reduce","max","widgetsRow","d","lastWidgetStartXPosition","apply","a","lastWidget","find","lastWidgetEndXPosition","availableHorizontalSlots","editLayout","save","onSaveDashboard","onHide","cancelSave","dontSave","next","changeDashboard","event","value","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 { ReactWidgetPM } from \"../../../types/widget\";\r\nimport { useState } from 'react';\r\nimport { DashboardAnalyticsService } from \"../../../services/DashboardAnalyticsService\";\r\nimport { SeriesMeasure } from \"../../../types/SeriesMeasure\";\r\n\r\ntype ApexChartProps = {\r\n widget: ReactWidgetPM | null\r\n};\r\nconst ApexChart = (props: ApexChartProps) => {\r\n\r\n const [args, serArgs] = useState<ApexChartArgs>({\r\n series:[],\r\n options:{}\r\n });\r\n useEffect(() => {\r\n var dashboardAnalyticsService = new DashboardAnalyticsService();\r\n dashboardAnalyticsService.getData(props.widget as ReactWidgetPM).then(result => {\r\n const data = getChartOptions(result.data);\r\n serArgs(data);\r\n })\r\n\r\n\r\n }, []);\r\n\r\n const lineOptoins = (values: SeriesMeasure[]) => {\r\n\r\n\r\n var series: any = [];\r\n var categories: any = [];\r\n if (values && values[0]) {\r\n var s = values[0].SeriesMeasureVulues.map(z => z.Value);\r\n series = values.map(e => {\r\n return {data: e.SeriesMeasureVulues.map(z => z.Value)}\r\n }\r\n );\r\n categories = values[0].SeriesMeasureVulues.map(e => e.Label);\r\n }\r\n\r\n return {\r\n\r\n series: series,\r\n options: {\r\n chart: {\r\n height: 350,\r\n type: 'line',\r\n zoom: {\r\n enabled: false\r\n }\r\n },\r\n dataLabels: {\r\n enabled: false\r\n },\r\n stroke: {\r\n curve: 'straight'\r\n },\r\n title: {\r\n text: 'Product Trends by Month',\r\n align: 'left'\r\n },\r\n grid: {\r\n row: {\r\n colors: ['#f3f3f3', 'transparent'], // takes an array which will be repeated on columns\r\n opacity: 0.5\r\n },\r\n },\r\n xaxis: {\r\n categories: categories\r\n }\r\n },\r\n\r\n\r\n };\r\n }\r\n const barOptoins = (values: SeriesMeasure[]) => {\r\n var series: any = [{\r\n data:[]\r\n }];\r\n var categories: any = [];\r\n if (values && values[0]) {\r\n var s = values[0].SeriesMeasureVulues.map(z => z.Value);\r\n series = values.map(e => {\r\n return {data: e.SeriesMeasureVulues.map(z => z.Value)}\r\n }\r\n );\r\n categories = values[0].SeriesMeasureVulues.map(e => e.Label);\r\n }\r\n return {\r\n series: series\r\n ,\r\n options: {\r\n chart: {\r\n type: 'bar',\r\n height: 430\r\n },\r\n plotOptions: {\r\n bar: {\r\n horizontal: true,\r\n dataLabels: {\r\n position: 'top',\r\n },\r\n }\r\n },\r\n dataLabels: {\r\n enabled: true,\r\n offsetX: -6,\r\n style: {\r\n fontSize: '12px',\r\n colors: ['#fff']\r\n }\r\n },\r\n stroke: {\r\n show: true,\r\n width: 1,\r\n colors: ['#fff']\r\n },\r\n tooltip: {\r\n shared: true,\r\n intersect: false\r\n },\r\n xaxis: {\r\n categories: categories\r\n\r\n },\r\n },\r\n\r\n\r\n };\r\n }\r\n const pieOptoins = (values: SeriesMeasure[]): ApexChartArgs => {\r\n\r\n var series: any = [];\r\n var labels: any = [];\r\n if (values && values[0]) {\r\n series = values[0].SeriesMeasureVulues.map(e => e.Value);\r\n labels = values[0].SeriesMeasureVulues.map(e => e.Label);\r\n }\r\n return {\r\n\r\n series: series,\r\n options: {\r\n chart: {\r\n type: 'pie',\r\n },\r\n labels: labels\r\n\r\n },\r\n\r\n\r\n\r\n };\r\n }\r\n const donutOptoins = (values: SeriesMeasure[]): ApexChartArgs => {\r\n var series: any = [];\r\n var labels: any = [];\r\n if (values && values[0]) {\r\n series = values[0].SeriesMeasureVulues.map(e => e.Value);\r\n labels = values[0].SeriesMeasureVulues.map(e => e.Label);\r\n }\r\n return {\r\n\r\n series: series,\r\n options: {\r\n chart: {\r\n width: 380,\r\n type: 'donut',\r\n },\r\n dataLabels: {\r\n enabled: false\r\n },\r\n responsive: [{\r\n breakpoint: 480,\r\n options: {\r\n chart: {\r\n width: 200\r\n },\r\n legend: {\r\n show: false\r\n }\r\n }\r\n }],\r\n legend: {\r\n position: 'right',\r\n offsetY: 0,\r\n height: 230,\r\n },\r\n labels: labels\r\n },\r\n\r\n\r\n };\r\n }\r\n const getChartOptions = (values: SeriesMeasure[]) => {\r\n switch (props.widget?.TypeCode) {\r\n case 'bar':\r\n return barOptoins(values);\r\n break;\r\n case 'line':\r\n return lineOptoins(values);\r\n break;\r\n case 'pie':\r\n return pieOptoins(values);\r\n break;\r\n case 'donut':\r\n return donutOptoins(values);\r\n break;\r\n default:\r\n break;\r\n }\r\n return barOptoins(values);\r\n };\r\n\r\n return (\r\n <ReactApexChart\r\n options={args?.options}\r\n series={args?.series}\r\n type={props.widget?.TypeCode}\r\n height={\"100%\"}\r\n width={\"100%\"}\r\n />\r\n )\r\n}\r\nexport type ApexChartArgs = {\r\n options: any;\r\n series: any;\r\n}\r\n\r\nexport default ApexChart;\r\n\r\n","import { stat } from \"fs\";\r\nimport { Button } from \"primereact/button\";\r\nimport { OverlayPanel } from \"primereact/overlaypanel\";\r\nimport React, { useRef, useState, useEffect } from \"react\";\r\nimport { ReactWidgetPM } from \"../../types/widget\";\r\nimport ApexChart from \"./ChartsComponents/ApexChart\";\r\nimport AreaChartComponent from \"./ChartsComponents/AreaChartComponent\";\r\nimport BarChartComponent from \"./ChartsComponents/BarChartComponent\";\r\nimport CandleChartComponent from \"./ChartsComponents/CandleChartComponent\";\r\nimport ColumnChartComponent from \"./ChartsComponents/ColumnChartComponent\";\r\nimport MixedChartComponent from \"./ChartsComponents/MixedChartComponent\";\r\nimport PieChartComponent from \"./ChartsComponents/PieChartComponent\";\r\nimport TimelineChartComponent from \"./ChartsComponents/TimelineChartComponent\";\r\n\r\n\r\ntype WidgetCardProps = {\r\n editBtnClicked(widget: any): any;\r\n deleteBtnClicked(i: any): any;\r\n widget: ReactWidgetPM | null;\r\n el: any;\r\n dateFilter: any;\r\n isInEditMode: boolean;\r\n}\r\n\r\n\r\nconst WidgetCard = (props: WidgetCardProps, state: any) => {\r\n const moreBtnToggle = useRef<OverlayPanel>(null);\r\n const [loading, setLoading] = useState(true);\r\n useEffect(() => {\r\n setTimeout(function () {\r\n setLoading(false);\r\n }, 500);\r\n }, [])\r\n\r\n 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={() => props.editBtnClicked(props.widget)} > Edit </div>\r\n <div onClick={() => props.deleteBtnClicked(props.widget?.key)} >Remove</div>\r\n </div>\r\n </OverlayPanel>\r\n </header>\r\n\r\n <div className=\"dl-dashboard-widget\">\r\n {loading ? null : <ApexChart widget={props.widget} />}\r\n </div>\r\n </div>\r\n );\r\n};\r\n\r\nexport default WidgetCard;\r\n","\r\n\r\nimport { WidthProvider, Responsive, Layout, Layouts } from \"react-grid-layout\";\r\n\r\nimport React, { createRef, useEffect, useRef, useState } from \"react\";\r\nimport { Button } from \"primereact/button\";\r\nimport _, { find } from \"lodash\";\r\nimport { Ripple } from \"primereact/ripple\";\r\nimport { OverlayPanel } from \"primereact/overlaypanel\";\r\nimport { Dropdown } from \"primereact/dropdown\";\r\n\r\n\r\nimport ColumnChartComponent from \"./ChartsComponents/ColumnChartComponent\";\r\nimport PieChartComponent from \"./ChartsComponents/PieChartComponent\";\r\nimport MixedChartComponent from \"./ChartsComponents/MixedChartComponent\";\r\nimport AreaChartComponent from \"./ChartsComponents/AreaChartComponent\";\r\nimport TimelineChartComponent from \"./ChartsComponents/TimelineChartComponent\";\r\nimport CandleChartComponent from \"./ChartsComponents/CandleChartComponent\";\r\nimport BarChartComponent from \"./ChartsComponents/BarChartComponent\";\r\nimport { WidgetComponent } from \"../../types/WidgetComponent\";\r\nimport { ReactWidgetPM } from \"../../types/widget\";\r\nimport WidgetCard from \"./WidgetCard\";\r\nimport { TRUE } from \"sass\";\r\nimport { DashboardDataBinding } from \"../../types/DashboardDataBinding\";\r\n\r\nconst ResponsiveReactGridLayout = WidthProvider(Responsive);\r\nconst newWidgetWidth = 3;\r\n\r\ntype DashboardDesignerProps = {\r\n dataBinding: DashboardDataBinding,\r\n editMode: boolean,\r\n dashboardLayouts: { lg: ReactWidgetPM[] },\r\n openEditWidget: (widget: ReactWidgetPM) => void\r\n onLayoutChange: (layouts: Layouts) => void\r\n};\r\nconst DashboardDesigner = (props: DashboardDesignerProps) => {\r\n\r\n\r\n const array12 = Array.from({ length: 12 }).fill(null);\r\n const minimumPlaceholderRowsCount = 12;\r\n const [layouts, setLayouts] = useState<Layouts>({ lg: [] });\r\n const [placeholderRowsArray, setplaceholderRowsArray] = useState(Array.from({ length: minimumPlaceholderRowsCount }).fill(null));\r\n const [firstChange, setFirstChange] = useState(true);\r\n const [dateFilter, setDateFilter] = useState<Date | Date[] | undefined>(undefined);\r\n const [isInEditMode, setisInEditMode] = useState(false);\r\n const [widgets, setWidgets] = useState<{ lg: ReactWidgetPM[] }>({ lg: [] });\r\n\r\n\r\n useEffect(()=>{\r\n props.dataBinding.onAddUpdateWidget.subscribe(e=>{\r\n setLayouts({});\r\n setLayouts(createLayout());\r\n setWidgets(props.dashboardLayouts);\r\n })\r\n },[]);\r\n useEffect(() => {\r\n setFirstChange(true);\r\n console.log('useEffect setLayouts')\r\n setLayouts({});\r\n setLayouts(createLayout());\r\n setWidgets(props.dashboardLayouts);\r\n }, [props.dashboardLayouts]);\r\n\r\n const createLayout = (): Layouts => {\r\n var layout: any = { lg: [] };\r\n props.dashboardLayouts.lg.map(w => w.Layout as Layout).forEach(e => {\r\n layout.lg.push(e)\r\n })\r\n return layout;\r\n }\r\n useEffect(() => {\r\n setisInEditMode(props.editMode);\r\n }, [props.editMode]);\r\n\r\n\r\n // const applyModeSetting = () => {\r\n // layouts.current.lg.forEach(element => {\r\n // element.isDraggable = props.editMode;\r\n // element.isResizable = props.editMode;\r\n\r\n // });\r\n // }\r\n\r\n function reset() {\r\n window.localStorage.clear();\r\n window.location.reload();\r\n }\r\n\r\n function onLayoutChange(layout: any, changedLayouts: Layouts) {\r\n console.log(layout, layouts);\r\n if (firstChange) {\r\n setFirstChange(false);\r\n return;\r\n }\r\n setLayouts(changedLayouts);\r\n UpdatePlaceholderDimensions();\r\n props.onLayoutChange(changedLayouts)\r\n }\r\n\r\n function deletePanel(id) {\r\n console.log('deletePanel(id)', id)\r\n var newLayouts = { lg: layouts.lg.filter(e => e.i != id) }\r\n\r\n setLayouts(newLayouts);\r\n\r\n var newWidgets = { lg: widgets.lg.filter(e => e.key != id) }\r\n setWidgets(newWidgets);\r\n props.onLayoutChange(newLayouts)\r\n };\r\n\r\n function editWidget(widget: ReactWidgetPM) {\r\n widget.ChangeSetOp = 'Update';\r\n props.openEditWidget(widget);\r\n };\r\n\r\n\r\n function UpdatePlaceholderDimensions() {\r\n console.log('UpdatePlaceholderDimensions', layouts)\r\n var gridLayout = document.getElementsByClassName('react-grid-layout')\r\n if (!gridLayout)\r\n return;\r\n const gridElementHeight = gridLayout[0]?.clientHeight;\r\n\r\n let newPlaceholderRows = Math.floor(gridElementHeight / layoutGridProps.rowHeight);\r\n newPlaceholderRows = newPlaceholderRows < minimumPlaceholderRowsCount ? minimumPlaceholderRowsCount : newPlaceholderRows;\r\n setplaceholderRowsArray(Array.from({ length: newPlaceholderRows }).fill(null));\r\n }\r\n return (<div className=\"dl-full-hight\">\r\n <div className=\"dl-box\">\r\n {/* <div className=\"dl-row dl-header\">\r\n {renderPageHeader()}\r\n </div> */}\r\n <div className=\"dl-row dl-content\">\r\n <div className=\"dl-grid-container\">\r\n <div className=\"dl-grid dl-grid--bordered\">\r\n {props.editMode ? placeholderRowsArray.map((e, i) =>\r\n array12.map((e, i) => (\r\n <div key={i}\r\n style={{\r\n height: layoutGridProps.rowHeight,\r\n }}\r\n ></div>\r\n ))\r\n ) : null}\r\n </div>\r\n\r\n\r\n <ResponsiveReactGridLayout\r\n {...layoutGridProps}\r\n layouts={layouts}\r\n compactType=\"vertical\"\r\n isDraggable={isInEditMode}\r\n isResizable={isInEditMode}\r\n onWidthChange={() => UpdatePlaceholderDimensions()}\r\n onLayoutChange={(layout, layouts) =>\r\n onLayoutChange(layout, layouts)\r\n }\r\n >\r\n {widgets.lg.map((widget) =>\r\n\r\n <div key={widget.Layout?.i}>\r\n <WidgetCard\r\n isInEditMode={isInEditMode}\r\n key={widget.Layout?.i}\r\n widget={widget}\r\n el={widget}\r\n dateFilter={dateFilter}\r\n editBtnClicked={editWidget}\r\n deleteBtnClicked={deletePanel}\r\n />\r\n </div>\r\n )}\r\n </ResponsiveReactGridLayout>\r\n </div>\r\n\r\n </div>\r\n {/* <div className=\"dl-row dl-footer\">\r\n <p><b>footer</b> (fixed height)</p>\r\n </div> */}\r\n </div>\r\n {/* {renderNewWidgetDialog()} */}\r\n\r\n\r\n\r\n\r\n\r\n </div>);\r\n\r\n}\r\n\r\n\r\nexport const layoutGridProps = {\r\n rowHeight: 50,\r\n className: \"layout\",\r\n cols: { lg: 12, md: 6, sm: 2, xs: 1, xxs: 1 },\r\n useCSSTransforms: true,\r\n}\r\n\r\n\r\n\r\n\r\nexport const WidgetTypes = [\r\n { Name: \"Filter\", Disabled: true },\r\n { Name: \"Chart\", Disabled: false },\r\n { Name: \"Data Table\", Disabled: true },\r\n { Name: \"Pivot Table\", Disabled: true },\r\n { Name: \"KPI\", Disabled: true },\r\n { Name: \"Gauge\", Disabled: true },\r\n];\r\nexport const widgetComponents = [\r\n { type: \"Bar\", component: BarChartComponent },\r\n { type: \"Column\", component: ColumnChartComponent },\r\n { type: \"Pie\", component: PieChartComponent },\r\n { type: \"Mixed\", component: MixedChartComponent },\r\n { type: \"Timeline\", component: TimelineChartComponent },\r\n { type: \"Candle\", component: CandleChartComponent },\r\n { type: \"Area\", component: AreaChartComponent },\r\n];\r\n\r\n\r\nexport default DashboardDesigner;\r\n","import axios from \"axios\";\r\nimport { ApiQueryFilters } from \"../common/data-contracts/ApiQueryFilter\";\r\nimport { ReactDashboardPM } from \"../types/Dashboard\";\r\nimport { ApiServices } from \"./ApiServices\";\r\nimport { Tools } from './tools';\r\n\r\n\r\nexport class DashBoardService{ \r\n _ApiServices:ApiServices;\r\n tableName = 'DashBoard';\r\n constructor(){\r\n this._ApiServices = new ApiServices();\r\n }\r\n \r\n\r\n getDataByFilters(filters: ApiQueryFilters) {\r\n return this._ApiServices.getByFilters<ReactDashboardPM>(`/api/${this.tableName}Views/getbyfilters?`,filters);\r\n }\r\n\r\n add(data:ReactDashboardPM){\r\n return this._ApiServices.post(`/api/DashBoards`,data);\r\n }\r\n \r\n}","import axios from \"axios\";\r\nimport { ApiQueryFilters } from \"../common/data-contracts/ApiQueryFilter\";\r\nimport { ReactDashboardPM } from \"../types/Dashboard\";\r\nimport { WidgetType } from \"../types/WidgetType\";\r\nimport { ApiServices } from \"./ApiServices\";\r\nimport { Tools } from './tools';\r\n\r\n\r\nexport class WidgetTypeListService{ \r\n _ApiServices:ApiServices;\r\n\r\n constructor(){\r\n this._ApiServices = new ApiServices();\r\n }\r\n \r\n\r\n getDataByFilters(filters: ApiQueryFilters) {\r\n return this._ApiServices.getByFilters<WidgetType>(`/api/WidgetTypeViews/getbyfilters?`,filters);\r\n }\r\n\r\n getAll() {\r\n return this._ApiServices.get<WidgetType[]>(`/api/WidgetTypeViews/getall`);\r\n }\r\n\r\n \r\n}","export function deepClone (obj){\r\n return JSON.parse(JSON.stringify(obj))\r\n}","import * as React from 'react'\r\nimport { Card } from 'primereact/card';\r\nimport { Button } from \"primereact/button\";\r\nimport DashboardDesigner, { layoutGridProps } from './features/Dashboard/DashboardDesigner'\r\nimport \"./styles.module.css\"\r\nimport { Dropdown } from 'primereact/dropdown';\r\nimport { createRef, useEffect, useRef, useState } from \"react\";\r\nimport { DashBoardService } from './services/DashBoardService';\r\nimport { ApiQueryFilters } from './common/data-contracts/ApiQueryFilter';\r\nimport { ReactDashboardPM } from './types/Dashboard';\r\nimport { Dialog } from 'primereact/dialog';\r\nimport DashboardDialogComponent from './features/Dashboard/dashboard-dialog/dashboard-dialog-component';\r\nimport { Session } from './services/session';\r\nimport { WidgetTypeListService } from './services/WidgetTypeListService';\r\nimport { WidgetType } from './types/WidgetType';\r\nimport { ReactWidgetPM } from './types/widget';\r\nimport { OverlayPanel } from 'primereact/overlaypanel';\r\nimport { Ripple } from 'primereact/ripple';\r\nimport { DashboardDataBinding } from './types/DashboardDataBinding';\r\nimport { Layout, Layouts } from 'react-grid-layout';\r\nimport { v4 as uuidv4 } from 'uuid';\r\nimport { deepClone } from './services/clone';\r\n\r\ntype DashboardProps = {\r\n token: string,\r\n tenant: number,\r\n userId: string,\r\n dataBinding: DashboardDataBinding,\r\n openAddEditWidget: (widget: ReactWidgetPM | undefined) => void,\r\n openAddEditDashboard: (dashboard: ReactDashboardPM | undefined) => void,\r\n onChangeDashboard: (dashboard: ReactDashboardPM | undefined) => void,\r\n onSaveDashboard: (dashboard: ReactDashboardPM | undefined) => void,\r\n};\r\nconst Dashboard = (props: DashboardProps) => {\r\n const newWidgetWidth = 3;\r\n const newWidgetHeight = 5;\r\n\r\n const [dashbords, setDashbords] = useState<ReactDashboardPM[]>([]);\r\n const [currentDashbord, setCurrentDashbord] = useState<ReactDashboardPM | undefined>(undefined);\r\n const [beforEditDashbord, setBeforEditDashbord] = useState<ReactDashboardPM | undefined>(undefined);\r\n const [hasChanges, setHasChanges] = useState(false);\r\n const [isInEditMode, setIsInEditMode] = useState<boolean>(false);\r\n const [WidgetTypes, setWidgetTypes] = useState<WidgetType[]>();\r\n const [layouts, setLayouts] = useState<{ lg: ReactWidgetPM[] }>({ lg: [] });\r\n const [cancelConfirmDialog, setCancelConfirmDialog] = useState(false);\r\n const dashboardMoreButtonToggle = createRef<OverlayPanel>();\r\n const dashboardService = new DashBoardService();\r\n const widgetTypeListService = new WidgetTypeListService();\r\n useEffect(() => {\r\n getWidgetTypes();\r\n\r\n props.dataBinding.onGetDashboard.subscribe(e => {\r\n console.log('onGetDashboard.subscribe', e)\r\n setCurrentDashbord(e);\r\n applyLayouts(e);\r\n })\r\n props.dataBinding.onGetAllDashboards.subscribe(e => {\r\n console.log('onGetAllDashboard.subscribe', e)\r\n\r\n setDashbords(e);\r\n });\r\n\r\n props.dataBinding.onAddUpdateWidget.subscribe(isUpdated => {\r\n if (!isUpdated)\r\n return;\r\n setHasChanges(true);\r\n });\r\n\r\n }, [])\r\n\r\n Session.CurrentUserId = props.userId;\r\n Session.Tenant = props.tenant;\r\n Session.Token = props.token;\r\n if (props?.token?.length > 0)\r\n localStorage.setItem(\"token\", props?.token);\r\n\r\n\r\n const getWidgetTypes = () => {\r\n widgetTypeListService.getAll().then(data => {\r\n setWidgetTypes(data.data);\r\n });\r\n }\r\n const EditDashBoard = () => {\r\n props.openAddEditDashboard(currentDashbord);\r\n dashboardMoreButtonToggle?.current?.hide();\r\n\r\n }\r\n const addWidget = (widgetCode) => {\r\n var position = EvaluateNewWidgetPosition();\r\n props.openAddEditWidget({ TypeCode: widgetCode, StartPotistion: `${position.x},${position.y}`, EndPosition: `${position.w},${position.h}`,ChangeSetOp:'Insert' } as ReactWidgetPM);\r\n\r\n }\r\n const EvaluateNewWidgetPosition = () => {\r\n let widgetYPosition = 0;\r\n let widgetXPosition = 0;\r\n let layout = layouts[\"lg\"].map(e => e.Layout);\r\n const maxY = layout.reduce((max, widget) => {\r\n if (widget && widget.y > max) max = widget.y;\r\n return max;\r\n }, 0);\r\n\r\n for (let y = 0; y <= maxY; y++) {\r\n const widgetsRow = layout.filter(d => d?.y == y);\r\n const lastWidgetStartXPosition = Math.max.apply(Math, widgetsRow.map(a => a?.x));\r\n const lastWidget: any = widgetsRow.find(a => a?.x == lastWidgetStartXPosition);\r\n if (lastWidget) {\r\n const lastWidgetEndXPosition = lastWidgetStartXPosition + lastWidget.w;\r\n const availableHorizontalSlots = layoutGridProps.cols.lg - lastWidgetEndXPosition;\r\n if (availableHorizontalSlots >= newWidgetWidth) {\r\n widgetYPosition = y;\r\n widgetXPosition = lastWidgetEndXPosition;\r\n return { x: widgetXPosition, y: widgetYPosition, w: newWidgetWidth, h: newWidgetHeight };\r\n\r\n } else {\r\n widgetYPosition = y + 1;\r\n }\r\n } else {\r\n widgetYPosition = y + 1;\r\n }\r\n }\r\n\r\n return { x: widgetXPosition, y: widgetYPosition, w: newWidgetWidth, h: newWidgetHeight };\r\n }\r\n const editLayout = () => {\r\n setIsInEditMode(true)\r\n dashboardMoreButtonToggle?.current?.hide();\r\n\r\n setBeforEditDashbord(deepClone(currentDashbord));\r\n }\r\n const save = () => {\r\n setIsInEditMode(false)\r\n console.log('onSaveDashboard > ', currentDashbord)\r\n props.onSaveDashboard(currentDashbord);\r\n onHide();\r\n setHasChanges(false);\r\n }\r\n\r\n const cancelSave = () => {\r\n if (!hasChanges) {\r\n setIsInEditMode(false);\r\n setHasChanges(false);\r\n } else {\r\n setCancelConfirmDialog(true);\r\n }\r\n\r\n\r\n }\r\n\r\n const dontSave = () => {\r\n setHasChanges(false);\r\n setIsInEditMode(false);\r\n props.dataBinding.onGetDashboard.next(beforEditDashbord);\r\n setCancelConfirmDialog(false);\r\n }\r\n const changeDashboard = (event) => {\r\n if (event.value == currentDashbord?.Id)\r\n return;\r\n var dasboard = dashbords.find(e => e.Id == event.value);\r\n\r\n props.onChangeDashboard(dasboard);\r\n props.dataBinding.onGetDashboard.next(dasboard);\r\n\r\n }\r\n\r\n const applyLayouts = (dashbord: ReactDashboardPM | undefined) => {\r\n if ((!dashbord?.Widgets))\r\n return;\r\n var layout: { lg: ReactWidgetPM[] } = { lg: [] };\r\n dashbord?.Widgets.map(widget => {\r\n if (widget.Id && widget.Id.length > 0)\r\n widget.key = widget.Id;\r\n else\r\n widget.key = uuidv4();\r\n widget.Layout = {\r\n minH: 5,\r\n minW: 3,\r\n i: widget.key,\r\n w: +widget.EndPosition.split(',')[0],\r\n h: +widget.EndPosition.split(',')[1],\r\n x: +widget.StartPotistion.split(',')[0],\r\n y: +widget.StartPotistion.split(',')[1],\r\n }\r\n layout.lg.push(widget\r\n\r\n )\r\n });\r\n console.log('setLayouts -- > ', layout)\r\n setLayouts(layout);\r\n\r\n }\r\n const updateWidgets = (layouts: Layouts) => {\r\n console.log('updateWidgets = (layouts:Layouts', layouts)\r\n var layoutsDic: { [key: string]: Layout } = {};\r\n Object.keys(layouts).forEach(sizeType => {\r\n if (layouts[sizeType].length > 0) {\r\n layouts[sizeType].map(layout => {\r\n layoutsDic[layout.i] = layout;\r\n })\r\n return;\r\n }\r\n })\r\n var widgets: ReactWidgetPM[] = [];\r\n currentDashbord?.Widgets.forEach(widget => {\r\n if (layoutsDic[widget.key]) {\r\n widget.StartPotistion = `${layoutsDic[widget.key].x},${layoutsDic[widget.key].y}`;\r\n widget.EndPosition = `${layoutsDic[widget.key].w},${layoutsDic[widget.key].h}`;\r\n widgets.push(widget)\r\n }\r\n\r\n });\r\n if (currentDashbord) {\r\n currentDashbord.Widgets = widgets;\r\n }\r\n console.log('after update widget', currentDashbord)\r\n setHasChanges(true);\r\n }\r\n\r\n const renderCancelConfirmDialogFooter = () => {\r\n return (\r\n <div className='dl-flex-row-end' >\r\n <Button label=\"Cancel\" onClick={() => onHide()} className=\"p-button-secondary\" />\r\n <Button label=\"Don't Save\" onClick={() => dontSave()} className=\"p-button-secondary\" />\r\n <Button label=\"Save\" onClick={() => save()} autoFocus className=\"p-button-warning\" />\r\n </div>\r\n );\r\n }\r\n const onHide = () => {\r\n setCancelConfirmDialog(false)\r\n }\r\n return (\r\n <div className='dl-full-hight'>\r\n\r\n <div className='dl-dashboard-header dl-card'>\r\n <div className='dl-flex-row dl-custom-btn'>\r\n <div className='dl-title-1'>{currentDashbord?.Name}</div>\r\n <Button\r\n icon=\"pi pi-ellipsis-v\"\r\n onClick={(e) => dashboardMoreButtonToggle?.current?.toggle(e)}\r\n className=\"p-button p-button-icon-only p-button-rounded p-button-text\"\r\n >\r\n <Ripple />\r\n </Button>\r\n <OverlayPanel ref={dashboardMoreButtonToggle} className=\"buttons-overlay\">\r\n <div className=\"buttons-list\">\r\n <div onClick={() => EditDashBoard()}>Edit</div>\r\n <div onClick={editLayout}>Edit Layout</div>\r\n\r\n </div>\r\n </OverlayPanel >\r\n </div>\r\n <div className='dl-flex-row'>\r\n {!isInEditMode ?\r\n <div className='dl-flex-row'>\r\n\r\n\r\n <div style={{ width: \"161px\" }}>\r\n <Dropdown\r\n value={[]}\r\n options={dashbords}\r\n optionValue=\"Id\"\r\n optionLabel=\"Name\"\r\n onChange={changeDashboard}\r\n placeholder=\"Choose Dashboard\"\r\n optionDisabled={(option) => {\r\n return option?.Disabled;\r\n }}\r\n scrollHeight=\"300px\"\r\n style={{ width: '100%' }}\r\n />\r\n </div>\r\n <Button icon=\"pi pi-plus\" onClick={() => props.openAddEditDashboard(undefined)}\r\n className=\"dl-dashboard-add p-button-rounded p-button-success\" />\r\n </div>\r\n : null}\r\n {/* <DashboardDialogComponent display={displayAddDashboard} onClose={onDashboardDialogClose}></DashboardDialogComponent> */}\r\n\r\n\r\n\r\n {isInEditMode ?\r\n <div className='dl-flex-row'>\r\n\r\n <Button\r\n label=\"Cancel\"\r\n className=\"p-button-secondary dl-m-r-s dl-m-t-8\"\r\n onClick={cancelSave}\r\n />\r\n\r\n <Dialog header=\"Unsaved Changes\" visible={cancelConfirmDialog} style={{ width: '50vw' }} footer={renderCancelConfirmDialogFooter()} onHide={onHide}>\r\n <p>This Dashboard has unsaved changes do you want to save it?</p>\r\n </Dialog>\r\n\r\n <Button\r\n label=\"Save\"\r\n form=\"frm\"\r\n // icon=\"pi pi-check\"\r\n onClick={save}\r\n autoFocus\r\n className={hasChanges ? \"p-button-warning dl-m-t-8\" : \"p-button-secondary dl-m-t-8\"}\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 dataBinding={props.dataBinding} editMode={isInEditMode} onLayoutChange={updateWidgets} dashboardLayouts={layouts} openEditWidget={(widget: ReactWidgetPM) => props.openAddEditWidget(widget)} ></DashboardDesigner>\r\n </div>\r\n </div >\r\n\r\n )\r\n}\r\nexport default Dashboard;\r\n\r\n"],"names":["Tools","GetLogitudeURL","logitude_url","location","href","replace","indexOf","urlArr","split","url","substring","lastIndexOf","length","ApiServices","_apiUrl","getByFilters","api","filters","token","getTokenFromStorage","apiURL","ConcatFiltersToURL","axios","get","headers","post","date","window","localStorage","getItem","urlparameters","mykeys","Object","keys","addtionalFiltersValues","i","propName","propValue","ignoreFilter","concat","encodeURIComponent","JSON","stringify","DashboardAnalyticsService","_ApiServices","getData","widget","controller","ApexChart","props","useState","series","options","args","serArgs","useEffect","dashboardAnalyticsService","then","result","data","getChartOptions","lineOptoins","values","categories","s","SeriesMeasureVulues","map","z","Value","e","Label","chart","height","type","zoom","enabled","dataLabels","stroke","curve","title","text","align","grid","row","colors","opacity","xaxis","barOptoins","plotOptions","bar","horizontal","position","offsetX","style","fontSize","show","width","tooltip","shared","intersect","pieOptoins","labels","donutOptoins","responsive","breakpoint","legend","offsetY","TypeCode","React","ReactApexChart","WidgetCard","state","moreBtnToggle","useRef","loading","setLoading","setTimeout","className","key","el","Title","isInEditMode","Button","icon","onClick","current","toggle","OverlayPanel","ref","editBtnClicked","deleteBtnClicked","ResponsiveReactGridLayout","WidthProvider","Responsive","DashboardDesigner","array12","Array","from","fill","minimumPlaceholderRowsCount","lg","layouts","setLayouts","placeholderRowsArray","setplaceholderRowsArray","firstChange","setFirstChange","undefined","dateFilter","setisInEditMode","widgets","setWidgets","dataBinding","onAddUpdateWidget","subscribe","createLayout","dashboardLayouts","console","log","layout","w","Layout","forEach","push","editMode","onLayoutChange","changedLayouts","UpdatePlaceholderDimensions","deletePanel","id","newLayouts","filter","newWidgets","editWidget","ChangeSetOp","openEditWidget","gridLayout","document","getElementsByClassName","gridElementHeight","clientHeight","newPlaceholderRows","Math","floor","layoutGridProps","rowHeight","compactType","isDraggable","isResizable","onWidthChange","cols","md","sm","xs","xxs","useCSSTransforms","DashBoardService","getDataByFilters","tableName","add","WidgetTypeListService","getAll","deepClone","obj","parse","Dashboard","newWidgetWidth","newWidgetHeight","dashbords","setDashbords","currentDashbord","setCurrentDashbord","beforEditDashbord","setBeforEditDashbord","hasChanges","setHasChanges","setIsInEditMode","WidgetTypes","setWidgetTypes","cancelConfirmDialog","setCancelConfirmDialog","dashboardMoreButtonToggle","createRef","dashboardService","widgetTypeListService","getWidgetTypes","onGetDashboard","applyLayouts","onGetAllDashboards","isUpdated","setItem","EditDashBoard","openAddEditDashboard","hide","addWidget","widgetCode","EvaluateNewWidgetPosition","openAddEditWidget","StartPotistion","x","y","EndPosition","h","widgetYPosition","widgetXPosition","maxY","reduce","max","widgetsRow","d","lastWidgetStartXPosition","apply","a","lastWidget","find","lastWidgetEndXPosition","availableHorizontalSlots","editLayout","save","onSaveDashboard","onHide","cancelSave","dontSave","next","changeDashboard","event","value","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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"}
@@ -436,6 +436,13 @@ var DashboardDesigner = function DashboardDesigner(props) {
436
436
  widgets = _useState6[0],
437
437
  setWidgets = _useState6[1];
438
438
 
439
+ useEffect(function () {
440
+ props.dataBinding.onAddUpdateWidget.subscribe(function (e) {
441
+ setLayouts({});
442
+ setLayouts(createLayout());
443
+ setWidgets(props.dashboardLayouts);
444
+ });
445
+ }, []);
439
446
  useEffect(function () {
440
447
  setFirstChange(true);
441
448
  console.log('useEffect setLayouts');
@@ -968,6 +975,7 @@ var Dashboard = function Dashboard(props) {
968
975
  }))) : null)), createElement("div", {
969
976
  className: 'dl-dashboard-body'
970
977
  }, createElement(DashboardDesigner, {
978
+ dataBinding: props.dataBinding,
971
979
  editMode: isInEditMode,
972
980
  onLayoutChange: updateWidgets,
973
981
  dashboardLayouts: layouts,
@@ -1 +1 @@
1
- {"version":3,"file":"index.modern.js","sources":["../src/services/tools.ts","../src/services/ApiServices.ts","../src/services/DashboardAnalyticsService.ts","../src/features/Dashboard/ChartsComponents/ApexChart.tsx","../src/features/Dashboard/WidgetCard.tsx","../src/features/Dashboard/DashboardDesigner.tsx","../src/services/DashBoardService.ts","../src/services/WidgetTypeListService.ts","../src/services/clone.ts","../src/index.tsx"],"sourcesContent":["export class Tools{\r\n public static GetLogitudeURL() {\r\n\r\n var logitude_url = location.href.replace('index.html', '');\r\n\r\n if (location.href.indexOf('localhost') > -1) {\r\n logitude_url = 'http://localhost:9996';//localhost:9996//';//\r\n }\r\n\r\n else {\r\n var urlArr = location.href.split(\"/index.html\");\r\n var url = urlArr[0];\r\n url = url.replace(url.substring(url.lastIndexOf('/'), url.length), \"\");\r\n logitude_url = url ;\r\n }\r\n\r\n return logitude_url;\r\n }\r\n}","import axios from \"axios\";\r\nimport { ApiQueryFilters } from \"../common/data-contracts/ApiQueryFilter\";\r\nimport { APIResult } from \"../types/APIResult\";\r\nimport { Tools } from './tools';\r\n\r\n\r\nexport class ApiServices{ \r\n private _apiUrl: string;\r\n constructor(){\r\n this._apiUrl = Tools.GetLogitudeURL() ;\r\n }\r\n getByFilters<T>(api,filters: ApiQueryFilters) {\r\n \r\n let token: string = this.getTokenFromStorage();\r\n\t\tvar apiURL = `${this._apiUrl}${api}`;\r\n\t\tapiURL = this.ConcatFiltersToURL(filters, apiURL);\r\n\r\n return axios.get<APIResult<T>>(apiURL, { headers: { 'Content-Type': 'application/json', 'Token': token } });\r\n }\r\n get<T>(api) {\r\n \r\n let token: string = this.getTokenFromStorage();\r\n\t\tvar apiURL = `${this._apiUrl}${api}`;\r\n return axios.get<T>(apiURL, { headers: { 'Content-Type': 'application/json', 'Token': token } });\r\n }\r\n post<T>(api,date){\r\n let token: string = this.getTokenFromStorage();\r\n\t\tvar apiURL = `${this._apiUrl}${api}`;\r\n return axios.post<T>(apiURL,date, { headers: { 'Content-Type': 'application/json', 'Token': token } });\r\n }\r\n\r\n getTokenFromStorage(){\r\n return window.localStorage.getItem(\"token\") || '';\r\n }\r\n private ConcatFiltersToURL(filters: ApiQueryFilters, urlparameters: string)\r\n {\r\n var mykeys = Object.keys(filters);\r\n var addtionalFiltersValues: string | null = null;\r\n\r\n for (var i in mykeys) {\r\n var propName = mykeys[i];\r\n var propValue = filters[propName];\r\n var ignoreFilter = ((propName.indexOf(\"Operator\") > 0 && propValue == \"Equals\") || propName == \"AdditionalFilters\");\r\n\r\n if (urlparameters != \"?\") {\r\n urlparameters = urlparameters.concat('&');\r\n }\r\n\r\n if (!ignoreFilter) {\r\n propValue = propValue ? encodeURIComponent(propValue) : '';\r\n urlparameters = urlparameters.concat(propName.concat('=').concat(propValue));\r\n }\r\n\r\n if (propName == \"AdditionalFilters\" && propValue.length > 0) {\r\n addtionalFiltersValues = JSON.stringify(propValue);\r\n }\r\n }\r\n\r\n if (addtionalFiltersValues) {\r\n urlparameters = urlparameters.concat(\"&AdditionalFilters=\").concat(addtionalFiltersValues);\r\n }\r\n return urlparameters;\r\n }\r\n}","import axios from \"axios\";\r\nimport { ApiQueryFilters } from \"../common/data-contracts/ApiQueryFilter\";\r\nimport { ReactDashboardPM } from \"../types/Dashboard\";\r\nimport { SeriesMeasure } from \"../types/SeriesMeasure\";\r\nimport { ApiServices } from \"./ApiServices\";\r\nimport { Tools } from './tools';\r\nimport { ReactWidgetPM } from '../types/widget';\r\n\r\n\r\nexport class DashboardAnalyticsService{ \r\n _ApiServices:ApiServices;\r\n controller = 'DashboardAnalytics';\r\n constructor(){\r\n this._ApiServices = new ApiServices();\r\n }\r\n \r\n\r\n getData(widget: ReactWidgetPM) {\r\n return this._ApiServices.post<SeriesMeasure[]>(`/api/${this.controller}/PostGetDataAnalytic`,widget);\r\n }\r\n \r\n}","import React, { useEffect, useRef } from \"react\";\r\nimport ReactApexChart from \"react-apexcharts\";\r\nimport { ReactWidgetPM } from \"../../../types/widget\";\r\nimport { useState } from 'react';\r\nimport { DashboardAnalyticsService } from \"../../../services/DashboardAnalyticsService\";\r\nimport { SeriesMeasure } from \"../../../types/SeriesMeasure\";\r\n\r\ntype ApexChartProps = {\r\n widget: ReactWidgetPM | null\r\n};\r\nconst ApexChart = (props: ApexChartProps) => {\r\n\r\n const [args, serArgs] = useState<ApexChartArgs>({\r\n series:[],\r\n options:{}\r\n });\r\n useEffect(() => {\r\n var dashboardAnalyticsService = new DashboardAnalyticsService();\r\n dashboardAnalyticsService.getData(props.widget as ReactWidgetPM).then(result => {\r\n const data = getChartOptions(result.data);\r\n serArgs(data);\r\n })\r\n\r\n\r\n }, []);\r\n\r\n const lineOptoins = (values: SeriesMeasure[]) => {\r\n\r\n\r\n var series: any = [];\r\n var categories: any = [];\r\n if (values && values[0]) {\r\n var s = values[0].SeriesMeasureVulues.map(z => z.Value);\r\n series = values.map(e => {\r\n return {data: e.SeriesMeasureVulues.map(z => z.Value)}\r\n }\r\n );\r\n categories = values[0].SeriesMeasureVulues.map(e => e.Label);\r\n }\r\n\r\n return {\r\n\r\n series: series,\r\n options: {\r\n chart: {\r\n height: 350,\r\n type: 'line',\r\n zoom: {\r\n enabled: false\r\n }\r\n },\r\n dataLabels: {\r\n enabled: false\r\n },\r\n stroke: {\r\n curve: 'straight'\r\n },\r\n title: {\r\n text: 'Product Trends by Month',\r\n align: 'left'\r\n },\r\n grid: {\r\n row: {\r\n colors: ['#f3f3f3', 'transparent'], // takes an array which will be repeated on columns\r\n opacity: 0.5\r\n },\r\n },\r\n xaxis: {\r\n categories: categories\r\n }\r\n },\r\n\r\n\r\n };\r\n }\r\n const barOptoins = (values: SeriesMeasure[]) => {\r\n var series: any = [{\r\n data:[]\r\n }];\r\n var categories: any = [];\r\n if (values && values[0]) {\r\n var s = values[0].SeriesMeasureVulues.map(z => z.Value);\r\n series = values.map(e => {\r\n return {data: e.SeriesMeasureVulues.map(z => z.Value)}\r\n }\r\n );\r\n categories = values[0].SeriesMeasureVulues.map(e => e.Label);\r\n }\r\n return {\r\n series: series\r\n ,\r\n options: {\r\n chart: {\r\n type: 'bar',\r\n height: 430\r\n },\r\n plotOptions: {\r\n bar: {\r\n horizontal: true,\r\n dataLabels: {\r\n position: 'top',\r\n },\r\n }\r\n },\r\n dataLabels: {\r\n enabled: true,\r\n offsetX: -6,\r\n style: {\r\n fontSize: '12px',\r\n colors: ['#fff']\r\n }\r\n },\r\n stroke: {\r\n show: true,\r\n width: 1,\r\n colors: ['#fff']\r\n },\r\n tooltip: {\r\n shared: true,\r\n intersect: false\r\n },\r\n xaxis: {\r\n categories: categories\r\n\r\n },\r\n },\r\n\r\n\r\n };\r\n }\r\n const pieOptoins = (values: SeriesMeasure[]): ApexChartArgs => {\r\n\r\n var series: any = [];\r\n var labels: any = [];\r\n if (values && values[0]) {\r\n series = values[0].SeriesMeasureVulues.map(e => e.Value);\r\n labels = values[0].SeriesMeasureVulues.map(e => e.Label);\r\n }\r\n return {\r\n\r\n series: series,\r\n options: {\r\n chart: {\r\n type: 'pie',\r\n },\r\n labels: labels\r\n\r\n },\r\n\r\n\r\n\r\n };\r\n }\r\n const donutOptoins = (values: SeriesMeasure[]): ApexChartArgs => {\r\n var series: any = [];\r\n var labels: any = [];\r\n if (values && values[0]) {\r\n series = values[0].SeriesMeasureVulues.map(e => e.Value);\r\n labels = values[0].SeriesMeasureVulues.map(e => e.Label);\r\n }\r\n return {\r\n\r\n series: series,\r\n options: {\r\n chart: {\r\n width: 380,\r\n type: 'donut',\r\n },\r\n dataLabels: {\r\n enabled: false\r\n },\r\n responsive: [{\r\n breakpoint: 480,\r\n options: {\r\n chart: {\r\n width: 200\r\n },\r\n legend: {\r\n show: false\r\n }\r\n }\r\n }],\r\n legend: {\r\n position: 'right',\r\n offsetY: 0,\r\n height: 230,\r\n },\r\n labels: labels\r\n },\r\n\r\n\r\n };\r\n }\r\n const getChartOptions = (values: SeriesMeasure[]) => {\r\n switch (props.widget?.TypeCode) {\r\n case 'bar':\r\n return barOptoins(values);\r\n break;\r\n case 'line':\r\n return lineOptoins(values);\r\n break;\r\n case 'pie':\r\n return pieOptoins(values);\r\n break;\r\n case 'donut':\r\n return donutOptoins(values);\r\n break;\r\n default:\r\n break;\r\n }\r\n return barOptoins(values);\r\n };\r\n\r\n return (\r\n <ReactApexChart\r\n options={args?.options}\r\n series={args?.series}\r\n type={props.widget?.TypeCode}\r\n height={\"100%\"}\r\n width={\"100%\"}\r\n />\r\n )\r\n}\r\nexport type ApexChartArgs = {\r\n options: any;\r\n series: any;\r\n}\r\n\r\nexport default ApexChart;\r\n\r\n","import { stat } from \"fs\";\r\nimport { Button } from \"primereact/button\";\r\nimport { OverlayPanel } from \"primereact/overlaypanel\";\r\nimport React, { useRef, useState, useEffect } from \"react\";\r\nimport { ReactWidgetPM } from \"../../types/widget\";\r\nimport ApexChart from \"./ChartsComponents/ApexChart\";\r\nimport AreaChartComponent from \"./ChartsComponents/AreaChartComponent\";\r\nimport BarChartComponent from \"./ChartsComponents/BarChartComponent\";\r\nimport CandleChartComponent from \"./ChartsComponents/CandleChartComponent\";\r\nimport ColumnChartComponent from \"./ChartsComponents/ColumnChartComponent\";\r\nimport MixedChartComponent from \"./ChartsComponents/MixedChartComponent\";\r\nimport PieChartComponent from \"./ChartsComponents/PieChartComponent\";\r\nimport TimelineChartComponent from \"./ChartsComponents/TimelineChartComponent\";\r\n\r\n\r\ntype WidgetCardProps = {\r\n editBtnClicked(widget: any): any;\r\n deleteBtnClicked(i: any): any;\r\n widget: ReactWidgetPM | null;\r\n el: any;\r\n dateFilter: any;\r\n isInEditMode: boolean;\r\n}\r\n\r\n\r\nconst WidgetCard = (props: WidgetCardProps, state: any) => {\r\n const moreBtnToggle = useRef<OverlayPanel>(null);\r\n const [loading, setLoading] = useState(true);\r\n useEffect(() => {\r\n setTimeout(function () {\r\n setLoading(false);\r\n }, 500);\r\n }, [])\r\n\r\n 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={() => props.editBtnClicked(props.widget)} > Edit </div>\r\n <div onClick={() => props.deleteBtnClicked(props.widget?.key)} >Remove</div>\r\n </div>\r\n </OverlayPanel>\r\n </header>\r\n\r\n <div className=\"dl-dashboard-widget\">\r\n {loading ? null : <ApexChart widget={props.widget} />}\r\n </div>\r\n </div>\r\n );\r\n};\r\n\r\nexport default WidgetCard;\r\n","\r\n\r\nimport { WidthProvider, Responsive, Layout, Layouts } from \"react-grid-layout\";\r\n\r\nimport React, { createRef, useEffect, useRef, useState } from \"react\";\r\nimport { Button } from \"primereact/button\";\r\nimport _, { find } from \"lodash\";\r\nimport { Ripple } from \"primereact/ripple\";\r\nimport { OverlayPanel } from \"primereact/overlaypanel\";\r\nimport { Dropdown } from \"primereact/dropdown\";\r\n\r\n\r\nimport ColumnChartComponent from \"./ChartsComponents/ColumnChartComponent\";\r\nimport PieChartComponent from \"./ChartsComponents/PieChartComponent\";\r\nimport MixedChartComponent from \"./ChartsComponents/MixedChartComponent\";\r\nimport AreaChartComponent from \"./ChartsComponents/AreaChartComponent\";\r\nimport TimelineChartComponent from \"./ChartsComponents/TimelineChartComponent\";\r\nimport CandleChartComponent from \"./ChartsComponents/CandleChartComponent\";\r\nimport BarChartComponent from \"./ChartsComponents/BarChartComponent\";\r\nimport { WidgetComponent } from \"../../types/WidgetComponent\";\r\nimport { ReactWidgetPM } from \"../../types/widget\";\r\nimport WidgetCard from \"./WidgetCard\";\r\nimport { TRUE } from \"sass\";\r\n\r\nconst ResponsiveReactGridLayout = WidthProvider(Responsive);\r\nconst newWidgetWidth = 3;\r\n\r\ntype DashboardDesignerProps = {\r\n editMode: boolean,\r\n dashboardLayouts: { lg: ReactWidgetPM[] },\r\n openEditWidget: (widget: ReactWidgetPM) => void\r\n onLayoutChange: (layouts: Layouts) => void\r\n};\r\nconst DashboardDesigner = (props: DashboardDesignerProps) => {\r\n\r\n\r\n const array12 = Array.from({ length: 12 }).fill(null);\r\n const minimumPlaceholderRowsCount = 12;\r\n const [layouts, setLayouts] = useState<Layouts>({ lg: [] });\r\n const [placeholderRowsArray, setplaceholderRowsArray] = useState(Array.from({ length: minimumPlaceholderRowsCount }).fill(null));\r\n const [firstChange, setFirstChange] = useState(true);\r\n const [dateFilter, setDateFilter] = useState<Date | Date[] | undefined>(undefined);\r\n const [isInEditMode, setisInEditMode] = useState(false);\r\n const [widgets, setWidgets] = useState<{ lg: ReactWidgetPM[] }>({ lg: [] });\r\n\r\n\r\n useEffect(() => {\r\n setFirstChange(true);\r\n console.log('useEffect setLayouts')\r\n setLayouts({});\r\n setLayouts(createLayout());\r\n setWidgets(props.dashboardLayouts);\r\n }, [props.dashboardLayouts]);\r\n\r\n const createLayout = (): Layouts => {\r\n var layout: any = { lg: [] };\r\n props.dashboardLayouts.lg.map(w => w.Layout as Layout).forEach(e => {\r\n layout.lg.push(e)\r\n })\r\n return layout;\r\n }\r\n useEffect(() => {\r\n setisInEditMode(props.editMode);\r\n }, [props.editMode]);\r\n\r\n\r\n // const applyModeSetting = () => {\r\n // layouts.current.lg.forEach(element => {\r\n // element.isDraggable = props.editMode;\r\n // element.isResizable = props.editMode;\r\n\r\n // });\r\n // }\r\n\r\n function reset() {\r\n window.localStorage.clear();\r\n window.location.reload();\r\n }\r\n\r\n function onLayoutChange(layout: any, changedLayouts: Layouts) {\r\n console.log(layout, layouts);\r\n if (firstChange) {\r\n setFirstChange(false);\r\n return;\r\n }\r\n setLayouts(changedLayouts);\r\n UpdatePlaceholderDimensions();\r\n props.onLayoutChange(changedLayouts)\r\n }\r\n\r\n function deletePanel(id) {\r\n console.log('deletePanel(id)', id)\r\n var newLayouts = { lg: layouts.lg.filter(e => e.i != id) }\r\n\r\n setLayouts(newLayouts);\r\n\r\n var newWidgets = { lg: widgets.lg.filter(e => e.key != id) }\r\n setWidgets(newWidgets);\r\n props.onLayoutChange(newLayouts)\r\n };\r\n\r\n function editWidget(widget: ReactWidgetPM) {\r\n widget.ChangeSetOp = 'Update';\r\n props.openEditWidget(widget);\r\n };\r\n\r\n\r\n function UpdatePlaceholderDimensions() {\r\n console.log('UpdatePlaceholderDimensions', layouts)\r\n var gridLayout = document.getElementsByClassName('react-grid-layout')\r\n if (!gridLayout)\r\n return;\r\n const gridElementHeight = gridLayout[0]?.clientHeight;\r\n\r\n let newPlaceholderRows = Math.floor(gridElementHeight / layoutGridProps.rowHeight);\r\n newPlaceholderRows = newPlaceholderRows < minimumPlaceholderRowsCount ? minimumPlaceholderRowsCount : newPlaceholderRows;\r\n setplaceholderRowsArray(Array.from({ length: newPlaceholderRows }).fill(null));\r\n }\r\n return (<div className=\"dl-full-hight\">\r\n <div className=\"dl-box\">\r\n {/* <div className=\"dl-row dl-header\">\r\n {renderPageHeader()}\r\n </div> */}\r\n <div className=\"dl-row dl-content\">\r\n <div className=\"dl-grid-container\">\r\n <div className=\"dl-grid dl-grid--bordered\">\r\n {props.editMode ? placeholderRowsArray.map((e, i) =>\r\n array12.map((e, i) => (\r\n <div key={i}\r\n style={{\r\n height: layoutGridProps.rowHeight,\r\n }}\r\n ></div>\r\n ))\r\n ) : null}\r\n </div>\r\n\r\n\r\n <ResponsiveReactGridLayout\r\n {...layoutGridProps}\r\n layouts={layouts}\r\n compactType=\"vertical\"\r\n isDraggable={isInEditMode}\r\n isResizable={isInEditMode}\r\n onWidthChange={() => UpdatePlaceholderDimensions()}\r\n onLayoutChange={(layout, layouts) =>\r\n onLayoutChange(layout, layouts)\r\n }\r\n >\r\n {widgets.lg.map((widget) =>\r\n\r\n <div key={widget.Layout?.i}>\r\n <WidgetCard\r\n isInEditMode={isInEditMode}\r\n key={widget.Layout?.i}\r\n widget={widget}\r\n el={widget}\r\n dateFilter={dateFilter}\r\n editBtnClicked={editWidget}\r\n deleteBtnClicked={deletePanel}\r\n />\r\n </div>\r\n )}\r\n </ResponsiveReactGridLayout>\r\n </div>\r\n\r\n </div>\r\n {/* <div className=\"dl-row dl-footer\">\r\n <p><b>footer</b> (fixed height)</p>\r\n </div> */}\r\n </div>\r\n {/* {renderNewWidgetDialog()} */}\r\n\r\n\r\n\r\n\r\n\r\n </div>);\r\n\r\n}\r\n\r\n\r\nexport const layoutGridProps = {\r\n rowHeight: 50,\r\n className: \"layout\",\r\n cols: { lg: 12, md: 6, sm: 2, xs: 1, xxs: 1 },\r\n useCSSTransforms: true,\r\n}\r\n\r\n\r\n\r\n\r\nexport const WidgetTypes = [\r\n { Name: \"Filter\", Disabled: true },\r\n { Name: \"Chart\", Disabled: false },\r\n { Name: \"Data Table\", Disabled: true },\r\n { Name: \"Pivot Table\", Disabled: true },\r\n { Name: \"KPI\", Disabled: true },\r\n { Name: \"Gauge\", Disabled: true },\r\n];\r\nexport const widgetComponents = [\r\n { type: \"Bar\", component: BarChartComponent },\r\n { type: \"Column\", component: ColumnChartComponent },\r\n { type: \"Pie\", component: PieChartComponent },\r\n { type: \"Mixed\", component: MixedChartComponent },\r\n { type: \"Timeline\", component: TimelineChartComponent },\r\n { type: \"Candle\", component: CandleChartComponent },\r\n { type: \"Area\", component: AreaChartComponent },\r\n];\r\n\r\n\r\nexport default DashboardDesigner;\r\n","import axios from \"axios\";\r\nimport { ApiQueryFilters } from \"../common/data-contracts/ApiQueryFilter\";\r\nimport { ReactDashboardPM } from \"../types/Dashboard\";\r\nimport { ApiServices } from \"./ApiServices\";\r\nimport { Tools } from './tools';\r\n\r\n\r\nexport class DashBoardService{ \r\n _ApiServices:ApiServices;\r\n tableName = 'DashBoard';\r\n constructor(){\r\n this._ApiServices = new ApiServices();\r\n }\r\n \r\n\r\n getDataByFilters(filters: ApiQueryFilters) {\r\n return this._ApiServices.getByFilters<ReactDashboardPM>(`/api/${this.tableName}Views/getbyfilters?`,filters);\r\n }\r\n\r\n add(data:ReactDashboardPM){\r\n return this._ApiServices.post(`/api/DashBoards`,data);\r\n }\r\n \r\n}","import axios from \"axios\";\r\nimport { ApiQueryFilters } from \"../common/data-contracts/ApiQueryFilter\";\r\nimport { ReactDashboardPM } from \"../types/Dashboard\";\r\nimport { WidgetType } from \"../types/WidgetType\";\r\nimport { ApiServices } from \"./ApiServices\";\r\nimport { Tools } from './tools';\r\n\r\n\r\nexport class WidgetTypeListService{ \r\n _ApiServices:ApiServices;\r\n\r\n constructor(){\r\n this._ApiServices = new ApiServices();\r\n }\r\n \r\n\r\n getDataByFilters(filters: ApiQueryFilters) {\r\n return this._ApiServices.getByFilters<WidgetType>(`/api/WidgetTypeViews/getbyfilters?`,filters);\r\n }\r\n\r\n getAll() {\r\n return this._ApiServices.get<WidgetType[]>(`/api/WidgetTypeViews/getall`);\r\n }\r\n\r\n \r\n}","export function deepClone (obj){\r\n return JSON.parse(JSON.stringify(obj))\r\n}","import * as React from 'react'\r\nimport { Card } from 'primereact/card';\r\nimport { Button } from \"primereact/button\";\r\nimport DashboardDesigner, { layoutGridProps } from './features/Dashboard/DashboardDesigner'\r\nimport \"./styles.module.css\"\r\nimport { Dropdown } from 'primereact/dropdown';\r\nimport { createRef, useEffect, useRef, useState } from \"react\";\r\nimport { DashBoardService } from './services/DashBoardService';\r\nimport { ApiQueryFilters } from './common/data-contracts/ApiQueryFilter';\r\nimport { ReactDashboardPM } from './types/Dashboard';\r\nimport { Dialog } from 'primereact/dialog';\r\nimport DashboardDialogComponent from './features/Dashboard/dashboard-dialog/dashboard-dialog-component';\r\nimport { Session } from './services/session';\r\nimport { WidgetTypeListService } from './services/WidgetTypeListService';\r\nimport { WidgetType } from './types/WidgetType';\r\nimport { ReactWidgetPM } from './types/widget';\r\nimport { OverlayPanel } from 'primereact/overlaypanel';\r\nimport { Ripple } from 'primereact/ripple';\r\nimport { DashboardDataBinding } from './types/DashboardDataBinding';\r\nimport { Layout, Layouts } from 'react-grid-layout';\r\nimport { v4 as uuidv4 } from 'uuid';\r\nimport { deepClone } from './services/clone';\r\n\r\ntype DashboardProps = {\r\n token: string,\r\n tenant: number,\r\n userId: string,\r\n dataBinding: DashboardDataBinding,\r\n openAddEditWidget: (widget: ReactWidgetPM | undefined) => void,\r\n openAddEditDashboard: (dashboard: ReactDashboardPM | undefined) => void,\r\n onChangeDashboard: (dashboard: ReactDashboardPM | undefined) => void,\r\n onSaveDashboard: (dashboard: ReactDashboardPM | undefined) => void,\r\n};\r\nconst Dashboard = (props: DashboardProps) => {\r\n const newWidgetWidth = 3;\r\n const newWidgetHeight = 5;\r\n\r\n const [dashbords, setDashbords] = useState<ReactDashboardPM[]>([]);\r\n const [currentDashbord, setCurrentDashbord] = useState<ReactDashboardPM | undefined>(undefined);\r\n const [beforEditDashbord, setBeforEditDashbord] = useState<ReactDashboardPM | undefined>(undefined);\r\n const [hasChanges, setHasChanges] = useState(false);\r\n const [isInEditMode, setIsInEditMode] = useState<boolean>(false);\r\n const [WidgetTypes, setWidgetTypes] = useState<WidgetType[]>();\r\n const [layouts, setLayouts] = useState<{ lg: ReactWidgetPM[] }>({ lg: [] });\r\n const [cancelConfirmDialog, setCancelConfirmDialog] = useState(false);\r\n const dashboardMoreButtonToggle = createRef<OverlayPanel>();\r\n const dashboardService = new DashBoardService();\r\n const widgetTypeListService = new WidgetTypeListService();\r\n useEffect(() => {\r\n getWidgetTypes();\r\n\r\n props.dataBinding.onGetDashboard.subscribe(e => {\r\n console.log('onGetDashboard.subscribe', e)\r\n setCurrentDashbord(e);\r\n applyLayouts(e);\r\n })\r\n props.dataBinding.onGetAllDashboards.subscribe(e => {\r\n console.log('onGetAllDashboard.subscribe', e)\r\n\r\n setDashbords(e);\r\n });\r\n\r\n props.dataBinding.onAddUpdateWidget.subscribe(isUpdated => {\r\n if (!isUpdated)\r\n return;\r\n setHasChanges(true);\r\n });\r\n\r\n }, [])\r\n\r\n Session.CurrentUserId = props.userId;\r\n Session.Tenant = props.tenant;\r\n Session.Token = props.token;\r\n if (props?.token?.length > 0)\r\n localStorage.setItem(\"token\", props?.token);\r\n\r\n\r\n const getWidgetTypes = () => {\r\n widgetTypeListService.getAll().then(data => {\r\n setWidgetTypes(data.data);\r\n });\r\n }\r\n const EditDashBoard = () => {\r\n props.openAddEditDashboard(currentDashbord);\r\n dashboardMoreButtonToggle?.current?.hide();\r\n\r\n }\r\n const addWidget = (widgetCode) => {\r\n var position = EvaluateNewWidgetPosition();\r\n props.openAddEditWidget({ TypeCode: widgetCode, StartPotistion: `${position.x},${position.y}`, EndPosition: `${position.w},${position.h}`,ChangeSetOp:'Insert' } as ReactWidgetPM);\r\n\r\n }\r\n const EvaluateNewWidgetPosition = () => {\r\n let widgetYPosition = 0;\r\n let widgetXPosition = 0;\r\n let layout = layouts[\"lg\"].map(e => e.Layout);\r\n const maxY = layout.reduce((max, widget) => {\r\n if (widget && widget.y > max) max = widget.y;\r\n return max;\r\n }, 0);\r\n\r\n for (let y = 0; y <= maxY; y++) {\r\n const widgetsRow = layout.filter(d => d?.y == y);\r\n const lastWidgetStartXPosition = Math.max.apply(Math, widgetsRow.map(a => a?.x));\r\n const lastWidget: any = widgetsRow.find(a => a?.x == lastWidgetStartXPosition);\r\n if (lastWidget) {\r\n const lastWidgetEndXPosition = lastWidgetStartXPosition + lastWidget.w;\r\n const availableHorizontalSlots = layoutGridProps.cols.lg - lastWidgetEndXPosition;\r\n if (availableHorizontalSlots >= newWidgetWidth) {\r\n widgetYPosition = y;\r\n widgetXPosition = lastWidgetEndXPosition;\r\n return { x: widgetXPosition, y: widgetYPosition, w: newWidgetWidth, h: newWidgetHeight };\r\n\r\n } else {\r\n widgetYPosition = y + 1;\r\n }\r\n } else {\r\n widgetYPosition = y + 1;\r\n }\r\n }\r\n\r\n return { x: widgetXPosition, y: widgetYPosition, w: newWidgetWidth, h: newWidgetHeight };\r\n }\r\n const editLayout = () => {\r\n setIsInEditMode(true)\r\n dashboardMoreButtonToggle?.current?.hide();\r\n\r\n setBeforEditDashbord(deepClone(currentDashbord));\r\n }\r\n const save = () => {\r\n setIsInEditMode(false)\r\n console.log('onSaveDashboard > ', currentDashbord)\r\n props.onSaveDashboard(currentDashbord);\r\n onHide();\r\n setHasChanges(false);\r\n }\r\n\r\n const cancelSave = () => {\r\n if (!hasChanges) {\r\n setIsInEditMode(false);\r\n setHasChanges(false);\r\n } else {\r\n setCancelConfirmDialog(true);\r\n }\r\n\r\n\r\n }\r\n\r\n const dontSave = () => {\r\n setHasChanges(false);\r\n setIsInEditMode(false);\r\n props.dataBinding.onGetDashboard.next(beforEditDashbord);\r\n setCancelConfirmDialog(false);\r\n }\r\n const changeDashboard = (event) => {\r\n if (event.value == currentDashbord?.Id)\r\n return;\r\n var dasboard = dashbords.find(e => e.Id == event.value);\r\n\r\n props.onChangeDashboard(dasboard);\r\n props.dataBinding.onGetDashboard.next(dasboard);\r\n\r\n }\r\n\r\n const applyLayouts = (dashbord: ReactDashboardPM | undefined) => {\r\n if ((!dashbord?.Widgets))\r\n return;\r\n var layout: { lg: ReactWidgetPM[] } = { lg: [] };\r\n dashbord?.Widgets.map(widget => {\r\n if (widget.Id && widget.Id.length > 0)\r\n widget.key = widget.Id;\r\n else\r\n widget.key = uuidv4();\r\n widget.Layout = {\r\n minH: 5,\r\n minW: 3,\r\n i: widget.key,\r\n w: +widget.EndPosition.split(',')[0],\r\n h: +widget.EndPosition.split(',')[1],\r\n x: +widget.StartPotistion.split(',')[0],\r\n y: +widget.StartPotistion.split(',')[1],\r\n }\r\n layout.lg.push(widget\r\n\r\n )\r\n });\r\n console.log('setLayouts -- > ', layout)\r\n setLayouts(layout);\r\n\r\n }\r\n const updateWidgets = (layouts: Layouts) => {\r\n console.log('updateWidgets = (layouts:Layouts', layouts)\r\n var layoutsDic: { [key: string]: Layout } = {};\r\n Object.keys(layouts).forEach(sizeType => {\r\n if (layouts[sizeType].length > 0) {\r\n layouts[sizeType].map(layout => {\r\n layoutsDic[layout.i] = layout;\r\n })\r\n return;\r\n }\r\n })\r\n var widgets: ReactWidgetPM[] = [];\r\n currentDashbord?.Widgets.forEach(widget => {\r\n if (layoutsDic[widget.key]) {\r\n widget.StartPotistion = `${layoutsDic[widget.key].x},${layoutsDic[widget.key].y}`;\r\n widget.EndPosition = `${layoutsDic[widget.key].w},${layoutsDic[widget.key].h}`;\r\n widgets.push(widget)\r\n }\r\n\r\n });\r\n if (currentDashbord) {\r\n currentDashbord.Widgets = widgets;\r\n }\r\n console.log('after update widget', currentDashbord)\r\n setHasChanges(true);\r\n }\r\n\r\n const renderCancelConfirmDialogFooter = () => {\r\n return (\r\n <div className='dl-flex-row-end' >\r\n <Button label=\"Cancel\" onClick={() => onHide()} className=\"p-button-secondary\" />\r\n <Button label=\"Don't Save\" onClick={() => dontSave()} className=\"p-button-secondary\" />\r\n <Button label=\"Save\" onClick={() => save()} autoFocus className=\"p-button-warning\" />\r\n </div>\r\n );\r\n }\r\n const onHide = () => {\r\n setCancelConfirmDialog(false)\r\n }\r\n return (\r\n <div className='dl-full-hight'>\r\n\r\n <div className='dl-dashboard-header dl-card'>\r\n <div className='dl-flex-row dl-custom-btn'>\r\n <div className='dl-title-1'>{currentDashbord?.Name}</div>\r\n <Button\r\n icon=\"pi pi-ellipsis-v\"\r\n onClick={(e) => dashboardMoreButtonToggle?.current?.toggle(e)}\r\n className=\"p-button p-button-icon-only p-button-rounded p-button-text\"\r\n >\r\n <Ripple />\r\n </Button>\r\n <OverlayPanel ref={dashboardMoreButtonToggle} className=\"buttons-overlay\">\r\n <div className=\"buttons-list\">\r\n <div onClick={() => EditDashBoard()}>Edit</div>\r\n <div onClick={editLayout}>Edit Layout</div>\r\n\r\n </div>\r\n </OverlayPanel >\r\n </div>\r\n <div className='dl-flex-row'>\r\n {!isInEditMode ?\r\n <div className='dl-flex-row'>\r\n\r\n\r\n <div style={{ width: \"161px\" }}>\r\n <Dropdown\r\n value={[]}\r\n options={dashbords}\r\n optionValue=\"Id\"\r\n optionLabel=\"Name\"\r\n onChange={changeDashboard}\r\n placeholder=\"Choose Dashboard\"\r\n optionDisabled={(option) => {\r\n return option?.Disabled;\r\n }}\r\n scrollHeight=\"300px\"\r\n style={{ width: '100%' }}\r\n />\r\n </div>\r\n <Button icon=\"pi pi-plus\" onClick={() => props.openAddEditDashboard(undefined)}\r\n className=\"dl-dashboard-add p-button-rounded p-button-success\" />\r\n </div>\r\n : null}\r\n {/* <DashboardDialogComponent display={displayAddDashboard} onClose={onDashboardDialogClose}></DashboardDialogComponent> */}\r\n\r\n\r\n\r\n {isInEditMode ?\r\n <div className='dl-flex-row'>\r\n\r\n <Button\r\n label=\"Cancel\"\r\n className=\"p-button-secondary dl-m-r-s dl-m-t-8\"\r\n onClick={cancelSave}\r\n />\r\n\r\n <Dialog header=\"Unsaved Changes\" visible={cancelConfirmDialog} style={{ width: '50vw' }} footer={renderCancelConfirmDialogFooter()} onHide={onHide}>\r\n <p>This Dashboard has unsaved changes do you want to save it?</p>\r\n </Dialog>\r\n\r\n <Button\r\n label=\"Save\"\r\n form=\"frm\"\r\n // icon=\"pi pi-check\"\r\n onClick={save}\r\n autoFocus\r\n className={hasChanges ? \"p-button-warning dl-m-t-8\" : \"p-button-secondary dl-m-t-8\"}\r\n />\r\n\r\n <div style={{ width: '192px', marginLeft: '15px' }}>\r\n <Dropdown\r\n options={WidgetTypes}\r\n optionValue=\"Code\"\r\n optionLabel=\"Name\"\r\n onChange={(e) => addWidget(e.value)}\r\n placeholder=\"Add Component\"\r\n optionDisabled={(option) => {\r\n return option?.Disabled;\r\n }}\r\n scrollHeight=\"300px\"\r\n />\r\n </div>\r\n </div>\r\n : null}\r\n </div>\r\n\r\n\r\n </div>\r\n\r\n <div className='dl-dashboard-body'>\r\n <DashboardDesigner editMode={isInEditMode} onLayoutChange={updateWidgets} dashboardLayouts={layouts} openEditWidget={(widget: ReactWidgetPM) => props.openAddEditWidget(widget)} ></DashboardDesigner>\r\n </div>\r\n </div >\r\n\r\n )\r\n}\r\nexport default Dashboard;\r\n\r\n"],"names":["Tools","GetLogitudeURL","logitude_url","location","href","replace","indexOf","urlArr","split","url","substring","lastIndexOf","length","ApiServices","_apiUrl","getByFilters","api","filters","token","getTokenFromStorage","apiURL","ConcatFiltersToURL","axios","get","headers","post","date","window","localStorage","getItem","urlparameters","mykeys","Object","keys","addtionalFiltersValues","i","propName","propValue","ignoreFilter","concat","encodeURIComponent","JSON","stringify","DashboardAnalyticsService","_ApiServices","getData","widget","controller","ApexChart","props","useState","series","options","args","serArgs","useEffect","dashboardAnalyticsService","then","result","data","getChartOptions","lineOptoins","values","categories","s","SeriesMeasureVulues","map","z","Value","e","Label","chart","height","type","zoom","enabled","dataLabels","stroke","curve","title","text","align","grid","row","colors","opacity","xaxis","barOptoins","plotOptions","bar","horizontal","position","offsetX","style","fontSize","show","width","tooltip","shared","intersect","pieOptoins","labels","donutOptoins","responsive","breakpoint","legend","offsetY","TypeCode","React","ReactApexChart","WidgetCard","state","moreBtnToggle","useRef","loading","setLoading","setTimeout","className","key","el","Title","isInEditMode","Button","icon","onClick","current","toggle","OverlayPanel","ref","editBtnClicked","deleteBtnClicked","ResponsiveReactGridLayout","WidthProvider","Responsive","DashboardDesigner","array12","Array","from","fill","minimumPlaceholderRowsCount","lg","layouts","setLayouts","placeholderRowsArray","setplaceholderRowsArray","firstChange","setFirstChange","undefined","dateFilter","setisInEditMode","widgets","setWidgets","console","log","createLayout","dashboardLayouts","layout","w","Layout","forEach","push","editMode","onLayoutChange","changedLayouts","UpdatePlaceholderDimensions","deletePanel","id","newLayouts","filter","newWidgets","editWidget","ChangeSetOp","openEditWidget","gridLayout","document","getElementsByClassName","gridElementHeight","clientHeight","newPlaceholderRows","Math","floor","layoutGridProps","rowHeight","compactType","isDraggable","isResizable","onWidthChange","cols","md","sm","xs","xxs","useCSSTransforms","DashBoardService","getDataByFilters","tableName","add","WidgetTypeListService","getAll","deepClone","obj","parse","Dashboard","newWidgetWidth","newWidgetHeight","dashbords","setDashbords","currentDashbord","setCurrentDashbord","beforEditDashbord","setBeforEditDashbord","hasChanges","setHasChanges","setIsInEditMode","WidgetTypes","setWidgetTypes","cancelConfirmDialog","setCancelConfirmDialog","dashboardMoreButtonToggle","createRef","dashboardService","widgetTypeListService","getWidgetTypes","dataBinding","onGetDashboard","subscribe","applyLayouts","onGetAllDashboards","onAddUpdateWidget","isUpdated","setItem","EditDashBoard","openAddEditDashboard","hide","addWidget","widgetCode","EvaluateNewWidgetPosition","openAddEditWidget","StartPotistion","x","y","EndPosition","h","widgetYPosition","widgetXPosition","maxY","reduce","max","widgetsRow","d","lastWidgetStartXPosition","apply","a","lastWidget","find","lastWidgetEndXPosition","availableHorizontalSlots","editLayout","save","onSaveDashboard","onHide","cancelSave","dontSave","next","changeDashboard","event","value","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 { ReactWidgetPM } from \"../../../types/widget\";\r\nimport { useState } from 'react';\r\nimport { DashboardAnalyticsService } from \"../../../services/DashboardAnalyticsService\";\r\nimport { SeriesMeasure } from \"../../../types/SeriesMeasure\";\r\n\r\ntype ApexChartProps = {\r\n widget: ReactWidgetPM | null\r\n};\r\nconst ApexChart = (props: ApexChartProps) => {\r\n\r\n const [args, serArgs] = useState<ApexChartArgs>({\r\n series:[],\r\n options:{}\r\n });\r\n useEffect(() => {\r\n var dashboardAnalyticsService = new DashboardAnalyticsService();\r\n dashboardAnalyticsService.getData(props.widget as ReactWidgetPM).then(result => {\r\n const data = getChartOptions(result.data);\r\n serArgs(data);\r\n })\r\n\r\n\r\n }, []);\r\n\r\n const lineOptoins = (values: SeriesMeasure[]) => {\r\n\r\n\r\n var series: any = [];\r\n var categories: any = [];\r\n if (values && values[0]) {\r\n var s = values[0].SeriesMeasureVulues.map(z => z.Value);\r\n series = values.map(e => {\r\n return {data: e.SeriesMeasureVulues.map(z => z.Value)}\r\n }\r\n );\r\n categories = values[0].SeriesMeasureVulues.map(e => e.Label);\r\n }\r\n\r\n return {\r\n\r\n series: series,\r\n options: {\r\n chart: {\r\n height: 350,\r\n type: 'line',\r\n zoom: {\r\n enabled: false\r\n }\r\n },\r\n dataLabels: {\r\n enabled: false\r\n },\r\n stroke: {\r\n curve: 'straight'\r\n },\r\n title: {\r\n text: 'Product Trends by Month',\r\n align: 'left'\r\n },\r\n grid: {\r\n row: {\r\n colors: ['#f3f3f3', 'transparent'], // takes an array which will be repeated on columns\r\n opacity: 0.5\r\n },\r\n },\r\n xaxis: {\r\n categories: categories\r\n }\r\n },\r\n\r\n\r\n };\r\n }\r\n const barOptoins = (values: SeriesMeasure[]) => {\r\n var series: any = [{\r\n data:[]\r\n }];\r\n var categories: any = [];\r\n if (values && values[0]) {\r\n var s = values[0].SeriesMeasureVulues.map(z => z.Value);\r\n series = values.map(e => {\r\n return {data: e.SeriesMeasureVulues.map(z => z.Value)}\r\n }\r\n );\r\n categories = values[0].SeriesMeasureVulues.map(e => e.Label);\r\n }\r\n return {\r\n series: series\r\n ,\r\n options: {\r\n chart: {\r\n type: 'bar',\r\n height: 430\r\n },\r\n plotOptions: {\r\n bar: {\r\n horizontal: true,\r\n dataLabels: {\r\n position: 'top',\r\n },\r\n }\r\n },\r\n dataLabels: {\r\n enabled: true,\r\n offsetX: -6,\r\n style: {\r\n fontSize: '12px',\r\n colors: ['#fff']\r\n }\r\n },\r\n stroke: {\r\n show: true,\r\n width: 1,\r\n colors: ['#fff']\r\n },\r\n tooltip: {\r\n shared: true,\r\n intersect: false\r\n },\r\n xaxis: {\r\n categories: categories\r\n\r\n },\r\n },\r\n\r\n\r\n };\r\n }\r\n const pieOptoins = (values: SeriesMeasure[]): ApexChartArgs => {\r\n\r\n var series: any = [];\r\n var labels: any = [];\r\n if (values && values[0]) {\r\n series = values[0].SeriesMeasureVulues.map(e => e.Value);\r\n labels = values[0].SeriesMeasureVulues.map(e => e.Label);\r\n }\r\n return {\r\n\r\n series: series,\r\n options: {\r\n chart: {\r\n type: 'pie',\r\n },\r\n labels: labels\r\n\r\n },\r\n\r\n\r\n\r\n };\r\n }\r\n const donutOptoins = (values: SeriesMeasure[]): ApexChartArgs => {\r\n var series: any = [];\r\n var labels: any = [];\r\n if (values && values[0]) {\r\n series = values[0].SeriesMeasureVulues.map(e => e.Value);\r\n labels = values[0].SeriesMeasureVulues.map(e => e.Label);\r\n }\r\n return {\r\n\r\n series: series,\r\n options: {\r\n chart: {\r\n width: 380,\r\n type: 'donut',\r\n },\r\n dataLabels: {\r\n enabled: false\r\n },\r\n responsive: [{\r\n breakpoint: 480,\r\n options: {\r\n chart: {\r\n width: 200\r\n },\r\n legend: {\r\n show: false\r\n }\r\n }\r\n }],\r\n legend: {\r\n position: 'right',\r\n offsetY: 0,\r\n height: 230,\r\n },\r\n labels: labels\r\n },\r\n\r\n\r\n };\r\n }\r\n const getChartOptions = (values: SeriesMeasure[]) => {\r\n switch (props.widget?.TypeCode) {\r\n case 'bar':\r\n return barOptoins(values);\r\n break;\r\n case 'line':\r\n return lineOptoins(values);\r\n break;\r\n case 'pie':\r\n return pieOptoins(values);\r\n break;\r\n case 'donut':\r\n return donutOptoins(values);\r\n break;\r\n default:\r\n break;\r\n }\r\n return barOptoins(values);\r\n };\r\n\r\n return (\r\n <ReactApexChart\r\n options={args?.options}\r\n series={args?.series}\r\n type={props.widget?.TypeCode}\r\n height={\"100%\"}\r\n width={\"100%\"}\r\n />\r\n )\r\n}\r\nexport type ApexChartArgs = {\r\n options: any;\r\n series: any;\r\n}\r\n\r\nexport default ApexChart;\r\n\r\n","import { stat } from \"fs\";\r\nimport { Button } from \"primereact/button\";\r\nimport { OverlayPanel } from \"primereact/overlaypanel\";\r\nimport React, { useRef, useState, useEffect } from \"react\";\r\nimport { ReactWidgetPM } from \"../../types/widget\";\r\nimport ApexChart from \"./ChartsComponents/ApexChart\";\r\nimport AreaChartComponent from \"./ChartsComponents/AreaChartComponent\";\r\nimport BarChartComponent from \"./ChartsComponents/BarChartComponent\";\r\nimport CandleChartComponent from \"./ChartsComponents/CandleChartComponent\";\r\nimport ColumnChartComponent from \"./ChartsComponents/ColumnChartComponent\";\r\nimport MixedChartComponent from \"./ChartsComponents/MixedChartComponent\";\r\nimport PieChartComponent from \"./ChartsComponents/PieChartComponent\";\r\nimport TimelineChartComponent from \"./ChartsComponents/TimelineChartComponent\";\r\n\r\n\r\ntype WidgetCardProps = {\r\n editBtnClicked(widget: any): any;\r\n deleteBtnClicked(i: any): any;\r\n widget: ReactWidgetPM | null;\r\n el: any;\r\n dateFilter: any;\r\n isInEditMode: boolean;\r\n}\r\n\r\n\r\nconst WidgetCard = (props: WidgetCardProps, state: any) => {\r\n const moreBtnToggle = useRef<OverlayPanel>(null);\r\n const [loading, setLoading] = useState(true);\r\n useEffect(() => {\r\n setTimeout(function () {\r\n setLoading(false);\r\n }, 500);\r\n }, [])\r\n\r\n 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={() => props.editBtnClicked(props.widget)} > Edit </div>\r\n <div onClick={() => props.deleteBtnClicked(props.widget?.key)} >Remove</div>\r\n </div>\r\n </OverlayPanel>\r\n </header>\r\n\r\n <div className=\"dl-dashboard-widget\">\r\n {loading ? null : <ApexChart widget={props.widget} />}\r\n </div>\r\n </div>\r\n );\r\n};\r\n\r\nexport default WidgetCard;\r\n","\r\n\r\nimport { WidthProvider, Responsive, Layout, Layouts } from \"react-grid-layout\";\r\n\r\nimport React, { createRef, useEffect, useRef, useState } from \"react\";\r\nimport { Button } from \"primereact/button\";\r\nimport _, { find } from \"lodash\";\r\nimport { Ripple } from \"primereact/ripple\";\r\nimport { OverlayPanel } from \"primereact/overlaypanel\";\r\nimport { Dropdown } from \"primereact/dropdown\";\r\n\r\n\r\nimport ColumnChartComponent from \"./ChartsComponents/ColumnChartComponent\";\r\nimport PieChartComponent from \"./ChartsComponents/PieChartComponent\";\r\nimport MixedChartComponent from \"./ChartsComponents/MixedChartComponent\";\r\nimport AreaChartComponent from \"./ChartsComponents/AreaChartComponent\";\r\nimport TimelineChartComponent from \"./ChartsComponents/TimelineChartComponent\";\r\nimport CandleChartComponent from \"./ChartsComponents/CandleChartComponent\";\r\nimport BarChartComponent from \"./ChartsComponents/BarChartComponent\";\r\nimport { WidgetComponent } from \"../../types/WidgetComponent\";\r\nimport { ReactWidgetPM } from \"../../types/widget\";\r\nimport WidgetCard from \"./WidgetCard\";\r\nimport { TRUE } from \"sass\";\r\nimport { DashboardDataBinding } from \"../../types/DashboardDataBinding\";\r\n\r\nconst ResponsiveReactGridLayout = WidthProvider(Responsive);\r\nconst newWidgetWidth = 3;\r\n\r\ntype DashboardDesignerProps = {\r\n dataBinding: DashboardDataBinding,\r\n editMode: boolean,\r\n dashboardLayouts: { lg: ReactWidgetPM[] },\r\n openEditWidget: (widget: ReactWidgetPM) => void\r\n onLayoutChange: (layouts: Layouts) => void\r\n};\r\nconst DashboardDesigner = (props: DashboardDesignerProps) => {\r\n\r\n\r\n const array12 = Array.from({ length: 12 }).fill(null);\r\n const minimumPlaceholderRowsCount = 12;\r\n const [layouts, setLayouts] = useState<Layouts>({ lg: [] });\r\n const [placeholderRowsArray, setplaceholderRowsArray] = useState(Array.from({ length: minimumPlaceholderRowsCount }).fill(null));\r\n const [firstChange, setFirstChange] = useState(true);\r\n const [dateFilter, setDateFilter] = useState<Date | Date[] | undefined>(undefined);\r\n const [isInEditMode, setisInEditMode] = useState(false);\r\n const [widgets, setWidgets] = useState<{ lg: ReactWidgetPM[] }>({ lg: [] });\r\n\r\n\r\n useEffect(()=>{\r\n props.dataBinding.onAddUpdateWidget.subscribe(e=>{\r\n setLayouts({});\r\n setLayouts(createLayout());\r\n setWidgets(props.dashboardLayouts);\r\n })\r\n },[]);\r\n useEffect(() => {\r\n setFirstChange(true);\r\n console.log('useEffect setLayouts')\r\n setLayouts({});\r\n setLayouts(createLayout());\r\n setWidgets(props.dashboardLayouts);\r\n }, [props.dashboardLayouts]);\r\n\r\n const createLayout = (): Layouts => {\r\n var layout: any = { lg: [] };\r\n props.dashboardLayouts.lg.map(w => w.Layout as Layout).forEach(e => {\r\n layout.lg.push(e)\r\n })\r\n return layout;\r\n }\r\n useEffect(() => {\r\n setisInEditMode(props.editMode);\r\n }, [props.editMode]);\r\n\r\n\r\n // const applyModeSetting = () => {\r\n // layouts.current.lg.forEach(element => {\r\n // element.isDraggable = props.editMode;\r\n // element.isResizable = props.editMode;\r\n\r\n // });\r\n // }\r\n\r\n function reset() {\r\n window.localStorage.clear();\r\n window.location.reload();\r\n }\r\n\r\n function onLayoutChange(layout: any, changedLayouts: Layouts) {\r\n console.log(layout, layouts);\r\n if (firstChange) {\r\n setFirstChange(false);\r\n return;\r\n }\r\n setLayouts(changedLayouts);\r\n UpdatePlaceholderDimensions();\r\n props.onLayoutChange(changedLayouts)\r\n }\r\n\r\n function deletePanel(id) {\r\n console.log('deletePanel(id)', id)\r\n var newLayouts = { lg: layouts.lg.filter(e => e.i != id) }\r\n\r\n setLayouts(newLayouts);\r\n\r\n var newWidgets = { lg: widgets.lg.filter(e => e.key != id) }\r\n setWidgets(newWidgets);\r\n props.onLayoutChange(newLayouts)\r\n };\r\n\r\n function editWidget(widget: ReactWidgetPM) {\r\n widget.ChangeSetOp = 'Update';\r\n props.openEditWidget(widget);\r\n };\r\n\r\n\r\n function UpdatePlaceholderDimensions() {\r\n console.log('UpdatePlaceholderDimensions', layouts)\r\n var gridLayout = document.getElementsByClassName('react-grid-layout')\r\n if (!gridLayout)\r\n return;\r\n const gridElementHeight = gridLayout[0]?.clientHeight;\r\n\r\n let newPlaceholderRows = Math.floor(gridElementHeight / layoutGridProps.rowHeight);\r\n newPlaceholderRows = newPlaceholderRows < minimumPlaceholderRowsCount ? minimumPlaceholderRowsCount : newPlaceholderRows;\r\n setplaceholderRowsArray(Array.from({ length: newPlaceholderRows }).fill(null));\r\n }\r\n return (<div className=\"dl-full-hight\">\r\n <div className=\"dl-box\">\r\n {/* <div className=\"dl-row dl-header\">\r\n {renderPageHeader()}\r\n </div> */}\r\n <div className=\"dl-row dl-content\">\r\n <div className=\"dl-grid-container\">\r\n <div className=\"dl-grid dl-grid--bordered\">\r\n {props.editMode ? placeholderRowsArray.map((e, i) =>\r\n array12.map((e, i) => (\r\n <div key={i}\r\n style={{\r\n height: layoutGridProps.rowHeight,\r\n }}\r\n ></div>\r\n ))\r\n ) : null}\r\n </div>\r\n\r\n\r\n <ResponsiveReactGridLayout\r\n {...layoutGridProps}\r\n layouts={layouts}\r\n compactType=\"vertical\"\r\n isDraggable={isInEditMode}\r\n isResizable={isInEditMode}\r\n onWidthChange={() => UpdatePlaceholderDimensions()}\r\n onLayoutChange={(layout, layouts) =>\r\n onLayoutChange(layout, layouts)\r\n }\r\n >\r\n {widgets.lg.map((widget) =>\r\n\r\n <div key={widget.Layout?.i}>\r\n <WidgetCard\r\n isInEditMode={isInEditMode}\r\n key={widget.Layout?.i}\r\n widget={widget}\r\n el={widget}\r\n dateFilter={dateFilter}\r\n editBtnClicked={editWidget}\r\n deleteBtnClicked={deletePanel}\r\n />\r\n </div>\r\n )}\r\n </ResponsiveReactGridLayout>\r\n </div>\r\n\r\n </div>\r\n {/* <div className=\"dl-row dl-footer\">\r\n <p><b>footer</b> (fixed height)</p>\r\n </div> */}\r\n </div>\r\n {/* {renderNewWidgetDialog()} */}\r\n\r\n\r\n\r\n\r\n\r\n </div>);\r\n\r\n}\r\n\r\n\r\nexport const layoutGridProps = {\r\n rowHeight: 50,\r\n className: \"layout\",\r\n cols: { lg: 12, md: 6, sm: 2, xs: 1, xxs: 1 },\r\n useCSSTransforms: true,\r\n}\r\n\r\n\r\n\r\n\r\nexport const WidgetTypes = [\r\n { Name: \"Filter\", Disabled: true },\r\n { Name: \"Chart\", Disabled: false },\r\n { Name: \"Data Table\", Disabled: true },\r\n { Name: \"Pivot Table\", Disabled: true },\r\n { Name: \"KPI\", Disabled: true },\r\n { Name: \"Gauge\", Disabled: true },\r\n];\r\nexport const widgetComponents = [\r\n { type: \"Bar\", component: BarChartComponent },\r\n { type: \"Column\", component: ColumnChartComponent },\r\n { type: \"Pie\", component: PieChartComponent },\r\n { type: \"Mixed\", component: MixedChartComponent },\r\n { type: \"Timeline\", component: TimelineChartComponent },\r\n { type: \"Candle\", component: CandleChartComponent },\r\n { type: \"Area\", component: AreaChartComponent },\r\n];\r\n\r\n\r\nexport default DashboardDesigner;\r\n","import axios from \"axios\";\r\nimport { ApiQueryFilters } from \"../common/data-contracts/ApiQueryFilter\";\r\nimport { ReactDashboardPM } from \"../types/Dashboard\";\r\nimport { ApiServices } from \"./ApiServices\";\r\nimport { Tools } from './tools';\r\n\r\n\r\nexport class DashBoardService{ \r\n _ApiServices:ApiServices;\r\n tableName = 'DashBoard';\r\n constructor(){\r\n this._ApiServices = new ApiServices();\r\n }\r\n \r\n\r\n getDataByFilters(filters: ApiQueryFilters) {\r\n return this._ApiServices.getByFilters<ReactDashboardPM>(`/api/${this.tableName}Views/getbyfilters?`,filters);\r\n }\r\n\r\n add(data:ReactDashboardPM){\r\n return this._ApiServices.post(`/api/DashBoards`,data);\r\n }\r\n \r\n}","import axios from \"axios\";\r\nimport { ApiQueryFilters } from \"../common/data-contracts/ApiQueryFilter\";\r\nimport { ReactDashboardPM } from \"../types/Dashboard\";\r\nimport { WidgetType } from \"../types/WidgetType\";\r\nimport { ApiServices } from \"./ApiServices\";\r\nimport { Tools } from './tools';\r\n\r\n\r\nexport class WidgetTypeListService{ \r\n _ApiServices:ApiServices;\r\n\r\n constructor(){\r\n this._ApiServices = new ApiServices();\r\n }\r\n \r\n\r\n getDataByFilters(filters: ApiQueryFilters) {\r\n return this._ApiServices.getByFilters<WidgetType>(`/api/WidgetTypeViews/getbyfilters?`,filters);\r\n }\r\n\r\n getAll() {\r\n return this._ApiServices.get<WidgetType[]>(`/api/WidgetTypeViews/getall`);\r\n }\r\n\r\n \r\n}","export function deepClone (obj){\r\n return JSON.parse(JSON.stringify(obj))\r\n}","import * as React from 'react'\r\nimport { Card } from 'primereact/card';\r\nimport { Button } from \"primereact/button\";\r\nimport DashboardDesigner, { layoutGridProps } from './features/Dashboard/DashboardDesigner'\r\nimport \"./styles.module.css\"\r\nimport { Dropdown } from 'primereact/dropdown';\r\nimport { createRef, useEffect, useRef, useState } from \"react\";\r\nimport { DashBoardService } from './services/DashBoardService';\r\nimport { ApiQueryFilters } from './common/data-contracts/ApiQueryFilter';\r\nimport { ReactDashboardPM } from './types/Dashboard';\r\nimport { Dialog } from 'primereact/dialog';\r\nimport DashboardDialogComponent from './features/Dashboard/dashboard-dialog/dashboard-dialog-component';\r\nimport { Session } from './services/session';\r\nimport { WidgetTypeListService } from './services/WidgetTypeListService';\r\nimport { WidgetType } from './types/WidgetType';\r\nimport { ReactWidgetPM } from './types/widget';\r\nimport { OverlayPanel } from 'primereact/overlaypanel';\r\nimport { Ripple } from 'primereact/ripple';\r\nimport { DashboardDataBinding } from './types/DashboardDataBinding';\r\nimport { Layout, Layouts } from 'react-grid-layout';\r\nimport { v4 as uuidv4 } from 'uuid';\r\nimport { deepClone } from './services/clone';\r\n\r\ntype DashboardProps = {\r\n token: string,\r\n tenant: number,\r\n userId: string,\r\n dataBinding: DashboardDataBinding,\r\n openAddEditWidget: (widget: ReactWidgetPM | undefined) => void,\r\n openAddEditDashboard: (dashboard: ReactDashboardPM | undefined) => void,\r\n onChangeDashboard: (dashboard: ReactDashboardPM | undefined) => void,\r\n onSaveDashboard: (dashboard: ReactDashboardPM | undefined) => void,\r\n};\r\nconst Dashboard = (props: DashboardProps) => {\r\n const newWidgetWidth = 3;\r\n const newWidgetHeight = 5;\r\n\r\n const [dashbords, setDashbords] = useState<ReactDashboardPM[]>([]);\r\n const [currentDashbord, setCurrentDashbord] = useState<ReactDashboardPM | undefined>(undefined);\r\n const [beforEditDashbord, setBeforEditDashbord] = useState<ReactDashboardPM | undefined>(undefined);\r\n const [hasChanges, setHasChanges] = useState(false);\r\n const [isInEditMode, setIsInEditMode] = useState<boolean>(false);\r\n const [WidgetTypes, setWidgetTypes] = useState<WidgetType[]>();\r\n const [layouts, setLayouts] = useState<{ lg: ReactWidgetPM[] }>({ lg: [] });\r\n const [cancelConfirmDialog, setCancelConfirmDialog] = useState(false);\r\n const dashboardMoreButtonToggle = createRef<OverlayPanel>();\r\n const dashboardService = new DashBoardService();\r\n const widgetTypeListService = new WidgetTypeListService();\r\n useEffect(() => {\r\n getWidgetTypes();\r\n\r\n props.dataBinding.onGetDashboard.subscribe(e => {\r\n console.log('onGetDashboard.subscribe', e)\r\n setCurrentDashbord(e);\r\n applyLayouts(e);\r\n })\r\n props.dataBinding.onGetAllDashboards.subscribe(e => {\r\n console.log('onGetAllDashboard.subscribe', e)\r\n\r\n setDashbords(e);\r\n });\r\n\r\n props.dataBinding.onAddUpdateWidget.subscribe(isUpdated => {\r\n if (!isUpdated)\r\n return;\r\n setHasChanges(true);\r\n });\r\n\r\n }, [])\r\n\r\n Session.CurrentUserId = props.userId;\r\n Session.Tenant = props.tenant;\r\n Session.Token = props.token;\r\n if (props?.token?.length > 0)\r\n localStorage.setItem(\"token\", props?.token);\r\n\r\n\r\n const getWidgetTypes = () => {\r\n widgetTypeListService.getAll().then(data => {\r\n setWidgetTypes(data.data);\r\n });\r\n }\r\n const EditDashBoard = () => {\r\n props.openAddEditDashboard(currentDashbord);\r\n dashboardMoreButtonToggle?.current?.hide();\r\n\r\n }\r\n const addWidget = (widgetCode) => {\r\n var position = EvaluateNewWidgetPosition();\r\n props.openAddEditWidget({ TypeCode: widgetCode, StartPotistion: `${position.x},${position.y}`, EndPosition: `${position.w},${position.h}`,ChangeSetOp:'Insert' } as ReactWidgetPM);\r\n\r\n }\r\n const EvaluateNewWidgetPosition = () => {\r\n let widgetYPosition = 0;\r\n let widgetXPosition = 0;\r\n let layout = layouts[\"lg\"].map(e => e.Layout);\r\n const maxY = layout.reduce((max, widget) => {\r\n if (widget && widget.y > max) max = widget.y;\r\n return max;\r\n }, 0);\r\n\r\n for (let y = 0; y <= maxY; y++) {\r\n const widgetsRow = layout.filter(d => d?.y == y);\r\n const lastWidgetStartXPosition = Math.max.apply(Math, widgetsRow.map(a => a?.x));\r\n const lastWidget: any = widgetsRow.find(a => a?.x == lastWidgetStartXPosition);\r\n if (lastWidget) {\r\n const lastWidgetEndXPosition = lastWidgetStartXPosition + lastWidget.w;\r\n const availableHorizontalSlots = layoutGridProps.cols.lg - lastWidgetEndXPosition;\r\n if (availableHorizontalSlots >= newWidgetWidth) {\r\n widgetYPosition = y;\r\n widgetXPosition = lastWidgetEndXPosition;\r\n return { x: widgetXPosition, y: widgetYPosition, w: newWidgetWidth, h: newWidgetHeight };\r\n\r\n } else {\r\n widgetYPosition = y + 1;\r\n }\r\n } else {\r\n widgetYPosition = y + 1;\r\n }\r\n }\r\n\r\n return { x: widgetXPosition, y: widgetYPosition, w: newWidgetWidth, h: newWidgetHeight };\r\n }\r\n const editLayout = () => {\r\n setIsInEditMode(true)\r\n dashboardMoreButtonToggle?.current?.hide();\r\n\r\n setBeforEditDashbord(deepClone(currentDashbord));\r\n }\r\n const save = () => {\r\n setIsInEditMode(false)\r\n console.log('onSaveDashboard > ', currentDashbord)\r\n props.onSaveDashboard(currentDashbord);\r\n onHide();\r\n setHasChanges(false);\r\n }\r\n\r\n const cancelSave = () => {\r\n if (!hasChanges) {\r\n setIsInEditMode(false);\r\n setHasChanges(false);\r\n } else {\r\n setCancelConfirmDialog(true);\r\n }\r\n\r\n\r\n }\r\n\r\n const dontSave = () => {\r\n setHasChanges(false);\r\n setIsInEditMode(false);\r\n props.dataBinding.onGetDashboard.next(beforEditDashbord);\r\n setCancelConfirmDialog(false);\r\n }\r\n const changeDashboard = (event) => {\r\n if (event.value == currentDashbord?.Id)\r\n return;\r\n var dasboard = dashbords.find(e => e.Id == event.value);\r\n\r\n props.onChangeDashboard(dasboard);\r\n props.dataBinding.onGetDashboard.next(dasboard);\r\n\r\n }\r\n\r\n const applyLayouts = (dashbord: ReactDashboardPM | undefined) => {\r\n if ((!dashbord?.Widgets))\r\n return;\r\n var layout: { lg: ReactWidgetPM[] } = { lg: [] };\r\n dashbord?.Widgets.map(widget => {\r\n if (widget.Id && widget.Id.length > 0)\r\n widget.key = widget.Id;\r\n else\r\n widget.key = uuidv4();\r\n widget.Layout = {\r\n minH: 5,\r\n minW: 3,\r\n i: widget.key,\r\n w: +widget.EndPosition.split(',')[0],\r\n h: +widget.EndPosition.split(',')[1],\r\n x: +widget.StartPotistion.split(',')[0],\r\n y: +widget.StartPotistion.split(',')[1],\r\n }\r\n layout.lg.push(widget\r\n\r\n )\r\n });\r\n console.log('setLayouts -- > ', layout)\r\n setLayouts(layout);\r\n\r\n }\r\n const updateWidgets = (layouts: Layouts) => {\r\n console.log('updateWidgets = (layouts:Layouts', layouts)\r\n var layoutsDic: { [key: string]: Layout } = {};\r\n Object.keys(layouts).forEach(sizeType => {\r\n if (layouts[sizeType].length > 0) {\r\n layouts[sizeType].map(layout => {\r\n layoutsDic[layout.i] = layout;\r\n })\r\n return;\r\n }\r\n })\r\n var widgets: ReactWidgetPM[] = [];\r\n currentDashbord?.Widgets.forEach(widget => {\r\n if (layoutsDic[widget.key]) {\r\n widget.StartPotistion = `${layoutsDic[widget.key].x},${layoutsDic[widget.key].y}`;\r\n widget.EndPosition = `${layoutsDic[widget.key].w},${layoutsDic[widget.key].h}`;\r\n widgets.push(widget)\r\n }\r\n\r\n });\r\n if (currentDashbord) {\r\n currentDashbord.Widgets = widgets;\r\n }\r\n console.log('after update widget', currentDashbord)\r\n setHasChanges(true);\r\n }\r\n\r\n const renderCancelConfirmDialogFooter = () => {\r\n return (\r\n <div className='dl-flex-row-end' >\r\n <Button label=\"Cancel\" onClick={() => onHide()} className=\"p-button-secondary\" />\r\n <Button label=\"Don't Save\" onClick={() => dontSave()} className=\"p-button-secondary\" />\r\n <Button label=\"Save\" onClick={() => save()} autoFocus className=\"p-button-warning\" />\r\n </div>\r\n );\r\n }\r\n const onHide = () => {\r\n setCancelConfirmDialog(false)\r\n }\r\n return (\r\n <div className='dl-full-hight'>\r\n\r\n <div className='dl-dashboard-header dl-card'>\r\n <div className='dl-flex-row dl-custom-btn'>\r\n <div className='dl-title-1'>{currentDashbord?.Name}</div>\r\n <Button\r\n icon=\"pi pi-ellipsis-v\"\r\n onClick={(e) => dashboardMoreButtonToggle?.current?.toggle(e)}\r\n className=\"p-button p-button-icon-only p-button-rounded p-button-text\"\r\n >\r\n <Ripple />\r\n </Button>\r\n <OverlayPanel ref={dashboardMoreButtonToggle} className=\"buttons-overlay\">\r\n <div className=\"buttons-list\">\r\n <div onClick={() => EditDashBoard()}>Edit</div>\r\n <div onClick={editLayout}>Edit Layout</div>\r\n\r\n </div>\r\n </OverlayPanel >\r\n </div>\r\n <div className='dl-flex-row'>\r\n {!isInEditMode ?\r\n <div className='dl-flex-row'>\r\n\r\n\r\n <div style={{ width: \"161px\" }}>\r\n <Dropdown\r\n value={[]}\r\n options={dashbords}\r\n optionValue=\"Id\"\r\n optionLabel=\"Name\"\r\n onChange={changeDashboard}\r\n placeholder=\"Choose Dashboard\"\r\n optionDisabled={(option) => {\r\n return option?.Disabled;\r\n }}\r\n scrollHeight=\"300px\"\r\n style={{ width: '100%' }}\r\n />\r\n </div>\r\n <Button icon=\"pi pi-plus\" onClick={() => props.openAddEditDashboard(undefined)}\r\n className=\"dl-dashboard-add p-button-rounded p-button-success\" />\r\n </div>\r\n : null}\r\n {/* <DashboardDialogComponent display={displayAddDashboard} onClose={onDashboardDialogClose}></DashboardDialogComponent> */}\r\n\r\n\r\n\r\n {isInEditMode ?\r\n <div className='dl-flex-row'>\r\n\r\n <Button\r\n label=\"Cancel\"\r\n className=\"p-button-secondary dl-m-r-s dl-m-t-8\"\r\n onClick={cancelSave}\r\n />\r\n\r\n <Dialog header=\"Unsaved Changes\" visible={cancelConfirmDialog} style={{ width: '50vw' }} footer={renderCancelConfirmDialogFooter()} onHide={onHide}>\r\n <p>This Dashboard has unsaved changes do you want to save it?</p>\r\n </Dialog>\r\n\r\n <Button\r\n label=\"Save\"\r\n form=\"frm\"\r\n // icon=\"pi pi-check\"\r\n onClick={save}\r\n autoFocus\r\n className={hasChanges ? \"p-button-warning dl-m-t-8\" : \"p-button-secondary dl-m-t-8\"}\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 dataBinding={props.dataBinding} editMode={isInEditMode} onLayoutChange={updateWidgets} dashboardLayouts={layouts} openEditWidget={(widget: ReactWidgetPM) => props.openAddEditWidget(widget)} ></DashboardDesigner>\r\n </div>\r\n </div >\r\n\r\n )\r\n}\r\nexport default Dashboard;\r\n\r\n"],"names":["Tools","GetLogitudeURL","logitude_url","location","href","replace","indexOf","urlArr","split","url","substring","lastIndexOf","length","ApiServices","_apiUrl","getByFilters","api","filters","token","getTokenFromStorage","apiURL","ConcatFiltersToURL","axios","get","headers","post","date","window","localStorage","getItem","urlparameters","mykeys","Object","keys","addtionalFiltersValues","i","propName","propValue","ignoreFilter","concat","encodeURIComponent","JSON","stringify","DashboardAnalyticsService","_ApiServices","getData","widget","controller","ApexChart","props","useState","series","options","args","serArgs","useEffect","dashboardAnalyticsService","then","result","data","getChartOptions","lineOptoins","values","categories","s","SeriesMeasureVulues","map","z","Value","e","Label","chart","height","type","zoom","enabled","dataLabels","stroke","curve","title","text","align","grid","row","colors","opacity","xaxis","barOptoins","plotOptions","bar","horizontal","position","offsetX","style","fontSize","show","width","tooltip","shared","intersect","pieOptoins","labels","donutOptoins","responsive","breakpoint","legend","offsetY","TypeCode","React","ReactApexChart","WidgetCard","state","moreBtnToggle","useRef","loading","setLoading","setTimeout","className","key","el","Title","isInEditMode","Button","icon","onClick","current","toggle","OverlayPanel","ref","editBtnClicked","deleteBtnClicked","ResponsiveReactGridLayout","WidthProvider","Responsive","DashboardDesigner","array12","Array","from","fill","minimumPlaceholderRowsCount","lg","layouts","setLayouts","placeholderRowsArray","setplaceholderRowsArray","firstChange","setFirstChange","undefined","dateFilter","setisInEditMode","widgets","setWidgets","dataBinding","onAddUpdateWidget","subscribe","createLayout","dashboardLayouts","console","log","layout","w","Layout","forEach","push","editMode","onLayoutChange","changedLayouts","UpdatePlaceholderDimensions","deletePanel","id","newLayouts","filter","newWidgets","editWidget","ChangeSetOp","openEditWidget","gridLayout","document","getElementsByClassName","gridElementHeight","clientHeight","newPlaceholderRows","Math","floor","layoutGridProps","rowHeight","compactType","isDraggable","isResizable","onWidthChange","cols","md","sm","xs","xxs","useCSSTransforms","DashBoardService","getDataByFilters","tableName","add","WidgetTypeListService","getAll","deepClone","obj","parse","Dashboard","newWidgetWidth","newWidgetHeight","dashbords","setDashbords","currentDashbord","setCurrentDashbord","beforEditDashbord","setBeforEditDashbord","hasChanges","setHasChanges","setIsInEditMode","WidgetTypes","setWidgetTypes","cancelConfirmDialog","setCancelConfirmDialog","dashboardMoreButtonToggle","createRef","dashboardService","widgetTypeListService","getWidgetTypes","onGetDashboard","applyLayouts","onGetAllDashboards","isUpdated","setItem","EditDashBoard","openAddEditDashboard","hide","addWidget","widgetCode","EvaluateNewWidgetPosition","openAddEditWidget","StartPotistion","x","y","EndPosition","h","widgetYPosition","widgetXPosition","maxY","reduce","max","widgetsRow","d","lastWidgetStartXPosition","apply","a","lastWidget","find","lastWidgetEndXPosition","availableHorizontalSlots","editLayout","save","onSaveDashboard","onHide","cancelSave","dontSave","next","changeDashboard","event","value","Id","dasboard","onChangeDashboard","dashbord","Widgets","uuidv4","minH","minW","updateWidgets","layoutsDic","sizeType","renderCancelConfirmDialogFooter","label","autoFocus","Name","Ripple","Dropdown","optionValue","optionLabel","onChange","placeholder","optionDisabled","option","Disabled","scrollHeight","Dialog","header","visible","footer","form","marginLeft"],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "logitude-dashboard-library",
3
- "version": "1.2.63",
3
+ "version": "1.2.67",
4
4
  "description": "Made with create-react-library",
5
5
  "author": "logitude",
6
6
  "license": "MIT",