logitude-dashboard-library 3.2.13 → 3.2.14
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.js +7 -0
- package/dist/index.js.map +1 -1
- package/dist/index.modern.js +7 -0
- package/dist/index.modern.js.map +1 -1
- package/package.json +1 -1
package/dist/index.modern.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.modern.js","sources":["../src/services/session.ts","../src/services/tools.ts","../src/services/ApiServices.ts","../src/services/DashboardAnalyticsService.ts","../src/Utils/DateHelper.tsx","../src/Utils/General.tsx","../src/features/Dashboard/ChartsComponents/CustomCharts/KpiChart.tsx","../src/features/Dashboard/ChartsComponents/CustomCharts/TableChart.tsx","../src/features/Dashboard/ChartsComponents/CustomCharts/CustomChart.tsx","../src/features/Dashboard/ChartsComponents/FusionCharts/FusionChartTooltip.tsx","../src/features/Dashboard/ChartsComponents/FusionCharts/FusionChartDataSoruceBuilder.tsx","../src/features/Dashboard/ChartsComponents/FusionCharts/FusionChartObjectBuilder.tsx","../src/features/Dashboard/ChartsComponents/FusionCharts/FusionChartHelper.tsx","../src/features/Dashboard/ChartsComponents/FusionCharts/FusionColors.tsx","../src/features/Dashboard/ChartsComponents/FusionCharts/FusionChartObjectHelper.tsx","../src/features/Dashboard/ChartsComponents/FusionCharts/FusionChart.tsx","../src/features/Dashboard/ChartsComponents/FusionCharts/GaugeChart.tsx","../src/features/Dashboard/WidgetCard.tsx","../src/services/clone.ts","../src/features/Dashboard/DashboardDesigner.tsx","../src/index.tsx"],"sourcesContent":["export class Session {\r\n public static CurrentUserId: string;\r\n public static Tenant: number;\r\n public static Token: string;\r\n public static NumberFormatCode: string | null | undefined;\r\n}","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\r\n public static Map(from: any, to: any) {\r\n if (!from)\r\n return;\r\n if (!to)\r\n to = {};\r\n var keys = Object.keys(from);\r\n for (const k of keys) {\r\n if(from[k]){\r\n to[k] = from[k];\r\n }\r\n }\r\n }\r\n}","import axios from \"axios\";\r\nimport { ApiQueryFilters } from \"../common/data-contracts/ApiQueryFilter\";\r\nimport { APIResult } from \"../types/APIResult\";\r\nimport { Session } from \"./session\";\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 \r\n post<T>(api,date, requestSignal : any= undefined){\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 }, signal: requestSignal});\r\n }\r\n\r\n getTokenFromStorage(){\r\n return Session.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\nimport { KpiChartData } from \"../types/KpiChart\";\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, signal: any = undefined) {\r\n return this._ApiServices.post<SeriesMeasure[]>(`/api/${this.controller}/PostGetDataAnalytic`,widget, signal);\r\n }\r\n\r\n getKpiData(widget: ReactWidgetPM) {\r\n return this._ApiServices.post<KpiChartData>(`/api/${this.controller}/PostGetKpiData`,widget);\r\n }\r\n\r\n getTableData(widget: ReactWidgetPM) {\r\n return this._ApiServices.post<any>(`/api/${this.controller}/PostGetTableData`,widget);\r\n }\r\n \r\n getGaugeData(widget: ReactWidgetPM, signal: any = undefined) {\r\n return this._ApiServices.post<any>(`/api/${this.controller}/PostGetGaugeData`,widget, signal);\r\n }\r\n \r\n getObjectTableNameByWidgetEntityId(entityId: string | undefined) {\r\n return this._ApiServices.get<any>(`/api/analyticsfactsmetadatas/getsingle?id=` + entityId);\r\n }\r\n}","import moment from \"moment\";\r\nimport { ReactWidgetPM } from \"../types/widget\";\r\n\r\nconst DateGroupCodes = {\r\n Full_Date:'Full Date',\r\n Month: 'Month',\r\n Quarter: 'Quarter',\r\n Year: 'Year',\r\n Month_Year: 'Month & Year',\r\n Quarter_Year: 'Quarter & Year',\r\n}\r\n\r\nconst getDateFormat = (label: any, _format: string) => {\r\n if(!label) return label;\r\n\r\n let _date = moment(label);\r\n if(!_date || !_date.isValid()) return label;\r\n\r\n return _date.format(_format)\r\n}\r\n\r\nconst getQuarterYearFormat = (label: string) => {\r\n if(!label) return label;\r\n\r\n if(label.includes(\"/\")) {\r\n let result = label.split(\"/\");\r\n let quarterVal = result && result[1] ? result[1] : \"\";\r\n let yearVal = result && result[0] ? result[0] : \"\";\r\n\r\n return `${quarterVal} ${yearVal}`\r\n }\r\n\r\n return label;\r\n}\r\n\r\nconst getLabelFormatByDateGroupType = (label: string, widget: ReactWidgetPM, isSecondGrouping: boolean = false)=> {\r\n\r\n if(!widget) return label;\r\n\r\n let groupFieldDataType = isSecondGrouping ? widget.SecondaryDateGroupCode : widget.DateGroupCode;\r\n if(!groupFieldDataType) return label;\r\n\r\n switch(groupFieldDataType){\r\n case DateGroupCodes.Full_Date:\r\n return getDateFormat(label, \"DD MMM YYYY\");\r\n case DateGroupCodes.Month:\r\n return getDateFormat(label, \"MMM\");\r\n case DateGroupCodes.Quarter:\r\n return label;\r\n case DateGroupCodes.Year:\r\n return getDateFormat(label, \"YYYY\");\r\n case DateGroupCodes.Month_Year:\r\n return getDateFormat(label, \"MMM YYYY\");\r\n case DateGroupCodes.Quarter_Year:\r\n return getQuarterYearFormat(label);\r\n\r\n default:\r\n return label;\r\n }\r\n}\r\n\r\nconst getTodayDates = (format: string =\"YYYYMMDD000000\") => {\r\n let dateValues: any = [];\r\n let fromDate = moment().format(format);\r\n let toDate = moment().format(format);\r\n\r\n dateValues.push(fromDate);\r\n dateValues.push(toDate);\r\n\r\n return dateValues;\r\n}\r\n\r\nconst getYesterdayDates = (format: string =\"YYYYMMDD000000\") => {\r\n let dateValues: any = [];\r\n let fromDate = moment().subtract(1, 'days').format(format);\r\n let toDate = moment().subtract(1, 'days').format(format);\r\n\r\n dateValues.push(fromDate);\r\n dateValues.push(toDate);\r\n\r\n return dateValues;\r\n}\r\n\r\nconst getTomorrowDates = (format: string =\"YYYYMMDD000000\") => {\r\n let dateValues: any = [];\r\n let fromDate = moment().add(1, 'days').format(format);\r\n let toDate = moment().add(1, 'days').format(format);\r\n\r\n dateValues.push(fromDate);\r\n dateValues.push(toDate);\r\n\r\n return dateValues;\r\n}\r\n\r\nconst getCurrentWeekDates = (format: string =\"YYYYMMDD000000\") => {\r\n let dateValues: any = [];\r\n let fromDate = moment().startOf('week').format(format);\r\n let toDate = moment().endOf('week').format(format);\r\n\r\n dateValues.push(fromDate);\r\n dateValues.push(toDate);\r\n\r\n return dateValues;\r\n}\r\n\r\nconst getCurrentMonthDates = (format: string =\"YYYYMMDD000000\") => {\r\n let dateValues: any = [];\r\n let fromDate = moment().startOf('month').format(format);\r\n let toDate = moment().endOf('month').format(format);\r\n\r\n dateValues.push(fromDate);\r\n dateValues.push(toDate);\r\n\r\n return dateValues;\r\n}\r\n\r\nconst getPreviousMonthDates = (format: string =\"YYYYMMDD000000\") => {\r\n let dateValues: any = [];\r\n let fromDate = moment().subtract(1, 'months').startOf('month').format(format);\r\n let toDate = moment().subtract(1, 'months').endOf('month').format(format);\r\n\r\n dateValues.push(fromDate);\r\n dateValues.push(toDate);\r\n\r\n return dateValues;\r\n}\r\n\r\nconst getCurrentMonthToDateDates = (format: string =\"YYYYMMDD000000\") => {\r\n let dateValues: any = [];\r\n let fromDate = moment().startOf('month').format(format);\r\n let toDate = moment().format(format);\r\n\r\n dateValues.push(fromDate);\r\n dateValues.push(toDate);\r\n\r\n return dateValues;\r\n}\r\n\r\nconst getPreviousMonthToDateDates = (format: string =\"YYYYMMDD000000\") => {\r\n let dateValues: any = [];\r\n let fromDate = moment().subtract(1, 'months').startOf('month').format(format);\r\n let toDate = moment().format(format);\r\n\r\n dateValues.push(fromDate);\r\n dateValues.push(toDate);\r\n\r\n return dateValues;\r\n}\r\n\r\nconst getCurrentQuarterDates = (format: string =\"YYYYMMDD000000\") => {\r\n let dateValues: any = [];\r\n let fromDate = moment().startOf('quarter').format(format);\r\n let toDate = moment().endOf('quarter').format(format);\r\n\r\n dateValues.push(fromDate);\r\n dateValues.push(toDate);\r\n\r\n return dateValues;\r\n}\r\n\r\nconst getCurrentYearDates = (format: string =\"YYYYMMDD000000\") => {\r\n let dateValues: any = [];\r\n let fromDate = moment().startOf('year').format(format);\r\n let toDate = moment().endOf('year').format(format);\r\n\r\n dateValues.push(fromDate);\r\n dateValues.push(toDate);\r\n\r\n return dateValues;\r\n}\r\n\r\nconst getPreviousYearDates = (format: string =\"YYYYMMDD000000\") => {\r\n let dateValues: any = [];\r\n let fromDate = moment().subtract(1, 'years').startOf('year').format(format);\r\n let toDate = moment().subtract(1, 'years').endOf('year').format(format);\r\n\r\n dateValues.push(fromDate);\r\n dateValues.push(toDate);\r\n\r\n return dateValues;\r\n}\r\n\r\nconst getCurrentYearToDateDates = (format: string =\"YYYYMMDD000000\") => {\r\n let dateValues: any = [];\r\n let fromDate = moment().startOf('year').format(format);\r\n let toDate = moment().format(format);\r\n\r\n dateValues.push(fromDate);\r\n dateValues.push(toDate);\r\n\r\n return dateValues;\r\n}\r\n\r\nconst getPreviousYearToDateDates = (format: string =\"YYYYMMDD000000\") => {\r\n let dateValues: any = [];\r\n let fromDate = moment().subtract(1, 'years').startOf('year').format(format);\r\n let toDate = moment().format(format);\r\n\r\n dateValues.push(fromDate);\r\n dateValues.push(toDate);\r\n\r\n return dateValues;\r\n}\r\n\r\nconst getPreviousQuarterDates = (format: string =\"YYYYMMDD000000\") => {\r\n let dateValues: any = [];\r\n let fromDate = moment().subtract(1, 'quarters').startOf('quarter').format(format);\r\n let toDate = moment().subtract(1, 'quarters').endOf('quarter').format(format);\r\n\r\n dateValues.push(fromDate);\r\n dateValues.push(toDate);\r\n\r\n return dateValues;\r\n}\r\n\r\nconst getCurrentQuarterToDateDates = (format: string =\"YYYYMMDD000000\") => {\r\n let dateValues: any = [];\r\n let fromDate = moment().startOf('quarter').format(format);\r\n let toDate = moment().format(format);\r\n\r\n dateValues.push(fromDate);\r\n dateValues.push(toDate);\r\n\r\n return dateValues;\r\n}\r\n\r\nconst getPreviousQuarterToDateDates = (format: string =\"YYYYMMDD000000\") => {\r\n let dateValues: any = [];\r\n let fromDate = moment().subtract(1, 'quarters').startOf('quarter').format(format);\r\n let toDate = moment().format(format);\r\n\r\n dateValues.push(fromDate);\r\n dateValues.push(toDate);\r\n\r\n return dateValues;\r\n}\r\n\r\nconst getLast7DaysDates = (format: string = \"YYYYMMDD000000\") => {\r\n let dateValues: any = [];\r\n let fromDate = moment().subtract(6, 'days').format(format);\r\n let toDate = moment().format(format);\r\n\r\n dateValues.push(fromDate);\r\n dateValues.push(toDate);\r\n\r\n return dateValues;\r\n}\r\nconst getLast30DaysDates = (format: string = \"YYYYMMDD000000\") => {\r\n let dateValues: any = [];\r\n let fromDate = moment().subtract(29, 'days').format(format);\r\n let toDate = moment().format(format);\r\n\r\n dateValues.push(fromDate);\r\n dateValues.push(toDate);\r\n\r\n return dateValues;\r\n}\r\n\r\nconst getDateRangesByCode = (code: string | null) => {\r\n let result = {\r\n fromDate: null,\r\n toDate: null\r\n }\r\n\r\n if(!code) {\r\n return {\r\n fromDate: getTodayDates()[0],\r\n toDate: getTodayDates()[1]\r\n };\r\n }\r\n\r\n switch(code){\r\n case \"Current_Year\":\r\n result.fromDate = getCurrentYearDates()[0];\r\n result.toDate = getCurrentYearDates()[1];\r\n break;\r\n case \"Previous_Year\":\r\n result.fromDate = getPreviousYearDates()[0];\r\n result.toDate = getPreviousYearDates()[1];\r\n break;\r\n case \"Current_Year_To_Date\":\r\n result.fromDate = getCurrentYearToDateDates()[0];\r\n result.toDate = getCurrentYearToDateDates()[1];\r\n break;\r\n case \"Previous_Year_To_Date\":\r\n result.fromDate = getPreviousYearToDateDates()[0];\r\n result.toDate = getPreviousYearToDateDates()[1];\r\n break;\r\n\r\n case \"Current_Quarter\":\r\n result.fromDate = getCurrentQuarterDates()[0];\r\n result.toDate = getCurrentQuarterDates()[1];\r\n break;\r\n case \"Previous_Quarter\":\r\n result.fromDate = getPreviousQuarterDates()[0];\r\n result.toDate = getPreviousQuarterDates()[1];\r\n break;\r\n case \"Current_Quarter_To_Date\":\r\n result.fromDate = getCurrentQuarterToDateDates()[0];\r\n result.toDate = getCurrentQuarterToDateDates()[1];\r\n break;\r\n case \"Previous_Quarter_To_Date\":\r\n result.fromDate = getPreviousQuarterToDateDates()[0];\r\n result.toDate = getPreviousQuarterToDateDates()[1];\r\n break;\r\n\r\n case \"Current_Month\":\r\n result.fromDate = getCurrentMonthDates()[0];\r\n result.toDate = getCurrentMonthDates()[1];\r\n break;\r\n case \"Previous_Month\":\r\n result.fromDate = getPreviousMonthDates()[0];\r\n result.toDate = getPreviousMonthDates()[1];\r\n break;\r\n case \"Current_Month_To_Date\":\r\n result.fromDate = getCurrentMonthToDateDates()[0];\r\n result.toDate = getCurrentMonthToDateDates()[1];\r\n break;\r\n case \"Previous_Month_To_Date\":\r\n result.fromDate = getPreviousMonthToDateDates()[0];\r\n result.toDate = getPreviousMonthToDateDates()[1];\r\n break;\r\n\r\n case \"Today\":\r\n result.fromDate = getTodayDates()[0];\r\n result.toDate = getTodayDates()[1];\r\n break;\r\n case \"Yesterday\":\r\n result.fromDate = getYesterdayDates()[0];\r\n result.toDate = getYesterdayDates()[1];\r\n break;\r\n case \"Tomorrow\":\r\n result.fromDate = getTomorrowDates()[0];\r\n result.toDate = getTomorrowDates()[1];\r\n break;\r\n case \"Last 7 Days\":\r\n result.fromDate = getLast7DaysDates()[0];\r\n result.toDate = getLast7DaysDates()[1];\r\n break;\r\n case \"Last 30 Days\":\r\n result.fromDate = getLast30DaysDates()[0];\r\n result.toDate = getLast30DaysDates()[1];\r\n break;\r\n case \"This Week\":\r\n result.fromDate = getCurrentWeekDates()[0];\r\n result.toDate = getCurrentWeekDates()[1];\r\n break;\r\n default:\r\n break;\r\n }\r\n\r\n return result;\r\n}\r\nexport {\r\n getLabelFormatByDateGroupType,\r\n getDateRangesByCode\r\n}","import { Session } from \"../services/session\";\r\n\r\nconst isNullOrUndefined = (val: any) => {\r\n return val == null || val == undefined;\r\n}\r\n\r\nconst isNullOrUndefinedOrEmpty = (val: any) => {\r\n return val == null || val == undefined || val == \"\";\r\n}\r\n\r\nconst getGlobalNumberFormatting = () => {\r\n let numberFormatCode = Session.NumberFormatCode;\r\n \r\n let numberSeparatorSettings = {\r\n thousandsSeparator: \",\",\r\n decimalSeparator: \".\",\r\n }\r\n\r\n if (isNullOrUndefinedOrEmpty(numberFormatCode)) return numberSeparatorSettings;\r\n\r\n switch (numberFormatCode) {\r\n case \"CD\":\r\n numberSeparatorSettings.thousandsSeparator = \",\";\r\n numberSeparatorSettings.decimalSeparator = \".\";\r\n break;\r\n case \"DC\":\r\n numberSeparatorSettings.thousandsSeparator = \".\";\r\n numberSeparatorSettings.decimalSeparator = \",\";\r\n break;\r\n case \"AD\":\r\n numberSeparatorSettings.thousandsSeparator = \"'\";\r\n numberSeparatorSettings.decimalSeparator = \".\";\r\n break;\r\n default:\r\n numberSeparatorSettings.thousandsSeparator = \",\";\r\n numberSeparatorSettings.decimalSeparator = \".\";\r\n break;\r\n }\r\n\r\n return numberSeparatorSettings;\r\n}\r\n\r\nexport {\r\n isNullOrUndefined,\r\n isNullOrUndefinedOrEmpty,\r\n getGlobalNumberFormatting\r\n}","import { ProgressSpinner } from \"primereact/progressspinner\";\r\nimport React, { useEffect, useRef, useState } from \"react\";\r\nimport { DashboardAnalyticsService } from \"../../../../services/DashboardAnalyticsService\";\r\nimport { Session } from \"../../../../services/session\";\r\nimport { KpiChartData } from \"../../../../types/KpiChart\";\r\nimport { ReactWidgetPM } from \"../../../../types/widget\";\r\nimport { CustomChartProps } from \"./CustomChart\";\r\nimport { ReactComponent as RedWarningIcon } from \"../../../../assets/images/red-warning.svg\"\r\nimport { getDateRangesByCode } from \"../../../../Utils/DateHelper\";\r\nimport { isNullOrUndefined, isNullOrUndefinedOrEmpty } from \"../../../../Utils/General\";\r\nimport { v4 as uuidv4 } from 'uuid';\r\n\r\ntype KpiChartProps = {\r\n customChartProps: CustomChartProps;\r\n};\r\n\r\nexport type kPIComparisonSettingsProps = {\r\n\tPeriodFieldId: string | null;\r\n\tPeriodDateFilter: {\r\n\t\tFieldValue: string | null;\r\n\t\tFieldValue2: string | null;\r\n\t\tDatePickerTextFieldValue: string | null;\r\n\t\tDateTimeValueCode: string;\r\n\t\tDateGroupCode: string | null;\r\n\t\tOperator: string | null;\r\n\t};\r\n\tComparePeriodDateFilter: {\r\n\t\tFieldValue: string | null;\r\n\t\tFieldValue2: string | null;\r\n\t\tDatePickerTextFieldValue: string | null;\r\n\t\tDateTimeValueCode: string;\r\n\t\tDateGroupCode: string | null;\r\n\t\tOperator: string | null;\r\n\t};\r\n\tComparisonPeriodType: string | null;\r\n\tComparisonIndicator: boolean;\r\n\tComparisonIncrease: string | null;\r\n}\r\n\r\nconst KpiChart = (props: KpiChartProps) => {\r\n const [isLoading, setIsLoading] = useState<boolean>(true);\r\n const [error, setError] = useState<string>();\r\n const widget = useRef<ReactWidgetPM>();\r\n const [data, setData] = useState<KpiChartData>();\r\n const [isKPICustomSizeNeeded, setIsKPICustomSizeNeeded] = useState<boolean | undefined>(false);\r\n const [triggerId, setTriggerId] = useState(uuidv4());\r\n\r\n useEffect(() => {\r\n widget.current = props.customChartProps.widget;\r\n HandleKPICustomSize();\r\n RefreshData();\r\n\r\n props.customChartProps.dataBinding?.widgetUpdated.subscribe(updatedWidget => {\r\n if (updatedWidget?.key != widget.current?.key) return;\r\n widget.current = {...updatedWidget};\r\n setTriggerId(uuidv4());\r\n });\r\n }, [])\r\n\r\n useEffect(() => {\r\n HandleKPICustomSize();\r\n }, [props.customChartProps])\r\n\r\n const HandleKPICustomSize = () => {\r\n let _isPreviewModeActive = props.customChartProps && props.customChartProps.isPreviewModeActive;\r\n let _isKPICustomResizeNeeded = isKPICustomResizeNeeded();\r\n\r\n setIsKPICustomSizeNeeded(_isKPICustomResizeNeeded && !_isPreviewModeActive)\r\n }\r\n\r\n const calculateWidgetKPISettingsDates = () => {\r\n let _updatedWidget : any = { ...widget.current };\r\n\r\n if(_updatedWidget && _updatedWidget.KPIComparisonSettings && _updatedWidget.KPIComparisonSettings.length) {\r\n let kpiSettings : kPIComparisonSettingsProps = JSON.parse(_updatedWidget.KPIComparisonSettings);\r\n let isKPISettingsActivated = !isNullOrUndefinedOrEmpty(kpiSettings.PeriodFieldId);\r\n\r\n if(isKPISettingsActivated){\r\n let PeriodDateFilterDates = getDateRangesByCode(kpiSettings.PeriodDateFilter.DateTimeValueCode);\r\n let ComparePeriodDateFilterDates = kpiSettings.ComparisonPeriodType == 'Manually' ? getDateRangesByCode(kpiSettings.ComparePeriodDateFilter.DateTimeValueCode) : getDateRangesByCode(null);\r\n\r\n kpiSettings.PeriodDateFilter.FieldValue = PeriodDateFilterDates.fromDate;\r\n kpiSettings.PeriodDateFilter.FieldValue2 = PeriodDateFilterDates.toDate;\r\n\r\n kpiSettings.ComparePeriodDateFilter.FieldValue = ComparePeriodDateFilterDates.fromDate;\r\n kpiSettings.ComparePeriodDateFilter.FieldValue2 = ComparePeriodDateFilterDates.toDate;\r\n\r\n _updatedWidget.KPIComparisonSettings = JSON.stringify(kpiSettings);\r\n }\r\n\r\n return _updatedWidget;\r\n }\r\n\r\n return _updatedWidget;\r\n }\r\n\r\n const RefreshData = () => {\r\n if (Session.Tenant == 0) {\r\n const emptyData = {} as KpiChartData;\r\n emptyData.Value = 0;\r\n setData(emptyData);\r\n setIsLoading(false);\r\n return;\r\n }\r\n \r\n var dashboardAnalyticsService = new DashboardAnalyticsService();\r\n var postWidget: any = calculateWidgetKPISettingsDates();\r\n postWidget.onChange = undefined;\r\n \r\n dashboardAnalyticsService.getKpiData(postWidget as ReactWidgetPM).then(result => {\r\n setData(result.data);\r\n setIsLoading(false);\r\n }, error => {\r\n console.log('error', error);\r\n if (error?.response?.data?.ErrorMessage) setError(error?.response?.data?.ErrorMessage);\r\n else setError(error.message);\r\n setIsLoading(false);\r\n\r\n })\r\n }\r\n\r\n const kpiClick = () => {\r\n var measureFieldId;\r\n var currentWidgetMeasure = widget?.current?.WidgetMeasures![0];\r\n if (widget?.current?.WidgetMeasures) measureFieldId = widget?.current?.WidgetMeasures[0]?.MeasureFieldId;\r\n props.customChartProps.onSelectDataPoint({\r\n MeasureFieldId: measureFieldId,\r\n Widget: widget.current,\r\n MeasureCode : currentWidgetMeasure!.MeasureCode,\r\n Formula : currentWidgetMeasure!.Formula,\r\n GroupById: data?.GroupById\r\n });\r\n }\r\n\r\n const isComparisonIndicatorChecked = () => {\r\n let _kpiSettings = widget.current?.KPIComparisonSettings;\r\n\r\n if(_kpiSettings){\r\n let _kpiSettingsAsObj = JSON.parse(_kpiSettings);\r\n\r\n return !isNullOrUndefined(_kpiSettingsAsObj.ComparisonIndicator) ? _kpiSettingsAsObj.ComparisonIndicator : false;\r\n }\r\n\r\n return false;\r\n }\r\n\r\n function getRatioComponent(): React.ReactNode {\r\n if (!data?.CompareWithPrevious || !isComparisonIndicatorChecked()) return null;\r\n return (\r\n <div className={\"dl-kpi-ratio-container\"}>\r\n {getArrowComponent()}\r\n <div style={{\r\n fontSize: getKPIFormattingPropertyValue(\"PercentageFontSize\", \"px\")}} \r\n className={'dl-kpi-ratio-text'}>\r\n {data?.Ratio} %\r\n </div>\r\n </div>\r\n );\r\n }\r\n\r\n function getArrowComponent(): React.ReactNode {\r\n if (!data) return null;\r\n\r\n if (data?.Ratio == 0 || data.Value == data.ComparisonValue || ((data.Value == \"0\" || data.Value == 0) && (data.ComparisonValue == \"0\" || data.ComparisonValue == 0)))\r\n return (\r\n <div className=\"dl-kpi-arrow-container\">\r\n <span className={\"dl-kpi-arrow-pic dl-kpi-arrow-up-green\"}></span>\r\n <span className={\"dl-kpi-arrow-pic dl-kpi-arrow-down-red\"} style={{ marginTop: \"2px\" }}></span>\r\n </div>\r\n );\r\n\r\n if (data?.Ratio > 1 && widget.current?.Increase && widget.current?.Increase == \"Positive\")\r\n return (\r\n <div className=\"dl-kpi-arrow-container\">\r\n <span className={\"dl-kpi-arrow-pic dl-kpi-arrow-up-green\"}></span>\r\n </div>\r\n )\r\n\r\n if (data?.Ratio > 1 && widget.current?.Increase && widget.current?.Increase == \"Negative\")\r\n return (\r\n <div className=\"dl-kpi-arrow-container\">\r\n <span className={\"dl-kpi-arrow-pic dl-kpi-arrow-up-red\"}></span>\r\n </div>\r\n )\r\n\r\n if (data?.Ratio < 1 && widget.current?.Increase && widget.current?.Increase == \"Positive\")\r\n return (\r\n <div className=\"dl-kpi-arrow-container\">\r\n <span className={\"dl-kpi-arrow-pic dl-kpi-arrow-down-red\"}></span>\r\n </div>\r\n )\r\n\r\n if (data?.Ratio < 1 && widget.current?.Increase && widget.current?.Increase == \"Negative\")\r\n return (\r\n <div className=\"dl-kpi-arrow-container\">\r\n <span className={\"dl-kpi-arrow-pic dl-kpi-arrow-down-green\"}></span>\r\n </div>\r\n )\r\n\r\n return null;\r\n }\r\n\r\n\r\n\r\n function getPreviousValueComponent(): React.ReactNode {\r\n if (isNullOrUndefined(data) || isNullOrUndefined(data?.ComparisonValue) || isNullOrUndefined(data?.ComparisonLabel)) return \"\";\r\n // let labelFormatByDateGroupType = getLabelFormatByDateGroupType(data!.ComparisonLabel,widget.current!,false)\r\n let formatedValue = data ? data.ComparisonLabel : \"\"; //!isNullOrUndefined(labelFormatByDateGroupType) ? labelFormatByDateGroupType : \"\";\r\n let comparisonValue = data ? data?.ComparisonValue : \"\";\r\n\r\n return (\r\n <div title={formatedValue} className={\"dl-kpi-prev-container\"}>\r\n <div style={{\r\n color: getKPIFormattingPropertyValue(\"ComparisonValueFontColor\"),\r\n fontSize: getKPIFormattingPropertyValue(\"ComparisonValueFontSize\", \"px\")}} \r\n className={\"dl-kpi-prev-text\"}>\r\n {`${comparisonValue}${isPercentageMeasureField() ? \"%\" : \"\"}`}\r\n </div>\r\n\r\n {\r\n data?.ComparisonAbbreviationSymbol && \r\n <div style={{\r\n color: getKPIFormattingPropertyValue(\"ComparisonValueFontColor\"),\r\n fontSize: getKPIFormattingPropertyValue(\"ComparisonValueFontSize\", \"px\")}} \r\n className=\"dl-kpi-prev-abbreviationSymbol\">\r\n {data?.ComparisonAbbreviationSymbol}\r\n </div>\r\n }\r\n\r\n {\r\n widget.current && widget.current.ShowMeasureUnit && data?.Unit && \r\n <div style={{\r\n color: getKPIFormattingPropertyValue(\"ComparisonValueFontColor\"),\r\n fontSize: getKPIFormattingPropertyValue(\"ComparisonValueFontSize\", \"px\")}} \r\n className=\"comparison-value-dl-kpi-unit\">\r\n {data?.Unit}\r\n </div>\r\n }\r\n \r\n </div>\r\n );\r\n }\r\n\r\n const isPercentageMeasureField = () => {\r\n return widget?.current && widget?.current.WidgetMeasures && widget?.current.WidgetMeasures[0] && widget?.current.WidgetMeasures[0].MeasureFieldDataType && widget?.current.WidgetMeasures[0].MeasureFieldDataType == 'Percentage';\r\n }\r\n\r\n function getValueData(): React.ReactNode {\r\n if (data?.Value == null)\r\n return (<div className=\"dl-kpi-no-data\">No data to display.</div>);\r\n\r\n return (<div style={{\r\n color: getKPIFormattingPropertyValue(\"MainValueFontColor\"),\r\n fontSize: getKPIFormattingPropertyValue(\"MainValueFontSize\", \"px\")}} \r\n className=\"dl-kpi-value dl-kpi-textTrimming\">\r\n {`${data?.Value}${isPercentageMeasureField() ? \"%\" : \"\"}`}\r\n </div>);\r\n\r\n }\r\n\r\n function getValueComponent(): React.ReactNode {\r\n return (\r\n <div className={\"dl-kpi-sub-container\"}>\r\n {getValueData()}\r\n \r\n {\r\n data?.AbbreviationSymbol && \r\n <div style={{\r\n color: getKPIFormattingPropertyValue(\"MainValueFontColor\"),\r\n fontSize: getKPIFormattingPropertyValue(\"MainValueFontSize\", \"px\")}}\r\n className=\"dl-kpi-abbreviationSymbol\">\r\n {data?.AbbreviationSymbol}\r\n </div>\r\n }\r\n \r\n {\r\n widget.current && widget.current.ShowMeasureUnit && data?.Unit && \r\n <div style={{\r\n color: getKPIFormattingPropertyValue(\"MainValueFontColor\"),\r\n fontSize: getKPIFormattingPropertyValue(\"MainValueFontSize\", \"px\")}} \r\n className=\"dl-kpi-unit\">\r\n {data?.Unit}\r\n </div>\r\n }\r\n\r\n {getRatioComponent()}\r\n </div>\r\n );\r\n }\r\n\r\n const getPeriodLabelByPeriodCode = (code : any)=> {\r\n if(!isNullOrUndefinedOrEmpty(code)){\r\n return code.replaceAll(\"_\", \" \");\r\n }\r\n\r\n return \"\";\r\n }\r\n\r\n const getLabelFromKPISettings = ()=> {\r\n if(widget.current && widget.current.KPIComparisonSettings && widget.current.KPIComparisonSettings.length) {\r\n let kpiSettings = JSON.parse(widget.current.KPIComparisonSettings);\r\n let PeriodDateFilter = kpiSettings ? kpiSettings.PeriodDateFilter : null;\r\n\r\n let isKPISettingsActivated = !isNullOrUndefinedOrEmpty(kpiSettings.PeriodFieldId)\r\n return isKPISettingsActivated && PeriodDateFilter && PeriodDateFilter.DateTimeValueCode ? getPeriodLabelByPeriodCode(PeriodDateFilter.DateTimeValueCode) : \"\";\r\n }\r\n\r\n return \"\";\r\n }\r\n\r\n const getKPIFormattingData = () => {\r\n return isNullOrUndefinedOrEmpty(widget.current?.KPIFormatSettings) ? {} : JSON.parse(widget.current?.KPIFormatSettings!);\r\n }\r\n\r\n const getKPIFormattingPropertyValue = (propertyName: any, unit: any = \"\") => {\r\n let kpiFormattingData = getKPIFormattingData();\r\n return kpiFormattingData && kpiFormattingData[propertyName] ? kpiFormattingData[propertyName] + unit : undefined;\r\n }\r\n\r\n function getLabel():React.ReactNode{\r\n let formatedValue = data ? data.Label : \"\"; //getLabelFormatByDateGroupType(data!.Label,widget.current!,false)\r\n let label = getLabelFromKPISettings()\r\n\r\n return(\r\n <div className={\"dl-kpi-label-container\"}>\r\n <span style={{\r\n color: getKPIFormattingPropertyValue(\"MainPeriodFontColor\"),\r\n fontSize: getKPIFormattingPropertyValue(\"MainPeriodFontSize\", \"px\")}} \r\n title={formatedValue} className={\"dl-kpi-label-span dl-kpi-textTrimming\"}>{label}</span> \r\n </div>\r\n );\r\n }\r\n\r\n const getIsKPIHasSmallestHeight = () => {\r\n return props.customChartProps.widgetRef && props.customChartProps.widgetRef?.Layout && props.customChartProps.widgetRef.Layout?.h == 2\r\n }\r\n\r\n const isKPICustomResizeNeeded = () => {\r\n if(!widget || !widget.current) return;\r\n\r\n // let isThereTitle = !isNullOrUndefined(widget.current?.Title) && widget.current?.Title.length > 0;\r\n // let isThereSubTitle = !isNullOrUndefined(widget.current?.Subtitle) && widget.current?.Subtitle!.length > 0;\r\n let isKPIHasSmallestHeight = getIsKPIHasSmallestHeight();\r\n \r\n return isKPIHasSmallestHeight;\r\n }\r\n\r\n return (\r\n isLoading || !widget.current?\r\n <div className={'dl-full-hight dl-flex-content-center spinner-custome'}>\r\n <ProgressSpinner style={{ width: '40px', height: '40px' }} strokeWidth=\"4\" animationDuration=\"2s\" />\r\n </div>\r\n :\r\n !error && widget.current?\r\n <div key={triggerId} onClick={kpiClick} className={(widget.current?.Alighnment == \"Left\" ? \"dl-kpi-container-click db-justify-content-flex-start\" : \"dl-kpi-container-click\")}>\r\n <div className={isKPICustomSizeNeeded ? \"dl-kpi-container kpi-custom-size\" : \"dl-kpi-container\"}>\r\n {getLabel()}\r\n {getValueComponent()}\r\n {getPreviousValueComponent()}\r\n </div>\r\n </div>\r\n : <div className=\"dl-flex-content-center dl-full-hight\" style={{ width: '100%' }}>\r\n <div className=\"dl-tooltip\">\r\n <RedWarningIcon className=\"red-warning-icon\" />\r\n <span className=\"dl-tooltiptext\">{error}</span>\r\n </div>\r\n\r\n </div>\r\n );\r\n}\r\n\r\n\r\nexport default KpiChart;\r\n","import { ProgressSpinner } from \"primereact/progressspinner\";\r\nimport React, { useEffect, useState, useRef } from \"react\";\r\nimport { DashboardAnalyticsService } from \"../../../../services/DashboardAnalyticsService\";\r\nimport { Session } from \"../../../../services/session\";\r\nimport { ReactWidgetPM } from \"../../../../types/widget\";\r\nimport { CustomChartProps } from \"./CustomChart\";\r\nimport { ReactComponent as RedWarningIcon } from \"../../../../assets/images/red-warning.svg\"\r\nimport moment from \"moment\";\r\nimport { isNullOrUndefined, isNullOrUndefinedOrEmpty } from \"../../../../Utils/General\";\r\nimport { DataTable } from 'primereact/datatable';\r\nimport { Column } from 'primereact/column';\r\n\r\ntype TableChartProps = {\r\n customChartProps: CustomChartProps;\r\n};\r\n\r\ntype FieldColumn = {\r\n DataTypeCode: string | null;\r\n DisplayName: string | null;\r\n FieldCode: string | null;\r\n Id: string | null;\r\n IsCalculatedColumn: boolean | null;\r\n};\r\n\r\nconst TableChart = (props: TableChartProps) => {\r\n const [isLoading, setIsLoading] = useState<boolean>(true);\r\n const [isTableLoading, setIsTableLoading] = useState<boolean>(false);\r\n const [error, setError] = useState<string>();\r\n const [widget, setWidget] = useState<ReactWidgetPM>();\r\n const [tableData, setTableData] = useState<any>([]);\r\n const [tableColumns, setTableColumns] = useState<any>([]);\r\n const[sortField, setSortField]=useState<any>(null);\r\n const[sortOrder, setSortOrder]=useState<any>(null);\r\n const isDefaultSortOptionsUsed = useRef(false);\r\n const widgetRefData = useRef<ReactWidgetPM | null>(null);\r\n const [objectTableName, setObjectTableName] = useState<string | null>(null);\r\n\r\n \r\n useEffect(() => {\r\n if(props.customChartProps && props.customChartProps.widget) {\r\n setWidget(props.customChartProps.widget);\r\n widgetRefData.current = props.customChartProps.widget;\r\n getObjectTableName(props.customChartProps.widget);\r\n }\r\n\r\n props.customChartProps.dataBinding?.widgetUpdated.subscribe(updatedWidget => {\r\n if (updatedWidget?.key != widgetRefData.current?.key) return;\r\n setWidget({...updatedWidget});\r\n });\r\n }, [])\r\n\r\n const getObjectTableName = (widget : ReactWidgetPM | undefined) => {\r\n let dashboardAnalyticsService = new DashboardAnalyticsService();\r\n\r\n dashboardAnalyticsService.getObjectTableNameByWidgetEntityId(widget?.EntityId)\r\n .then((res: any) => {\r\n if (res && res.data && res.data.ObjectTableName) {\r\n setObjectTableName(res.data.ObjectTableName);\r\n getTableData(widget); \r\n } else {\r\n setError(\"Erorr: No object table name match this widget entity id\");\r\n setIsLoading(false);\r\n }\r\n })\r\n .catch(() => {\r\n setError(\"Erorr: No object table name match this widget entity id\");\r\n setIsLoading(false);\r\n })\r\n \r\n \r\n }\r\n\r\n const getTableData= (widget : any) => {\r\n if (Session.Tenant == 0) {\r\n setTableData([]);\r\n setIsLoading(false);\r\n return;\r\n }\r\n\r\n let dashboardAnalyticsService = new DashboardAnalyticsService();\r\n widget.onChange = undefined;\r\n widget.PageIndex = 0;\r\n widget.PageSize = 100;\r\n \r\n dashboardAnalyticsService.getTableData(widget as ReactWidgetPM)\r\n .then((res: any) => {\r\n if(res && res.data) {\r\n fillTableData(res.data);\r\n }\r\n setIsLoading(false);\r\n })\r\n .catch((error: any) => {\r\n if (error?.response?.data?.ErrorMessage) setError(error?.response?.data?.ErrorMessage);\r\n else setError(error.message);\r\n setIsLoading(false);\r\n })\r\n }\r\n\r\n const getBooleanStringValue = (value: any) => {\r\n if(isNullOrUndefined(value) || isNullOrUndefined(value.Label)) return \"\";\r\n\r\n let _value = value.Label + \"\";\r\n return {\r\n Label: _value.charAt(0).toUpperCase() + _value.slice(1),\r\n Value: _value.charAt(0).toUpperCase() + _value.slice(1),\r\n }\r\n }\r\n \r\n const getDateTimeValue = (value: any) => {\r\n if(!value) return value;\r\n\r\n let _date = moment(value);\r\n if(!_date || !_date.isValid()) return value;\r\n \r\n return _date.format(\"DD MMM YYYY\")\r\n }\r\n\r\n const fillTableData = (tableData : any) => {\r\n let tableRecords: any = [];\r\n if(tableData.Fields && tableData.Fields.length){\r\n setTableColumns([...tableData.Fields]);\r\n setDefaultSortOptions(tableData.Fields);\r\n }\r\n\r\n if(tableData.Result && tableData.Result.length){\r\n tableData.Result.forEach((item: any) => {\r\n\r\n let _tableRow: any = {...item};\r\n tableData.Fields.forEach((field: any) => {\r\n let key = field.FieldCode\r\n let valueType = field.DataTypeCode;\r\n\r\n let _value = valueType && valueType == \"Boolean\" ? getBooleanStringValue(item[key]) : item[key]\r\n _tableRow[key] = isNullOrUndefined(_value) || (isNullOrUndefined(_value.Value) && isNullOrUndefined(_value.Label)) ? \"\" : _value;\r\n })\r\n\r\n tableRecords.push(_tableRow);\r\n })\r\n }\r\n\r\n setTableData([...tableRecords]); \r\n }\r\n\r\n const setDefaultSortOptions = (tableCols: any = []) => {\r\n if(isDefaultSortOptionsUsed && isDefaultSortOptionsUsed.current) return;\r\n\r\n isDefaultSortOptionsUsed.current= true;\r\n\r\n let _widget : any = props.customChartProps ? props.customChartProps.widget : null;\r\n if(!_widget) return;\r\n \r\n let _sortFieldCode = getSortFieldCodeBySortFieldId(_widget.DefaultSortBy, tableCols);\r\n let _sortDirection = _widget.DefaultSortDirection ? _widget.DefaultSortDirection == 'asc' ? 1 : _widget.DefaultSortDirection == 'desc' ? -1 : 0 : null;\r\n\r\n setSortField(_sortFieldCode);\r\n setSortOrder(_sortDirection)\r\n }\r\n\r\n const getSortFieldCodeBySortFieldId = (sortFieldId: any, tableCols: any = []) => {\r\n if(!sortFieldId) return null;\r\n\r\n let field = tableCols.find(col => col.Id == sortFieldId);\r\n return field ? field.FieldCode : null;\r\n }\r\n\r\n const getSortFieldIdBySortFieldCode = (sortFieldCode: any) => {\r\n if(!sortFieldCode) return null;\r\n\r\n let field = tableColumns.find(col => col.FieldCode == sortFieldCode);\r\n return field ? field.Id : null;\r\n }\r\n\r\n const sortTableData = (sortedField: any, isCalculatedColumn: boolean | null)=> {\r\n if(!canSort()) return;\r\n\r\n setSortField(sortedField);\r\n let _sortOrder = sortOrder == 1 ? -1 : sortOrder == -1 ? 1 : 1;\r\n setSortOrder(_sortOrder);\r\n\r\n let _widget : any = props.customChartProps.widget;\r\n let dashboardAnalyticsService = new DashboardAnalyticsService();\r\n _widget.onChange = undefined;\r\n _widget.PageIndex = 0;\r\n _widget.PageSize = 100;\r\n _widget.ScreenSortBy = getSortFieldIdBySortFieldCode(sortedField);\r\n _widget.ScreenSortDirection = _sortOrder == 1 ? 'asc' : _sortOrder == -1 ? 'desc' : null;\r\n _widget.ScreenSortByType = isNullOrUndefinedOrEmpty(isCalculatedColumn) ? \"Field\" : isCalculatedColumn ? \"CalculatedColumn\" : \"Field\"\r\n\r\n setIsTableLoading(true);\r\n dashboardAnalyticsService.getTableData(_widget as ReactWidgetPM)\r\n .then((res: any) => {\r\n if(res && res.data) {\r\n fillTableData(res.data);\r\n }\r\n setIsTableLoading(false);\r\n })\r\n .catch((error: any) => {\r\n if (error?.response?.data?.ErrorMessage) setError(error?.response?.data?.ErrorMessage);\r\n else setError(error.message);\r\n setIsTableLoading(false);\r\n })\r\n }\r\n\r\n const canSort = ()=> {\r\n if(props.customChartProps){\r\n return !props.customChartProps.isInEditMode && !props.customChartProps.isPreviewModeActive;\r\n }\r\n return false;\r\n }\r\n\r\n const getTableFormattingData = () => {\r\n return widget && isNullOrUndefinedOrEmpty(widget.TableFormatSettings) ? {} : JSON.parse(widget?.TableFormatSettings!);\r\n }\r\n\r\n const getTableFormattingPropertyValue = (propertyName: any, unit: any = \"\") => {\r\n let tableFormattingData = getTableFormattingData();\r\n return tableFormattingData && tableFormattingData[propertyName] ? tableFormattingData[propertyName] + unit : undefined;\r\n }\r\n\r\n const getTableConditionalRulesData = () => {\r\n return widget && isNullOrUndefinedOrEmpty(widget.TableConditionalRules) ? [] : JSON.parse(widget?.TableConditionalRules!);\r\n }\r\n\r\n const isValueEmpty = (val: any) => {\r\n return val === null || val === undefined || val === \"\";\r\n }\r\n\r\n const IsValidRule = (rule, value) => {\r\n let operator = rule && rule.RuleOperator ? rule.RuleOperator.Code : null;\r\n if(!operator) return null;\r\n\r\n let ruleValue1 = rule.RuleValue1;\r\n let ruleValue2 = rule.RuleValue2;\r\n\r\n switch (operator) {\r\n case \"Equal\":\r\n return ruleValue1 == value;\r\n case \"NotEqual\":\r\n return ruleValue1 != value;\r\n case \"Between\":\r\n return !isValueEmpty(ruleValue1) && !isValueEmpty(ruleValue2) && ruleValue1 <= value && value <= ruleValue2;\r\n case \"GreaterThan\":\r\n return !isValueEmpty(ruleValue1) && value > ruleValue1;\r\n case \"GreaterThanOrEqual\":\r\n return !isValueEmpty(ruleValue1) && value >= ruleValue1;\r\n case \"LessThan\":\r\n return !isValueEmpty(ruleValue1) && value < ruleValue1;\r\n case \"LessThanOrEqual\":\r\n return !isValueEmpty(ruleValue1) && value <= ruleValue1;\r\n case \"IsEmpty\":\r\n return isValueEmpty(value);\r\n case \"IsNotEmpty\":\r\n return !isValueEmpty(value);\r\n default:\r\n return null;\r\n }\r\n }\r\n\r\n const getCellPropertyByRule = (column: FieldColumn, cellValue: any, propertyName: string, defaultValue: string | null = null) => {\r\n let tableFormattingData = getTableConditionalRulesData();\r\n\r\n let columnType = column.IsCalculatedColumn ? \"CalculatedColumn\" : \"Field\";\r\n let columnData = tableFormattingData.find((el: any) => el.FieldId == column.Id && el.FieldType == columnType);\r\n\r\n if(!columnData || !columnData.FieldRules || columnData.FieldRules.length == 0) {\r\n return defaultValue ? getTableFormattingPropertyValue(defaultValue) : undefined; \r\n };\r\n\r\n let firstValidRule = columnData.FieldRules.find((rule: any) => IsValidRule(rule, cellValue));\r\n\r\n if(!firstValidRule) {\r\n return defaultValue ? getTableFormattingPropertyValue(defaultValue) : undefined;\r\n }\r\n\r\n return !isNullOrUndefinedOrEmpty(firstValidRule[propertyName]) ? \r\n firstValidRule[propertyName] : defaultValue ? \r\n getTableFormattingPropertyValue(defaultValue) : undefined;\r\n }\r\n \r\n const getCellFloatAlignment = (column: FieldColumn) => {\r\n if(column.DataTypeCode == 'Decimal' || column.DataTypeCode == 'Percentage'|| column.DataTypeCode == 'Integer' \r\n || column.DataTypeCode == 'Double' || column.DataTypeCode == 'SigDouble'){\r\n return \"right\";\r\n }\r\n \r\n return \"unset\";\r\n }\r\n\r\n const isClickableCell = (fieldCode: string | null) => {\r\n return ((fieldCode == \"ShipmentNumber\" && objectTableName == \"Shipment\") ||\r\n (fieldCode == \"InvoiceNumber\" && objectTableName == \"APInvoice\") ||\r\n (fieldCode == \"InvoiceNumber\" && objectTableName == \"ARInvoice\") ||\r\n (fieldCode == \"ContainerNumber\" && objectTableName == \"Container\") ||\r\n (fieldCode == \"QuoteNumber\" && objectTableName == \"Quote\") ||\r\n (fieldCode == \"Subject\" && objectTableName == \"Opportunity\") ||\r\n (fieldCode == \"EnglishName\" && objectTableName == \"Customer\"))\r\n }\r\n\r\n const tableCellClicked = (data: any, fieldCode: string | null) => {\r\n if(!data || !data.Id || !data.Id.Label || !isClickableCell(fieldCode) || props.customChartProps.isInEditMode) return;\r\n\r\n props.customChartProps.onSelectDataPoint({\r\n ObjectTableName: objectTableName,\r\n TableRowEntityId: data.Id.Label\r\n });\r\n }\r\n\r\n const cellTemplateBody = (data: any, column: FieldColumn) => {\r\n if(!column || !column.FieldCode) return \"\";\r\n\r\n return column.DataTypeCode == \"DateTime\" || column.DataTypeCode == \"Date\" ? \r\n <span title={getDateTimeValue(data[column.FieldCode!]?.Label)} \r\n className=\"table-cell\" \r\n style={{\r\n color: getTableFormattingPropertyValue(\"TableCellFontColor\"),\r\n fontSize: getTableFormattingPropertyValue(\"TableCellFontSize\", \"px\")}}>\r\n {getDateTimeValue(data[column.FieldCode!]?.Label)}\r\n </span> \r\n : <span \r\n onClick={() => tableCellClicked(data, column.FieldCode)}\r\n title={data[column.FieldCode!]?.Label} \r\n className={`table-cell ${isClickableCell(column.FieldCode) ? 'table-link-cell' :''}`} \r\n style={{\r\n color: getTableFormattingPropertyValue(\"TableCellFontColor\"),\r\n backgroundColor: getCellPropertyByRule(column, data[column.FieldCode!]?.Value, 'RuleBackgroundColor'),\r\n fontSize: getTableFormattingPropertyValue(\"TableCellFontSize\", \"px\"),\r\n float: getCellFloatAlignment(column)}}>\r\n {column.DataTypeCode == \"Percentage\" ? data[column.FieldCode!]?.Label ? data[column.FieldCode!]?.Label + \"%\" : 0 + '%' : data[column.FieldCode!]?.Label}\r\n </span>\r\n }\r\n\r\n const headerTemplate = (column: FieldColumn)=> {\r\n let sortClassIcon = \"\";\r\n if(sortField != column.FieldCode) {\r\n return <div style={{ backgroundColor: getTableFormattingPropertyValue(\"TableHeaderBackgroundColor\") }}\r\n onClick={() => sortTableData(column.FieldCode, column.IsCalculatedColumn)} className=\"header-content\">\r\n <span style={{\r\n color: getTableFormattingPropertyValue(\"TableHeaderFontColor\"),\r\n fontSize: getTableFormattingPropertyValue(\"TableHeaderFontSize\", \"px\")}} \r\n className=\"p-column-title\">\r\n {column.DisplayName}\r\n {/* {canSort() && \r\n <span \r\n style={{\r\n fontSize: getTableFormattingPropertyValue(\"TableHeaderFontSize\", \"px\"),\r\n width: getTableFormattingPropertyValue(\"TableHeaderFontSize\", \"px\"),\r\n height: getTableFormattingPropertyValue(\"TableHeaderFontSize\", \"px\")}} \r\n className=\"p-sortable-column-icon p-ml-2 pi pi-fw pi-sort-alt\">\r\n\r\n </span>\r\n } */}\r\n </span>\r\n </div>\r\n }\r\n\r\n if(sortOrder == 1){\r\n // arrow up\r\n sortClassIcon = \"p-sortable-column-icon p-ml-2 pi pi-fw pi-sort-amount-up-alt\";\r\n }else if(sortOrder == -1){\r\n // arrow down\r\n sortClassIcon = \"p-sortable-column-icon p-ml-2 pi pi-fw pi-sort-amount-down\";\r\n } else {\r\n // 2 arrows, up and down\r\n sortClassIcon = \"p-sortable-column-icon p-ml-2 pi pi-fw pi-sort-alt\";\r\n }\r\n\r\n return <div style={{ backgroundColor: getTableFormattingPropertyValue(\"TableHeaderBackgroundColor\") }}\r\n onClick={() => sortTableData(column.FieldCode, column.IsCalculatedColumn)} className=\"header-content\">\r\n <span style={{\r\n color: getTableFormattingPropertyValue(\"TableHeaderFontColor\"),\r\n fontSize: getTableFormattingPropertyValue(\"TableHeaderFontSize\", \"px\")}} \r\n className=\"p-column-title\">\r\n {column.DisplayName}\r\n {/* {canSort() && \r\n <span \r\n style={{\r\n fontSize: getTableFormattingPropertyValue(\"TableHeaderFontSize\", \"px\"),\r\n width: getTableFormattingPropertyValue(\"TableHeaderFontSize\", \"px\"),\r\n height: getTableFormattingPropertyValue(\"TableHeaderFontSize\", \"px\")}} \r\n className={sortClassIcon}>\r\n </span>\r\n } */}\r\n </span>\r\n </div>\r\n }\r\n\r\n\r\n return (\r\n isLoading ?\r\n <div className={'dl-full-hight dl-flex-content-center spinner-custome'}>\r\n <ProgressSpinner style={{ width: '40px', height: '40px' }} strokeWidth=\"4\" animationDuration=\"2s\" />\r\n </div> :\r\n\r\n error ?\r\n <div className=\"dl-flex-content-center dl-full-hight\" style={{ width: '100%' }}>\r\n <div className=\"dl-tooltip\">\r\n <RedWarningIcon className=\"red-warning-icon\" />\r\n <span className=\"dl-tooltiptext\">{error}</span>\r\n </div>\r\n\r\n </div> :\r\n <DataTable loading={isTableLoading} value={tableData} responsiveLayout=\"scroll\">\r\n {\r\n tableColumns.map((column: any, index: number) => {\r\n return <Column key={column.FieldCode + \"_\" + index} header={() => headerTemplate(column)} body={(data: any) => cellTemplateBody(data, column)}></Column> \r\n })\r\n }\r\n </DataTable> \r\n )\r\n\r\n\r\n\r\n\r\n}\r\n\r\n\r\nexport default TableChart;\r\n\r\n","import React from \"react\";\r\nimport { DashboardDataBinding } from \"../../../../types/DashboardDataBinding\";\r\nimport { DataPointSelection } from \"../../../../types/SeriesMeasure\";\r\nimport { ReactWidgetPM } from \"../../../../types/widget\";\r\nimport KpiChart from \"./KpiChart\";\r\nimport TableChart from \"./TableChart\";\r\n\r\n\r\nexport type CustomChartProps = {\r\n widget: ReactWidgetPM | undefined,\r\n widgetRef: ReactWidgetPM | undefined,\r\n dataBinding: DashboardDataBinding;\r\n isPreviewModeActive?:boolean;\r\n isInEditMode?:boolean;\r\n onSelectDataPoint: (dataPointSelection: DataPointSelection) => void;\r\n};\r\nconst CustomChart = (props: CustomChartProps) => {\r\n const project = () => {\r\n switch (props.widget?.TypeCode) {\r\n case \"kpi\": return <KpiChart customChartProps={props} />;\r\n case \"table\": return <TableChart customChartProps={props} />;\r\n \r\n default: return <div>Invalid Type</div>;\r\n }\r\n }\r\n\r\n return (\r\n <React.Fragment>\r\n <div className={props.widget && props.widget?.TypeCode == 'table' ? \"dl-custom-chart-container dl-table-chart-container\" : \"dl-custom-chart-container\"}>{project()}</div>\r\n </React.Fragment>\r\n );\r\n}\r\n\r\n\r\nexport default CustomChart;","import { getGlobalNumberFormatting, isNullOrUndefined } from \"../../../../Utils/General\";\r\nimport { SeriesMeasure } from \"../../../../types/SeriesMeasure\";\r\nimport { ReactWidgetPM } from \"../../../../types/widget\";\r\n\r\nexport function buildToolTip(widget: ReactWidgetPM, value: any, seriesName: SeriesMeasure, label: any, index: number): string {\r\n var padding = (widget.TypeCode == 'line' && index > 0) ? 'padding-top: 3px' : '';\r\n return `\r\n <div style=\"min-width: 108px;` + padding + `\">\r\n <div style=\"display: flex;align-items: center;margin-bottom: 6px;\">\r\n <span style=\"margin: 0; min-height: 10px; min-width: 10px; height: 10px; width: 10px; background-color: transparent; border-radius: 50%; display: inline-block;\"></span>\r\n <p style=\" margin: 0; margin-left: 4px; white-space: pre-line; font-family: 'Manrope'; font-style: normal;font-weight: 400; font-size: 11px; line-height: 100%; color: #323232;\"> ` + getTooltiplabel(label, seriesName) + `</p>\r\n </div>\r\n <hr style=\"margin: 0;border-top: 1px solid #F0F0F0;\">\r\n <div style=\"display: flex;align-items: center;margin:0;margin-top: 6px;\">\r\n <p style=\"margin: 0;font-family: 'Manrope'; white-space: pre-line; font-style: normal;font-weight: 400; font-size: 11px;line-height: 100%;color: #A4A4A4;\"> ` + getMeasureType(seriesName) + `</p>\r\n <p style=\"margin: 0;margin-left: 6px; white-space: pre-line; font-family: 'Manrope';font-style: normal;font-weight: 500;font-size: 11px;line-height: 100%; color: #323232;\">` + getTooltipValue(value, seriesName) + `</p>\r\n ` + getTooltipPercentage(widget) +\r\n ` </div>\r\n </div>\r\n `;\r\n}\r\n\r\nfunction getTooltipPercentage(widget: ReactWidgetPM): string {\r\n if (widget.TypeCode != \"donut\" && widget.TypeCode != \"pie\") return \"\";\r\n return `\r\n <p style=\"margin: 0;margin-left: 2px;font-family: 'Manrope';font-style: normal;font-weight: 500;font-size: 11px;line-height: 100%; color: #A4A4A4;flex: none; order: 1;flex-grow: 0;\">($percentValue)</p>\r\n `;\r\n}\r\n\r\nfunction getTooltiplabel(value: any, seriesMeasure: SeriesMeasure): string {\r\n if (value) return value;\r\n if (seriesMeasure && seriesMeasure.Name) return '$label' + \" - \" + seriesMeasure.Name;\r\n return '$label';\r\n}\r\n\r\nconst getFormattedValue = (value: number) => {\r\n if(isNaN(value)) return value;\r\n\r\n let _numberSeparatorSettings = getGlobalNumberFormatting();\r\n\r\n let _val = value.toLocaleString('en-US');\r\n\r\n if(_val){ \r\n let _formattedValue = _val.replaceAll(\",\", \"*\");\r\n _formattedValue = _formattedValue.replaceAll(\".\", \"-\");\r\n\r\n _formattedValue = _formattedValue.replaceAll(\"*\", _numberSeparatorSettings.thousandsSeparator);\r\n _formattedValue = _formattedValue.replaceAll(\"-\", _numberSeparatorSettings.decimalSeparator);\r\n\r\n return _formattedValue;\r\n }\r\n\r\n return value;\r\n}\r\n\r\nfunction getTooltipValue(value: any, seriesMeasure: SeriesMeasure): string | number {\r\n if (!isNullOrUndefined(value)) {\r\n return seriesMeasure && seriesMeasure.MeasureFieldDataType == 'Percentage' ? getFormattedValue(value) + \"%\" : getFormattedValue(value);\r\n }\r\n\r\n return '$dataValue';\r\n}\r\n\r\nfunction getMeasureType(seriesMeasure:SeriesMeasure): string {\r\n if (!seriesMeasure.Name) return \"Count:\"\r\n if(seriesMeasure.MeasureCode == \"Formula\"){\r\n var formula =JSON.parse(seriesMeasure.Formula)\r\n return formula.Name;\r\n }\r\n return seriesMeasure.Name.replace(/ .*/, '') + \":\";\r\n}","import { getLabelFormatByDateGroupType } from \"../../../../Utils/DateHelper\";\r\nimport { SeriesMeasure } from \"../../../../types/SeriesMeasure\";\r\nimport { ReactWidgetPM } from \"../../../../types/widget\";\r\nimport { ChartInfo } from \"./FusionChartObjectHelper\";\r\nimport { buildToolTip } from \"./FusionChartTooltip\";\r\n\r\nvar months = [\"Jan\", \"Feb\", \"Mar\", \"Apr\", \"May\", \"Jun\", \"Jul\", \"Aug\", \"Sep\", \"Oct\", \"Nov\", \"Dec\"];\r\nvar quarters = [\"Q\", \"Q1\", \"Q2\", \"Q3\", \"Q4\"];\r\n\r\nexport function getCategoriesBasedDataSource(chartInfo: ChartInfo, seriesMeasures: SeriesMeasure[], widget: ReactWidgetPM): any {\r\n if (seriesMeasuresIsEmpty(seriesMeasures)) return null;\r\n\r\n handelNullLabels(seriesMeasures);\r\n return {\r\n chart: chartInfo,\r\n categories: buildCategories(seriesMeasures, widget),\r\n dataset: buildDataSet(seriesMeasures, widget)\r\n }\r\n}\r\n\r\nexport function getStackedDataSource(chartInfo: ChartInfo, seriesMeasures: SeriesMeasure[], widget: ReactWidgetPM): any {\r\n if (seriesMeasuresIsEmpty(seriesMeasures)) return null;\r\n\r\n handelNullLabels(seriesMeasures);\r\n return {\r\n chart: chartInfo,\r\n categories: buildStackedCategories(seriesMeasures, widget),\r\n dataset: buildStackedDataSet(seriesMeasures, widget)\r\n }\r\n}\r\n\r\n\r\nexport function getSimpleDataSource(chartInfo: ChartInfo, seriesMeasures: SeriesMeasure[], widget: ReactWidgetPM): any {\r\n if (seriesMeasuresIsEmpty(seriesMeasures)) return null;\r\n\r\n handelNullLabels(seriesMeasures);\r\n return {\r\n chart: chartInfo,\r\n data: buildDataSource(seriesMeasures, widget),\r\n }\r\n}\r\n\r\nfunction handelNullLabels(seriesMeasures: SeriesMeasure[]) {\r\n seriesMeasures.forEach(element => {\r\n element.Values.forEach(value => {\r\n if (!value.Label || value.Label == '')\r\n value.Label = 'Not defined'\r\n });\r\n });\r\n}\r\n\r\nfunction seriesMeasuresIsEmpty(seriesMeasures: SeriesMeasure[]): boolean {\r\n if (!seriesMeasures || seriesMeasures.length == 0) return true;\r\n let hasValue = false;\r\n seriesMeasures.forEach(item => {\r\n if (item.Values && item.Values.length > 0) hasValue = true;\r\n });\r\n return !hasValue;\r\n}\r\n\r\nfunction buildDataSource(values: SeriesMeasure[], widget: ReactWidgetPM) {\r\n let data: any[] = [];\r\n if (!values || !values[0]) return data;\r\n\r\n var series = values[0];\r\n data = series.Values.map((e, index) => {\r\n let item = {\r\n value: e.Value,\r\n label: getLabelFormatByDateGroupType(e.Label, widget, false),\r\n id: {\r\n GroupById: e.GroupById,\r\n MeasureFieldId: series.MeasureFieldId,\r\n MeasureCode: series.MeasureCode,\r\n Formula: series.Formula\r\n },\r\n tooltext: buildToolTip(widget, null, series, e.Label, 0),\r\n }\r\n return item;\r\n });\r\n return data;\r\n}\r\n\r\nfunction buildDataSet(seriesMeasures: SeriesMeasure[], widget: ReactWidgetPM) {\r\n let dataSet: any[] = [];\r\n let seriesPosition = 1;\r\n\r\n seriesMeasures.forEach(seriesMeasure => {\r\n let datas = seriesMeasure.Values.map((e, index) => {\r\n return {\r\n value: e.Value,\r\n id: {\r\n GroupById: e.GroupById,\r\n MeasureFieldId: seriesMeasure.MeasureFieldId,\r\n MeasureCode: seriesMeasure.MeasureCode,\r\n Formula: seriesMeasure.Formula\r\n },\r\n tooltext: buildToolTip(widget, e.Value, seriesMeasure, null, index),\r\n }\r\n });\r\n dataSet.push({\r\n data: datas,\r\n seriesname: seriesMeasure.Name,\r\n anchorBgColor: \"inherit\",\r\n anchorBorderColor: \"#FFFFFF\",\r\n anchorBorderThickness: \"2\",\r\n anchorHoverColor: \"inherit\",\r\n parentyaxis: seriesMeasure.PlotasLineChart && seriesMeasure.PlotonSecondAxis ? 'S' : \"P\",\r\n renderAs: seriesMeasure.PlotasLineChart ? 'line' : \"column\",\r\n });\r\n seriesPosition++;\r\n });\r\n return dataSet;\r\n}\r\n\r\nfunction buildStackedDataSet(seriesMeasures: SeriesMeasure[], widget: ReactWidgetPM) {\r\n let dataSet: any[] = [];\r\n let seriesPosition = 1;\r\n\r\n var series = seriesMeasures[0];\r\n\r\n const uniqueGroups: any[] = [];\r\n\r\n series.Values.forEach(element => {\r\n if (!uniqueGroups.find(x => x.code == element.GroupByIdSec))\r\n uniqueGroups.push({ code: element.GroupByIdSec, label: getLabelFormatByDateGroupType(element.LabelSec, widget, true) })\r\n });\r\n\r\n uniqueGroups.forEach(group => {\r\n dataSet.push({\r\n seriesName: group.label,\r\n data: buildStackedGroupData(group, series, widget)\r\n });\r\n seriesPosition++;\r\n });\r\n \r\n let emptylabels = dataSet.filter(e=>e.seriesName == null);\r\n let filledLabels = dataSet.filter(e=>e.seriesName != null);\r\n\r\n dataSet = widget.SecondaryDateGroupCode ? sortDataSet(filledLabels, widget.SecondaryDateGroupCode!) : filledLabels;\r\n return emptylabels.concat(dataSet);\r\n}\r\n\r\nfunction sortDataSet(dataSet: any[], SecondaryDateGroupCode: string) {\r\n switch (SecondaryDateGroupCode) {\r\n case \"Year\":\r\n return dataSet.sort((s1, s2) => s1.seriesName - s2.seriesName);\r\n case \"Month\":\r\n return dataSet.sort(function (s1, s2) {\r\n return months.indexOf(s1.seriesName) - months.indexOf(s2.seriesName);\r\n });\r\n case \"Quarter\":\r\n return dataSet.sort(function (s1, s2) {\r\n return quarters.indexOf(s1.seriesName) - quarters.indexOf(s2.seriesName);\r\n });\r\n case \"Month & Year\": return dataSet.sort(function sort(s1, s2) {\r\n var aa = s1.seriesName.split(' '),\r\n bb = s2.seriesName.split(' ');\r\n return aa[1] - bb[1] || months.indexOf(aa[0]) - months.indexOf(bb[0]);\r\n });\r\n case \"Quarter & Year\": return dataSet.sort(function sort(s1, s2) {\r\n var aa = s1.seriesName.split(' '),\r\n bb = s2.seriesName.split(' ');\r\n return aa[1] - bb[1] || quarters.indexOf(aa[0]) - quarters.indexOf(bb[0]);\r\n });\r\n default:\r\n return dataSet;\r\n }\r\n}\r\n\r\nfunction buildStackedGroupData(secGroup: any, series: SeriesMeasure, widget: ReactWidgetPM) {\r\n const uniqueGroups: any[] = getUniqueGroupOrderdList(series);\r\n\r\n let data: any[] = [];\r\n uniqueGroups.forEach(group => {\r\n data.push({\r\n value: series.Values.find(x => x.GroupById == group.code && x.GroupByIdSec == secGroup.code)?.Value,\r\n id: {\r\n GroupById: group.code,\r\n MeasureFieldId: series.MeasureFieldId,\r\n GroupByIdSec: secGroup.code,\r\n MeasureCode: series.MeasureCode,\r\n Formula: series.Formula\r\n },\r\n tooltext: buildToolTip(widget, null, series, group.label + \" - \" + secGroup.label, 0),\r\n })\r\n });\r\n\r\n return data;\r\n}\r\nfunction buildCategories(seriesMeasures: SeriesMeasure[], widget: ReactWidgetPM) {\r\n var categories = seriesMeasures[0].Values.map((e) => {\r\n return {\r\n label: getLabelFormatByDateGroupType(e.Label, widget, false)\r\n }\r\n });\r\n var result: any[] = [];\r\n result.push({ category: categories });\r\n return result;\r\n}\r\n\r\nfunction buildStackedCategories(seriesMeasures: SeriesMeasure[], widget: ReactWidgetPM) {\r\n const uniqueGroups: any[] = getUniqueGroupOrderdList(seriesMeasures[0]);\r\n\r\n var categories = uniqueGroups.map((e) => {\r\n return {\r\n label: getLabelFormatByDateGroupType(e.label, widget, false)\r\n }\r\n });\r\n var result: any[] = [];\r\n result.push({ category: categories });\r\n return result;\r\n}\r\n\r\nfunction getUniqueGroupOrderdList(series: SeriesMeasure) {\r\n let uniqueGroups: any[] = [];\r\n series.Values.forEach(element => {\r\n if (!uniqueGroups.find(x => x.code == element.GroupById))\r\n uniqueGroups.push({ code: element.GroupById, label: element.Label });\r\n });\r\n return uniqueGroups;\r\n}\r\n\r\n","import { ChartObject } from \"fusioncharts\";\r\nimport { SeriesMeasure } from \"../../../../types/SeriesMeasure\";\r\nimport { ReactWidgetPM } from \"../../../../types/widget\";\r\nimport { getCategoriesBasedDataSource, getSimpleDataSource, getStackedDataSource } from \"./FusionChartDataSoruceBuilder\";\r\nimport { ChartInfo } from \"./FusionChartObjectHelper\";\r\nimport { getGlobalNumberFormatting, isNullOrUndefined, isNullOrUndefinedOrEmpty } from \"../../../../Utils/General\";\r\n\r\nconst defautFontSize = \"12\";\r\nconst defautFont = \"Manrope\";\r\nconst defautColor = \"#323232\";\r\n\r\n\r\nexport function BuildFusionChartObject(seriesMeasures: SeriesMeasure[], widget: ReactWidgetPM): ChartObject {\r\n switch (widget?.TypeCode) {\r\n case 'bar':\r\n if (!widget.SecondaryGroupById) return getBarObject(seriesMeasures, widget);\r\n return getStackedBarObject(seriesMeasures, widget);\r\n case 'line':\r\n if (!widget.SecondaryGroupById) return getLineObject(seriesMeasures, widget);\r\n return getClusteredLineObject(seriesMeasures, widget);\r\n case 'pie':\r\n return getPieObject(seriesMeasures, widget);\r\n case 'donut':\r\n return getDonutObject(seriesMeasures, widget);\r\n case 'column':\r\n if (!widget.SecondaryGroupById) return getColumnObject(seriesMeasures, widget);\r\n return getClusteredColumnObject(seriesMeasures, widget); \r\n default:\r\n return {};\r\n }\r\n}\r\n\r\nconst getWidgetRanges = (widget: ReactWidgetPM, value : any) => {\r\n let gaugeRanges = widget.GaugeRanges && widget.GaugeRanges.length > 0 ? JSON.parse(widget.GaugeRanges) : null;\r\n\r\n if(gaugeRanges == null || isNullOrUndefinedOrEmpty(value)) return [];\r\n\r\n if(value < gaugeRanges[0].minValue) {\r\n gaugeRanges[0].minValue = value;\r\n } \r\n\r\n if(value > gaugeRanges[2].maxValue) {\r\n gaugeRanges[2].maxValue = value;\r\n } \r\n\r\n return gaugeRanges;\r\n}\r\n\r\nexport const getGaugeObject = (data: any, widget: ReactWidgetPM) => {\r\n let fusionObject = getDefaultChartobject();\r\n fusionObject.type = 'angulargauge'\r\n let chartInfo = getDefaultChartInfo(widget);\r\n \r\n chartInfo.manageResize = \"1\";\r\n chartInfo.valueBelowPivot = \"1\";\r\n chartInfo.showValue = \"1\";\r\n fusionObject.dataSource = {\r\n \"chart\" : chartInfo,\r\n \"colorRange\": {\r\n \"color\" : getWidgetRanges(widget, !isNullOrUndefined(data) && !isNullOrUndefined(data?.Value) ? data?.Value : 0)\r\n },\r\n \"dials\": {\r\n \"dial\": [{\r\n \"value\": !isNullOrUndefined(data) && !isNullOrUndefined(data?.Value) ? data?.Value : 0\r\n }]\r\n }\r\n }\r\n\r\n return fusionObject;\r\n}\r\n\r\nfunction getBarObject(seriesMeasures: SeriesMeasure[], widget: ReactWidgetPM): ChartObject {\r\n let chart = getDefaultChartobject();\r\n chart.type = isGroupByFieldDateTime(widget.GroupByFieldDataType) ? \"msbar2d\" : \"scrollbar2d\";\r\n\r\n let chartInfo = getDefaultChartInfo(widget);\r\n chartInfo.scrollPosition = \"right\";\r\n chartInfo.scrollPadding = \"8\";\r\n chartInfo.flatScrollBars = \"1\";\r\n chartInfo.showPercentValues = widget.ShowValueAsNumber ? \"0\" : \"1\";\r\n chartInfo.showLegend = widget.ShowLegend ? '1' : '0';\r\n setLineDash(chartInfo);\r\n chartInfo.chartTopMargin = \"10\";\r\n chartInfo.chartBottomMargin = \"10\";\r\n chartInfo.legendPosition = getWidgetLegendPosition(widget);\r\n\r\n chart.dataSource = getCategoriesBasedDataSource(chartInfo, seriesMeasures, widget);\r\n return chart;\r\n}\r\n\r\nfunction getStackedBarObject(seriesMeasures: SeriesMeasure[], widget: ReactWidgetPM): ChartObject {\r\n let chart = getDefaultChartobject();\r\n\r\n if(widget.IsStacked){\r\n chart.type = isGroupByFieldDateTime(widget.GroupByFieldDataType) ? \"stackedbar2d\" : \"scrollstackedbar2d\";\r\n }else {\r\n chart.type = isGroupByFieldDateTime(widget.GroupByFieldDataType) ? \"msbar2d\" : \"scrollbar2d\";\r\n }\r\n\r\n let chartInfo = getDefaultChartInfo(widget);\r\n chartInfo.scrollPosition = \"right\";\r\n chartInfo.scrollPadding = \"8\";\r\n chartInfo.flatScrollBars = \"1\";\r\n chartInfo.showPercentValues = widget.ShowValueAsNumber ? \"0\" : \"1\";\r\n chartInfo.showLegend = widget.ShowLegend ? '1' : '0';\r\n setLineDash(chartInfo);\r\n chartInfo.chartTopMargin = \"10\";\r\n chartInfo.chartBottomMargin = \"10\";\r\n chartInfo.legendPosition= getWidgetLegendPosition(widget);\r\n\r\n chart.dataSource = getStackedDataSource(chartInfo, seriesMeasures, widget);\r\n return chart;\r\n}\r\n\r\nfunction getClusteredColumnObject(seriesMeasures: SeriesMeasure[], widget: ReactWidgetPM): ChartObject {\r\n let chart = getDefaultChartobject();\r\n\r\n if(widget.IsStacked){\r\n chart.type = isGroupByFieldDateTime(widget.GroupByFieldDataType) ? \"stackedcolumn2d\" : \"scrollstackedcolumn2d\";\r\n }else {\r\n chart.type = isGroupByFieldDateTime(widget.GroupByFieldDataType) ? \"mscolumn2d\" : \"scrollcolumn2d\";\r\n }\r\n\r\n let chartInfo = getDefaultChartInfo(widget);\r\n chartInfo.scrollPosition = \"top\";\r\n chartInfo.scrollPadding = \"8\";\r\n chartInfo.flatScrollBars = \"1\";\r\n chartInfo.showPercentValues = widget.ShowValueAsNumber ? \"0\" : \"1\";\r\n chartInfo.showLegend = widget.ShowLegend ? '1' : '0';\r\n setLineDash(chartInfo);\r\n \r\n chartInfo.chartTopMargin = \"10\";\r\n chartInfo.chartBottomMargin = \"10\";\r\n chartInfo.legendPosition= getWidgetLegendPosition(widget);\r\n chart.dataSource = getStackedDataSource(chartInfo, seriesMeasures, widget);\r\n return chart;\r\n}\r\n\r\nfunction getClusteredLineObject(seriesMeasures: SeriesMeasure[], widget: ReactWidgetPM): ChartObject {\r\n let chart = getDefaultChartobject();\r\n chart.type = isGroupByFieldDateTime(widget.GroupByFieldDataType) ? \"msline\" : \"scrollline2d\";\r\n\r\n let chartInfo = getDefaultChartInfo(widget);\r\n chartInfo.scrollPosition = \"top\"; \r\n chartInfo.scrollPadding = \"8\";\r\n chartInfo.flatScrollBars = \"1\";\r\n chartInfo.showPercentValues = widget.ShowValueAsNumber ? \"0\" : \"1\";\r\n chartInfo.showLegend = widget.ShowLegend ? '1' : '0';\r\n setLineDash(chartInfo);\r\n \r\n chartInfo.chartTopMargin = \"10\";\r\n chartInfo.chartBottomMargin = \"10\";\r\n chartInfo.legendPosition= getWidgetLegendPosition(widget);\r\n\r\n chart.dataSource = getStackedDataSource(chartInfo, seriesMeasures, widget);\r\n return chart;\r\n}\r\n\r\n\r\nfunction getLineObject(seriesMeasures: SeriesMeasure[], widget: ReactWidgetPM): ChartObject {\r\n let chart = getDefaultChartobject();\r\n chart.type = isGroupByFieldDateTime(widget.GroupByFieldDataType) ? \"msline\" : \"scrollline2d\";\r\n \r\n let chartInfo = getDefaultChartInfo(widget);\r\n chartInfo.scrollPosition = \"top\";\r\n chartInfo.scrollPadding = \"8\";\r\n chartInfo.flatScrollBars = \"1\";\r\n chartInfo.showPercentValues = widget.ShowValueAsNumber ? \"0\" : \"1\";\r\n chartInfo.showLegend = widget.ShowLegend ? '1' : '0';\r\n setLineDash(chartInfo);\r\n chartInfo.chartTopMargin = \"20\";\r\n chartInfo.chartBottomMargin = \"10\";\r\n chartInfo.chartLeftMargin = \"20\";\r\n chartInfo.chartRightMargin = \"50\";\r\n chartInfo.anchorradius = \"5\";\r\n chartInfo.canvasBottomPadding = \"10\";\r\n chartInfo.canvasTopPadding = \"10\";\r\n chartInfo.legendPosition = getWidgetLegendPosition(widget);\r\n\r\n chart.dataSource = getCategoriesBasedDataSource(chartInfo, seriesMeasures, widget);\r\n return chart;\r\n}\r\n\r\nfunction getDonutObject(seriesMeasures: SeriesMeasure[], widget: ReactWidgetPM): ChartObject {\r\n let chart = getDefaultChartobject();\r\n chart.type = \"doughnut2d\";\r\n\r\n let chartInfo = getDefaultChartInfo(widget);\r\n chartInfo.labelFontSize = defautFontSize;\r\n chartInfo.labelFont = defautFont;\r\n chartInfo.manageLabelOverflow = \"1\";\r\n chartInfo.useEllipsesWhenOverflow = \"1\";\r\n chartInfo.enableSmartLabels = \"1\";\r\n chartInfo.legendPosition = getWidgetLegendPosition(widget);\r\n\r\n setPieDonutLegends(chartInfo, widget);\r\n chart.dataSource = getSimpleDataSource(chartInfo, seriesMeasures, widget);\r\n return chart;\r\n}\r\n\r\nfunction getPieObject(seriesMeasures: SeriesMeasure[], widget: ReactWidgetPM): ChartObject {\r\n let chart = getDefaultChartobject();\r\n chart.type = \"pie2d\";\r\n\r\n let chartInfo = getDefaultChartInfo(widget);\r\n chartInfo.labelFontSize = defautFontSize;\r\n chartInfo.labelFont = defautFont;\r\n chartInfo.manageLabelOverflow = \"1\";\r\n chartInfo.useEllipsesWhenOverflow = \"1\";\r\n chartInfo.enableSmartLabels = \"1\";\r\n setPieDonutLegends(chartInfo, widget);\r\n chart.dataSource = getSimpleDataSource(chartInfo, seriesMeasures, widget);\r\n chartInfo.legendPosition = getWidgetLegendPosition(widget);\r\n return chart;\r\n}\r\n\r\nconst isGroupByFieldDateTime = (GroupByFieldDataType : any)=> {\r\n return GroupByFieldDataType == \"DateTime\" || GroupByFieldDataType == \"Date\";\r\n}\r\n\r\nconst isFirstMeasureTypePercentage = (widget: ReactWidgetPM) => {\r\n return widget && widget.WidgetMeasures && widget.WidgetMeasures[0] && widget.WidgetMeasures[0].MeasureFieldDataType && widget.WidgetMeasures[0].MeasureFieldDataType == 'Percentage';\r\n}\r\n\r\nconst isSecondMeasureTypePercentage = (widget: ReactWidgetPM) => {\r\n return widget && widget.WidgetMeasures && widget.WidgetMeasures[1] && widget.WidgetMeasures[1].MeasureFieldDataType && widget.WidgetMeasures[1].MeasureFieldDataType == 'Percentage';\r\n}\r\n\r\nfunction getColumnObject(seriesMeasures: SeriesMeasure[], widget: ReactWidgetPM): ChartObject {\r\n let chart = getDefaultChartobject();\r\n chart.type = isGroupByFieldDateTime(widget.GroupByFieldDataType) ? \"mscombidy2d\" : \"scrollcombidy2d\";\r\n\r\n let chartInfo = getDefaultChartInfo(widget);\r\n chartInfo.scrollPadding = \"8\";\r\n chartInfo.flatScrollBars = \"1\";\r\n chartInfo.showPercentValues = widget.ShowValueAsNumber ? \"0\" : \"1\";\r\n chartInfo.showLegend = widget.ShowLegend ? '1' : '0';\r\n chartInfo.scrollPosition = \"top\";\r\n setLineDash(chartInfo);\r\n chartInfo.chartTopMargin = \"20\";\r\n chartInfo.chartBottomMargin = \"10\";\r\n chartInfo.chartLeftMargin = \"20\";\r\n chartInfo.chartRightMargin = \"50\";\r\n chartInfo.canvasBottomPadding = \"10\";\r\n setDualyAxis(chartInfo, widget, seriesMeasures);\r\n chart.dataSource = getCategoriesBasedDataSource(chartInfo, seriesMeasures, widget);\r\n chartInfo.legendPosition = getWidgetLegendPosition(widget);\r\n\r\n return chart;\r\n}\r\n\r\nfunction setLineDash(chartInfo: ChartInfo) {\r\n chartInfo.divLineDashed = \"1\";\r\n chartInfo.divLineDashLen = \"5\";\r\n chartInfo.divLineDashGap = \"5\";\r\n chartInfo.divLineColor = \"#E7E7E7\";\r\n chartInfo.divLineAlpha = \"100\";\r\n chartInfo.divLineThickness = \"1\";\r\n}\r\n\r\n\r\nfunction getDefaultChartobject(): ChartObject {\r\n let chart = {} as ChartObject;\r\n chart.type = \"column2d\";\r\n chart.width = \"100%\";\r\n chart.height = \"100%\";\r\n chart.dataFormat = \"json\";\r\n return chart;\r\n}\r\n\r\nconst getXaxisTitle = (widget: ReactWidgetPM) => {\r\n if(widget.TypeCode == 'bar'){\r\n return widget.ShowYAxisTitle ? widget.YAxisTitle || \"\" : \"\"\r\n }\r\n\r\n return widget.XAxisTitle || \"\";\r\n}\r\n\r\nconst getYaxisTitle = (widget: ReactWidgetPM) => {\r\n if(widget.TypeCode == 'bar'){\r\n return widget.ShowXAxisTitle ? widget.XAxisTitle || \"\" : \"\"\r\n }\r\n \r\n return widget.YAxisTitle || \"\";\r\n}\r\n\r\nfunction getDefaultChartInfo(widget: ReactWidgetPM): ChartInfo {\r\n let chart = {} as ChartInfo;\r\n chart.theme = \"fusion\";\r\n chart.baseFont = defautFont;\r\n chart.baseFontSize = defautFontSize;\r\n chart.baseFontColor = defautColor;\r\n chart.legendCaptionFontSize = defautFontSize;\r\n chart.legendCaptionFontColor = defautColor;\r\n chart.legendCaptionFont = defautFont;\r\n chart.labelFontColor = defautColor;\r\n chart.labelFont = defautFont;\r\n chart.legendItemFont = defautFont;\r\n chart.legendItemFontSize = defautFontSize;\r\n chart.sYAxisNameFont = defautFont;\r\n chart.sYAxisNameFontSize = defautFontSize;\r\n chart.sYAxisNameFontColor = defautColor;\r\n\r\n chart.pYAxisNameFont = defautFont;\r\n chart.pYAxisNameFontSize = defautFontSize;\r\n chart.pYAxisNameFontColor = defautColor;\r\n\r\n chart.xAxisNameFont = defautFont;\r\n chart.xAxisNameFontSize = defautFontSize;\r\n chart.xAxisNameFontColor = defautColor;\r\n\r\n chart.yAxisNameFont = defautFont;\r\n chart.yAxisNameFontSize = defautFontSize;\r\n chart.yAxisNameFontColor = defautColor;\r\n chart.drawCrossLine = \"0\";\r\n \r\n chart.xAxisName = widget.ShowXAxisTitle && widget.XAxisTitle ? widget.XAxisTitle : \"\";\r\n chart.yAxisName = widget.ShowYAxisTitle && widget.YAxisTitle ? widget.YAxisTitle : \"\";\r\n chart.labelDisplay = widget.XAxisLabelsDisplay ? widget.XAxisLabelsDisplay : \"Auto\";\r\n chart.slantLabel = \"1\"\r\n chart.labelFontSize = widget.XAxisLabelsFontSize ? widget.XAxisLabelsFontSize + \"\" : \"10\";\r\n\r\n chart.showValues = widget.ShowValue ? \"1\" : '0';\r\n chart.valuePosition = widget.ShowValue && widget.ValuePosition ? widget.ValuePosition : 'Outside';\r\n\r\n let isValuePositionInside = widget.ShowValue && widget.ValuePosition && widget.ValuePosition.toLowerCase() == 'inside';\r\n\r\n if(widget.ShowValue && widget.ValuePosition && isColumnOrBarChart(widget)) { \r\n chart.placeValuesInside = widget.ValuePosition.toLowerCase() == 'inside' ? \"1\" : \"0\"\r\n }\r\n\r\n if(widget.IsStacked && isValuePositionInside && isColumnOrBarChart(widget)) { \r\n chart.minPlotHeightForValue = \"35\"\r\n }\r\n\r\n if(isValuePositionInside && isPieOrDonutChart(widget)) { \r\n chart.minAngleForValue = \"27\"\r\n }\r\n\r\n chart.numberSuffix = isFirstMeasureTypePercentage(widget) ? \"%\" : null;\r\n\r\n let _numberSeparatorSettings = getGlobalNumberFormatting();\r\n chart.thousandSeparator = _numberSeparatorSettings.thousandsSeparator;\r\n chart.decimalSeparator = _numberSeparatorSettings.decimalSeparator;\r\n\r\n chart.palettecolors = \"#369CFB, #FCAF16, #EE5F77, #4AC76F, #935BE0, #FAD337, #32C7C7, #EB67D0, #3C9957, #FF7D4B, #78A6FF, #35838F, #BAA9F3, #C1DA72, #F0AEAD, #246EAB\";\r\n chart.enableSlicing = \"0\";\r\n chart.enableRotation = \"0\";\r\n chart.chartTopMargin = \"10\";\r\n chart.chartBottomMargin = \"10\";\r\n chart.chartLeftMargin = \"40\";\r\n chart.chartRightMargin = \"40\";\r\n chart.toolTipBgColor = \"#FFFFFF\";\r\n chart.showToolTipShadow = \"1\";\r\n chart.plotHoverEffect = \"0\";\r\n chart.scrollHeight = \"6\";\r\n chart.scrollWidth = \"6\";\r\n chart.plotColorinTooltip = \"0\";\r\n chart.formatNumberScale= \"0\"\r\n return chart;\r\n}\r\n\r\nfunction setPieDonutLegends(chart: ChartInfo, widget: ReactWidgetPM): void {\r\n chart.showLabels = widget.LabelsPosition == 'InLegend' ? '0' : '1';\r\n chart.showLegend = widget.ShowLegend ? '1' : '0';\r\n setOnChartLegend(chart, widget);\r\n setChartInLegend(chart, widget);\r\n}\r\n\r\nfunction getWidgetLegendPosition(widget: ReactWidgetPM) {\r\n if(widget.LegendPosition) return widget.LegendPosition;\r\n\r\n return widget.TypeCode == 'pie' || widget.TypeCode == 'donut' ? \"right\" : \"bottom\"\r\n}\r\n\r\nfunction isColumnOrBarChart(widget: ReactWidgetPM) {\r\n if(!widget) return false;\r\n\r\n return widget.TypeCode == 'column' || widget.TypeCode == 'bar';\r\n}\r\n\r\nfunction isPieOrDonutChart(widget: ReactWidgetPM) {\r\n if(!widget) return false;\r\n \r\n return widget.TypeCode == 'pie' || widget.TypeCode == 'donut';\r\n}\r\n\r\nfunction setOnChartLegend(chart: ChartInfo, widget: ReactWidgetPM) {\r\n if (widget.LabelsPosition != 'InLegend') return;\r\n chart.legendPosition = getWidgetLegendPosition(widget);\r\n chart.legendScrollBgColor = \"#ffffff\";\r\n chart.legendIconScale = 0.75;\r\n chart.scrollShowButtons = \"0\";\r\n chart.scrollShowButtons = \"0\";\r\n chart.legendCaptionAlignment = \"right\";\r\n chart.alignLegendWithCanvas = \"1\";\r\n chart.showPercentValues = widget.ShowValueAsNumber ? \"0\" : \"1\";\r\n chart.chartRightMargin = \"20\";\r\n}\r\n\r\nfunction setChartInLegend(chart: ChartInfo, widget: ReactWidgetPM) {\r\n if (widget.LabelsPosition == 'InLegend') return;\r\n chart.pieRadius = \"70%\";\r\n chart.showPercentValues = widget.ShowValueAsNumber ? \"0\" : \"1\";\r\n}\r\n\r\nfunction setDualyAxis(chartInfo: ChartInfo, widget: ReactWidgetPM, seriesMeasures: SeriesMeasure[]) {\r\n chartInfo.showSecondaryLimits = \"0\";\r\n chartInfo.showDivLineSecondaryValue = \"0\";\r\n \r\n if (!widget) return;\r\n if (!widget.WidgetMeasures) return;\r\n if (widget.WidgetMeasures.length < 2) return;\r\n if (!widget.WidgetMeasures[1].PlotonSecondAxis) return;\r\n\r\n chartInfo.showSecondaryLimits = \"1\";\r\n chartInfo.showDivLineSecondaryValue = \"1\";\r\n chartInfo.pYAxisNameBorderPadding = 0;\r\n chartInfo.sYAxisNameBorderPadding = 0;\r\n chartInfo.sNumberSuffix = isSecondMeasureTypePercentage(widget) ? \"%\" : null;\r\n\r\n var textLength = Math.max(seriesMeasures[0].Name.length, seriesMeasures[1].Name.length);\r\n chartInfo.pYAxisName = getTitle(seriesMeasures[0]?.Name , textLength);\r\n chartInfo.sYAxisname = getTitle(seriesMeasures[1]?.Name, textLength);\r\n}\r\n\r\nfunction getTitle(text: string, maxLenght: number): string {\r\n var textLenght = text.length;\r\n if (textLenght >= maxLenght) return text.replace(/\\s+/g, ' ');\r\n\r\n var neededSpaces = Math.ceil((maxLenght - textLenght) / 2);\r\n var space = ' '\r\n text = space.repeat(neededSpaces) + text + space.repeat(neededSpaces);\r\n return text.replace(/\\s+/g, ' ');\r\n}\r\n\r\n","import { ChartObject } from \"fusioncharts\";\r\nimport { ReactWidgetPM } from \"../../../../types/widget\";\r\nimport { ChartInfo } from \"./FusionChartObjectHelper\";\r\n\r\nexport class FusionChartHelper {\r\n private chart: ChartObject;\r\n private widget: ReactWidgetPM;\r\n private pieRadius: number;\r\n private legendWidth: string;\r\n\r\n constructor(widget: ReactWidgetPM, chart: ChartObject) {\r\n this.chart = chart;\r\n this.widget = widget;\r\n }\r\n\r\n public getPieRadius(): number {\r\n return this.pieRadius;\r\n }\r\n\r\n public getLegendWidth(): string {\r\n return this.legendWidth;\r\n }\r\n\r\n public trimChartLabels(chartWidth: number, chartHeight: number) {\r\n if (!this.widget || (this.widget.TypeCode != \"pie\" && this.widget.TypeCode != \"donut\")) return;\r\n if (!this.chart) return;\r\n\r\n var dataSource = this.chart?.dataSource;\r\n if (!dataSource) return;\r\n\r\n var chartInfo = (dataSource as any).chart as ChartInfo;\r\n\r\n if (this.widget.LabelsPosition == 'InLegend') this.handleLegendWidth(chartWidth, chartHeight, chartInfo);\r\n else this.handlePieRadius(chartHeight, chartInfo);\r\n }\r\n\r\n handlePieRadius(chartHeight: number, chartInfo: ChartInfo) {\r\n let chartMinumunHeight = 236;\r\n var startPercantage = 70;\r\n let stepHeight = 60;\r\n\r\n var step = Math.floor((chartHeight - chartMinumunHeight) / stepHeight);\r\n if (step < 0) step = 0;\r\n\r\n\r\n var pieRadius = startPercantage - (step * 10);\r\n if (pieRadius < 60) pieRadius = 60;\r\n\r\n if (window.innerWidth > 1700) {\r\n this.pieRadius = pieRadius;\r\n chartInfo.pieRadius = pieRadius + \"%\";\r\n return;\r\n }\r\n\r\n let reducedValue = Math.floor((1700 - window.innerWidth) / 100) + 1;\r\n if (reducedValue > 5) reducedValue = 5;\r\n pieRadius = pieRadius - (reducedValue * 5)\r\n this.pieRadius = pieRadius;\r\n chartInfo.pieRadius = pieRadius + \"%\";\r\n }\r\n\r\n handleLegendWidth(chartWidth: number, chartHeight: number, chartInfo: ChartInfo) {\r\n if (chartWidth < 730) chartInfo.legendWidth = \"200\";\r\n if (chartWidth >= 730) chartInfo.legendWidth = \"400\";\r\n if (chartWidth >= 1000) chartInfo.legendWidth = \"500\";\r\n this.legendWidth = chartInfo.legendWidth;\r\n }\r\n\r\n}\r\n","export const mainYellowColor = \"#F6CF33\"\r\nexport const mainRedColor = \"#EE5F77\"\r\nexport const mainGreenColor = \"#4AC76F\"\r\nexport const mainTurquoiseColor = \"#32C7C7\"\r\nexport const mainBlueColor = \"#369CFB\"\r\nexport const mainPurpleColor = \"#935BE0\"\r\nexport const mainOrangeColor = \"#FAAD14\"\r\n\r\nexport const lightYellowColor = \"#FBE799\"\r\nexport const lightRedColor = \"#F7AFBB\"\r\nexport const lightGreenColor = \"#A4E3B7\"\r\nexport const lightTurquoiseColor = \"#99E3E3\"\r\nexport const lightBlueColor = \"#9BCDFD\"\r\nexport const lightPurpleColor = \"#C9ADF0\"\r\nexport const lightOrangeColor = \"#FDD689\"\r\n\r\nexport const grey1Color = \"#F6F6F6\"\r\nexport const grey2Color = \"#F0F0F0\"\r\nexport const grey3Color = \"#D9D9D9\"\r\nexport const grey4Color = \"#A4A4A4\"\r\n\r\nexport const plotColorsDictionary = {\r\n plotColor0 : \"#369CFB\",\r\n plotColor1 : \"#FCAF16\",\r\n plotColor2 : \"#EE5F77\",\r\n plotColor3 : \"#4AC76F\",\r\n plotColor4 : \"#935BE0\",\r\n plotColor5 : \"#FAD337\",\r\n plotColor6 : \"#32C7C7\",\r\n plotColor7 : \"#EB67D0\",\r\n plotColor8 : \"#3C9957\",\r\n plotColor9 : \"#FF7D4B\",\r\n plotColor10 : \"#78A6FF\",\r\n plotColor11 : \"#35838F\",\r\n plotColor12 : \"#BAA9F3\",\r\n plotColor13 : \"#C1DA72\",\r\n plotColor14 : \"#F0AEAD\",\r\n plotColor15 : \"#246EAB\",\r\n}","import { lightBlueColor, lightGreenColor, lightOrangeColor, lightPurpleColor, lightRedColor, lightTurquoiseColor, lightYellowColor, mainBlueColor, mainGreenColor, mainOrangeColor, mainPurpleColor, mainRedColor, mainTurquoiseColor, mainYellowColor, plotColorsDictionary } from \"./FusionColors\";\r\n\r\nexport interface ChartInfo {\r\n theme: string;\r\n scrollPosition: string;\r\n scrollHeight: string;\r\n scrollWidth: string;\r\n scrollPadding: string;\r\n flatScrollBars: string;\r\n enableSlicing: string;\r\n chartLeftMargin: string;\r\n chartTopMargin: string;\r\n chartRightMargin: string;\r\n chartBottomMargin: string;\r\n baseFont: string;\r\n baseFontSize: string;\r\n showPercentValues: string;\r\n showValues: string;\r\n showLegend: string;\r\n lineColor: string;\r\n divLineDashed: string;\r\n divLineDashLen: string;\r\n divLineDashGap: string;\r\n divLineColor: string;\r\n divLineThickness: string;\r\n divLineAlpha: string;\r\n enableRotation: string;\r\n legendItemFont: string;\r\n legendItemFontSize: string;\r\n legendCaptionFont: string;\r\n legendCaptionFontSize: string;\r\n labelFont: string;\r\n labelFontSize: string;\r\n toolTipBorderColor: string;\r\n toolTipBgAlpha: string;\r\n showToolTipShadow: string;\r\n toolTipBgColor: string;\r\n plottooltext: string;\r\n anchorradius: string;\r\n canvasBottomPadding: string;\r\n canvasTopPadding: string;\r\n labelDisplay: string;\r\n slantLabel: string;\r\n manageLabelOverflow: string;\r\n useEllipsesWhenOverflow: string;\r\n enableSmartLabels: string;\r\n pieRadius: string;\r\n doughnutRadius: string;\r\n baseFontColor: string;\r\n legendCaptionFontColor: string;\r\n labelFontColor: string;\r\n plotColorinTooltip: string;\r\n showLabels: string;\r\n legendPosition: string;\r\n legendScrollBgColor: string;\r\n legendIconScale: number;\r\n scrollShowButtons: string;\r\n legendCaptionAlignment: string;\r\n legendWidth: string;\r\n alignLegendWithCanvas: string;\r\n centerLabelBold: string;\r\n showSecondaryLimits: string;\r\n showDivLineSecondaryValue: string;\r\n pYAxisName: string;\r\n sYAxisname: string;\r\n sYAxisNameFont: string;\r\n sYAxisNameFontColor: string;\r\n sYAxisNameFontSize: string;\r\n pYAxisNameFont: string;\r\n pYAxisNameFontColor: string;\r\n pYAxisNameFontSize: string;\r\n sYAxisNameBorderPadding: number;\r\n pYAxisNameBorderPadding: number;\r\n xAxisNameFont: string;\r\n xAxisName: string;\r\n xAxisNameFontSize: string;\r\n xAxisNameFontColor: string;\r\n yAxisNameFont: string;\r\n yAxisNameFontSize: string;\r\n yAxisNameFontColor: string;\r\n yAxisName: string;\r\n adjustDiv: string;\r\n placeValuesInside: string;\r\n valuePosition: string;\r\n minPlotHeightForValue: string;\r\n minAngleForValue: string;\r\n drawCrossLine: string;\r\n palettecolors: string;\r\n plotHoverEffect: string;\r\n numberSuffix: string | null;\r\n sNumberSuffix: string | null;\r\n decimalSeparator: string | null;\r\n thousandSeparator: string | null;\r\n formatNumberScale: string | null;\r\n manageResize: string | null;\r\n valueBelowPivot: string | null;\r\n showValue: string | null;\r\n}\r\n\r\n\r\nexport function getSeriesPositionColor(position: number): string | null {\r\n switch (position) {\r\n case 1: return mainBlueColor;\r\n case 2: return mainGreenColor;\r\n case 3: return mainYellowColor;\r\n case 4: return mainTurquoiseColor;\r\n case 5: return mainPurpleColor;\r\n case 6: return mainOrangeColor;\r\n case 7: return mainRedColor;\r\n default: return null;\r\n }\r\n}\r\n\r\nexport function getSeriesHoverPositionColor(position: number): string | null {\r\n switch (position) {\r\n case 1: return lightBlueColor;\r\n case 2: return lightGreenColor;\r\n case 3: return lightYellowColor;\r\n case 4: return lightTurquoiseColor;\r\n case 5: return lightPurpleColor;\r\n case 6: return lightOrangeColor;\r\n case 7: return lightRedColor;\r\n default: return null;\r\n }\r\n}\r\n\r\nexport const getPlotColorByIndexOrder = (index: number) => {\r\n let _index = index;\r\n\r\n if(_index >= 16) {\r\n //This conversion make sure that we always in the fusion colors range [0 - 15];\r\n // fusuin uses round-robin way for color selection.\r\n _index = _index % 16;\r\n }\r\n\r\n switch (_index) {\r\n case 0: return plotColorsDictionary.plotColor0;\r\n case 1: return plotColorsDictionary.plotColor1;\r\n case 2: return plotColorsDictionary.plotColor2;\r\n case 3: return plotColorsDictionary.plotColor3;\r\n case 4: return plotColorsDictionary.plotColor4;\r\n case 5: return plotColorsDictionary.plotColor5;\r\n case 6: return plotColorsDictionary.plotColor6;\r\n case 7: return plotColorsDictionary.plotColor7;\r\n case 8: return plotColorsDictionary.plotColor8;\r\n case 9: return plotColorsDictionary.plotColor9;\r\n case 10: return plotColorsDictionary.plotColor10;\r\n case 11: return plotColorsDictionary.plotColor11;\r\n case 12: return plotColorsDictionary.plotColor12;\r\n case 13: return plotColorsDictionary.plotColor13;\r\n case 14: return plotColorsDictionary.plotColor14;\r\n case 15: return plotColorsDictionary.plotColor15;\r\n default: return \"#0566c2\";\r\n }\r\n}\r\n\r\n","import React, { forwardRef, useImperativeHandle, useRef, useState } from \"react\";\r\nimport ReactFC from 'react-fusioncharts';\r\nimport { DashboardDataBinding } from \"../../../../types/DashboardDataBinding\";\r\nimport { DataPointSelection } from \"../../../../types/SeriesMeasure\";\r\nimport { ReactWidgetPM } from \"../../../../types/widget\";\r\nimport FusionCharts, { ChartObject } from 'fusioncharts';\r\nimport { FusionCharts as fusionCharts } from 'fusioncharts';\r\nimport Charts from 'fusioncharts/fusioncharts.charts';\r\nimport FusionTheme from 'fusioncharts/themes/fusioncharts.theme.fusion';\r\nimport { useEffect } from \"react\";\r\nimport { DashboardAnalyticsService } from \"../../../../services/DashboardAnalyticsService\";\r\nimport { ProgressSpinner } from \"primereact/progressspinner\";\r\nimport { BuildFusionChartObject } from \"./FusionChartObjectBuilder\";\r\nimport useResizeObserver from \"use-resize-observer\";\r\nimport { FusionChartHelper } from \"./FusionChartHelper\";\r\nimport { Session } from \"../../../../services/session\";\r\nimport { ReactComponent as RedWarningIcon } from \"../../../../assets/images/red-warning.svg\"\r\nimport { v4 as uuidv4 } from 'uuid';\r\nimport { getPlotColorByIndexOrder } from \"./FusionChartObjectHelper\";\r\nimport { isNullOrUndefinedOrEmpty } from \"../../../../Utils/General\";\r\n\r\nReactFC.fcRoot(FusionCharts, Charts, FusionTheme);\r\n\r\nFusionCharts.options['license']({\r\n key: 'prD4C-8eiA7A3A3C7E6G4B4A3J4C7B2D3D2nyqE1C3fd1npaE4D4tlA-21D7E4F4F1F1E1F4F1A10A8C2C5F5E2F2D1hwqD1B5D1aG4A19A32twbC6D3G4lhJ-7A9C11A5B-13ddA2I3A1B9B3D7A2B4G2H3H1F-7smC8B2XB4cetB8A7A5mxD3SG4F2tvgB2A3B2E4C3I3C7B3A4A3A2D3D2G4J-7==',\r\n creditLabel: false,\r\n});\r\n\r\nexport type FusionChartProps = {\r\n widget: ReactWidgetPM | undefined,\r\n widgetRef: ReactWidgetPM | undefined,\r\n dataBinding: DashboardDataBinding;\r\n onSelectDataPoint: (dataPointSelection: DataPointSelection) => void;\r\n};\r\nconst FusionChart = forwardRef((props: FusionChartProps, comRef) => {\r\n const [dataLoaded, setDataLoaded] = useState<boolean>(false);\r\n const [error, setError] = useState<string>();\r\n const [fusionKey, setFusionKey] = useState(uuidv4());\r\n const chartData = useRef<any>(null);\r\n const [resizeTimer, setResizeTimer] = useState<any | null>(null);\r\n const axiosController = useRef<AbortController | null>(new AbortController());\r\n\r\n \r\n const widget = useRef<ReactWidgetPM>();\r\n const [args, setArgs] = useState<ChartObject>({});\r\n const [fChart, setFchart] = useState<fusionCharts>();\r\n const [chartContainerId, setChartContainerId] = useState<any>(uuidv4());\r\n //(Math.random() + 1).toString(36).substring(7);\r\n const progressRef = useRef<any>(null);\r\n const fusionRef = useRef<any>(null);\r\n const fusionChartHelper = useRef<FusionChartHelper>();\r\n const isDummyChangesActive = useRef(false);\r\n\r\n useEffect(() => {\r\n axiosController.current = new AbortController();\r\n widget.current = props.widget;\r\n RefreshData();\r\n\r\n props.dataBinding?.widgetUpdated.subscribe(updatedWidget => {\r\n if (updatedWidget?.key != widget.current?.key) return;\r\n widget.current = {...updatedWidget};\r\n if(chartData && chartData.current){\r\n let _data = JSON.parse(JSON.stringify(chartData.current));\r\n isDummyChangesActive.current = true;\r\n handleData(_data, true); \r\n }\r\n });\r\n\r\n window.addEventListener(\"resize\", handleResize);\r\n return () => {\r\n window.removeEventListener(\"resize\", handleResize);\r\n setDataLoaded(false);\r\n if(axiosController && axiosController?.current?.abort){\r\n axiosController?.current?.abort();\r\n }\r\n };\r\n }, []);\r\n\r\n\r\n const handleResize = () => {\r\n clearTimeout(resizeTimer);\r\n setResizeTimer(\r\n setTimeout(() => {\r\n HandleSizeChange();\r\n }, 200)\r\n );\r\n }\r\n\r\n useImperativeHandle(comRef, () => ({\r\n onResizeFinish() {\r\n HandleSizeChange();\r\n }\r\n }));\r\n\r\n const HandleSizeChange = () => {\r\n if (!widget || (widget.current?.TypeCode != \"pie\" && widget.current?.TypeCode != \"donut\")) return;\r\n setTimeout(()=> {\r\n var oldPieRadius = fusionChartHelper?.current?.getPieRadius();\r\n var oldLegendWidth = fusionChartHelper?.current?.getLegendWidth();\r\n\r\n fusionChartHelper?.current?.trimChartLabels(fusionRef?.current?.offsetWidth, fusionRef?.current?.offsetHeight)!;\r\n \r\n if (widget.current?.LabelsPosition != 'InLegend' && oldPieRadius == fusionChartHelper?.current?.getPieRadius()) return;\r\n if (widget.current?.LabelsPosition == 'InLegend' && oldLegendWidth == fusionChartHelper?.current?.getLegendWidth()) return;\r\n\r\n setDataLoaded(false);\r\n setTimeout(()=> {\r\n setDataLoaded(true);\r\n }, 100);\r\n }, 100);\r\n }\r\n\r\n const RefreshData = () => {\r\n if (Session.Tenant == 0) {\r\n handleData(null);\r\n return;\r\n }\r\n\r\n var dashboardAnalyticsService = new DashboardAnalyticsService();\r\n var postWidget: any = { ...widget.current };\r\n postWidget.onChange = undefined;\r\n\r\n let signal :any= undefined;\r\n if(axiosController) {\r\n axiosController?.current?.abort();\r\n let updatedAxiosController = new AbortController();\r\n axiosController.current= updatedAxiosController\r\n signal = updatedAxiosController?.signal;\r\n }\r\n\r\n dashboardAnalyticsService.getData(postWidget as ReactWidgetPM, signal).then(result => {\r\n handleData(result?.data);\r\n chartData.current = result?.data;\r\n setDataLoaded(true);\r\n }, error => {\r\n console.log('error', error);\r\n if (error?.response?.data?.ErrorMessage) setError(error?.response?.data?.ErrorMessage);\r\n else setError(error.message);\r\n setDataLoaded(true);\r\n })\r\n }\r\n\r\n const handleData = (data: any, isDummyChange: boolean = false): void => {\r\n let chart = BuildFusionChartObject(data, widget.current!);\r\n fusionChartHelper.current = new FusionChartHelper(widget.current!, chart);\r\n fusionChartHelper?.current.trimChartLabels(progressRef?.current?.offsetWidth, progressRef?.current?.offsetHeight)!;\r\n setArgs(chart);\r\n \r\n if(!isDummyChange){\r\n setDataLoaded(true);\r\n }else{\r\n setTimeout(() => {\r\n isDummyChangesActive.current = false;\r\n }, 100);\r\n }\r\n }\r\n\r\n const dataplotClick = (eventObj: any, dataObj: any): void => {\r\n props.onSelectDataPoint({\r\n GroupById: dataObj.id.groupbyid,\r\n MeasureFieldId: dataObj.id.measurefieldid,\r\n MeasureCode: dataObj.id.measurecode,\r\n Formula: dataObj.id.formula,\r\n Widget: widget.current,\r\n GroupByIdSec: dataObj.id.groupbyidsec\r\n });\r\n };\r\n\r\n const { ref } = useResizeObserver<HTMLDivElement>({\r\n onResize: ({ width, height }) => {\r\n fChart?.resizeTo(width as number, height as number);\r\n },\r\n });\r\n\r\n const renderComplete = (chart: any): void => {\r\n setFchart(chart);\r\n }\r\n\r\n const handlePieDonutChartTooltip = (chartDataSource: any) => {\r\n if(chartDataSource && chartDataSource.data && chartDataSource.data.length) {\r\n chartDataSource.data.forEach((item: any, index: number) => {\r\n let color = getPlotColorByIndexOrder(index)\r\n item.tooltext = item.tooltext.replaceAll(\"transparent\", color);\r\n })\r\n\r\n setArgs({...args, dataSource: chartDataSource});\r\n }\r\n }\r\n\r\n const handleOtherChartsTooltip = (chartDataSource: any) => {\r\n if(chartDataSource && chartDataSource.dataset && chartDataSource.dataset.length) {\r\n chartDataSource.dataset.forEach((el: any, index: number) => {\r\n el.data.forEach((item: any) => {\r\n let color = getPlotColorByIndexOrder(index)\r\n item.tooltext = item.tooltext.replaceAll(\"transparent\", color);\r\n })\r\n })\r\n\r\n setArgs({...args, dataSource: chartDataSource});\r\n }\r\n }\r\n\r\n const loaded = (event: any) => {\r\n if(isDummyChangesActive && isDummyChangesActive.current) return;\r\n\r\n let chartDataSource = event.sender.args && event.sender.args.dataSource ? event.sender.args.dataSource : null;\r\n \r\n let isPieOrDonutChart = widget.current?.TypeCode == 'pie' || widget.current?.TypeCode == 'donut';\r\n \r\n if(isPieOrDonutChart){\r\n handlePieDonutChartTooltip(chartDataSource);\r\n }else {\r\n handleOtherChartsTooltip(chartDataSource);\r\n }\r\n }\r\n\r\n return (\r\n !dataLoaded ?\r\n <div ref={progressRef} className={'dl-full-hight dl-flex-content-center spinner-custome'}>\r\n <ProgressSpinner style={{ width: '40px', height: '40px' }} strokeWidth=\"4\" animationDuration=\"2s\" />\r\n </div>\r\n :\r\n !error ?\r\n <div className={'db-fc-parent-container'} ref={fusionRef}>\r\n <div className={'db-fc-container'} key={fusionKey} ref={ref} id={chartContainerId}>\r\n <ReactFC\r\n {...args}\r\n fcEvent-dataplotClick={dataplotClick}\r\n fcEvent-loaded={loaded}\r\n onRender={renderComplete}\r\n />\r\n </div>\r\n </div>\r\n : <div className=\"dl-flex-content-center dl-full-hight\" style={{ width: '100%' }}>\r\n <div className=\"dl-tooltip\">\r\n <RedWarningIcon className=\"red-warning-icon\" />\r\n <span className=\"dl-tooltiptext\">{error}</span>\r\n </div>\r\n </div>\r\n )\r\n});\r\nexport default FusionChart;\r\n\r\n","import React, { forwardRef, useImperativeHandle, useRef, useState } from \"react\";\r\nimport ReactFC from 'react-fusioncharts';\r\nimport { DashboardDataBinding } from \"../../../../types/DashboardDataBinding\";\r\nimport { DataPointSelection } from \"../../../../types/SeriesMeasure\";\r\nimport { ReactWidgetPM } from \"../../../../types/widget\";\r\nimport FusionCharts, { ChartObject } from 'fusioncharts';\r\nimport Charts from 'fusioncharts/fusioncharts.widgets';\r\nimport FusionTheme from 'fusioncharts/themes/fusioncharts.theme.fusion';\r\nimport { useEffect } from \"react\";\r\nimport { DashboardAnalyticsService } from \"../../../../services/DashboardAnalyticsService\";\r\nimport { ProgressSpinner } from \"primereact/progressspinner\";\r\nimport { getGaugeObject } from \"./FusionChartObjectBuilder\";\r\nimport { Session } from \"../../../../services/session\";\r\nimport { ReactComponent as RedWarningIcon } from \"../../../../assets/images/red-warning.svg\"\r\nimport { v4 as uuidv4 } from 'uuid';\r\n\r\nReactFC.fcRoot(FusionCharts, Charts, FusionTheme);\r\n\r\nFusionCharts.options['license']({\r\n key: 'prD4C-8eiA7A3A3C7E6G4B4A3J4C7B2D3D2nyqE1C3fd1npaE4D4tlA-21D7E4F4F1F1E1F4F1A10A8C2C5F5E2F2D1hwqD1B5D1aG4A19A32twbC6D3G4lhJ-7A9C11A5B-13ddA2I3A1B9B3D7A2B4G2H3H1F-7smC8B2XB4cetB8A7A5mxD3SG4F2tvgB2A3B2E4C3I3C7B3A4A3A2D3D2G4J-7==',\r\n creditLabel: false,\r\n});\r\n\r\nexport type FusionChartProps = {\r\n widget: ReactWidgetPM | undefined,\r\n widgetRef: ReactWidgetPM | undefined,\r\n dataBinding: DashboardDataBinding;\r\n onSelectDataPoint: (dataPointSelection: DataPointSelection) => void;\r\n};\r\nconst FusionChart = forwardRef((props: FusionChartProps, comRef) => {\r\n const [dataLoaded, setDataLoaded] = useState<boolean>(false);\r\n const [error, setError] = useState<string>();\r\n const [fusionKey, setFusionKey] = useState(uuidv4());\r\n const chartData = useRef<any>(null);\r\n const [resizeTimer, setResizeTimer] = useState<any | null>(null);\r\n const axiosController = useRef<AbortController | null>(new AbortController());\r\n\r\n \r\n const widget = useRef<ReactWidgetPM>();\r\n const [args, setArgs] = useState<ChartObject>({});\r\n const [chartContainerId, setChartContainerId] = useState<any>(uuidv4());\r\n const progressRef = useRef<any>(null);\r\n const fusionRef = useRef<any>(null);\r\n const isDummyChangesActive = useRef(false);\r\n\r\n useEffect(() => {\r\n axiosController.current = new AbortController();\r\n widget.current = props.widget;\r\n getChartData();\r\n\r\n props.dataBinding?.widgetUpdated.subscribe(updatedWidget => {\r\n if (updatedWidget?.key != widget.current?.key) return;\r\n widget.current = {...updatedWidget};\r\n if(chartData && chartData.current){\r\n let _data = JSON.parse(JSON.stringify(chartData.current));\r\n isDummyChangesActive.current = true;\r\n handleData(_data, true); \r\n }\r\n });\r\n\r\n window.addEventListener(\"resize\", handleResize);\r\n return () => {\r\n window.removeEventListener(\"resize\", handleResize);\r\n setDataLoaded(false);\r\n if(axiosController && axiosController?.current?.abort){\r\n axiosController?.current?.abort();\r\n }\r\n };\r\n }, []);\r\n\r\n\r\n const handleResize = () => {\r\n clearTimeout(resizeTimer);\r\n setResizeTimer(\r\n setTimeout(() => {\r\n setFusionKey(uuidv4());\r\n }, 200)\r\n );\r\n }\r\n\r\n useImperativeHandle(comRef, () => ({\r\n onResizeFinish() {\r\n setFusionKey(uuidv4());\r\n }\r\n }));\r\n\r\n const getChartData = () => {\r\n if (Session.Tenant == 0) {\r\n handleData(null);\r\n return;\r\n }\r\n\r\n var dashboardAnalyticsService = new DashboardAnalyticsService();\r\n var postWidget: any = { ...widget.current };\r\n postWidget.onChange = undefined;\r\n\r\n let signal :any= undefined;\r\n if(axiosController) {\r\n axiosController?.current?.abort();\r\n let updatedAxiosController = new AbortController();\r\n axiosController.current= updatedAxiosController\r\n signal = updatedAxiosController?.signal;\r\n }\r\n\r\n dashboardAnalyticsService.getGaugeData(postWidget as ReactWidgetPM, signal).then(result => {\r\n handleData(result?.data);\r\n chartData.current = result?.data;\r\n setDataLoaded(true);\r\n }, error => {\r\n console.log('error', error);\r\n if (error?.response?.data?.ErrorMessage) setError(error?.response?.data?.ErrorMessage);\r\n else setError(error.message);\r\n setDataLoaded(true);\r\n })\r\n }\r\n\r\n const handleData = (data: any, isDummyChange: boolean = false): void => {\r\n let chart = getGaugeObject(data, widget.current!)\r\n setArgs(chart);\r\n \r\n if(!isDummyChange){\r\n setDataLoaded(true);\r\n }else{\r\n setTimeout(() => {\r\n isDummyChangesActive.current = false;\r\n }, 100);\r\n\r\n }\r\n }\r\n \r\n return (\r\n !dataLoaded ?\r\n <div ref={progressRef} className={'dl-full-hight dl-flex-content-center spinner-custome'}>\r\n <ProgressSpinner style={{ width: '40px', height: '40px' }} strokeWidth=\"4\" animationDuration=\"2s\" />\r\n </div>\r\n :\r\n !error ?\r\n <div className={'db-fc-parent-container'} ref={fusionRef}>\r\n <div className={'db-fc-container'} key={fusionKey} id={chartContainerId}>\r\n <ReactFC {...args} />\r\n </div>\r\n </div>\r\n : <div className=\"dl-flex-content-center dl-full-hight\" style={{ width: '100%' }}>\r\n <div className=\"dl-tooltip\">\r\n <RedWarningIcon className=\"red-warning-icon\" />\r\n <span className=\"dl-tooltiptext\">{error}</span>\r\n </div>\r\n </div>\r\n )\r\n});\r\nexport default FusionChart;\r\n\r\n","import React, { forwardRef, useEffect, useImperativeHandle, useRef, useState } from \"react\";\r\nimport { DataPointSelection } from \"../../types/SeriesMeasure\";\r\nimport { ReactWidgetPM } from \"../../types/widget\";\r\nimport { DashboardDataBinding } from '../../types/DashboardDataBinding';\r\nimport CustomChart from \"./ChartsComponents/CustomCharts/CustomChart\";\r\nimport FusionChart from \"./ChartsComponents/FusionCharts/FusionChart\";\r\nimport { isNullOrUndefined } from \"../../Utils/General\";\r\nimport { ReactComponent as DeleteWidgetIcon } from \"../../assets/images/delete-icon.svg\"\r\nimport { ReactComponent as EditWidgetIcon } from \"../../assets/images/edit-icon.svg\"\r\nimport { ReactComponent as CopyWidgetIcon } from \"../../assets/images/copy-icon.svg\"\r\nimport Popup from 'reactjs-popup';\r\nimport { v4 as uuidv4 } from 'uuid';\r\nimport GaugeChart from \"./ChartsComponents/FusionCharts/GaugeChart\";\r\n\r\ntype WidgetCardProps = {\r\n editBtnClicked(widget: any): any;\r\n copyBtnClicked?(id: any): any;\r\n deleteBtnClicked(i: any): any;\r\n widget: ReactWidgetPM | undefined;\r\n widgetRef: ReactWidgetPM | undefined;\r\n el: any;\r\n dateFilter: any;\r\n dataBinding: DashboardDataBinding;\r\n isInEditMode: boolean;\r\n isPreviewModeActive?: boolean;\r\n onSelectDataPoint: (dataPointSelection: DataPointSelection) => void;\r\n}\r\n\r\n\r\nconst WidgetCard = forwardRef((props: WidgetCardProps, comRef) => {\r\n const widget = useRef<ReactWidgetPM>();\r\n const [isLoading, setIsLoading] = useState(false);\r\n const fusionChartRef = useRef<any>(null);\r\n const [triggerId, setTriggerId] = useState(uuidv4());\r\n\r\n const editWidget = () => {\r\n props.editBtnClicked(widget.current)\r\n };\r\n\r\n const copyWidget = () => {\r\n if(props && props.copyBtnClicked){\r\n props.copyBtnClicked(widget.current?.key)\r\n }\r\n };\r\n \r\n useEffect(() => {\r\n widget.current = props.widget;\r\n props.dataBinding?.onEditWidget.subscribe(e => {\r\n if (e?.key != widget.current?.key) return;\r\n setIsLoading(true);\r\n widget.current = { ...e };\r\n setIsLoading(false);\r\n })\r\n\r\n props.dataBinding?.widgetUpdated.subscribe(updatedWidget => {\r\n if (updatedWidget?.key != widget.current?.key) return;\r\n widget.current = {...updatedWidget};\r\n setTriggerId(uuidv4());\r\n });\r\n }, []);\r\n\r\n useImperativeHandle(comRef, () => ({\r\n onResizeFinish() {\r\n fusionChartRef?.current?.onResizeFinish();\r\n }\r\n }));\r\n\r\n const getCSSPropertyValue = (widgetData: ReactWidgetPM | undefined, propName: string, propUnit: string = \"\", propDefaultVal: any = \"\") => {\r\n return widgetData && propName && !isNullOrUndefined(widgetData[propName]) ? widgetData[propName] + propUnit : propDefaultVal || \"\";\r\n }\r\n \r\n const GetChartComponent = () => {\r\n if (isLoading || !widget.current?.TypeCode) return \"\";\r\n if (widget.current?.TypeCode == \"kpi\" || widget.current?.TypeCode == \"table\") return <CustomChart isInEditMode={props.isInEditMode} isPreviewModeActive={props.isPreviewModeActive} dataBinding={props.dataBinding} widget={widget.current} widgetRef={props.widgetRef} onSelectDataPoint={props.onSelectDataPoint} />;\r\n if (widget.current?.TypeCode == \"gauge\") return <GaugeChart ref={fusionChartRef} dataBinding={props.dataBinding} widget={widget.current} widgetRef={props.widgetRef} onSelectDataPoint={props.onSelectDataPoint} />\r\n return <FusionChart ref={fusionChartRef} dataBinding={props.dataBinding} widget={widget.current} widgetRef={props.widgetRef} onSelectDataPoint={props.onSelectDataPoint} />\r\n }\r\n\r\n const isTableWidget = ()=> {\r\n return widget && widget.current && widget.current.TypeCode == 'table';\r\n }\r\n\r\n const getwidgetTitlesContainer = ()=> {\r\n return isTableWidget() ? \"widget-table-titles-container\" : \"widget-titles-container\"\r\n }\r\n\r\n const drilldownToTableData = () => {\r\n props.onSelectDataPoint({\r\n GroupById: undefined,\r\n MeasureFieldId: undefined,\r\n MeasureCode: undefined,\r\n Formula: undefined,\r\n Widget: widget.current,\r\n GroupByIdSec: undefined\r\n });\r\n }\r\n\r\n const isThereTitle = () => {\r\n return widget.current?.Title && widget.current?.Title.length! > 0;\r\n }\r\n\r\n const isThereSubtitle = () => {\r\n return widget.current?.Subtitle && widget.current?.Subtitle.length! > 0;\r\n }\r\n\r\n const tableHintMessage = () => {\r\n return <span className={`table-hint-container ${isTitleAligmentRight() ? \"padding-left-12\" : \"\"}`}>\r\n <span>{\"Showing the first 100 rows\"}</span>\r\n {\r\n !props.isInEditMode && !props.isPreviewModeActive &&\r\n <React.Fragment>\r\n <span>{\"(\"}</span>\r\n <span onClick={drilldownToTableData} className=\"show-more-records\">{\" Show More Records \"}</span>\r\n <span>{\")\"}</span>\r\n </React.Fragment>\r\n }\r\n </span>\r\n }\r\n\r\n const isTitleAligmentRight = () => {\r\n return widget && widget.current && widget.current.TitleAlignment && widget.current.TitleAlignment.toLowerCase() == 'right'\r\n }\r\n\r\n return (\r\n <div className=\"dl-panel\" key={props.el.i} >\r\n <header key={triggerId} className=\"widget-header\">\r\n <div className={`header-contents ${isTableWidget() ? \"border-bottom-light-white\" : \"\"}`}>\r\n {\r\n isTitleAligmentRight() && isTableWidget() && tableHintMessage()\r\n }\r\n\r\n <div style={{ cursor: props.isInEditMode ? \"move\" : \"default\",\r\n justifyContent: isTableWidget() ? getCSSPropertyValue(widget?.current, 'TitleAlignment', '', undefined) : undefined,\r\n flexDirection : isTitleAligmentRight() ? \"row-reverse\" : \"row\"\r\n }} \r\n className={getwidgetTitlesContainer()}>\r\n <div\r\n className=\"title-container\"\r\n style={{ justifyContent: getCSSPropertyValue(widget?.current, 'TitleAlignment', '', undefined) }}>\r\n <Popup\r\n className=\"title-tooltip-container\"\r\n trigger={\r\n <div\r\n className=\"title\"\r\n style={{\r\n fontSize: getCSSPropertyValue(widget.current, 'TitleFontSize', 'px'),\r\n color: getCSSPropertyValue(widget.current, 'TitleFontColor', ''),\r\n textAlign: getCSSPropertyValue(widget?.current, 'TitleAlignment', '', undefined),\r\n }}>\r\n {widget.current?.Title}\r\n </div>\r\n }\r\n position={['top center']}\r\n arrowStyle={{color: '#262626'}}\r\n offsetY={-8}\r\n on={['hover', 'focus']}\r\n >\r\n <span className=\"widget-title-tooltip-text\">{widget.current?.Title}</span>\r\n </Popup>\r\n </div>\r\n\r\n {\r\n isTableWidget() && isThereTitle() && isThereSubtitle() && <div className=\"titles-vertical-seeparator\"></div>\r\n }\r\n\r\n <div\r\n className={ isThereSubtitle() ? \"subtitle\" : \"subtitle margin-top-4\" }\r\n style={{\r\n fontSize: getCSSPropertyValue(widget.current, 'SubtitleFontSize', 'px'),\r\n textAlign: getCSSPropertyValue(widget?.current, 'TitleAlignment', '', undefined),\r\n color: getCSSPropertyValue(widget.current, 'SubtitleFontColor', ''),\r\n minWidth: isThereSubtitle() && isTableWidget() ? '5%' : undefined,\r\n }}>\r\n {widget.current?.Subtitle}\r\n </div>\r\n </div>\r\n \r\n {\r\n !isTitleAligmentRight() && isTableWidget() && tableHintMessage()\r\n }\r\n\r\n {props.isInEditMode &&\r\n <div className={ isThereTitle() ? \"widget-options-container\" : \"widget-options-container margin-top-6\"}>\r\n <EditWidgetIcon onClick={() => editWidget()} />\r\n <CopyWidgetIcon onClick={() => copyWidget()} />\r\n <DeleteWidgetIcon onClick={() => props.deleteBtnClicked(props.widget?.key)} />\r\n </div>\r\n }\r\n </div>\r\n \r\n </header>\r\n <div className=\"dl-dashboard-widget\"> \r\n {GetChartComponent()}\r\n </div>\r\n </div>\r\n );\r\n});\r\n\r\nexport default WidgetCard;\r\n","export function deepClone (obj){\r\n return JSON.parse(JSON.stringify(obj))\r\n}","import { WidthProvider, Responsive, Layout, Layouts } from \"react-grid-layout\";\r\nimport React, { useEffect, useRef, useState } from \"react\";\r\nimport { ReactWidgetPM } from \"../../types/widget\";\r\nimport WidgetCard from \"./WidgetCard\";\r\nimport { DataPointSelection } from \"../../types/SeriesMeasure\";\r\nimport { DashboardDataBinding } from \"../../types/DashboardDataBinding\";\r\nimport { deepClone } from '../../services/clone';\r\nimport useResizeObserver from \"use-resize-observer\";\r\n\r\nconst ResponsiveReactGridLayout = WidthProvider(Responsive);\r\n\r\nexport type DeleteWidgetProps = {\r\n id: string, \r\n layouts: any, \r\n widgets: { lg: ReactWidgetPM[] }\r\n}\r\n\r\ntype DashboardDesignerProps = {\r\n editMode: boolean,\r\n Widgetlayouts: { lg: ReactWidgetPM[] },\r\n openEditWidget: (widget: ReactWidgetPM) => void\r\n onLayoutChange: (layouts: Layouts) => void,\r\n onWidgetDelete: (deleteProps: DeleteWidgetProps) => void,\r\n onCopyWidget?:(id: string) => void,\r\n dataBinding: DashboardDataBinding,\r\n onSelectDataPoint: (dataPointSelection: DataPointSelection) => void\r\n};\r\n\r\nconst DashboardDesigner = (props: DashboardDesignerProps) => {\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 [dateFilter, setDateFilter] = useState<Date | Date[] | undefined>(undefined);\r\n const [isInEditMode, setisInEditMode] = useState(false);\r\n const widgetsDictionaryRef = useRef<{ [k: string]: ReactWidgetPM }>({});\r\n const [widgets, setWidgets] = useState<{ lg: ReactWidgetPM[] }>({ lg: [] });\r\n const gridLayoutComponent = useRef<any>(null);\r\n const entered = useRef<boolean>(false);\r\n const widgetCardRef = useRef<any[]>([]);\r\n\r\n\r\n useEffect(() => {\r\n FillLayout(props.Widgetlayouts);\r\n }, [props.Widgetlayouts]);\r\n\r\n useEffect(() => {\r\n if (props?.dataBinding?.onDeleteWidgetConfirmed) {\r\n props.dataBinding.onDeleteWidgetConfirmed.subscribe(deleteProps => {\r\n if (deleteProps){\r\n deletePanel(deleteProps);\r\n }\r\n });\r\n }\r\n }, []);\r\n\r\n const FillLayout = (dashboardLayouts: { lg: ReactWidgetPM[] }) => {\r\n var clone: { lg: ReactWidgetPM[] } = deepClone(dashboardLayouts);\r\n var layout = createLayout(clone);\r\n FillWidgetDictionary(clone);\r\n setWidgets(clone);\r\n setLayouts(layout);\r\n UpdatePlaceholderDimensions(layout);\r\n }\r\n const FillWidgetDictionary = (clone: { lg: ReactWidgetPM[] }) => {\r\n for (const item of clone.lg) {\r\n widgetsDictionaryRef.current[item.key] = item;\r\n }\r\n }\r\n const createLayout = (dashboardLayouts: { lg: ReactWidgetPM[] }): Layouts => {\r\n var layout: any = { lg: [] };\r\n 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\r\n useEffect(() => {\r\n setisInEditMode(props.editMode);\r\n }, [props.editMode]);\r\n\r\n function onLayoutChange(layout: any, changedLayouts: Layouts) {\r\n UpdateWidget(changedLayouts);\r\n setLayouts(changedLayouts);\r\n UpdatePlaceholderDimensions(changedLayouts);\r\n if (entered.current == false) {\r\n entered.current = true;\r\n return;\r\n }\r\n props.onLayoutChange(changedLayouts);\r\n\r\n }\r\n\r\n function onResizeStop(event: any, oldItem: any) {\r\n widgetCardRef?.current?.find(x => x.i == oldItem.i)?.ref.onResizeFinish(widgetsDictionaryRef.current[oldItem.i].key);\r\n }\r\n\r\n function UpdateWidget(changedLayouts: Layouts) {\r\n for (const item of changedLayouts.lg) {\r\n if (widgetsDictionaryRef.current[item.i]) {\r\n widgetsDictionaryRef.current[item.i].Layout = item;\r\n }\r\n }\r\n }\r\n\r\n const confirmDeleteWidget = (id: string) => {\r\n let deleteWidgetProps: DeleteWidgetProps = {\r\n id: id, \r\n layouts: layouts, \r\n widgets: widgets\r\n }\r\n props.onWidgetDelete(deleteWidgetProps)\r\n }\r\n\r\n function deletePanel(deleteProps: DeleteWidgetProps) {\r\n var newLayouts = { lg: deleteProps.layouts.lg.filter(e => e.i != deleteProps.id) }\r\n setLayouts(newLayouts);\r\n var newWidgets = { lg: deleteProps.widgets.lg.filter(e => e.key != deleteProps.id) }\r\n FillWidgetDictionary(newWidgets);\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 function copyWidget(key: string) {\r\n if(props && props.onCopyWidget){\r\n props.onCopyWidget(key);\r\n }\r\n };\r\n \r\n\r\n function UpdatePlaceholderDimensions(layouts: Layouts) {\r\n if (!layouts)\r\n return;\r\n var max = minimumPlaceholderRowsCount;\r\n for (const layout of layouts['lg']) {\r\n if (layout.y + layout.h > max)\r\n max = layout.y + layout.h;\r\n }\r\n\r\n var newPlaceholderRows = max + 2;\r\n newPlaceholderRows = newPlaceholderRows < minimumPlaceholderRowsCount ? minimumPlaceholderRowsCount : newPlaceholderRows;\r\n setplaceholderRowsArray(Array.from({ length: newPlaceholderRows }).fill(null));\r\n }\r\n\r\n const { ref } = useResizeObserver<HTMLDivElement>({\r\n onResize: ({ }) => {\r\n window.dispatchEvent(new Event('resize'));\r\n },\r\n });\r\n\r\n return (<div ref={ref} className=\"dl-full-hight-scroll\">\r\n <div className=\"dl-box\">\r\n <div className=\"dl-row dl-content\">\r\n <div className=\"dl-grid-container\">\r\n <div className=\"dl-grid dl-grid--bordered\">\r\n {isInEditMode ? placeholderRowsArray.map((e, i) =>\r\n array12.map((e, i) => (\r\n <div key={i}\r\n style={{\r\n height: layoutGridProps.rowHeight,\r\n }}\r\n ></div>\r\n ))\r\n\r\n ) : null}\r\n </div>\r\n\r\n\r\n <ResponsiveReactGridLayout ref={gridLayoutComponent}\r\n {...layoutGridProps}\r\n layouts={layouts}\r\n compactType=\"vertical\"\r\n draggableCancel=\".widget-options-container\"\r\n isDraggable={isInEditMode}\r\n isResizable={isInEditMode}\r\n onWidthChange={() => { }}\r\n onResizeStop={onResizeStop}\r\n onLayoutChange={onLayoutChange}>\r\n\r\n {widgets.lg.map((widget, i) =>\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 widgetRef={widgetsDictionaryRef.current[widget.key]}\r\n el={widget}\r\n dataBinding={props.dataBinding}\r\n dateFilter={dateFilter}\r\n editBtnClicked={editWidget}\r\n deleteBtnClicked={confirmDeleteWidget}\r\n onSelectDataPoint={props.onSelectDataPoint}\r\n copyBtnClicked={copyWidget}\r\n ref={el => {\r\n widgetCardRef.current[i] = {\r\n ref: el,\r\n i: widget.Layout?.i\r\n }\r\n }}\r\n />\r\n </div>\r\n )}\r\n </ResponsiveReactGridLayout>\r\n </div>\r\n\r\n </div>\r\n </div>\r\n </div>);\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\nexport default DashboardDesigner;\r\n","import * as React from 'react'\r\nimport DashboardDesigner, { DeleteWidgetProps } from './features/Dashboard/DashboardDesigner'\r\nimport \"./styles.module.css\"\r\nimport { useEffect, useRef, useState } from \"react\";\r\nimport { Session } from './services/session';\r\nimport { ReactWidgetPM } from './types/widget';\r\nimport { DashboardDataBinding } from './types/DashboardDataBinding';\r\nimport { Layout, Layouts } from 'react-grid-layout';\r\nimport { deepClone } from './services/clone';\r\nimport { DataPointSelection } from './types/SeriesMeasure';\r\nimport WidgetCard from './features/Dashboard/WidgetCard';\r\n\r\ntype DashboardProps = {\r\n token: string,\r\n tenant: number,\r\n userId: string,\r\n numberFormatCode?:string | null,\r\n isPreviewMode: boolean,\r\n widgetData: ReactWidgetPM | undefined,\r\n dataBinding: DashboardDataBinding,\r\n onChangeLayouts: (layouts: { lg: ReactWidgetPM[] }) => void,\r\n openEditWidget: (Widget: ReactWidgetPM) => void,\r\n onCopyWidget?:(key: string) => void,\r\n openDeleteWidgetConfirmWindow: (deleteProps: DeleteWidgetProps) => void,\r\n onSelectDataPoint: (dataPointSelection: DataPointSelection) => void;\r\n};\r\nconst Dashboard = (props: DashboardProps) => {\r\n const Widgetlayouts = useRef<{ lg: ReactWidgetPM[] }>({ lg: [] });\r\n const [widgetlayoutsState, setWidgetlayoutsState] = useState<{ lg: ReactWidgetPM[] }>({ lg: [] });\r\n const [isInEditMode, setIsInEditMode] = useState<boolean>(false);\r\n const [isPreviewModeActive, setIsPreviewModeActive] = useState<boolean>(props.isPreviewMode !== undefined ? props.isPreviewMode : false);\r\n const [previewWidget, setPreviewWidget] = useState<ReactWidgetPM | undefined>(props.widgetData);\r\n\r\n useEffect(() => {\r\n Session.CurrentUserId = props.userId;\r\n Session.Tenant = props.tenant;\r\n Session.Token = props?.token;\r\n Session.NumberFormatCode = props?.numberFormatCode;\r\n \r\n setIsPreviewModeActive(props.isPreviewMode);\r\n\r\n props.dataBinding.onGetLayouts.subscribe(layouts => {\r\n Widgetlayouts.current = layouts;\r\n setWidgetlayoutsState(deepClone(Widgetlayouts.current));\r\n });\r\n props.dataBinding.isOnEditLayout.subscribe(e => {\r\n setIsInEditMode(e);\r\n });\r\n props.dataBinding.onAddWidget.subscribe(w => {\r\n Widgetlayouts.current.lg.push(w);\r\n setWidgetlayoutsState(deepClone(Widgetlayouts.current));\r\n });\r\n }, [])\r\n\r\n useEffect(() => {\r\n if (props.widgetData) {\r\n setPreviewWidget(JSON.parse(JSON.stringify(props.widgetData)))\r\n }\r\n }, [props.widgetData])\r\n\r\n const copyWidget = (key: string) => {\r\n if(props && props.onCopyWidget){\r\n props.onCopyWidget(key);\r\n }\r\n }\r\n\r\n const updateWidgets = (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 newWidgetlayouts: ReactWidgetPM[] = [];\r\n Widgetlayouts.current.lg.forEach(widget => {\r\n if (layoutsDic[widget.key]) {\r\n widget.StartPotistion = `${layoutsDic[widget.key].x},${layoutsDic[widget.key].y}`;\r\n widget.EndPosition = `${layoutsDic[widget.key].w},${layoutsDic[widget.key].h}`;\r\n widget.Layout = layoutsDic[widget.key];\r\n newWidgetlayouts.push(widget);\r\n }\r\n\r\n });\r\n Widgetlayouts.current = { lg: newWidgetlayouts };\r\n props.onChangeLayouts(Widgetlayouts.current);\r\n }\r\n\r\n return isPreviewModeActive && previewWidget ? \r\n <div style={{width: \"420px\", height: \"310px\"}}>\r\n <div style={{height: \"100%\"}} key={\"widget-\" + previewWidget?.Layout?.i}>\r\n <WidgetCard\r\n isInEditMode={isInEditMode}\r\n isPreviewModeActive={isPreviewModeActive}\r\n key={previewWidget?.Layout?.i}\r\n widget={previewWidget}\r\n widgetRef={previewWidget}\r\n el={previewWidget}\r\n dataBinding={props.dataBinding}\r\n dateFilter={undefined}\r\n editBtnClicked={() => true}\r\n deleteBtnClicked={() => true}\r\n onSelectDataPoint={() => true}\r\n />\r\n </div>\r\n </div> :\r\n <div className='dl-full-hight'>\r\n <div className='dl-dashboard-body'>\r\n <DashboardDesigner \r\n onSelectDataPoint={props.onSelectDataPoint} \r\n Widgetlayouts={widgetlayoutsState} \r\n dataBinding={props.dataBinding} \r\n editMode={isInEditMode} \r\n onLayoutChange={updateWidgets} \r\n onWidgetDelete={(deleteProps: DeleteWidgetProps) => props.openDeleteWidgetConfirmWindow(deleteProps)}\r\n onCopyWidget={copyWidget}\r\n openEditWidget={(widget: ReactWidgetPM) => props.openEditWidget(widget)} ></DashboardDesigner>\r\n </div>\r\n </div >\r\n \r\n}\r\nexport default Dashboard;\r\n\r\n"],"names":["Session","Tools","GetLogitudeURL","logitude_url","location","href","replace","indexOf","urlArr","split","url","substring","lastIndexOf","length","Map","from","to","keys","Object","k","ApiServices","_apiUrl","getByFilters","api","filters","token","getTokenFromStorage","apiURL","ConcatFiltersToURL","axios","get","headers","post","date","requestSignal","undefined","signal","Token","urlparameters","mykeys","addtionalFiltersValues","i","propName","propValue","ignoreFilter","concat","encodeURIComponent","JSON","stringify","DashboardAnalyticsService","_ApiServices","getData","widget","controller","getKpiData","getTableData","getGaugeData","getObjectTableNameByWidgetEntityId","entityId","DateGroupCodes","Full_Date","Month","Quarter","Year","Month_Year","Quarter_Year","getDateFormat","label","_format","_date","moment","isValid","format","getQuarterYearFormat","includes","result","quarterVal","yearVal","getLabelFormatByDateGroupType","isSecondGrouping","groupFieldDataType","SecondaryDateGroupCode","DateGroupCode","getTodayDates","dateValues","fromDate","toDate","push","getYesterdayDates","subtract","getTomorrowDates","add","getCurrentWeekDates","startOf","endOf","getCurrentMonthDates","getPreviousMonthDates","getCurrentMonthToDateDates","getPreviousMonthToDateDates","getCurrentQuarterDates","getCurrentYearDates","getPreviousYearDates","getCurrentYearToDateDates","getPreviousYearToDateDates","getPreviousQuarterDates","getCurrentQuarterToDateDates","getPreviousQuarterToDateDates","getLast7DaysDates","getLast30DaysDates","getDateRangesByCode","code","isNullOrUndefined","val","isNullOrUndefinedOrEmpty","getGlobalNumberFormatting","numberFormatCode","NumberFormatCode","numberSeparatorSettings","thousandsSeparator","decimalSeparator","KpiChart","props","useState","isLoading","setIsLoading","error","setError","useRef","data","setData","isKPICustomSizeNeeded","setIsKPICustomSizeNeeded","uuidv4","triggerId","setTriggerId","useEffect","current","customChartProps","HandleKPICustomSize","RefreshData","dataBinding","widgetUpdated","subscribe","updatedWidget","key","_isPreviewModeActive","isPreviewModeActive","_isKPICustomResizeNeeded","isKPICustomResizeNeeded","calculateWidgetKPISettingsDates","_updatedWidget","KPIComparisonSettings","kpiSettings","parse","isKPISettingsActivated","PeriodFieldId","PeriodDateFilterDates","PeriodDateFilter","DateTimeValueCode","ComparePeriodDateFilterDates","ComparisonPeriodType","ComparePeriodDateFilter","FieldValue","FieldValue2","Tenant","emptyData","Value","dashboardAnalyticsService","postWidget","onChange","then","console","log","response","ErrorMessage","message","kpiClick","measureFieldId","currentWidgetMeasure","WidgetMeasures","MeasureFieldId","onSelectDataPoint","Widget","MeasureCode","Formula","GroupById","isComparisonIndicatorChecked","_kpiSettings","_kpiSettingsAsObj","ComparisonIndicator","getRatioComponent","CompareWithPrevious","React","className","getArrowComponent","style","fontSize","getKPIFormattingPropertyValue","Ratio","ComparisonValue","marginTop","Increase","getPreviousValueComponent","ComparisonLabel","formatedValue","comparisonValue","title","color","isPercentageMeasureField","ComparisonAbbreviationSymbol","ShowMeasureUnit","Unit","MeasureFieldDataType","getValueData","getValueComponent","AbbreviationSymbol","getPeriodLabelByPeriodCode","replaceAll","getLabelFromKPISettings","getKPIFormattingData","KPIFormatSettings","propertyName","unit","kpiFormattingData","getLabel","Label","getIsKPIHasSmallestHeight","widgetRef","Layout","h","isKPIHasSmallestHeight","ProgressSpinner","width","height","strokeWidth","animationDuration","onClick","Alighnment","RedWarningIcon","TableChart","isTableLoading","setIsTableLoading","setWidget","tableData","setTableData","tableColumns","setTableColumns","sortField","setSortField","sortOrder","setSortOrder","isDefaultSortOptionsUsed","widgetRefData","objectTableName","setObjectTableName","getObjectTableName","EntityId","res","ObjectTableName","PageIndex","PageSize","fillTableData","getBooleanStringValue","value","_value","charAt","toUpperCase","slice","getDateTimeValue","tableRecords","Fields","setDefaultSortOptions","Result","forEach","item","_tableRow","field","FieldCode","valueType","DataTypeCode","tableCols","_widget","_sortFieldCode","getSortFieldCodeBySortFieldId","DefaultSortBy","_sortDirection","DefaultSortDirection","sortFieldId","find","col","Id","getSortFieldIdBySortFieldCode","sortFieldCode","sortTableData","sortedField","isCalculatedColumn","canSort","_sortOrder","ScreenSortBy","ScreenSortDirection","ScreenSortByType","isInEditMode","getTableFormattingData","TableFormatSettings","getTableFormattingPropertyValue","tableFormattingData","getTableConditionalRulesData","TableConditionalRules","isValueEmpty","IsValidRule","rule","operator","RuleOperator","Code","ruleValue1","RuleValue1","ruleValue2","RuleValue2","getCellPropertyByRule","column","cellValue","defaultValue","columnType","IsCalculatedColumn","columnData","el","FieldId","FieldType","FieldRules","firstValidRule","getCellFloatAlignment","isClickableCell","fieldCode","tableCellClicked","TableRowEntityId","cellTemplateBody","backgroundColor","headerTemplate","DisplayName","DataTable","loading","responsiveLayout","map","index","Column","header","body","CustomChart","project","TypeCode","Fragment","buildToolTip","seriesName","padding","getTooltiplabel","getMeasureType","getTooltipValue","getTooltipPercentage","seriesMeasure","Name","getFormattedValue","isNaN","_numberSeparatorSettings","_val","toLocaleString","_formattedValue","formula","months","quarters","getCategoriesBasedDataSource","chartInfo","seriesMeasures","seriesMeasuresIsEmpty","handelNullLabels","chart","categories","buildCategories","dataset","buildDataSet","getStackedDataSource","buildStackedCategories","buildStackedDataSet","getSimpleDataSource","buildDataSource","element","Values","hasValue","values","series","e","id","tooltext","dataSet","datas","seriesname","anchorBgColor","anchorBorderColor","anchorBorderThickness","anchorHoverColor","parentyaxis","PlotasLineChart","PlotonSecondAxis","renderAs","uniqueGroups","x","GroupByIdSec","LabelSec","group","buildStackedGroupData","emptylabels","filter","filledLabels","sortDataSet","sort","s1","s2","aa","bb","secGroup","getUniqueGroupOrderdList","category","defautFontSize","defautFont","defautColor","BuildFusionChartObject","SecondaryGroupById","getBarObject","getStackedBarObject","getLineObject","getClusteredLineObject","getPieObject","getDonutObject","getColumnObject","getClusteredColumnObject","getWidgetRanges","gaugeRanges","GaugeRanges","minValue","maxValue","getGaugeObject","fusionObject","getDefaultChartobject","type","getDefaultChartInfo","manageResize","valueBelowPivot","showValue","dataSource","isGroupByFieldDateTime","GroupByFieldDataType","scrollPosition","scrollPadding","flatScrollBars","showPercentValues","ShowValueAsNumber","showLegend","ShowLegend","setLineDash","chartTopMargin","chartBottomMargin","legendPosition","getWidgetLegendPosition","IsStacked","chartLeftMargin","chartRightMargin","anchorradius","canvasBottomPadding","canvasTopPadding","labelFontSize","labelFont","manageLabelOverflow","useEllipsesWhenOverflow","enableSmartLabels","setPieDonutLegends","isFirstMeasureTypePercentage","isSecondMeasureTypePercentage","setDualyAxis","divLineDashed","divLineDashLen","divLineDashGap","divLineColor","divLineAlpha","divLineThickness","dataFormat","theme","baseFont","baseFontSize","baseFontColor","legendCaptionFontSize","legendCaptionFontColor","legendCaptionFont","labelFontColor","legendItemFont","legendItemFontSize","sYAxisNameFont","sYAxisNameFontSize","sYAxisNameFontColor","pYAxisNameFont","pYAxisNameFontSize","pYAxisNameFontColor","xAxisNameFont","xAxisNameFontSize","xAxisNameFontColor","yAxisNameFont","yAxisNameFontSize","yAxisNameFontColor","drawCrossLine","xAxisName","ShowXAxisTitle","XAxisTitle","yAxisName","ShowYAxisTitle","YAxisTitle","labelDisplay","XAxisLabelsDisplay","slantLabel","XAxisLabelsFontSize","showValues","ShowValue","valuePosition","ValuePosition","isValuePositionInside","toLowerCase","isColumnOrBarChart","placeValuesInside","minPlotHeightForValue","isPieOrDonutChart","minAngleForValue","numberSuffix","thousandSeparator","palettecolors","enableSlicing","enableRotation","toolTipBgColor","showToolTipShadow","plotHoverEffect","scrollHeight","scrollWidth","plotColorinTooltip","formatNumberScale","showLabels","LabelsPosition","setOnChartLegend","setChartInLegend","LegendPosition","legendScrollBgColor","legendIconScale","scrollShowButtons","legendCaptionAlignment","alignLegendWithCanvas","pieRadius","showSecondaryLimits","showDivLineSecondaryValue","pYAxisNameBorderPadding","sYAxisNameBorderPadding","sNumberSuffix","textLength","Math","max","pYAxisName","getTitle","sYAxisname","text","maxLenght","textLenght","neededSpaces","ceil","space","repeat","FusionChartHelper","getPieRadius","getLegendWidth","legendWidth","trimChartLabels","chartWidth","chartHeight","handleLegendWidth","handlePieRadius","chartMinumunHeight","startPercantage","stepHeight","step","floor","window","innerWidth","reducedValue","plotColorsDictionary","plotColor0","plotColor1","plotColor2","plotColor3","plotColor4","plotColor5","plotColor6","plotColor7","plotColor8","plotColor9","plotColor10","plotColor11","plotColor12","plotColor13","plotColor14","plotColor15","getPlotColorByIndexOrder","_index","ReactFC","fcRoot","FusionCharts","Charts","FusionTheme","options","creditLabel","FusionChart","forwardRef","comRef","dataLoaded","setDataLoaded","fusionKey","chartData","resizeTimer","setResizeTimer","axiosController","AbortController","args","setArgs","fChart","setFchart","chartContainerId","progressRef","fusionRef","fusionChartHelper","isDummyChangesActive","_data","handleData","addEventListener","handleResize","removeEventListener","abort","clearTimeout","setTimeout","HandleSizeChange","useImperativeHandle","onResizeFinish","oldPieRadius","oldLegendWidth","offsetWidth","offsetHeight","updatedAxiosController","isDummyChange","dataplotClick","eventObj","dataObj","groupbyid","measurefieldid","measurecode","groupbyidsec","useResizeObserver","onResize","resizeTo","ref","renderComplete","handlePieDonutChartTooltip","chartDataSource","handleOtherChartsTooltip","loaded","event","sender","onRender","setFusionKey","getChartData","WidgetCard","fusionChartRef","editWidget","editBtnClicked","copyWidget","copyBtnClicked","onEditWidget","getCSSPropertyValue","widgetData","propUnit","propDefaultVal","GetChartComponent","GaugeChart","isTableWidget","getwidgetTitlesContainer","drilldownToTableData","isThereTitle","Title","isThereSubtitle","Subtitle","tableHintMessage","isTitleAligmentRight","TitleAlignment","cursor","justifyContent","flexDirection","Popup","trigger","textAlign","position","arrowStyle","offsetY","on","minWidth","EditWidgetIcon","CopyWidgetIcon","DeleteWidgetIcon","deleteBtnClicked","deepClone","obj","ResponsiveReactGridLayout","WidthProvider","Responsive","DashboardDesigner","array12","Array","fill","minimumPlaceholderRowsCount","lg","layouts","setLayouts","placeholderRowsArray","setplaceholderRowsArray","dateFilter","setisInEditMode","widgetsDictionaryRef","widgets","setWidgets","gridLayoutComponent","entered","widgetCardRef","FillLayout","Widgetlayouts","onDeleteWidgetConfirmed","deleteProps","deletePanel","dashboardLayouts","clone","layout","createLayout","FillWidgetDictionary","UpdatePlaceholderDimensions","w","editMode","onLayoutChange","changedLayouts","UpdateWidget","onResizeStop","oldItem","confirmDeleteWidget","deleteWidgetProps","onWidgetDelete","newLayouts","newWidgets","ChangeSetOp","openEditWidget","onCopyWidget","y","newPlaceholderRows","dispatchEvent","Event","layoutGridProps","rowHeight","compactType","draggableCancel","isDraggable","isResizable","onWidthChange","cols","md","sm","xs","xxs","useCSSTransforms","Dashboard","widgetlayoutsState","setWidgetlayoutsState","setIsInEditMode","isPreviewMode","setIsPreviewModeActive","previewWidget","setPreviewWidget","CurrentUserId","userId","tenant","onGetLayouts","isOnEditLayout","onAddWidget","updateWidgets","layoutsDic","sizeType","newWidgetlayouts","StartPotistion","EndPosition","onChangeLayouts","openDeleteWidgetConfirmWindow"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.modern.js","sources":["../src/services/session.ts","../src/services/tools.ts","../src/services/ApiServices.ts","../src/services/DashboardAnalyticsService.ts","../src/Utils/DateHelper.tsx","../src/Utils/General.tsx","../src/features/Dashboard/ChartsComponents/CustomCharts/KpiChart.tsx","../src/features/Dashboard/ChartsComponents/CustomCharts/TableChart.tsx","../src/features/Dashboard/ChartsComponents/CustomCharts/CustomChart.tsx","../src/features/Dashboard/ChartsComponents/FusionCharts/FusionChartTooltip.tsx","../src/features/Dashboard/ChartsComponents/FusionCharts/FusionChartDataSoruceBuilder.tsx","../src/features/Dashboard/ChartsComponents/FusionCharts/FusionChartObjectBuilder.tsx","../src/features/Dashboard/ChartsComponents/FusionCharts/FusionChartHelper.tsx","../src/features/Dashboard/ChartsComponents/FusionCharts/FusionColors.tsx","../src/features/Dashboard/ChartsComponents/FusionCharts/FusionChartObjectHelper.tsx","../src/features/Dashboard/ChartsComponents/FusionCharts/FusionChart.tsx","../src/features/Dashboard/ChartsComponents/FusionCharts/GaugeChart.tsx","../src/features/Dashboard/WidgetCard.tsx","../src/services/clone.ts","../src/features/Dashboard/DashboardDesigner.tsx","../src/index.tsx"],"sourcesContent":["export class Session {\r\n public static CurrentUserId: string;\r\n public static Tenant: number;\r\n public static Token: string;\r\n public static NumberFormatCode: string | null | undefined;\r\n}","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\r\n public static Map(from: any, to: any) {\r\n if (!from)\r\n return;\r\n if (!to)\r\n to = {};\r\n var keys = Object.keys(from);\r\n for (const k of keys) {\r\n if(from[k]){\r\n to[k] = from[k];\r\n }\r\n }\r\n }\r\n}","import axios from \"axios\";\r\nimport { ApiQueryFilters } from \"../common/data-contracts/ApiQueryFilter\";\r\nimport { APIResult } from \"../types/APIResult\";\r\nimport { Session } from \"./session\";\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 \r\n post<T>(api,date, requestSignal : any= undefined){\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 }, signal: requestSignal});\r\n }\r\n\r\n getTokenFromStorage(){\r\n return Session.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\nimport { KpiChartData } from \"../types/KpiChart\";\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, signal: any = undefined) {\r\n return this._ApiServices.post<SeriesMeasure[]>(`/api/${this.controller}/PostGetDataAnalytic`,widget, signal);\r\n }\r\n\r\n getKpiData(widget: ReactWidgetPM) {\r\n return this._ApiServices.post<KpiChartData>(`/api/${this.controller}/PostGetKpiData`,widget);\r\n }\r\n\r\n getTableData(widget: ReactWidgetPM) {\r\n return this._ApiServices.post<any>(`/api/${this.controller}/PostGetTableData`,widget);\r\n }\r\n \r\n getGaugeData(widget: ReactWidgetPM, signal: any = undefined) {\r\n return this._ApiServices.post<any>(`/api/${this.controller}/PostGetGaugeData`,widget, signal);\r\n }\r\n \r\n getObjectTableNameByWidgetEntityId(entityId: string | undefined) {\r\n return this._ApiServices.get<any>(`/api/analyticsfactsmetadatas/getsingle?id=` + entityId);\r\n }\r\n}","import moment from \"moment\";\r\nimport { ReactWidgetPM } from \"../types/widget\";\r\n\r\nconst DateGroupCodes = {\r\n Full_Date:'Full Date',\r\n Month: 'Month',\r\n Quarter: 'Quarter',\r\n Year: 'Year',\r\n Month_Year: 'Month & Year',\r\n Quarter_Year: 'Quarter & Year',\r\n}\r\n\r\nconst getDateFormat = (label: any, _format: string) => {\r\n if(!label) return label;\r\n\r\n let _date = moment(label);\r\n if(!_date || !_date.isValid()) return label;\r\n\r\n return _date.format(_format)\r\n}\r\n\r\nconst getQuarterYearFormat = (label: string) => {\r\n if(!label) return label;\r\n\r\n if(label.includes(\"/\")) {\r\n let result = label.split(\"/\");\r\n let quarterVal = result && result[1] ? result[1] : \"\";\r\n let yearVal = result && result[0] ? result[0] : \"\";\r\n\r\n return `${quarterVal} ${yearVal}`\r\n }\r\n\r\n return label;\r\n}\r\n\r\nconst getLabelFormatByDateGroupType = (label: string, widget: ReactWidgetPM, isSecondGrouping: boolean = false)=> {\r\n\r\n if(!widget) return label;\r\n\r\n let groupFieldDataType = isSecondGrouping ? widget.SecondaryDateGroupCode : widget.DateGroupCode;\r\n if(!groupFieldDataType) return label;\r\n\r\n switch(groupFieldDataType){\r\n case DateGroupCodes.Full_Date:\r\n return getDateFormat(label, \"DD MMM YYYY\");\r\n case DateGroupCodes.Month:\r\n return getDateFormat(label, \"MMM\");\r\n case DateGroupCodes.Quarter:\r\n return label;\r\n case DateGroupCodes.Year:\r\n return getDateFormat(label, \"YYYY\");\r\n case DateGroupCodes.Month_Year:\r\n return getDateFormat(label, \"MMM YYYY\");\r\n case DateGroupCodes.Quarter_Year:\r\n return getQuarterYearFormat(label);\r\n\r\n default:\r\n return label;\r\n }\r\n}\r\n\r\nconst getTodayDates = (format: string =\"YYYYMMDD000000\") => {\r\n let dateValues: any = [];\r\n let fromDate = moment().format(format);\r\n let toDate = moment().format(format);\r\n\r\n dateValues.push(fromDate);\r\n dateValues.push(toDate);\r\n\r\n return dateValues;\r\n}\r\n\r\nconst getYesterdayDates = (format: string =\"YYYYMMDD000000\") => {\r\n let dateValues: any = [];\r\n let fromDate = moment().subtract(1, 'days').format(format);\r\n let toDate = moment().subtract(1, 'days').format(format);\r\n\r\n dateValues.push(fromDate);\r\n dateValues.push(toDate);\r\n\r\n return dateValues;\r\n}\r\n\r\nconst getTomorrowDates = (format: string =\"YYYYMMDD000000\") => {\r\n let dateValues: any = [];\r\n let fromDate = moment().add(1, 'days').format(format);\r\n let toDate = moment().add(1, 'days').format(format);\r\n\r\n dateValues.push(fromDate);\r\n dateValues.push(toDate);\r\n\r\n return dateValues;\r\n}\r\n\r\nconst getCurrentWeekDates = (format: string =\"YYYYMMDD000000\") => {\r\n let dateValues: any = [];\r\n let fromDate = moment().startOf('week').format(format);\r\n let toDate = moment().endOf('week').format(format);\r\n\r\n dateValues.push(fromDate);\r\n dateValues.push(toDate);\r\n\r\n return dateValues;\r\n}\r\n\r\nconst getCurrentMonthDates = (format: string =\"YYYYMMDD000000\") => {\r\n let dateValues: any = [];\r\n let fromDate = moment().startOf('month').format(format);\r\n let toDate = moment().endOf('month').format(format);\r\n\r\n dateValues.push(fromDate);\r\n dateValues.push(toDate);\r\n\r\n return dateValues;\r\n}\r\n\r\nconst getPreviousMonthDates = (format: string =\"YYYYMMDD000000\") => {\r\n let dateValues: any = [];\r\n let fromDate = moment().subtract(1, 'months').startOf('month').format(format);\r\n let toDate = moment().subtract(1, 'months').endOf('month').format(format);\r\n\r\n dateValues.push(fromDate);\r\n dateValues.push(toDate);\r\n\r\n return dateValues;\r\n}\r\n\r\nconst getCurrentMonthToDateDates = (format: string =\"YYYYMMDD000000\") => {\r\n let dateValues: any = [];\r\n let fromDate = moment().startOf('month').format(format);\r\n let toDate = moment().format(format);\r\n\r\n dateValues.push(fromDate);\r\n dateValues.push(toDate);\r\n\r\n return dateValues;\r\n}\r\n\r\nconst getPreviousMonthToDateDates = (format: string =\"YYYYMMDD000000\") => {\r\n let dateValues: any = [];\r\n let fromDate = moment().subtract(1, 'months').startOf('month').format(format);\r\n let toDate = moment().format(format);\r\n\r\n dateValues.push(fromDate);\r\n dateValues.push(toDate);\r\n\r\n return dateValues;\r\n}\r\n\r\nconst getCurrentQuarterDates = (format: string =\"YYYYMMDD000000\") => {\r\n let dateValues: any = [];\r\n let fromDate = moment().startOf('quarter').format(format);\r\n let toDate = moment().endOf('quarter').format(format);\r\n\r\n dateValues.push(fromDate);\r\n dateValues.push(toDate);\r\n\r\n return dateValues;\r\n}\r\n\r\nconst getCurrentYearDates = (format: string =\"YYYYMMDD000000\") => {\r\n let dateValues: any = [];\r\n let fromDate = moment().startOf('year').format(format);\r\n let toDate = moment().endOf('year').format(format);\r\n\r\n dateValues.push(fromDate);\r\n dateValues.push(toDate);\r\n\r\n return dateValues;\r\n}\r\n\r\nconst getPreviousYearDates = (format: string =\"YYYYMMDD000000\") => {\r\n let dateValues: any = [];\r\n let fromDate = moment().subtract(1, 'years').startOf('year').format(format);\r\n let toDate = moment().subtract(1, 'years').endOf('year').format(format);\r\n\r\n dateValues.push(fromDate);\r\n dateValues.push(toDate);\r\n\r\n return dateValues;\r\n}\r\n\r\nconst getCurrentYearToDateDates = (format: string =\"YYYYMMDD000000\") => {\r\n let dateValues: any = [];\r\n let fromDate = moment().startOf('year').format(format);\r\n let toDate = moment().format(format);\r\n\r\n dateValues.push(fromDate);\r\n dateValues.push(toDate);\r\n\r\n return dateValues;\r\n}\r\n\r\nconst getPreviousYearToDateDates = (format: string =\"YYYYMMDD000000\") => {\r\n let dateValues: any = [];\r\n let fromDate = moment().subtract(1, 'years').startOf('year').format(format);\r\n let toDate = moment().format(format);\r\n\r\n dateValues.push(fromDate);\r\n dateValues.push(toDate);\r\n\r\n return dateValues;\r\n}\r\n\r\nconst getPreviousQuarterDates = (format: string =\"YYYYMMDD000000\") => {\r\n let dateValues: any = [];\r\n let fromDate = moment().subtract(1, 'quarters').startOf('quarter').format(format);\r\n let toDate = moment().subtract(1, 'quarters').endOf('quarter').format(format);\r\n\r\n dateValues.push(fromDate);\r\n dateValues.push(toDate);\r\n\r\n return dateValues;\r\n}\r\n\r\nconst getCurrentQuarterToDateDates = (format: string =\"YYYYMMDD000000\") => {\r\n let dateValues: any = [];\r\n let fromDate = moment().startOf('quarter').format(format);\r\n let toDate = moment().format(format);\r\n\r\n dateValues.push(fromDate);\r\n dateValues.push(toDate);\r\n\r\n return dateValues;\r\n}\r\n\r\nconst getPreviousQuarterToDateDates = (format: string =\"YYYYMMDD000000\") => {\r\n let dateValues: any = [];\r\n let fromDate = moment().subtract(1, 'quarters').startOf('quarter').format(format);\r\n let toDate = moment().format(format);\r\n\r\n dateValues.push(fromDate);\r\n dateValues.push(toDate);\r\n\r\n return dateValues;\r\n}\r\n\r\nconst getLast7DaysDates = (format: string = \"YYYYMMDD000000\") => {\r\n let dateValues: any = [];\r\n let fromDate = moment().subtract(6, 'days').format(format);\r\n let toDate = moment().format(format);\r\n\r\n dateValues.push(fromDate);\r\n dateValues.push(toDate);\r\n\r\n return dateValues;\r\n}\r\nconst getLast30DaysDates = (format: string = \"YYYYMMDD000000\") => {\r\n let dateValues: any = [];\r\n let fromDate = moment().subtract(29, 'days').format(format);\r\n let toDate = moment().format(format);\r\n\r\n dateValues.push(fromDate);\r\n dateValues.push(toDate);\r\n\r\n return dateValues;\r\n}\r\n\r\nconst getDateRangesByCode = (code: string | null) => {\r\n let result = {\r\n fromDate: null,\r\n toDate: null\r\n }\r\n\r\n if(!code) {\r\n return {\r\n fromDate: getTodayDates()[0],\r\n toDate: getTodayDates()[1]\r\n };\r\n }\r\n\r\n switch(code){\r\n case \"Current_Year\":\r\n result.fromDate = getCurrentYearDates()[0];\r\n result.toDate = getCurrentYearDates()[1];\r\n break;\r\n case \"Previous_Year\":\r\n result.fromDate = getPreviousYearDates()[0];\r\n result.toDate = getPreviousYearDates()[1];\r\n break;\r\n case \"Current_Year_To_Date\":\r\n result.fromDate = getCurrentYearToDateDates()[0];\r\n result.toDate = getCurrentYearToDateDates()[1];\r\n break;\r\n case \"Previous_Year_To_Date\":\r\n result.fromDate = getPreviousYearToDateDates()[0];\r\n result.toDate = getPreviousYearToDateDates()[1];\r\n break;\r\n\r\n case \"Current_Quarter\":\r\n result.fromDate = getCurrentQuarterDates()[0];\r\n result.toDate = getCurrentQuarterDates()[1];\r\n break;\r\n case \"Previous_Quarter\":\r\n result.fromDate = getPreviousQuarterDates()[0];\r\n result.toDate = getPreviousQuarterDates()[1];\r\n break;\r\n case \"Current_Quarter_To_Date\":\r\n result.fromDate = getCurrentQuarterToDateDates()[0];\r\n result.toDate = getCurrentQuarterToDateDates()[1];\r\n break;\r\n case \"Previous_Quarter_To_Date\":\r\n result.fromDate = getPreviousQuarterToDateDates()[0];\r\n result.toDate = getPreviousQuarterToDateDates()[1];\r\n break;\r\n\r\n case \"Current_Month\":\r\n result.fromDate = getCurrentMonthDates()[0];\r\n result.toDate = getCurrentMonthDates()[1];\r\n break;\r\n case \"Previous_Month\":\r\n result.fromDate = getPreviousMonthDates()[0];\r\n result.toDate = getPreviousMonthDates()[1];\r\n break;\r\n case \"Current_Month_To_Date\":\r\n result.fromDate = getCurrentMonthToDateDates()[0];\r\n result.toDate = getCurrentMonthToDateDates()[1];\r\n break;\r\n case \"Previous_Month_To_Date\":\r\n result.fromDate = getPreviousMonthToDateDates()[0];\r\n result.toDate = getPreviousMonthToDateDates()[1];\r\n break;\r\n\r\n case \"Today\":\r\n result.fromDate = getTodayDates()[0];\r\n result.toDate = getTodayDates()[1];\r\n break;\r\n case \"Yesterday\":\r\n result.fromDate = getYesterdayDates()[0];\r\n result.toDate = getYesterdayDates()[1];\r\n break;\r\n case \"Tomorrow\":\r\n result.fromDate = getTomorrowDates()[0];\r\n result.toDate = getTomorrowDates()[1];\r\n break;\r\n case \"Last 7 Days\":\r\n result.fromDate = getLast7DaysDates()[0];\r\n result.toDate = getLast7DaysDates()[1];\r\n break;\r\n case \"Last 30 Days\":\r\n result.fromDate = getLast30DaysDates()[0];\r\n result.toDate = getLast30DaysDates()[1];\r\n break;\r\n case \"This Week\":\r\n result.fromDate = getCurrentWeekDates()[0];\r\n result.toDate = getCurrentWeekDates()[1];\r\n break;\r\n default:\r\n break;\r\n }\r\n\r\n return result;\r\n}\r\nexport {\r\n getLabelFormatByDateGroupType,\r\n getDateRangesByCode\r\n}","import { Session } from \"../services/session\";\r\n\r\nconst isNullOrUndefined = (val: any) => {\r\n return val == null || val == undefined;\r\n}\r\n\r\nconst isNullOrUndefinedOrEmpty = (val: any) => {\r\n return val == null || val == undefined || val == \"\";\r\n}\r\n\r\nconst getGlobalNumberFormatting = () => {\r\n let numberFormatCode = Session.NumberFormatCode;\r\n \r\n let numberSeparatorSettings = {\r\n thousandsSeparator: \",\",\r\n decimalSeparator: \".\",\r\n }\r\n\r\n if (isNullOrUndefinedOrEmpty(numberFormatCode)) return numberSeparatorSettings;\r\n\r\n switch (numberFormatCode) {\r\n case \"CD\":\r\n numberSeparatorSettings.thousandsSeparator = \",\";\r\n numberSeparatorSettings.decimalSeparator = \".\";\r\n break;\r\n case \"DC\":\r\n numberSeparatorSettings.thousandsSeparator = \".\";\r\n numberSeparatorSettings.decimalSeparator = \",\";\r\n break;\r\n case \"AD\":\r\n numberSeparatorSettings.thousandsSeparator = \"'\";\r\n numberSeparatorSettings.decimalSeparator = \".\";\r\n break;\r\n default:\r\n numberSeparatorSettings.thousandsSeparator = \",\";\r\n numberSeparatorSettings.decimalSeparator = \".\";\r\n break;\r\n }\r\n\r\n return numberSeparatorSettings;\r\n}\r\n\r\nexport {\r\n isNullOrUndefined,\r\n isNullOrUndefinedOrEmpty,\r\n getGlobalNumberFormatting\r\n}","import { ProgressSpinner } from \"primereact/progressspinner\";\r\nimport React, { useEffect, useRef, useState } from \"react\";\r\nimport { DashboardAnalyticsService } from \"../../../../services/DashboardAnalyticsService\";\r\nimport { Session } from \"../../../../services/session\";\r\nimport { KpiChartData } from \"../../../../types/KpiChart\";\r\nimport { ReactWidgetPM } from \"../../../../types/widget\";\r\nimport { CustomChartProps } from \"./CustomChart\";\r\nimport { ReactComponent as RedWarningIcon } from \"../../../../assets/images/red-warning.svg\"\r\nimport { getDateRangesByCode } from \"../../../../Utils/DateHelper\";\r\nimport { isNullOrUndefined, isNullOrUndefinedOrEmpty } from \"../../../../Utils/General\";\r\nimport { v4 as uuidv4 } from 'uuid';\r\n\r\ntype KpiChartProps = {\r\n customChartProps: CustomChartProps;\r\n};\r\n\r\nexport type kPIComparisonSettingsProps = {\r\n\tPeriodFieldId: string | null;\r\n\tPeriodDateFilter: {\r\n\t\tFieldValue: string | null;\r\n\t\tFieldValue2: string | null;\r\n\t\tDatePickerTextFieldValue: string | null;\r\n\t\tDateTimeValueCode: string;\r\n\t\tDateGroupCode: string | null;\r\n\t\tOperator: string | null;\r\n\t};\r\n\tComparePeriodDateFilter: {\r\n\t\tFieldValue: string | null;\r\n\t\tFieldValue2: string | null;\r\n\t\tDatePickerTextFieldValue: string | null;\r\n\t\tDateTimeValueCode: string;\r\n\t\tDateGroupCode: string | null;\r\n\t\tOperator: string | null;\r\n\t};\r\n\tComparisonPeriodType: string | null;\r\n\tComparisonIndicator: boolean;\r\n\tComparisonIncrease: string | null;\r\n}\r\n\r\nconst KpiChart = (props: KpiChartProps) => {\r\n const [isLoading, setIsLoading] = useState<boolean>(true);\r\n const [error, setError] = useState<string>();\r\n const widget = useRef<ReactWidgetPM>();\r\n const [data, setData] = useState<KpiChartData>();\r\n const [isKPICustomSizeNeeded, setIsKPICustomSizeNeeded] = useState<boolean | undefined>(false);\r\n const [triggerId, setTriggerId] = useState(uuidv4());\r\n\r\n useEffect(() => {\r\n widget.current = props.customChartProps.widget;\r\n HandleKPICustomSize();\r\n RefreshData();\r\n\r\n props.customChartProps.dataBinding?.widgetUpdated.subscribe(updatedWidget => {\r\n if (updatedWidget?.key != widget.current?.key) return;\r\n widget.current = {...updatedWidget};\r\n setTriggerId(uuidv4());\r\n });\r\n }, [])\r\n\r\n useEffect(() => {\r\n HandleKPICustomSize();\r\n }, [props.customChartProps])\r\n\r\n const HandleKPICustomSize = () => {\r\n let _isPreviewModeActive = props.customChartProps && props.customChartProps.isPreviewModeActive;\r\n let _isKPICustomResizeNeeded = isKPICustomResizeNeeded();\r\n\r\n setIsKPICustomSizeNeeded(_isKPICustomResizeNeeded && !_isPreviewModeActive)\r\n }\r\n\r\n const calculateWidgetKPISettingsDates = () => {\r\n let _updatedWidget : any = { ...widget.current };\r\n\r\n if(_updatedWidget && _updatedWidget.KPIComparisonSettings && _updatedWidget.KPIComparisonSettings.length) {\r\n let kpiSettings : kPIComparisonSettingsProps = JSON.parse(_updatedWidget.KPIComparisonSettings);\r\n let isKPISettingsActivated = !isNullOrUndefinedOrEmpty(kpiSettings.PeriodFieldId);\r\n\r\n if(isKPISettingsActivated){\r\n let PeriodDateFilterDates = getDateRangesByCode(kpiSettings.PeriodDateFilter.DateTimeValueCode);\r\n let ComparePeriodDateFilterDates = kpiSettings.ComparisonPeriodType == 'Manually' ? getDateRangesByCode(kpiSettings.ComparePeriodDateFilter.DateTimeValueCode) : getDateRangesByCode(null);\r\n\r\n kpiSettings.PeriodDateFilter.FieldValue = PeriodDateFilterDates.fromDate;\r\n kpiSettings.PeriodDateFilter.FieldValue2 = PeriodDateFilterDates.toDate;\r\n\r\n kpiSettings.ComparePeriodDateFilter.FieldValue = ComparePeriodDateFilterDates.fromDate;\r\n kpiSettings.ComparePeriodDateFilter.FieldValue2 = ComparePeriodDateFilterDates.toDate;\r\n\r\n _updatedWidget.KPIComparisonSettings = JSON.stringify(kpiSettings);\r\n }\r\n\r\n return _updatedWidget;\r\n }\r\n\r\n return _updatedWidget;\r\n }\r\n\r\n const RefreshData = () => {\r\n if (Session.Tenant == 0) {\r\n const emptyData = {} as KpiChartData;\r\n emptyData.Value = 0;\r\n setData(emptyData);\r\n setIsLoading(false);\r\n return;\r\n }\r\n \r\n var dashboardAnalyticsService = new DashboardAnalyticsService();\r\n var postWidget: any = calculateWidgetKPISettingsDates();\r\n postWidget.onChange = undefined;\r\n \r\n dashboardAnalyticsService.getKpiData(postWidget as ReactWidgetPM).then(result => {\r\n setData(result.data);\r\n setIsLoading(false);\r\n }, error => {\r\n console.log('error', error);\r\n if (error?.response?.data?.ErrorMessage) setError(error?.response?.data?.ErrorMessage);\r\n else setError(error.message);\r\n setIsLoading(false);\r\n\r\n })\r\n }\r\n\r\n const kpiClick = () => {\r\n var measureFieldId;\r\n var currentWidgetMeasure = widget?.current?.WidgetMeasures![0];\r\n if (widget?.current?.WidgetMeasures) measureFieldId = widget?.current?.WidgetMeasures[0]?.MeasureFieldId;\r\n props.customChartProps.onSelectDataPoint({\r\n MeasureFieldId: measureFieldId,\r\n Widget: widget.current,\r\n MeasureCode : currentWidgetMeasure!.MeasureCode,\r\n Formula : currentWidgetMeasure!.Formula,\r\n GroupById: data?.GroupById\r\n });\r\n }\r\n\r\n const isComparisonIndicatorChecked = () => {\r\n let _kpiSettings = widget.current?.KPIComparisonSettings;\r\n\r\n if(_kpiSettings){\r\n let _kpiSettingsAsObj = JSON.parse(_kpiSettings);\r\n\r\n return !isNullOrUndefined(_kpiSettingsAsObj.ComparisonIndicator) ? _kpiSettingsAsObj.ComparisonIndicator : false;\r\n }\r\n\r\n return false;\r\n }\r\n\r\n function getRatioComponent(): React.ReactNode {\r\n if (!data?.CompareWithPrevious || !isComparisonIndicatorChecked()) return null;\r\n return (\r\n <div className={\"dl-kpi-ratio-container\"}>\r\n {getArrowComponent()}\r\n <div style={{\r\n fontSize: getKPIFormattingPropertyValue(\"PercentageFontSize\", \"px\")}} \r\n className={'dl-kpi-ratio-text'}>\r\n {data?.Ratio} %\r\n </div>\r\n </div>\r\n );\r\n }\r\n\r\n function getArrowComponent(): React.ReactNode {\r\n if (!data) return null;\r\n\r\n if (data?.Ratio == 0 || data.Value == data.ComparisonValue || ((data.Value == \"0\" || data.Value == 0) && (data.ComparisonValue == \"0\" || data.ComparisonValue == 0)))\r\n return (\r\n <div className=\"dl-kpi-arrow-container\">\r\n <span className={\"dl-kpi-arrow-pic dl-kpi-arrow-up-green\"}></span>\r\n <span className={\"dl-kpi-arrow-pic dl-kpi-arrow-down-red\"} style={{ marginTop: \"2px\" }}></span>\r\n </div>\r\n );\r\n\r\n if (data?.Ratio > 1 && widget.current?.Increase && widget.current?.Increase == \"Positive\")\r\n return (\r\n <div className=\"dl-kpi-arrow-container\">\r\n <span className={\"dl-kpi-arrow-pic dl-kpi-arrow-up-green\"}></span>\r\n </div>\r\n )\r\n\r\n if (data?.Ratio > 1 && widget.current?.Increase && widget.current?.Increase == \"Negative\")\r\n return (\r\n <div className=\"dl-kpi-arrow-container\">\r\n <span className={\"dl-kpi-arrow-pic dl-kpi-arrow-up-red\"}></span>\r\n </div>\r\n )\r\n\r\n if (data?.Ratio < 1 && widget.current?.Increase && widget.current?.Increase == \"Positive\")\r\n return (\r\n <div className=\"dl-kpi-arrow-container\">\r\n <span className={\"dl-kpi-arrow-pic dl-kpi-arrow-down-red\"}></span>\r\n </div>\r\n )\r\n\r\n if (data?.Ratio < 1 && widget.current?.Increase && widget.current?.Increase == \"Negative\")\r\n return (\r\n <div className=\"dl-kpi-arrow-container\">\r\n <span className={\"dl-kpi-arrow-pic dl-kpi-arrow-down-green\"}></span>\r\n </div>\r\n )\r\n\r\n return null;\r\n }\r\n\r\n\r\n\r\n function getPreviousValueComponent(): React.ReactNode {\r\n if (isNullOrUndefined(data) || isNullOrUndefined(data?.ComparisonValue) || isNullOrUndefined(data?.ComparisonLabel)) return \"\";\r\n // let labelFormatByDateGroupType = getLabelFormatByDateGroupType(data!.ComparisonLabel,widget.current!,false)\r\n let formatedValue = data ? data.ComparisonLabel : \"\"; //!isNullOrUndefined(labelFormatByDateGroupType) ? labelFormatByDateGroupType : \"\";\r\n let comparisonValue = data ? data?.ComparisonValue : \"\";\r\n\r\n return (\r\n <div title={formatedValue} className={\"dl-kpi-prev-container\"}>\r\n <div style={{\r\n color: getKPIFormattingPropertyValue(\"ComparisonValueFontColor\"),\r\n fontSize: getKPIFormattingPropertyValue(\"ComparisonValueFontSize\", \"px\")}} \r\n className={\"dl-kpi-prev-text\"}>\r\n {`${comparisonValue}${isPercentageMeasureField() ? \"%\" : \"\"}`}\r\n </div>\r\n\r\n {\r\n data?.ComparisonAbbreviationSymbol && \r\n <div style={{\r\n color: getKPIFormattingPropertyValue(\"ComparisonValueFontColor\"),\r\n fontSize: getKPIFormattingPropertyValue(\"ComparisonValueFontSize\", \"px\")}} \r\n className=\"dl-kpi-prev-abbreviationSymbol\">\r\n {data?.ComparisonAbbreviationSymbol}\r\n </div>\r\n }\r\n\r\n {\r\n widget.current && widget.current.ShowMeasureUnit && data?.Unit && \r\n <div style={{\r\n color: getKPIFormattingPropertyValue(\"ComparisonValueFontColor\"),\r\n fontSize: getKPIFormattingPropertyValue(\"ComparisonValueFontSize\", \"px\")}} \r\n className=\"comparison-value-dl-kpi-unit\">\r\n {data?.Unit}\r\n </div>\r\n }\r\n \r\n </div>\r\n );\r\n }\r\n\r\n const isPercentageMeasureField = () => {\r\n return widget?.current && widget?.current.WidgetMeasures && widget?.current.WidgetMeasures[0] && widget?.current.WidgetMeasures[0].MeasureFieldDataType && widget?.current.WidgetMeasures[0].MeasureFieldDataType == 'Percentage';\r\n }\r\n\r\n function getValueData(): React.ReactNode {\r\n if (data?.Value == null)\r\n return (<div className=\"dl-kpi-no-data\">No data to display.</div>);\r\n\r\n return (<div style={{\r\n color: getKPIFormattingPropertyValue(\"MainValueFontColor\"),\r\n fontSize: getKPIFormattingPropertyValue(\"MainValueFontSize\", \"px\")}} \r\n className=\"dl-kpi-value dl-kpi-textTrimming\">\r\n {`${data?.Value}${isPercentageMeasureField() ? \"%\" : \"\"}`}\r\n </div>);\r\n\r\n }\r\n\r\n function getValueComponent(): React.ReactNode {\r\n return (\r\n <div className={\"dl-kpi-sub-container\"}>\r\n {getValueData()}\r\n \r\n {\r\n data?.AbbreviationSymbol && \r\n <div style={{\r\n color: getKPIFormattingPropertyValue(\"MainValueFontColor\"),\r\n fontSize: getKPIFormattingPropertyValue(\"MainValueFontSize\", \"px\")}}\r\n className=\"dl-kpi-abbreviationSymbol\">\r\n {data?.AbbreviationSymbol}\r\n </div>\r\n }\r\n \r\n {\r\n widget.current && widget.current.ShowMeasureUnit && data?.Unit && \r\n <div style={{\r\n color: getKPIFormattingPropertyValue(\"MainValueFontColor\"),\r\n fontSize: getKPIFormattingPropertyValue(\"MainValueFontSize\", \"px\")}} \r\n className=\"dl-kpi-unit\">\r\n {data?.Unit}\r\n </div>\r\n }\r\n\r\n {getRatioComponent()}\r\n </div>\r\n );\r\n }\r\n\r\n const getPeriodLabelByPeriodCode = (code : any)=> {\r\n if(!isNullOrUndefinedOrEmpty(code)){\r\n return code.replaceAll(\"_\", \" \");\r\n }\r\n\r\n return \"\";\r\n }\r\n\r\n const getLabelFromKPISettings = ()=> {\r\n if(widget.current && widget.current.KPIComparisonSettings && widget.current.KPIComparisonSettings.length) {\r\n let kpiSettings = JSON.parse(widget.current.KPIComparisonSettings);\r\n let PeriodDateFilter = kpiSettings ? kpiSettings.PeriodDateFilter : null;\r\n\r\n let isKPISettingsActivated = !isNullOrUndefinedOrEmpty(kpiSettings.PeriodFieldId)\r\n return isKPISettingsActivated && PeriodDateFilter && PeriodDateFilter.DateTimeValueCode ? getPeriodLabelByPeriodCode(PeriodDateFilter.DateTimeValueCode) : \"\";\r\n }\r\n\r\n return \"\";\r\n }\r\n\r\n const getKPIFormattingData = () => {\r\n return isNullOrUndefinedOrEmpty(widget.current?.KPIFormatSettings) ? {} : JSON.parse(widget.current?.KPIFormatSettings!);\r\n }\r\n\r\n const getKPIFormattingPropertyValue = (propertyName: any, unit: any = \"\") => {\r\n let kpiFormattingData = getKPIFormattingData();\r\n return kpiFormattingData && kpiFormattingData[propertyName] ? kpiFormattingData[propertyName] + unit : undefined;\r\n }\r\n\r\n function getLabel():React.ReactNode{\r\n let formatedValue = data ? data.Label : \"\"; //getLabelFormatByDateGroupType(data!.Label,widget.current!,false)\r\n let label = getLabelFromKPISettings()\r\n\r\n return(\r\n <div className={\"dl-kpi-label-container\"}>\r\n <span style={{\r\n color: getKPIFormattingPropertyValue(\"MainPeriodFontColor\"),\r\n fontSize: getKPIFormattingPropertyValue(\"MainPeriodFontSize\", \"px\")}} \r\n title={formatedValue} className={\"dl-kpi-label-span dl-kpi-textTrimming\"}>{label}</span> \r\n </div>\r\n );\r\n }\r\n\r\n const getIsKPIHasSmallestHeight = () => {\r\n return props.customChartProps.widgetRef && props.customChartProps.widgetRef?.Layout && props.customChartProps.widgetRef.Layout?.h == 2\r\n }\r\n\r\n const isKPICustomResizeNeeded = () => {\r\n if(!widget || !widget.current) return;\r\n\r\n // let isThereTitle = !isNullOrUndefined(widget.current?.Title) && widget.current?.Title.length > 0;\r\n // let isThereSubTitle = !isNullOrUndefined(widget.current?.Subtitle) && widget.current?.Subtitle!.length > 0;\r\n let isKPIHasSmallestHeight = getIsKPIHasSmallestHeight();\r\n \r\n return isKPIHasSmallestHeight;\r\n }\r\n\r\n return (\r\n isLoading || !widget.current?\r\n <div className={'dl-full-hight dl-flex-content-center spinner-custome'}>\r\n <ProgressSpinner style={{ width: '40px', height: '40px' }} strokeWidth=\"4\" animationDuration=\"2s\" />\r\n </div>\r\n :\r\n !error && widget.current?\r\n <div key={triggerId} onClick={kpiClick} className={(widget.current?.Alighnment == \"Left\" ? \"dl-kpi-container-click db-justify-content-flex-start\" : \"dl-kpi-container-click\")}>\r\n <div className={isKPICustomSizeNeeded ? \"dl-kpi-container kpi-custom-size\" : \"dl-kpi-container\"}>\r\n {getLabel()}\r\n {getValueComponent()}\r\n {getPreviousValueComponent()}\r\n </div>\r\n </div>\r\n : <div className=\"dl-flex-content-center dl-full-hight\" style={{ width: '100%' }}>\r\n <div className=\"dl-tooltip\">\r\n <RedWarningIcon className=\"red-warning-icon\" />\r\n <span className=\"dl-tooltiptext\">{error}</span>\r\n </div>\r\n\r\n </div>\r\n );\r\n}\r\n\r\n\r\nexport default KpiChart;\r\n","import { ProgressSpinner } from \"primereact/progressspinner\";\r\nimport React, { useEffect, useState, useRef } from \"react\";\r\nimport { DashboardAnalyticsService } from \"../../../../services/DashboardAnalyticsService\";\r\nimport { Session } from \"../../../../services/session\";\r\nimport { ReactWidgetPM } from \"../../../../types/widget\";\r\nimport { CustomChartProps } from \"./CustomChart\";\r\nimport { ReactComponent as RedWarningIcon } from \"../../../../assets/images/red-warning.svg\"\r\nimport moment from \"moment\";\r\nimport { isNullOrUndefined, isNullOrUndefinedOrEmpty } from \"../../../../Utils/General\";\r\nimport { DataTable } from 'primereact/datatable';\r\nimport { Column } from 'primereact/column';\r\n\r\ntype TableChartProps = {\r\n customChartProps: CustomChartProps;\r\n};\r\n\r\ntype FieldColumn = {\r\n DataTypeCode: string | null;\r\n DisplayName: string | null;\r\n FieldCode: string | null;\r\n Id: string | null;\r\n IsCalculatedColumn: boolean | null;\r\n};\r\n\r\nconst TableChart = (props: TableChartProps) => {\r\n const [isLoading, setIsLoading] = useState<boolean>(true);\r\n const [isTableLoading, setIsTableLoading] = useState<boolean>(false);\r\n const [error, setError] = useState<string>();\r\n const [widget, setWidget] = useState<ReactWidgetPM>();\r\n const [tableData, setTableData] = useState<any>([]);\r\n const [tableColumns, setTableColumns] = useState<any>([]);\r\n const[sortField, setSortField]=useState<any>(null);\r\n const[sortOrder, setSortOrder]=useState<any>(null);\r\n const isDefaultSortOptionsUsed = useRef(false);\r\n const widgetRefData = useRef<ReactWidgetPM | null>(null);\r\n const [objectTableName, setObjectTableName] = useState<string | null>(null);\r\n\r\n \r\n useEffect(() => {\r\n if(props.customChartProps && props.customChartProps.widget) {\r\n setWidget(props.customChartProps.widget);\r\n widgetRefData.current = props.customChartProps.widget;\r\n getObjectTableName(props.customChartProps.widget);\r\n }\r\n\r\n props.customChartProps.dataBinding?.widgetUpdated.subscribe(updatedWidget => {\r\n if (updatedWidget?.key != widgetRefData.current?.key) return;\r\n setWidget({...updatedWidget});\r\n });\r\n }, [])\r\n\r\n const getObjectTableName = (widget : ReactWidgetPM | undefined) => {\r\n let dashboardAnalyticsService = new DashboardAnalyticsService();\r\n\r\n dashboardAnalyticsService.getObjectTableNameByWidgetEntityId(widget?.EntityId)\r\n .then((res: any) => {\r\n if (res && res.data && res.data.ObjectTableName) {\r\n setObjectTableName(res.data.ObjectTableName);\r\n getTableData(widget); \r\n } else {\r\n setError(\"Erorr: No object table name match this widget entity id\");\r\n setIsLoading(false);\r\n }\r\n })\r\n .catch(() => {\r\n setError(\"Erorr: No object table name match this widget entity id\");\r\n setIsLoading(false);\r\n })\r\n \r\n \r\n }\r\n\r\n const getTableData= (widget : any) => {\r\n if (Session.Tenant == 0) {\r\n setTableData([]);\r\n setIsLoading(false);\r\n return;\r\n }\r\n\r\n let dashboardAnalyticsService = new DashboardAnalyticsService();\r\n widget.onChange = undefined;\r\n widget.PageIndex = 0;\r\n widget.PageSize = 100;\r\n \r\n dashboardAnalyticsService.getTableData(widget as ReactWidgetPM)\r\n .then((res: any) => {\r\n if(res && res.data) {\r\n fillTableData(res.data);\r\n }\r\n setIsLoading(false);\r\n })\r\n .catch((error: any) => {\r\n if (error?.response?.data?.ErrorMessage) setError(error?.response?.data?.ErrorMessage);\r\n else setError(error.message);\r\n setIsLoading(false);\r\n })\r\n }\r\n\r\n const getBooleanStringValue = (value: any) => {\r\n if(isNullOrUndefined(value) || isNullOrUndefined(value.Label)) return \"\";\r\n\r\n let _value = value.Label + \"\";\r\n return {\r\n Label: _value.charAt(0).toUpperCase() + _value.slice(1),\r\n Value: _value.charAt(0).toUpperCase() + _value.slice(1),\r\n }\r\n }\r\n \r\n const getDateTimeValue = (value: any) => {\r\n if(!value) return value;\r\n\r\n let _date = moment(value);\r\n if(!_date || !_date.isValid()) return value;\r\n \r\n return _date.format(\"DD MMM YYYY\")\r\n }\r\n\r\n const fillTableData = (tableData : any) => {\r\n let tableRecords: any = [];\r\n if(tableData.Fields && tableData.Fields.length){\r\n setTableColumns([...tableData.Fields]);\r\n setDefaultSortOptions(tableData.Fields);\r\n }\r\n\r\n if(tableData.Result && tableData.Result.length){\r\n tableData.Result.forEach((item: any) => {\r\n\r\n let _tableRow: any = {...item};\r\n tableData.Fields.forEach((field: any) => {\r\n let key = field.FieldCode\r\n let valueType = field.DataTypeCode;\r\n\r\n let _value = valueType && valueType == \"Boolean\" ? getBooleanStringValue(item[key]) : item[key]\r\n _tableRow[key] = isNullOrUndefined(_value) || (isNullOrUndefined(_value.Value) && isNullOrUndefined(_value.Label)) ? \"\" : _value;\r\n })\r\n\r\n tableRecords.push(_tableRow);\r\n })\r\n }\r\n\r\n setTableData([...tableRecords]); \r\n }\r\n\r\n const setDefaultSortOptions = (tableCols: any = []) => {\r\n if(isDefaultSortOptionsUsed && isDefaultSortOptionsUsed.current) return;\r\n\r\n isDefaultSortOptionsUsed.current= true;\r\n\r\n let _widget : any = props.customChartProps ? props.customChartProps.widget : null;\r\n if(!_widget) return;\r\n \r\n let _sortFieldCode = getSortFieldCodeBySortFieldId(_widget.DefaultSortBy, tableCols);\r\n let _sortDirection = _widget.DefaultSortDirection ? _widget.DefaultSortDirection == 'asc' ? 1 : _widget.DefaultSortDirection == 'desc' ? -1 : 0 : null;\r\n\r\n setSortField(_sortFieldCode);\r\n setSortOrder(_sortDirection)\r\n }\r\n\r\n const getSortFieldCodeBySortFieldId = (sortFieldId: any, tableCols: any = []) => {\r\n if(!sortFieldId) return null;\r\n\r\n let field = tableCols.find(col => col.Id == sortFieldId);\r\n return field ? field.FieldCode : null;\r\n }\r\n\r\n const getSortFieldIdBySortFieldCode = (sortFieldCode: any) => {\r\n if(!sortFieldCode) return null;\r\n\r\n let field = tableColumns.find(col => col.FieldCode == sortFieldCode);\r\n return field ? field.Id : null;\r\n }\r\n\r\n const sortTableData = (sortedField: any, isCalculatedColumn: boolean | null)=> {\r\n if(!canSort()) return;\r\n\r\n setSortField(sortedField);\r\n let _sortOrder = sortOrder == 1 ? -1 : sortOrder == -1 ? 1 : 1;\r\n setSortOrder(_sortOrder);\r\n\r\n let _widget : any = props.customChartProps.widget;\r\n let dashboardAnalyticsService = new DashboardAnalyticsService();\r\n _widget.onChange = undefined;\r\n _widget.PageIndex = 0;\r\n _widget.PageSize = 100;\r\n _widget.ScreenSortBy = getSortFieldIdBySortFieldCode(sortedField);\r\n _widget.ScreenSortDirection = _sortOrder == 1 ? 'asc' : _sortOrder == -1 ? 'desc' : null;\r\n _widget.ScreenSortByType = isNullOrUndefinedOrEmpty(isCalculatedColumn) ? \"Field\" : isCalculatedColumn ? \"CalculatedColumn\" : \"Field\"\r\n\r\n setIsTableLoading(true);\r\n dashboardAnalyticsService.getTableData(_widget as ReactWidgetPM)\r\n .then((res: any) => {\r\n if(res && res.data) {\r\n fillTableData(res.data);\r\n }\r\n setIsTableLoading(false);\r\n })\r\n .catch((error: any) => {\r\n if (error?.response?.data?.ErrorMessage) setError(error?.response?.data?.ErrorMessage);\r\n else setError(error.message);\r\n setIsTableLoading(false);\r\n })\r\n }\r\n\r\n const canSort = ()=> {\r\n if(props.customChartProps){\r\n return !props.customChartProps.isInEditMode && !props.customChartProps.isPreviewModeActive;\r\n }\r\n return false;\r\n }\r\n\r\n const getTableFormattingData = () => {\r\n return widget && isNullOrUndefinedOrEmpty(widget.TableFormatSettings) ? {} : JSON.parse(widget?.TableFormatSettings!);\r\n }\r\n\r\n const getTableFormattingPropertyValue = (propertyName: any, unit: any = \"\") => {\r\n let tableFormattingData = getTableFormattingData();\r\n return tableFormattingData && tableFormattingData[propertyName] ? tableFormattingData[propertyName] + unit : undefined;\r\n }\r\n\r\n const getTableConditionalRulesData = () => {\r\n return widget && isNullOrUndefinedOrEmpty(widget.TableConditionalRules) ? [] : JSON.parse(widget?.TableConditionalRules!);\r\n }\r\n\r\n const isValueEmpty = (val: any) => {\r\n return val === null || val === undefined || val === \"\";\r\n }\r\n\r\n const IsValidRule = (rule, value) => {\r\n let operator = rule && rule.RuleOperator ? rule.RuleOperator.Code : null;\r\n if(!operator) return null;\r\n\r\n let ruleValue1 = rule.RuleValue1;\r\n let ruleValue2 = rule.RuleValue2;\r\n\r\n switch (operator) {\r\n case \"Equal\":\r\n return ruleValue1 == value;\r\n case \"NotEqual\":\r\n return ruleValue1 != value;\r\n case \"Between\":\r\n return !isValueEmpty(ruleValue1) && !isValueEmpty(ruleValue2) && ruleValue1 <= value && value <= ruleValue2;\r\n case \"GreaterThan\":\r\n return !isValueEmpty(ruleValue1) && value > ruleValue1;\r\n case \"GreaterThanOrEqual\":\r\n return !isValueEmpty(ruleValue1) && value >= ruleValue1;\r\n case \"LessThan\":\r\n return !isValueEmpty(ruleValue1) && value < ruleValue1;\r\n case \"LessThanOrEqual\":\r\n return !isValueEmpty(ruleValue1) && value <= ruleValue1;\r\n case \"IsEmpty\":\r\n return isValueEmpty(value);\r\n case \"IsNotEmpty\":\r\n return !isValueEmpty(value);\r\n default:\r\n return null;\r\n }\r\n }\r\n\r\n const getCellPropertyByRule = (column: FieldColumn, cellValue: any, propertyName: string, defaultValue: string | null = null) => {\r\n let tableFormattingData = getTableConditionalRulesData();\r\n\r\n let columnType = column.IsCalculatedColumn ? \"CalculatedColumn\" : \"Field\";\r\n let columnData = tableFormattingData.find((el: any) => el.FieldId == column.Id && el.FieldType == columnType);\r\n\r\n if(!columnData || !columnData.FieldRules || columnData.FieldRules.length == 0) {\r\n return defaultValue ? getTableFormattingPropertyValue(defaultValue) : undefined; \r\n };\r\n\r\n let firstValidRule = columnData.FieldRules.find((rule: any) => IsValidRule(rule, cellValue));\r\n\r\n if(!firstValidRule) {\r\n return defaultValue ? getTableFormattingPropertyValue(defaultValue) : undefined;\r\n }\r\n\r\n return !isNullOrUndefinedOrEmpty(firstValidRule[propertyName]) ? \r\n firstValidRule[propertyName] : defaultValue ? \r\n getTableFormattingPropertyValue(defaultValue) : undefined;\r\n }\r\n \r\n const getCellFloatAlignment = (column: FieldColumn) => {\r\n if(column.DataTypeCode == 'Decimal' || column.DataTypeCode == 'Percentage'|| column.DataTypeCode == 'Integer' \r\n || column.DataTypeCode == 'Double' || column.DataTypeCode == 'SigDouble'){\r\n return \"right\";\r\n }\r\n \r\n return \"unset\";\r\n }\r\n\r\n const isClickableCell = (fieldCode: string | null) => {\r\n return ((fieldCode == \"ShipmentNumber\" && objectTableName == \"Shipment\") ||\r\n (fieldCode == \"InvoiceNumber\" && objectTableName == \"APInvoice\") ||\r\n (fieldCode == \"InvoiceNumber\" && objectTableName == \"ARInvoice\") ||\r\n (fieldCode == \"ContainerNumber\" && objectTableName == \"Container\") ||\r\n (fieldCode == \"QuoteNumber\" && objectTableName == \"Quote\") ||\r\n (fieldCode == \"Subject\" && objectTableName == \"Opportunity\") ||\r\n (fieldCode == \"EnglishName\" && objectTableName == \"Customer\"))\r\n }\r\n\r\n const tableCellClicked = (data: any, fieldCode: string | null) => {\r\n if(!data || !data.Id || !data.Id.Label || !isClickableCell(fieldCode) || props.customChartProps.isInEditMode) return;\r\n\r\n props.customChartProps.onSelectDataPoint({\r\n ObjectTableName: objectTableName,\r\n TableRowEntityId: data.Id.Label\r\n });\r\n }\r\n\r\n const cellTemplateBody = (data: any, column: FieldColumn) => {\r\n if(!column || !column.FieldCode) return \"\";\r\n\r\n return column.DataTypeCode == \"DateTime\" || column.DataTypeCode == \"Date\" ? \r\n <span title={getDateTimeValue(data[column.FieldCode!]?.Label)} \r\n className=\"table-cell\" \r\n style={{\r\n color: getTableFormattingPropertyValue(\"TableCellFontColor\"),\r\n fontSize: getTableFormattingPropertyValue(\"TableCellFontSize\", \"px\")}}>\r\n {getDateTimeValue(data[column.FieldCode!]?.Label)}\r\n </span> \r\n : <span \r\n onClick={() => tableCellClicked(data, column.FieldCode)}\r\n title={data[column.FieldCode!]?.Label} \r\n className={`table-cell ${isClickableCell(column.FieldCode) ? 'table-link-cell' :''}`} \r\n style={{\r\n color: getTableFormattingPropertyValue(\"TableCellFontColor\"),\r\n backgroundColor: getCellPropertyByRule(column, data[column.FieldCode!]?.Value, 'RuleBackgroundColor'),\r\n fontSize: getTableFormattingPropertyValue(\"TableCellFontSize\", \"px\"),\r\n float: getCellFloatAlignment(column)}}>\r\n {column.DataTypeCode == \"Percentage\" ? data[column.FieldCode!]?.Label ? data[column.FieldCode!]?.Label + \"%\" : 0 + '%' : data[column.FieldCode!]?.Label}\r\n </span>\r\n }\r\n\r\n const headerTemplate = (column: FieldColumn)=> {\r\n let sortClassIcon = \"\";\r\n if(sortField != column.FieldCode) {\r\n return <div style={{ backgroundColor: getTableFormattingPropertyValue(\"TableHeaderBackgroundColor\") }}\r\n onClick={() => sortTableData(column.FieldCode, column.IsCalculatedColumn)} className=\"header-content\">\r\n <span style={{\r\n color: getTableFormattingPropertyValue(\"TableHeaderFontColor\"),\r\n fontSize: getTableFormattingPropertyValue(\"TableHeaderFontSize\", \"px\")}} \r\n className=\"p-column-title\">\r\n {column.DisplayName}\r\n {/* {canSort() && \r\n <span \r\n style={{\r\n fontSize: getTableFormattingPropertyValue(\"TableHeaderFontSize\", \"px\"),\r\n width: getTableFormattingPropertyValue(\"TableHeaderFontSize\", \"px\"),\r\n height: getTableFormattingPropertyValue(\"TableHeaderFontSize\", \"px\")}} \r\n className=\"p-sortable-column-icon p-ml-2 pi pi-fw pi-sort-alt\">\r\n\r\n </span>\r\n } */}\r\n </span>\r\n </div>\r\n }\r\n\r\n if(sortOrder == 1){\r\n // arrow up\r\n sortClassIcon = \"p-sortable-column-icon p-ml-2 pi pi-fw pi-sort-amount-up-alt\";\r\n }else if(sortOrder == -1){\r\n // arrow down\r\n sortClassIcon = \"p-sortable-column-icon p-ml-2 pi pi-fw pi-sort-amount-down\";\r\n } else {\r\n // 2 arrows, up and down\r\n sortClassIcon = \"p-sortable-column-icon p-ml-2 pi pi-fw pi-sort-alt\";\r\n }\r\n\r\n return <div style={{ backgroundColor: getTableFormattingPropertyValue(\"TableHeaderBackgroundColor\") }}\r\n onClick={() => sortTableData(column.FieldCode, column.IsCalculatedColumn)} className=\"header-content\">\r\n <span style={{\r\n color: getTableFormattingPropertyValue(\"TableHeaderFontColor\"),\r\n fontSize: getTableFormattingPropertyValue(\"TableHeaderFontSize\", \"px\")}} \r\n className=\"p-column-title\">\r\n {column.DisplayName}\r\n {/* {canSort() && \r\n <span \r\n style={{\r\n fontSize: getTableFormattingPropertyValue(\"TableHeaderFontSize\", \"px\"),\r\n width: getTableFormattingPropertyValue(\"TableHeaderFontSize\", \"px\"),\r\n height: getTableFormattingPropertyValue(\"TableHeaderFontSize\", \"px\")}} \r\n className={sortClassIcon}>\r\n </span>\r\n } */}\r\n </span>\r\n </div>\r\n }\r\n\r\n\r\n return (\r\n isLoading ?\r\n <div className={'dl-full-hight dl-flex-content-center spinner-custome'}>\r\n <ProgressSpinner style={{ width: '40px', height: '40px' }} strokeWidth=\"4\" animationDuration=\"2s\" />\r\n </div> :\r\n\r\n error ?\r\n <div className=\"dl-flex-content-center dl-full-hight\" style={{ width: '100%' }}>\r\n <div className=\"dl-tooltip\">\r\n <RedWarningIcon className=\"red-warning-icon\" />\r\n <span className=\"dl-tooltiptext\">{error}</span>\r\n </div>\r\n\r\n </div> :\r\n <DataTable loading={isTableLoading} value={tableData} responsiveLayout=\"scroll\">\r\n {\r\n tableColumns.map((column: any, index: number) => {\r\n return <Column key={column.FieldCode + \"_\" + index} header={() => headerTemplate(column)} body={(data: any) => cellTemplateBody(data, column)}></Column> \r\n })\r\n }\r\n </DataTable> \r\n )\r\n\r\n\r\n\r\n\r\n}\r\n\r\n\r\nexport default TableChart;\r\n\r\n","import React from \"react\";\r\nimport { DashboardDataBinding } from \"../../../../types/DashboardDataBinding\";\r\nimport { DataPointSelection } from \"../../../../types/SeriesMeasure\";\r\nimport { ReactWidgetPM } from \"../../../../types/widget\";\r\nimport KpiChart from \"./KpiChart\";\r\nimport TableChart from \"./TableChart\";\r\n\r\n\r\nexport type CustomChartProps = {\r\n widget: ReactWidgetPM | undefined,\r\n widgetRef: ReactWidgetPM | undefined,\r\n dataBinding: DashboardDataBinding;\r\n isPreviewModeActive?:boolean;\r\n isInEditMode?:boolean;\r\n onSelectDataPoint: (dataPointSelection: DataPointSelection) => void;\r\n};\r\nconst CustomChart = (props: CustomChartProps) => {\r\n const project = () => {\r\n switch (props.widget?.TypeCode) {\r\n case \"kpi\": return <KpiChart customChartProps={props} />;\r\n case \"table\": return <TableChart customChartProps={props} />;\r\n \r\n default: return <div>Invalid Type</div>;\r\n }\r\n }\r\n\r\n return (\r\n <React.Fragment>\r\n <div className={props.widget && props.widget?.TypeCode == 'table' ? \"dl-custom-chart-container dl-table-chart-container\" : \"dl-custom-chart-container\"}>{project()}</div>\r\n </React.Fragment>\r\n );\r\n}\r\n\r\n\r\nexport default CustomChart;","import { getGlobalNumberFormatting, isNullOrUndefined } from \"../../../../Utils/General\";\r\nimport { SeriesMeasure } from \"../../../../types/SeriesMeasure\";\r\nimport { ReactWidgetPM } from \"../../../../types/widget\";\r\n\r\nexport function buildToolTip(widget: ReactWidgetPM, value: any, seriesName: SeriesMeasure, label: any, index: number): string {\r\n var padding = (widget.TypeCode == 'line' && index > 0) ? 'padding-top: 3px' : '';\r\n return `\r\n <div style=\"min-width: 108px;` + padding + `\">\r\n <div style=\"display: flex;align-items: center;margin-bottom: 6px;\">\r\n <span style=\"margin: 0; min-height: 10px; min-width: 10px; height: 10px; width: 10px; background-color: transparent; border-radius: 50%; display: inline-block;\"></span>\r\n <p style=\" margin: 0; margin-left: 4px; white-space: pre-line; font-family: 'Manrope'; font-style: normal;font-weight: 400; font-size: 11px; line-height: 100%; color: #323232;\"> ` + getTooltiplabel(label, seriesName) + `</p>\r\n </div>\r\n <hr style=\"margin: 0;border-top: 1px solid #F0F0F0;\">\r\n <div style=\"display: flex;align-items: center;margin:0;margin-top: 6px;\">\r\n <p style=\"margin: 0;font-family: 'Manrope'; white-space: pre-line; font-style: normal;font-weight: 400; font-size: 11px;line-height: 100%;color: #A4A4A4;\"> ` + getMeasureType(seriesName) + `</p>\r\n <p style=\"margin: 0;margin-left: 6px; white-space: pre-line; font-family: 'Manrope';font-style: normal;font-weight: 500;font-size: 11px;line-height: 100%; color: #323232;\">` + getTooltipValue(value, seriesName) + `</p>\r\n ` + getTooltipPercentage(widget) +\r\n ` </div>\r\n </div>\r\n `;\r\n}\r\n\r\nfunction getTooltipPercentage(widget: ReactWidgetPM): string {\r\n if (widget.TypeCode != \"donut\" && widget.TypeCode != \"pie\") return \"\";\r\n return `\r\n <p style=\"margin: 0;margin-left: 2px;font-family: 'Manrope';font-style: normal;font-weight: 500;font-size: 11px;line-height: 100%; color: #A4A4A4;flex: none; order: 1;flex-grow: 0;\">($percentValue)</p>\r\n `;\r\n}\r\n\r\nfunction getTooltiplabel(value: any, seriesMeasure: SeriesMeasure): string {\r\n if (value) return value;\r\n if (seriesMeasure && seriesMeasure.Name) return '$label' + \" - \" + seriesMeasure.Name;\r\n return '$label';\r\n}\r\n\r\nconst getFormattedValue = (value: number) => {\r\n if(isNaN(value)) return value;\r\n\r\n let _numberSeparatorSettings = getGlobalNumberFormatting();\r\n\r\n let _val = value.toLocaleString('en-US');\r\n\r\n if(_val){ \r\n let _formattedValue = _val.replaceAll(\",\", \"*\");\r\n _formattedValue = _formattedValue.replaceAll(\".\", \"-\");\r\n\r\n _formattedValue = _formattedValue.replaceAll(\"*\", _numberSeparatorSettings.thousandsSeparator);\r\n _formattedValue = _formattedValue.replaceAll(\"-\", _numberSeparatorSettings.decimalSeparator);\r\n\r\n return _formattedValue;\r\n }\r\n\r\n return value;\r\n}\r\n\r\nfunction getTooltipValue(value: any, seriesMeasure: SeriesMeasure): string | number {\r\n if (!isNullOrUndefined(value)) {\r\n return seriesMeasure && seriesMeasure.MeasureFieldDataType == 'Percentage' ? getFormattedValue(value) + \"%\" : getFormattedValue(value);\r\n }\r\n\r\n return '$dataValue';\r\n}\r\n\r\nfunction getMeasureType(seriesMeasure:SeriesMeasure): string {\r\n if (!seriesMeasure.Name) return \"Count:\"\r\n if(seriesMeasure.MeasureCode == \"Formula\"){\r\n var formula =JSON.parse(seriesMeasure.Formula)\r\n return formula.Name;\r\n }\r\n return seriesMeasure.Name.replace(/ .*/, '') + \":\";\r\n}","import { getLabelFormatByDateGroupType } from \"../../../../Utils/DateHelper\";\r\nimport { SeriesMeasure } from \"../../../../types/SeriesMeasure\";\r\nimport { ReactWidgetPM } from \"../../../../types/widget\";\r\nimport { ChartInfo } from \"./FusionChartObjectHelper\";\r\nimport { buildToolTip } from \"./FusionChartTooltip\";\r\n\r\nvar months = [\"Jan\", \"Feb\", \"Mar\", \"Apr\", \"May\", \"Jun\", \"Jul\", \"Aug\", \"Sep\", \"Oct\", \"Nov\", \"Dec\"];\r\nvar quarters = [\"Q\", \"Q1\", \"Q2\", \"Q3\", \"Q4\"];\r\n\r\nexport function getCategoriesBasedDataSource(chartInfo: ChartInfo, seriesMeasures: SeriesMeasure[], widget: ReactWidgetPM): any {\r\n if (seriesMeasuresIsEmpty(seriesMeasures)) return null;\r\n\r\n handelNullLabels(seriesMeasures);\r\n return {\r\n chart: chartInfo,\r\n categories: buildCategories(seriesMeasures, widget),\r\n dataset: buildDataSet(seriesMeasures, widget)\r\n }\r\n}\r\n\r\nexport function getStackedDataSource(chartInfo: ChartInfo, seriesMeasures: SeriesMeasure[], widget: ReactWidgetPM): any {\r\n if (seriesMeasuresIsEmpty(seriesMeasures)) return null;\r\n\r\n handelNullLabels(seriesMeasures);\r\n return {\r\n chart: chartInfo,\r\n categories: buildStackedCategories(seriesMeasures, widget),\r\n dataset: buildStackedDataSet(seriesMeasures, widget)\r\n }\r\n}\r\n\r\n\r\nexport function getSimpleDataSource(chartInfo: ChartInfo, seriesMeasures: SeriesMeasure[], widget: ReactWidgetPM): any {\r\n if (seriesMeasuresIsEmpty(seriesMeasures)) return null;\r\n\r\n handelNullLabels(seriesMeasures);\r\n return {\r\n chart: chartInfo,\r\n data: buildDataSource(seriesMeasures, widget),\r\n }\r\n}\r\n\r\nfunction handelNullLabels(seriesMeasures: SeriesMeasure[]) {\r\n seriesMeasures.forEach(element => {\r\n element.Values.forEach(value => {\r\n if (!value.Label || value.Label == '')\r\n value.Label = 'Not defined'\r\n });\r\n });\r\n}\r\n\r\nfunction seriesMeasuresIsEmpty(seriesMeasures: SeriesMeasure[]): boolean {\r\n if (!seriesMeasures || seriesMeasures.length == 0) return true;\r\n let hasValue = false;\r\n seriesMeasures.forEach(item => {\r\n if (item.Values && item.Values.length > 0) hasValue = true;\r\n });\r\n return !hasValue;\r\n}\r\n\r\nfunction buildDataSource(values: SeriesMeasure[], widget: ReactWidgetPM) {\r\n let data: any[] = [];\r\n if (!values || !values[0]) return data;\r\n\r\n var series = values[0];\r\n data = series.Values.map((e, index) => {\r\n let item = {\r\n value: e.Value,\r\n label: getLabelFormatByDateGroupType(e.Label, widget, false),\r\n id: {\r\n GroupById: e.GroupById,\r\n MeasureFieldId: series.MeasureFieldId,\r\n MeasureCode: series.MeasureCode,\r\n Formula: series.Formula\r\n },\r\n tooltext: buildToolTip(widget, null, series, e.Label, 0),\r\n }\r\n return item;\r\n });\r\n return data;\r\n}\r\n\r\nfunction buildDataSet(seriesMeasures: SeriesMeasure[], widget: ReactWidgetPM) {\r\n let dataSet: any[] = [];\r\n let seriesPosition = 1;\r\n\r\n seriesMeasures.forEach(seriesMeasure => {\r\n let datas = seriesMeasure.Values.map((e, index) => {\r\n return {\r\n value: e.Value,\r\n id: {\r\n GroupById: e.GroupById,\r\n MeasureFieldId: seriesMeasure.MeasureFieldId,\r\n MeasureCode: seriesMeasure.MeasureCode,\r\n Formula: seriesMeasure.Formula\r\n },\r\n tooltext: buildToolTip(widget, e.Value, seriesMeasure, null, index),\r\n }\r\n });\r\n dataSet.push({\r\n data: datas,\r\n seriesname: seriesMeasure.Name,\r\n anchorBgColor: \"inherit\",\r\n anchorBorderColor: \"#FFFFFF\",\r\n anchorBorderThickness: \"2\",\r\n anchorHoverColor: \"inherit\",\r\n parentyaxis: seriesMeasure.PlotasLineChart && seriesMeasure.PlotonSecondAxis ? 'S' : \"P\",\r\n renderAs: seriesMeasure.PlotasLineChart ? 'line' : \"column\",\r\n });\r\n seriesPosition++;\r\n });\r\n return dataSet;\r\n}\r\n\r\nfunction buildStackedDataSet(seriesMeasures: SeriesMeasure[], widget: ReactWidgetPM) {\r\n let dataSet: any[] = [];\r\n let seriesPosition = 1;\r\n\r\n var series = seriesMeasures[0];\r\n\r\n const uniqueGroups: any[] = [];\r\n\r\n series.Values.forEach(element => {\r\n if (!uniqueGroups.find(x => x.code == element.GroupByIdSec))\r\n uniqueGroups.push({ code: element.GroupByIdSec, label: getLabelFormatByDateGroupType(element.LabelSec, widget, true) })\r\n });\r\n\r\n uniqueGroups.forEach(group => {\r\n dataSet.push({\r\n seriesName: group.label,\r\n data: buildStackedGroupData(group, series, widget)\r\n });\r\n seriesPosition++;\r\n });\r\n \r\n let emptylabels = dataSet.filter(e=>e.seriesName == null);\r\n let filledLabels = dataSet.filter(e=>e.seriesName != null);\r\n\r\n dataSet = widget.SecondaryDateGroupCode ? sortDataSet(filledLabels, widget.SecondaryDateGroupCode!) : filledLabels;\r\n return emptylabels.concat(dataSet);\r\n}\r\n\r\nfunction sortDataSet(dataSet: any[], SecondaryDateGroupCode: string) {\r\n switch (SecondaryDateGroupCode) {\r\n case \"Year\":\r\n return dataSet.sort((s1, s2) => s1.seriesName - s2.seriesName);\r\n case \"Month\":\r\n return dataSet.sort(function (s1, s2) {\r\n return months.indexOf(s1.seriesName) - months.indexOf(s2.seriesName);\r\n });\r\n case \"Quarter\":\r\n return dataSet.sort(function (s1, s2) {\r\n return quarters.indexOf(s1.seriesName) - quarters.indexOf(s2.seriesName);\r\n });\r\n case \"Month & Year\": return dataSet.sort(function sort(s1, s2) {\r\n var aa = s1.seriesName.split(' '),\r\n bb = s2.seriesName.split(' ');\r\n return aa[1] - bb[1] || months.indexOf(aa[0]) - months.indexOf(bb[0]);\r\n });\r\n case \"Quarter & Year\": return dataSet.sort(function sort(s1, s2) {\r\n var aa = s1.seriesName.split(' '),\r\n bb = s2.seriesName.split(' ');\r\n return aa[1] - bb[1] || quarters.indexOf(aa[0]) - quarters.indexOf(bb[0]);\r\n });\r\n default:\r\n return dataSet;\r\n }\r\n}\r\n\r\nfunction buildStackedGroupData(secGroup: any, series: SeriesMeasure, widget: ReactWidgetPM) {\r\n const uniqueGroups: any[] = getUniqueGroupOrderdList(series);\r\n\r\n let data: any[] = [];\r\n uniqueGroups.forEach(group => {\r\n data.push({\r\n value: series.Values.find(x => x.GroupById == group.code && x.GroupByIdSec == secGroup.code)?.Value,\r\n id: {\r\n GroupById: group.code,\r\n MeasureFieldId: series.MeasureFieldId,\r\n GroupByIdSec: secGroup.code,\r\n MeasureCode: series.MeasureCode,\r\n Formula: series.Formula\r\n },\r\n tooltext: buildToolTip(widget, null, series, group.label + \" - \" + secGroup.label, 0),\r\n })\r\n });\r\n\r\n return data;\r\n}\r\nfunction buildCategories(seriesMeasures: SeriesMeasure[], widget: ReactWidgetPM) {\r\n var categories = seriesMeasures[0].Values.map((e) => {\r\n return {\r\n label: getLabelFormatByDateGroupType(e.Label, widget, false)\r\n }\r\n });\r\n var result: any[] = [];\r\n result.push({ category: categories });\r\n return result;\r\n}\r\n\r\nfunction buildStackedCategories(seriesMeasures: SeriesMeasure[], widget: ReactWidgetPM) {\r\n const uniqueGroups: any[] = getUniqueGroupOrderdList(seriesMeasures[0]);\r\n\r\n var categories = uniqueGroups.map((e) => {\r\n return {\r\n label: getLabelFormatByDateGroupType(e.label, widget, false)\r\n }\r\n });\r\n var result: any[] = [];\r\n result.push({ category: categories });\r\n return result;\r\n}\r\n\r\nfunction getUniqueGroupOrderdList(series: SeriesMeasure) {\r\n let uniqueGroups: any[] = [];\r\n series.Values.forEach(element => {\r\n if (!uniqueGroups.find(x => x.code == element.GroupById))\r\n uniqueGroups.push({ code: element.GroupById, label: element.Label });\r\n });\r\n return uniqueGroups;\r\n}\r\n\r\n","import { ChartObject } from \"fusioncharts\";\r\nimport { SeriesMeasure } from \"../../../../types/SeriesMeasure\";\r\nimport { ReactWidgetPM } from \"../../../../types/widget\";\r\nimport { getCategoriesBasedDataSource, getSimpleDataSource, getStackedDataSource } from \"./FusionChartDataSoruceBuilder\";\r\nimport { ChartInfo } from \"./FusionChartObjectHelper\";\r\nimport { getGlobalNumberFormatting, isNullOrUndefined, isNullOrUndefinedOrEmpty } from \"../../../../Utils/General\";\r\n\r\nconst defautFontSize = \"12\";\r\nconst defautFont = \"Manrope\";\r\nconst defautColor = \"#323232\";\r\n\r\n\r\nexport function BuildFusionChartObject(seriesMeasures: SeriesMeasure[], widget: ReactWidgetPM): ChartObject {\r\n switch (widget?.TypeCode) {\r\n case 'bar':\r\n if (!widget.SecondaryGroupById) return getBarObject(seriesMeasures, widget);\r\n return getStackedBarObject(seriesMeasures, widget);\r\n case 'line':\r\n if (!widget.SecondaryGroupById) return getLineObject(seriesMeasures, widget);\r\n return getClusteredLineObject(seriesMeasures, widget);\r\n case 'pie':\r\n return getPieObject(seriesMeasures, widget);\r\n case 'donut':\r\n return getDonutObject(seriesMeasures, widget);\r\n case 'column':\r\n if (!widget.SecondaryGroupById) return getColumnObject(seriesMeasures, widget);\r\n return getClusteredColumnObject(seriesMeasures, widget); \r\n default:\r\n return {};\r\n }\r\n}\r\n\r\nconst getWidgetRanges = (widget: ReactWidgetPM, value : any) => {\r\n let gaugeRanges = widget.GaugeRanges && widget.GaugeRanges.length > 0 ? JSON.parse(widget.GaugeRanges) : null;\r\n\r\n if(gaugeRanges == null || isNullOrUndefinedOrEmpty(value)) return [];\r\n\r\n if(value < gaugeRanges[0].minValue) {\r\n gaugeRanges[0].minValue = value;\r\n } \r\n\r\n if(value > gaugeRanges[2].maxValue) {\r\n gaugeRanges[2].maxValue = value;\r\n } \r\n\r\n return gaugeRanges;\r\n}\r\n\r\nexport const getGaugeObject = (data: any, widget: ReactWidgetPM) => {\r\n let fusionObject = getDefaultChartobject();\r\n fusionObject.type = 'angulargauge'\r\n let chartInfo = getDefaultChartInfo(widget);\r\n \r\n chartInfo.manageResize = \"1\";\r\n chartInfo.valueBelowPivot = \"1\";\r\n chartInfo.showValue = \"1\";\r\n fusionObject.dataSource = {\r\n \"chart\" : chartInfo,\r\n \"colorRange\": {\r\n \"color\" : getWidgetRanges(widget, !isNullOrUndefined(data) && !isNullOrUndefined(data?.Value) ? data?.Value : 0)\r\n },\r\n \"dials\": {\r\n \"dial\": [{\r\n \"value\": !isNullOrUndefined(data) && !isNullOrUndefined(data?.Value) ? data?.Value : 0\r\n }]\r\n }\r\n }\r\n\r\n return fusionObject;\r\n}\r\n\r\nfunction getBarObject(seriesMeasures: SeriesMeasure[], widget: ReactWidgetPM): ChartObject {\r\n let chart = getDefaultChartobject();\r\n chart.type = isGroupByFieldDateTime(widget.GroupByFieldDataType) ? \"msbar2d\" : \"scrollbar2d\";\r\n\r\n let chartInfo = getDefaultChartInfo(widget);\r\n chartInfo.scrollPosition = \"right\";\r\n chartInfo.scrollPadding = \"8\";\r\n chartInfo.flatScrollBars = \"1\";\r\n chartInfo.showPercentValues = widget.ShowValueAsNumber ? \"0\" : \"1\";\r\n chartInfo.showLegend = widget.ShowLegend ? '1' : '0';\r\n setLineDash(chartInfo);\r\n chartInfo.chartTopMargin = \"10\";\r\n chartInfo.chartBottomMargin = \"10\";\r\n chartInfo.legendPosition = getWidgetLegendPosition(widget);\r\n\r\n chart.dataSource = getCategoriesBasedDataSource(chartInfo, seriesMeasures, widget);\r\n return chart;\r\n}\r\n\r\nfunction getStackedBarObject(seriesMeasures: SeriesMeasure[], widget: ReactWidgetPM): ChartObject {\r\n let chart = getDefaultChartobject();\r\n\r\n if(widget.IsStacked){\r\n chart.type = isGroupByFieldDateTime(widget.GroupByFieldDataType) ? \"stackedbar2d\" : \"scrollstackedbar2d\";\r\n }else {\r\n chart.type = isGroupByFieldDateTime(widget.GroupByFieldDataType) ? \"msbar2d\" : \"scrollbar2d\";\r\n }\r\n\r\n let chartInfo = getDefaultChartInfo(widget);\r\n chartInfo.scrollPosition = \"right\";\r\n chartInfo.scrollPadding = \"8\";\r\n chartInfo.flatScrollBars = \"1\";\r\n chartInfo.showPercentValues = widget.ShowValueAsNumber ? \"0\" : \"1\";\r\n chartInfo.showLegend = widget.ShowLegend ? '1' : '0';\r\n setLineDash(chartInfo);\r\n chartInfo.chartTopMargin = \"10\";\r\n chartInfo.chartBottomMargin = \"10\";\r\n chartInfo.legendPosition= getWidgetLegendPosition(widget);\r\n\r\n chart.dataSource = getStackedDataSource(chartInfo, seriesMeasures, widget);\r\n return chart;\r\n}\r\n\r\nfunction getClusteredColumnObject(seriesMeasures: SeriesMeasure[], widget: ReactWidgetPM): ChartObject {\r\n let chart = getDefaultChartobject();\r\n\r\n if(widget.IsStacked){\r\n chart.type = isGroupByFieldDateTime(widget.GroupByFieldDataType) ? \"stackedcolumn2d\" : \"scrollstackedcolumn2d\";\r\n }else {\r\n chart.type = isGroupByFieldDateTime(widget.GroupByFieldDataType) ? \"mscolumn2d\" : \"scrollcolumn2d\";\r\n }\r\n\r\n let chartInfo = getDefaultChartInfo(widget);\r\n chartInfo.scrollPosition = \"top\";\r\n chartInfo.scrollPadding = \"8\";\r\n chartInfo.flatScrollBars = \"1\";\r\n chartInfo.showPercentValues = widget.ShowValueAsNumber ? \"0\" : \"1\";\r\n chartInfo.showLegend = widget.ShowLegend ? '1' : '0';\r\n setLineDash(chartInfo);\r\n \r\n chartInfo.chartTopMargin = \"10\";\r\n chartInfo.chartBottomMargin = \"10\";\r\n chartInfo.legendPosition= getWidgetLegendPosition(widget);\r\n chart.dataSource = getStackedDataSource(chartInfo, seriesMeasures, widget);\r\n return chart;\r\n}\r\n\r\nfunction getClusteredLineObject(seriesMeasures: SeriesMeasure[], widget: ReactWidgetPM): ChartObject {\r\n let chart = getDefaultChartobject();\r\n chart.type = isGroupByFieldDateTime(widget.GroupByFieldDataType) ? \"msline\" : \"scrollline2d\";\r\n\r\n let chartInfo = getDefaultChartInfo(widget);\r\n chartInfo.scrollPosition = \"top\"; \r\n chartInfo.scrollPadding = \"8\";\r\n chartInfo.flatScrollBars = \"1\";\r\n chartInfo.showPercentValues = widget.ShowValueAsNumber ? \"0\" : \"1\";\r\n chartInfo.showLegend = widget.ShowLegend ? '1' : '0';\r\n setLineDash(chartInfo);\r\n \r\n chartInfo.chartTopMargin = \"10\";\r\n chartInfo.chartBottomMargin = \"10\";\r\n chartInfo.legendPosition= getWidgetLegendPosition(widget);\r\n\r\n chart.dataSource = getStackedDataSource(chartInfo, seriesMeasures, widget);\r\n return chart;\r\n}\r\n\r\n\r\nfunction getLineObject(seriesMeasures: SeriesMeasure[], widget: ReactWidgetPM): ChartObject {\r\n let chart = getDefaultChartobject();\r\n chart.type = isGroupByFieldDateTime(widget.GroupByFieldDataType) ? \"msline\" : \"scrollline2d\";\r\n \r\n let chartInfo = getDefaultChartInfo(widget);\r\n chartInfo.scrollPosition = \"top\";\r\n chartInfo.scrollPadding = \"8\";\r\n chartInfo.flatScrollBars = \"1\";\r\n chartInfo.showPercentValues = widget.ShowValueAsNumber ? \"0\" : \"1\";\r\n chartInfo.showLegend = widget.ShowLegend ? '1' : '0';\r\n setLineDash(chartInfo);\r\n chartInfo.chartTopMargin = \"20\";\r\n chartInfo.chartBottomMargin = \"10\";\r\n chartInfo.chartLeftMargin = \"20\";\r\n chartInfo.chartRightMargin = \"50\";\r\n chartInfo.anchorradius = \"5\";\r\n chartInfo.canvasBottomPadding = \"10\";\r\n chartInfo.canvasTopPadding = \"10\";\r\n chartInfo.legendPosition = getWidgetLegendPosition(widget);\r\n\r\n chart.dataSource = getCategoriesBasedDataSource(chartInfo, seriesMeasures, widget);\r\n return chart;\r\n}\r\n\r\nfunction getDonutObject(seriesMeasures: SeriesMeasure[], widget: ReactWidgetPM): ChartObject {\r\n let chart = getDefaultChartobject();\r\n chart.type = \"doughnut2d\";\r\n\r\n let chartInfo = getDefaultChartInfo(widget);\r\n chartInfo.labelFontSize = defautFontSize;\r\n chartInfo.labelFont = defautFont;\r\n chartInfo.manageLabelOverflow = \"1\";\r\n chartInfo.useEllipsesWhenOverflow = \"1\";\r\n chartInfo.enableSmartLabels = \"1\";\r\n chartInfo.legendPosition = getWidgetLegendPosition(widget);\r\n\r\n setPieDonutLegends(chartInfo, widget);\r\n chart.dataSource = getSimpleDataSource(chartInfo, seriesMeasures, widget);\r\n return chart;\r\n}\r\n\r\nfunction getPieObject(seriesMeasures: SeriesMeasure[], widget: ReactWidgetPM): ChartObject {\r\n let chart = getDefaultChartobject();\r\n chart.type = \"pie2d\";\r\n\r\n let chartInfo = getDefaultChartInfo(widget);\r\n chartInfo.labelFontSize = defautFontSize;\r\n chartInfo.labelFont = defautFont;\r\n chartInfo.manageLabelOverflow = \"1\";\r\n chartInfo.useEllipsesWhenOverflow = \"1\";\r\n chartInfo.enableSmartLabels = \"1\";\r\n setPieDonutLegends(chartInfo, widget);\r\n chart.dataSource = getSimpleDataSource(chartInfo, seriesMeasures, widget);\r\n chartInfo.legendPosition = getWidgetLegendPosition(widget);\r\n return chart;\r\n}\r\n\r\nconst isGroupByFieldDateTime = (GroupByFieldDataType : any)=> {\r\n return GroupByFieldDataType == \"DateTime\" || GroupByFieldDataType == \"Date\";\r\n}\r\n\r\nconst isFirstMeasureTypePercentage = (widget: ReactWidgetPM) => {\r\n return widget && widget.WidgetMeasures && widget.WidgetMeasures[0] && widget.WidgetMeasures[0].MeasureFieldDataType && widget.WidgetMeasures[0].MeasureFieldDataType == 'Percentage';\r\n}\r\n\r\nconst isSecondMeasureTypePercentage = (widget: ReactWidgetPM) => {\r\n return widget && widget.WidgetMeasures && widget.WidgetMeasures[1] && widget.WidgetMeasures[1].MeasureFieldDataType && widget.WidgetMeasures[1].MeasureFieldDataType == 'Percentage';\r\n}\r\n\r\nfunction getColumnObject(seriesMeasures: SeriesMeasure[], widget: ReactWidgetPM): ChartObject {\r\n let chart = getDefaultChartobject();\r\n chart.type = isGroupByFieldDateTime(widget.GroupByFieldDataType) ? \"mscombidy2d\" : \"scrollcombidy2d\";\r\n\r\n let chartInfo = getDefaultChartInfo(widget);\r\n chartInfo.scrollPadding = \"8\";\r\n chartInfo.flatScrollBars = \"1\";\r\n chartInfo.showPercentValues = widget.ShowValueAsNumber ? \"0\" : \"1\";\r\n chartInfo.showLegend = widget.ShowLegend ? '1' : '0';\r\n chartInfo.scrollPosition = \"top\";\r\n setLineDash(chartInfo);\r\n chartInfo.chartTopMargin = \"20\";\r\n chartInfo.chartBottomMargin = \"10\";\r\n chartInfo.chartLeftMargin = \"20\";\r\n chartInfo.chartRightMargin = \"50\";\r\n chartInfo.canvasBottomPadding = \"10\";\r\n setDualyAxis(chartInfo, widget, seriesMeasures);\r\n chart.dataSource = getCategoriesBasedDataSource(chartInfo, seriesMeasures, widget);\r\n chartInfo.legendPosition = getWidgetLegendPosition(widget);\r\n\r\n return chart;\r\n}\r\n\r\nfunction setLineDash(chartInfo: ChartInfo) {\r\n chartInfo.divLineDashed = \"1\";\r\n chartInfo.divLineDashLen = \"5\";\r\n chartInfo.divLineDashGap = \"5\";\r\n chartInfo.divLineColor = \"#E7E7E7\";\r\n chartInfo.divLineAlpha = \"100\";\r\n chartInfo.divLineThickness = \"1\";\r\n}\r\n\r\n\r\nfunction getDefaultChartobject(): ChartObject {\r\n let chart = {} as ChartObject;\r\n chart.type = \"column2d\";\r\n chart.width = \"100%\";\r\n chart.height = \"100%\";\r\n chart.dataFormat = \"json\";\r\n return chart;\r\n}\r\n\r\nconst getXaxisTitle = (widget: ReactWidgetPM) => {\r\n if(widget.TypeCode == 'bar'){\r\n return widget.ShowYAxisTitle ? widget.YAxisTitle || \"\" : \"\"\r\n }\r\n\r\n return widget.XAxisTitle || \"\";\r\n}\r\n\r\nconst getYaxisTitle = (widget: ReactWidgetPM) => {\r\n if(widget.TypeCode == 'bar'){\r\n return widget.ShowXAxisTitle ? widget.XAxisTitle || \"\" : \"\"\r\n }\r\n \r\n return widget.YAxisTitle || \"\";\r\n}\r\n\r\nfunction getDefaultChartInfo(widget: ReactWidgetPM): ChartInfo {\r\n let chart = {} as ChartInfo;\r\n chart.theme = \"fusion\";\r\n chart.baseFont = defautFont;\r\n chart.baseFontSize = defautFontSize;\r\n chart.baseFontColor = defautColor;\r\n chart.legendCaptionFontSize = defautFontSize;\r\n chart.legendCaptionFontColor = defautColor;\r\n chart.legendCaptionFont = defautFont;\r\n chart.labelFontColor = defautColor;\r\n chart.labelFont = defautFont;\r\n chart.legendItemFont = defautFont;\r\n chart.legendItemFontSize = defautFontSize;\r\n chart.sYAxisNameFont = defautFont;\r\n chart.sYAxisNameFontSize = defautFontSize;\r\n chart.sYAxisNameFontColor = defautColor;\r\n\r\n chart.pYAxisNameFont = defautFont;\r\n chart.pYAxisNameFontSize = defautFontSize;\r\n chart.pYAxisNameFontColor = defautColor;\r\n\r\n chart.xAxisNameFont = defautFont;\r\n chart.xAxisNameFontSize = defautFontSize;\r\n chart.xAxisNameFontColor = defautColor;\r\n\r\n chart.yAxisNameFont = defautFont;\r\n chart.yAxisNameFontSize = defautFontSize;\r\n chart.yAxisNameFontColor = defautColor;\r\n chart.drawCrossLine = \"0\";\r\n \r\n chart.xAxisName = widget.ShowXAxisTitle && widget.XAxisTitle ? widget.XAxisTitle : \"\";\r\n chart.yAxisName = widget.ShowYAxisTitle && widget.YAxisTitle ? widget.YAxisTitle : \"\";\r\n chart.labelDisplay = widget.XAxisLabelsDisplay ? widget.XAxisLabelsDisplay : \"Auto\";\r\n chart.slantLabel = \"1\"\r\n chart.labelFontSize = widget.XAxisLabelsFontSize ? widget.XAxisLabelsFontSize + \"\" : \"10\";\r\n\r\n chart.showValues = widget.ShowValue ? \"1\" : '0';\r\n chart.valuePosition = widget.ShowValue && widget.ValuePosition ? widget.ValuePosition : 'Outside';\r\n\r\n let isValuePositionInside = widget.ShowValue && widget.ValuePosition && widget.ValuePosition.toLowerCase() == 'inside';\r\n\r\n if(widget.ShowValue && widget.ValuePosition && isColumnOrBarChart(widget)) { \r\n chart.placeValuesInside = widget.ValuePosition.toLowerCase() == 'inside' ? \"1\" : \"0\"\r\n }\r\n\r\n if(widget.IsStacked && isValuePositionInside && isColumnOrBarChart(widget)) { \r\n chart.minPlotHeightForValue = \"35\"\r\n }\r\n\r\n if(isValuePositionInside && isPieOrDonutChart(widget)) { \r\n chart.minAngleForValue = \"27\"\r\n }\r\n\r\n chart.numberSuffix = isFirstMeasureTypePercentage(widget) ? \"%\" : null;\r\n\r\n let _numberSeparatorSettings = getGlobalNumberFormatting();\r\n chart.thousandSeparator = _numberSeparatorSettings.thousandsSeparator;\r\n chart.decimalSeparator = _numberSeparatorSettings.decimalSeparator;\r\n\r\n chart.palettecolors = \"#369CFB, #FCAF16, #EE5F77, #4AC76F, #935BE0, #FAD337, #32C7C7, #EB67D0, #3C9957, #FF7D4B, #78A6FF, #35838F, #BAA9F3, #C1DA72, #F0AEAD, #246EAB\";\r\n chart.enableSlicing = \"0\";\r\n chart.enableRotation = \"0\";\r\n chart.chartTopMargin = \"10\";\r\n chart.chartBottomMargin = \"10\";\r\n chart.chartLeftMargin = \"40\";\r\n chart.chartRightMargin = \"40\";\r\n chart.toolTipBgColor = \"#FFFFFF\";\r\n chart.showToolTipShadow = \"1\";\r\n chart.plotHoverEffect = \"0\";\r\n chart.scrollHeight = \"6\";\r\n chart.scrollWidth = \"6\";\r\n chart.plotColorinTooltip = \"0\";\r\n chart.formatNumberScale= \"0\"\r\n return chart;\r\n}\r\n\r\nfunction setPieDonutLegends(chart: ChartInfo, widget: ReactWidgetPM): void {\r\n chart.showLabels = widget.LabelsPosition == 'InLegend' ? '0' : '1';\r\n chart.showLegend = widget.ShowLegend ? '1' : '0';\r\n setOnChartLegend(chart, widget);\r\n setChartInLegend(chart, widget);\r\n}\r\n\r\nfunction getWidgetLegendPosition(widget: ReactWidgetPM) {\r\n if(widget.LegendPosition) return widget.LegendPosition;\r\n\r\n return widget.TypeCode == 'pie' || widget.TypeCode == 'donut' ? \"right\" : \"bottom\"\r\n}\r\n\r\nfunction isColumnOrBarChart(widget: ReactWidgetPM) {\r\n if(!widget) return false;\r\n\r\n return widget.TypeCode == 'column' || widget.TypeCode == 'bar';\r\n}\r\n\r\nfunction isPieOrDonutChart(widget: ReactWidgetPM) {\r\n if(!widget) return false;\r\n \r\n return widget.TypeCode == 'pie' || widget.TypeCode == 'donut';\r\n}\r\n\r\nfunction setOnChartLegend(chart: ChartInfo, widget: ReactWidgetPM) {\r\n if (widget.LabelsPosition != 'InLegend') return;\r\n chart.legendPosition = getWidgetLegendPosition(widget);\r\n chart.legendScrollBgColor = \"#ffffff\";\r\n chart.legendIconScale = 0.75;\r\n chart.scrollShowButtons = \"0\";\r\n chart.scrollShowButtons = \"0\";\r\n chart.legendCaptionAlignment = \"right\";\r\n chart.alignLegendWithCanvas = \"1\";\r\n chart.showPercentValues = widget.ShowValueAsNumber ? \"0\" : \"1\";\r\n chart.chartRightMargin = \"20\";\r\n}\r\n\r\nfunction setChartInLegend(chart: ChartInfo, widget: ReactWidgetPM) {\r\n if (widget.LabelsPosition == 'InLegend') return;\r\n chart.pieRadius = \"70%\";\r\n chart.showPercentValues = widget.ShowValueAsNumber ? \"0\" : \"1\";\r\n}\r\n\r\nfunction setDualyAxis(chartInfo: ChartInfo, widget: ReactWidgetPM, seriesMeasures: SeriesMeasure[]) {\r\n chartInfo.showSecondaryLimits = \"0\";\r\n chartInfo.showDivLineSecondaryValue = \"0\";\r\n \r\n if (!widget) return;\r\n if (!widget.WidgetMeasures) return;\r\n if (widget.WidgetMeasures.length < 2) return;\r\n if (!widget.WidgetMeasures[1].PlotonSecondAxis) return;\r\n\r\n chartInfo.showSecondaryLimits = \"1\";\r\n chartInfo.showDivLineSecondaryValue = \"1\";\r\n chartInfo.pYAxisNameBorderPadding = 0;\r\n chartInfo.sYAxisNameBorderPadding = 0;\r\n chartInfo.sNumberSuffix = isSecondMeasureTypePercentage(widget) ? \"%\" : null;\r\n\r\n if(isNullOrUndefined(seriesMeasures)){\r\n chartInfo.pYAxisName = \"\";\r\n chartInfo.sYAxisname = \"\";\r\n return;\r\n }\r\n\r\n var textLength = Math.max(seriesMeasures[0].Name.length, seriesMeasures[1].Name.length);\r\n chartInfo.pYAxisName = getTitle(seriesMeasures[0]?.Name , textLength);\r\n chartInfo.sYAxisname = getTitle(seriesMeasures[1]?.Name, textLength);\r\n}\r\n\r\nfunction getTitle(text: string, maxLenght: number): string {\r\n var textLenght = text.length;\r\n if (textLenght >= maxLenght) return text.replace(/\\s+/g, ' ');\r\n\r\n var neededSpaces = Math.ceil((maxLenght - textLenght) / 2);\r\n var space = ' '\r\n text = space.repeat(neededSpaces) + text + space.repeat(neededSpaces);\r\n return text.replace(/\\s+/g, ' ');\r\n}\r\n\r\n","import { ChartObject } from \"fusioncharts\";\r\nimport { ReactWidgetPM } from \"../../../../types/widget\";\r\nimport { ChartInfo } from \"./FusionChartObjectHelper\";\r\n\r\nexport class FusionChartHelper {\r\n private chart: ChartObject;\r\n private widget: ReactWidgetPM;\r\n private pieRadius: number;\r\n private legendWidth: string;\r\n\r\n constructor(widget: ReactWidgetPM, chart: ChartObject) {\r\n this.chart = chart;\r\n this.widget = widget;\r\n }\r\n\r\n public getPieRadius(): number {\r\n return this.pieRadius;\r\n }\r\n\r\n public getLegendWidth(): string {\r\n return this.legendWidth;\r\n }\r\n\r\n public trimChartLabels(chartWidth: number, chartHeight: number) {\r\n if (!this.widget || (this.widget.TypeCode != \"pie\" && this.widget.TypeCode != \"donut\")) return;\r\n if (!this.chart) return;\r\n\r\n var dataSource = this.chart?.dataSource;\r\n if (!dataSource) return;\r\n\r\n var chartInfo = (dataSource as any).chart as ChartInfo;\r\n\r\n if (this.widget.LabelsPosition == 'InLegend') this.handleLegendWidth(chartWidth, chartHeight, chartInfo);\r\n else this.handlePieRadius(chartHeight, chartInfo);\r\n }\r\n\r\n handlePieRadius(chartHeight: number, chartInfo: ChartInfo) {\r\n let chartMinumunHeight = 236;\r\n var startPercantage = 70;\r\n let stepHeight = 60;\r\n\r\n var step = Math.floor((chartHeight - chartMinumunHeight) / stepHeight);\r\n if (step < 0) step = 0;\r\n\r\n\r\n var pieRadius = startPercantage - (step * 10);\r\n if (pieRadius < 60) pieRadius = 60;\r\n\r\n if (window.innerWidth > 1700) {\r\n this.pieRadius = pieRadius;\r\n chartInfo.pieRadius = pieRadius + \"%\";\r\n return;\r\n }\r\n\r\n let reducedValue = Math.floor((1700 - window.innerWidth) / 100) + 1;\r\n if (reducedValue > 5) reducedValue = 5;\r\n pieRadius = pieRadius - (reducedValue * 5)\r\n this.pieRadius = pieRadius;\r\n chartInfo.pieRadius = pieRadius + \"%\";\r\n }\r\n\r\n handleLegendWidth(chartWidth: number, chartHeight: number, chartInfo: ChartInfo) {\r\n if (chartWidth < 730) chartInfo.legendWidth = \"200\";\r\n if (chartWidth >= 730) chartInfo.legendWidth = \"400\";\r\n if (chartWidth >= 1000) chartInfo.legendWidth = \"500\";\r\n this.legendWidth = chartInfo.legendWidth;\r\n }\r\n\r\n}\r\n","export const mainYellowColor = \"#F6CF33\"\r\nexport const mainRedColor = \"#EE5F77\"\r\nexport const mainGreenColor = \"#4AC76F\"\r\nexport const mainTurquoiseColor = \"#32C7C7\"\r\nexport const mainBlueColor = \"#369CFB\"\r\nexport const mainPurpleColor = \"#935BE0\"\r\nexport const mainOrangeColor = \"#FAAD14\"\r\n\r\nexport const lightYellowColor = \"#FBE799\"\r\nexport const lightRedColor = \"#F7AFBB\"\r\nexport const lightGreenColor = \"#A4E3B7\"\r\nexport const lightTurquoiseColor = \"#99E3E3\"\r\nexport const lightBlueColor = \"#9BCDFD\"\r\nexport const lightPurpleColor = \"#C9ADF0\"\r\nexport const lightOrangeColor = \"#FDD689\"\r\n\r\nexport const grey1Color = \"#F6F6F6\"\r\nexport const grey2Color = \"#F0F0F0\"\r\nexport const grey3Color = \"#D9D9D9\"\r\nexport const grey4Color = \"#A4A4A4\"\r\n\r\nexport const plotColorsDictionary = {\r\n plotColor0 : \"#369CFB\",\r\n plotColor1 : \"#FCAF16\",\r\n plotColor2 : \"#EE5F77\",\r\n plotColor3 : \"#4AC76F\",\r\n plotColor4 : \"#935BE0\",\r\n plotColor5 : \"#FAD337\",\r\n plotColor6 : \"#32C7C7\",\r\n plotColor7 : \"#EB67D0\",\r\n plotColor8 : \"#3C9957\",\r\n plotColor9 : \"#FF7D4B\",\r\n plotColor10 : \"#78A6FF\",\r\n plotColor11 : \"#35838F\",\r\n plotColor12 : \"#BAA9F3\",\r\n plotColor13 : \"#C1DA72\",\r\n plotColor14 : \"#F0AEAD\",\r\n plotColor15 : \"#246EAB\",\r\n}","import { lightBlueColor, lightGreenColor, lightOrangeColor, lightPurpleColor, lightRedColor, lightTurquoiseColor, lightYellowColor, mainBlueColor, mainGreenColor, mainOrangeColor, mainPurpleColor, mainRedColor, mainTurquoiseColor, mainYellowColor, plotColorsDictionary } from \"./FusionColors\";\r\n\r\nexport interface ChartInfo {\r\n theme: string;\r\n scrollPosition: string;\r\n scrollHeight: string;\r\n scrollWidth: string;\r\n scrollPadding: string;\r\n flatScrollBars: string;\r\n enableSlicing: string;\r\n chartLeftMargin: string;\r\n chartTopMargin: string;\r\n chartRightMargin: string;\r\n chartBottomMargin: string;\r\n baseFont: string;\r\n baseFontSize: string;\r\n showPercentValues: string;\r\n showValues: string;\r\n showLegend: string;\r\n lineColor: string;\r\n divLineDashed: string;\r\n divLineDashLen: string;\r\n divLineDashGap: string;\r\n divLineColor: string;\r\n divLineThickness: string;\r\n divLineAlpha: string;\r\n enableRotation: string;\r\n legendItemFont: string;\r\n legendItemFontSize: string;\r\n legendCaptionFont: string;\r\n legendCaptionFontSize: string;\r\n labelFont: string;\r\n labelFontSize: string;\r\n toolTipBorderColor: string;\r\n toolTipBgAlpha: string;\r\n showToolTipShadow: string;\r\n toolTipBgColor: string;\r\n plottooltext: string;\r\n anchorradius: string;\r\n canvasBottomPadding: string;\r\n canvasTopPadding: string;\r\n labelDisplay: string;\r\n slantLabel: string;\r\n manageLabelOverflow: string;\r\n useEllipsesWhenOverflow: string;\r\n enableSmartLabels: string;\r\n pieRadius: string;\r\n doughnutRadius: string;\r\n baseFontColor: string;\r\n legendCaptionFontColor: string;\r\n labelFontColor: string;\r\n plotColorinTooltip: string;\r\n showLabels: string;\r\n legendPosition: string;\r\n legendScrollBgColor: string;\r\n legendIconScale: number;\r\n scrollShowButtons: string;\r\n legendCaptionAlignment: string;\r\n legendWidth: string;\r\n alignLegendWithCanvas: string;\r\n centerLabelBold: string;\r\n showSecondaryLimits: string;\r\n showDivLineSecondaryValue: string;\r\n pYAxisName: string;\r\n sYAxisname: string;\r\n sYAxisNameFont: string;\r\n sYAxisNameFontColor: string;\r\n sYAxisNameFontSize: string;\r\n pYAxisNameFont: string;\r\n pYAxisNameFontColor: string;\r\n pYAxisNameFontSize: string;\r\n sYAxisNameBorderPadding: number;\r\n pYAxisNameBorderPadding: number;\r\n xAxisNameFont: string;\r\n xAxisName: string;\r\n xAxisNameFontSize: string;\r\n xAxisNameFontColor: string;\r\n yAxisNameFont: string;\r\n yAxisNameFontSize: string;\r\n yAxisNameFontColor: string;\r\n yAxisName: string;\r\n adjustDiv: string;\r\n placeValuesInside: string;\r\n valuePosition: string;\r\n minPlotHeightForValue: string;\r\n minAngleForValue: string;\r\n drawCrossLine: string;\r\n palettecolors: string;\r\n plotHoverEffect: string;\r\n numberSuffix: string | null;\r\n sNumberSuffix: string | null;\r\n decimalSeparator: string | null;\r\n thousandSeparator: string | null;\r\n formatNumberScale: string | null;\r\n manageResize: string | null;\r\n valueBelowPivot: string | null;\r\n showValue: string | null;\r\n}\r\n\r\n\r\nexport function getSeriesPositionColor(position: number): string | null {\r\n switch (position) {\r\n case 1: return mainBlueColor;\r\n case 2: return mainGreenColor;\r\n case 3: return mainYellowColor;\r\n case 4: return mainTurquoiseColor;\r\n case 5: return mainPurpleColor;\r\n case 6: return mainOrangeColor;\r\n case 7: return mainRedColor;\r\n default: return null;\r\n }\r\n}\r\n\r\nexport function getSeriesHoverPositionColor(position: number): string | null {\r\n switch (position) {\r\n case 1: return lightBlueColor;\r\n case 2: return lightGreenColor;\r\n case 3: return lightYellowColor;\r\n case 4: return lightTurquoiseColor;\r\n case 5: return lightPurpleColor;\r\n case 6: return lightOrangeColor;\r\n case 7: return lightRedColor;\r\n default: return null;\r\n }\r\n}\r\n\r\nexport const getPlotColorByIndexOrder = (index: number) => {\r\n let _index = index;\r\n\r\n if(_index >= 16) {\r\n //This conversion make sure that we always in the fusion colors range [0 - 15];\r\n // fusuin uses round-robin way for color selection.\r\n _index = _index % 16;\r\n }\r\n\r\n switch (_index) {\r\n case 0: return plotColorsDictionary.plotColor0;\r\n case 1: return plotColorsDictionary.plotColor1;\r\n case 2: return plotColorsDictionary.plotColor2;\r\n case 3: return plotColorsDictionary.plotColor3;\r\n case 4: return plotColorsDictionary.plotColor4;\r\n case 5: return plotColorsDictionary.plotColor5;\r\n case 6: return plotColorsDictionary.plotColor6;\r\n case 7: return plotColorsDictionary.plotColor7;\r\n case 8: return plotColorsDictionary.plotColor8;\r\n case 9: return plotColorsDictionary.plotColor9;\r\n case 10: return plotColorsDictionary.plotColor10;\r\n case 11: return plotColorsDictionary.plotColor11;\r\n case 12: return plotColorsDictionary.plotColor12;\r\n case 13: return plotColorsDictionary.plotColor13;\r\n case 14: return plotColorsDictionary.plotColor14;\r\n case 15: return plotColorsDictionary.plotColor15;\r\n default: return \"#0566c2\";\r\n }\r\n}\r\n\r\n","import React, { forwardRef, useImperativeHandle, useRef, useState } from \"react\";\r\nimport ReactFC from 'react-fusioncharts';\r\nimport { DashboardDataBinding } from \"../../../../types/DashboardDataBinding\";\r\nimport { DataPointSelection } from \"../../../../types/SeriesMeasure\";\r\nimport { ReactWidgetPM } from \"../../../../types/widget\";\r\nimport FusionCharts, { ChartObject } from 'fusioncharts';\r\nimport { FusionCharts as fusionCharts } from 'fusioncharts';\r\nimport Charts from 'fusioncharts/fusioncharts.charts';\r\nimport FusionTheme from 'fusioncharts/themes/fusioncharts.theme.fusion';\r\nimport { useEffect } from \"react\";\r\nimport { DashboardAnalyticsService } from \"../../../../services/DashboardAnalyticsService\";\r\nimport { ProgressSpinner } from \"primereact/progressspinner\";\r\nimport { BuildFusionChartObject } from \"./FusionChartObjectBuilder\";\r\nimport useResizeObserver from \"use-resize-observer\";\r\nimport { FusionChartHelper } from \"./FusionChartHelper\";\r\nimport { Session } from \"../../../../services/session\";\r\nimport { ReactComponent as RedWarningIcon } from \"../../../../assets/images/red-warning.svg\"\r\nimport { v4 as uuidv4 } from 'uuid';\r\nimport { getPlotColorByIndexOrder } from \"./FusionChartObjectHelper\";\r\nimport { isNullOrUndefinedOrEmpty } from \"../../../../Utils/General\";\r\n\r\nReactFC.fcRoot(FusionCharts, Charts, FusionTheme);\r\n\r\nFusionCharts.options['license']({\r\n key: 'prD4C-8eiA7A3A3C7E6G4B4A3J4C7B2D3D2nyqE1C3fd1npaE4D4tlA-21D7E4F4F1F1E1F4F1A10A8C2C5F5E2F2D1hwqD1B5D1aG4A19A32twbC6D3G4lhJ-7A9C11A5B-13ddA2I3A1B9B3D7A2B4G2H3H1F-7smC8B2XB4cetB8A7A5mxD3SG4F2tvgB2A3B2E4C3I3C7B3A4A3A2D3D2G4J-7==',\r\n creditLabel: false,\r\n});\r\n\r\nexport type FusionChartProps = {\r\n widget: ReactWidgetPM | undefined,\r\n widgetRef: ReactWidgetPM | undefined,\r\n dataBinding: DashboardDataBinding;\r\n onSelectDataPoint: (dataPointSelection: DataPointSelection) => void;\r\n};\r\nconst FusionChart = forwardRef((props: FusionChartProps, comRef) => {\r\n const [dataLoaded, setDataLoaded] = useState<boolean>(false);\r\n const [error, setError] = useState<string>();\r\n const [fusionKey, setFusionKey] = useState(uuidv4());\r\n const chartData = useRef<any>(null);\r\n const [resizeTimer, setResizeTimer] = useState<any | null>(null);\r\n const axiosController = useRef<AbortController | null>(new AbortController());\r\n\r\n \r\n const widget = useRef<ReactWidgetPM>();\r\n const [args, setArgs] = useState<ChartObject>({});\r\n const [fChart, setFchart] = useState<fusionCharts>();\r\n const [chartContainerId, setChartContainerId] = useState<any>(uuidv4());\r\n //(Math.random() + 1).toString(36).substring(7);\r\n const progressRef = useRef<any>(null);\r\n const fusionRef = useRef<any>(null);\r\n const fusionChartHelper = useRef<FusionChartHelper>();\r\n const isDummyChangesActive = useRef(false);\r\n\r\n useEffect(() => {\r\n axiosController.current = new AbortController();\r\n widget.current = props.widget;\r\n RefreshData();\r\n\r\n props.dataBinding?.widgetUpdated.subscribe(updatedWidget => {\r\n if (updatedWidget?.key != widget.current?.key) return;\r\n widget.current = {...updatedWidget};\r\n if(chartData && chartData.current){\r\n let _data = JSON.parse(JSON.stringify(chartData.current));\r\n isDummyChangesActive.current = true;\r\n handleData(_data, true); \r\n }\r\n });\r\n\r\n window.addEventListener(\"resize\", handleResize);\r\n return () => {\r\n window.removeEventListener(\"resize\", handleResize);\r\n setDataLoaded(false);\r\n if(axiosController && axiosController?.current?.abort){\r\n axiosController?.current?.abort();\r\n }\r\n };\r\n }, []);\r\n\r\n\r\n const handleResize = () => {\r\n clearTimeout(resizeTimer);\r\n setResizeTimer(\r\n setTimeout(() => {\r\n HandleSizeChange();\r\n }, 200)\r\n );\r\n }\r\n\r\n useImperativeHandle(comRef, () => ({\r\n onResizeFinish() {\r\n HandleSizeChange();\r\n }\r\n }));\r\n\r\n const HandleSizeChange = () => {\r\n if (!widget || (widget.current?.TypeCode != \"pie\" && widget.current?.TypeCode != \"donut\")) return;\r\n setTimeout(()=> {\r\n var oldPieRadius = fusionChartHelper?.current?.getPieRadius();\r\n var oldLegendWidth = fusionChartHelper?.current?.getLegendWidth();\r\n\r\n fusionChartHelper?.current?.trimChartLabels(fusionRef?.current?.offsetWidth, fusionRef?.current?.offsetHeight)!;\r\n \r\n if (widget.current?.LabelsPosition != 'InLegend' && oldPieRadius == fusionChartHelper?.current?.getPieRadius()) return;\r\n if (widget.current?.LabelsPosition == 'InLegend' && oldLegendWidth == fusionChartHelper?.current?.getLegendWidth()) return;\r\n\r\n setDataLoaded(false);\r\n setTimeout(()=> {\r\n setDataLoaded(true);\r\n }, 100);\r\n }, 100);\r\n }\r\n\r\n const RefreshData = () => {\r\n if (Session.Tenant == 0) {\r\n handleData(null);\r\n return;\r\n }\r\n\r\n var dashboardAnalyticsService = new DashboardAnalyticsService();\r\n var postWidget: any = { ...widget.current };\r\n postWidget.onChange = undefined;\r\n\r\n let signal :any= undefined;\r\n if(axiosController) {\r\n axiosController?.current?.abort();\r\n let updatedAxiosController = new AbortController();\r\n axiosController.current= updatedAxiosController\r\n signal = updatedAxiosController?.signal;\r\n }\r\n\r\n dashboardAnalyticsService.getData(postWidget as ReactWidgetPM, signal).then(result => {\r\n handleData(result?.data);\r\n chartData.current = result?.data;\r\n setDataLoaded(true);\r\n }, error => {\r\n console.log('error', error);\r\n if (error?.response?.data?.ErrorMessage) setError(error?.response?.data?.ErrorMessage);\r\n else setError(error.message);\r\n setDataLoaded(true);\r\n })\r\n }\r\n\r\n const handleData = (data: any, isDummyChange: boolean = false): void => {\r\n let chart = BuildFusionChartObject(data, widget.current!);\r\n fusionChartHelper.current = new FusionChartHelper(widget.current!, chart);\r\n fusionChartHelper?.current.trimChartLabels(progressRef?.current?.offsetWidth, progressRef?.current?.offsetHeight)!;\r\n setArgs(chart);\r\n \r\n if(!isDummyChange){\r\n setDataLoaded(true);\r\n }else{\r\n setTimeout(() => {\r\n isDummyChangesActive.current = false;\r\n }, 100);\r\n }\r\n }\r\n\r\n const dataplotClick = (eventObj: any, dataObj: any): void => {\r\n props.onSelectDataPoint({\r\n GroupById: dataObj.id.groupbyid,\r\n MeasureFieldId: dataObj.id.measurefieldid,\r\n MeasureCode: dataObj.id.measurecode,\r\n Formula: dataObj.id.formula,\r\n Widget: widget.current,\r\n GroupByIdSec: dataObj.id.groupbyidsec\r\n });\r\n };\r\n\r\n const { ref } = useResizeObserver<HTMLDivElement>({\r\n onResize: ({ width, height }) => {\r\n fChart?.resizeTo(width as number, height as number);\r\n },\r\n });\r\n\r\n const renderComplete = (chart: any): void => {\r\n setFchart(chart);\r\n }\r\n\r\n const handlePieDonutChartTooltip = (chartDataSource: any) => {\r\n if(chartDataSource && chartDataSource.data && chartDataSource.data.length) {\r\n chartDataSource.data.forEach((item: any, index: number) => {\r\n let color = getPlotColorByIndexOrder(index)\r\n item.tooltext = item.tooltext.replaceAll(\"transparent\", color);\r\n })\r\n\r\n setArgs({...args, dataSource: chartDataSource});\r\n }\r\n }\r\n\r\n const handleOtherChartsTooltip = (chartDataSource: any) => {\r\n if(chartDataSource && chartDataSource.dataset && chartDataSource.dataset.length) {\r\n chartDataSource.dataset.forEach((el: any, index: number) => {\r\n el.data.forEach((item: any) => {\r\n let color = getPlotColorByIndexOrder(index)\r\n item.tooltext = item.tooltext.replaceAll(\"transparent\", color);\r\n })\r\n })\r\n\r\n setArgs({...args, dataSource: chartDataSource});\r\n }\r\n }\r\n\r\n const loaded = (event: any) => {\r\n if(isDummyChangesActive && isDummyChangesActive.current) return;\r\n\r\n let chartDataSource = event.sender.args && event.sender.args.dataSource ? event.sender.args.dataSource : null;\r\n \r\n let isPieOrDonutChart = widget.current?.TypeCode == 'pie' || widget.current?.TypeCode == 'donut';\r\n \r\n if(isPieOrDonutChart){\r\n handlePieDonutChartTooltip(chartDataSource);\r\n }else {\r\n handleOtherChartsTooltip(chartDataSource);\r\n }\r\n }\r\n\r\n return (\r\n !dataLoaded ?\r\n <div ref={progressRef} className={'dl-full-hight dl-flex-content-center spinner-custome'}>\r\n <ProgressSpinner style={{ width: '40px', height: '40px' }} strokeWidth=\"4\" animationDuration=\"2s\" />\r\n </div>\r\n :\r\n !error ?\r\n <div className={'db-fc-parent-container'} ref={fusionRef}>\r\n <div className={'db-fc-container'} key={fusionKey} ref={ref} id={chartContainerId}>\r\n <ReactFC\r\n {...args}\r\n fcEvent-dataplotClick={dataplotClick}\r\n fcEvent-loaded={loaded}\r\n onRender={renderComplete}\r\n />\r\n </div>\r\n </div>\r\n : <div className=\"dl-flex-content-center dl-full-hight\" style={{ width: '100%' }}>\r\n <div className=\"dl-tooltip\">\r\n <RedWarningIcon className=\"red-warning-icon\" />\r\n <span className=\"dl-tooltiptext\">{error}</span>\r\n </div>\r\n </div>\r\n )\r\n});\r\nexport default FusionChart;\r\n\r\n","import React, { forwardRef, useImperativeHandle, useRef, useState } from \"react\";\r\nimport ReactFC from 'react-fusioncharts';\r\nimport { DashboardDataBinding } from \"../../../../types/DashboardDataBinding\";\r\nimport { DataPointSelection } from \"../../../../types/SeriesMeasure\";\r\nimport { ReactWidgetPM } from \"../../../../types/widget\";\r\nimport FusionCharts, { ChartObject } from 'fusioncharts';\r\nimport Charts from 'fusioncharts/fusioncharts.widgets';\r\nimport FusionTheme from 'fusioncharts/themes/fusioncharts.theme.fusion';\r\nimport { useEffect } from \"react\";\r\nimport { DashboardAnalyticsService } from \"../../../../services/DashboardAnalyticsService\";\r\nimport { ProgressSpinner } from \"primereact/progressspinner\";\r\nimport { getGaugeObject } from \"./FusionChartObjectBuilder\";\r\nimport { Session } from \"../../../../services/session\";\r\nimport { ReactComponent as RedWarningIcon } from \"../../../../assets/images/red-warning.svg\"\r\nimport { v4 as uuidv4 } from 'uuid';\r\n\r\nReactFC.fcRoot(FusionCharts, Charts, FusionTheme);\r\n\r\nFusionCharts.options['license']({\r\n key: 'prD4C-8eiA7A3A3C7E6G4B4A3J4C7B2D3D2nyqE1C3fd1npaE4D4tlA-21D7E4F4F1F1E1F4F1A10A8C2C5F5E2F2D1hwqD1B5D1aG4A19A32twbC6D3G4lhJ-7A9C11A5B-13ddA2I3A1B9B3D7A2B4G2H3H1F-7smC8B2XB4cetB8A7A5mxD3SG4F2tvgB2A3B2E4C3I3C7B3A4A3A2D3D2G4J-7==',\r\n creditLabel: false,\r\n});\r\n\r\nexport type FusionChartProps = {\r\n widget: ReactWidgetPM | undefined,\r\n widgetRef: ReactWidgetPM | undefined,\r\n dataBinding: DashboardDataBinding;\r\n onSelectDataPoint: (dataPointSelection: DataPointSelection) => void;\r\n};\r\nconst FusionChart = forwardRef((props: FusionChartProps, comRef) => {\r\n const [dataLoaded, setDataLoaded] = useState<boolean>(false);\r\n const [error, setError] = useState<string>();\r\n const [fusionKey, setFusionKey] = useState(uuidv4());\r\n const chartData = useRef<any>(null);\r\n const [resizeTimer, setResizeTimer] = useState<any | null>(null);\r\n const axiosController = useRef<AbortController | null>(new AbortController());\r\n\r\n \r\n const widget = useRef<ReactWidgetPM>();\r\n const [args, setArgs] = useState<ChartObject>({});\r\n const [chartContainerId, setChartContainerId] = useState<any>(uuidv4());\r\n const progressRef = useRef<any>(null);\r\n const fusionRef = useRef<any>(null);\r\n const isDummyChangesActive = useRef(false);\r\n\r\n useEffect(() => {\r\n axiosController.current = new AbortController();\r\n widget.current = props.widget;\r\n getChartData();\r\n\r\n props.dataBinding?.widgetUpdated.subscribe(updatedWidget => {\r\n if (updatedWidget?.key != widget.current?.key) return;\r\n widget.current = {...updatedWidget};\r\n if(chartData && chartData.current){\r\n let _data = JSON.parse(JSON.stringify(chartData.current));\r\n isDummyChangesActive.current = true;\r\n handleData(_data, true); \r\n }\r\n });\r\n\r\n window.addEventListener(\"resize\", handleResize);\r\n return () => {\r\n window.removeEventListener(\"resize\", handleResize);\r\n setDataLoaded(false);\r\n if(axiosController && axiosController?.current?.abort){\r\n axiosController?.current?.abort();\r\n }\r\n };\r\n }, []);\r\n\r\n\r\n const handleResize = () => {\r\n clearTimeout(resizeTimer);\r\n setResizeTimer(\r\n setTimeout(() => {\r\n setFusionKey(uuidv4());\r\n }, 200)\r\n );\r\n }\r\n\r\n useImperativeHandle(comRef, () => ({\r\n onResizeFinish() {\r\n setFusionKey(uuidv4());\r\n }\r\n }));\r\n\r\n const getChartData = () => {\r\n if (Session.Tenant == 0) {\r\n handleData(null);\r\n return;\r\n }\r\n\r\n var dashboardAnalyticsService = new DashboardAnalyticsService();\r\n var postWidget: any = { ...widget.current };\r\n postWidget.onChange = undefined;\r\n\r\n let signal :any= undefined;\r\n if(axiosController) {\r\n axiosController?.current?.abort();\r\n let updatedAxiosController = new AbortController();\r\n axiosController.current= updatedAxiosController\r\n signal = updatedAxiosController?.signal;\r\n }\r\n\r\n dashboardAnalyticsService.getGaugeData(postWidget as ReactWidgetPM, signal).then(result => {\r\n handleData(result?.data);\r\n chartData.current = result?.data;\r\n setDataLoaded(true);\r\n }, error => {\r\n console.log('error', error);\r\n if (error?.response?.data?.ErrorMessage) setError(error?.response?.data?.ErrorMessage);\r\n else setError(error.message);\r\n setDataLoaded(true);\r\n })\r\n }\r\n\r\n const handleData = (data: any, isDummyChange: boolean = false): void => {\r\n let chart = getGaugeObject(data, widget.current!)\r\n setArgs(chart);\r\n \r\n if(!isDummyChange){\r\n setDataLoaded(true);\r\n }else{\r\n setTimeout(() => {\r\n isDummyChangesActive.current = false;\r\n }, 100);\r\n\r\n }\r\n }\r\n \r\n return (\r\n !dataLoaded ?\r\n <div ref={progressRef} className={'dl-full-hight dl-flex-content-center spinner-custome'}>\r\n <ProgressSpinner style={{ width: '40px', height: '40px' }} strokeWidth=\"4\" animationDuration=\"2s\" />\r\n </div>\r\n :\r\n !error ?\r\n <div className={'db-fc-parent-container'} ref={fusionRef}>\r\n <div className={'db-fc-container'} key={fusionKey} id={chartContainerId}>\r\n <ReactFC {...args} />\r\n </div>\r\n </div>\r\n : <div className=\"dl-flex-content-center dl-full-hight\" style={{ width: '100%' }}>\r\n <div className=\"dl-tooltip\">\r\n <RedWarningIcon className=\"red-warning-icon\" />\r\n <span className=\"dl-tooltiptext\">{error}</span>\r\n </div>\r\n </div>\r\n )\r\n});\r\nexport default FusionChart;\r\n\r\n","import React, { forwardRef, useEffect, useImperativeHandle, useRef, useState } from \"react\";\r\nimport { DataPointSelection } from \"../../types/SeriesMeasure\";\r\nimport { ReactWidgetPM } from \"../../types/widget\";\r\nimport { DashboardDataBinding } from '../../types/DashboardDataBinding';\r\nimport CustomChart from \"./ChartsComponents/CustomCharts/CustomChart\";\r\nimport FusionChart from \"./ChartsComponents/FusionCharts/FusionChart\";\r\nimport { isNullOrUndefined } from \"../../Utils/General\";\r\nimport { ReactComponent as DeleteWidgetIcon } from \"../../assets/images/delete-icon.svg\"\r\nimport { ReactComponent as EditWidgetIcon } from \"../../assets/images/edit-icon.svg\"\r\nimport { ReactComponent as CopyWidgetIcon } from \"../../assets/images/copy-icon.svg\"\r\nimport Popup from 'reactjs-popup';\r\nimport { v4 as uuidv4 } from 'uuid';\r\nimport GaugeChart from \"./ChartsComponents/FusionCharts/GaugeChart\";\r\n\r\ntype WidgetCardProps = {\r\n editBtnClicked(widget: any): any;\r\n copyBtnClicked?(id: any): any;\r\n deleteBtnClicked(i: any): any;\r\n widget: ReactWidgetPM | undefined;\r\n widgetRef: ReactWidgetPM | undefined;\r\n el: any;\r\n dateFilter: any;\r\n dataBinding: DashboardDataBinding;\r\n isInEditMode: boolean;\r\n isPreviewModeActive?: boolean;\r\n onSelectDataPoint: (dataPointSelection: DataPointSelection) => void;\r\n}\r\n\r\n\r\nconst WidgetCard = forwardRef((props: WidgetCardProps, comRef) => {\r\n const widget = useRef<ReactWidgetPM>();\r\n const [isLoading, setIsLoading] = useState(false);\r\n const fusionChartRef = useRef<any>(null);\r\n const [triggerId, setTriggerId] = useState(uuidv4());\r\n\r\n const editWidget = () => {\r\n props.editBtnClicked(widget.current)\r\n };\r\n\r\n const copyWidget = () => {\r\n if(props && props.copyBtnClicked){\r\n props.copyBtnClicked(widget.current?.key)\r\n }\r\n };\r\n \r\n useEffect(() => {\r\n widget.current = props.widget;\r\n props.dataBinding?.onEditWidget.subscribe(e => {\r\n if (e?.key != widget.current?.key) return;\r\n setIsLoading(true);\r\n widget.current = { ...e };\r\n setIsLoading(false);\r\n })\r\n\r\n props.dataBinding?.widgetUpdated.subscribe(updatedWidget => {\r\n if (updatedWidget?.key != widget.current?.key) return;\r\n widget.current = {...updatedWidget};\r\n setTriggerId(uuidv4());\r\n });\r\n }, []);\r\n\r\n useImperativeHandle(comRef, () => ({\r\n onResizeFinish() {\r\n fusionChartRef?.current?.onResizeFinish();\r\n }\r\n }));\r\n\r\n const getCSSPropertyValue = (widgetData: ReactWidgetPM | undefined, propName: string, propUnit: string = \"\", propDefaultVal: any = \"\") => {\r\n return widgetData && propName && !isNullOrUndefined(widgetData[propName]) ? widgetData[propName] + propUnit : propDefaultVal || \"\";\r\n }\r\n \r\n const GetChartComponent = () => {\r\n if (isLoading || !widget.current?.TypeCode) return \"\";\r\n if (widget.current?.TypeCode == \"kpi\" || widget.current?.TypeCode == \"table\") return <CustomChart isInEditMode={props.isInEditMode} isPreviewModeActive={props.isPreviewModeActive} dataBinding={props.dataBinding} widget={widget.current} widgetRef={props.widgetRef} onSelectDataPoint={props.onSelectDataPoint} />;\r\n if (widget.current?.TypeCode == \"gauge\") return <GaugeChart ref={fusionChartRef} dataBinding={props.dataBinding} widget={widget.current} widgetRef={props.widgetRef} onSelectDataPoint={props.onSelectDataPoint} />\r\n return <FusionChart ref={fusionChartRef} dataBinding={props.dataBinding} widget={widget.current} widgetRef={props.widgetRef} onSelectDataPoint={props.onSelectDataPoint} />\r\n }\r\n\r\n const isTableWidget = ()=> {\r\n return widget && widget.current && widget.current.TypeCode == 'table';\r\n }\r\n\r\n const getwidgetTitlesContainer = ()=> {\r\n return isTableWidget() ? \"widget-table-titles-container\" : \"widget-titles-container\"\r\n }\r\n\r\n const drilldownToTableData = () => {\r\n props.onSelectDataPoint({\r\n GroupById: undefined,\r\n MeasureFieldId: undefined,\r\n MeasureCode: undefined,\r\n Formula: undefined,\r\n Widget: widget.current,\r\n GroupByIdSec: undefined\r\n });\r\n }\r\n\r\n const isThereTitle = () => {\r\n return widget.current?.Title && widget.current?.Title.length! > 0;\r\n }\r\n\r\n const isThereSubtitle = () => {\r\n return widget.current?.Subtitle && widget.current?.Subtitle.length! > 0;\r\n }\r\n\r\n const tableHintMessage = () => {\r\n return <span className={`table-hint-container ${isTitleAligmentRight() ? \"padding-left-12\" : \"\"}`}>\r\n <span>{\"Showing the first 100 rows\"}</span>\r\n {\r\n !props.isInEditMode && !props.isPreviewModeActive &&\r\n <React.Fragment>\r\n <span>{\"(\"}</span>\r\n <span onClick={drilldownToTableData} className=\"show-more-records\">{\" Show More Records \"}</span>\r\n <span>{\")\"}</span>\r\n </React.Fragment>\r\n }\r\n </span>\r\n }\r\n\r\n const isTitleAligmentRight = () => {\r\n return widget && widget.current && widget.current.TitleAlignment && widget.current.TitleAlignment.toLowerCase() == 'right'\r\n }\r\n\r\n return (\r\n <div className=\"dl-panel\" key={props.el.i} >\r\n <header key={triggerId} className=\"widget-header\">\r\n <div className={`header-contents ${isTableWidget() ? \"border-bottom-light-white\" : \"\"}`}>\r\n {\r\n isTitleAligmentRight() && isTableWidget() && tableHintMessage()\r\n }\r\n\r\n <div style={{ cursor: props.isInEditMode ? \"move\" : \"default\",\r\n justifyContent: isTableWidget() ? getCSSPropertyValue(widget?.current, 'TitleAlignment', '', undefined) : undefined,\r\n flexDirection : isTitleAligmentRight() ? \"row-reverse\" : \"row\"\r\n }} \r\n className={getwidgetTitlesContainer()}>\r\n <div\r\n className=\"title-container\"\r\n style={{ justifyContent: getCSSPropertyValue(widget?.current, 'TitleAlignment', '', undefined) }}>\r\n <Popup\r\n className=\"title-tooltip-container\"\r\n trigger={\r\n <div\r\n className=\"title\"\r\n style={{\r\n fontSize: getCSSPropertyValue(widget.current, 'TitleFontSize', 'px'),\r\n color: getCSSPropertyValue(widget.current, 'TitleFontColor', ''),\r\n textAlign: getCSSPropertyValue(widget?.current, 'TitleAlignment', '', undefined),\r\n }}>\r\n {widget.current?.Title}\r\n </div>\r\n }\r\n position={['top center']}\r\n arrowStyle={{color: '#262626'}}\r\n offsetY={-8}\r\n on={['hover', 'focus']}\r\n >\r\n <span className=\"widget-title-tooltip-text\">{widget.current?.Title}</span>\r\n </Popup>\r\n </div>\r\n\r\n {\r\n isTableWidget() && isThereTitle() && isThereSubtitle() && <div className=\"titles-vertical-seeparator\"></div>\r\n }\r\n\r\n <div\r\n className={ isThereSubtitle() ? \"subtitle\" : \"subtitle margin-top-4\" }\r\n style={{\r\n fontSize: getCSSPropertyValue(widget.current, 'SubtitleFontSize', 'px'),\r\n textAlign: getCSSPropertyValue(widget?.current, 'TitleAlignment', '', undefined),\r\n color: getCSSPropertyValue(widget.current, 'SubtitleFontColor', ''),\r\n minWidth: isThereSubtitle() && isTableWidget() ? '5%' : undefined,\r\n }}>\r\n {widget.current?.Subtitle}\r\n </div>\r\n </div>\r\n \r\n {\r\n !isTitleAligmentRight() && isTableWidget() && tableHintMessage()\r\n }\r\n\r\n {props.isInEditMode &&\r\n <div className={ isThereTitle() ? \"widget-options-container\" : \"widget-options-container margin-top-6\"}>\r\n <EditWidgetIcon onClick={() => editWidget()} />\r\n <CopyWidgetIcon onClick={() => copyWidget()} />\r\n <DeleteWidgetIcon onClick={() => props.deleteBtnClicked(props.widget?.key)} />\r\n </div>\r\n }\r\n </div>\r\n \r\n </header>\r\n <div className=\"dl-dashboard-widget\"> \r\n {GetChartComponent()}\r\n </div>\r\n </div>\r\n );\r\n});\r\n\r\nexport default WidgetCard;\r\n","export function deepClone (obj){\r\n return JSON.parse(JSON.stringify(obj))\r\n}","import { WidthProvider, Responsive, Layout, Layouts } from \"react-grid-layout\";\r\nimport React, { useEffect, useRef, useState } from \"react\";\r\nimport { ReactWidgetPM } from \"../../types/widget\";\r\nimport WidgetCard from \"./WidgetCard\";\r\nimport { DataPointSelection } from \"../../types/SeriesMeasure\";\r\nimport { DashboardDataBinding } from \"../../types/DashboardDataBinding\";\r\nimport { deepClone } from '../../services/clone';\r\nimport useResizeObserver from \"use-resize-observer\";\r\n\r\nconst ResponsiveReactGridLayout = WidthProvider(Responsive);\r\n\r\nexport type DeleteWidgetProps = {\r\n id: string, \r\n layouts: any, \r\n widgets: { lg: ReactWidgetPM[] }\r\n}\r\n\r\ntype DashboardDesignerProps = {\r\n editMode: boolean,\r\n Widgetlayouts: { lg: ReactWidgetPM[] },\r\n openEditWidget: (widget: ReactWidgetPM) => void\r\n onLayoutChange: (layouts: Layouts) => void,\r\n onWidgetDelete: (deleteProps: DeleteWidgetProps) => void,\r\n onCopyWidget?:(id: string) => void,\r\n dataBinding: DashboardDataBinding,\r\n onSelectDataPoint: (dataPointSelection: DataPointSelection) => void\r\n};\r\n\r\nconst DashboardDesigner = (props: DashboardDesignerProps) => {\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 [dateFilter, setDateFilter] = useState<Date | Date[] | undefined>(undefined);\r\n const [isInEditMode, setisInEditMode] = useState(false);\r\n const widgetsDictionaryRef = useRef<{ [k: string]: ReactWidgetPM }>({});\r\n const [widgets, setWidgets] = useState<{ lg: ReactWidgetPM[] }>({ lg: [] });\r\n const gridLayoutComponent = useRef<any>(null);\r\n const entered = useRef<boolean>(false);\r\n const widgetCardRef = useRef<any[]>([]);\r\n\r\n\r\n useEffect(() => {\r\n FillLayout(props.Widgetlayouts);\r\n }, [props.Widgetlayouts]);\r\n\r\n useEffect(() => {\r\n if (props?.dataBinding?.onDeleteWidgetConfirmed) {\r\n props.dataBinding.onDeleteWidgetConfirmed.subscribe(deleteProps => {\r\n if (deleteProps){\r\n deletePanel(deleteProps);\r\n }\r\n });\r\n }\r\n }, []);\r\n\r\n const FillLayout = (dashboardLayouts: { lg: ReactWidgetPM[] }) => {\r\n var clone: { lg: ReactWidgetPM[] } = deepClone(dashboardLayouts);\r\n var layout = createLayout(clone);\r\n FillWidgetDictionary(clone);\r\n setWidgets(clone);\r\n setLayouts(layout);\r\n UpdatePlaceholderDimensions(layout);\r\n }\r\n const FillWidgetDictionary = (clone: { lg: ReactWidgetPM[] }) => {\r\n for (const item of clone.lg) {\r\n widgetsDictionaryRef.current[item.key] = item;\r\n }\r\n }\r\n const createLayout = (dashboardLayouts: { lg: ReactWidgetPM[] }): Layouts => {\r\n var layout: any = { lg: [] };\r\n 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\r\n useEffect(() => {\r\n setisInEditMode(props.editMode);\r\n }, [props.editMode]);\r\n\r\n function onLayoutChange(layout: any, changedLayouts: Layouts) {\r\n UpdateWidget(changedLayouts);\r\n setLayouts(changedLayouts);\r\n UpdatePlaceholderDimensions(changedLayouts);\r\n if (entered.current == false) {\r\n entered.current = true;\r\n return;\r\n }\r\n props.onLayoutChange(changedLayouts);\r\n\r\n }\r\n\r\n function onResizeStop(event: any, oldItem: any) {\r\n widgetCardRef?.current?.find(x => x.i == oldItem.i)?.ref.onResizeFinish(widgetsDictionaryRef.current[oldItem.i].key);\r\n }\r\n\r\n function UpdateWidget(changedLayouts: Layouts) {\r\n for (const item of changedLayouts.lg) {\r\n if (widgetsDictionaryRef.current[item.i]) {\r\n widgetsDictionaryRef.current[item.i].Layout = item;\r\n }\r\n }\r\n }\r\n\r\n const confirmDeleteWidget = (id: string) => {\r\n let deleteWidgetProps: DeleteWidgetProps = {\r\n id: id, \r\n layouts: layouts, \r\n widgets: widgets\r\n }\r\n props.onWidgetDelete(deleteWidgetProps)\r\n }\r\n\r\n function deletePanel(deleteProps: DeleteWidgetProps) {\r\n var newLayouts = { lg: deleteProps.layouts.lg.filter(e => e.i != deleteProps.id) }\r\n setLayouts(newLayouts);\r\n var newWidgets = { lg: deleteProps.widgets.lg.filter(e => e.key != deleteProps.id) }\r\n FillWidgetDictionary(newWidgets);\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 function copyWidget(key: string) {\r\n if(props && props.onCopyWidget){\r\n props.onCopyWidget(key);\r\n }\r\n };\r\n \r\n\r\n function UpdatePlaceholderDimensions(layouts: Layouts) {\r\n if (!layouts)\r\n return;\r\n var max = minimumPlaceholderRowsCount;\r\n for (const layout of layouts['lg']) {\r\n if (layout.y + layout.h > max)\r\n max = layout.y + layout.h;\r\n }\r\n\r\n var newPlaceholderRows = max + 2;\r\n newPlaceholderRows = newPlaceholderRows < minimumPlaceholderRowsCount ? minimumPlaceholderRowsCount : newPlaceholderRows;\r\n setplaceholderRowsArray(Array.from({ length: newPlaceholderRows }).fill(null));\r\n }\r\n\r\n const { ref } = useResizeObserver<HTMLDivElement>({\r\n onResize: ({ }) => {\r\n window.dispatchEvent(new Event('resize'));\r\n },\r\n });\r\n\r\n return (<div ref={ref} className=\"dl-full-hight-scroll\">\r\n <div className=\"dl-box\">\r\n <div className=\"dl-row dl-content\">\r\n <div className=\"dl-grid-container\">\r\n <div className=\"dl-grid dl-grid--bordered\">\r\n {isInEditMode ? placeholderRowsArray.map((e, i) =>\r\n array12.map((e, i) => (\r\n <div key={i}\r\n style={{\r\n height: layoutGridProps.rowHeight,\r\n }}\r\n ></div>\r\n ))\r\n\r\n ) : null}\r\n </div>\r\n\r\n\r\n <ResponsiveReactGridLayout ref={gridLayoutComponent}\r\n {...layoutGridProps}\r\n layouts={layouts}\r\n compactType=\"vertical\"\r\n draggableCancel=\".widget-options-container\"\r\n isDraggable={isInEditMode}\r\n isResizable={isInEditMode}\r\n onWidthChange={() => { }}\r\n onResizeStop={onResizeStop}\r\n onLayoutChange={onLayoutChange}>\r\n\r\n {widgets.lg.map((widget, i) =>\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 widgetRef={widgetsDictionaryRef.current[widget.key]}\r\n el={widget}\r\n dataBinding={props.dataBinding}\r\n dateFilter={dateFilter}\r\n editBtnClicked={editWidget}\r\n deleteBtnClicked={confirmDeleteWidget}\r\n onSelectDataPoint={props.onSelectDataPoint}\r\n copyBtnClicked={copyWidget}\r\n ref={el => {\r\n widgetCardRef.current[i] = {\r\n ref: el,\r\n i: widget.Layout?.i\r\n }\r\n }}\r\n />\r\n </div>\r\n )}\r\n </ResponsiveReactGridLayout>\r\n </div>\r\n\r\n </div>\r\n </div>\r\n </div>);\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\nexport default DashboardDesigner;\r\n","import * as React from 'react'\r\nimport DashboardDesigner, { DeleteWidgetProps } from './features/Dashboard/DashboardDesigner'\r\nimport \"./styles.module.css\"\r\nimport { useEffect, useRef, useState } from \"react\";\r\nimport { Session } from './services/session';\r\nimport { ReactWidgetPM } from './types/widget';\r\nimport { DashboardDataBinding } from './types/DashboardDataBinding';\r\nimport { Layout, Layouts } from 'react-grid-layout';\r\nimport { deepClone } from './services/clone';\r\nimport { DataPointSelection } from './types/SeriesMeasure';\r\nimport WidgetCard from './features/Dashboard/WidgetCard';\r\n\r\ntype DashboardProps = {\r\n token: string,\r\n tenant: number,\r\n userId: string,\r\n numberFormatCode?:string | null,\r\n isPreviewMode: boolean,\r\n widgetData: ReactWidgetPM | undefined,\r\n dataBinding: DashboardDataBinding,\r\n onChangeLayouts: (layouts: { lg: ReactWidgetPM[] }) => void,\r\n openEditWidget: (Widget: ReactWidgetPM) => void,\r\n onCopyWidget?:(key: string) => void,\r\n openDeleteWidgetConfirmWindow: (deleteProps: DeleteWidgetProps) => void,\r\n onSelectDataPoint: (dataPointSelection: DataPointSelection) => void;\r\n};\r\nconst Dashboard = (props: DashboardProps) => {\r\n const Widgetlayouts = useRef<{ lg: ReactWidgetPM[] }>({ lg: [] });\r\n const [widgetlayoutsState, setWidgetlayoutsState] = useState<{ lg: ReactWidgetPM[] }>({ lg: [] });\r\n const [isInEditMode, setIsInEditMode] = useState<boolean>(false);\r\n const [isPreviewModeActive, setIsPreviewModeActive] = useState<boolean>(props.isPreviewMode !== undefined ? props.isPreviewMode : false);\r\n const [previewWidget, setPreviewWidget] = useState<ReactWidgetPM | undefined>(props.widgetData);\r\n\r\n useEffect(() => {\r\n Session.CurrentUserId = props.userId;\r\n Session.Tenant = props.tenant;\r\n Session.Token = props?.token;\r\n Session.NumberFormatCode = props?.numberFormatCode;\r\n \r\n setIsPreviewModeActive(props.isPreviewMode);\r\n\r\n props.dataBinding.onGetLayouts.subscribe(layouts => {\r\n Widgetlayouts.current = layouts;\r\n setWidgetlayoutsState(deepClone(Widgetlayouts.current));\r\n });\r\n props.dataBinding.isOnEditLayout.subscribe(e => {\r\n setIsInEditMode(e);\r\n });\r\n props.dataBinding.onAddWidget.subscribe(w => {\r\n Widgetlayouts.current.lg.push(w);\r\n setWidgetlayoutsState(deepClone(Widgetlayouts.current));\r\n });\r\n }, [])\r\n\r\n useEffect(() => {\r\n if (props.widgetData) {\r\n setPreviewWidget(JSON.parse(JSON.stringify(props.widgetData)))\r\n }\r\n }, [props.widgetData])\r\n\r\n const copyWidget = (key: string) => {\r\n if(props && props.onCopyWidget){\r\n props.onCopyWidget(key);\r\n }\r\n }\r\n\r\n const updateWidgets = (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 newWidgetlayouts: ReactWidgetPM[] = [];\r\n Widgetlayouts.current.lg.forEach(widget => {\r\n if (layoutsDic[widget.key]) {\r\n widget.StartPotistion = `${layoutsDic[widget.key].x},${layoutsDic[widget.key].y}`;\r\n widget.EndPosition = `${layoutsDic[widget.key].w},${layoutsDic[widget.key].h}`;\r\n widget.Layout = layoutsDic[widget.key];\r\n newWidgetlayouts.push(widget);\r\n }\r\n\r\n });\r\n Widgetlayouts.current = { lg: newWidgetlayouts };\r\n props.onChangeLayouts(Widgetlayouts.current);\r\n }\r\n\r\n return isPreviewModeActive && previewWidget ? \r\n <div style={{width: \"420px\", height: \"310px\"}}>\r\n <div style={{height: \"100%\"}} key={\"widget-\" + previewWidget?.Layout?.i}>\r\n <WidgetCard\r\n isInEditMode={isInEditMode}\r\n isPreviewModeActive={isPreviewModeActive}\r\n key={previewWidget?.Layout?.i}\r\n widget={previewWidget}\r\n widgetRef={previewWidget}\r\n el={previewWidget}\r\n dataBinding={props.dataBinding}\r\n dateFilter={undefined}\r\n editBtnClicked={() => true}\r\n deleteBtnClicked={() => true}\r\n onSelectDataPoint={() => true}\r\n />\r\n </div>\r\n </div> :\r\n <div className='dl-full-hight'>\r\n <div className='dl-dashboard-body'>\r\n <DashboardDesigner \r\n onSelectDataPoint={props.onSelectDataPoint} \r\n Widgetlayouts={widgetlayoutsState} \r\n dataBinding={props.dataBinding} \r\n editMode={isInEditMode} \r\n onLayoutChange={updateWidgets} \r\n onWidgetDelete={(deleteProps: DeleteWidgetProps) => props.openDeleteWidgetConfirmWindow(deleteProps)}\r\n onCopyWidget={copyWidget}\r\n openEditWidget={(widget: ReactWidgetPM) => props.openEditWidget(widget)} ></DashboardDesigner>\r\n </div>\r\n </div >\r\n \r\n}\r\nexport default Dashboard;\r\n\r\n"],"names":["Session","Tools","GetLogitudeURL","logitude_url","location","href","replace","indexOf","urlArr","split","url","substring","lastIndexOf","length","Map","from","to","keys","Object","k","ApiServices","_apiUrl","getByFilters","api","filters","token","getTokenFromStorage","apiURL","ConcatFiltersToURL","axios","get","headers","post","date","requestSignal","undefined","signal","Token","urlparameters","mykeys","addtionalFiltersValues","i","propName","propValue","ignoreFilter","concat","encodeURIComponent","JSON","stringify","DashboardAnalyticsService","_ApiServices","getData","widget","controller","getKpiData","getTableData","getGaugeData","getObjectTableNameByWidgetEntityId","entityId","DateGroupCodes","Full_Date","Month","Quarter","Year","Month_Year","Quarter_Year","getDateFormat","label","_format","_date","moment","isValid","format","getQuarterYearFormat","includes","result","quarterVal","yearVal","getLabelFormatByDateGroupType","isSecondGrouping","groupFieldDataType","SecondaryDateGroupCode","DateGroupCode","getTodayDates","dateValues","fromDate","toDate","push","getYesterdayDates","subtract","getTomorrowDates","add","getCurrentWeekDates","startOf","endOf","getCurrentMonthDates","getPreviousMonthDates","getCurrentMonthToDateDates","getPreviousMonthToDateDates","getCurrentQuarterDates","getCurrentYearDates","getPreviousYearDates","getCurrentYearToDateDates","getPreviousYearToDateDates","getPreviousQuarterDates","getCurrentQuarterToDateDates","getPreviousQuarterToDateDates","getLast7DaysDates","getLast30DaysDates","getDateRangesByCode","code","isNullOrUndefined","val","isNullOrUndefinedOrEmpty","getGlobalNumberFormatting","numberFormatCode","NumberFormatCode","numberSeparatorSettings","thousandsSeparator","decimalSeparator","KpiChart","props","useState","isLoading","setIsLoading","error","setError","useRef","data","setData","isKPICustomSizeNeeded","setIsKPICustomSizeNeeded","uuidv4","triggerId","setTriggerId","useEffect","current","customChartProps","HandleKPICustomSize","RefreshData","dataBinding","widgetUpdated","subscribe","updatedWidget","key","_isPreviewModeActive","isPreviewModeActive","_isKPICustomResizeNeeded","isKPICustomResizeNeeded","calculateWidgetKPISettingsDates","_updatedWidget","KPIComparisonSettings","kpiSettings","parse","isKPISettingsActivated","PeriodFieldId","PeriodDateFilterDates","PeriodDateFilter","DateTimeValueCode","ComparePeriodDateFilterDates","ComparisonPeriodType","ComparePeriodDateFilter","FieldValue","FieldValue2","Tenant","emptyData","Value","dashboardAnalyticsService","postWidget","onChange","then","console","log","response","ErrorMessage","message","kpiClick","measureFieldId","currentWidgetMeasure","WidgetMeasures","MeasureFieldId","onSelectDataPoint","Widget","MeasureCode","Formula","GroupById","isComparisonIndicatorChecked","_kpiSettings","_kpiSettingsAsObj","ComparisonIndicator","getRatioComponent","CompareWithPrevious","React","className","getArrowComponent","style","fontSize","getKPIFormattingPropertyValue","Ratio","ComparisonValue","marginTop","Increase","getPreviousValueComponent","ComparisonLabel","formatedValue","comparisonValue","title","color","isPercentageMeasureField","ComparisonAbbreviationSymbol","ShowMeasureUnit","Unit","MeasureFieldDataType","getValueData","getValueComponent","AbbreviationSymbol","getPeriodLabelByPeriodCode","replaceAll","getLabelFromKPISettings","getKPIFormattingData","KPIFormatSettings","propertyName","unit","kpiFormattingData","getLabel","Label","getIsKPIHasSmallestHeight","widgetRef","Layout","h","isKPIHasSmallestHeight","ProgressSpinner","width","height","strokeWidth","animationDuration","onClick","Alighnment","RedWarningIcon","TableChart","isTableLoading","setIsTableLoading","setWidget","tableData","setTableData","tableColumns","setTableColumns","sortField","setSortField","sortOrder","setSortOrder","isDefaultSortOptionsUsed","widgetRefData","objectTableName","setObjectTableName","getObjectTableName","EntityId","res","ObjectTableName","PageIndex","PageSize","fillTableData","getBooleanStringValue","value","_value","charAt","toUpperCase","slice","getDateTimeValue","tableRecords","Fields","setDefaultSortOptions","Result","forEach","item","_tableRow","field","FieldCode","valueType","DataTypeCode","tableCols","_widget","_sortFieldCode","getSortFieldCodeBySortFieldId","DefaultSortBy","_sortDirection","DefaultSortDirection","sortFieldId","find","col","Id","getSortFieldIdBySortFieldCode","sortFieldCode","sortTableData","sortedField","isCalculatedColumn","canSort","_sortOrder","ScreenSortBy","ScreenSortDirection","ScreenSortByType","isInEditMode","getTableFormattingData","TableFormatSettings","getTableFormattingPropertyValue","tableFormattingData","getTableConditionalRulesData","TableConditionalRules","isValueEmpty","IsValidRule","rule","operator","RuleOperator","Code","ruleValue1","RuleValue1","ruleValue2","RuleValue2","getCellPropertyByRule","column","cellValue","defaultValue","columnType","IsCalculatedColumn","columnData","el","FieldId","FieldType","FieldRules","firstValidRule","getCellFloatAlignment","isClickableCell","fieldCode","tableCellClicked","TableRowEntityId","cellTemplateBody","backgroundColor","headerTemplate","DisplayName","DataTable","loading","responsiveLayout","map","index","Column","header","body","CustomChart","project","TypeCode","Fragment","buildToolTip","seriesName","padding","getTooltiplabel","getMeasureType","getTooltipValue","getTooltipPercentage","seriesMeasure","Name","getFormattedValue","isNaN","_numberSeparatorSettings","_val","toLocaleString","_formattedValue","formula","months","quarters","getCategoriesBasedDataSource","chartInfo","seriesMeasures","seriesMeasuresIsEmpty","handelNullLabels","chart","categories","buildCategories","dataset","buildDataSet","getStackedDataSource","buildStackedCategories","buildStackedDataSet","getSimpleDataSource","buildDataSource","element","Values","hasValue","values","series","e","id","tooltext","dataSet","datas","seriesname","anchorBgColor","anchorBorderColor","anchorBorderThickness","anchorHoverColor","parentyaxis","PlotasLineChart","PlotonSecondAxis","renderAs","uniqueGroups","x","GroupByIdSec","LabelSec","group","buildStackedGroupData","emptylabels","filter","filledLabels","sortDataSet","sort","s1","s2","aa","bb","secGroup","getUniqueGroupOrderdList","category","defautFontSize","defautFont","defautColor","BuildFusionChartObject","SecondaryGroupById","getBarObject","getStackedBarObject","getLineObject","getClusteredLineObject","getPieObject","getDonutObject","getColumnObject","getClusteredColumnObject","getWidgetRanges","gaugeRanges","GaugeRanges","minValue","maxValue","getGaugeObject","fusionObject","getDefaultChartobject","type","getDefaultChartInfo","manageResize","valueBelowPivot","showValue","dataSource","isGroupByFieldDateTime","GroupByFieldDataType","scrollPosition","scrollPadding","flatScrollBars","showPercentValues","ShowValueAsNumber","showLegend","ShowLegend","setLineDash","chartTopMargin","chartBottomMargin","legendPosition","getWidgetLegendPosition","IsStacked","chartLeftMargin","chartRightMargin","anchorradius","canvasBottomPadding","canvasTopPadding","labelFontSize","labelFont","manageLabelOverflow","useEllipsesWhenOverflow","enableSmartLabels","setPieDonutLegends","isFirstMeasureTypePercentage","isSecondMeasureTypePercentage","setDualyAxis","divLineDashed","divLineDashLen","divLineDashGap","divLineColor","divLineAlpha","divLineThickness","dataFormat","theme","baseFont","baseFontSize","baseFontColor","legendCaptionFontSize","legendCaptionFontColor","legendCaptionFont","labelFontColor","legendItemFont","legendItemFontSize","sYAxisNameFont","sYAxisNameFontSize","sYAxisNameFontColor","pYAxisNameFont","pYAxisNameFontSize","pYAxisNameFontColor","xAxisNameFont","xAxisNameFontSize","xAxisNameFontColor","yAxisNameFont","yAxisNameFontSize","yAxisNameFontColor","drawCrossLine","xAxisName","ShowXAxisTitle","XAxisTitle","yAxisName","ShowYAxisTitle","YAxisTitle","labelDisplay","XAxisLabelsDisplay","slantLabel","XAxisLabelsFontSize","showValues","ShowValue","valuePosition","ValuePosition","isValuePositionInside","toLowerCase","isColumnOrBarChart","placeValuesInside","minPlotHeightForValue","isPieOrDonutChart","minAngleForValue","numberSuffix","thousandSeparator","palettecolors","enableSlicing","enableRotation","toolTipBgColor","showToolTipShadow","plotHoverEffect","scrollHeight","scrollWidth","plotColorinTooltip","formatNumberScale","showLabels","LabelsPosition","setOnChartLegend","setChartInLegend","LegendPosition","legendScrollBgColor","legendIconScale","scrollShowButtons","legendCaptionAlignment","alignLegendWithCanvas","pieRadius","showSecondaryLimits","showDivLineSecondaryValue","pYAxisNameBorderPadding","sYAxisNameBorderPadding","sNumberSuffix","pYAxisName","sYAxisname","textLength","Math","max","getTitle","text","maxLenght","textLenght","neededSpaces","ceil","space","repeat","FusionChartHelper","getPieRadius","getLegendWidth","legendWidth","trimChartLabels","chartWidth","chartHeight","handleLegendWidth","handlePieRadius","chartMinumunHeight","startPercantage","stepHeight","step","floor","window","innerWidth","reducedValue","plotColorsDictionary","plotColor0","plotColor1","plotColor2","plotColor3","plotColor4","plotColor5","plotColor6","plotColor7","plotColor8","plotColor9","plotColor10","plotColor11","plotColor12","plotColor13","plotColor14","plotColor15","getPlotColorByIndexOrder","_index","ReactFC","fcRoot","FusionCharts","Charts","FusionTheme","options","creditLabel","FusionChart","forwardRef","comRef","dataLoaded","setDataLoaded","fusionKey","chartData","resizeTimer","setResizeTimer","axiosController","AbortController","args","setArgs","fChart","setFchart","chartContainerId","progressRef","fusionRef","fusionChartHelper","isDummyChangesActive","_data","handleData","addEventListener","handleResize","removeEventListener","abort","clearTimeout","setTimeout","HandleSizeChange","useImperativeHandle","onResizeFinish","oldPieRadius","oldLegendWidth","offsetWidth","offsetHeight","updatedAxiosController","isDummyChange","dataplotClick","eventObj","dataObj","groupbyid","measurefieldid","measurecode","groupbyidsec","useResizeObserver","onResize","resizeTo","ref","renderComplete","handlePieDonutChartTooltip","chartDataSource","handleOtherChartsTooltip","loaded","event","sender","onRender","setFusionKey","getChartData","WidgetCard","fusionChartRef","editWidget","editBtnClicked","copyWidget","copyBtnClicked","onEditWidget","getCSSPropertyValue","widgetData","propUnit","propDefaultVal","GetChartComponent","GaugeChart","isTableWidget","getwidgetTitlesContainer","drilldownToTableData","isThereTitle","Title","isThereSubtitle","Subtitle","tableHintMessage","isTitleAligmentRight","TitleAlignment","cursor","justifyContent","flexDirection","Popup","trigger","textAlign","position","arrowStyle","offsetY","on","minWidth","EditWidgetIcon","CopyWidgetIcon","DeleteWidgetIcon","deleteBtnClicked","deepClone","obj","ResponsiveReactGridLayout","WidthProvider","Responsive","DashboardDesigner","array12","Array","fill","minimumPlaceholderRowsCount","lg","layouts","setLayouts","placeholderRowsArray","setplaceholderRowsArray","dateFilter","setisInEditMode","widgetsDictionaryRef","widgets","setWidgets","gridLayoutComponent","entered","widgetCardRef","FillLayout","Widgetlayouts","onDeleteWidgetConfirmed","deleteProps","deletePanel","dashboardLayouts","clone","layout","createLayout","FillWidgetDictionary","UpdatePlaceholderDimensions","w","editMode","onLayoutChange","changedLayouts","UpdateWidget","onResizeStop","oldItem","confirmDeleteWidget","deleteWidgetProps","onWidgetDelete","newLayouts","newWidgets","ChangeSetOp","openEditWidget","onCopyWidget","y","newPlaceholderRows","dispatchEvent","Event","layoutGridProps","rowHeight","compactType","draggableCancel","isDraggable","isResizable","onWidthChange","cols","md","sm","xs","xxs","useCSSTransforms","Dashboard","widgetlayoutsState","setWidgetlayoutsState","setIsInEditMode","isPreviewMode","setIsPreviewModeActive","previewWidget","setPreviewWidget","CurrentUserId","userId","tenant","onGetLayouts","isOnEditLayout","onAddWidget","updateWidgets","layoutsDic","sizeType","newWidgetlayouts","StartPotistion","EndPosition","onChangeLayouts","openDeleteWidgetConfirmWindow"],"mappings":"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"}
|