logitude-dashboard-library 3.2.63 → 3.2.64

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.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":["../src/services/session.ts","../src/services/tools.ts","../src/services/ApiServices.ts","../src/services/DashboardAnalyticsService.ts","../src/Utils/DateHelper.tsx","../src/Constant/FieldDataType.ts","../src/Constant/MeasureCode.ts","../src/Utils/General.tsx","../src/services/WidgetLoadLogService.ts","../src/Utils/WidgetLoadLogger.ts","../src/features/Dashboard/ChartsComponents/CustomCharts/KpiChart.tsx","../src/features/Dashboard/ChartsComponents/CustomCharts/TableChart.tsx","../src/features/Dashboard/ChartsComponents/CustomCharts/PivotGrid.tsx","../src/features/Dashboard/ChartsComponents/CustomCharts/PivotAgGridSupport.ts","../src/features/Dashboard/ChartsComponents/CustomCharts/AgPivotGrid.tsx","../src/features/Dashboard/ChartsComponents/CustomCharts/ViewsChart.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 public static isMasterNumberClickable: any;\r\n public static UseAgGridPivot: boolean = false;\r\n public static AgGridLicenseKey: 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 let requestHeaders = { 'Content-Type': 'application/json', 'Token': token };\r\n if (this.isDashboardClickHouseActive()) {\r\n requestHeaders['Dashboard-Clickhouse'] = \"True\";\r\n }\r\n\t\tvar apiURL = `${this._apiUrl}${api}`;\r\n return axios.post<T>(apiURL,date, { headers: requestHeaders, signal: requestSignal});\r\n }\r\n\r\n getTokenFromStorage(){\r\n return Session.Token || '';\r\n }\r\n\r\n isDashboardClickHouseActive(){\r\n return (window as any)?.IsDashboardClickHouseActive === true;\r\n }\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 getTargetAnalyticsData(widget: ReactWidgetPM, signal: any = undefined) {\r\n return this._ApiServices.post<SeriesMeasure[]>(`/api/${this.controller}/PostGetTargetDataAnalytic`,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\r\n getPivotData(widget: ReactWidgetPM) {\r\n return this._ApiServices.post<any>(`/api/${this.controller}/PostGetPivotData`, widget);\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, _fromDate: string | null, _toDate: string | null) => {\r\n let result: any = {\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 case \"Custom_Range\":\r\n result.fromDate = _fromDate;\r\n result.toDate = _toDate;\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 \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}","export class FieldDataType {\r\n\r\n static readonly Decimal: string = \"Decimal\";\r\n static readonly Double: string = \"Double\";\r\n static readonly UnsDecimal: string = \"UnsDecimal\";\r\n static readonly Integer: string = \"Integer\";\r\n static readonly UnsInteger: string = \"UnsInteger\";\r\n static readonly SigDouble: string = \"SigDouble\";\r\n static readonly LookUp: string = \"LookUp\";\r\n static readonly PickList: string = \"PickList\";\r\n static readonly PickList2: string = \"PickList2\";\r\n static readonly Text: string = \"Text\";\r\n static readonly nText: string = \"nText\";\r\n static readonly Boolean: string = \"Boolean\";\r\n static readonly Date: string = \"Date\";\r\n static readonly DateTime: string = \"DateTime\";\r\n static readonly Percentage: string = \"Percentage\";\r\n\r\n\r\n static isNumericType(fieldDataType: string | null | undefined | any): boolean {\r\n if (!fieldDataType || typeof fieldDataType !== \"string\") {\r\n return false;\r\n }\r\n\r\n return [\r\n FieldDataType.Decimal,\r\n FieldDataType.Double,\r\n FieldDataType.UnsDecimal,\r\n FieldDataType.SigDouble,\r\n FieldDataType.Integer,\r\n FieldDataType.UnsInteger,\r\n FieldDataType.Percentage\r\n ].includes(fieldDataType);\r\n }\r\n\r\n static isInteger(fieldDataType: string | null | undefined | any): boolean {\r\n if (!fieldDataType || typeof fieldDataType !== \"string\") {\r\n return false;\r\n }\r\n\r\n return [FieldDataType.Integer, FieldDataType.UnsInteger].includes(fieldDataType);\r\n }\r\n\r\n static isPercentage(fieldDataType: string | null | undefined | any) {\r\n\r\n if (!fieldDataType || typeof fieldDataType !== \"string\") {\r\n return false;\r\n }\r\n\r\n return fieldDataType === FieldDataType.Percentage;\r\n }\r\n\r\n static isLookUpType(fieldDataType: string | null | undefined | any): boolean {\r\n if (!fieldDataType || typeof fieldDataType !== \"string\") {\r\n return false;\r\n }\r\n\r\n return fieldDataType === FieldDataType.LookUp;\r\n }\r\n\r\n static isPickListType(fieldDataType: string | null | undefined | any): boolean {\r\n if (!fieldDataType || typeof fieldDataType !== \"string\") {\r\n return false;\r\n }\r\n\r\n return [FieldDataType.PickList, FieldDataType.PickList2].includes(fieldDataType);\r\n }\r\n\r\n static isTextOrNTextType(fieldDataType: string | null | undefined | any): boolean {\r\n if (!fieldDataType || typeof fieldDataType !== \"string\") {\r\n return false;\r\n }\r\n\r\n return [FieldDataType.Text, FieldDataType.nText].includes(fieldDataType);\r\n }\r\n\r\n static isTextType(fieldDataType: string | null | undefined | any): boolean {\r\n if (!fieldDataType || typeof fieldDataType !== \"string\") {\r\n return false;\r\n }\r\n\r\n return fieldDataType === FieldDataType.Text;\r\n }\r\n\r\n static isNTextType(fieldDataType: string | null | undefined | any): boolean {\r\n if (!fieldDataType || typeof fieldDataType !== \"string\") {\r\n return false;\r\n }\r\n\r\n return fieldDataType === FieldDataType.nText;\r\n }\r\n\r\n static isBooleanType(fieldDataType: string | null | undefined | any): boolean {\r\n if (!fieldDataType || typeof fieldDataType !== \"string\") {\r\n return false;\r\n }\r\n\r\n return fieldDataType === FieldDataType.Boolean;\r\n }\r\n\r\n static isDateOrDateTimeType(fieldDataType: string | null | undefined | any): boolean {\r\n if (!fieldDataType || typeof fieldDataType !== \"string\") {\r\n return false;\r\n }\r\n\r\n return [FieldDataType.Date, FieldDataType.DateTime].includes(fieldDataType);\r\n }\r\n}\r\n","export enum MeasureCode {\r\n Average = \"Avg\",\r\n CalculatedColumn = \"CalculatedColumn\",\r\n Formula = \"Formula\",\r\n Max = \"Max\",\r\n Min = \"Min\",\r\n Sum = \"Sum\",\r\n Target = \"Target\",\r\n Count = \"Count\"\r\n}\r\n","import { FieldDataType } from \"../Constant/FieldDataType\";\r\nimport { MeasureCode } from \"../Constant/MeasureCode\";\r\nimport { Session } from \"../services/session\";\r\nimport { ReactWidgetPM } from \"../types/widget\";\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\nconst isValueInteger = (measureCode : string | null | undefined , measureFieldType : string | null | undefined) =>{\r\n\r\n if(measureCode === MeasureCode.Count || measureFieldType === FieldDataType.Integer){\r\n return true;\r\n }\r\n\r\n return false;\r\n}\r\n\r\nconst getTruncatedValue = (value: number | null | undefined | any, widget : ReactWidgetPM): number | null | undefined => {\r\n\r\n if(value == null || value == undefined || isNaN(value)) return value;\r\n \r\n return truncateDecimals(value,widget.DecimalPlaces || 0);\r\n}\r\n\r\nconst getNumberInSystemLocalFormat = (value: number | null | undefined, decimalDigitsCount: number = -1 , minimumFractionDigits: number = 0, isValueTruncated : boolean = true , applyAbbreviation : boolean = false): string => {\r\n\r\n if(value == null || value == undefined || isNaN(value)) return value + \"\" ;\r\n \r\n const decimalParts = value.toString().split(\".\");\r\n const maxFractionDigits = decimalParts[1] ? decimalParts[1].length : 0;\r\n decimalDigitsCount = decimalDigitsCount == -1 ? maxFractionDigits : decimalDigitsCount;\r\n\r\n let _numberSeparatorSettings = getGlobalNumberFormatting();\r\n\r\n if(isValueTruncated){\r\n\r\n value = truncateDecimals(value,decimalDigitsCount);\r\n }\r\n\r\n let abbreviationSymbol : string | null = null;\r\n\r\n if(applyAbbreviation){\r\n\r\n if(Math.abs(value) >= 1000 && Math.abs(value) < 1000_000){\r\n\r\n value = value / 1000;\r\n abbreviationSymbol = \"K\";\r\n\r\n }else if(Math.abs(value) >= 1000_000){\r\n\r\n value = value / 1000_000;\r\n abbreviationSymbol = \"M\";\r\n }\r\n\r\n }\r\n \r\n let _val = value.toLocaleString('en-US', {\r\n minimumFractionDigits: minimumFractionDigits, \r\n maximumFractionDigits: decimalDigitsCount\r\n });\r\n\r\n if(_val){ \r\n\r\n let _formattedValue = _val.replaceAll(\",\", \"*\");\r\n _formattedValue = _formattedValue.replaceAll(\".\", \"#\");\r\n _formattedValue = _formattedValue.replaceAll(\"*\", _numberSeparatorSettings.thousandsSeparator);\r\n _formattedValue = _formattedValue.replaceAll(\"#\", _numberSeparatorSettings.decimalSeparator);\r\n\r\n return (applyAbbreviation && abbreviationSymbol) ? `${_formattedValue}${abbreviationSymbol}` : _formattedValue;\r\n }\r\n\r\n return value + \"\";\r\n}\r\n\r\nconst truncateDecimals = (value: number , numberOfDecimalParts : number) => {\r\n // Handle non-finite numbers (NaN, Infinity)\r\n if (!Number.isFinite(value)) return value;\r\n \r\n const numStr = value.toString();\r\n\r\n if(numStr.toLocaleLowerCase().includes(\"e\")){\r\n return value;\r\n }\r\n\r\n // Split into integer/decimal parts without floating-point errors\r\n\r\n const [integerPart, decimalPart = ''] = numStr.split('.');\r\n \r\n // Truncate to two decimals and parse\r\n const truncated = decimalPart.slice(0, numberOfDecimalParts);\r\n const resultStr = truncated.length > 0 \r\n ? `${integerPart}.${truncated}` \r\n : integerPart;\r\n \r\n return parseFloat(resultStr);\r\n }\r\n\r\nconst ConvertStringToPascalCaseHelper = (stringValue: string) => {\r\n if(isNullOrUndefinedOrEmpty(stringValue) || typeof stringValue !== 'string') return stringValue || '';\r\n\r\n let splittedWords = stringValue.split(' ').filter(f => f != '');\r\n if(splittedWords.length == 0) return stringValue;\r\n\r\n return stringValue.split(' ').map((t) => {\r\n if(t.length > 0){\r\n return t[0].toUpperCase() + t.slice(1).toLowerCase()\r\n }\r\n\r\n return t;\r\n }).join(' ');\r\n}\r\n\r\nexport {\r\n isNullOrUndefined,\r\n isNullOrUndefinedOrEmpty,\r\n getGlobalNumberFormatting,\r\n getNumberInSystemLocalFormat,\r\n ConvertStringToPascalCaseHelper,\r\n isValueInteger,\r\n getTruncatedValue\r\n}","import { WidgetLoadLog } from \"../types/WidgetLoadLog\";\r\nimport { ApiServices } from \"./ApiServices\";\r\n\r\nexport class WidgetLoadLogService {\r\n _ApiServices: ApiServices;\r\n controller = 'WidgetLoadLogs';\r\n\r\n constructor() {\r\n this._ApiServices = new ApiServices();\r\n }\r\n\r\n create(widgetLoadLog: WidgetLoadLog) {\r\n return this._ApiServices.post<any>(`/api/${this.controller}`, widgetLoadLog, undefined);\r\n }\r\n}","import { WidgetLoadLogService } from \"../services/WidgetLoadLogService\";\r\nimport { ReactWidgetPM } from \"../types/widget\";\r\nimport { WidgetLoadLog } from \"../types/WidgetLoadLog\";\r\nimport { AxiosResponse } from \"axios\";\r\n\r\nexport class WidgetLoadLogger {\r\n\r\n private StartTime: number | null = null;\r\n private Widget: ReactWidgetPM | null = null;\r\n private RequestName: string | null | undefined = null;\r\n\r\n constructor(widget: ReactWidgetPM, isPreviewMode: boolean | null | undefined, requestName: string | null | undefined) {\r\n if (!isPreviewMode) {\r\n this.StartTime = new Date().getTime();\r\n this.Widget = widget;\r\n this.RequestName = requestName;\r\n }\r\n }\r\n\r\n log(loadDataResponse: AxiosResponse<any, any>) {\r\n if (this.canCreateLog(loadDataResponse)) {\r\n let totalExecutionTime = new Date().getTime() - this.StartTime!;\r\n let widgetLoadLogService: WidgetLoadLogService = new WidgetLoadLogService();\r\n let widgetLoadLog: WidgetLoadLog = {\r\n Tenant: this.Widget!.Tenant,\r\n WidgetId: this.Widget!.Id,\r\n DashboardId: this.Widget!.DashboardId,\r\n LoadTime: this.getLoadTime(loadDataResponse),\r\n TotalExecutionTime: totalExecutionTime,\r\n IsClickHouse: this.isClickHouse(loadDataResponse),\r\n RequestName: this.RequestName,\r\n WidgetType: this.Widget!.TypeCode,\r\n IsDrillDown: false\r\n };\r\n widgetLoadLogService.create(widgetLoadLog).then(_response => { }, _error => { });\r\n }\r\n this.StartTime = null;\r\n this.Widget = null;\r\n }\r\n\r\n private canCreateLog(loadDataResponse: AxiosResponse<any, any>) {\r\n return this.StartTime !== null && this.StartTime !== undefined &&\r\n this.Widget !== null && this.Widget !== undefined &&\r\n this.Widget.Id !== null && this.Widget.Id !== undefined && this.Widget.Id !== \"\" &&\r\n this.Widget.DashboardId !== null && this.Widget.DashboardId !== undefined && this.Widget.DashboardId !== \"\" &&\r\n this.Widget.Tenant !== null && this.Widget.Tenant !== undefined &&\r\n loadDataResponse !== null && loadDataResponse !== undefined;\r\n }\r\n\r\n private getLoadTime(loadDataResponse: AxiosResponse<any, any>) {\r\n let loadTimeHeaderKey = \"load-time\";\r\n let loadTimeHeader = loadDataResponse && loadDataResponse.headers && loadDataResponse.headers[loadTimeHeaderKey] ?\r\n loadDataResponse.headers[loadTimeHeaderKey] : \"\";\r\n return this.isNumber(loadTimeHeader) ? Number(loadTimeHeader) : 0;\r\n }\r\n\r\n private isNumber(value: string) {\r\n return value !== null &&\r\n value !== undefined &&\r\n value !== \"\" &&\r\n !isNaN(Number(value.toString()));\r\n }\r\n\r\n private isClickHouse(loadDataResponse: AxiosResponse<any, any>) {\r\n let clickHouseHeaderKey = \"click-house\";\r\n let clickHouseHeader = loadDataResponse && loadDataResponse.headers && loadDataResponse.headers[clickHouseHeaderKey] ?\r\n loadDataResponse.headers[clickHouseHeaderKey] : null;\r\n return clickHouseHeader === \"true\";\r\n }\r\n\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\nimport { WidgetLoadLogger } from \"../../../../Utils/WidgetLoadLogger\";\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, null, null);\r\n let ComparePeriodDateFilterDates = kpiSettings.ComparisonPeriodType == 'Manually' ? \r\n getDateRangesByCode(kpiSettings.ComparePeriodDateFilter.DateTimeValueCode, kpiSettings.ComparePeriodDateFilter.FieldValue, kpiSettings.ComparePeriodDateFilter.FieldValue2) \r\n : getDateRangesByCode(null, null, 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 const widgetLoadLogger = new WidgetLoadLogger(postWidget, props.customChartProps.isPreviewModeActive, \"PostGetKpiData\");\r\n dashboardAnalyticsService.getKpiData(postWidget as ReactWidgetPM).then(result => {\r\n setData(result.data);\r\n handleResponseErrors(result)\r\n setIsLoading(false);\r\n widgetLoadLogger.log(result);\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 const handleResponseErrors = (result: any) => {\r\n if(props.customChartProps.onShowError){\r\n if(result?.data && !isNullOrUndefined(result?.data?.Errors) && result?.data?.Errors.length > 0){\r\n props.customChartProps.onShowError(result?.data?.Errors[0]);\r\n }else {\r\n props.customChartProps.onShowError(null);\r\n }\r\n }\r\n }\r\n \r\n const drillDownToKPIValues = (isDrillDownToMainValues: boolean) => {\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: calculateWidgetKPISettingsDates(),\r\n MeasureCode : currentWidgetMeasure!.MeasureCode,\r\n Formula : currentWidgetMeasure!.Formula,\r\n GroupById: data?.GroupById,\r\n IsKPISecondaryValues: !isDrillDownToMainValues\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 onClick={() => drillDownToKPIValues(false)} 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 onClick={() => drillDownToKPIValues(true)} 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 if (widget.current.IsGlobalFilterKPIComparison) {\r\n return getPeriodLabelByPeriodCode(widget.current.GlobalFilterDateTimeValueCode);\r\n }\r\n\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 onClick={() => drillDownToKPIValues(true)} 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} 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 { getNumberInSystemLocalFormat, isNullOrUndefined, isNullOrUndefinedOrEmpty } from \"../../../../Utils/General\";\r\nimport { DataTable } from 'primereact/datatable';\r\nimport { Column } from 'primereact/column';\r\nimport { v4 as uuidv4 } from 'uuid';\r\nimport { WidgetLoadLogger } from \"../../../../Utils/WidgetLoadLogger\";\r\nimport { FieldDataType } from \"../../../../Constant/FieldDataType\";\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 MeasureUnit: string | null;\r\n DateTimeDisplayMode: string | 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 const [triggerId, setTriggerId] = useState<any>(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 setTriggerId(uuidv4());\r\n });\r\n }, [])\r\n\r\n useEffect(() => {\r\n if(triggerId != null){\r\n ReOrderColumns(widget?.Columns);\r\n }\r\n \r\n }, [triggerId])\r\n\r\n const ReOrderColumns = (updatedWidgetColumns: any) => {\r\n if(updatedWidgetColumns == null || updatedWidgetColumns == undefined || (typeof updatedWidgetColumns == 'string' && updatedWidgetColumns?.length == 0)){\r\n return;\r\n }\r\n\r\n let updatedWidgetColumnsData = JSON.parse(updatedWidgetColumns);\r\n \r\n let _updatedTableColumns : any = [];\r\n updatedWidgetColumnsData.forEach((c: any)=> {\r\n\r\n\r\n let columns : any = tableColumns.filter(f => f.Id == c.Id);\r\n\r\n if(columns && columns.length == 1){\r\n\r\n _updatedTableColumns.push(columns[0])\r\n\r\n }else if(columns && columns.length > 1){\r\n\r\n let isCalculatedColumn = c.ColumnVariableType === \"CalculatedColumn\";\r\n let dataTypeCode = c.ColumnVariableDataType;\r\n let dateDisplayMode = c.DateTimeDisplayMode || \"Date\";\r\n\r\n\r\n let column = columns.find(f => f.IsCalculatedColumn === isCalculatedColumn && f.DataTypeCode === dataTypeCode && f.DateTimeDisplayMode === dateDisplayMode);\r\n\r\n if(column){\r\n\r\n _updatedTableColumns.push(column)\r\n }\r\n }\r\n });\r\n\r\n setTableColumns([..._updatedTableColumns])\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 const widgetLoadLogger = new WidgetLoadLogger(widget, props.customChartProps.isPreviewModeActive, \"PostGetTableData\");\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 widgetLoadLogger.log(res);\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)) return \"\";\r\n\r\n let _value = value + \"\";\r\n return _value.charAt(0).toUpperCase() + _value.slice(1);\r\n }\r\n \r\n const getDateTimeValue = (value: any , datePart : string | null = null) => {\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 if(!datePart){\r\n return `${_date.format(\"DD MMM YYYY\")} ${_date.format(\"HH:mm\")}`;\r\n }\r\n\r\n if(datePart == 'Date'){\r\n return `${_date.format(\"DD MMM YYYY\")}`;\r\n\r\n }else{\r\n return `${_date.format(\"HH:mm\")}`;\r\n }\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) ? \"\" : _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 case \"Contains\":\r\n return !isValueEmpty(value) && !isValueEmpty(ruleValue1) && value.includes(ruleValue1);\r\n case \"NotContains\":\r\n return !isValueEmpty(value) && !isValueEmpty(ruleValue1) && !value.includes(ruleValue1);\r\n default:\r\n return null;\r\n }\r\n }\r\n\r\n\r\n // Strip time from a Date (normalize to midnight)\r\n function stripTime(date: Date | null): Date | null {\r\n if (!date) return null;\r\n return new Date(date.getFullYear(), date.getMonth(), date.getDate());\r\n }\r\n \r\n // Parse ISO-like local date string (e.g., \"2024-05-01T00:00:00\")\r\n function parseLocalDate(dateStr: string): Date | null {\r\n\r\n try{\r\n\r\n if (!dateStr) return null;\r\n const [year, month, day] = dateStr.split('T')[0].split('-').map(Number);\r\n return new Date(year, month - 1, day); // Local time\r\n\r\n }catch(error){\r\n\r\n return null;\r\n\r\n } \r\n }\r\n \r\n // Parse custom \"YYYYMMDD\" format\r\n function parseCustomDateLocalDate(dateStr: string): Date | null {\r\n try{\r\n\r\n if (!dateStr || dateStr.length < 8) return null;\r\n const year = Number(dateStr.substring(0, 4));\r\n const month = Number(dateStr.substring(4, 6));\r\n const day = Number(dateStr.substring(6, 8));\r\n return new Date(year, month - 1, day); // Local time\r\n\r\n }catch(error){\r\n\r\n return null;\r\n\r\n } \r\n }\r\n \r\n function isDateValidRule(rule: any, value: string): boolean | null {\r\n const operator = rule?.RuleOperator?.Code;\r\n if (!operator) return null;\r\n \r\n const ruleValue1 = stripTime(parseCustomDateLocalDate(rule.RuleValue1));\r\n const ruleValue2 = stripTime(parseCustomDateLocalDate(rule.RuleValue2));\r\n const actualValue = stripTime(parseLocalDate(value));\r\n \r\n switch (operator) {\r\n case \"Equal\":\r\n case \"Between\":\r\n return (\r\n !isValueEmpty(ruleValue1) &&\r\n !isValueEmpty(ruleValue2) &&\r\n !isValueEmpty(actualValue) &&\r\n ruleValue1! <= actualValue! &&\r\n actualValue! <= ruleValue2!\r\n );\r\n case \"NotEqual\":\r\n case \"NotBetween\":\r\n return (\r\n !isValueEmpty(ruleValue1) &&\r\n !isValueEmpty(ruleValue2) &&\r\n !isValueEmpty(actualValue) &&\r\n (ruleValue1! > actualValue! || actualValue! > ruleValue2!)\r\n );\r\n case \"GreaterThan\":\r\n return (\r\n !isValueEmpty(ruleValue2) &&\r\n !isValueEmpty(actualValue) &&\r\n actualValue! > ruleValue2!\r\n );\r\n case \"GreaterThanOrEqual\":\r\n return (\r\n !isValueEmpty(ruleValue2) &&\r\n !isValueEmpty(actualValue) &&\r\n actualValue! >= ruleValue2!\r\n );\r\n case \"LessThan\":\r\n return (\r\n !isValueEmpty(ruleValue2) &&\r\n !isValueEmpty(actualValue) &&\r\n actualValue! < ruleValue2!\r\n );\r\n case \"LessThanOrEqual\":\r\n return (\r\n !isValueEmpty(ruleValue2) &&\r\n !isValueEmpty(actualValue) &&\r\n actualValue! <= ruleValue2!\r\n );\r\n case \"IsEmpty\":\r\n return isValueEmpty(actualValue);\r\n case \"IsNotEmpty\":\r\n return !isValueEmpty(actualValue);\r\n default:\r\n return null;\r\n }\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 || columnData.FieldDataType != column?.DataTypeCode) {\r\n return defaultValue ? getTableFormattingPropertyValue(defaultValue) : undefined; \r\n };\r\n\r\n let firstValidRule = null;\r\n\r\n\r\n if(FieldDataType.isDateOrDateTimeType(column?.DataTypeCode)){\r\n\r\n firstValidRule = columnData.FieldRules.find((rule: any) => isDateValidRule(rule, cellValue));\r\n\r\n }else{\r\n\r\n firstValidRule = columnData.FieldRules.find((rule: any) => IsValidRule(rule, cellValue));\r\n }\r\n\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 isRowTenantMatched = (rowData: any | null = null) => {\r\n if (!rowData) return true;\r\n\r\n return Number(rowData.Tenant) === Number(Session.Tenant);\r\n }\r\n\r\n const isClickableCell = (fieldCode: string | null , rowData : any | null = null) => {\r\n if (!isRowTenantMatched(rowData)) {\r\n return false;\r\n }\r\n\r\n return ((fieldCode == \"ShipmentNumber\" && objectTableName == \"Shipment\") ||\r\n IsShipmentMasterFieldClickable(fieldCode,rowData) ||\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 (fieldCode == \"TaskNumber\" && objectTableName == \"Task\") ||\r\n (fieldCode == \"Subject\" && objectTableName == \"Activity\") ||\r\n (fieldCode == \"TicketNumber\" && objectTableName == \"Ticket\")||\r\n (fieldCode == \"ReleaseNumber\" && objectTableName == \"WarehouseRelease\") ||\r\n (fieldCode == \"EntryNumber\" && objectTableName == \"WarehouseEntry\"))\r\n }\r\n\r\n const IsShipmentMasterFieldClickable = (fieldCode: string | null , rowData: any | null = null) => {\r\n\r\n if(Session.isMasterNumberClickable && objectTableName === \"Shipment\" && fieldCode === \"Master\" && Session.isMasterNumberClickable(rowData)){\r\n return true;\r\n }\r\n\r\n return false;\r\n }\r\n\r\n const tableCellClicked = (data: any, fieldCode: string | null) => {\r\n if(!data || !data.Id || !isClickableCell(fieldCode,data) || props.customChartProps.isInEditMode) return;\r\n\r\n props.customChartProps.onSelectDataPoint({\r\n ObjectTableName: objectTableName,\r\n TableRowEntityId: data.Id,\r\n RowData : data,\r\n FieldCode : fieldCode\r\n });\r\n }\r\n\r\n const getCellValue = (data: any, column: FieldColumn) => {\r\n if(isNullOrUndefined(data) || isNullOrUndefined(column)) {\r\n return \"\";\r\n }\r\n\r\n let columnValue = data[column.FieldCode!];\r\n \r\n let decimalPlaces = widget?.DecimalPlaces || 0;\r\n let isAbbreviationApplied = widget?.UseNumberAbbreviation || false;\r\n\r\n if(FieldDataType.isPercentage(column.DataTypeCode)) {\r\n return !isNullOrUndefined(columnValue) ? getNumberInSystemLocalFormat(Number(columnValue), decimalPlaces,decimalPlaces,true,isAbbreviationApplied) + \"%\" : 0 + '%';\r\n }\r\n\r\n if(FieldDataType.isInteger(column.DataTypeCode)) {\r\n return !isNullOrUndefined(columnValue) ? getNumberInSystemLocalFormat(Number(columnValue), decimalPlaces, decimalPlaces,false,isAbbreviationApplied) : \"\";\r\n }\r\n\r\n\r\n if(FieldDataType.isNumericType(column.DataTypeCode)) {\r\n return !isNullOrUndefined(columnValue) ? getNumberInSystemLocalFormat(Number(columnValue), decimalPlaces,decimalPlaces,true,isAbbreviationApplied) : \"\";\r\n }\r\n\r\n \r\n return columnValue;\r\n }\r\n\r\n const cellTemplateBody = (data: any, column: FieldColumn) => {\r\n if(!column || !column.FieldCode) return \"\";\r\n\r\n if(column.DataTypeCode == \"DateTime\" || column.DataTypeCode == \"Date\"){\r\n\r\n let dateTimeDisplayMode : string | null = column.DateTimeDisplayMode;\r\n\r\n let fontColor : string = getTableFormattingPropertyValue(\"TableCellFontColor\");\r\n let fontSizeWithoutUnit = getTableFormattingPropertyValue(\"TableCellFontSize\");\r\n let fontSizeWitUnit = getTableFormattingPropertyValue(\"TableCellFontSize\",\"px\");\r\n\r\n return (\r\n <div\r\n title={\r\n dateTimeDisplayMode === 'DateTime'\r\n ? getDateTimeValue(data[column.FieldCode!])\r\n : getDateTimeValue(data[column.FieldCode!], 'Date')\r\n }\r\n className=\"date-time-value-container\"\r\n style={{ color: fontColor }}\r\n >\r\n <span\r\n className=\"table-cell-datetime\"\r\n style={{\r\n fontSize: fontSizeWitUnit,\r\n display: 'inline-block',\r\n backgroundColor: getCellPropertyByRule(\r\n column,\r\n data[column.FieldCode!],\r\n 'RuleBackgroundColor'\r\n ),\r\n }}\r\n >\r\n {getDateTimeValue(data[column.FieldCode!], 'Date')}\r\n {dateTimeDisplayMode === 'DateTime' && (\r\n ' ' + getDateTimeValue(data[column.FieldCode!], 'Time')\r\n )}\r\n </span>\r\n </div>\r\n );\r\n \r\n\r\n }else{\r\n\r\n return <span \r\n onClick={() => tableCellClicked(data, column.FieldCode)}\r\n title={getCellValue(data, column)} \r\n className={`table-cell ${isClickableCell(column.FieldCode,data) ? 'table-link-cell' :''}`} \r\n style={{\r\n color: getTableFormattingPropertyValue(\"TableCellFontColor\"),\r\n backgroundColor: getCellPropertyByRule(column, data[column.FieldCode!], 'RuleBackgroundColor'),\r\n fontSize: getTableFormattingPropertyValue(\"TableCellFontSize\", \"px\"),\r\n float: getCellFloatAlignment(column)}}>\r\n {getCellValue(data, column)}\r\n </span>\r\n }\r\n }\r\n\r\n const headerTemplate = (column: FieldColumn)=> {\r\n let sortClassIcon = \"\";\r\n\r\n let _widget : any = props.customChartProps.widget;\r\n let showMeasureUnit = _widget.ShowMeasureUnit || false;\r\n\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 dl-table-chart-header-container\">\r\n <span style={{\r\n color: getTableFormattingPropertyValue(\"TableHeaderFontColor\"),\r\n fontSize: getTableFormattingPropertyValue(\"TableHeaderFontSize\", \"px\")}} \r\n className=\"p-column-title\">\r\n {(column.MeasureUnit && showMeasureUnit) ? `${column.DisplayName} (${column.MeasureUnit})` : 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 dl-table-chart-header-container\">\r\n <span style={{\r\n color: getTableFormattingPropertyValue(\"TableHeaderFontColor\"),\r\n fontSize: getTableFormattingPropertyValue(\"TableHeaderFontSize\", \"px\")}} \r\n className=\"p-column-title\">\r\n {(column.MeasureUnit && showMeasureUnit) ? `${column.DisplayName} (${column.MeasureUnit})` : 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} resizableColumns={!props.customChartProps.isInEditMode} columnResizeMode=\"fit\" 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, { forwardRef, useCallback, useEffect, useRef, useState } from 'react';\r\nimport PivotGrid, {\r\n FieldChooser, FieldPanel, Scrolling,\r\n} from 'devextreme-react/pivot-grid';\r\nimport { DashboardAnalyticsService } from '../../../../services/DashboardAnalyticsService';\r\nimport { CustomChartProps } from './CustomChart';\r\nimport { Session } from '../../../../services/session';\r\nimport PivotGridDataSource from 'devextreme/ui/pivot_grid/data_source';\r\nimport { ProgressSpinner } from 'primereact/progressspinner';\r\nimport { ConvertStringToPascalCaseHelper, getNumberInSystemLocalFormat, isNullOrUndefinedOrEmpty, isValueInteger } from '../../../../Utils/General';\r\nimport { ReactWidgetPM } from '../../../../types/widget';\r\nimport { WidgetLoadLogger } from '../../../../Utils/WidgetLoadLogger';\r\n\r\ntype PivotChartProps = {\r\n customChartProps: CustomChartProps;\r\n};\r\n\r\nconst PivotTable = forwardRef((props: PivotChartProps, comRef) => {\r\n\r\n const [widget, setWidget] = useState<ReactWidgetPM>();\r\n const [isLoading, setIsLoading] = useState<boolean>(true);\r\n\r\n const widgetRefData = useRef<ReactWidgetPM | null>(null);\r\n const tabledata = useRef<any>();\r\n const pivotGridRef = useRef<PivotGrid>(null);\r\n\r\n const [dataSource, setDataSource] = useState<any>(new PivotGridDataSource({\r\n store: [],\r\n fields: [],\r\n }));\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 getPivotTableData(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 document.addEventListener(\"resizeStop\", handleResize);\r\n return () => {\r\n document.removeEventListener(\"resizeStop\", handleResize);\r\n };\r\n }, [])\r\n\r\n useEffect(() => {\r\n if(props.customChartProps.isInEditMode){\r\n if(pivotGridRef.current && pivotGridRef.current?.instance && pivotGridRef.current.instance.element \r\n && pivotGridRef.current.instance.element().classList){\r\n pivotGridRef.current.instance.element().classList.add('force-overflow-hidden')\r\n }\r\n setTimeout(() => {\r\n handleResize();\r\n if(pivotGridRef.current && pivotGridRef.current?.instance && pivotGridRef.current.instance.element\r\n && pivotGridRef.current.instance.element().classList){\r\n pivotGridRef.current.instance.element().classList.remove('force-overflow-hidden')\r\n }\r\n }, 5);\r\n }\r\n\r\n }, [props.customChartProps.isInEditMode])\r\n\r\n const handleResize = () => {\r\n if(pivotGridRef.current && pivotGridRef.current?.instance && pivotGridRef.current?.instance.repaint){\r\n pivotGridRef.current?.instance.repaint()\r\n }\r\n }\r\n\r\n const getPivotTableData = (widget: any) => {\r\n if (Session.Tenant == 0) {\r\n tabledata.current = [];\r\n setIsLoading(false);\r\n return;\r\n }\r\n\r\n let dashboardAnalyticsService = new DashboardAnalyticsService();\r\n\r\n const widgetLoadLogger = new WidgetLoadLogger(props.customChartProps.widget as any, props.customChartProps.isPreviewModeActive, \"PostGetPivotData\");\r\n dashboardAnalyticsService.getPivotData(props.customChartProps.widget as any)\r\n .then((res) => {\r\n tabledata.current = res.data;\r\n setPivotDataSourceFields();\r\n setIsLoading(false);\r\n widgetLoadLogger.log(res);\r\n })\r\n .catch(err => {\r\n console.log(\"Error while Getting Pivot Table Data: \", err);\r\n tabledata.current = null;\r\n setPivotDataSourceFields();\r\n setIsLoading(false);\r\n })\r\n }\r\n const customizeCells = useCallback((e) => {\r\n if (e.cell.rowPath && e.cell.rowPath[0] === \"Germany\" && e.cell.columnPath && e.cell.columnPath[0] === \"Export\" && e.cell.columnPath[1] === \"Air\") {\r\n\r\n e.cellElement.children[0].style.padding = \"6px\";\r\n e.cellElement.children[0].style.borderRadius = \"6px\";\r\n e.cellElement.children[0].style.backgroundColor = \"#f4433673\";\r\n }\r\n\r\n if (e.cell.rowPath && e.cell.rowPath[0] === \"USA\" && e.cell.columnPath && e.cell.columnPath[0] === \"Import\" && e.cell.columnPath[1] === \"Inland\") {\r\n\r\n e.cellElement.children[0].style.padding = \"6px\";\r\n e.cellElement.children[0].style.borderRadius = \"6px\";\r\n e.cellElement.children[0].style.backgroundColor = \"#03a9f4ad\";\r\n }\r\n }, []);\r\n\r\n const onCellClick = useCallback((e: any) => {\r\n if (e.area === 'data') {\r\n let pivotFields: any = [];\r\n\r\n e.columnFields.forEach((c: any, index: number) => {\r\n let fieldValue = e.cell.columnPath[index];\r\n if(fieldValue !== undefined){\r\n pivotFields.push({ ...c.fieldData, FieldValue: fieldValue })\r\n }\r\n })\r\n\r\n e.rowFields.forEach((r: any, index: number) => {\r\n let fieldValue = e.cell.rowPath[index];\r\n if(fieldValue !== undefined){\r\n pivotFields.push({ ...r.fieldData, FieldValue: fieldValue })\r\n }\r\n })\r\n \r\n props.customChartProps.onSelectDataPoint({\r\n MeasureFieldId: '',\r\n Widget: props.customChartProps.widget,\r\n MeasureCode: '',\r\n Formula: '',\r\n GroupById: '',\r\n PivotFields: pivotFields\r\n });\r\n }\r\n }, []);\r\n\r\n const getColumnNameByColumnId = (fieldName, dataField, datafieldValue) => {\r\n let data = tabledata.current.PivotData.find(el => el[dataField] == datafieldValue)\r\n\r\n return data ? ConvertStringToPascalCaseHelper(data[fieldName]) : ''\r\n }\r\n\r\n const SortRowAndColumnHeaders = (a: any, b: any, field: any) => {\r\n if(field.DateCode == 'Month'){\r\n let aValue = a.value == null ? -1 : Number(a.value);\r\n let bValue = b.value == null ? -1 : Number(b.value);\r\n if(aValue < bValue) { return -1; }\r\n if(aValue > bValue) { return 1; }\r\n return 0;\r\n\r\n }else if(field.DateCode != null){\r\n\r\n let aValue = a.value == null ? '' : a.value;\r\n let bValue = b.value == null ? '' : b.value;\r\n if(aValue < bValue) { return -1; }\r\n if(aValue > bValue) { return 1; }\r\n return 0;\r\n\r\n }else{\r\n let aText = a.text == null ? '' : a.text;\r\n let bText = b.text == null ? '' : b.text;\r\n if(aText < bText) { return -1; }\r\n if(aText> bText) { return 1; }\r\n return 0;\r\n }\r\n\r\n \r\n }\r\n\r\n const setPivotDataSourceFields = () => {\r\n if (tabledata.current && tabledata.current.PivoFields && tabledata.current.PivotMeasures) {\r\n // Fill Pivot Rows & Columns fields\r\n let pivotRowsAndColumnsFields = tabledata.current.PivoFields.map(field => {\r\n return {\r\n dataField: field.PivotCode,\r\n caption: field.DisplayName,\r\n name: field.PivotName,\r\n width: 100,\r\n allowSorting: false,\r\n allowFiltering: false,\r\n area: field.PivotCode && field.PivotCode.includes('Row') ? 'row' : 'column',\r\n sortingMethod: (a, b)=> {\r\n return SortRowAndColumnHeaders(a, b, field);\r\n },\r\n expanded: true,\r\n wordWrapEnabled: true,\r\n fieldData: {\r\n FieldId: field.FieldId,\r\n FieldType: field.FieldType ? field.FieldType : \"Field\",\r\n FieldValue: '',\r\n DateCode : field.DateCode\r\n },\r\n customizeText: (cellInfo) => {\r\n return getColumnNameByColumnId(field.PivotName, field.PivotCode, cellInfo.value)\r\n }\r\n }\r\n })\r\n\r\n // Fill Pivot Data Cells fields\r\n let pivotDataCellsFields = tabledata.current.PivotMeasures.map(measure => {\r\n return {\r\n dataField: measure.PivotMeasureCode,\r\n area: 'data',\r\n dataType: 'number',\r\n wordWrapEnabled: true,\r\n caption: measure.MeasureCode == 'Sum' && typeof measure.DisplayName == 'string' ? ConvertStringToPascalCaseHelper(measure.DisplayName.replace(\"Sum of \", \"\")) : ConvertStringToPascalCaseHelper(measure.DisplayName),\r\n summaryType: 'custom',\r\n calculateCustomSummary: (options) => {\r\n if(options.summaryProcess == 'calculate'){\r\n let _value = !isNullOrUndefinedOrEmpty(options.value) ? options.value : 0;\r\n \r\n let decimalParts = _value.toString().split(\".\");\r\n let firstPart = decimalParts[0] ? decimalParts[0] : 0;\r\n \r\n let secondPart = decimalParts[1] ? decimalParts[1] : 0;\r\n secondPart = secondPart.toString().substr(0, 2);\r\n \r\n let _finalVal = firstPart + \".\" + secondPart\r\n\r\n options.value = Number(_finalVal)\r\n options.totalValue = (!isNullOrUndefinedOrEmpty(options.totalValue) ? options.totalValue : 0) + options.value\r\n }\r\n },\r\n format: (value) => {\r\n let isInteger = isValueInteger(measure.MeasureCode , measure.MeasureFieldDataType)\r\n let minimumFraction = isInteger ? 0 : 2;\r\n let _value = isNullOrUndefinedOrEmpty(value) ? 0 : value;\r\n return getNumberInSystemLocalFormat(_value, 2,minimumFraction);\r\n }\r\n }\r\n })\r\n\r\n let AllfieldsData = [...pivotRowsAndColumnsFields, ...pivotDataCellsFields];\r\n\r\n setDataSource(new PivotGridDataSource({\r\n store: tabledata.current.PivotData,\r\n fields: AllfieldsData,\r\n }))\r\n }\r\n }\r\n\r\n const isRowsEmptyAndColumnsNotEmpty = () => {\r\n let pivotRows = widget && !isNullOrUndefinedOrEmpty(widget?.PivotRows) ? JSON.parse(widget?.PivotRows!) : [];\r\n let pivotColumns = widget && !isNullOrUndefinedOrEmpty(widget?.PivotColumns) ? JSON.parse(widget?.PivotColumns!) : [];\r\n\r\n return pivotRows?.length === 0 && pivotColumns?.length > 0;\r\n }\r\n\r\n const canShowRowsGrandTotal = () : boolean | undefined => {\r\n if(isRowsEmptyAndColumnsNotEmpty()) {\r\n return true;\r\n }\r\n\r\n let pivotTotalsSettings = widget && !isNullOrUndefinedOrEmpty(widget?.PivotTotalsSettings) ? JSON.parse(widget?.PivotTotalsSettings!) : {};\r\n return !isNullOrUndefinedOrEmpty(pivotTotalsSettings.ShowRowsGrandTotal) ? pivotTotalsSettings.ShowRowsGrandTotal : false;\r\n }\r\n\r\n\r\n const isRowsNotEmptyAndColumnsEmpty = () => {\r\n let pivotRows = widget && !isNullOrUndefinedOrEmpty(widget?.PivotRows) ? JSON.parse(widget?.PivotRows!) : [];\r\n let pivotColumns = widget && !isNullOrUndefinedOrEmpty(widget?.PivotColumns) ? JSON.parse(widget?.PivotColumns!) : [];\r\n\r\n return pivotRows?.length > 0 && pivotColumns?.length === 0;\r\n }\r\n\r\n const canShowColumnsGrandTotal = () : boolean | undefined => {\r\n if(isRowsNotEmptyAndColumnsEmpty()) {\r\n return true;\r\n }\r\n\r\n let pivotTotalsSettings = widget && !isNullOrUndefinedOrEmpty(widget?.PivotTotalsSettings) ? JSON.parse(widget?.PivotTotalsSettings!) : {};\r\n return !isNullOrUndefinedOrEmpty(pivotTotalsSettings.ShowColumnsGrandTotal) ? pivotTotalsSettings.ShowColumnsGrandTotal : false;\r\n }\r\n\r\n const canShowRowsTotal = () : boolean | undefined => {\r\n let pivotTotalsSettings = widget && !isNullOrUndefinedOrEmpty(widget?.PivotTotalsSettings) ? JSON.parse(widget?.PivotTotalsSettings!) : {};\r\n return !isNullOrUndefinedOrEmpty(pivotTotalsSettings.ShowRowsTotal) ? pivotTotalsSettings.ShowRowsTotal : false;\r\n }\r\n\r\n const canShowColumnsTotal = () : boolean | undefined => {\r\n let pivotTotalsSettings = widget && !isNullOrUndefinedOrEmpty(widget?.PivotTotalsSettings) ? JSON.parse(widget?.PivotTotalsSettings!) : {};\r\n return !isNullOrUndefinedOrEmpty(pivotTotalsSettings.ShowColumnsTotal) ? pivotTotalsSettings.ShowColumnsTotal : false;\r\n }\r\n\r\n return (\r\n <React.Fragment>\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 <PivotGrid\r\n id=\"pivotGridId\"\r\n ref={pivotGridRef}\r\n dataSource={dataSource}\r\n allowExpandAll={true}\r\n showBorders={true}\r\n className='pivot-grid-element'\r\n onCellClick={onCellClick}\r\n showRowGrandTotals={canShowRowsGrandTotal()}\r\n showColumnGrandTotals={canShowColumnsGrandTotal()}\r\n showRowTotals={canShowRowsTotal()}\r\n showColumnTotals={canShowColumnsTotal()}\r\n showTotalsPrior='none'\r\n wordWrapEnabled={true}\r\n >\r\n <FieldPanel\r\n showColumnFields={false}\r\n showDataFields={false}\r\n showFilterFields={false}\r\n showRowFields={false}\r\n texts={{rowFieldArea: \"\"}}\r\n allowFieldDragging={false}\r\n visible={true}\r\n />\r\n <FieldChooser enabled={false} />\r\n <Scrolling mode=\"virtual\" />\r\n </PivotGrid>\r\n }\r\n </React.Fragment>\r\n )\r\n});\r\n\r\nexport default PivotTable;","import { ConvertStringToPascalCaseHelper, getNumberInSystemLocalFormat, isNullOrUndefinedOrEmpty, isValueInteger } from '../../../../Utils/General';\r\n\r\nexport type PivotApiField = {\r\n FieldId: string;\r\n FieldCode?: string;\r\n PivotCode: string;\r\n PivotName: string;\r\n DisplayName: string;\r\n DataTypeCode?: string;\r\n DateCode: string | null;\r\n FieldType: string | null;\r\n};\r\n\r\nexport type PivotApiMeasure = {\r\n PivotMeasureCode: string;\r\n MeasureCode: string;\r\n MeasureFieldId?: string;\r\n MeasureFieldDataType?: string | null;\r\n DisplayName: string;\r\n FieldType?: string;\r\n};\r\n\r\nexport const isRowPivotField = (field: PivotApiField): boolean => {\r\n return !!(field.PivotCode && field.PivotCode.indexOf('Row') !== -1);\r\n};\r\n\r\nexport const truncateToTwoDecimals = (value: any): number => {\r\n const numericValue = isNullOrUndefinedOrEmpty(value) ? 0 : Number(value);\r\n const safeValue = isNaN(numericValue) ? 0 : numericValue;\r\n const decimalParts = safeValue.toString().split('.');\r\n const firstPart = decimalParts[0] ? decimalParts[0] : '0';\r\n const secondPart = decimalParts[1] ? decimalParts[1].toString().substr(0, 2) : '0';\r\n return Number(firstPart + '.' + secondPart);\r\n};\r\n\r\nexport const isPivotMeasureValueEmpty = (value: any): boolean => {\r\n return value === null || value === undefined || value === '';\r\n};\r\n\r\nexport const logitudeSumAgg = (params: { values: any[] }): number | null => {\r\n const values = params && params.values ? params.values : [];\r\n if (values.length === 0) return null;\r\n\r\n let total = 0;\r\n let hasValue = false;\r\n for (let i = 0; i < values.length; i++) {\r\n if (isPivotMeasureValueEmpty(values[i])) continue;\r\n hasValue = true;\r\n total += truncateToTwoDecimals(values[i]);\r\n }\r\n return hasValue ? total : null;\r\n};\r\n\r\nexport const formatPivotMeasureValue = (value: any, measure: PivotApiMeasure): string => {\r\n if (isPivotMeasureValueEmpty(value)) return '';\r\n\r\n const isInteger = isValueInteger(measure.MeasureCode, measure.MeasureFieldDataType);\r\n const minimumFraction = isInteger ? 0 : 2;\r\n return getNumberInSystemLocalFormat(value, 2, minimumFraction);\r\n};\r\n\r\nexport const getPivotGroupFooterLabel = (\r\n node: any,\r\n fieldCode: string | null | undefined,\r\n rawValue: any,\r\n lookupDisplayName: (fieldCode: string, rawValue: any) => string\r\n): string => {\r\n if (!node || !node.footer) return '';\r\n\r\n if (node.level === -1) {\r\n return 'Grand Total';\r\n }\r\n\r\n if (!fieldCode) return '';\r\n\r\n const displayName = lookupDisplayName(fieldCode, rawValue);\r\n return displayName ? `${displayName} Total` : '';\r\n};\r\n\r\nexport const compareDimensionValues = (aValue: any, bValue: any, dateCode: string | null, aText?: any, bText?: any): number => {\r\n if (dateCode === 'Month') {\r\n const aNumber = aValue == null ? -1 : Number(aValue);\r\n const bNumber = bValue == null ? -1 : Number(bValue);\r\n if (aNumber < bNumber) return -1;\r\n if (aNumber > bNumber) return 1;\r\n return 0;\r\n }\r\n\r\n if (dateCode != null) {\r\n const aCompare = aValue == null ? '' : aValue;\r\n const bCompare = bValue == null ? '' : bValue;\r\n if (aCompare < bCompare) return -1;\r\n if (aCompare > bCompare) return 1;\r\n return 0;\r\n }\r\n\r\n const aDisplay = aText == null || aText === '' ? (aValue == null ? '' : aValue) : aText;\r\n const bDisplay = bText == null || bText === '' ? (bValue == null ? '' : bValue) : bText;\r\n if (aDisplay < bDisplay) return -1;\r\n if (aDisplay > bDisplay) return 1;\r\n return 0;\r\n};\r\n\r\nexport const getPivotDisplayName = (pivotData: any[], fieldName: string, dataField: string, dataFieldValue: any): string => {\r\n if (!pivotData || pivotData.length === 0) return '';\r\n const data = pivotData.find(el => el[dataField] == dataFieldValue);\r\n return data ? ConvertStringToPascalCaseHelper(data[fieldName]) : '';\r\n};\r\n\r\nexport const isPivotRowGrandTotalColumnDef = (colDef: any): boolean => {\r\n if (!colDef || !colDef.colId) {\r\n return false;\r\n }\r\n return String(colDef.colId).indexOf('PivotRowTotal_') === 0;\r\n};\r\n\r\nexport const isPivotRowGrandTotalGroupDef = (colGroupDef: any): boolean => {\r\n if (!colGroupDef) {\r\n return false;\r\n }\r\n\r\n const groupId = colGroupDef.groupId || colGroupDef.colId || '';\r\n if (String(groupId).indexOf('PivotRowTotal') >= 0) {\r\n return true;\r\n }\r\n\r\n const children = colGroupDef.children;\r\n if (!children || children.length === 0) {\r\n return false;\r\n }\r\n\r\n return children.every((child: any) => {\r\n if (child && child.children) {\r\n return isPivotRowGrandTotalGroupDef(child);\r\n }\r\n return isPivotRowGrandTotalColumnDef(child);\r\n });\r\n};\r\n\r\nexport const resolvePivotGroupHeaderName = (\r\n colGroupDef: any,\r\n columnFields: PivotApiField[],\r\n lookupDisplayName: (field: PivotApiField, rawValue: any) => string\r\n): string | null => {\r\n if (isPivotRowGrandTotalGroupDef(colGroupDef)) {\r\n return 'Grand Total';\r\n }\r\n\r\n const pivotKeys: string[] = colGroupDef && colGroupDef.pivotKeys ? colGroupDef.pivotKeys : [];\r\n if (pivotKeys.length === 0) {\r\n return null;\r\n }\r\n\r\n const field = columnFields[pivotKeys.length - 1];\r\n if (!field) {\r\n return null;\r\n }\r\n\r\n return lookupDisplayName(field, pivotKeys[pivotKeys.length - 1]);\r\n};\r\n\r\nexport const getPivotValueColumnId = (pivotValueColumn: any): string | null => {\r\n if (!pivotValueColumn) {\r\n return null;\r\n }\r\n\r\n if (typeof pivotValueColumn.getId === 'function') {\r\n return pivotValueColumn.getId();\r\n }\r\n\r\n if (typeof pivotValueColumn.getColId === 'function') {\r\n return pivotValueColumn.getColId();\r\n }\r\n\r\n if (pivotValueColumn.colId) {\r\n return String(pivotValueColumn.colId);\r\n }\r\n\r\n if (pivotValueColumn.field) {\r\n return String(pivotValueColumn.field);\r\n }\r\n\r\n return null;\r\n};\r\n\r\nexport const resolveMeasureFromPivotValueColumn = (\r\n colDef: any,\r\n measures: PivotApiMeasure[]\r\n): PivotApiMeasure | undefined => {\r\n if (!colDef || measures.length === 0) {\r\n return undefined;\r\n }\r\n\r\n if (measures.length === 1) {\r\n return measures[0];\r\n }\r\n\r\n const valueColumnId = getPivotValueColumnId(colDef.pivotValueColumn);\r\n if (valueColumnId) {\r\n const measureByValueColumn = measures.find(measure => measure.PivotMeasureCode === valueColumnId);\r\n if (measureByValueColumn) {\r\n return measureByValueColumn;\r\n }\r\n }\r\n\r\n const colId = colDef.colId ? String(colDef.colId) : '';\r\n if (colId) {\r\n const sortedMeasures = [...measures].sort(\r\n (left, right) => right.PivotMeasureCode.length - left.PivotMeasureCode.length\r\n );\r\n for (let index = 0; index < sortedMeasures.length; index++) {\r\n const measureCode = sortedMeasures[index].PivotMeasureCode;\r\n if (colId.endsWith('_' + measureCode)) {\r\n return sortedMeasures[index];\r\n }\r\n }\r\n }\r\n\r\n return undefined;\r\n};\r\n\r\nexport const resolvePivotLeafHeaderName = (\r\n colDef: any,\r\n columnFields: PivotApiField[],\r\n lookupDisplayName: (field: PivotApiField, rawValue: any) => string,\r\n measureCount: number,\r\n measures: PivotApiMeasure[]\r\n): string | null => {\r\n if (isPivotRowGrandTotalColumnDef(colDef)) {\r\n return null;\r\n }\r\n\r\n if (measureCount > 1 && colDef.pivotValueColumn) {\r\n return null;\r\n }\r\n\r\n const pivotKeys: string[] = colDef && colDef.pivotKeys ? colDef.pivotKeys : [];\r\n if (pivotKeys.length === 0) {\r\n return null;\r\n }\r\n\r\n const field = columnFields[pivotKeys.length - 1];\r\n if (!field) {\r\n return null;\r\n }\r\n\r\n return lookupDisplayName(field, pivotKeys[pivotKeys.length - 1]);\r\n};\r\n\r\nexport const resolveMeasureForSecondaryColDef = (\r\n colDef: any,\r\n measures: PivotApiMeasure[]\r\n): PivotApiMeasure | undefined => {\r\n return resolveMeasureFromPivotValueColumn(colDef, measures);\r\n};\r\n\r\nconst getColumnGroupAtHeaderLevel = (column: any, targetLevel: number): any | null => {\r\n if (!column || typeof column.getParent !== 'function') {\r\n return null;\r\n }\r\n\r\n let groupPointer = column.getParent();\r\n while (groupPointer) {\r\n const providedColumnGroup = typeof groupPointer.getProvidedColumnGroup === 'function'\r\n ? groupPointer.getProvidedColumnGroup()\r\n : null;\r\n if (!providedColumnGroup) {\r\n groupPointer = typeof groupPointer.getParent === 'function' ? groupPointer.getParent() : null;\r\n continue;\r\n }\r\n\r\n const originalGroupLevel = typeof providedColumnGroup.getLevel === 'function'\r\n ? providedColumnGroup.getLevel()\r\n : 0;\r\n const groupPointerLevel = typeof groupPointer.getPaddingLevel === 'function'\r\n ? groupPointer.getPaddingLevel()\r\n : 0;\r\n\r\n if (originalGroupLevel + groupPointerLevel <= targetLevel) {\r\n return groupPointer;\r\n }\r\n\r\n groupPointer = typeof groupPointer.getParent === 'function' ? groupPointer.getParent() : null;\r\n }\r\n\r\n return null;\r\n};\r\n\r\nconst escapeColumnIdSelector = (columnId: string): string => {\r\n if (typeof CSS !== 'undefined' && typeof CSS.escape === 'function') {\r\n return CSS.escape(columnId);\r\n }\r\n\r\n return columnId.replace(/\\\\/g, '\\\\\\\\').replace(/\"/g, '\\\\\"');\r\n};\r\n\r\nconst findHeaderGroupCellByColumnGroup = (\r\n headerContainer: HTMLElement,\r\n groupRows: HTMLElement[],\r\n targetGroupLevel: number,\r\n columnGroup: any\r\n): HTMLElement | null => {\r\n if (!columnGroup || typeof columnGroup.getUniqueId !== 'function') {\r\n return null;\r\n }\r\n\r\n const groupId = columnGroup.getUniqueId();\r\n const groupRowIndex = Math.min(Math.max(targetGroupLevel, 0), groupRows.length - 1);\r\n const targetGroupRow = groupRows[groupRowIndex];\r\n if (!targetGroupRow) {\r\n return null;\r\n }\r\n\r\n return targetGroupRow.querySelector(`[col-id=\"${escapeColumnIdSelector(groupId)}\"]`) as HTMLElement | null;\r\n};\r\n\r\nexport const applyPivotRowGrandTotalGroupHeaderLabel = (\r\n gridRootElement: HTMLElement | null,\r\n columnApi: any,\r\n measureCount: number,\r\n columnPivotFieldCount: number\r\n): void => {\r\n if (!gridRootElement || !columnApi || measureCount <= 1) {\r\n return;\r\n }\r\n\r\n clearPivotRowGrandTotalGroupHeaderMarkup(gridRootElement);\r\n\r\n const displayedColumns = typeof columnApi.getAllDisplayedColumns === 'function'\r\n ? columnApi.getAllDisplayedColumns()\r\n : [];\r\n const rowGrandTotalColumns = displayedColumns.filter((column: any) =>\r\n String(column.getColId()).indexOf('PivotRowTotal_') === 0\r\n );\r\n if (rowGrandTotalColumns.length <= 1) {\r\n return;\r\n }\r\n\r\n const centerHeaderContainer = gridRootElement.querySelector('.ag-header-viewport .ag-header-container') as HTMLElement | null;\r\n if (!centerHeaderContainer) {\r\n return;\r\n }\r\n\r\n const groupRows = Array.from(\r\n centerHeaderContainer.querySelectorAll('.ag-header-row-column-group')\r\n ) as HTMLElement[];\r\n if (groupRows.length === 0) {\r\n return;\r\n }\r\n\r\n const targetGroupLevel = columnPivotFieldCount > 0 ? columnPivotFieldCount - 1 : 0;\r\n const rowGrandTotalGroupCells = findRowGrandTotalGroupHeaderCells(\r\n centerHeaderContainer,\r\n groupRows,\r\n targetGroupLevel,\r\n rowGrandTotalColumns\r\n );\r\n if (rowGrandTotalGroupCells.length === 0) {\r\n return;\r\n }\r\n\r\n applyGrandTotalLabelToGroupHeaderCells(rowGrandTotalGroupCells);\r\n};\r\n\r\nconst clearPivotRowGrandTotalGroupHeaderMarkup = (gridRootElement: HTMLElement): void => {\r\n gridRootElement.querySelectorAll('.dl-pivot-row-grand-total-group-header, .dl-pivot-row-grand-total-group-header-sibling')\r\n .forEach(element => {\r\n element.classList.remove('dl-pivot-row-grand-total-group-header', 'dl-pivot-row-grand-total-group-header-sibling');\r\n });\r\n\r\n gridRootElement.querySelectorAll('.dl-pivot-row-grand-total-group-header-label')\r\n .forEach(label => {\r\n label.classList.remove('dl-pivot-row-grand-total-group-header-label');\r\n const labelElement = label as HTMLElement;\r\n labelElement.textContent = '';\r\n labelElement.style.width = '';\r\n labelElement.style.display = '';\r\n labelElement.style.textAlign = '';\r\n });\r\n};\r\n\r\nconst findRowGrandTotalGroupHeaderCells = (\r\n centerHeaderContainer: HTMLElement,\r\n groupRows: HTMLElement[],\r\n targetGroupLevel: number,\r\n rowGrandTotalColumns: any[]\r\n): HTMLElement[] => {\r\n const cellsByColumnGroup: HTMLElement[] = [];\r\n\r\n rowGrandTotalColumns.forEach((column: any) => {\r\n const columnGroup = getColumnGroupAtHeaderLevel(column, targetGroupLevel);\r\n const matchingCell = findHeaderGroupCellByColumnGroup(\r\n centerHeaderContainer,\r\n groupRows,\r\n targetGroupLevel,\r\n columnGroup\r\n );\r\n if (matchingCell) {\r\n cellsByColumnGroup.push(matchingCell);\r\n }\r\n });\r\n\r\n if (cellsByColumnGroup.length === rowGrandTotalColumns.length) {\r\n return cellsByColumnGroup;\r\n }\r\n\r\n const groupRowIndex = Math.min(Math.max(targetGroupLevel, 0), groupRows.length - 1);\r\n const targetGroupRow = groupRows[groupRowIndex];\r\n if (!targetGroupRow) {\r\n return cellsByColumnGroup;\r\n }\r\n\r\n const paddingCells = Array.from(\r\n targetGroupRow.querySelectorAll('.ag-header-group-cell-no-group')\r\n ) as HTMLElement[];\r\n const trailingPaddingCells = paddingCells.slice(-rowGrandTotalColumns.length);\r\n if (trailingPaddingCells.length === rowGrandTotalColumns.length) {\r\n return trailingPaddingCells;\r\n }\r\n\r\n return cellsByColumnGroup;\r\n};\r\n\r\nconst applyGrandTotalLabelToGroupHeaderCells = (rowGrandTotalGroupCells: HTMLElement[]): void => {\r\n const firstCell = rowGrandTotalGroupCells[0];\r\n const firstLabel = firstCell.querySelector('.ag-header-group-text, .ag-header-cell-text') as HTMLElement | null;\r\n if (!firstLabel) {\r\n return;\r\n }\r\n\r\n const combinedWidth = rowGrandTotalGroupCells.reduce((totalWidth, cell) => totalWidth + cell.offsetWidth, 0);\r\n firstLabel.textContent = 'Grand Total';\r\n firstLabel.style.width = `${combinedWidth}px`;\r\n firstLabel.style.display = 'inline-block';\r\n firstLabel.style.textAlign = 'center';\r\n firstLabel.classList.add('dl-pivot-row-grand-total-group-header-label');\r\n firstCell.classList.add('dl-pivot-row-grand-total-group-header');\r\n\r\n for (let index = 1; index < rowGrandTotalGroupCells.length; index++) {\r\n rowGrandTotalGroupCells[index].classList.add('dl-pivot-row-grand-total-group-header-sibling');\r\n const siblingLabel = rowGrandTotalGroupCells[index].querySelector('.ag-header-group-text, .ag-header-cell-text') as HTMLElement | null;\r\n if (siblingLabel) {\r\n siblingLabel.textContent = '';\r\n }\r\n }\r\n};\r\n\r\nexport const applyPivotRowGrandTotalHeader = (\r\n colDef: any,\r\n measureCount: number,\r\n measures: PivotApiMeasure[]\r\n): void => {\r\n if (!isPivotRowGrandTotalColumnDef(colDef)) {\r\n return;\r\n }\r\n\r\n if (measureCount <= 1) {\r\n colDef.headerName = 'Grand Total';\r\n return;\r\n }\r\n\r\n const measure = resolveMeasureFromPivotValueColumn(colDef, measures);\r\n if (measure) {\r\n colDef.headerName = getMeasureCaption(measure);\r\n }\r\n delete colDef.headerValueGetter;\r\n};\r\n\r\nexport const collectPivotRowPath = (startNode: any): { field: string, key: any }[] => {\r\n const path: { field: string, key: any }[] = [];\r\n if (!startNode) {\r\n return path;\r\n }\r\n\r\n if (startNode.footer) {\r\n if (startNode.level === -1) {\r\n return path;\r\n }\r\n\r\n if (startNode.field != null && startNode.key !== undefined) {\r\n path.unshift({ field: startNode.field, key: startNode.key });\r\n }\r\n }\r\n\r\n let node = startNode.parent;\r\n while (node && node.level >= 0) {\r\n if (!node.footer && node.field != null && node.key !== undefined) {\r\n path.unshift({ field: node.field, key: node.key });\r\n }\r\n node = node.parent;\r\n }\r\n\r\n return path;\r\n};\r\n\r\nexport const buildPivotDrillDownPivotFields = (\r\n colDef: any,\r\n startNode: any,\r\n apiFields: PivotApiField[]\r\n): any[] => {\r\n const columnFields = apiFields.filter(field => !isRowPivotField(field));\r\n const rowFields = apiFields.filter(isRowPivotField);\r\n const pivotFields: any[] = [];\r\n\r\n const columnKeys: string[] = colDef && colDef.pivotKeys ? colDef.pivotKeys : [];\r\n columnKeys.forEach((key, index) => {\r\n if (key === undefined) {\r\n return;\r\n }\r\n const field = columnFields[index];\r\n if (!field) {\r\n return;\r\n }\r\n pivotFields.push({\r\n FieldId: field.FieldId,\r\n FieldType: field.FieldType ? field.FieldType : 'Field',\r\n FieldValue: key,\r\n DateCode: field.DateCode\r\n });\r\n });\r\n\r\n collectPivotRowPath(startNode).forEach((pathItem) => {\r\n const field = rowFields.find(f => f.PivotCode === pathItem.field) || apiFields.find(f => f.PivotCode === pathItem.field);\r\n if (!field) {\r\n return;\r\n }\r\n pivotFields.push({\r\n FieldId: field.FieldId,\r\n FieldType: field.FieldType ? field.FieldType : 'Field',\r\n FieldValue: pathItem.key,\r\n DateCode: field.DateCode\r\n });\r\n });\r\n\r\n return pivotFields;\r\n};\r\n\r\nexport const getMeasureCaption = (measure: PivotApiMeasure): string => {\r\n const displayName = typeof measure.DisplayName == 'string' ? measure.DisplayName : '';\r\n if (measure.MeasureCode == 'Sum') {\r\n return ConvertStringToPascalCaseHelper(displayName.replace('Sum of ', ''));\r\n }\r\n return ConvertStringToPascalCaseHelper(displayName);\r\n};\r\n\r\nexport const parseJsonArray = (json: string | null | undefined): any[] => {\r\n if (isNullOrUndefinedOrEmpty(json)) return [];\r\n try {\r\n const parsed = JSON.parse(json as string);\r\n return parsed || [];\r\n } catch (error) {\r\n return [];\r\n }\r\n};\r\n\r\nexport const parsePivotTotalsSettings = (json: string | null | undefined): any => {\r\n if (isNullOrUndefinedOrEmpty(json)) return {};\r\n try {\r\n return JSON.parse(json as string) || {};\r\n } catch (error) {\r\n return {};\r\n }\r\n};\r\n","import React, { forwardRef, useCallback, useEffect, useMemo, useRef, useState } from 'react';\r\nimport { AgGridReact } from 'ag-grid-react';\r\nimport { LicenseManager } from 'ag-grid-enterprise';\r\nimport 'ag-grid-enterprise';\r\nimport 'ag-grid-community/dist/styles/ag-grid.css';\r\nimport 'ag-grid-community/dist/styles/ag-theme-balham.css';\r\nimport { ColDef, ColGroupDef, GridApi, GridReadyEvent, CellClickedEvent, FirstDataRenderedEvent } from 'ag-grid-community';\r\nimport { ProgressSpinner } from 'primereact/progressspinner';\r\nimport { DashboardAnalyticsService } from '../../../../services/DashboardAnalyticsService';\r\nimport { CustomChartProps } from './CustomChart';\r\nimport { Session } from '../../../../services/session';\r\nimport { isNullOrUndefinedOrEmpty } from '../../../../Utils/General';\r\nimport { ReactWidgetPM } from '../../../../types/widget';\r\nimport { WidgetLoadLogger } from '../../../../Utils/WidgetLoadLogger';\r\nimport {\r\n PivotApiField,\r\n PivotApiMeasure,\r\n compareDimensionValues,\r\n formatPivotMeasureValue,\r\n getMeasureCaption,\r\n getPivotDisplayName,\r\n getPivotGroupFooterLabel,\r\n isPivotMeasureValueEmpty,\r\n isRowPivotField,\r\n logitudeSumAgg,\r\n parseJsonArray,\r\n parsePivotTotalsSettings,\r\n resolveMeasureForSecondaryColDef,\r\n resolvePivotGroupHeaderName,\r\n resolvePivotLeafHeaderName,\r\n applyPivotRowGrandTotalHeader,\r\n applyPivotRowGrandTotalGroupHeaderLabel,\r\n buildPivotDrillDownPivotFields\r\n} from './PivotAgGridSupport';\r\n\r\ntype PivotChartProps = {\r\n customChartProps: CustomChartProps;\r\n};\r\n\r\nconst ROW_GROUP_COLUMN_MIN_WIDTH = 100;\r\n\r\nconst applyAgGridLicense = () => {\r\n if (!Session.AgGridLicenseKey) return;\r\n LicenseManager.setLicenseKey(Session.AgGridLicenseKey);\r\n};\r\n\r\nconst AgPivotGrid = forwardRef((props: PivotChartProps, _comRef) => {\r\n const [widget, setWidget] = useState<ReactWidgetPM>();\r\n const [isLoading, setIsLoading] = useState<boolean>(true);\r\n const [rowData, setRowData] = useState<any[]>([]);\r\n const [columnDefs, setColumnDefs] = useState<ColDef[]>([]);\r\n const [measureCount, setMeasureCount] = useState<number>(0);\r\n\r\n const widgetRefData = useRef<ReactWidgetPM | null>(null);\r\n const tabledata = useRef<any>();\r\n const gridApiRef = useRef<GridApi | null>(null);\r\n const columnApiRef = useRef<any>(null);\r\n const gridContainerRef = useRef<HTMLDivElement | null>(null);\r\n const pivotFieldsRef = useRef<PivotApiField[]>([]);\r\n const pivotMeasuresRef = useRef<PivotApiMeasure[]>([]);\r\n\r\n useEffect(() => {\r\n applyAgGridLicense();\r\n if (props.customChartProps && props.customChartProps.widget) {\r\n setWidget(props.customChartProps.widget);\r\n widgetRefData.current = props.customChartProps.widget;\r\n getPivotTableData(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 document.addEventListener('resizeStop', handleResize);\r\n return () => {\r\n document.removeEventListener('resizeStop', handleResize);\r\n };\r\n }, []);\r\n\r\n useEffect(() => {\r\n if (!props.customChartProps.isInEditMode) return;\r\n\r\n if (gridContainerRef.current && gridContainerRef.current.classList) {\r\n gridContainerRef.current.classList.add('force-overflow-hidden');\r\n }\r\n setTimeout(() => {\r\n handleResize();\r\n if (gridContainerRef.current && gridContainerRef.current.classList) {\r\n gridContainerRef.current.classList.remove('force-overflow-hidden');\r\n }\r\n }, 5);\r\n }, [props.customChartProps.isInEditMode]);\r\n\r\n const handleResize = () => {\r\n if (gridApiRef.current && gridApiRef.current.resetRowHeights) {\r\n gridApiRef.current.resetRowHeights();\r\n }\r\n };\r\n\r\n const getPivotTableData = (widgetPm: any) => {\r\n if (Session.Tenant == 0) {\r\n tabledata.current = [];\r\n setRowData([]);\r\n setIsLoading(false);\r\n return;\r\n }\r\n\r\n const dashboardAnalyticsService = new DashboardAnalyticsService();\r\n const widgetLoadLogger = new WidgetLoadLogger(props.customChartProps.widget as any, props.customChartProps.isPreviewModeActive, 'PostGetPivotData');\r\n dashboardAnalyticsService.getPivotData(widgetPm)\r\n .then((res) => {\r\n tabledata.current = res.data;\r\n buildGridFromPivotResponse();\r\n setIsLoading(false);\r\n widgetLoadLogger.log(res);\r\n })\r\n .catch(err => {\r\n console.log('Error while Getting Pivot Table Data: ', err);\r\n tabledata.current = null;\r\n setRowData([]);\r\n setIsLoading(false);\r\n });\r\n };\r\n\r\n const lookupDisplayName = (field: PivotApiField, rawValue: any): string => {\r\n const pivotData = tabledata.current && tabledata.current.PivotData ? tabledata.current.PivotData : [];\r\n return getPivotDisplayName(pivotData, field.PivotName, field.PivotCode, rawValue);\r\n };\r\n\r\n const lookupDisplayNameByFieldCode = (fieldCode: string, rawValue: any): string => {\r\n const field = pivotFieldsRef.current.find(f => f.PivotCode === fieldCode);\r\n if (!field) return rawValue == null ? '' : String(rawValue);\r\n return lookupDisplayName(field, rawValue);\r\n };\r\n\r\n const applyPivotDataCellFormatting = (colDef: ColDef) => {\r\n colDef.sortable = false;\r\n colDef.filter = false;\r\n colDef.cellClass = 'dl-ag-pivot-data-cell';\r\n colDef.type = 'numericColumn';\r\n };\r\n\r\n const buildGridFromPivotResponse = () => {\r\n if (!tabledata.current || !tabledata.current.PivoFields || !tabledata.current.PivotMeasures) {\r\n setRowData([]);\r\n return;\r\n }\r\n\r\n const apiFields: PivotApiField[] = tabledata.current.PivoFields;\r\n const apiMeasures: PivotApiMeasure[] = tabledata.current.PivotMeasures;\r\n pivotFieldsRef.current = apiFields;\r\n pivotMeasuresRef.current = apiMeasures;\r\n setMeasureCount(apiMeasures.length);\r\n\r\n const rowFields = apiFields.filter(isRowPivotField);\r\n const columnFields = apiFields.filter(field => !isRowPivotField(field));\r\n const defs: ColDef[] = [];\r\n\r\n rowFields.forEach((field, index) => {\r\n defs.push(createRowGroupColDef(field, index));\r\n });\r\n columnFields.forEach((field, index) => {\r\n defs.push(createPivotColDef(field, index));\r\n });\r\n apiMeasures.forEach((measure) => {\r\n defs.push(createMeasureColDef(measure));\r\n });\r\n\r\n setColumnDefs(defs);\r\n setRowData(tabledata.current.PivotData || []);\r\n };\r\n\r\n const createRowGroupColDef = (field: PivotApiField, index: number): ColDef => {\r\n return {\r\n field: field.PivotCode,\r\n headerName: field.DisplayName,\r\n rowGroup: true,\r\n rowGroupIndex: index,\r\n enableRowGroup: true,\r\n hide: true,\r\n width: ROW_GROUP_COLUMN_MIN_WIDTH,\r\n wrapText: true,\r\n autoHeight: true,\r\n sortable: false,\r\n filter: false,\r\n comparator: (a, b) => compareDimensionValues(a, b, field.DateCode, lookupDisplayName(field, a), lookupDisplayName(field, b)),\r\n valueFormatter: (params) => lookupDisplayName(field, params.value)\r\n };\r\n };\r\n\r\n const createPivotColDef = (field: PivotApiField, index: number): ColDef => {\r\n return {\r\n field: field.PivotCode,\r\n headerName: field.DisplayName,\r\n pivot: true,\r\n pivotIndex: index,\r\n enablePivot: true,\r\n hide: true,\r\n sortable: false,\r\n filter: false,\r\n pivotComparator: (a, b) => compareDimensionValues(\r\n a,\r\n b,\r\n field.DateCode,\r\n lookupDisplayName(field, a),\r\n lookupDisplayName(field, b)\r\n )\r\n };\r\n };\r\n\r\n const createMeasureColDef = (measure: PivotApiMeasure): ColDef => {\r\n return {\r\n field: measure.PivotMeasureCode,\r\n headerName: getMeasureCaption(measure),\r\n aggFunc: 'logitudeSum',\r\n enableValue: true,\r\n wrapText: true,\r\n autoHeight: true,\r\n sortable: false,\r\n filter: false,\r\n cellClass: 'dl-ag-pivot-data-cell',\r\n type: 'numericColumn',\r\n valueFormatter: (params) => formatPivotMeasureValue(params.value, measure)\r\n };\r\n };\r\n\r\n const isRowsEmptyAndColumnsNotEmpty = () => {\r\n const pivotRows = parseJsonArray(widget?.PivotRows);\r\n const pivotColumns = parseJsonArray(widget?.PivotColumns);\r\n return pivotRows.length === 0 && pivotColumns.length > 0;\r\n };\r\n\r\n const isRowsNotEmptyAndColumnsEmpty = () => {\r\n const pivotRows = parseJsonArray(widget?.PivotRows);\r\n const pivotColumns = parseJsonArray(widget?.PivotColumns);\r\n return pivotRows.length > 0 && pivotColumns.length === 0;\r\n };\r\n\r\n const canShowRowsGrandTotal = (): boolean => {\r\n if (isRowsEmptyAndColumnsNotEmpty()) return true;\r\n const settings = parsePivotTotalsSettings(widget?.PivotTotalsSettings);\r\n return !isNullOrUndefinedOrEmpty(settings.ShowRowsGrandTotal) ? !!settings.ShowRowsGrandTotal : false;\r\n };\r\n\r\n const canShowColumnsGrandTotal = (): boolean => {\r\n if (isRowsNotEmptyAndColumnsEmpty()) return true;\r\n const settings = parsePivotTotalsSettings(widget?.PivotTotalsSettings);\r\n return !isNullOrUndefinedOrEmpty(settings.ShowColumnsGrandTotal) ? !!settings.ShowColumnsGrandTotal : false;\r\n };\r\n\r\n const canShowRowsTotal = (): boolean => {\r\n const settings = parsePivotTotalsSettings(widget?.PivotTotalsSettings);\r\n return !isNullOrUndefinedOrEmpty(settings.ShowRowsTotal) ? !!settings.ShowRowsTotal : false;\r\n };\r\n\r\n const canShowColumnsTotal = (): boolean => {\r\n const settings = parsePivotTotalsSettings(widget?.PivotTotalsSettings);\r\n return !isNullOrUndefinedOrEmpty(settings.ShowColumnsTotal) ? !!settings.ShowColumnsTotal : false;\r\n };\r\n\r\n const isSingleMeasurePivot = measureCount <= 1;\r\n\r\n const processSecondaryColGroupDef = useCallback((colGroupDef: ColGroupDef) => {\r\n const columnFields = pivotFieldsRef.current.filter(field => !isRowPivotField(field));\r\n const headerName = resolvePivotGroupHeaderName(colGroupDef, columnFields, lookupDisplayName);\r\n if (headerName) {\r\n colGroupDef.headerName = headerName;\r\n }\r\n }, []);\r\n\r\n const processSecondaryColDef = useCallback((colDef: ColDef) => {\r\n const columnFields = pivotFieldsRef.current.filter(field => !isRowPivotField(field));\r\n const colDefAny: any = colDef;\r\n\r\n if (colDefAny.colId && String(colDefAny.colId).indexOf('PivotRowTotal_') === 0) {\r\n applyPivotRowGrandTotalHeader(\r\n colDefAny,\r\n pivotMeasuresRef.current.length,\r\n pivotMeasuresRef.current\r\n );\r\n } else {\r\n const headerName = resolvePivotLeafHeaderName(\r\n colDefAny,\r\n columnFields,\r\n lookupDisplayName,\r\n pivotMeasuresRef.current.length,\r\n pivotMeasuresRef.current\r\n );\r\n if (headerName) {\r\n colDef.headerName = headerName;\r\n }\r\n }\r\n\r\n applyPivotDataCellFormatting(colDef);\r\n colDef.valueFormatter = (params) => {\r\n const measure = resolveMeasureForSecondaryColDef(params.colDef, pivotMeasuresRef.current);\r\n if (!measure) return '';\r\n return formatPivotMeasureValue(params.value, measure);\r\n };\r\n }, []);\r\n\r\n const onCellClicked = useCallback((event: CellClickedEvent) => {\r\n const colDef: any = event.colDef;\r\n if (!colDef || !colDef.pivotValueColumn) return;\r\n if (isPivotMeasureValueEmpty(event.value)) return;\r\n\r\n const pivotFields = buildPivotDrillDownPivotFields(colDef, event.node, pivotFieldsRef.current);\r\n\r\n props.customChartProps.onSelectDataPoint({\r\n MeasureFieldId: '',\r\n MeasureFieldType: '',\r\n Widget: props.customChartProps.widget,\r\n MeasureCode: '',\r\n Formula: '',\r\n GroupById: '',\r\n PivotFields: pivotFields\r\n });\r\n }, []);\r\n\r\n const defaultColDef = useMemo<ColDef>(() => ({\r\n sortable: false,\r\n filter: false,\r\n resizable: false,\r\n suppressMenu: true,\r\n wrapText: true,\r\n autoHeight: true\r\n }), []);\r\n\r\n const autoGroupColumnDef = useMemo<ColDef>(() => ({\r\n minWidth: ROW_GROUP_COLUMN_MIN_WIDTH,\r\n width: ROW_GROUP_COLUMN_MIN_WIDTH,\r\n sortable: false,\r\n filter: false,\r\n wrapText: true,\r\n autoHeight: true,\r\n cellClass: 'dl-ag-pivot-row-label-cell',\r\n headerValueGetter: (params) => {\r\n const colDef: any = params.colDef;\r\n const showRowGroup = colDef && colDef.showRowGroup;\r\n if (!showRowGroup) return '';\r\n const field = pivotFieldsRef.current.find(f => f.PivotCode === showRowGroup);\r\n return field ? field.DisplayName : '';\r\n },\r\n valueFormatter: (params) => {\r\n const colDef: any = params.colDef;\r\n const showRowGroup = colDef && colDef.showRowGroup;\r\n const field = pivotFieldsRef.current.find(f => f.PivotCode === showRowGroup);\r\n if (!field) return params.value == null ? '' : String(params.value);\r\n return lookupDisplayName(field, params.value);\r\n },\r\n cellRendererParams: {\r\n suppressCount: true,\r\n footerValueGetter: (params: any) => {\r\n const fieldCode = params.node && params.node.field\r\n ? params.node.field\r\n : (params.colDef && params.colDef.showRowGroup ? params.colDef.showRowGroup : null);\r\n return getPivotGroupFooterLabel(\r\n params.node,\r\n fieldCode,\r\n params.value,\r\n lookupDisplayNameByFieldCode\r\n );\r\n }\r\n }\r\n }), []);\r\n\r\n const aggFuncs = useMemo(() => ({\r\n logitudeSum: logitudeSumAgg\r\n }), []);\r\n\r\n const scheduleRowGrandTotalHeaderLabel = useCallback(() => {\r\n const columnPivotFieldCount = pivotFieldsRef.current.filter(field => !isRowPivotField(field)).length;\r\n const applyLabel = () => {\r\n applyPivotRowGrandTotalGroupHeaderLabel(\r\n gridContainerRef.current,\r\n columnApiRef.current,\r\n measureCount,\r\n columnPivotFieldCount\r\n );\r\n };\r\n\r\n window.requestAnimationFrame(() => {\r\n window.requestAnimationFrame(() => {\r\n applyLabel();\r\n window.setTimeout(applyLabel, 150);\r\n });\r\n });\r\n }, [measureCount]);\r\n\r\n const onGridReady = (event: GridReadyEvent) => {\r\n gridApiRef.current = event.api;\r\n columnApiRef.current = event.columnApi;\r\n };\r\n\r\n const onFirstDataRendered = (event: FirstDataRenderedEvent) => {\r\n columnApiRef.current = event.columnApi;\r\n const columnApi: any = event.columnApi;\r\n if (!columnApi || !columnApi.getAllDisplayedColumns) return;\r\n\r\n const autoGroupColumnIds = columnApi.getAllDisplayedColumns()\r\n .map((col: any) => col.getColId())\r\n .filter((colId: string) => colId.indexOf('ag-Grid-AutoColumn') === 0);\r\n\r\n if (autoGroupColumnIds.length > 0 && columnApi.autoSizeColumns) {\r\n columnApi.autoSizeColumns(autoGroupColumnIds, false);\r\n }\r\n\r\n scheduleRowGrandTotalHeaderLabel();\r\n };\r\n\r\n const onColumnPivotChanged = () => {\r\n scheduleRowGrandTotalHeaderLabel();\r\n };\r\n\r\n const onColumnResized = () => {\r\n scheduleRowGrandTotalHeaderLabel();\r\n };\r\n\r\n const gridWrapperClassName = 'ag-theme-balham pivot-grid-element dl-ag-pivot-grid';\r\n\r\n return (\r\n <React.Fragment>\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 <div ref={gridContainerRef} className={gridWrapperClassName}>\r\n <AgGridReact\r\n rowData={rowData}\r\n columnDefs={columnDefs}\r\n defaultColDef={defaultColDef}\r\n autoGroupColumnDef={autoGroupColumnDef}\r\n aggFuncs={aggFuncs}\r\n pivotMode={true}\r\n groupDisplayType=\"multipleColumns\"\r\n groupDefaultExpanded={-1}\r\n suppressAggFuncInHeader={true}\r\n removePivotHeaderRowWhenSingleValueColumn={isSingleMeasurePivot}\r\n groupIncludeFooter={canShowRowsTotal()}\r\n groupIncludeTotalFooter={canShowRowsGrandTotal()}\r\n pivotRowTotals={canShowColumnsGrandTotal() ? 'after' : undefined}\r\n pivotColumnGroupTotals={canShowColumnsTotal() ? 'after' : undefined}\r\n processSecondaryColGroupDef={processSecondaryColGroupDef}\r\n processSecondaryColDef={processSecondaryColDef}\r\n onCellClicked={onCellClicked}\r\n onGridReady={onGridReady}\r\n onFirstDataRendered={onFirstDataRendered}\r\n onColumnPivotChanged={onColumnPivotChanged}\r\n onColumnResized={onColumnResized}\r\n animateRows={false}\r\n suppressContextMenu={true}\r\n suppressMovableColumns={true}\r\n headerHeight={36}\r\n rowHeight={36}\r\n />\r\n </div>\r\n }\r\n </React.Fragment>\r\n );\r\n});\r\n\r\nexport default AgPivotGrid;\r\n","import React, { useMemo } from \"react\";\r\nimport { CustomChartProps } from \"./CustomChart\";\r\nimport { DataPointSelection } from \"../../../../types/SeriesMeasure\";\r\n\r\ndeclare var window: any;\r\n\r\ntype SelectedQueryItem = {\r\n UniqueCode: string;\r\n DisplayLabel: string;\r\n GroupKey?: string;\r\n};\r\n\r\nconst parseSelectedQueries = (widgetJson: string | null | undefined): SelectedQueryItem[] => {\r\n if (!widgetJson) {\r\n return [];\r\n }\r\n try {\r\n const parsed = JSON.parse(widgetJson);\r\n if (parsed && Array.isArray(parsed.SelectedQueries)) {\r\n return parsed.SelectedQueries;\r\n }\r\n } catch {\r\n //\r\n }\r\n return [];\r\n};\r\n\r\nconst ViewsChart = (props: { customChartProps: CustomChartProps }) => {\r\n const widget = props.customChartProps.widget;\r\n const objectTableName = (widget as any)?.ViewsWidgetObjectTableName as string | undefined;\r\n\r\n const entries = useMemo(() => parseSelectedQueries((widget as any)?.WidgetJson), [widget]);\r\n\r\n const handleClick = (uniqueCode: string) => {\r\n if (!objectTableName || !uniqueCode) {\r\n return;\r\n }\r\n const selection: DataPointSelection = {\r\n Widget: widget,\r\n ViewsNavigation: {\r\n ObjectTableName: objectTableName,\r\n QueryUniqueCode: uniqueCode,\r\n },\r\n };\r\n props.customChartProps.onSelectDataPoint(selection);\r\n };\r\n\r\n if (!entries.length) {\r\n return (\r\n <div className=\"dl-views-widget-empty\">\r\n <span className=\"dl-views-widget-empty-text\">No views configured</span>\r\n </div>\r\n );\r\n }\r\n\r\n return (\r\n <div className=\"dl-views-widget-list\">\r\n {entries.map((row) => (\r\n <div key={row.UniqueCode} className=\"dl-views-widget-row\">\r\n <button\r\n type=\"button\"\r\n className=\"dl-views-widget-link\"\r\n onClick={() => handleClick(row.UniqueCode)}\r\n >\r\n {row.DisplayLabel || row.UniqueCode}\r\n </button>\r\n </div>\r\n ))}\r\n </div>\r\n );\r\n};\r\n\r\nexport default ViewsChart;\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\nimport PivotTable from \"./PivotGrid\";\r\nimport AgPivotGrid from \"./AgPivotGrid\";\r\nimport ViewsChart from \"./ViewsChart\";\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 useAgGridPivot?: boolean;\r\n onSelectDataPoint: (dataPointSelection: DataPointSelection) => void;\r\n onShowError?: (errorMsg: string | null) => void;\r\n};\r\n\r\n\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 case \"pivot\": return props.useAgGridPivot\r\n ? <AgPivotGrid customChartProps={props} />\r\n : <PivotTable customChartProps={props} />;\r\n case \"views\": return <ViewsChart 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={`dl-custom-chart-container ${props.widget && props.widget?.TypeCode == 'table' ? 'dl-table-chart-container' : ''} ${props.widget && props.widget?.TypeCode == 'pivot' ? 'dl-pivot-chart-container' : ''} ${props.widget && props.widget?.TypeCode == 'views' ? 'dl-views-chart-container' : ''}`}>{project()}</div>\r\n </React.Fragment>\r\n );\r\n}\r\n\r\n\r\nexport default CustomChart;","import { FieldDataType } from \"../../../../Constant/FieldDataType\";\r\nimport { MeasureCode } from \"../../../../Constant/MeasureCode\";\r\nimport { getNumberInSystemLocalFormat, 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, seriesMeasure: SeriesMeasure, label: any, index: number , groupbyId : string | null = null, secGroupbyId : string | null = null): string {\r\n var padding = (widget.TypeCode == 'line' && index > 0) ? 'padding-top: 3px' : '';\r\n \r\n let customToolTip = `\r\n <div style=\"min-width: 108px;` + padding + `\">\r\n\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, seriesMeasure) + `</p>\r\n </div>\r\n\r\n <hr style=\"margin: 0;border-top: 1px solid #F0F0F0;\">\r\n\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(seriesMeasure) + `</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: #A4A4A4;\">` + getTooltipValue(value, seriesMeasure,widget) + `</p>\r\n ` + getPieDonutToolTipPercentage(widget,seriesMeasure,groupbyId,secGroupbyId) +\r\n ` </div> `;\r\n\r\n if(RenderStackedChartTotalsAndPercentages(widget,seriesMeasure)){\r\n\r\n customToolTip += \r\n `<div>\r\n\r\n <hr style=\"margin-top: 6px;border-top: 1px solid #F0F0F0;\">\r\n\r\n <div style=\"display: flex; flex-direction: column; gap: 6px; flex-d 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;\"> ` + getGroupValuePercentage(seriesMeasure,groupbyId,secGroupbyId,widget) + `</p>\r\n </div>\r\n\r\n <hr style=\"margin-top: 6px;border-top: 1px solid #F0F0F0;\">\r\n\r\n <div style=\"display: flex; flex-direction: column; gap: 6px; flex-d align-items: center;margin:0;margin-top: 6px;\">\r\n <p style=\"margin: 0;white-space: pre-line; font-family: 'Manrope';font-style: normal;font-weight: 500;font-size: 11px;line-height: 100%; color: #A4A4A4;\">` + getSumOfGroupValues(seriesMeasure,groupbyId,widget) + `</p>\r\n </div>\r\n\r\n </div>`\r\n } \r\n \r\n customToolTip += `</div>`;\r\n\r\n return customToolTip;\r\n}\r\n\r\nfunction RenderStackedChartTotalsAndPercentages(widget: ReactWidgetPM , seriesMeasures: SeriesMeasure){\r\n\r\n if(!widget || !seriesMeasures || !seriesMeasures.MeasureCode){\r\n return false;\r\n }\r\n\r\n return widget.IsStacked && (seriesMeasures.MeasureCode === MeasureCode.Count || seriesMeasures.MeasureCode === MeasureCode.Sum);\r\n}\r\n\r\nfunction getGroupValuePercentage(seriesMeasures: SeriesMeasure, groupbyId: string | null, secGroupbyId: string | null, widget: ReactWidgetPM) {\r\n\r\n if(!seriesMeasures){\r\n return;\r\n }\r\n\r\n let percentageValueInLocalFormat = getPercentageGroupValueAsNumber(seriesMeasures,groupbyId,secGroupbyId,widget);\r\n\r\n return `<span style=\"margin-right:6px;\">Percentage:</span>${percentageValueInLocalFormat}%`;\r\n}\r\n\r\nfunction getSumOfGroupValues(seriesMeasure: SeriesMeasure, groupbyId: string | null, widget: ReactWidgetPM) {\r\n \r\n if(!seriesMeasure){\r\n return \"\";\r\n }\r\n\r\n let decimalPlaces = widget?.DecimalPlaces || 0;\r\n\r\n let total = getSumOfGroupValuesAsNumber(seriesMeasure,groupbyId);\r\n\r\n return `<span style=\"margin-right:6px;\">Total:</span>${getNumberInSystemLocalFormat(total,decimalPlaces,decimalPlaces,true)}`;\r\n}\r\n\r\nfunction getPercentageGroupValueAsNumber(seriesMeasure: SeriesMeasure, groupbyId: string | null, secGroupbyId: string | null, widget: ReactWidgetPM) {\r\n \r\n if(!seriesMeasure){\r\n return;\r\n }\r\n\r\n let decimalPlaces = widget?.DecimalPlaces || 0;\r\n\r\n let total = getSumOfGroupValuesAsNumber(seriesMeasure,groupbyId);\r\n\r\n let value = seriesMeasure.Values.filter(v => v.GroupById === groupbyId && v.GroupByIdSec === secGroupbyId)[0]?.Value;\r\n\r\n let percentageValueInLocalFormat = \"0.00\";\r\n\r\n if(total !== 0 && value){\r\n\r\n percentageValueInLocalFormat = getNumberInSystemLocalFormat(((value/total) * 100),decimalPlaces,decimalPlaces,false);\r\n\r\n }\r\n\r\n return percentageValueInLocalFormat;\r\n}\r\n\r\nfunction getSumOfValuesAsNumber(seriesMeasure: SeriesMeasure) {\r\n \r\n if(!seriesMeasure){\r\n return 0;\r\n }\r\n\r\n let total = 0;\r\n\r\n seriesMeasure.Values.forEach(v => {\r\n\r\n total += v.Value;\r\n\r\n });\r\n\r\n return total;\r\n}\r\n\r\nfunction getSumOfGroupValuesAsNumber(seriesMeasure: SeriesMeasure, groupbyId: string | null) {\r\n \r\n if(!seriesMeasure){\r\n return 0;\r\n }\r\n\r\n let total = 0;\r\n\r\n seriesMeasure.Values.filter(v => v.GroupById === groupbyId).forEach(v => {\r\n\r\n total += v.Value;\r\n\r\n });\r\n\r\n return total;\r\n}\r\n\r\nfunction getPieDonutToolTipPercentage(widget: ReactWidgetPM, seriesMeasures: SeriesMeasure, groupbyId: string | null , secGroupbyId: string | null): string {\r\n if (widget.TypeCode != \"donut\" && widget.TypeCode != \"pie\") return \"\";\r\n\r\n if(!seriesMeasures){\r\n return \"\";\r\n }\r\n\r\n let percentageValueInLocalFormat = getDonutPiePercentageGroupValueAsNumber(seriesMeasures,groupbyId,secGroupbyId,widget);\r\n\r\n return `<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;\">(${percentageValueInLocalFormat})%</p>`;\r\n}\r\n\r\nfunction getDonutPiePercentageGroupValueAsNumber(seriesMeasure: SeriesMeasure, groupbyId: string | null, secGroupbyId: string | null, widget: ReactWidgetPM) {\r\n \r\n if(!seriesMeasure){\r\n return;\r\n }\r\n let decimalPlaces = widget?.DecimalPlaces || 0;\r\n\r\n\r\n let total = getSumOfValuesAsNumber(seriesMeasure);\r\n\r\n let value = seriesMeasure.Values.filter(v => v.GroupById === groupbyId && v.GroupByIdSec === secGroupbyId)[0]?.Value;\r\n\r\n let percentageValueInLocalFormat = \"0.00\";\r\n\r\n if(total !== 0 && value){\r\n\r\n percentageValueInLocalFormat = getNumberInSystemLocalFormat(((value/total) * 100),decimalPlaces,decimalPlaces,false);\r\n\r\n }\r\n\r\n return percentageValueInLocalFormat;\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\nfunction getTooltipValue(value: any, seriesMeasure: SeriesMeasure, widget: ReactWidgetPM): string | number {\r\n\r\n if(isNullOrUndefined(value)){\r\n return '$dataValue';\r\n }\r\n\r\n let decimalPlaces = widget?.DecimalPlaces || 0;\r\n\r\n if(FieldDataType.isPercentage(seriesMeasure?.MeasureFieldDataType)){\r\n\r\n return getNumberInSystemLocalFormat(value,decimalPlaces,decimalPlaces,true) + \"%\";\r\n\r\n }\r\n\r\n return getNumberInSystemLocalFormat(value,decimalPlaces,decimalPlaces,true);\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}\r\n\r\n\r\n","import { getLabelFormatByDateGroupType } from \"../../../../Utils/DateHelper\";\r\nimport { getTruncatedValue } from \"../../../../Utils/General\";\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 setSafeYAxisMaxValue(chartInfo, seriesMeasures, widget);\r\n\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 setSafeYAxisMaxValue(chartInfo, seriesMeasures, widget);\r\n\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\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 setSafeYAxisMaxValue(chartInfo: ChartInfo, seriesMeasures: SeriesMeasure[], widget: ReactWidgetPM): void {\r\n if (!isColumnOrBarChart(widget)) return;\r\n\r\n const maxMeasureValue = getMaxMeasureValue(seriesMeasures, widget);\r\n if (maxMeasureValue === null) return;\r\n\r\n // Keep a 20% headroom so outside value labels do not overlap the top canvas edge.\r\n const safeYAxisMaxValue = Math.max(1, Math.ceil(maxMeasureValue * 1.2));\r\n chartInfo.yAxisMaxValue = safeYAxisMaxValue.toString();\r\n}\r\n\r\nfunction getMaxMeasureValue(seriesMeasures: SeriesMeasure[], widget: ReactWidgetPM): number | null {\r\n if (!seriesMeasures || seriesMeasures.length === 0) return null;\r\n\r\n if (widget?.IsStacked) {\r\n const stackedTotalsByGroupId = new Map<any, number>();\r\n\r\n seriesMeasures.forEach((seriesMeasure) => {\r\n seriesMeasure?.Values?.forEach((valueItem) => {\r\n const numericValue = toNumericValue(valueItem?.Value);\r\n if (numericValue === null) return;\r\n\r\n const groupId = valueItem?.GroupById;\r\n const currentTotal = stackedTotalsByGroupId.get(groupId) || 0;\r\n stackedTotalsByGroupId.set(groupId, currentTotal + numericValue);\r\n });\r\n });\r\n\r\n let maxStackedTotal: number | null = null;\r\n stackedTotalsByGroupId.forEach((total) => {\r\n if (maxStackedTotal === null || total > maxStackedTotal) {\r\n maxStackedTotal = total;\r\n }\r\n });\r\n\r\n return maxStackedTotal;\r\n }\r\n\r\n let maxValue: number | null = null;\r\n\r\n seriesMeasures.forEach((seriesMeasure) => {\r\n seriesMeasure?.Values?.forEach((valueItem) => {\r\n const numericValue = toNumericValue(valueItem?.Value);\r\n if (numericValue === null) return;\r\n\r\n if (maxValue === null || numericValue > maxValue) {\r\n maxValue = numericValue;\r\n }\r\n });\r\n });\r\n\r\n return maxValue;\r\n}\r\n\r\nfunction toNumericValue(value: any): number | null {\r\n if (value === null || value === undefined || value === \"\") return null;\r\n\r\n const numericValue = typeof value === \"number\" ? value : Number(value);\r\n if (!Number.isFinite(numericValue)) return null;\r\n\r\n return numericValue;\r\n}\r\n\r\nfunction isColumnOrBarChart(widget: ReactWidgetPM): boolean {\r\n return widget?.TypeCode === \"column\" || widget?.TypeCode === \"bar\";\r\n}\r\n\r\nfunction buildDataSource(values: SeriesMeasure[], widget: ReactWidgetPM) {\r\n\r\n let data: any[] = [];\r\n\r\n if (!values || !values[0]) return data;\r\n\r\n var series = values[0];\r\n\r\n data = series.Values.map((e) => {\r\n let item = {\r\n value: getTruncatedValue(e.Value,widget),\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, e.Value, series, e.Label, 0,e.GroupById,e.GroupByIdSec),\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 seriesMeasures.forEach(seriesMeasure => {\r\n\r\n \r\n let datas = seriesMeasure.Values.map((e, index) => {\r\n return {\r\n value: getTruncatedValue(e.Value,widget),\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\r\n const uniqueGroups: any[] = getUniqueGroupOrderdList(series);\r\n\r\n let data: any[] = [];\r\n uniqueGroups.forEach(group => {\r\n let value = series.Values.find(x => x.GroupById == group.code && x.GroupByIdSec == secGroup.code)?.Value;\r\n data.push({\r\n value: getTruncatedValue(value,widget),\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, value, series, group.label + \" - \" + secGroup.label, 0 ,group.code , secGroup.code),\r\n })\r\n });\r\n\r\n return data;\r\n}\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, getTruncatedValue, 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, isPreviewModeActive?: boolean) => {\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 = widget.ShowValue ? \"1\" : '0';\r\n chartInfo.valueFontSize = widget.ShowValue ? widget.ValueFontSize : null;\r\n chartInfo.valueFontColor = widget.ShowValue ? widget.ValueFontColor : null;\r\n chartInfo.autoScale = \"1\";\r\n chartInfo.chartTopMargin = \"0\";\r\n chartInfo.chartBottomMargin = \"0\";\r\n chartInfo.chartLeftMargin = \"0\";\r\n chartInfo.chartRightMargin = \"0\";\r\n\r\n let value = !isNullOrUndefined(data) && !isNullOrUndefined(data?.Value) ? data?.Value : 0;\r\n\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\": getTruncatedValue(value,widget),\r\n \"tooltext\": !isPreviewModeActive ? \"Click for more details\" : null\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\r\n let chart = {} as ChartInfo;\r\n \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 chart.pYAxisNameFont = defautFont;\r\n chart.pYAxisNameFontSize = defautFontSize;\r\n chart.pYAxisNameFontColor = defautColor;\r\n chart.xAxisNameFont = defautFont;\r\n chart.xAxisNameFontSize = defautFontSize;\r\n chart.xAxisNameFontColor = defautColor;\r\n chart.yAxisNameFont = defautFont;\r\n chart.yAxisNameFontSize = defautFontSize;\r\n chart.yAxisNameFontColor = defautColor;\r\n chart.drawCrossLine = \"0\";\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(isColumnOrBarChart(widget)) {\r\n chart.canvasTopPadding = \"40\";\r\n }\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 = \"15\"\r\n }\r\n\r\n if(isValuePositionInside && isPieOrDonutChart(widget)) {\r\n chart.minAngleForValue = \"27\"\r\n }\r\n\r\n chart.formatNumber = \"1\";\r\n\r\n let _numberSeparatorSettings = getGlobalNumberFormatting();\r\n chart.thousandSeparator = _numberSeparatorSettings.thousandsSeparator;\r\n chart.decimalSeparator = _numberSeparatorSettings.decimalSeparator;\r\n\r\n chart.numberSuffix = isFirstMeasureTypePercentage(widget) ? \"%\" : null;\r\n\r\n if(widget.ShowMeasureUnit && widget.MeasureUnit1){\r\n\r\n chart.numberSuffix = (chart.numberSuffix) ? ` ${widget.MeasureUnit1} ${chart.numberSuffix}` : ` ${widget.MeasureUnit1}`;\r\n }\r\n\r\n if(widget.ShowMeasureUnit && widget.MeasureUnit2){\r\n\r\n chart.sNumberSuffix = ` ${widget.MeasureUnit2}`; // Suffix for the secondary Y-axis\r\n }\r\n\r\n if(isDecimalPlacesEnabled(widget)){\r\n\r\n if(widget.DecimalPlaces && widget.DecimalPlaces > 0){\r\n\r\n chart.forceDecimals = \"1\";\r\n chart.decimals = `${widget.DecimalPlaces}`;\r\n\r\n }else{\r\n\r\n chart.forceDecimals = \"0\";\r\n chart.decimals = \"0\";\r\n }\r\n }\r\n\r\n\r\n if(isWidgetUsedAbbreviation(widget)){\r\n\r\n chart.formatNumberScale= \"1\";\r\n\r\n }else{\r\n chart.formatNumberScale= \"0\";\r\n }\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 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\r\n if(chartInfo.sNumberSuffix){\r\n\r\n if(isSecondMeasureTypePercentage(widget)){\r\n\r\n chartInfo.sNumberSuffix = `${chartInfo.sNumberSuffix} % `;\r\n\r\n }\r\n \r\n }else{\r\n\r\n chartInfo.sNumberSuffix = isSecondMeasureTypePercentage(widget) ? \"%\" : null;\r\n\r\n }\r\n\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, '&nbsp;&nbsp;');\r\n\r\n var neededSpaces = Math.ceil((maxLenght - textLenght) / 2);\r\n var space = '&nbsp;'\r\n text = space.repeat(neededSpaces) + text + space.repeat(neededSpaces);\r\n return text.replace(/\\s+/g, '&nbsp;&nbsp;');\r\n}\r\n\r\nfunction isDecimalPlacesEnabled(widget: ReactWidgetPM): boolean | null {\r\n \r\n if(widget.TypeCode == \"pivot\"){\r\n return false;\r\n }\r\n\r\n return true;\r\n}\r\n\r\n\r\nfunction isWidgetUsedAbbreviation(widget: ReactWidgetPM) {\r\n \r\n if(!widget || widget.TypeCode == 'kpi' || widget.TypeCode == 'pivot'){\r\n return false;\r\n }\r\n\r\n if(widget.UseNumberAbbreviation){\r\n\r\n return true;\r\n }\r\n\r\n return false;\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 yAxisMaxValue: 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 valueFontSize: string | null;\r\n valueFontColor: string | null;\r\n autoScale: string | null;\r\n formatNumber: string | null;\r\n forceDecimals: string | null;\r\n decimals: string | null; \r\n\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 { isNullOrUndefined, isNullOrUndefinedOrEmpty } from \"../../../../Utils/General\";\r\nimport { WidgetLoadLogger } from \"../../../../Utils/WidgetLoadLogger\";\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 onShowError: (errorMsg: string | null) => void;\r\n isPreviewModeActive?: boolean;\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 isTargetWidget = (postWidget: ReactWidgetPM)=>{\r\n return postWidget && (postWidget.TypeCode == 'column' || postWidget.TypeCode == 'bar' || postWidget.TypeCode == 'line')\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 let isTargetUsed = isTargetWidget(postWidget) && postWidget.WidgetMeasures && postWidget.WidgetMeasures[1] && postWidget.WidgetMeasures[1].MeasureCode == 'Target';\r\n if(isTargetUsed){\r\n const widgetLoadLogger = new WidgetLoadLogger(postWidget, props.isPreviewModeActive, \"PostGetTargetDataAnalytic\");\r\n dashboardAnalyticsService.getTargetAnalyticsData(postWidget as ReactWidgetPM, signal).then((result: any) => {\r\n if(result?.data && !isNullOrUndefined(result?.data?.SeriesMeasures)){\r\n handleData(result?.data?.SeriesMeasures);\r\n chartData.current = result?.data?.SeriesMeasures; \r\n }\r\n\r\n if(result?.data && !isNullOrUndefined(result?.data?.Errors) && result?.data?.Errors.length > 0){\r\n showTargetUsageTooltipMessageError(result?.data?.Errors[0]);\r\n } else {\r\n showTargetUsageTooltipMessageError(null);\r\n }\r\n\r\n setDataLoaded(true);\r\n widgetLoadLogger.log(result);\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 }else{\r\n const widgetLoadLogger = new WidgetLoadLogger(postWidget, props.isPreviewModeActive, \"PostGetDataAnalytic\");\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 widgetLoadLogger.log(result);\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\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 showTargetUsageTooltipMessageError = (errorMsg: string | null = \"\") => {\r\n props.onShowError(errorMsg);\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\n\r\n\r\n return (\r\n <div className={'db-fc-parent-container'} ref={fusionRef}>\r\n <div className={'db-fc-container' + (dataLoaded && error ? \" db-fc-container-error\" : \"\")} key={fusionKey} ref={ref} id={chartContainerId}>\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 {dataLoaded && !error &&\r\n <ReactFC\r\n {...args}\r\n fcEvent-dataplotClick={dataplotClick}\r\n fcEvent-loaded={loaded}\r\n onRender={renderComplete}\r\n />\r\n }\r\n {dataLoaded && 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 </div>\r\n }\r\n </div>\r\n </div>\r\n )\r\n\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\nimport { WidgetLoadLogger } from \"../../../../Utils/WidgetLoadLogger\";\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 isPreviewModeActive?: boolean;\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 const widgetLoadLogger = new WidgetLoadLogger(postWidget, props.isPreviewModeActive, \"PostGetGaugeData\");\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 widgetLoadLogger.log(result);\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!, props.isPreviewModeActive)\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 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 renderComplete = (eventObj) => {\r\n // Access the chart's container\r\n const chartRef = eventObj.sender;\r\n const chartContainer = FusionCharts.getObjectReference(chartRef.id);\r\n if (!chartContainer) {\r\n console.error('Chart container is undefined');\r\n return;\r\n }\r\n const svgContainer = chartContainer.querySelector('svg');\r\n if (!svgContainer) {\r\n console.error('SVG Container is undefined');\r\n return;\r\n }\r\n\r\n const textElements = svgContainer.querySelectorAll('text');\r\n if (textElements.length > 0) {\r\n\r\n const lastTextElement = textElements[textElements.length - 1];\r\n\r\n if (!props.isPreviewModeActive) {\r\n\r\n lastTextElement.style.cursor = 'pointer';\r\n lastTextElement.style.transition = 'fill 0.2s, text-decoration 0.2s';\r\n\r\n lastTextElement.addEventListener('mouseenter', function () {\r\n lastTextElement.style.fill = '#007bff';\r\n lastTextElement.style.textDecoration = 'underline';\r\n });\r\n\r\n lastTextElement.addEventListener('mouseleave', function () {\r\n lastTextElement.style.fill = '';\r\n lastTextElement.style.textDecoration = 'none';\r\n });\r\n }\r\n\r\n lastTextElement.addEventListener('click', function () {\r\n\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.onSelectDataPoint({\r\n MeasureFieldId: measureFieldId,\r\n Widget: widget.current,\r\n MeasureCode: currentWidgetMeasure!.MeasureCode,\r\n Formula: currentWidgetMeasure!.Formula,\r\n });\r\n });\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-guage'} key={fusionKey} id={chartContainerId}>\r\n <ReactFC\r\n {...args}\r\n fcEvent-dataplotClick={dataplotClick}\r\n fcEvent-renderComplete={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, 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 { ReactComponent as TargetWarningIcon } from \"../../assets/images/red-circle-warning.svg\"\r\nimport Popup from 'reactjs-popup';\r\nimport { PopupActions } from 'reactjs-popup/dist/types';\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 duplicateBtnClicked?(id: any): any;\r\n copyToClipboardBtnClicked?(key: any, widget: ReactWidgetPM): 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 useAgGridPivot?: 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 [showHeaderErrorMessages, setShowHeaderErrorMessages] = useState(false);\r\n const [headerErrorMessages, setHeaderErrorMessages] = useState(\"\");\r\n const [showCopiedNotification, setShowCopiedNotification] = useState(false);\r\n const copyPopupRef = useRef<PopupActions>(null);\r\n const copiedNotificationTimer = useRef<any>(null);\r\n\r\n\r\n const editWidget = () => {\r\n props.editBtnClicked(widget.current)\r\n };\r\n\r\n const duplicateWidget = () => {\r\n if(props && props.duplicateBtnClicked){\r\n props.duplicateBtnClicked(widget.current?.key)\r\n } else if(props && props.copyBtnClicked){\r\n props.copyBtnClicked(widget.current?.key)\r\n }\r\n };\r\n\r\n const copyWidgetToClipboard = () => {\r\n if(props && props.copyToClipboardBtnClicked && widget.current){\r\n props.copyToClipboardBtnClicked(widget.current?.key, widget.current);\r\n setShowCopiedNotification(true);\r\n if (copiedNotificationTimer.current) clearTimeout(copiedNotificationTimer.current);\r\n copiedNotificationTimer.current = setTimeout(() => {\r\n setShowCopiedNotification(false);\r\n }, 700);\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 return () => {\r\n if (copiedNotificationTimer.current) clearTimeout(copiedNotificationTimer.current);\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\") return <CustomChart isInEditMode={props.isInEditMode} isPreviewModeActive={props.isPreviewModeActive} useAgGridPivot={props.useAgGridPivot} dataBinding={props.dataBinding} widget={widget.current} widgetRef={props.widgetRef} onSelectDataPoint={props.onSelectDataPoint} onShowError={(errorMsg) => showErrorMsg(errorMsg)} />;\r\n if (widget.current?.TypeCode == \"table\" || widget.current?.TypeCode == \"pivot\" || widget.current?.TypeCode == \"views\") return <CustomChart isInEditMode={props.isInEditMode} isPreviewModeActive={props.isPreviewModeActive} useAgGridPivot={props.useAgGridPivot} 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} isPreviewModeActive={props.isPreviewModeActive} />\r\n return <FusionChart ref={fusionChartRef} dataBinding={props.dataBinding} widget={widget.current} widgetRef={props.widgetRef} onSelectDataPoint={props.onSelectDataPoint} onShowError={(errorMsg) => showErrorMsg(errorMsg)} isPreviewModeActive={props.isPreviewModeActive} />\r\n }\r\n\r\n \r\n const showErrorMsg = (msg: string | null) => {\r\n if(msg && msg.length > 0){\r\n setHeaderErrorMessages(msg || \"\");\r\n setShowHeaderErrorMessages(true); \r\n } else {\r\n setHeaderErrorMessages(\"\");\r\n setShowHeaderErrorMessages(false); \r\n }\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 isPivotWidget = ()=> {\r\n return widget && widget.current && widget.current.TypeCode == 'pivot';\r\n }\r\n\r\n const isTableOrPivotWidget = ()=> {\r\n return widget && widget.current && (widget.current.TypeCode == 'table' || widget.current.TypeCode == 'pivot');\r\n }\r\n\r\n const getwidgetTitlesContainer = ()=> {\r\n return isTableOrPivotWidget() ? \"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 ${isPivotWidget() ? \"min-width-105\" : \"\"} ${isTitleAligmentRight() ? \"padding-left-12\" : \"\"}`}>\r\n <span style={{visibility : isTableWidget() ? \"visible\" : \"hidden\"}}>{isTableWidget() ? \"Showing the first 100 rows\" : \"\"}</span>\r\n {\r\n !props.isInEditMode && !props.isPreviewModeActive && isTableWidget() &&\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 ${isPivotWidget() ? \"pivot-header\" : \"\"}`}>\r\n <div className={`header-contents ${isTableWidget() ? \"border-bottom-light-white\" : \"\"}`}>\r\n {\r\n isTitleAligmentRight() && isTableOrPivotWidget() && tableHintMessage()\r\n }\r\n\r\n <div style={{ cursor: props.isInEditMode ? \"move\" : \"default\",\r\n justifyContent: isTableOrPivotWidget() ? 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: '#19395C'}}\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 isTableOrPivotWidget() && 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() && isTableOrPivotWidget() ? '5%' : undefined,\r\n }}>\r\n {widget.current?.Subtitle}\r\n </div>\r\n </div>\r\n \r\n {\r\n !isTitleAligmentRight() && isTableOrPivotWidget() && 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 <div> <EditWidgetIcon className=\"widget-card-edit-icon\" onClick={() => editWidget()} /> </div>\r\n <Popup\r\n ref={copyPopupRef}\r\n className=\"widget-copy-dropdown-container\"\r\n trigger={\r\n <div>\r\n <CopyWidgetIcon className=\"widget-card-copy-icon\" />\r\n </div>\r\n }\r\n position={['bottom left', 'bottom center']}\r\n closeOnDocumentClick\r\n closeOnEscape\r\n arrow={false}\r\n offsetY={2}\r\n >\r\n <div className=\"widget-copy-dropdown-menu\">\r\n <div className=\"widget-copy-dropdown-item\" onClick={() => { copyPopupRef.current?.close(); duplicateWidget(); }}>Duplicate</div>\r\n <div className=\"widget-copy-dropdown-item\" onClick={() => { copyPopupRef.current?.close(); copyWidgetToClipboard(); }}>Copy</div>\r\n </div>\r\n </Popup>\r\n <div> <DeleteWidgetIcon onClick={() => props.deleteBtnClicked(props.widget?.key)} /> </div>\r\n </div>\r\n }\r\n\r\n {showCopiedNotification &&\r\n <div className=\"widget-copied-notification\">\r\n <span className=\"widget-copied-notification-check\">&#10003;</span>\r\n <span className=\"widget-copied-notification-title\">{widget.current?.Title}</span>\r\n <span className=\"widget-copied-notification-text\">widget copied</span>\r\n </div>\r\n }\r\n\r\n {!props.isInEditMode && showHeaderErrorMessages &&\r\n\r\n <div\r\n className=\"header-message-error\">\r\n <Popup\r\n className=\"header-message-error-tooltip-container\"\r\n trigger={\r\n <div>\r\n <TargetWarningIcon />\r\n </div>\r\n }\r\n position={['top center']}\r\n arrowStyle={{color: '#19395C'}}\r\n offsetY={-2}\r\n on={['hover', 'focus']}\r\n >\r\n <span className=\"header-message-error-tooltip-text\">{headerErrorMessages}</span>\r\n </Popup>\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 onCopyWidgetToClipboard?:(key: string, widget: ReactWidgetPM) => void,\r\n dataBinding: DashboardDataBinding,\r\n onSelectDataPoint: (dataPointSelection: DataPointSelection) => void,\r\n useAgGridPivot?: boolean;\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 document.dispatchEvent(new CustomEvent(\"resizeStop\",{}));\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 function copyWidgetToClipboard(key: string, widget: ReactWidgetPM) {\r\n if(props && props.onCopyWidgetToClipboard){\r\n props.onCopyWidgetToClipboard(key, widget);\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 useAgGridPivot={props.useAgGridPivot}\r\n duplicateBtnClicked={copyWidget}\r\n copyToClipboardBtnClicked={copyWidgetToClipboard}\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\nimport 'devextreme/dist/css/dx.light.css';\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 isMasterNumberClickable?: any;\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 onCopyWidgetToClipboard?:(key: string, widget: ReactWidgetPM) => void,\r\n openDeleteWidgetConfirmWindow: (deleteProps: DeleteWidgetProps) => void,\r\n onSelectDataPoint: (dataPointSelection: DataPointSelection) => void;\r\n useAgGridPivot?: boolean;\r\n agGridLicenseKey?: string;\r\n};\r\nconst Dashboard = (props: DashboardProps) => {\r\n Session.UseAgGridPivot = !!props.useAgGridPivot;\r\n Session.AgGridLicenseKey = props.agGridLicenseKey;\r\n\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 Session.isMasterNumberClickable = props?.isMasterNumberClickable;\r\n Session.UseAgGridPivot = !!props.useAgGridPivot;\r\n Session.AgGridLicenseKey = props.agGridLicenseKey;\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 Session.UseAgGridPivot = !!props.useAgGridPivot;\r\n Session.AgGridLicenseKey = props.agGridLicenseKey;\r\n }, [props.useAgGridPivot, props.agGridLicenseKey])\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 copyWidgetToClipboard = (key: string, widget: ReactWidgetPM) => {\r\n if(props && props.onCopyWidgetToClipboard){\r\n props.onCopyWidgetToClipboard(key, widget);\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 useAgGridPivot={props.useAgGridPivot}\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 useAgGridPivot={props.useAgGridPivot}\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 onCopyWidgetToClipboard={copyWidgetToClipboard}\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","requestHeaders","isDashboardClickHouseActive","signal","Token","window","IsDashboardClickHouseActive","urlparameters","mykeys","addtionalFiltersValues","i","propName","propValue","ignoreFilter","concat","encodeURIComponent","JSON","stringify","DashboardAnalyticsService","_ApiServices","getData","widget","controller","getTargetAnalyticsData","getKpiData","getTableData","getGaugeData","getObjectTableNameByWidgetEntityId","entityId","getPivotData","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","_fromDate","_toDate","FieldDataType","isNumericType","fieldDataType","Decimal","Double","UnsDecimal","SigDouble","Integer","UnsInteger","Percentage","isInteger","isPercentage","isLookUpType","LookUp","isPickListType","PickList","PickList2","isTextOrNTextType","Text","nText","isTextType","isNTextType","isBooleanType","Boolean","isDateOrDateTimeType","Date","DateTime","MeasureCode","isNullOrUndefined","val","isNullOrUndefinedOrEmpty","getGlobalNumberFormatting","numberFormatCode","NumberFormatCode","numberSeparatorSettings","thousandsSeparator","decimalSeparator","isValueInteger","measureCode","measureFieldType","Count","getTruncatedValue","value","isNaN","truncateDecimals","DecimalPlaces","getNumberInSystemLocalFormat","decimalDigitsCount","minimumFractionDigits","isValueTruncated","applyAbbreviation","decimalParts","toString","maxFractionDigits","_numberSeparatorSettings","abbreviationSymbol","Math","abs","_val","toLocaleString","maximumFractionDigits","_formattedValue","replaceAll","numberOfDecimalParts","Number","isFinite","numStr","toLocaleLowerCase","integerPart","decimalPart","truncated","slice","resultStr","parseFloat","ConvertStringToPascalCaseHelper","stringValue","splittedWords","filter","f","map","t","toUpperCase","toLowerCase","join","WidgetLoadLogService","create","widgetLoadLog","WidgetLoadLogger","isPreviewMode","requestName","StartTime","getTime","Widget","RequestName","log","loadDataResponse","canCreateLog","totalExecutionTime","widgetLoadLogService","Tenant","WidgetId","Id","DashboardId","LoadTime","getLoadTime","TotalExecutionTime","IsClickHouse","isClickHouse","WidgetType","TypeCode","IsDrillDown","then","_response","_error","loadTimeHeaderKey","loadTimeHeader","isNumber","clickHouseHeaderKey","clickHouseHeader","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","emptyData","Value","dashboardAnalyticsService","postWidget","onChange","widgetLoadLogger","handleResponseErrors","console","response","ErrorMessage","message","onShowError","Errors","drillDownToKPIValues","isDrillDownToMainValues","measureFieldId","currentWidgetMeasure","WidgetMeasures","MeasureFieldId","onSelectDataPoint","Formula","GroupById","IsKPISecondaryValues","isComparisonIndicatorChecked","_kpiSettings","_kpiSettingsAsObj","ComparisonIndicator","getRatioComponent","CompareWithPrevious","React","className","getArrowComponent","style","fontSize","getKPIFormattingPropertyValue","Ratio","ComparisonValue","marginTop","Increase","getPreviousValueComponent","ComparisonLabel","formatedValue","comparisonValue","onClick","title","color","isPercentageMeasureField","ComparisonAbbreviationSymbol","ShowMeasureUnit","Unit","MeasureFieldDataType","getValueData","getValueComponent","AbbreviationSymbol","getPeriodLabelByPeriodCode","getLabelFromKPISettings","IsGlobalFilterKPIComparison","GlobalFilterDateTimeValueCode","getKPIFormattingData","KPIFormatSettings","propertyName","unit","kpiFormattingData","getLabel","Label","getIsKPIHasSmallestHeight","widgetRef","Layout","h","isKPIHasSmallestHeight","ProgressSpinner","width","height","strokeWidth","animationDuration","Alighnment","RedWarningIcon","TableChart","isTableLoading","setIsTableLoading","setWidget","tableData","setTableData","tableColumns","setTableColumns","sortField","setSortField","sortOrder","setSortOrder","isDefaultSortOptionsUsed","widgetRefData","objectTableName","setObjectTableName","getObjectTableName","ReOrderColumns","Columns","updatedWidgetColumns","updatedWidgetColumnsData","_updatedTableColumns","forEach","c","columns","isCalculatedColumn","ColumnVariableType","dataTypeCode","ColumnVariableDataType","dateDisplayMode","DateTimeDisplayMode","column","find","IsCalculatedColumn","DataTypeCode","EntityId","res","ObjectTableName","PageIndex","PageSize","fillTableData","getBooleanStringValue","_value","charAt","getDateTimeValue","datePart","tableRecords","Fields","setDefaultSortOptions","Result","item","_tableRow","field","FieldCode","valueType","tableCols","_widget","_sortFieldCode","getSortFieldCodeBySortFieldId","DefaultSortBy","_sortDirection","DefaultSortDirection","sortFieldId","col","getSortFieldIdBySortFieldCode","sortFieldCode","sortTableData","sortedField","canSort","_sortOrder","ScreenSortBy","ScreenSortDirection","ScreenSortByType","isInEditMode","getTableFormattingData","TableFormatSettings","getTableFormattingPropertyValue","tableFormattingData","getTableConditionalRulesData","TableConditionalRules","isValueEmpty","IsValidRule","rule","operator","RuleOperator","Code","ruleValue1","RuleValue1","ruleValue2","RuleValue2","stripTime","getFullYear","getMonth","getDate","parseLocalDate","dateStr","year","month","day","parseCustomDateLocalDate","isDateValidRule","actualValue","getCellPropertyByRule","cellValue","defaultValue","columnType","columnData","el","FieldId","FieldType","FieldRules","firstValidRule","getCellFloatAlignment","isRowTenantMatched","rowData","isClickableCell","fieldCode","IsShipmentMasterFieldClickable","isMasterNumberClickable","tableCellClicked","TableRowEntityId","RowData","getCellValue","columnValue","decimalPlaces","isAbbreviationApplied","UseNumberAbbreviation","cellTemplateBody","dateTimeDisplayMode","fontColor","fontSizeWithoutUnit","fontSizeWitUnit","display","backgroundColor","headerTemplate","showMeasureUnit","MeasureUnit","DisplayName","DataTable","loading","resizableColumns","columnResizeMode","responsiveLayout","index","Column","header","body","PivotTable","forwardRef","comRef","tabledata","pivotGridRef","PivotGridDataSource","store","fields","dataSource","setDataSource","getPivotTableData","document","addEventListener","handleResize","removeEventListener","instance","element","classList","setTimeout","remove","repaint","setPivotDataSourceFields","err","customizeCells","useCallback","e","cell","rowPath","columnPath","cellElement","children","padding","borderRadius","onCellClick","area","pivotFields","columnFields","fieldValue","fieldData","rowFields","r","PivotFields","getColumnNameByColumnId","fieldName","dataField","datafieldValue","PivotData","SortRowAndColumnHeaders","a","b","DateCode","aValue","bValue","aText","text","bText","PivoFields","PivotMeasures","pivotRowsAndColumnsFields","PivotCode","caption","name","PivotName","allowSorting","allowFiltering","sortingMethod","expanded","wordWrapEnabled","customizeText","cellInfo","pivotDataCellsFields","measure","PivotMeasureCode","dataType","summaryType","calculateCustomSummary","options","summaryProcess","firstPart","secondPart","substr","_finalVal","totalValue","minimumFraction","AllfieldsData","isRowsEmptyAndColumnsNotEmpty","pivotRows","PivotRows","pivotColumns","PivotColumns","canShowRowsGrandTotal","pivotTotalsSettings","PivotTotalsSettings","ShowRowsGrandTotal","isRowsNotEmptyAndColumnsEmpty","canShowColumnsGrandTotal","ShowColumnsGrandTotal","canShowRowsTotal","ShowRowsTotal","canShowColumnsTotal","ShowColumnsTotal","Fragment","PivotGrid","id","ref","allowExpandAll","showBorders","showRowGrandTotals","showColumnGrandTotals","showRowTotals","showColumnTotals","showTotalsPrior","FieldPanel","showColumnFields","showDataFields","showFilterFields","showRowFields","texts","rowFieldArea","allowFieldDragging","visible","FieldChooser","enabled","Scrolling","mode","isRowPivotField","truncateToTwoDecimals","numericValue","safeValue","isPivotMeasureValueEmpty","logitudeSumAgg","params","values","total","hasValue","formatPivotMeasureValue","getPivotGroupFooterLabel","node","rawValue","lookupDisplayName","footer","level","displayName","compareDimensionValues","dateCode","aNumber","bNumber","aCompare","bCompare","aDisplay","bDisplay","getPivotDisplayName","pivotData","dataFieldValue","isPivotRowGrandTotalColumnDef","colDef","colId","String","isPivotRowGrandTotalGroupDef","colGroupDef","groupId","every","child","resolvePivotGroupHeaderName","pivotKeys","getPivotValueColumnId","pivotValueColumn","getId","getColId","resolveMeasureFromPivotValueColumn","measures","valueColumnId","measureByValueColumn","sortedMeasures","sort","left","right","endsWith","resolvePivotLeafHeaderName","measureCount","resolveMeasureForSecondaryColDef","getColumnGroupAtHeaderLevel","targetLevel","getParent","groupPointer","providedColumnGroup","getProvidedColumnGroup","originalGroupLevel","getLevel","groupPointerLevel","getPaddingLevel","escapeColumnIdSelector","columnId","CSS","escape","findHeaderGroupCellByColumnGroup","headerContainer","groupRows","targetGroupLevel","columnGroup","getUniqueId","groupRowIndex","min","max","targetGroupRow","querySelector","applyPivotRowGrandTotalGroupHeaderLabel","gridRootElement","columnApi","columnPivotFieldCount","clearPivotRowGrandTotalGroupHeaderMarkup","displayedColumns","getAllDisplayedColumns","rowGrandTotalColumns","centerHeaderContainer","Array","querySelectorAll","rowGrandTotalGroupCells","findRowGrandTotalGroupHeaderCells","applyGrandTotalLabelToGroupHeaderCells","labelElement","textContent","textAlign","cellsByColumnGroup","matchingCell","paddingCells","trailingPaddingCells","firstCell","firstLabel","combinedWidth","reduce","totalWidth","offsetWidth","siblingLabel","applyPivotRowGrandTotalHeader","headerName","getMeasureCaption","headerValueGetter","collectPivotRowPath","startNode","path","unshift","parent","buildPivotDrillDownPivotFields","apiFields","columnKeys","pathItem","parseJsonArray","json","parsed","parsePivotTotalsSettings","ROW_GROUP_COLUMN_MIN_WIDTH","applyAgGridLicense","AgGridLicenseKey","LicenseManager","setLicenseKey","AgPivotGrid","_comRef","setRowData","columnDefs","setColumnDefs","setMeasureCount","gridApiRef","columnApiRef","gridContainerRef","pivotFieldsRef","pivotMeasuresRef","resetRowHeights","widgetPm","buildGridFromPivotResponse","lookupDisplayNameByFieldCode","applyPivotDataCellFormatting","sortable","cellClass","type","apiMeasures","defs","createRowGroupColDef","createPivotColDef","createMeasureColDef","rowGroup","rowGroupIndex","enableRowGroup","hide","wrapText","autoHeight","comparator","valueFormatter","pivot","pivotIndex","enablePivot","pivotComparator","aggFunc","enableValue","settings","isSingleMeasurePivot","processSecondaryColGroupDef","processSecondaryColDef","colDefAny","onCellClicked","event","MeasureFieldType","defaultColDef","useMemo","resizable","suppressMenu","autoGroupColumnDef","minWidth","showRowGroup","cellRendererParams","suppressCount","footerValueGetter","aggFuncs","logitudeSum","scheduleRowGrandTotalHeaderLabel","applyLabel","requestAnimationFrame","onGridReady","onFirstDataRendered","autoGroupColumnIds","autoSizeColumns","onColumnPivotChanged","onColumnResized","gridWrapperClassName","AgGridReact","pivotMode","groupDisplayType","groupDefaultExpanded","suppressAggFuncInHeader","removePivotHeaderRowWhenSingleValueColumn","groupIncludeFooter","groupIncludeTotalFooter","pivotRowTotals","pivotColumnGroupTotals","animateRows","suppressContextMenu","suppressMovableColumns","headerHeight","rowHeight","parseSelectedQueries","widgetJson","isArray","SelectedQueries","ViewsChart","ViewsWidgetObjectTableName","entries","WidgetJson","handleClick","uniqueCode","selection","ViewsNavigation","QueryUniqueCode","row","UniqueCode","DisplayLabel","CustomChart","project","useAgGridPivot","buildToolTip","seriesMeasure","groupbyId","secGroupbyId","customToolTip","getTooltiplabel","getMeasureType","getTooltipValue","getPieDonutToolTipPercentage","RenderStackedChartTotalsAndPercentages","getGroupValuePercentage","getSumOfGroupValues","seriesMeasures","IsStacked","Sum","percentageValueInLocalFormat","getPercentageGroupValueAsNumber","getSumOfGroupValuesAsNumber","Values","v","GroupByIdSec","getSumOfValuesAsNumber","getDonutPiePercentageGroupValueAsNumber","Name","formula","months","quarters","getCategoriesBasedDataSource","chartInfo","seriesMeasuresIsEmpty","handelNullLabels","setSafeYAxisMaxValue","chart","categories","buildCategories","dataset","buildDataSet","getStackedDataSource","buildStackedCategories","buildStackedDataSet","getSimpleDataSource","buildDataSource","isColumnOrBarChart","maxMeasureValue","getMaxMeasureValue","safeYAxisMaxValue","ceil","yAxisMaxValue","stackedTotalsByGroupId","valueItem","toNumericValue","currentTotal","set","maxStackedTotal","maxValue","series","tooltext","dataSet","datas","seriesname","anchorBgColor","anchorBorderColor","anchorBorderThickness","anchorHoverColor","parentyaxis","PlotasLineChart","PlotonSecondAxis","renderAs","uniqueGroups","x","LabelSec","group","seriesName","buildStackedGroupData","emptylabels","filledLabels","sortDataSet","s1","s2","aa","bb","secGroup","getUniqueGroupOrderdList","category","defautFontSize","defautFont","defautColor","BuildFusionChartObject","SecondaryGroupById","getBarObject","getStackedBarObject","getLineObject","getClusteredLineObject","getPieObject","getDonutObject","getColumnObject","getClusteredColumnObject","getWidgetRanges","gaugeRanges","GaugeRanges","minValue","getGaugeObject","fusionObject","getDefaultChartobject","getDefaultChartInfo","manageResize","valueBelowPivot","showValue","ShowValue","valueFontSize","ValueFontSize","valueFontColor","ValueFontColor","autoScale","chartTopMargin","chartBottomMargin","chartLeftMargin","chartRightMargin","isGroupByFieldDateTime","GroupByFieldDataType","scrollPosition","scrollPadding","flatScrollBars","showPercentValues","ShowValueAsNumber","showLegend","ShowLegend","setLineDash","legendPosition","getWidgetLegendPosition","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","valuePosition","ValuePosition","isValuePositionInside","placeValuesInside","minPlotHeightForValue","isPieOrDonutChart","minAngleForValue","formatNumber","thousandSeparator","numberSuffix","MeasureUnit1","MeasureUnit2","sNumberSuffix","isDecimalPlacesEnabled","forceDecimals","decimals","isWidgetUsedAbbreviation","formatNumberScale","palettecolors","enableSlicing","enableRotation","toolTipBgColor","showToolTipShadow","plotHoverEffect","scrollHeight","scrollWidth","plotColorinTooltip","showLabels","LabelsPosition","setOnChartLegend","setChartInLegend","LegendPosition","legendScrollBgColor","legendIconScale","scrollShowButtons","legendCaptionAlignment","alignLegendWithCanvas","pieRadius","showSecondaryLimits","showDivLineSecondaryValue","pYAxisNameBorderPadding","sYAxisNameBorderPadding","pYAxisName","sYAxisname","textLength","getTitle","maxLenght","textLenght","neededSpaces","space","repeat","FusionChartHelper","getPieRadius","getLegendWidth","legendWidth","trimChartLabels","chartWidth","chartHeight","handleLegendWidth","handlePieRadius","chartMinumunHeight","startPercantage","stepHeight","step","floor","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","creditLabel","FusionChart","dataLoaded","setDataLoaded","fusionKey","chartData","resizeTimer","setResizeTimer","axiosController","AbortController","args","setArgs","fChart","setFchart","chartContainerId","progressRef","fusionRef","fusionChartHelper","isDummyChangesActive","_data","handleData","abort","clearTimeout","HandleSizeChange","useImperativeHandle","onResizeFinish","oldPieRadius","oldLegendWidth","offsetHeight","isTargetWidget","updatedAxiosController","isTargetUsed","SeriesMeasures","showTargetUsageTooltipMessageError","isDummyChange","errorMsg","dataplotClick","eventObj","dataObj","groupbyid","measurefieldid","measurecode","groupbyidsec","useResizeObserver","onResize","resizeTo","renderComplete","handlePieDonutChartTooltip","chartDataSource","handleOtherChartsTooltip","loaded","sender","onRender","setFusionKey","getChartData","chartRef","chartContainer","getObjectReference","svgContainer","textElements","lastTextElement","cursor","transition","fill","textDecoration","WidgetCard","fusionChartRef","showHeaderErrorMessages","setShowHeaderErrorMessages","headerErrorMessages","setHeaderErrorMessages","showCopiedNotification","setShowCopiedNotification","copyPopupRef","copiedNotificationTimer","editWidget","editBtnClicked","duplicateWidget","duplicateBtnClicked","copyBtnClicked","copyWidgetToClipboard","copyToClipboardBtnClicked","onEditWidget","getCSSPropertyValue","widgetData","propUnit","propDefaultVal","GetChartComponent","showErrorMsg","GaugeChart","msg","isTableWidget","isPivotWidget","isTableOrPivotWidget","getwidgetTitlesContainer","drilldownToTableData","isThereTitle","Title","isThereSubtitle","Subtitle","tableHintMessage","isTitleAligmentRight","visibility","TitleAlignment","justifyContent","flexDirection","Popup","trigger","position","arrowStyle","offsetY","on","EditWidgetIcon","CopyWidgetIcon","closeOnDocumentClick","closeOnEscape","arrow","close","DeleteWidgetIcon","deleteBtnClicked","TargetWarningIcon","deepClone","obj","ResponsiveReactGridLayout","WidthProvider","Responsive","DashboardDesigner","array12","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","dispatchEvent","CustomEvent","confirmDeleteWidget","deleteWidgetProps","onWidgetDelete","newLayouts","newWidgets","ChangeSetOp","openEditWidget","copyWidget","onCopyWidget","onCopyWidgetToClipboard","y","newPlaceholderRows","Event","layoutGridProps","compactType","draggableCancel","isDraggable","isResizable","onWidthChange","cols","md","sm","xs","xxs","useCSSTransforms","Dashboard","UseAgGridPivot","agGridLicenseKey","widgetlayoutsState","setWidgetlayoutsState","setIsInEditMode","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.js","sources":["../src/services/session.ts","../src/services/tools.ts","../src/services/ApiServices.ts","../src/services/DashboardAnalyticsService.ts","../src/Utils/DateHelper.tsx","../src/Constant/FieldDataType.ts","../src/Constant/MeasureCode.ts","../src/Utils/General.tsx","../src/services/WidgetLoadLogService.ts","../src/Utils/WidgetLoadLogger.ts","../src/features/Dashboard/ChartsComponents/CustomCharts/KpiChart.tsx","../src/features/Dashboard/ChartsComponents/CustomCharts/TableChart.tsx","../src/features/Dashboard/ChartsComponents/CustomCharts/PivotGrid.tsx","../src/features/Dashboard/ChartsComponents/CustomCharts/PivotAgGridSupport.ts","../src/features/Dashboard/ChartsComponents/CustomCharts/AgPivotGrid.tsx","../src/features/Dashboard/ChartsComponents/CustomCharts/ViewsChart.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 public static isMasterNumberClickable: any;\r\n public static UseAgGridPivot: boolean = false;\r\n public static AgGridLicenseKey: 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 let requestHeaders = { 'Content-Type': 'application/json', 'Token': token };\r\n if (this.isDashboardClickHouseActive()) {\r\n requestHeaders['Dashboard-Clickhouse'] = \"True\";\r\n }\r\n\t\tvar apiURL = `${this._apiUrl}${api}`;\r\n return axios.post<T>(apiURL,date, { headers: requestHeaders, signal: requestSignal});\r\n }\r\n\r\n getTokenFromStorage(){\r\n return Session.Token || '';\r\n }\r\n\r\n isDashboardClickHouseActive(){\r\n return (window as any)?.IsDashboardClickHouseActive === true;\r\n }\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 getTargetAnalyticsData(widget: ReactWidgetPM, signal: any = undefined) {\r\n return this._ApiServices.post<SeriesMeasure[]>(`/api/${this.controller}/PostGetTargetDataAnalytic`,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\r\n getPivotData(widget: ReactWidgetPM) {\r\n return this._ApiServices.post<any>(`/api/${this.controller}/PostGetPivotData`, widget);\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 getDateRangesByPeriod = (_operator: string, _interval: string, _range: string, _format: string = \"YYYYMMDD000000\") => {\r\n if (!_operator || !_interval || !_range) return null;\r\n\r\n let result: any = {\r\n date1: null,\r\n date2: null\r\n }\r\n\r\n if (_operator.toLowerCase() == 'current') {\r\n switch (_range) {\r\n case \"Day\":\r\n result.date1 = getTodayDates()[0];\r\n result.date2 = getTodayDates()[1];\r\n break;\r\n case \"Week\":\r\n result.date1 = getCurrentWeekDates()[0];\r\n result.date2 = getCurrentWeekDates()[1];\r\n break;\r\n case \"Month\":\r\n result.date1 = getCurrentMonthDates()[0];\r\n result.date2 = getCurrentMonthDates()[1];\r\n break;\r\n case \"Current_Month_To_Date\":\r\n case \"Month To Date\":\r\n result.date1 = getCurrentMonthToDateDates()[0];\r\n result.date2 = getCurrentMonthToDateDates()[1];\r\n break;\r\n case \"Quarter\":\r\n result.date1 = getCurrentQuarterDates()[0];\r\n result.date2 = getCurrentQuarterDates()[1];\r\n break;\r\n case \"Current_Quarter_To_Date\":\r\n case \"Quarter To Date\":\r\n result.date1 = getCurrentQuarterToDateDates()[0];\r\n result.date2 = getCurrentQuarterToDateDates()[1];\r\n break;\r\n case \"Year\":\r\n result.date1 = getCurrentYearDates()[0];\r\n result.date2 = getCurrentYearDates()[1];\r\n break;\r\n case \"Current_Year_To_Date\":\r\n case \"Year To Date\":\r\n result.date1 = getCurrentYearToDateDates()[0];\r\n result.date2 = getCurrentYearToDateDates()[1];\r\n break;\r\n default:\r\n break;\r\n }\r\n } else {\r\n let dateGroupCodes: any = {\r\n 'Day': 'days',\r\n 'Week': 'weeks',\r\n 'Month': 'months',\r\n 'Quarter': 'quarters',\r\n 'Year': 'years',\r\n 'Year To Date': 'years',\r\n 'Quarter To Date': 'quarters',\r\n 'Month To Date': 'months',\r\n }\r\n let customDateGroupCodes = ['Year To Date', 'Quarter To Date', 'Month To Date']\r\n\r\n if (_operator.toLowerCase() == 'next') {\r\n result.date1 = moment().startOf(dateGroupCodes[_range]).add(1, dateGroupCodes[_range]).format(_format);\r\n result.date2 = moment().startOf(dateGroupCodes[_range]).add(Number(_interval), dateGroupCodes[_range]).endOf(dateGroupCodes[_range]).format(_format);\r\n } else if (_operator.toLowerCase() == 'previous' && !customDateGroupCodes.includes(_range)) {\r\n result.date1 = moment().subtract(Number(_interval), dateGroupCodes[_range]).startOf(dateGroupCodes[_range]).format(_format);\r\n result.date2 = moment().subtract(1, dateGroupCodes[_range]).endOf(dateGroupCodes[_range]).format(_format);\r\n } else if (_operator.toLowerCase() == 'previous' && customDateGroupCodes.includes(_range)) {\r\n result.date1 = moment().subtract(Number(_interval), dateGroupCodes[_range]).startOf(dateGroupCodes[_range]).format(_format);\r\n result.date2 = moment().format(_format);\r\n }\r\n }\r\n\r\n return result;\r\n}\r\n\r\nconst getDateRangesByCode = (\r\n code: string | null,\r\n _fromDate: string | null,\r\n _toDate: string | null,\r\n _operator: string | null = null,\r\n _interval: string | null = null,\r\n _range: string | null = null\r\n) => {\r\n let result: any = {\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 case \"Custom_Range\":\r\n result.fromDate = _fromDate;\r\n result.toDate = _toDate;\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 case \"Previous_Next\":\r\n let previousNextDates = getDateRangesByPeriod(\r\n _operator || \"\",\r\n _interval || \"\",\r\n _range || \"\"\r\n );\r\n result.fromDate = previousNextDates && previousNextDates.date1 ? previousNextDates.date1 : null;\r\n result.toDate = previousNextDates && previousNextDates.date2 ? previousNextDates.date2 : null;\r\n break;\r\n \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}","export class FieldDataType {\r\n\r\n static readonly Decimal: string = \"Decimal\";\r\n static readonly Double: string = \"Double\";\r\n static readonly UnsDecimal: string = \"UnsDecimal\";\r\n static readonly Integer: string = \"Integer\";\r\n static readonly UnsInteger: string = \"UnsInteger\";\r\n static readonly SigDouble: string = \"SigDouble\";\r\n static readonly LookUp: string = \"LookUp\";\r\n static readonly PickList: string = \"PickList\";\r\n static readonly PickList2: string = \"PickList2\";\r\n static readonly Text: string = \"Text\";\r\n static readonly nText: string = \"nText\";\r\n static readonly Boolean: string = \"Boolean\";\r\n static readonly Date: string = \"Date\";\r\n static readonly DateTime: string = \"DateTime\";\r\n static readonly Percentage: string = \"Percentage\";\r\n\r\n\r\n static isNumericType(fieldDataType: string | null | undefined | any): boolean {\r\n if (!fieldDataType || typeof fieldDataType !== \"string\") {\r\n return false;\r\n }\r\n\r\n return [\r\n FieldDataType.Decimal,\r\n FieldDataType.Double,\r\n FieldDataType.UnsDecimal,\r\n FieldDataType.SigDouble,\r\n FieldDataType.Integer,\r\n FieldDataType.UnsInteger,\r\n FieldDataType.Percentage\r\n ].includes(fieldDataType);\r\n }\r\n\r\n static isInteger(fieldDataType: string | null | undefined | any): boolean {\r\n if (!fieldDataType || typeof fieldDataType !== \"string\") {\r\n return false;\r\n }\r\n\r\n return [FieldDataType.Integer, FieldDataType.UnsInteger].includes(fieldDataType);\r\n }\r\n\r\n static isPercentage(fieldDataType: string | null | undefined | any) {\r\n\r\n if (!fieldDataType || typeof fieldDataType !== \"string\") {\r\n return false;\r\n }\r\n\r\n return fieldDataType === FieldDataType.Percentage;\r\n }\r\n\r\n static isLookUpType(fieldDataType: string | null | undefined | any): boolean {\r\n if (!fieldDataType || typeof fieldDataType !== \"string\") {\r\n return false;\r\n }\r\n\r\n return fieldDataType === FieldDataType.LookUp;\r\n }\r\n\r\n static isPickListType(fieldDataType: string | null | undefined | any): boolean {\r\n if (!fieldDataType || typeof fieldDataType !== \"string\") {\r\n return false;\r\n }\r\n\r\n return [FieldDataType.PickList, FieldDataType.PickList2].includes(fieldDataType);\r\n }\r\n\r\n static isTextOrNTextType(fieldDataType: string | null | undefined | any): boolean {\r\n if (!fieldDataType || typeof fieldDataType !== \"string\") {\r\n return false;\r\n }\r\n\r\n return [FieldDataType.Text, FieldDataType.nText].includes(fieldDataType);\r\n }\r\n\r\n static isTextType(fieldDataType: string | null | undefined | any): boolean {\r\n if (!fieldDataType || typeof fieldDataType !== \"string\") {\r\n return false;\r\n }\r\n\r\n return fieldDataType === FieldDataType.Text;\r\n }\r\n\r\n static isNTextType(fieldDataType: string | null | undefined | any): boolean {\r\n if (!fieldDataType || typeof fieldDataType !== \"string\") {\r\n return false;\r\n }\r\n\r\n return fieldDataType === FieldDataType.nText;\r\n }\r\n\r\n static isBooleanType(fieldDataType: string | null | undefined | any): boolean {\r\n if (!fieldDataType || typeof fieldDataType !== \"string\") {\r\n return false;\r\n }\r\n\r\n return fieldDataType === FieldDataType.Boolean;\r\n }\r\n\r\n static isDateOrDateTimeType(fieldDataType: string | null | undefined | any): boolean {\r\n if (!fieldDataType || typeof fieldDataType !== \"string\") {\r\n return false;\r\n }\r\n\r\n return [FieldDataType.Date, FieldDataType.DateTime].includes(fieldDataType);\r\n }\r\n}\r\n","export enum MeasureCode {\r\n Average = \"Avg\",\r\n CalculatedColumn = \"CalculatedColumn\",\r\n Formula = \"Formula\",\r\n Max = \"Max\",\r\n Min = \"Min\",\r\n Sum = \"Sum\",\r\n Target = \"Target\",\r\n Count = \"Count\"\r\n}\r\n","import { FieldDataType } from \"../Constant/FieldDataType\";\r\nimport { MeasureCode } from \"../Constant/MeasureCode\";\r\nimport { Session } from \"../services/session\";\r\nimport { ReactWidgetPM } from \"../types/widget\";\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\nconst isValueInteger = (measureCode : string | null | undefined , measureFieldType : string | null | undefined) =>{\r\n\r\n if(measureCode === MeasureCode.Count || measureFieldType === FieldDataType.Integer){\r\n return true;\r\n }\r\n\r\n return false;\r\n}\r\n\r\nconst getTruncatedValue = (value: number | null | undefined | any, widget : ReactWidgetPM): number | null | undefined => {\r\n\r\n if(value == null || value == undefined || isNaN(value)) return value;\r\n \r\n return truncateDecimals(value,widget.DecimalPlaces || 0);\r\n}\r\n\r\nconst getNumberInSystemLocalFormat = (value: number | null | undefined, decimalDigitsCount: number = -1 , minimumFractionDigits: number = 0, isValueTruncated : boolean = true , applyAbbreviation : boolean = false): string => {\r\n\r\n if(value == null || value == undefined || isNaN(value)) return value + \"\" ;\r\n \r\n const decimalParts = value.toString().split(\".\");\r\n const maxFractionDigits = decimalParts[1] ? decimalParts[1].length : 0;\r\n decimalDigitsCount = decimalDigitsCount == -1 ? maxFractionDigits : decimalDigitsCount;\r\n\r\n let _numberSeparatorSettings = getGlobalNumberFormatting();\r\n\r\n if(isValueTruncated){\r\n\r\n value = truncateDecimals(value,decimalDigitsCount);\r\n }\r\n\r\n let abbreviationSymbol : string | null = null;\r\n\r\n if(applyAbbreviation){\r\n\r\n if(Math.abs(value) >= 1000 && Math.abs(value) < 1000_000){\r\n\r\n value = value / 1000;\r\n abbreviationSymbol = \"K\";\r\n\r\n }else if(Math.abs(value) >= 1000_000){\r\n\r\n value = value / 1000_000;\r\n abbreviationSymbol = \"M\";\r\n }\r\n\r\n }\r\n \r\n let _val = value.toLocaleString('en-US', {\r\n minimumFractionDigits: minimumFractionDigits, \r\n maximumFractionDigits: decimalDigitsCount\r\n });\r\n\r\n if(_val){ \r\n\r\n let _formattedValue = _val.replaceAll(\",\", \"*\");\r\n _formattedValue = _formattedValue.replaceAll(\".\", \"#\");\r\n _formattedValue = _formattedValue.replaceAll(\"*\", _numberSeparatorSettings.thousandsSeparator);\r\n _formattedValue = _formattedValue.replaceAll(\"#\", _numberSeparatorSettings.decimalSeparator);\r\n\r\n return (applyAbbreviation && abbreviationSymbol) ? `${_formattedValue}${abbreviationSymbol}` : _formattedValue;\r\n }\r\n\r\n return value + \"\";\r\n}\r\n\r\nconst truncateDecimals = (value: number , numberOfDecimalParts : number) => {\r\n // Handle non-finite numbers (NaN, Infinity)\r\n if (!Number.isFinite(value)) return value;\r\n \r\n const numStr = value.toString();\r\n\r\n if(numStr.toLocaleLowerCase().includes(\"e\")){\r\n return value;\r\n }\r\n\r\n // Split into integer/decimal parts without floating-point errors\r\n\r\n const [integerPart, decimalPart = ''] = numStr.split('.');\r\n \r\n // Truncate to two decimals and parse\r\n const truncated = decimalPart.slice(0, numberOfDecimalParts);\r\n const resultStr = truncated.length > 0 \r\n ? `${integerPart}.${truncated}` \r\n : integerPart;\r\n \r\n return parseFloat(resultStr);\r\n }\r\n\r\nconst ConvertStringToPascalCaseHelper = (stringValue: string) => {\r\n if(isNullOrUndefinedOrEmpty(stringValue) || typeof stringValue !== 'string') return stringValue || '';\r\n\r\n let splittedWords = stringValue.split(' ').filter(f => f != '');\r\n if(splittedWords.length == 0) return stringValue;\r\n\r\n return stringValue.split(' ').map((t) => {\r\n if(t.length > 0){\r\n return t[0].toUpperCase() + t.slice(1).toLowerCase()\r\n }\r\n\r\n return t;\r\n }).join(' ');\r\n}\r\n\r\nexport {\r\n isNullOrUndefined,\r\n isNullOrUndefinedOrEmpty,\r\n getGlobalNumberFormatting,\r\n getNumberInSystemLocalFormat,\r\n ConvertStringToPascalCaseHelper,\r\n isValueInteger,\r\n getTruncatedValue\r\n}","import { WidgetLoadLog } from \"../types/WidgetLoadLog\";\r\nimport { ApiServices } from \"./ApiServices\";\r\n\r\nexport class WidgetLoadLogService {\r\n _ApiServices: ApiServices;\r\n controller = 'WidgetLoadLogs';\r\n\r\n constructor() {\r\n this._ApiServices = new ApiServices();\r\n }\r\n\r\n create(widgetLoadLog: WidgetLoadLog) {\r\n return this._ApiServices.post<any>(`/api/${this.controller}`, widgetLoadLog, undefined);\r\n }\r\n}","import { WidgetLoadLogService } from \"../services/WidgetLoadLogService\";\r\nimport { ReactWidgetPM } from \"../types/widget\";\r\nimport { WidgetLoadLog } from \"../types/WidgetLoadLog\";\r\nimport { AxiosResponse } from \"axios\";\r\n\r\nexport class WidgetLoadLogger {\r\n\r\n private StartTime: number | null = null;\r\n private Widget: ReactWidgetPM | null = null;\r\n private RequestName: string | null | undefined = null;\r\n\r\n constructor(widget: ReactWidgetPM, isPreviewMode: boolean | null | undefined, requestName: string | null | undefined) {\r\n if (!isPreviewMode) {\r\n this.StartTime = new Date().getTime();\r\n this.Widget = widget;\r\n this.RequestName = requestName;\r\n }\r\n }\r\n\r\n log(loadDataResponse: AxiosResponse<any, any>) {\r\n if (this.canCreateLog(loadDataResponse)) {\r\n let totalExecutionTime = new Date().getTime() - this.StartTime!;\r\n let widgetLoadLogService: WidgetLoadLogService = new WidgetLoadLogService();\r\n let widgetLoadLog: WidgetLoadLog = {\r\n Tenant: this.Widget!.Tenant,\r\n WidgetId: this.Widget!.Id,\r\n DashboardId: this.Widget!.DashboardId,\r\n LoadTime: this.getLoadTime(loadDataResponse),\r\n TotalExecutionTime: totalExecutionTime,\r\n IsClickHouse: this.isClickHouse(loadDataResponse),\r\n RequestName: this.RequestName,\r\n WidgetType: this.Widget!.TypeCode,\r\n IsDrillDown: false\r\n };\r\n widgetLoadLogService.create(widgetLoadLog).then(_response => { }, _error => { });\r\n }\r\n this.StartTime = null;\r\n this.Widget = null;\r\n }\r\n\r\n private canCreateLog(loadDataResponse: AxiosResponse<any, any>) {\r\n return this.StartTime !== null && this.StartTime !== undefined &&\r\n this.Widget !== null && this.Widget !== undefined &&\r\n this.Widget.Id !== null && this.Widget.Id !== undefined && this.Widget.Id !== \"\" &&\r\n this.Widget.DashboardId !== null && this.Widget.DashboardId !== undefined && this.Widget.DashboardId !== \"\" &&\r\n this.Widget.Tenant !== null && this.Widget.Tenant !== undefined &&\r\n loadDataResponse !== null && loadDataResponse !== undefined;\r\n }\r\n\r\n private getLoadTime(loadDataResponse: AxiosResponse<any, any>) {\r\n let loadTimeHeaderKey = \"load-time\";\r\n let loadTimeHeader = loadDataResponse && loadDataResponse.headers && loadDataResponse.headers[loadTimeHeaderKey] ?\r\n loadDataResponse.headers[loadTimeHeaderKey] : \"\";\r\n return this.isNumber(loadTimeHeader) ? Number(loadTimeHeader) : 0;\r\n }\r\n\r\n private isNumber(value: string) {\r\n return value !== null &&\r\n value !== undefined &&\r\n value !== \"\" &&\r\n !isNaN(Number(value.toString()));\r\n }\r\n\r\n private isClickHouse(loadDataResponse: AxiosResponse<any, any>) {\r\n let clickHouseHeaderKey = \"click-house\";\r\n let clickHouseHeader = loadDataResponse && loadDataResponse.headers && loadDataResponse.headers[clickHouseHeaderKey] ?\r\n loadDataResponse.headers[clickHouseHeaderKey] : null;\r\n return clickHouseHeader === \"true\";\r\n }\r\n\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\nimport { WidgetLoadLogger } from \"../../../../Utils/WidgetLoadLogger\";\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\tDateRangeOperator?: 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, null, null);\r\n let comparePeriodOperator = kpiSettings.ComparePeriodDateFilter.DateRangeOperator\r\n || kpiSettings.ComparePeriodDateFilter.Operator;\r\n let comparePeriodInterval = kpiSettings.ComparePeriodDateFilter.DatePickerTextFieldValue != null\r\n ? String(kpiSettings.ComparePeriodDateFilter.DatePickerTextFieldValue)\r\n : null;\r\n let ComparePeriodDateFilterDates = kpiSettings.ComparisonPeriodType == 'Manually' ? \r\n getDateRangesByCode(\r\n kpiSettings.ComparePeriodDateFilter.DateTimeValueCode,\r\n kpiSettings.ComparePeriodDateFilter.FieldValue,\r\n kpiSettings.ComparePeriodDateFilter.FieldValue2,\r\n comparePeriodOperator,\r\n comparePeriodInterval,\r\n kpiSettings.ComparePeriodDateFilter.DateGroupCode\r\n ) \r\n : getDateRangesByCode(null, null, 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 if (kpiSettings.ComparisonPeriodType == 'Manually'\r\n && kpiSettings.ComparePeriodDateFilter.DateTimeValueCode == 'Previous_Next') {\r\n kpiSettings.ComparePeriodDateFilter.Operator = 'Between';\r\n }\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 const widgetLoadLogger = new WidgetLoadLogger(postWidget, props.customChartProps.isPreviewModeActive, \"PostGetKpiData\");\r\n dashboardAnalyticsService.getKpiData(postWidget as ReactWidgetPM).then(result => {\r\n setData(result.data);\r\n handleResponseErrors(result)\r\n setIsLoading(false);\r\n widgetLoadLogger.log(result);\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 const handleResponseErrors = (result: any) => {\r\n if(props.customChartProps.onShowError){\r\n if(result?.data && !isNullOrUndefined(result?.data?.Errors) && result?.data?.Errors.length > 0){\r\n props.customChartProps.onShowError(result?.data?.Errors[0]);\r\n }else {\r\n props.customChartProps.onShowError(null);\r\n }\r\n }\r\n }\r\n \r\n const drillDownToKPIValues = (isDrillDownToMainValues: boolean) => {\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: calculateWidgetKPISettingsDates(),\r\n MeasureCode : currentWidgetMeasure!.MeasureCode,\r\n Formula : currentWidgetMeasure!.Formula,\r\n GroupById: data?.GroupById,\r\n IsKPISecondaryValues: !isDrillDownToMainValues\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 onClick={() => drillDownToKPIValues(false)} 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 onClick={() => drillDownToKPIValues(true)} 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 if (widget.current.IsGlobalFilterKPIComparison) {\r\n return getPeriodLabelByPeriodCode(widget.current.GlobalFilterDateTimeValueCode);\r\n }\r\n\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 onClick={() => drillDownToKPIValues(true)} 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} 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 { getNumberInSystemLocalFormat, isNullOrUndefined, isNullOrUndefinedOrEmpty } from \"../../../../Utils/General\";\r\nimport { DataTable } from 'primereact/datatable';\r\nimport { Column } from 'primereact/column';\r\nimport { v4 as uuidv4 } from 'uuid';\r\nimport { WidgetLoadLogger } from \"../../../../Utils/WidgetLoadLogger\";\r\nimport { FieldDataType } from \"../../../../Constant/FieldDataType\";\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 MeasureUnit: string | null;\r\n DateTimeDisplayMode: string | 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 const [triggerId, setTriggerId] = useState<any>(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 setTriggerId(uuidv4());\r\n });\r\n }, [])\r\n\r\n useEffect(() => {\r\n if(triggerId != null){\r\n ReOrderColumns(widget?.Columns);\r\n }\r\n \r\n }, [triggerId])\r\n\r\n const ReOrderColumns = (updatedWidgetColumns: any) => {\r\n if(updatedWidgetColumns == null || updatedWidgetColumns == undefined || (typeof updatedWidgetColumns == 'string' && updatedWidgetColumns?.length == 0)){\r\n return;\r\n }\r\n\r\n let updatedWidgetColumnsData = JSON.parse(updatedWidgetColumns);\r\n \r\n let _updatedTableColumns : any = [];\r\n updatedWidgetColumnsData.forEach((c: any)=> {\r\n\r\n\r\n let columns : any = tableColumns.filter(f => f.Id == c.Id);\r\n\r\n if(columns && columns.length == 1){\r\n\r\n _updatedTableColumns.push(columns[0])\r\n\r\n }else if(columns && columns.length > 1){\r\n\r\n let isCalculatedColumn = c.ColumnVariableType === \"CalculatedColumn\";\r\n let dataTypeCode = c.ColumnVariableDataType;\r\n let dateDisplayMode = c.DateTimeDisplayMode || \"Date\";\r\n\r\n\r\n let column = columns.find(f => f.IsCalculatedColumn === isCalculatedColumn && f.DataTypeCode === dataTypeCode && f.DateTimeDisplayMode === dateDisplayMode);\r\n\r\n if(column){\r\n\r\n _updatedTableColumns.push(column)\r\n }\r\n }\r\n });\r\n\r\n setTableColumns([..._updatedTableColumns])\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 const widgetLoadLogger = new WidgetLoadLogger(widget, props.customChartProps.isPreviewModeActive, \"PostGetTableData\");\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 widgetLoadLogger.log(res);\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)) return \"\";\r\n\r\n let _value = value + \"\";\r\n return _value.charAt(0).toUpperCase() + _value.slice(1);\r\n }\r\n \r\n const getDateTimeValue = (value: any , datePart : string | null = null) => {\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 if(!datePart){\r\n return `${_date.format(\"DD MMM YYYY\")} ${_date.format(\"HH:mm\")}`;\r\n }\r\n\r\n if(datePart == 'Date'){\r\n return `${_date.format(\"DD MMM YYYY\")}`;\r\n\r\n }else{\r\n return `${_date.format(\"HH:mm\")}`;\r\n }\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) ? \"\" : _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 case \"Contains\":\r\n return !isValueEmpty(value) && !isValueEmpty(ruleValue1) && value.includes(ruleValue1);\r\n case \"NotContains\":\r\n return !isValueEmpty(value) && !isValueEmpty(ruleValue1) && !value.includes(ruleValue1);\r\n default:\r\n return null;\r\n }\r\n }\r\n\r\n\r\n // Strip time from a Date (normalize to midnight)\r\n function stripTime(date: Date | null): Date | null {\r\n if (!date) return null;\r\n return new Date(date.getFullYear(), date.getMonth(), date.getDate());\r\n }\r\n \r\n // Parse ISO-like local date string (e.g., \"2024-05-01T00:00:00\")\r\n function parseLocalDate(dateStr: string): Date | null {\r\n\r\n try{\r\n\r\n if (!dateStr) return null;\r\n const [year, month, day] = dateStr.split('T')[0].split('-').map(Number);\r\n return new Date(year, month - 1, day); // Local time\r\n\r\n }catch(error){\r\n\r\n return null;\r\n\r\n } \r\n }\r\n \r\n // Parse custom \"YYYYMMDD\" format\r\n function parseCustomDateLocalDate(dateStr: string): Date | null {\r\n try{\r\n\r\n if (!dateStr || dateStr.length < 8) return null;\r\n const year = Number(dateStr.substring(0, 4));\r\n const month = Number(dateStr.substring(4, 6));\r\n const day = Number(dateStr.substring(6, 8));\r\n return new Date(year, month - 1, day); // Local time\r\n\r\n }catch(error){\r\n\r\n return null;\r\n\r\n } \r\n }\r\n \r\n function isDateValidRule(rule: any, value: string): boolean | null {\r\n const operator = rule?.RuleOperator?.Code;\r\n if (!operator) return null;\r\n \r\n const ruleValue1 = stripTime(parseCustomDateLocalDate(rule.RuleValue1));\r\n const ruleValue2 = stripTime(parseCustomDateLocalDate(rule.RuleValue2));\r\n const actualValue = stripTime(parseLocalDate(value));\r\n \r\n switch (operator) {\r\n case \"Equal\":\r\n case \"Between\":\r\n return (\r\n !isValueEmpty(ruleValue1) &&\r\n !isValueEmpty(ruleValue2) &&\r\n !isValueEmpty(actualValue) &&\r\n ruleValue1! <= actualValue! &&\r\n actualValue! <= ruleValue2!\r\n );\r\n case \"NotEqual\":\r\n case \"NotBetween\":\r\n return (\r\n !isValueEmpty(ruleValue1) &&\r\n !isValueEmpty(ruleValue2) &&\r\n !isValueEmpty(actualValue) &&\r\n (ruleValue1! > actualValue! || actualValue! > ruleValue2!)\r\n );\r\n case \"GreaterThan\":\r\n return (\r\n !isValueEmpty(ruleValue2) &&\r\n !isValueEmpty(actualValue) &&\r\n actualValue! > ruleValue2!\r\n );\r\n case \"GreaterThanOrEqual\":\r\n return (\r\n !isValueEmpty(ruleValue2) &&\r\n !isValueEmpty(actualValue) &&\r\n actualValue! >= ruleValue2!\r\n );\r\n case \"LessThan\":\r\n return (\r\n !isValueEmpty(ruleValue2) &&\r\n !isValueEmpty(actualValue) &&\r\n actualValue! < ruleValue2!\r\n );\r\n case \"LessThanOrEqual\":\r\n return (\r\n !isValueEmpty(ruleValue2) &&\r\n !isValueEmpty(actualValue) &&\r\n actualValue! <= ruleValue2!\r\n );\r\n case \"IsEmpty\":\r\n return isValueEmpty(actualValue);\r\n case \"IsNotEmpty\":\r\n return !isValueEmpty(actualValue);\r\n default:\r\n return null;\r\n }\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 || columnData.FieldDataType != column?.DataTypeCode) {\r\n return defaultValue ? getTableFormattingPropertyValue(defaultValue) : undefined; \r\n };\r\n\r\n let firstValidRule = null;\r\n\r\n\r\n if(FieldDataType.isDateOrDateTimeType(column?.DataTypeCode)){\r\n\r\n firstValidRule = columnData.FieldRules.find((rule: any) => isDateValidRule(rule, cellValue));\r\n\r\n }else{\r\n\r\n firstValidRule = columnData.FieldRules.find((rule: any) => IsValidRule(rule, cellValue));\r\n }\r\n\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 isRowTenantMatched = (rowData: any | null = null) => {\r\n if (!rowData) return true;\r\n\r\n return Number(rowData.Tenant) === Number(Session.Tenant);\r\n }\r\n\r\n const isClickableCell = (fieldCode: string | null , rowData : any | null = null) => {\r\n if (!isRowTenantMatched(rowData)) {\r\n return false;\r\n }\r\n\r\n return ((fieldCode == \"ShipmentNumber\" && objectTableName == \"Shipment\") ||\r\n IsShipmentMasterFieldClickable(fieldCode,rowData) ||\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 (fieldCode == \"TaskNumber\" && objectTableName == \"Task\") ||\r\n (fieldCode == \"Subject\" && objectTableName == \"Activity\") ||\r\n (fieldCode == \"TicketNumber\" && objectTableName == \"Ticket\")||\r\n (fieldCode == \"ReleaseNumber\" && objectTableName == \"WarehouseRelease\") ||\r\n (fieldCode == \"EntryNumber\" && objectTableName == \"WarehouseEntry\"))\r\n }\r\n\r\n const IsShipmentMasterFieldClickable = (fieldCode: string | null , rowData: any | null = null) => {\r\n\r\n if(Session.isMasterNumberClickable && objectTableName === \"Shipment\" && fieldCode === \"Master\" && Session.isMasterNumberClickable(rowData)){\r\n return true;\r\n }\r\n\r\n return false;\r\n }\r\n\r\n const tableCellClicked = (data: any, fieldCode: string | null) => {\r\n if(!data || !data.Id || !isClickableCell(fieldCode,data) || props.customChartProps.isInEditMode) return;\r\n\r\n props.customChartProps.onSelectDataPoint({\r\n ObjectTableName: objectTableName,\r\n TableRowEntityId: data.Id,\r\n RowData : data,\r\n FieldCode : fieldCode\r\n });\r\n }\r\n\r\n const getCellValue = (data: any, column: FieldColumn) => {\r\n if(isNullOrUndefined(data) || isNullOrUndefined(column)) {\r\n return \"\";\r\n }\r\n\r\n let columnValue = data[column.FieldCode!];\r\n \r\n let decimalPlaces = widget?.DecimalPlaces || 0;\r\n let isAbbreviationApplied = widget?.UseNumberAbbreviation || false;\r\n\r\n if(FieldDataType.isPercentage(column.DataTypeCode)) {\r\n return !isNullOrUndefined(columnValue) ? getNumberInSystemLocalFormat(Number(columnValue), decimalPlaces,decimalPlaces,true,isAbbreviationApplied) + \"%\" : 0 + '%';\r\n }\r\n\r\n if(FieldDataType.isInteger(column.DataTypeCode)) {\r\n return !isNullOrUndefined(columnValue) ? getNumberInSystemLocalFormat(Number(columnValue), decimalPlaces, decimalPlaces,false,isAbbreviationApplied) : \"\";\r\n }\r\n\r\n\r\n if(FieldDataType.isNumericType(column.DataTypeCode)) {\r\n return !isNullOrUndefined(columnValue) ? getNumberInSystemLocalFormat(Number(columnValue), decimalPlaces,decimalPlaces,true,isAbbreviationApplied) : \"\";\r\n }\r\n\r\n \r\n return columnValue;\r\n }\r\n\r\n const cellTemplateBody = (data: any, column: FieldColumn) => {\r\n if(!column || !column.FieldCode) return \"\";\r\n\r\n if(column.DataTypeCode == \"DateTime\" || column.DataTypeCode == \"Date\"){\r\n\r\n let dateTimeDisplayMode : string | null = column.DateTimeDisplayMode;\r\n\r\n let fontColor : string = getTableFormattingPropertyValue(\"TableCellFontColor\");\r\n let fontSizeWithoutUnit = getTableFormattingPropertyValue(\"TableCellFontSize\");\r\n let fontSizeWitUnit = getTableFormattingPropertyValue(\"TableCellFontSize\",\"px\");\r\n\r\n return (\r\n <div\r\n title={\r\n dateTimeDisplayMode === 'DateTime'\r\n ? getDateTimeValue(data[column.FieldCode!])\r\n : getDateTimeValue(data[column.FieldCode!], 'Date')\r\n }\r\n className=\"date-time-value-container\"\r\n style={{ color: fontColor }}\r\n >\r\n <span\r\n className=\"table-cell-datetime\"\r\n style={{\r\n fontSize: fontSizeWitUnit,\r\n display: 'inline-block',\r\n backgroundColor: getCellPropertyByRule(\r\n column,\r\n data[column.FieldCode!],\r\n 'RuleBackgroundColor'\r\n ),\r\n }}\r\n >\r\n {getDateTimeValue(data[column.FieldCode!], 'Date')}\r\n {dateTimeDisplayMode === 'DateTime' && (\r\n ' ' + getDateTimeValue(data[column.FieldCode!], 'Time')\r\n )}\r\n </span>\r\n </div>\r\n );\r\n \r\n\r\n }else{\r\n\r\n return <span \r\n onClick={() => tableCellClicked(data, column.FieldCode)}\r\n title={getCellValue(data, column)} \r\n className={`table-cell ${isClickableCell(column.FieldCode,data) ? 'table-link-cell' :''}`} \r\n style={{\r\n color: getTableFormattingPropertyValue(\"TableCellFontColor\"),\r\n backgroundColor: getCellPropertyByRule(column, data[column.FieldCode!], 'RuleBackgroundColor'),\r\n fontSize: getTableFormattingPropertyValue(\"TableCellFontSize\", \"px\"),\r\n float: getCellFloatAlignment(column)}}>\r\n {getCellValue(data, column)}\r\n </span>\r\n }\r\n }\r\n\r\n const headerTemplate = (column: FieldColumn)=> {\r\n let sortClassIcon = \"\";\r\n\r\n let _widget : any = props.customChartProps.widget;\r\n let showMeasureUnit = _widget.ShowMeasureUnit || false;\r\n\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 dl-table-chart-header-container\">\r\n <span style={{\r\n color: getTableFormattingPropertyValue(\"TableHeaderFontColor\"),\r\n fontSize: getTableFormattingPropertyValue(\"TableHeaderFontSize\", \"px\")}} \r\n className=\"p-column-title\">\r\n {(column.MeasureUnit && showMeasureUnit) ? `${column.DisplayName} (${column.MeasureUnit})` : 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 dl-table-chart-header-container\">\r\n <span style={{\r\n color: getTableFormattingPropertyValue(\"TableHeaderFontColor\"),\r\n fontSize: getTableFormattingPropertyValue(\"TableHeaderFontSize\", \"px\")}} \r\n className=\"p-column-title\">\r\n {(column.MeasureUnit && showMeasureUnit) ? `${column.DisplayName} (${column.MeasureUnit})` : 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} resizableColumns={!props.customChartProps.isInEditMode} columnResizeMode=\"fit\" 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, { forwardRef, useCallback, useEffect, useRef, useState } from 'react';\r\nimport PivotGrid, {\r\n FieldChooser, FieldPanel, Scrolling,\r\n} from 'devextreme-react/pivot-grid';\r\nimport { DashboardAnalyticsService } from '../../../../services/DashboardAnalyticsService';\r\nimport { CustomChartProps } from './CustomChart';\r\nimport { Session } from '../../../../services/session';\r\nimport PivotGridDataSource from 'devextreme/ui/pivot_grid/data_source';\r\nimport { ProgressSpinner } from 'primereact/progressspinner';\r\nimport { ConvertStringToPascalCaseHelper, getNumberInSystemLocalFormat, isNullOrUndefinedOrEmpty, isValueInteger } from '../../../../Utils/General';\r\nimport { ReactWidgetPM } from '../../../../types/widget';\r\nimport { WidgetLoadLogger } from '../../../../Utils/WidgetLoadLogger';\r\n\r\ntype PivotChartProps = {\r\n customChartProps: CustomChartProps;\r\n};\r\n\r\nconst PivotTable = forwardRef((props: PivotChartProps, comRef) => {\r\n\r\n const [widget, setWidget] = useState<ReactWidgetPM>();\r\n const [isLoading, setIsLoading] = useState<boolean>(true);\r\n\r\n const widgetRefData = useRef<ReactWidgetPM | null>(null);\r\n const tabledata = useRef<any>();\r\n const pivotGridRef = useRef<PivotGrid>(null);\r\n\r\n const [dataSource, setDataSource] = useState<any>(new PivotGridDataSource({\r\n store: [],\r\n fields: [],\r\n }));\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 getPivotTableData(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 document.addEventListener(\"resizeStop\", handleResize);\r\n return () => {\r\n document.removeEventListener(\"resizeStop\", handleResize);\r\n };\r\n }, [])\r\n\r\n useEffect(() => {\r\n if(props.customChartProps.isInEditMode){\r\n if(pivotGridRef.current && pivotGridRef.current?.instance && pivotGridRef.current.instance.element \r\n && pivotGridRef.current.instance.element().classList){\r\n pivotGridRef.current.instance.element().classList.add('force-overflow-hidden')\r\n }\r\n setTimeout(() => {\r\n handleResize();\r\n if(pivotGridRef.current && pivotGridRef.current?.instance && pivotGridRef.current.instance.element\r\n && pivotGridRef.current.instance.element().classList){\r\n pivotGridRef.current.instance.element().classList.remove('force-overflow-hidden')\r\n }\r\n }, 5);\r\n }\r\n\r\n }, [props.customChartProps.isInEditMode])\r\n\r\n const handleResize = () => {\r\n if(pivotGridRef.current && pivotGridRef.current?.instance && pivotGridRef.current?.instance.repaint){\r\n pivotGridRef.current?.instance.repaint()\r\n }\r\n }\r\n\r\n const getPivotTableData = (widget: any) => {\r\n if (Session.Tenant == 0) {\r\n tabledata.current = [];\r\n setIsLoading(false);\r\n return;\r\n }\r\n\r\n let dashboardAnalyticsService = new DashboardAnalyticsService();\r\n\r\n const widgetLoadLogger = new WidgetLoadLogger(props.customChartProps.widget as any, props.customChartProps.isPreviewModeActive, \"PostGetPivotData\");\r\n dashboardAnalyticsService.getPivotData(props.customChartProps.widget as any)\r\n .then((res) => {\r\n tabledata.current = res.data;\r\n setPivotDataSourceFields();\r\n setIsLoading(false);\r\n widgetLoadLogger.log(res);\r\n })\r\n .catch(err => {\r\n console.log(\"Error while Getting Pivot Table Data: \", err);\r\n tabledata.current = null;\r\n setPivotDataSourceFields();\r\n setIsLoading(false);\r\n })\r\n }\r\n const customizeCells = useCallback((e) => {\r\n if (e.cell.rowPath && e.cell.rowPath[0] === \"Germany\" && e.cell.columnPath && e.cell.columnPath[0] === \"Export\" && e.cell.columnPath[1] === \"Air\") {\r\n\r\n e.cellElement.children[0].style.padding = \"6px\";\r\n e.cellElement.children[0].style.borderRadius = \"6px\";\r\n e.cellElement.children[0].style.backgroundColor = \"#f4433673\";\r\n }\r\n\r\n if (e.cell.rowPath && e.cell.rowPath[0] === \"USA\" && e.cell.columnPath && e.cell.columnPath[0] === \"Import\" && e.cell.columnPath[1] === \"Inland\") {\r\n\r\n e.cellElement.children[0].style.padding = \"6px\";\r\n e.cellElement.children[0].style.borderRadius = \"6px\";\r\n e.cellElement.children[0].style.backgroundColor = \"#03a9f4ad\";\r\n }\r\n }, []);\r\n\r\n const onCellClick = useCallback((e: any) => {\r\n if (e.area === 'data') {\r\n let pivotFields: any = [];\r\n\r\n e.columnFields.forEach((c: any, index: number) => {\r\n let fieldValue = e.cell.columnPath[index];\r\n if(fieldValue !== undefined){\r\n pivotFields.push({ ...c.fieldData, FieldValue: fieldValue })\r\n }\r\n })\r\n\r\n e.rowFields.forEach((r: any, index: number) => {\r\n let fieldValue = e.cell.rowPath[index];\r\n if(fieldValue !== undefined){\r\n pivotFields.push({ ...r.fieldData, FieldValue: fieldValue })\r\n }\r\n })\r\n \r\n props.customChartProps.onSelectDataPoint({\r\n MeasureFieldId: '',\r\n Widget: props.customChartProps.widget,\r\n MeasureCode: '',\r\n Formula: '',\r\n GroupById: '',\r\n PivotFields: pivotFields\r\n });\r\n }\r\n }, []);\r\n\r\n const getColumnNameByColumnId = (fieldName, dataField, datafieldValue) => {\r\n let data = tabledata.current.PivotData.find(el => el[dataField] == datafieldValue)\r\n\r\n return data ? ConvertStringToPascalCaseHelper(data[fieldName]) : ''\r\n }\r\n\r\n const SortRowAndColumnHeaders = (a: any, b: any, field: any) => {\r\n if(field.DateCode == 'Month'){\r\n let aValue = a.value == null ? -1 : Number(a.value);\r\n let bValue = b.value == null ? -1 : Number(b.value);\r\n if(aValue < bValue) { return -1; }\r\n if(aValue > bValue) { return 1; }\r\n return 0;\r\n\r\n }else if(field.DateCode != null){\r\n\r\n let aValue = a.value == null ? '' : a.value;\r\n let bValue = b.value == null ? '' : b.value;\r\n if(aValue < bValue) { return -1; }\r\n if(aValue > bValue) { return 1; }\r\n return 0;\r\n\r\n }else{\r\n let aText = a.text == null ? '' : a.text;\r\n let bText = b.text == null ? '' : b.text;\r\n if(aText < bText) { return -1; }\r\n if(aText> bText) { return 1; }\r\n return 0;\r\n }\r\n\r\n \r\n }\r\n\r\n const setPivotDataSourceFields = () => {\r\n if (tabledata.current && tabledata.current.PivoFields && tabledata.current.PivotMeasures) {\r\n // Fill Pivot Rows & Columns fields\r\n let pivotRowsAndColumnsFields = tabledata.current.PivoFields.map(field => {\r\n return {\r\n dataField: field.PivotCode,\r\n caption: field.DisplayName,\r\n name: field.PivotName,\r\n width: 100,\r\n allowSorting: false,\r\n allowFiltering: false,\r\n area: field.PivotCode && field.PivotCode.includes('Row') ? 'row' : 'column',\r\n sortingMethod: (a, b)=> {\r\n return SortRowAndColumnHeaders(a, b, field);\r\n },\r\n expanded: true,\r\n wordWrapEnabled: true,\r\n fieldData: {\r\n FieldId: field.FieldId,\r\n FieldType: field.FieldType ? field.FieldType : \"Field\",\r\n FieldValue: '',\r\n DateCode : field.DateCode\r\n },\r\n customizeText: (cellInfo) => {\r\n return getColumnNameByColumnId(field.PivotName, field.PivotCode, cellInfo.value)\r\n }\r\n }\r\n })\r\n\r\n // Fill Pivot Data Cells fields\r\n let pivotDataCellsFields = tabledata.current.PivotMeasures.map(measure => {\r\n return {\r\n dataField: measure.PivotMeasureCode,\r\n area: 'data',\r\n dataType: 'number',\r\n wordWrapEnabled: true,\r\n caption: measure.MeasureCode == 'Sum' && typeof measure.DisplayName == 'string' ? ConvertStringToPascalCaseHelper(measure.DisplayName.replace(\"Sum of \", \"\")) : ConvertStringToPascalCaseHelper(measure.DisplayName),\r\n summaryType: 'custom',\r\n calculateCustomSummary: (options) => {\r\n if(options.summaryProcess == 'calculate'){\r\n let _value = !isNullOrUndefinedOrEmpty(options.value) ? options.value : 0;\r\n \r\n let decimalParts = _value.toString().split(\".\");\r\n let firstPart = decimalParts[0] ? decimalParts[0] : 0;\r\n \r\n let secondPart = decimalParts[1] ? decimalParts[1] : 0;\r\n secondPart = secondPart.toString().substr(0, 2);\r\n \r\n let _finalVal = firstPart + \".\" + secondPart\r\n\r\n options.value = Number(_finalVal)\r\n options.totalValue = (!isNullOrUndefinedOrEmpty(options.totalValue) ? options.totalValue : 0) + options.value\r\n }\r\n },\r\n format: (value) => {\r\n let isInteger = isValueInteger(measure.MeasureCode , measure.MeasureFieldDataType)\r\n let minimumFraction = isInteger ? 0 : 2;\r\n let _value = isNullOrUndefinedOrEmpty(value) ? 0 : value;\r\n return getNumberInSystemLocalFormat(_value, 2,minimumFraction);\r\n }\r\n }\r\n })\r\n\r\n let AllfieldsData = [...pivotRowsAndColumnsFields, ...pivotDataCellsFields];\r\n\r\n setDataSource(new PivotGridDataSource({\r\n store: tabledata.current.PivotData,\r\n fields: AllfieldsData,\r\n }))\r\n }\r\n }\r\n\r\n const isRowsEmptyAndColumnsNotEmpty = () => {\r\n let pivotRows = widget && !isNullOrUndefinedOrEmpty(widget?.PivotRows) ? JSON.parse(widget?.PivotRows!) : [];\r\n let pivotColumns = widget && !isNullOrUndefinedOrEmpty(widget?.PivotColumns) ? JSON.parse(widget?.PivotColumns!) : [];\r\n\r\n return pivotRows?.length === 0 && pivotColumns?.length > 0;\r\n }\r\n\r\n const canShowRowsGrandTotal = () : boolean | undefined => {\r\n if(isRowsEmptyAndColumnsNotEmpty()) {\r\n return true;\r\n }\r\n\r\n let pivotTotalsSettings = widget && !isNullOrUndefinedOrEmpty(widget?.PivotTotalsSettings) ? JSON.parse(widget?.PivotTotalsSettings!) : {};\r\n return !isNullOrUndefinedOrEmpty(pivotTotalsSettings.ShowRowsGrandTotal) ? pivotTotalsSettings.ShowRowsGrandTotal : false;\r\n }\r\n\r\n\r\n const isRowsNotEmptyAndColumnsEmpty = () => {\r\n let pivotRows = widget && !isNullOrUndefinedOrEmpty(widget?.PivotRows) ? JSON.parse(widget?.PivotRows!) : [];\r\n let pivotColumns = widget && !isNullOrUndefinedOrEmpty(widget?.PivotColumns) ? JSON.parse(widget?.PivotColumns!) : [];\r\n\r\n return pivotRows?.length > 0 && pivotColumns?.length === 0;\r\n }\r\n\r\n const canShowColumnsGrandTotal = () : boolean | undefined => {\r\n if(isRowsNotEmptyAndColumnsEmpty()) {\r\n return true;\r\n }\r\n\r\n let pivotTotalsSettings = widget && !isNullOrUndefinedOrEmpty(widget?.PivotTotalsSettings) ? JSON.parse(widget?.PivotTotalsSettings!) : {};\r\n return !isNullOrUndefinedOrEmpty(pivotTotalsSettings.ShowColumnsGrandTotal) ? pivotTotalsSettings.ShowColumnsGrandTotal : false;\r\n }\r\n\r\n const canShowRowsTotal = () : boolean | undefined => {\r\n let pivotTotalsSettings = widget && !isNullOrUndefinedOrEmpty(widget?.PivotTotalsSettings) ? JSON.parse(widget?.PivotTotalsSettings!) : {};\r\n return !isNullOrUndefinedOrEmpty(pivotTotalsSettings.ShowRowsTotal) ? pivotTotalsSettings.ShowRowsTotal : false;\r\n }\r\n\r\n const canShowColumnsTotal = () : boolean | undefined => {\r\n let pivotTotalsSettings = widget && !isNullOrUndefinedOrEmpty(widget?.PivotTotalsSettings) ? JSON.parse(widget?.PivotTotalsSettings!) : {};\r\n return !isNullOrUndefinedOrEmpty(pivotTotalsSettings.ShowColumnsTotal) ? pivotTotalsSettings.ShowColumnsTotal : false;\r\n }\r\n\r\n return (\r\n <React.Fragment>\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 <PivotGrid\r\n id=\"pivotGridId\"\r\n ref={pivotGridRef}\r\n dataSource={dataSource}\r\n allowExpandAll={true}\r\n showBorders={true}\r\n className='pivot-grid-element'\r\n onCellClick={onCellClick}\r\n showRowGrandTotals={canShowRowsGrandTotal()}\r\n showColumnGrandTotals={canShowColumnsGrandTotal()}\r\n showRowTotals={canShowRowsTotal()}\r\n showColumnTotals={canShowColumnsTotal()}\r\n showTotalsPrior='none'\r\n wordWrapEnabled={true}\r\n >\r\n <FieldPanel\r\n showColumnFields={false}\r\n showDataFields={false}\r\n showFilterFields={false}\r\n showRowFields={false}\r\n texts={{rowFieldArea: \"\"}}\r\n allowFieldDragging={false}\r\n visible={true}\r\n />\r\n <FieldChooser enabled={false} />\r\n <Scrolling mode=\"virtual\" />\r\n </PivotGrid>\r\n }\r\n </React.Fragment>\r\n )\r\n});\r\n\r\nexport default PivotTable;","import { ConvertStringToPascalCaseHelper, getNumberInSystemLocalFormat, isNullOrUndefinedOrEmpty, isValueInteger } from '../../../../Utils/General';\r\n\r\nexport type PivotApiField = {\r\n FieldId: string;\r\n FieldCode?: string;\r\n PivotCode: string;\r\n PivotName: string;\r\n DisplayName: string;\r\n DataTypeCode?: string;\r\n DateCode: string | null;\r\n FieldType: string | null;\r\n};\r\n\r\nexport type PivotApiMeasure = {\r\n PivotMeasureCode: string;\r\n MeasureCode: string;\r\n MeasureFieldId?: string;\r\n MeasureFieldDataType?: string | null;\r\n DisplayName: string;\r\n FieldType?: string;\r\n};\r\n\r\nexport const isRowPivotField = (field: PivotApiField): boolean => {\r\n return !!(field.PivotCode && field.PivotCode.indexOf('Row') !== -1);\r\n};\r\n\r\nexport const truncateToTwoDecimals = (value: any): number => {\r\n const numericValue = isNullOrUndefinedOrEmpty(value) ? 0 : Number(value);\r\n const safeValue = isNaN(numericValue) ? 0 : numericValue;\r\n const decimalParts = safeValue.toString().split('.');\r\n const firstPart = decimalParts[0] ? decimalParts[0] : '0';\r\n const secondPart = decimalParts[1] ? decimalParts[1].toString().substr(0, 2) : '0';\r\n return Number(firstPart + '.' + secondPart);\r\n};\r\n\r\nexport const isPivotMeasureValueEmpty = (value: any): boolean => {\r\n return value === null || value === undefined || value === '';\r\n};\r\n\r\nexport const logitudeSumAgg = (params: { values: any[] }): number | null => {\r\n const values = params && params.values ? params.values : [];\r\n if (values.length === 0) return null;\r\n\r\n let total = 0;\r\n let hasValue = false;\r\n for (let i = 0; i < values.length; i++) {\r\n if (isPivotMeasureValueEmpty(values[i])) continue;\r\n hasValue = true;\r\n total += truncateToTwoDecimals(values[i]);\r\n }\r\n return hasValue ? total : null;\r\n};\r\n\r\nexport const formatPivotMeasureValue = (value: any, measure: PivotApiMeasure): string => {\r\n if (isPivotMeasureValueEmpty(value)) return '';\r\n\r\n const isInteger = isValueInteger(measure.MeasureCode, measure.MeasureFieldDataType);\r\n const minimumFraction = isInteger ? 0 : 2;\r\n return getNumberInSystemLocalFormat(value, 2, minimumFraction);\r\n};\r\n\r\nexport const getPivotGroupFooterLabel = (\r\n node: any,\r\n fieldCode: string | null | undefined,\r\n rawValue: any,\r\n lookupDisplayName: (fieldCode: string, rawValue: any) => string\r\n): string => {\r\n if (!node || !node.footer) return '';\r\n\r\n if (node.level === -1) {\r\n return 'Grand Total';\r\n }\r\n\r\n if (!fieldCode) return '';\r\n\r\n const displayName = lookupDisplayName(fieldCode, rawValue);\r\n return displayName ? `${displayName} Total` : '';\r\n};\r\n\r\nexport const compareDimensionValues = (aValue: any, bValue: any, dateCode: string | null, aText?: any, bText?: any): number => {\r\n if (dateCode === 'Month') {\r\n const aNumber = aValue == null ? -1 : Number(aValue);\r\n const bNumber = bValue == null ? -1 : Number(bValue);\r\n if (aNumber < bNumber) return -1;\r\n if (aNumber > bNumber) return 1;\r\n return 0;\r\n }\r\n\r\n if (dateCode != null) {\r\n const aCompare = aValue == null ? '' : aValue;\r\n const bCompare = bValue == null ? '' : bValue;\r\n if (aCompare < bCompare) return -1;\r\n if (aCompare > bCompare) return 1;\r\n return 0;\r\n }\r\n\r\n const aDisplay = aText == null || aText === '' ? (aValue == null ? '' : aValue) : aText;\r\n const bDisplay = bText == null || bText === '' ? (bValue == null ? '' : bValue) : bText;\r\n if (aDisplay < bDisplay) return -1;\r\n if (aDisplay > bDisplay) return 1;\r\n return 0;\r\n};\r\n\r\nexport const getPivotDisplayName = (pivotData: any[], fieldName: string, dataField: string, dataFieldValue: any): string => {\r\n if (!pivotData || pivotData.length === 0) return '';\r\n const data = pivotData.find(el => el[dataField] == dataFieldValue);\r\n return data ? ConvertStringToPascalCaseHelper(data[fieldName]) : '';\r\n};\r\n\r\nexport const isPivotRowGrandTotalColumnDef = (colDef: any): boolean => {\r\n if (!colDef || !colDef.colId) {\r\n return false;\r\n }\r\n return String(colDef.colId).indexOf('PivotRowTotal_') === 0;\r\n};\r\n\r\nexport const isPivotRowGrandTotalGroupDef = (colGroupDef: any): boolean => {\r\n if (!colGroupDef) {\r\n return false;\r\n }\r\n\r\n const groupId = colGroupDef.groupId || colGroupDef.colId || '';\r\n if (String(groupId).indexOf('PivotRowTotal') >= 0) {\r\n return true;\r\n }\r\n\r\n const children = colGroupDef.children;\r\n if (!children || children.length === 0) {\r\n return false;\r\n }\r\n\r\n return children.every((child: any) => {\r\n if (child && child.children) {\r\n return isPivotRowGrandTotalGroupDef(child);\r\n }\r\n return isPivotRowGrandTotalColumnDef(child);\r\n });\r\n};\r\n\r\nexport const resolvePivotGroupHeaderName = (\r\n colGroupDef: any,\r\n columnFields: PivotApiField[],\r\n lookupDisplayName: (field: PivotApiField, rawValue: any) => string\r\n): string | null => {\r\n if (isPivotRowGrandTotalGroupDef(colGroupDef)) {\r\n return 'Grand Total';\r\n }\r\n\r\n const pivotKeys: string[] = colGroupDef && colGroupDef.pivotKeys ? colGroupDef.pivotKeys : [];\r\n if (pivotKeys.length === 0) {\r\n return null;\r\n }\r\n\r\n const field = columnFields[pivotKeys.length - 1];\r\n if (!field) {\r\n return null;\r\n }\r\n\r\n return lookupDisplayName(field, pivotKeys[pivotKeys.length - 1]);\r\n};\r\n\r\nexport const getPivotValueColumnId = (pivotValueColumn: any): string | null => {\r\n if (!pivotValueColumn) {\r\n return null;\r\n }\r\n\r\n if (typeof pivotValueColumn.getId === 'function') {\r\n return pivotValueColumn.getId();\r\n }\r\n\r\n if (typeof pivotValueColumn.getColId === 'function') {\r\n return pivotValueColumn.getColId();\r\n }\r\n\r\n if (pivotValueColumn.colId) {\r\n return String(pivotValueColumn.colId);\r\n }\r\n\r\n if (pivotValueColumn.field) {\r\n return String(pivotValueColumn.field);\r\n }\r\n\r\n return null;\r\n};\r\n\r\nexport const resolveMeasureFromPivotValueColumn = (\r\n colDef: any,\r\n measures: PivotApiMeasure[]\r\n): PivotApiMeasure | undefined => {\r\n if (!colDef || measures.length === 0) {\r\n return undefined;\r\n }\r\n\r\n if (measures.length === 1) {\r\n return measures[0];\r\n }\r\n\r\n const valueColumnId = getPivotValueColumnId(colDef.pivotValueColumn);\r\n if (valueColumnId) {\r\n const measureByValueColumn = measures.find(measure => measure.PivotMeasureCode === valueColumnId);\r\n if (measureByValueColumn) {\r\n return measureByValueColumn;\r\n }\r\n }\r\n\r\n const colId = colDef.colId ? String(colDef.colId) : '';\r\n if (colId) {\r\n const sortedMeasures = [...measures].sort(\r\n (left, right) => right.PivotMeasureCode.length - left.PivotMeasureCode.length\r\n );\r\n for (let index = 0; index < sortedMeasures.length; index++) {\r\n const measureCode = sortedMeasures[index].PivotMeasureCode;\r\n if (colId.endsWith('_' + measureCode)) {\r\n return sortedMeasures[index];\r\n }\r\n }\r\n }\r\n\r\n return undefined;\r\n};\r\n\r\nexport const resolvePivotLeafHeaderName = (\r\n colDef: any,\r\n columnFields: PivotApiField[],\r\n lookupDisplayName: (field: PivotApiField, rawValue: any) => string,\r\n measureCount: number,\r\n measures: PivotApiMeasure[]\r\n): string | null => {\r\n if (isPivotRowGrandTotalColumnDef(colDef)) {\r\n return null;\r\n }\r\n\r\n if (measureCount > 1 && colDef.pivotValueColumn) {\r\n return null;\r\n }\r\n\r\n const pivotKeys: string[] = colDef && colDef.pivotKeys ? colDef.pivotKeys : [];\r\n if (pivotKeys.length === 0) {\r\n return null;\r\n }\r\n\r\n const field = columnFields[pivotKeys.length - 1];\r\n if (!field) {\r\n return null;\r\n }\r\n\r\n return lookupDisplayName(field, pivotKeys[pivotKeys.length - 1]);\r\n};\r\n\r\nexport const resolveMeasureForSecondaryColDef = (\r\n colDef: any,\r\n measures: PivotApiMeasure[]\r\n): PivotApiMeasure | undefined => {\r\n return resolveMeasureFromPivotValueColumn(colDef, measures);\r\n};\r\n\r\nconst getColumnGroupAtHeaderLevel = (column: any, targetLevel: number): any | null => {\r\n if (!column || typeof column.getParent !== 'function') {\r\n return null;\r\n }\r\n\r\n let groupPointer = column.getParent();\r\n while (groupPointer) {\r\n const providedColumnGroup = typeof groupPointer.getProvidedColumnGroup === 'function'\r\n ? groupPointer.getProvidedColumnGroup()\r\n : null;\r\n if (!providedColumnGroup) {\r\n groupPointer = typeof groupPointer.getParent === 'function' ? groupPointer.getParent() : null;\r\n continue;\r\n }\r\n\r\n const originalGroupLevel = typeof providedColumnGroup.getLevel === 'function'\r\n ? providedColumnGroup.getLevel()\r\n : 0;\r\n const groupPointerLevel = typeof groupPointer.getPaddingLevel === 'function'\r\n ? groupPointer.getPaddingLevel()\r\n : 0;\r\n\r\n if (originalGroupLevel + groupPointerLevel <= targetLevel) {\r\n return groupPointer;\r\n }\r\n\r\n groupPointer = typeof groupPointer.getParent === 'function' ? groupPointer.getParent() : null;\r\n }\r\n\r\n return null;\r\n};\r\n\r\nconst escapeColumnIdSelector = (columnId: string): string => {\r\n if (typeof CSS !== 'undefined' && typeof CSS.escape === 'function') {\r\n return CSS.escape(columnId);\r\n }\r\n\r\n return columnId.replace(/\\\\/g, '\\\\\\\\').replace(/\"/g, '\\\\\"');\r\n};\r\n\r\nconst findHeaderGroupCellByColumnGroup = (\r\n headerContainer: HTMLElement,\r\n groupRows: HTMLElement[],\r\n targetGroupLevel: number,\r\n columnGroup: any\r\n): HTMLElement | null => {\r\n if (!columnGroup || typeof columnGroup.getUniqueId !== 'function') {\r\n return null;\r\n }\r\n\r\n const groupId = columnGroup.getUniqueId();\r\n const groupRowIndex = Math.min(Math.max(targetGroupLevel, 0), groupRows.length - 1);\r\n const targetGroupRow = groupRows[groupRowIndex];\r\n if (!targetGroupRow) {\r\n return null;\r\n }\r\n\r\n return targetGroupRow.querySelector(`[col-id=\"${escapeColumnIdSelector(groupId)}\"]`) as HTMLElement | null;\r\n};\r\n\r\nexport const applyPivotRowGrandTotalGroupHeaderLabel = (\r\n gridRootElement: HTMLElement | null,\r\n columnApi: any,\r\n measureCount: number,\r\n columnPivotFieldCount: number\r\n): void => {\r\n if (!gridRootElement || !columnApi || measureCount <= 1) {\r\n return;\r\n }\r\n\r\n clearPivotRowGrandTotalGroupHeaderMarkup(gridRootElement);\r\n\r\n const displayedColumns = typeof columnApi.getAllDisplayedColumns === 'function'\r\n ? columnApi.getAllDisplayedColumns()\r\n : [];\r\n const rowGrandTotalColumns = displayedColumns.filter((column: any) =>\r\n String(column.getColId()).indexOf('PivotRowTotal_') === 0\r\n );\r\n if (rowGrandTotalColumns.length <= 1) {\r\n return;\r\n }\r\n\r\n const centerHeaderContainer = gridRootElement.querySelector('.ag-header-viewport .ag-header-container') as HTMLElement | null;\r\n if (!centerHeaderContainer) {\r\n return;\r\n }\r\n\r\n const groupRows = Array.from(\r\n centerHeaderContainer.querySelectorAll('.ag-header-row-column-group')\r\n ) as HTMLElement[];\r\n if (groupRows.length === 0) {\r\n return;\r\n }\r\n\r\n const targetGroupLevel = columnPivotFieldCount > 0 ? columnPivotFieldCount - 1 : 0;\r\n const rowGrandTotalGroupCells = findRowGrandTotalGroupHeaderCells(\r\n centerHeaderContainer,\r\n groupRows,\r\n targetGroupLevel,\r\n rowGrandTotalColumns\r\n );\r\n if (rowGrandTotalGroupCells.length === 0) {\r\n return;\r\n }\r\n\r\n applyGrandTotalLabelToGroupHeaderCells(rowGrandTotalGroupCells);\r\n};\r\n\r\nconst clearPivotRowGrandTotalGroupHeaderMarkup = (gridRootElement: HTMLElement): void => {\r\n gridRootElement.querySelectorAll('.dl-pivot-row-grand-total-group-header, .dl-pivot-row-grand-total-group-header-sibling')\r\n .forEach(element => {\r\n element.classList.remove('dl-pivot-row-grand-total-group-header', 'dl-pivot-row-grand-total-group-header-sibling');\r\n });\r\n\r\n gridRootElement.querySelectorAll('.dl-pivot-row-grand-total-group-header-label')\r\n .forEach(label => {\r\n label.classList.remove('dl-pivot-row-grand-total-group-header-label');\r\n const labelElement = label as HTMLElement;\r\n labelElement.textContent = '';\r\n labelElement.style.width = '';\r\n labelElement.style.display = '';\r\n labelElement.style.textAlign = '';\r\n });\r\n};\r\n\r\nconst findRowGrandTotalGroupHeaderCells = (\r\n centerHeaderContainer: HTMLElement,\r\n groupRows: HTMLElement[],\r\n targetGroupLevel: number,\r\n rowGrandTotalColumns: any[]\r\n): HTMLElement[] => {\r\n const cellsByColumnGroup: HTMLElement[] = [];\r\n\r\n rowGrandTotalColumns.forEach((column: any) => {\r\n const columnGroup = getColumnGroupAtHeaderLevel(column, targetGroupLevel);\r\n const matchingCell = findHeaderGroupCellByColumnGroup(\r\n centerHeaderContainer,\r\n groupRows,\r\n targetGroupLevel,\r\n columnGroup\r\n );\r\n if (matchingCell) {\r\n cellsByColumnGroup.push(matchingCell);\r\n }\r\n });\r\n\r\n if (cellsByColumnGroup.length === rowGrandTotalColumns.length) {\r\n return cellsByColumnGroup;\r\n }\r\n\r\n const groupRowIndex = Math.min(Math.max(targetGroupLevel, 0), groupRows.length - 1);\r\n const targetGroupRow = groupRows[groupRowIndex];\r\n if (!targetGroupRow) {\r\n return cellsByColumnGroup;\r\n }\r\n\r\n const paddingCells = Array.from(\r\n targetGroupRow.querySelectorAll('.ag-header-group-cell-no-group')\r\n ) as HTMLElement[];\r\n const trailingPaddingCells = paddingCells.slice(-rowGrandTotalColumns.length);\r\n if (trailingPaddingCells.length === rowGrandTotalColumns.length) {\r\n return trailingPaddingCells;\r\n }\r\n\r\n return cellsByColumnGroup;\r\n};\r\n\r\nconst applyGrandTotalLabelToGroupHeaderCells = (rowGrandTotalGroupCells: HTMLElement[]): void => {\r\n const firstCell = rowGrandTotalGroupCells[0];\r\n const firstLabel = firstCell.querySelector('.ag-header-group-text, .ag-header-cell-text') as HTMLElement | null;\r\n if (!firstLabel) {\r\n return;\r\n }\r\n\r\n const combinedWidth = rowGrandTotalGroupCells.reduce((totalWidth, cell) => totalWidth + cell.offsetWidth, 0);\r\n firstLabel.textContent = 'Grand Total';\r\n firstLabel.style.width = `${combinedWidth}px`;\r\n firstLabel.style.display = 'inline-block';\r\n firstLabel.style.textAlign = 'center';\r\n firstLabel.classList.add('dl-pivot-row-grand-total-group-header-label');\r\n firstCell.classList.add('dl-pivot-row-grand-total-group-header');\r\n\r\n for (let index = 1; index < rowGrandTotalGroupCells.length; index++) {\r\n rowGrandTotalGroupCells[index].classList.add('dl-pivot-row-grand-total-group-header-sibling');\r\n const siblingLabel = rowGrandTotalGroupCells[index].querySelector('.ag-header-group-text, .ag-header-cell-text') as HTMLElement | null;\r\n if (siblingLabel) {\r\n siblingLabel.textContent = '';\r\n }\r\n }\r\n};\r\n\r\nexport const applyPivotRowGrandTotalHeader = (\r\n colDef: any,\r\n measureCount: number,\r\n measures: PivotApiMeasure[]\r\n): void => {\r\n if (!isPivotRowGrandTotalColumnDef(colDef)) {\r\n return;\r\n }\r\n\r\n if (measureCount <= 1) {\r\n colDef.headerName = 'Grand Total';\r\n return;\r\n }\r\n\r\n const measure = resolveMeasureFromPivotValueColumn(colDef, measures);\r\n if (measure) {\r\n colDef.headerName = getMeasureCaption(measure);\r\n }\r\n delete colDef.headerValueGetter;\r\n};\r\n\r\nexport const collectPivotRowPath = (startNode: any): { field: string, key: any }[] => {\r\n const path: { field: string, key: any }[] = [];\r\n if (!startNode) {\r\n return path;\r\n }\r\n\r\n if (startNode.footer) {\r\n if (startNode.level === -1) {\r\n return path;\r\n }\r\n\r\n if (startNode.field != null && startNode.key !== undefined) {\r\n path.unshift({ field: startNode.field, key: startNode.key });\r\n }\r\n }\r\n\r\n let node = startNode.parent;\r\n while (node && node.level >= 0) {\r\n if (!node.footer && node.field != null && node.key !== undefined) {\r\n path.unshift({ field: node.field, key: node.key });\r\n }\r\n node = node.parent;\r\n }\r\n\r\n return path;\r\n};\r\n\r\nexport const buildPivotDrillDownPivotFields = (\r\n colDef: any,\r\n startNode: any,\r\n apiFields: PivotApiField[]\r\n): any[] => {\r\n const columnFields = apiFields.filter(field => !isRowPivotField(field));\r\n const rowFields = apiFields.filter(isRowPivotField);\r\n const pivotFields: any[] = [];\r\n\r\n const columnKeys: string[] = colDef && colDef.pivotKeys ? colDef.pivotKeys : [];\r\n columnKeys.forEach((key, index) => {\r\n if (key === undefined) {\r\n return;\r\n }\r\n const field = columnFields[index];\r\n if (!field) {\r\n return;\r\n }\r\n pivotFields.push({\r\n FieldId: field.FieldId,\r\n FieldType: field.FieldType ? field.FieldType : 'Field',\r\n FieldValue: key,\r\n DateCode: field.DateCode\r\n });\r\n });\r\n\r\n collectPivotRowPath(startNode).forEach((pathItem) => {\r\n const field = rowFields.find(f => f.PivotCode === pathItem.field) || apiFields.find(f => f.PivotCode === pathItem.field);\r\n if (!field) {\r\n return;\r\n }\r\n pivotFields.push({\r\n FieldId: field.FieldId,\r\n FieldType: field.FieldType ? field.FieldType : 'Field',\r\n FieldValue: pathItem.key,\r\n DateCode: field.DateCode\r\n });\r\n });\r\n\r\n return pivotFields;\r\n};\r\n\r\nexport const getMeasureCaption = (measure: PivotApiMeasure): string => {\r\n const displayName = typeof measure.DisplayName == 'string' ? measure.DisplayName : '';\r\n if (measure.MeasureCode == 'Sum') {\r\n return ConvertStringToPascalCaseHelper(displayName.replace('Sum of ', ''));\r\n }\r\n return ConvertStringToPascalCaseHelper(displayName);\r\n};\r\n\r\nexport const parseJsonArray = (json: string | null | undefined): any[] => {\r\n if (isNullOrUndefinedOrEmpty(json)) return [];\r\n try {\r\n const parsed = JSON.parse(json as string);\r\n return parsed || [];\r\n } catch (error) {\r\n return [];\r\n }\r\n};\r\n\r\nexport const parsePivotTotalsSettings = (json: string | null | undefined): any => {\r\n if (isNullOrUndefinedOrEmpty(json)) return {};\r\n try {\r\n return JSON.parse(json as string) || {};\r\n } catch (error) {\r\n return {};\r\n }\r\n};\r\n","import React, { forwardRef, useCallback, useEffect, useMemo, useRef, useState } from 'react';\r\nimport { AgGridReact } from 'ag-grid-react';\r\nimport { LicenseManager } from 'ag-grid-enterprise';\r\nimport 'ag-grid-enterprise';\r\nimport 'ag-grid-community/dist/styles/ag-grid.css';\r\nimport 'ag-grid-community/dist/styles/ag-theme-balham.css';\r\nimport { ColDef, ColGroupDef, GridApi, GridReadyEvent, CellClickedEvent, FirstDataRenderedEvent } from 'ag-grid-community';\r\nimport { ProgressSpinner } from 'primereact/progressspinner';\r\nimport { DashboardAnalyticsService } from '../../../../services/DashboardAnalyticsService';\r\nimport { CustomChartProps } from './CustomChart';\r\nimport { Session } from '../../../../services/session';\r\nimport { isNullOrUndefinedOrEmpty } from '../../../../Utils/General';\r\nimport { ReactWidgetPM } from '../../../../types/widget';\r\nimport { WidgetLoadLogger } from '../../../../Utils/WidgetLoadLogger';\r\nimport {\r\n PivotApiField,\r\n PivotApiMeasure,\r\n compareDimensionValues,\r\n formatPivotMeasureValue,\r\n getMeasureCaption,\r\n getPivotDisplayName,\r\n getPivotGroupFooterLabel,\r\n isPivotMeasureValueEmpty,\r\n isRowPivotField,\r\n logitudeSumAgg,\r\n parseJsonArray,\r\n parsePivotTotalsSettings,\r\n resolveMeasureForSecondaryColDef,\r\n resolvePivotGroupHeaderName,\r\n resolvePivotLeafHeaderName,\r\n applyPivotRowGrandTotalHeader,\r\n applyPivotRowGrandTotalGroupHeaderLabel,\r\n buildPivotDrillDownPivotFields\r\n} from './PivotAgGridSupport';\r\n\r\ntype PivotChartProps = {\r\n customChartProps: CustomChartProps;\r\n};\r\n\r\nconst ROW_GROUP_COLUMN_MIN_WIDTH = 100;\r\n\r\nconst applyAgGridLicense = () => {\r\n if (!Session.AgGridLicenseKey) return;\r\n LicenseManager.setLicenseKey(Session.AgGridLicenseKey);\r\n};\r\n\r\nconst AgPivotGrid = forwardRef((props: PivotChartProps, _comRef) => {\r\n const [widget, setWidget] = useState<ReactWidgetPM>();\r\n const [isLoading, setIsLoading] = useState<boolean>(true);\r\n const [rowData, setRowData] = useState<any[]>([]);\r\n const [columnDefs, setColumnDefs] = useState<ColDef[]>([]);\r\n const [measureCount, setMeasureCount] = useState<number>(0);\r\n\r\n const widgetRefData = useRef<ReactWidgetPM | null>(null);\r\n const tabledata = useRef<any>();\r\n const gridApiRef = useRef<GridApi | null>(null);\r\n const columnApiRef = useRef<any>(null);\r\n const gridContainerRef = useRef<HTMLDivElement | null>(null);\r\n const pivotFieldsRef = useRef<PivotApiField[]>([]);\r\n const pivotMeasuresRef = useRef<PivotApiMeasure[]>([]);\r\n\r\n useEffect(() => {\r\n applyAgGridLicense();\r\n if (props.customChartProps && props.customChartProps.widget) {\r\n setWidget(props.customChartProps.widget);\r\n widgetRefData.current = props.customChartProps.widget;\r\n getPivotTableData(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 document.addEventListener('resizeStop', handleResize);\r\n return () => {\r\n document.removeEventListener('resizeStop', handleResize);\r\n };\r\n }, []);\r\n\r\n useEffect(() => {\r\n if (!props.customChartProps.isInEditMode) return;\r\n\r\n if (gridContainerRef.current && gridContainerRef.current.classList) {\r\n gridContainerRef.current.classList.add('force-overflow-hidden');\r\n }\r\n setTimeout(() => {\r\n handleResize();\r\n if (gridContainerRef.current && gridContainerRef.current.classList) {\r\n gridContainerRef.current.classList.remove('force-overflow-hidden');\r\n }\r\n }, 5);\r\n }, [props.customChartProps.isInEditMode]);\r\n\r\n const handleResize = () => {\r\n if (gridApiRef.current && gridApiRef.current.resetRowHeights) {\r\n gridApiRef.current.resetRowHeights();\r\n }\r\n };\r\n\r\n const getPivotTableData = (widgetPm: any) => {\r\n if (Session.Tenant == 0) {\r\n tabledata.current = [];\r\n setRowData([]);\r\n setIsLoading(false);\r\n return;\r\n }\r\n\r\n const dashboardAnalyticsService = new DashboardAnalyticsService();\r\n const widgetLoadLogger = new WidgetLoadLogger(props.customChartProps.widget as any, props.customChartProps.isPreviewModeActive, 'PostGetPivotData');\r\n dashboardAnalyticsService.getPivotData(widgetPm)\r\n .then((res) => {\r\n tabledata.current = res.data;\r\n buildGridFromPivotResponse();\r\n setIsLoading(false);\r\n widgetLoadLogger.log(res);\r\n })\r\n .catch(err => {\r\n console.log('Error while Getting Pivot Table Data: ', err);\r\n tabledata.current = null;\r\n setRowData([]);\r\n setIsLoading(false);\r\n });\r\n };\r\n\r\n const lookupDisplayName = (field: PivotApiField, rawValue: any): string => {\r\n const pivotData = tabledata.current && tabledata.current.PivotData ? tabledata.current.PivotData : [];\r\n return getPivotDisplayName(pivotData, field.PivotName, field.PivotCode, rawValue);\r\n };\r\n\r\n const lookupDisplayNameByFieldCode = (fieldCode: string, rawValue: any): string => {\r\n const field = pivotFieldsRef.current.find(f => f.PivotCode === fieldCode);\r\n if (!field) return rawValue == null ? '' : String(rawValue);\r\n return lookupDisplayName(field, rawValue);\r\n };\r\n\r\n const applyPivotDataCellFormatting = (colDef: ColDef) => {\r\n colDef.sortable = false;\r\n colDef.filter = false;\r\n colDef.cellClass = 'dl-ag-pivot-data-cell';\r\n colDef.type = 'numericColumn';\r\n };\r\n\r\n const buildGridFromPivotResponse = () => {\r\n if (!tabledata.current || !tabledata.current.PivoFields || !tabledata.current.PivotMeasures) {\r\n setRowData([]);\r\n return;\r\n }\r\n\r\n const apiFields: PivotApiField[] = tabledata.current.PivoFields;\r\n const apiMeasures: PivotApiMeasure[] = tabledata.current.PivotMeasures;\r\n pivotFieldsRef.current = apiFields;\r\n pivotMeasuresRef.current = apiMeasures;\r\n setMeasureCount(apiMeasures.length);\r\n\r\n const rowFields = apiFields.filter(isRowPivotField);\r\n const columnFields = apiFields.filter(field => !isRowPivotField(field));\r\n const defs: ColDef[] = [];\r\n\r\n rowFields.forEach((field, index) => {\r\n defs.push(createRowGroupColDef(field, index));\r\n });\r\n columnFields.forEach((field, index) => {\r\n defs.push(createPivotColDef(field, index));\r\n });\r\n apiMeasures.forEach((measure) => {\r\n defs.push(createMeasureColDef(measure));\r\n });\r\n\r\n setColumnDefs(defs);\r\n setRowData(tabledata.current.PivotData || []);\r\n };\r\n\r\n const createRowGroupColDef = (field: PivotApiField, index: number): ColDef => {\r\n return {\r\n field: field.PivotCode,\r\n headerName: field.DisplayName,\r\n rowGroup: true,\r\n rowGroupIndex: index,\r\n enableRowGroup: true,\r\n hide: true,\r\n width: ROW_GROUP_COLUMN_MIN_WIDTH,\r\n wrapText: true,\r\n autoHeight: true,\r\n sortable: false,\r\n filter: false,\r\n comparator: (a, b) => compareDimensionValues(a, b, field.DateCode, lookupDisplayName(field, a), lookupDisplayName(field, b)),\r\n valueFormatter: (params) => lookupDisplayName(field, params.value)\r\n };\r\n };\r\n\r\n const createPivotColDef = (field: PivotApiField, index: number): ColDef => {\r\n return {\r\n field: field.PivotCode,\r\n headerName: field.DisplayName,\r\n pivot: true,\r\n pivotIndex: index,\r\n enablePivot: true,\r\n hide: true,\r\n sortable: false,\r\n filter: false,\r\n pivotComparator: (a, b) => compareDimensionValues(\r\n a,\r\n b,\r\n field.DateCode,\r\n lookupDisplayName(field, a),\r\n lookupDisplayName(field, b)\r\n )\r\n };\r\n };\r\n\r\n const createMeasureColDef = (measure: PivotApiMeasure): ColDef => {\r\n return {\r\n field: measure.PivotMeasureCode,\r\n headerName: getMeasureCaption(measure),\r\n aggFunc: 'logitudeSum',\r\n enableValue: true,\r\n wrapText: true,\r\n autoHeight: true,\r\n sortable: false,\r\n filter: false,\r\n cellClass: 'dl-ag-pivot-data-cell',\r\n type: 'numericColumn',\r\n valueFormatter: (params) => formatPivotMeasureValue(params.value, measure)\r\n };\r\n };\r\n\r\n const isRowsEmptyAndColumnsNotEmpty = () => {\r\n const pivotRows = parseJsonArray(widget?.PivotRows);\r\n const pivotColumns = parseJsonArray(widget?.PivotColumns);\r\n return pivotRows.length === 0 && pivotColumns.length > 0;\r\n };\r\n\r\n const isRowsNotEmptyAndColumnsEmpty = () => {\r\n const pivotRows = parseJsonArray(widget?.PivotRows);\r\n const pivotColumns = parseJsonArray(widget?.PivotColumns);\r\n return pivotRows.length > 0 && pivotColumns.length === 0;\r\n };\r\n\r\n const canShowRowsGrandTotal = (): boolean => {\r\n if (isRowsEmptyAndColumnsNotEmpty()) return true;\r\n const settings = parsePivotTotalsSettings(widget?.PivotTotalsSettings);\r\n return !isNullOrUndefinedOrEmpty(settings.ShowRowsGrandTotal) ? !!settings.ShowRowsGrandTotal : false;\r\n };\r\n\r\n const canShowColumnsGrandTotal = (): boolean => {\r\n if (isRowsNotEmptyAndColumnsEmpty()) return true;\r\n const settings = parsePivotTotalsSettings(widget?.PivotTotalsSettings);\r\n return !isNullOrUndefinedOrEmpty(settings.ShowColumnsGrandTotal) ? !!settings.ShowColumnsGrandTotal : false;\r\n };\r\n\r\n const canShowRowsTotal = (): boolean => {\r\n const settings = parsePivotTotalsSettings(widget?.PivotTotalsSettings);\r\n return !isNullOrUndefinedOrEmpty(settings.ShowRowsTotal) ? !!settings.ShowRowsTotal : false;\r\n };\r\n\r\n const canShowColumnsTotal = (): boolean => {\r\n const settings = parsePivotTotalsSettings(widget?.PivotTotalsSettings);\r\n return !isNullOrUndefinedOrEmpty(settings.ShowColumnsTotal) ? !!settings.ShowColumnsTotal : false;\r\n };\r\n\r\n const isSingleMeasurePivot = measureCount <= 1;\r\n\r\n const processSecondaryColGroupDef = useCallback((colGroupDef: ColGroupDef) => {\r\n const columnFields = pivotFieldsRef.current.filter(field => !isRowPivotField(field));\r\n const headerName = resolvePivotGroupHeaderName(colGroupDef, columnFields, lookupDisplayName);\r\n if (headerName) {\r\n colGroupDef.headerName = headerName;\r\n }\r\n }, []);\r\n\r\n const processSecondaryColDef = useCallback((colDef: ColDef) => {\r\n const columnFields = pivotFieldsRef.current.filter(field => !isRowPivotField(field));\r\n const colDefAny: any = colDef;\r\n\r\n if (colDefAny.colId && String(colDefAny.colId).indexOf('PivotRowTotal_') === 0) {\r\n applyPivotRowGrandTotalHeader(\r\n colDefAny,\r\n pivotMeasuresRef.current.length,\r\n pivotMeasuresRef.current\r\n );\r\n } else {\r\n const headerName = resolvePivotLeafHeaderName(\r\n colDefAny,\r\n columnFields,\r\n lookupDisplayName,\r\n pivotMeasuresRef.current.length,\r\n pivotMeasuresRef.current\r\n );\r\n if (headerName) {\r\n colDef.headerName = headerName;\r\n }\r\n }\r\n\r\n applyPivotDataCellFormatting(colDef);\r\n colDef.valueFormatter = (params) => {\r\n const measure = resolveMeasureForSecondaryColDef(params.colDef, pivotMeasuresRef.current);\r\n if (!measure) return '';\r\n return formatPivotMeasureValue(params.value, measure);\r\n };\r\n }, []);\r\n\r\n const onCellClicked = useCallback((event: CellClickedEvent) => {\r\n const colDef: any = event.colDef;\r\n if (!colDef || !colDef.pivotValueColumn) return;\r\n if (isPivotMeasureValueEmpty(event.value)) return;\r\n\r\n const pivotFields = buildPivotDrillDownPivotFields(colDef, event.node, pivotFieldsRef.current);\r\n\r\n props.customChartProps.onSelectDataPoint({\r\n MeasureFieldId: '',\r\n MeasureFieldType: '',\r\n Widget: props.customChartProps.widget,\r\n MeasureCode: '',\r\n Formula: '',\r\n GroupById: '',\r\n PivotFields: pivotFields\r\n });\r\n }, []);\r\n\r\n const defaultColDef = useMemo<ColDef>(() => ({\r\n sortable: false,\r\n filter: false,\r\n resizable: false,\r\n suppressMenu: true,\r\n wrapText: true,\r\n autoHeight: true\r\n }), []);\r\n\r\n const autoGroupColumnDef = useMemo<ColDef>(() => ({\r\n minWidth: ROW_GROUP_COLUMN_MIN_WIDTH,\r\n width: ROW_GROUP_COLUMN_MIN_WIDTH,\r\n sortable: false,\r\n filter: false,\r\n wrapText: true,\r\n autoHeight: true,\r\n cellClass: 'dl-ag-pivot-row-label-cell',\r\n headerValueGetter: (params) => {\r\n const colDef: any = params.colDef;\r\n const showRowGroup = colDef && colDef.showRowGroup;\r\n if (!showRowGroup) return '';\r\n const field = pivotFieldsRef.current.find(f => f.PivotCode === showRowGroup);\r\n return field ? field.DisplayName : '';\r\n },\r\n valueFormatter: (params) => {\r\n const colDef: any = params.colDef;\r\n const showRowGroup = colDef && colDef.showRowGroup;\r\n const field = pivotFieldsRef.current.find(f => f.PivotCode === showRowGroup);\r\n if (!field) return params.value == null ? '' : String(params.value);\r\n return lookupDisplayName(field, params.value);\r\n },\r\n cellRendererParams: {\r\n suppressCount: true,\r\n footerValueGetter: (params: any) => {\r\n const fieldCode = params.node && params.node.field\r\n ? params.node.field\r\n : (params.colDef && params.colDef.showRowGroup ? params.colDef.showRowGroup : null);\r\n return getPivotGroupFooterLabel(\r\n params.node,\r\n fieldCode,\r\n params.value,\r\n lookupDisplayNameByFieldCode\r\n );\r\n }\r\n }\r\n }), []);\r\n\r\n const aggFuncs = useMemo(() => ({\r\n logitudeSum: logitudeSumAgg\r\n }), []);\r\n\r\n const scheduleRowGrandTotalHeaderLabel = useCallback(() => {\r\n const columnPivotFieldCount = pivotFieldsRef.current.filter(field => !isRowPivotField(field)).length;\r\n const applyLabel = () => {\r\n applyPivotRowGrandTotalGroupHeaderLabel(\r\n gridContainerRef.current,\r\n columnApiRef.current,\r\n measureCount,\r\n columnPivotFieldCount\r\n );\r\n };\r\n\r\n window.requestAnimationFrame(() => {\r\n window.requestAnimationFrame(() => {\r\n applyLabel();\r\n window.setTimeout(applyLabel, 150);\r\n });\r\n });\r\n }, [measureCount]);\r\n\r\n const onGridReady = (event: GridReadyEvent) => {\r\n gridApiRef.current = event.api;\r\n columnApiRef.current = event.columnApi;\r\n };\r\n\r\n const onFirstDataRendered = (event: FirstDataRenderedEvent) => {\r\n columnApiRef.current = event.columnApi;\r\n const columnApi: any = event.columnApi;\r\n if (!columnApi || !columnApi.getAllDisplayedColumns) return;\r\n\r\n const autoGroupColumnIds = columnApi.getAllDisplayedColumns()\r\n .map((col: any) => col.getColId())\r\n .filter((colId: string) => colId.indexOf('ag-Grid-AutoColumn') === 0);\r\n\r\n if (autoGroupColumnIds.length > 0 && columnApi.autoSizeColumns) {\r\n columnApi.autoSizeColumns(autoGroupColumnIds, false);\r\n }\r\n\r\n scheduleRowGrandTotalHeaderLabel();\r\n };\r\n\r\n const onColumnPivotChanged = () => {\r\n scheduleRowGrandTotalHeaderLabel();\r\n };\r\n\r\n const onColumnResized = () => {\r\n scheduleRowGrandTotalHeaderLabel();\r\n };\r\n\r\n const gridWrapperClassName = 'ag-theme-balham pivot-grid-element dl-ag-pivot-grid';\r\n\r\n return (\r\n <React.Fragment>\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 <div ref={gridContainerRef} className={gridWrapperClassName}>\r\n <AgGridReact\r\n rowData={rowData}\r\n columnDefs={columnDefs}\r\n defaultColDef={defaultColDef}\r\n autoGroupColumnDef={autoGroupColumnDef}\r\n aggFuncs={aggFuncs}\r\n pivotMode={true}\r\n groupDisplayType=\"multipleColumns\"\r\n groupDefaultExpanded={-1}\r\n suppressAggFuncInHeader={true}\r\n removePivotHeaderRowWhenSingleValueColumn={isSingleMeasurePivot}\r\n groupIncludeFooter={canShowRowsTotal()}\r\n groupIncludeTotalFooter={canShowRowsGrandTotal()}\r\n pivotRowTotals={canShowColumnsGrandTotal() ? 'after' : undefined}\r\n pivotColumnGroupTotals={canShowColumnsTotal() ? 'after' : undefined}\r\n processSecondaryColGroupDef={processSecondaryColGroupDef}\r\n processSecondaryColDef={processSecondaryColDef}\r\n onCellClicked={onCellClicked}\r\n onGridReady={onGridReady}\r\n onFirstDataRendered={onFirstDataRendered}\r\n onColumnPivotChanged={onColumnPivotChanged}\r\n onColumnResized={onColumnResized}\r\n animateRows={false}\r\n suppressContextMenu={true}\r\n suppressMovableColumns={true}\r\n headerHeight={36}\r\n rowHeight={36}\r\n />\r\n </div>\r\n }\r\n </React.Fragment>\r\n );\r\n});\r\n\r\nexport default AgPivotGrid;\r\n","import React, { useMemo } from \"react\";\r\nimport { CustomChartProps } from \"./CustomChart\";\r\nimport { DataPointSelection } from \"../../../../types/SeriesMeasure\";\r\n\r\ndeclare var window: any;\r\n\r\ntype SelectedQueryItem = {\r\n UniqueCode: string;\r\n DisplayLabel: string;\r\n GroupKey?: string;\r\n};\r\n\r\nconst parseSelectedQueries = (widgetJson: string | null | undefined): SelectedQueryItem[] => {\r\n if (!widgetJson) {\r\n return [];\r\n }\r\n try {\r\n const parsed = JSON.parse(widgetJson);\r\n if (parsed && Array.isArray(parsed.SelectedQueries)) {\r\n return parsed.SelectedQueries;\r\n }\r\n } catch {\r\n //\r\n }\r\n return [];\r\n};\r\n\r\nconst ViewsChart = (props: { customChartProps: CustomChartProps }) => {\r\n const widget = props.customChartProps.widget;\r\n const objectTableName = (widget as any)?.ViewsWidgetObjectTableName as string | undefined;\r\n\r\n const entries = useMemo(() => parseSelectedQueries((widget as any)?.WidgetJson), [widget]);\r\n\r\n const handleClick = (uniqueCode: string) => {\r\n if (!objectTableName || !uniqueCode) {\r\n return;\r\n }\r\n const selection: DataPointSelection = {\r\n Widget: widget,\r\n ViewsNavigation: {\r\n ObjectTableName: objectTableName,\r\n QueryUniqueCode: uniqueCode,\r\n },\r\n };\r\n props.customChartProps.onSelectDataPoint(selection);\r\n };\r\n\r\n if (!entries.length) {\r\n return (\r\n <div className=\"dl-views-widget-empty\">\r\n <span className=\"dl-views-widget-empty-text\">No views configured</span>\r\n </div>\r\n );\r\n }\r\n\r\n return (\r\n <div className=\"dl-views-widget-list\">\r\n {entries.map((row) => (\r\n <div key={row.UniqueCode} className=\"dl-views-widget-row\">\r\n <button\r\n type=\"button\"\r\n className=\"dl-views-widget-link\"\r\n onClick={() => handleClick(row.UniqueCode)}\r\n >\r\n {row.DisplayLabel || row.UniqueCode}\r\n </button>\r\n </div>\r\n ))}\r\n </div>\r\n );\r\n};\r\n\r\nexport default ViewsChart;\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\nimport PivotTable from \"./PivotGrid\";\r\nimport AgPivotGrid from \"./AgPivotGrid\";\r\nimport ViewsChart from \"./ViewsChart\";\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 useAgGridPivot?: boolean;\r\n onSelectDataPoint: (dataPointSelection: DataPointSelection) => void;\r\n onShowError?: (errorMsg: string | null) => void;\r\n};\r\n\r\n\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 case \"pivot\": return props.useAgGridPivot\r\n ? <AgPivotGrid customChartProps={props} />\r\n : <PivotTable customChartProps={props} />;\r\n case \"views\": return <ViewsChart 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={`dl-custom-chart-container ${props.widget && props.widget?.TypeCode == 'table' ? 'dl-table-chart-container' : ''} ${props.widget && props.widget?.TypeCode == 'pivot' ? 'dl-pivot-chart-container' : ''} ${props.widget && props.widget?.TypeCode == 'views' ? 'dl-views-chart-container' : ''}`}>{project()}</div>\r\n </React.Fragment>\r\n );\r\n}\r\n\r\n\r\nexport default CustomChart;","import { FieldDataType } from \"../../../../Constant/FieldDataType\";\r\nimport { MeasureCode } from \"../../../../Constant/MeasureCode\";\r\nimport { getNumberInSystemLocalFormat, 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, seriesMeasure: SeriesMeasure, label: any, index: number , groupbyId : string | null = null, secGroupbyId : string | null = null): string {\r\n var padding = (widget.TypeCode == 'line' && index > 0) ? 'padding-top: 3px' : '';\r\n \r\n let customToolTip = `\r\n <div style=\"min-width: 108px;` + padding + `\">\r\n\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, seriesMeasure) + `</p>\r\n </div>\r\n\r\n <hr style=\"margin: 0;border-top: 1px solid #F0F0F0;\">\r\n\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(seriesMeasure) + `</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: #A4A4A4;\">` + getTooltipValue(value, seriesMeasure,widget) + `</p>\r\n ` + getPieDonutToolTipPercentage(widget,seriesMeasure,groupbyId,secGroupbyId) +\r\n ` </div> `;\r\n\r\n if(RenderStackedChartTotalsAndPercentages(widget,seriesMeasure)){\r\n\r\n customToolTip += \r\n `<div>\r\n\r\n <hr style=\"margin-top: 6px;border-top: 1px solid #F0F0F0;\">\r\n\r\n <div style=\"display: flex; flex-direction: column; gap: 6px; flex-d 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;\"> ` + getGroupValuePercentage(seriesMeasure,groupbyId,secGroupbyId,widget) + `</p>\r\n </div>\r\n\r\n <hr style=\"margin-top: 6px;border-top: 1px solid #F0F0F0;\">\r\n\r\n <div style=\"display: flex; flex-direction: column; gap: 6px; flex-d align-items: center;margin:0;margin-top: 6px;\">\r\n <p style=\"margin: 0;white-space: pre-line; font-family: 'Manrope';font-style: normal;font-weight: 500;font-size: 11px;line-height: 100%; color: #A4A4A4;\">` + getSumOfGroupValues(seriesMeasure,groupbyId,widget) + `</p>\r\n </div>\r\n\r\n </div>`\r\n } \r\n \r\n customToolTip += `</div>`;\r\n\r\n return customToolTip;\r\n}\r\n\r\nfunction RenderStackedChartTotalsAndPercentages(widget: ReactWidgetPM , seriesMeasures: SeriesMeasure){\r\n\r\n if(!widget || !seriesMeasures || !seriesMeasures.MeasureCode){\r\n return false;\r\n }\r\n\r\n return widget.IsStacked && (seriesMeasures.MeasureCode === MeasureCode.Count || seriesMeasures.MeasureCode === MeasureCode.Sum);\r\n}\r\n\r\nfunction getGroupValuePercentage(seriesMeasures: SeriesMeasure, groupbyId: string | null, secGroupbyId: string | null, widget: ReactWidgetPM) {\r\n\r\n if(!seriesMeasures){\r\n return;\r\n }\r\n\r\n let percentageValueInLocalFormat = getPercentageGroupValueAsNumber(seriesMeasures,groupbyId,secGroupbyId,widget);\r\n\r\n return `<span style=\"margin-right:6px;\">Percentage:</span>${percentageValueInLocalFormat}%`;\r\n}\r\n\r\nfunction getSumOfGroupValues(seriesMeasure: SeriesMeasure, groupbyId: string | null, widget: ReactWidgetPM) {\r\n \r\n if(!seriesMeasure){\r\n return \"\";\r\n }\r\n\r\n let decimalPlaces = widget?.DecimalPlaces || 0;\r\n\r\n let total = getSumOfGroupValuesAsNumber(seriesMeasure,groupbyId);\r\n\r\n return `<span style=\"margin-right:6px;\">Total:</span>${getNumberInSystemLocalFormat(total,decimalPlaces,decimalPlaces,true)}`;\r\n}\r\n\r\nfunction getPercentageGroupValueAsNumber(seriesMeasure: SeriesMeasure, groupbyId: string | null, secGroupbyId: string | null, widget: ReactWidgetPM) {\r\n \r\n if(!seriesMeasure){\r\n return;\r\n }\r\n\r\n let decimalPlaces = widget?.DecimalPlaces || 0;\r\n\r\n let total = getSumOfGroupValuesAsNumber(seriesMeasure,groupbyId);\r\n\r\n let value = seriesMeasure.Values.filter(v => v.GroupById === groupbyId && v.GroupByIdSec === secGroupbyId)[0]?.Value;\r\n\r\n let percentageValueInLocalFormat = \"0.00\";\r\n\r\n if(total !== 0 && value){\r\n\r\n percentageValueInLocalFormat = getNumberInSystemLocalFormat(((value/total) * 100),decimalPlaces,decimalPlaces,false);\r\n\r\n }\r\n\r\n return percentageValueInLocalFormat;\r\n}\r\n\r\nfunction getSumOfValuesAsNumber(seriesMeasure: SeriesMeasure) {\r\n \r\n if(!seriesMeasure){\r\n return 0;\r\n }\r\n\r\n let total = 0;\r\n\r\n seriesMeasure.Values.forEach(v => {\r\n\r\n total += v.Value;\r\n\r\n });\r\n\r\n return total;\r\n}\r\n\r\nfunction getSumOfGroupValuesAsNumber(seriesMeasure: SeriesMeasure, groupbyId: string | null) {\r\n \r\n if(!seriesMeasure){\r\n return 0;\r\n }\r\n\r\n let total = 0;\r\n\r\n seriesMeasure.Values.filter(v => v.GroupById === groupbyId).forEach(v => {\r\n\r\n total += v.Value;\r\n\r\n });\r\n\r\n return total;\r\n}\r\n\r\nfunction getPieDonutToolTipPercentage(widget: ReactWidgetPM, seriesMeasures: SeriesMeasure, groupbyId: string | null , secGroupbyId: string | null): string {\r\n if (widget.TypeCode != \"donut\" && widget.TypeCode != \"pie\") return \"\";\r\n\r\n if(!seriesMeasures){\r\n return \"\";\r\n }\r\n\r\n let percentageValueInLocalFormat = getDonutPiePercentageGroupValueAsNumber(seriesMeasures,groupbyId,secGroupbyId,widget);\r\n\r\n return `<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;\">(${percentageValueInLocalFormat})%</p>`;\r\n}\r\n\r\nfunction getDonutPiePercentageGroupValueAsNumber(seriesMeasure: SeriesMeasure, groupbyId: string | null, secGroupbyId: string | null, widget: ReactWidgetPM) {\r\n \r\n if(!seriesMeasure){\r\n return;\r\n }\r\n let decimalPlaces = widget?.DecimalPlaces || 0;\r\n\r\n\r\n let total = getSumOfValuesAsNumber(seriesMeasure);\r\n\r\n let value = seriesMeasure.Values.filter(v => v.GroupById === groupbyId && v.GroupByIdSec === secGroupbyId)[0]?.Value;\r\n\r\n let percentageValueInLocalFormat = \"0.00\";\r\n\r\n if(total !== 0 && value){\r\n\r\n percentageValueInLocalFormat = getNumberInSystemLocalFormat(((value/total) * 100),decimalPlaces,decimalPlaces,false);\r\n\r\n }\r\n\r\n return percentageValueInLocalFormat;\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\nfunction getTooltipValue(value: any, seriesMeasure: SeriesMeasure, widget: ReactWidgetPM): string | number {\r\n\r\n if(isNullOrUndefined(value)){\r\n return '$dataValue';\r\n }\r\n\r\n let decimalPlaces = widget?.DecimalPlaces || 0;\r\n\r\n if(FieldDataType.isPercentage(seriesMeasure?.MeasureFieldDataType)){\r\n\r\n return getNumberInSystemLocalFormat(value,decimalPlaces,decimalPlaces,true) + \"%\";\r\n\r\n }\r\n\r\n return getNumberInSystemLocalFormat(value,decimalPlaces,decimalPlaces,true);\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}\r\n\r\n\r\n","import { getLabelFormatByDateGroupType } from \"../../../../Utils/DateHelper\";\r\nimport { getTruncatedValue } from \"../../../../Utils/General\";\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 setSafeYAxisMaxValue(chartInfo, seriesMeasures, widget);\r\n\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 setSafeYAxisMaxValue(chartInfo, seriesMeasures, widget);\r\n\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\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 setSafeYAxisMaxValue(chartInfo: ChartInfo, seriesMeasures: SeriesMeasure[], widget: ReactWidgetPM): void {\r\n if (!isColumnOrBarChart(widget)) return;\r\n\r\n const maxMeasureValue = getMaxMeasureValue(seriesMeasures, widget);\r\n if (maxMeasureValue === null) return;\r\n\r\n // Keep a 20% headroom so outside value labels do not overlap the top canvas edge.\r\n const safeYAxisMaxValue = Math.max(1, Math.ceil(maxMeasureValue * 1.2));\r\n chartInfo.yAxisMaxValue = safeYAxisMaxValue.toString();\r\n}\r\n\r\nfunction getMaxMeasureValue(seriesMeasures: SeriesMeasure[], widget: ReactWidgetPM): number | null {\r\n if (!seriesMeasures || seriesMeasures.length === 0) return null;\r\n\r\n if (widget?.IsStacked) {\r\n const stackedTotalsByGroupId = new Map<any, number>();\r\n\r\n seriesMeasures.forEach((seriesMeasure) => {\r\n seriesMeasure?.Values?.forEach((valueItem) => {\r\n const numericValue = toNumericValue(valueItem?.Value);\r\n if (numericValue === null) return;\r\n\r\n const groupId = valueItem?.GroupById;\r\n const currentTotal = stackedTotalsByGroupId.get(groupId) || 0;\r\n stackedTotalsByGroupId.set(groupId, currentTotal + numericValue);\r\n });\r\n });\r\n\r\n let maxStackedTotal: number | null = null;\r\n stackedTotalsByGroupId.forEach((total) => {\r\n if (maxStackedTotal === null || total > maxStackedTotal) {\r\n maxStackedTotal = total;\r\n }\r\n });\r\n\r\n return maxStackedTotal;\r\n }\r\n\r\n let maxValue: number | null = null;\r\n\r\n seriesMeasures.forEach((seriesMeasure) => {\r\n seriesMeasure?.Values?.forEach((valueItem) => {\r\n const numericValue = toNumericValue(valueItem?.Value);\r\n if (numericValue === null) return;\r\n\r\n if (maxValue === null || numericValue > maxValue) {\r\n maxValue = numericValue;\r\n }\r\n });\r\n });\r\n\r\n return maxValue;\r\n}\r\n\r\nfunction toNumericValue(value: any): number | null {\r\n if (value === null || value === undefined || value === \"\") return null;\r\n\r\n const numericValue = typeof value === \"number\" ? value : Number(value);\r\n if (!Number.isFinite(numericValue)) return null;\r\n\r\n return numericValue;\r\n}\r\n\r\nfunction isColumnOrBarChart(widget: ReactWidgetPM): boolean {\r\n return widget?.TypeCode === \"column\" || widget?.TypeCode === \"bar\";\r\n}\r\n\r\nfunction buildDataSource(values: SeriesMeasure[], widget: ReactWidgetPM) {\r\n\r\n let data: any[] = [];\r\n\r\n if (!values || !values[0]) return data;\r\n\r\n var series = values[0];\r\n\r\n data = series.Values.map((e) => {\r\n let item = {\r\n value: getTruncatedValue(e.Value,widget),\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, e.Value, series, e.Label, 0,e.GroupById,e.GroupByIdSec),\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 seriesMeasures.forEach(seriesMeasure => {\r\n\r\n \r\n let datas = seriesMeasure.Values.map((e, index) => {\r\n return {\r\n value: getTruncatedValue(e.Value,widget),\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\r\n const uniqueGroups: any[] = getUniqueGroupOrderdList(series);\r\n\r\n let data: any[] = [];\r\n uniqueGroups.forEach(group => {\r\n let value = series.Values.find(x => x.GroupById == group.code && x.GroupByIdSec == secGroup.code)?.Value;\r\n data.push({\r\n value: getTruncatedValue(value,widget),\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, value, series, group.label + \" - \" + secGroup.label, 0 ,group.code , secGroup.code),\r\n })\r\n });\r\n\r\n return data;\r\n}\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, getTruncatedValue, 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, isPreviewModeActive?: boolean) => {\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 = widget.ShowValue ? \"1\" : '0';\r\n chartInfo.valueFontSize = widget.ShowValue ? widget.ValueFontSize : null;\r\n chartInfo.valueFontColor = widget.ShowValue ? widget.ValueFontColor : null;\r\n chartInfo.autoScale = \"1\";\r\n chartInfo.chartTopMargin = \"0\";\r\n chartInfo.chartBottomMargin = \"0\";\r\n chartInfo.chartLeftMargin = \"0\";\r\n chartInfo.chartRightMargin = \"0\";\r\n\r\n let value = !isNullOrUndefined(data) && !isNullOrUndefined(data?.Value) ? data?.Value : 0;\r\n\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\": getTruncatedValue(value,widget),\r\n \"tooltext\": !isPreviewModeActive ? \"Click for more details\" : null\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\r\n let chart = {} as ChartInfo;\r\n \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 chart.pYAxisNameFont = defautFont;\r\n chart.pYAxisNameFontSize = defautFontSize;\r\n chart.pYAxisNameFontColor = defautColor;\r\n chart.xAxisNameFont = defautFont;\r\n chart.xAxisNameFontSize = defautFontSize;\r\n chart.xAxisNameFontColor = defautColor;\r\n chart.yAxisNameFont = defautFont;\r\n chart.yAxisNameFontSize = defautFontSize;\r\n chart.yAxisNameFontColor = defautColor;\r\n chart.drawCrossLine = \"0\";\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(isColumnOrBarChart(widget)) {\r\n chart.canvasTopPadding = \"40\";\r\n }\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 = \"15\"\r\n }\r\n\r\n if(isValuePositionInside && isPieOrDonutChart(widget)) {\r\n chart.minAngleForValue = \"27\"\r\n }\r\n\r\n chart.formatNumber = \"1\";\r\n\r\n let _numberSeparatorSettings = getGlobalNumberFormatting();\r\n chart.thousandSeparator = _numberSeparatorSettings.thousandsSeparator;\r\n chart.decimalSeparator = _numberSeparatorSettings.decimalSeparator;\r\n\r\n chart.numberSuffix = isFirstMeasureTypePercentage(widget) ? \"%\" : null;\r\n\r\n if(widget.ShowMeasureUnit && widget.MeasureUnit1){\r\n\r\n chart.numberSuffix = (chart.numberSuffix) ? ` ${widget.MeasureUnit1} ${chart.numberSuffix}` : ` ${widget.MeasureUnit1}`;\r\n }\r\n\r\n if(widget.ShowMeasureUnit && widget.MeasureUnit2){\r\n\r\n chart.sNumberSuffix = ` ${widget.MeasureUnit2}`; // Suffix for the secondary Y-axis\r\n }\r\n\r\n if(isDecimalPlacesEnabled(widget)){\r\n\r\n if(widget.DecimalPlaces && widget.DecimalPlaces > 0){\r\n\r\n chart.forceDecimals = \"1\";\r\n chart.decimals = `${widget.DecimalPlaces}`;\r\n\r\n }else{\r\n\r\n chart.forceDecimals = \"0\";\r\n chart.decimals = \"0\";\r\n }\r\n }\r\n\r\n\r\n if(isWidgetUsedAbbreviation(widget)){\r\n\r\n chart.formatNumberScale= \"1\";\r\n\r\n }else{\r\n chart.formatNumberScale= \"0\";\r\n }\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 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\r\n if(chartInfo.sNumberSuffix){\r\n\r\n if(isSecondMeasureTypePercentage(widget)){\r\n\r\n chartInfo.sNumberSuffix = `${chartInfo.sNumberSuffix} % `;\r\n\r\n }\r\n \r\n }else{\r\n\r\n chartInfo.sNumberSuffix = isSecondMeasureTypePercentage(widget) ? \"%\" : null;\r\n\r\n }\r\n\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, '&nbsp;&nbsp;');\r\n\r\n var neededSpaces = Math.ceil((maxLenght - textLenght) / 2);\r\n var space = '&nbsp;'\r\n text = space.repeat(neededSpaces) + text + space.repeat(neededSpaces);\r\n return text.replace(/\\s+/g, '&nbsp;&nbsp;');\r\n}\r\n\r\nfunction isDecimalPlacesEnabled(widget: ReactWidgetPM): boolean | null {\r\n \r\n if(widget.TypeCode == \"pivot\"){\r\n return false;\r\n }\r\n\r\n return true;\r\n}\r\n\r\n\r\nfunction isWidgetUsedAbbreviation(widget: ReactWidgetPM) {\r\n \r\n if(!widget || widget.TypeCode == 'kpi' || widget.TypeCode == 'pivot'){\r\n return false;\r\n }\r\n\r\n if(widget.UseNumberAbbreviation){\r\n\r\n return true;\r\n }\r\n\r\n return false;\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 yAxisMaxValue: 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 valueFontSize: string | null;\r\n valueFontColor: string | null;\r\n autoScale: string | null;\r\n formatNumber: string | null;\r\n forceDecimals: string | null;\r\n decimals: string | null; \r\n\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 { isNullOrUndefined, isNullOrUndefinedOrEmpty } from \"../../../../Utils/General\";\r\nimport { WidgetLoadLogger } from \"../../../../Utils/WidgetLoadLogger\";\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 onShowError: (errorMsg: string | null) => void;\r\n isPreviewModeActive?: boolean;\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 isTargetWidget = (postWidget: ReactWidgetPM)=>{\r\n return postWidget && (postWidget.TypeCode == 'column' || postWidget.TypeCode == 'bar' || postWidget.TypeCode == 'line')\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 let isTargetUsed = isTargetWidget(postWidget) && postWidget.WidgetMeasures && postWidget.WidgetMeasures[1] && postWidget.WidgetMeasures[1].MeasureCode == 'Target';\r\n if(isTargetUsed){\r\n const widgetLoadLogger = new WidgetLoadLogger(postWidget, props.isPreviewModeActive, \"PostGetTargetDataAnalytic\");\r\n dashboardAnalyticsService.getTargetAnalyticsData(postWidget as ReactWidgetPM, signal).then((result: any) => {\r\n if(result?.data && !isNullOrUndefined(result?.data?.SeriesMeasures)){\r\n handleData(result?.data?.SeriesMeasures);\r\n chartData.current = result?.data?.SeriesMeasures; \r\n }\r\n\r\n if(result?.data && !isNullOrUndefined(result?.data?.Errors) && result?.data?.Errors.length > 0){\r\n showTargetUsageTooltipMessageError(result?.data?.Errors[0]);\r\n } else {\r\n showTargetUsageTooltipMessageError(null);\r\n }\r\n\r\n setDataLoaded(true);\r\n widgetLoadLogger.log(result);\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 }else{\r\n const widgetLoadLogger = new WidgetLoadLogger(postWidget, props.isPreviewModeActive, \"PostGetDataAnalytic\");\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 widgetLoadLogger.log(result);\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\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 showTargetUsageTooltipMessageError = (errorMsg: string | null = \"\") => {\r\n props.onShowError(errorMsg);\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\n\r\n\r\n return (\r\n <div className={'db-fc-parent-container'} ref={fusionRef}>\r\n <div className={'db-fc-container' + (dataLoaded && error ? \" db-fc-container-error\" : \"\")} key={fusionKey} ref={ref} id={chartContainerId}>\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 {dataLoaded && !error &&\r\n <ReactFC\r\n {...args}\r\n fcEvent-dataplotClick={dataplotClick}\r\n fcEvent-loaded={loaded}\r\n onRender={renderComplete}\r\n />\r\n }\r\n {dataLoaded && 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 </div>\r\n }\r\n </div>\r\n </div>\r\n )\r\n\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\nimport { WidgetLoadLogger } from \"../../../../Utils/WidgetLoadLogger\";\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 isPreviewModeActive?: boolean;\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 const widgetLoadLogger = new WidgetLoadLogger(postWidget, props.isPreviewModeActive, \"PostGetGaugeData\");\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 widgetLoadLogger.log(result);\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!, props.isPreviewModeActive)\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 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 renderComplete = (eventObj) => {\r\n // Access the chart's container\r\n const chartRef = eventObj.sender;\r\n const chartContainer = FusionCharts.getObjectReference(chartRef.id);\r\n if (!chartContainer) {\r\n console.error('Chart container is undefined');\r\n return;\r\n }\r\n const svgContainer = chartContainer.querySelector('svg');\r\n if (!svgContainer) {\r\n console.error('SVG Container is undefined');\r\n return;\r\n }\r\n\r\n const textElements = svgContainer.querySelectorAll('text');\r\n if (textElements.length > 0) {\r\n\r\n const lastTextElement = textElements[textElements.length - 1];\r\n\r\n if (!props.isPreviewModeActive) {\r\n\r\n lastTextElement.style.cursor = 'pointer';\r\n lastTextElement.style.transition = 'fill 0.2s, text-decoration 0.2s';\r\n\r\n lastTextElement.addEventListener('mouseenter', function () {\r\n lastTextElement.style.fill = '#007bff';\r\n lastTextElement.style.textDecoration = 'underline';\r\n });\r\n\r\n lastTextElement.addEventListener('mouseleave', function () {\r\n lastTextElement.style.fill = '';\r\n lastTextElement.style.textDecoration = 'none';\r\n });\r\n }\r\n\r\n lastTextElement.addEventListener('click', function () {\r\n\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.onSelectDataPoint({\r\n MeasureFieldId: measureFieldId,\r\n Widget: widget.current,\r\n MeasureCode: currentWidgetMeasure!.MeasureCode,\r\n Formula: currentWidgetMeasure!.Formula,\r\n });\r\n });\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-guage'} key={fusionKey} id={chartContainerId}>\r\n <ReactFC\r\n {...args}\r\n fcEvent-dataplotClick={dataplotClick}\r\n fcEvent-renderComplete={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, 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 { ReactComponent as TargetWarningIcon } from \"../../assets/images/red-circle-warning.svg\"\r\nimport Popup from 'reactjs-popup';\r\nimport { PopupActions } from 'reactjs-popup/dist/types';\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 duplicateBtnClicked?(id: any): any;\r\n copyToClipboardBtnClicked?(key: any, widget: ReactWidgetPM): 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 useAgGridPivot?: 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 [showHeaderErrorMessages, setShowHeaderErrorMessages] = useState(false);\r\n const [headerErrorMessages, setHeaderErrorMessages] = useState(\"\");\r\n const [showCopiedNotification, setShowCopiedNotification] = useState(false);\r\n const copyPopupRef = useRef<PopupActions>(null);\r\n const copiedNotificationTimer = useRef<any>(null);\r\n\r\n\r\n const editWidget = () => {\r\n props.editBtnClicked(widget.current)\r\n };\r\n\r\n const duplicateWidget = () => {\r\n if(props && props.duplicateBtnClicked){\r\n props.duplicateBtnClicked(widget.current?.key)\r\n } else if(props && props.copyBtnClicked){\r\n props.copyBtnClicked(widget.current?.key)\r\n }\r\n };\r\n\r\n const copyWidgetToClipboard = () => {\r\n if(props && props.copyToClipboardBtnClicked && widget.current){\r\n props.copyToClipboardBtnClicked(widget.current?.key, widget.current);\r\n setShowCopiedNotification(true);\r\n if (copiedNotificationTimer.current) clearTimeout(copiedNotificationTimer.current);\r\n copiedNotificationTimer.current = setTimeout(() => {\r\n setShowCopiedNotification(false);\r\n }, 700);\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 return () => {\r\n if (copiedNotificationTimer.current) clearTimeout(copiedNotificationTimer.current);\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\") return <CustomChart isInEditMode={props.isInEditMode} isPreviewModeActive={props.isPreviewModeActive} useAgGridPivot={props.useAgGridPivot} dataBinding={props.dataBinding} widget={widget.current} widgetRef={props.widgetRef} onSelectDataPoint={props.onSelectDataPoint} onShowError={(errorMsg) => showErrorMsg(errorMsg)} />;\r\n if (widget.current?.TypeCode == \"table\" || widget.current?.TypeCode == \"pivot\" || widget.current?.TypeCode == \"views\") return <CustomChart isInEditMode={props.isInEditMode} isPreviewModeActive={props.isPreviewModeActive} useAgGridPivot={props.useAgGridPivot} 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} isPreviewModeActive={props.isPreviewModeActive} />\r\n return <FusionChart ref={fusionChartRef} dataBinding={props.dataBinding} widget={widget.current} widgetRef={props.widgetRef} onSelectDataPoint={props.onSelectDataPoint} onShowError={(errorMsg) => showErrorMsg(errorMsg)} isPreviewModeActive={props.isPreviewModeActive} />\r\n }\r\n\r\n \r\n const showErrorMsg = (msg: string | null) => {\r\n if(msg && msg.length > 0){\r\n setHeaderErrorMessages(msg || \"\");\r\n setShowHeaderErrorMessages(true); \r\n } else {\r\n setHeaderErrorMessages(\"\");\r\n setShowHeaderErrorMessages(false); \r\n }\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 isPivotWidget = ()=> {\r\n return widget && widget.current && widget.current.TypeCode == 'pivot';\r\n }\r\n\r\n const isTableOrPivotWidget = ()=> {\r\n return widget && widget.current && (widget.current.TypeCode == 'table' || widget.current.TypeCode == 'pivot');\r\n }\r\n\r\n const getwidgetTitlesContainer = ()=> {\r\n return isTableOrPivotWidget() ? \"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 ${isPivotWidget() ? \"min-width-105\" : \"\"} ${isTitleAligmentRight() ? \"padding-left-12\" : \"\"}`}>\r\n <span style={{visibility : isTableWidget() ? \"visible\" : \"hidden\"}}>{isTableWidget() ? \"Showing the first 100 rows\" : \"\"}</span>\r\n {\r\n !props.isInEditMode && !props.isPreviewModeActive && isTableWidget() &&\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 ${isPivotWidget() ? \"pivot-header\" : \"\"}`}>\r\n <div className={`header-contents ${isTableWidget() ? \"border-bottom-light-white\" : \"\"}`}>\r\n {\r\n isTitleAligmentRight() && isTableOrPivotWidget() && tableHintMessage()\r\n }\r\n\r\n <div style={{ cursor: props.isInEditMode ? \"move\" : \"default\",\r\n justifyContent: isTableOrPivotWidget() ? 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: '#19395C'}}\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 isTableOrPivotWidget() && 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() && isTableOrPivotWidget() ? '5%' : undefined,\r\n }}>\r\n {widget.current?.Subtitle}\r\n </div>\r\n </div>\r\n \r\n {\r\n !isTitleAligmentRight() && isTableOrPivotWidget() && 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 <div> <EditWidgetIcon className=\"widget-card-edit-icon\" onClick={() => editWidget()} /> </div>\r\n <Popup\r\n ref={copyPopupRef}\r\n className=\"widget-copy-dropdown-container\"\r\n trigger={\r\n <div>\r\n <CopyWidgetIcon className=\"widget-card-copy-icon\" />\r\n </div>\r\n }\r\n position={['bottom left', 'bottom center']}\r\n closeOnDocumentClick\r\n closeOnEscape\r\n arrow={false}\r\n offsetY={2}\r\n >\r\n <div className=\"widget-copy-dropdown-menu\">\r\n <div className=\"widget-copy-dropdown-item\" onClick={() => { copyPopupRef.current?.close(); duplicateWidget(); }}>Duplicate</div>\r\n <div className=\"widget-copy-dropdown-item\" onClick={() => { copyPopupRef.current?.close(); copyWidgetToClipboard(); }}>Copy</div>\r\n </div>\r\n </Popup>\r\n <div> <DeleteWidgetIcon onClick={() => props.deleteBtnClicked(props.widget?.key)} /> </div>\r\n </div>\r\n }\r\n\r\n {showCopiedNotification &&\r\n <div className=\"widget-copied-notification\">\r\n <span className=\"widget-copied-notification-check\">&#10003;</span>\r\n <span className=\"widget-copied-notification-title\">{widget.current?.Title}</span>\r\n <span className=\"widget-copied-notification-text\">widget copied</span>\r\n </div>\r\n }\r\n\r\n {!props.isInEditMode && showHeaderErrorMessages &&\r\n\r\n <div\r\n className=\"header-message-error\">\r\n <Popup\r\n className=\"header-message-error-tooltip-container\"\r\n trigger={\r\n <div>\r\n <TargetWarningIcon />\r\n </div>\r\n }\r\n position={['top center']}\r\n arrowStyle={{color: '#19395C'}}\r\n offsetY={-2}\r\n on={['hover', 'focus']}\r\n >\r\n <span className=\"header-message-error-tooltip-text\">{headerErrorMessages}</span>\r\n </Popup>\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 onCopyWidgetToClipboard?:(key: string, widget: ReactWidgetPM) => void,\r\n dataBinding: DashboardDataBinding,\r\n onSelectDataPoint: (dataPointSelection: DataPointSelection) => void,\r\n useAgGridPivot?: boolean;\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 document.dispatchEvent(new CustomEvent(\"resizeStop\",{}));\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 function copyWidgetToClipboard(key: string, widget: ReactWidgetPM) {\r\n if(props && props.onCopyWidgetToClipboard){\r\n props.onCopyWidgetToClipboard(key, widget);\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 useAgGridPivot={props.useAgGridPivot}\r\n duplicateBtnClicked={copyWidget}\r\n copyToClipboardBtnClicked={copyWidgetToClipboard}\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\nimport 'devextreme/dist/css/dx.light.css';\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 isMasterNumberClickable?: any;\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 onCopyWidgetToClipboard?:(key: string, widget: ReactWidgetPM) => void,\r\n openDeleteWidgetConfirmWindow: (deleteProps: DeleteWidgetProps) => void,\r\n onSelectDataPoint: (dataPointSelection: DataPointSelection) => void;\r\n useAgGridPivot?: boolean;\r\n agGridLicenseKey?: string;\r\n};\r\nconst Dashboard = (props: DashboardProps) => {\r\n Session.UseAgGridPivot = !!props.useAgGridPivot;\r\n Session.AgGridLicenseKey = props.agGridLicenseKey;\r\n\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 Session.isMasterNumberClickable = props?.isMasterNumberClickable;\r\n Session.UseAgGridPivot = !!props.useAgGridPivot;\r\n Session.AgGridLicenseKey = props.agGridLicenseKey;\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 Session.UseAgGridPivot = !!props.useAgGridPivot;\r\n Session.AgGridLicenseKey = props.agGridLicenseKey;\r\n }, [props.useAgGridPivot, props.agGridLicenseKey])\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 copyWidgetToClipboard = (key: string, widget: ReactWidgetPM) => {\r\n if(props && props.onCopyWidgetToClipboard){\r\n props.onCopyWidgetToClipboard(key, widget);\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 useAgGridPivot={props.useAgGridPivot}\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 useAgGridPivot={props.useAgGridPivot}\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 onCopyWidgetToClipboard={copyWidgetToClipboard}\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","requestHeaders","isDashboardClickHouseActive","signal","Token","window","IsDashboardClickHouseActive","urlparameters","mykeys","addtionalFiltersValues","i","propName","propValue","ignoreFilter","concat","encodeURIComponent","JSON","stringify","DashboardAnalyticsService","_ApiServices","getData","widget","controller","getTargetAnalyticsData","getKpiData","getTableData","getGaugeData","getObjectTableNameByWidgetEntityId","entityId","getPivotData","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","getDateRangesByPeriod","_operator","_interval","_range","date1","date2","toLowerCase","dateGroupCodes","customDateGroupCodes","Number","getDateRangesByCode","code","_fromDate","_toDate","previousNextDates","FieldDataType","isNumericType","fieldDataType","Decimal","Double","UnsDecimal","SigDouble","Integer","UnsInteger","Percentage","isInteger","isPercentage","isLookUpType","LookUp","isPickListType","PickList","PickList2","isTextOrNTextType","Text","nText","isTextType","isNTextType","isBooleanType","Boolean","isDateOrDateTimeType","Date","DateTime","MeasureCode","isNullOrUndefined","val","isNullOrUndefinedOrEmpty","getGlobalNumberFormatting","numberFormatCode","NumberFormatCode","numberSeparatorSettings","thousandsSeparator","decimalSeparator","isValueInteger","measureCode","measureFieldType","Count","getTruncatedValue","value","isNaN","truncateDecimals","DecimalPlaces","getNumberInSystemLocalFormat","decimalDigitsCount","minimumFractionDigits","isValueTruncated","applyAbbreviation","decimalParts","toString","maxFractionDigits","_numberSeparatorSettings","abbreviationSymbol","Math","abs","_val","toLocaleString","maximumFractionDigits","_formattedValue","replaceAll","numberOfDecimalParts","isFinite","numStr","toLocaleLowerCase","integerPart","decimalPart","truncated","slice","resultStr","parseFloat","ConvertStringToPascalCaseHelper","stringValue","splittedWords","filter","f","map","t","toUpperCase","join","WidgetLoadLogService","create","widgetLoadLog","WidgetLoadLogger","isPreviewMode","requestName","StartTime","getTime","Widget","RequestName","log","loadDataResponse","canCreateLog","totalExecutionTime","widgetLoadLogService","Tenant","WidgetId","Id","DashboardId","LoadTime","getLoadTime","TotalExecutionTime","IsClickHouse","isClickHouse","WidgetType","TypeCode","IsDrillDown","then","_response","_error","loadTimeHeaderKey","loadTimeHeader","isNumber","clickHouseHeaderKey","clickHouseHeader","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","comparePeriodOperator","ComparePeriodDateFilter","DateRangeOperator","Operator","comparePeriodInterval","DatePickerTextFieldValue","String","ComparePeriodDateFilterDates","ComparisonPeriodType","FieldValue","FieldValue2","emptyData","Value","dashboardAnalyticsService","postWidget","onChange","widgetLoadLogger","handleResponseErrors","console","response","ErrorMessage","message","onShowError","Errors","drillDownToKPIValues","isDrillDownToMainValues","measureFieldId","currentWidgetMeasure","WidgetMeasures","MeasureFieldId","onSelectDataPoint","Formula","GroupById","IsKPISecondaryValues","isComparisonIndicatorChecked","_kpiSettings","_kpiSettingsAsObj","ComparisonIndicator","getRatioComponent","CompareWithPrevious","React","className","getArrowComponent","style","fontSize","getKPIFormattingPropertyValue","Ratio","ComparisonValue","marginTop","Increase","getPreviousValueComponent","ComparisonLabel","formatedValue","comparisonValue","onClick","title","color","isPercentageMeasureField","ComparisonAbbreviationSymbol","ShowMeasureUnit","Unit","MeasureFieldDataType","getValueData","getValueComponent","AbbreviationSymbol","getPeriodLabelByPeriodCode","getLabelFromKPISettings","IsGlobalFilterKPIComparison","GlobalFilterDateTimeValueCode","getKPIFormattingData","KPIFormatSettings","propertyName","unit","kpiFormattingData","getLabel","Label","getIsKPIHasSmallestHeight","widgetRef","Layout","h","isKPIHasSmallestHeight","ProgressSpinner","width","height","strokeWidth","animationDuration","Alighnment","RedWarningIcon","TableChart","isTableLoading","setIsTableLoading","setWidget","tableData","setTableData","tableColumns","setTableColumns","sortField","setSortField","sortOrder","setSortOrder","isDefaultSortOptionsUsed","widgetRefData","objectTableName","setObjectTableName","getObjectTableName","ReOrderColumns","Columns","updatedWidgetColumns","updatedWidgetColumnsData","_updatedTableColumns","forEach","c","columns","isCalculatedColumn","ColumnVariableType","dataTypeCode","ColumnVariableDataType","dateDisplayMode","DateTimeDisplayMode","column","find","IsCalculatedColumn","DataTypeCode","EntityId","res","ObjectTableName","PageIndex","PageSize","fillTableData","getBooleanStringValue","_value","charAt","getDateTimeValue","datePart","tableRecords","Fields","setDefaultSortOptions","Result","item","_tableRow","field","FieldCode","valueType","tableCols","_widget","_sortFieldCode","getSortFieldCodeBySortFieldId","DefaultSortBy","_sortDirection","DefaultSortDirection","sortFieldId","col","getSortFieldIdBySortFieldCode","sortFieldCode","sortTableData","sortedField","canSort","_sortOrder","ScreenSortBy","ScreenSortDirection","ScreenSortByType","isInEditMode","getTableFormattingData","TableFormatSettings","getTableFormattingPropertyValue","tableFormattingData","getTableConditionalRulesData","TableConditionalRules","isValueEmpty","IsValidRule","rule","operator","RuleOperator","Code","ruleValue1","RuleValue1","ruleValue2","RuleValue2","stripTime","getFullYear","getMonth","getDate","parseLocalDate","dateStr","year","month","day","parseCustomDateLocalDate","isDateValidRule","actualValue","getCellPropertyByRule","cellValue","defaultValue","columnType","columnData","el","FieldId","FieldType","FieldRules","firstValidRule","getCellFloatAlignment","isRowTenantMatched","rowData","isClickableCell","fieldCode","IsShipmentMasterFieldClickable","isMasterNumberClickable","tableCellClicked","TableRowEntityId","RowData","getCellValue","columnValue","decimalPlaces","isAbbreviationApplied","UseNumberAbbreviation","cellTemplateBody","dateTimeDisplayMode","fontColor","fontSizeWithoutUnit","fontSizeWitUnit","display","backgroundColor","headerTemplate","showMeasureUnit","MeasureUnit","DisplayName","DataTable","loading","resizableColumns","columnResizeMode","responsiveLayout","index","Column","header","body","PivotTable","forwardRef","comRef","tabledata","pivotGridRef","PivotGridDataSource","store","fields","dataSource","setDataSource","getPivotTableData","document","addEventListener","handleResize","removeEventListener","instance","element","classList","setTimeout","remove","repaint","setPivotDataSourceFields","err","customizeCells","useCallback","e","cell","rowPath","columnPath","cellElement","children","padding","borderRadius","onCellClick","area","pivotFields","columnFields","fieldValue","fieldData","rowFields","r","PivotFields","getColumnNameByColumnId","fieldName","dataField","datafieldValue","PivotData","SortRowAndColumnHeaders","a","b","DateCode","aValue","bValue","aText","text","bText","PivoFields","PivotMeasures","pivotRowsAndColumnsFields","PivotCode","caption","name","PivotName","allowSorting","allowFiltering","sortingMethod","expanded","wordWrapEnabled","customizeText","cellInfo","pivotDataCellsFields","measure","PivotMeasureCode","dataType","summaryType","calculateCustomSummary","options","summaryProcess","firstPart","secondPart","substr","_finalVal","totalValue","minimumFraction","AllfieldsData","isRowsEmptyAndColumnsNotEmpty","pivotRows","PivotRows","pivotColumns","PivotColumns","canShowRowsGrandTotal","pivotTotalsSettings","PivotTotalsSettings","ShowRowsGrandTotal","isRowsNotEmptyAndColumnsEmpty","canShowColumnsGrandTotal","ShowColumnsGrandTotal","canShowRowsTotal","ShowRowsTotal","canShowColumnsTotal","ShowColumnsTotal","Fragment","PivotGrid","id","ref","allowExpandAll","showBorders","showRowGrandTotals","showColumnGrandTotals","showRowTotals","showColumnTotals","showTotalsPrior","FieldPanel","showColumnFields","showDataFields","showFilterFields","showRowFields","texts","rowFieldArea","allowFieldDragging","visible","FieldChooser","enabled","Scrolling","mode","isRowPivotField","truncateToTwoDecimals","numericValue","safeValue","isPivotMeasureValueEmpty","logitudeSumAgg","params","values","total","hasValue","formatPivotMeasureValue","getPivotGroupFooterLabel","node","rawValue","lookupDisplayName","footer","level","displayName","compareDimensionValues","dateCode","aNumber","bNumber","aCompare","bCompare","aDisplay","bDisplay","getPivotDisplayName","pivotData","dataFieldValue","isPivotRowGrandTotalColumnDef","colDef","colId","isPivotRowGrandTotalGroupDef","colGroupDef","groupId","every","child","resolvePivotGroupHeaderName","pivotKeys","getPivotValueColumnId","pivotValueColumn","getId","getColId","resolveMeasureFromPivotValueColumn","measures","valueColumnId","measureByValueColumn","sortedMeasures","sort","left","right","endsWith","resolvePivotLeafHeaderName","measureCount","resolveMeasureForSecondaryColDef","getColumnGroupAtHeaderLevel","targetLevel","getParent","groupPointer","providedColumnGroup","getProvidedColumnGroup","originalGroupLevel","getLevel","groupPointerLevel","getPaddingLevel","escapeColumnIdSelector","columnId","CSS","escape","findHeaderGroupCellByColumnGroup","headerContainer","groupRows","targetGroupLevel","columnGroup","getUniqueId","groupRowIndex","min","max","targetGroupRow","querySelector","applyPivotRowGrandTotalGroupHeaderLabel","gridRootElement","columnApi","columnPivotFieldCount","clearPivotRowGrandTotalGroupHeaderMarkup","displayedColumns","getAllDisplayedColumns","rowGrandTotalColumns","centerHeaderContainer","Array","querySelectorAll","rowGrandTotalGroupCells","findRowGrandTotalGroupHeaderCells","applyGrandTotalLabelToGroupHeaderCells","labelElement","textContent","textAlign","cellsByColumnGroup","matchingCell","paddingCells","trailingPaddingCells","firstCell","firstLabel","combinedWidth","reduce","totalWidth","offsetWidth","siblingLabel","applyPivotRowGrandTotalHeader","headerName","getMeasureCaption","headerValueGetter","collectPivotRowPath","startNode","path","unshift","parent","buildPivotDrillDownPivotFields","apiFields","columnKeys","pathItem","parseJsonArray","json","parsed","parsePivotTotalsSettings","ROW_GROUP_COLUMN_MIN_WIDTH","applyAgGridLicense","AgGridLicenseKey","LicenseManager","setLicenseKey","AgPivotGrid","_comRef","setRowData","columnDefs","setColumnDefs","setMeasureCount","gridApiRef","columnApiRef","gridContainerRef","pivotFieldsRef","pivotMeasuresRef","resetRowHeights","widgetPm","buildGridFromPivotResponse","lookupDisplayNameByFieldCode","applyPivotDataCellFormatting","sortable","cellClass","type","apiMeasures","defs","createRowGroupColDef","createPivotColDef","createMeasureColDef","rowGroup","rowGroupIndex","enableRowGroup","hide","wrapText","autoHeight","comparator","valueFormatter","pivot","pivotIndex","enablePivot","pivotComparator","aggFunc","enableValue","settings","isSingleMeasurePivot","processSecondaryColGroupDef","processSecondaryColDef","colDefAny","onCellClicked","event","MeasureFieldType","defaultColDef","useMemo","resizable","suppressMenu","autoGroupColumnDef","minWidth","showRowGroup","cellRendererParams","suppressCount","footerValueGetter","aggFuncs","logitudeSum","scheduleRowGrandTotalHeaderLabel","applyLabel","requestAnimationFrame","onGridReady","onFirstDataRendered","autoGroupColumnIds","autoSizeColumns","onColumnPivotChanged","onColumnResized","gridWrapperClassName","AgGridReact","pivotMode","groupDisplayType","groupDefaultExpanded","suppressAggFuncInHeader","removePivotHeaderRowWhenSingleValueColumn","groupIncludeFooter","groupIncludeTotalFooter","pivotRowTotals","pivotColumnGroupTotals","animateRows","suppressContextMenu","suppressMovableColumns","headerHeight","rowHeight","parseSelectedQueries","widgetJson","isArray","SelectedQueries","ViewsChart","ViewsWidgetObjectTableName","entries","WidgetJson","handleClick","uniqueCode","selection","ViewsNavigation","QueryUniqueCode","row","UniqueCode","DisplayLabel","CustomChart","project","useAgGridPivot","buildToolTip","seriesMeasure","groupbyId","secGroupbyId","customToolTip","getTooltiplabel","getMeasureType","getTooltipValue","getPieDonutToolTipPercentage","RenderStackedChartTotalsAndPercentages","getGroupValuePercentage","getSumOfGroupValues","seriesMeasures","IsStacked","Sum","percentageValueInLocalFormat","getPercentageGroupValueAsNumber","getSumOfGroupValuesAsNumber","Values","v","GroupByIdSec","getSumOfValuesAsNumber","getDonutPiePercentageGroupValueAsNumber","Name","formula","months","quarters","getCategoriesBasedDataSource","chartInfo","seriesMeasuresIsEmpty","handelNullLabels","setSafeYAxisMaxValue","chart","categories","buildCategories","dataset","buildDataSet","getStackedDataSource","buildStackedCategories","buildStackedDataSet","getSimpleDataSource","buildDataSource","isColumnOrBarChart","maxMeasureValue","getMaxMeasureValue","safeYAxisMaxValue","ceil","yAxisMaxValue","stackedTotalsByGroupId","valueItem","toNumericValue","currentTotal","set","maxStackedTotal","maxValue","series","tooltext","dataSet","datas","seriesname","anchorBgColor","anchorBorderColor","anchorBorderThickness","anchorHoverColor","parentyaxis","PlotasLineChart","PlotonSecondAxis","renderAs","uniqueGroups","x","LabelSec","group","seriesName","buildStackedGroupData","emptylabels","filledLabels","sortDataSet","s1","s2","aa","bb","secGroup","getUniqueGroupOrderdList","category","defautFontSize","defautFont","defautColor","BuildFusionChartObject","SecondaryGroupById","getBarObject","getStackedBarObject","getLineObject","getClusteredLineObject","getPieObject","getDonutObject","getColumnObject","getClusteredColumnObject","getWidgetRanges","gaugeRanges","GaugeRanges","minValue","getGaugeObject","fusionObject","getDefaultChartobject","getDefaultChartInfo","manageResize","valueBelowPivot","showValue","ShowValue","valueFontSize","ValueFontSize","valueFontColor","ValueFontColor","autoScale","chartTopMargin","chartBottomMargin","chartLeftMargin","chartRightMargin","isGroupByFieldDateTime","GroupByFieldDataType","scrollPosition","scrollPadding","flatScrollBars","showPercentValues","ShowValueAsNumber","showLegend","ShowLegend","setLineDash","legendPosition","getWidgetLegendPosition","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","valuePosition","ValuePosition","isValuePositionInside","placeValuesInside","minPlotHeightForValue","isPieOrDonutChart","minAngleForValue","formatNumber","thousandSeparator","numberSuffix","MeasureUnit1","MeasureUnit2","sNumberSuffix","isDecimalPlacesEnabled","forceDecimals","decimals","isWidgetUsedAbbreviation","formatNumberScale","palettecolors","enableSlicing","enableRotation","toolTipBgColor","showToolTipShadow","plotHoverEffect","scrollHeight","scrollWidth","plotColorinTooltip","showLabels","LabelsPosition","setOnChartLegend","setChartInLegend","LegendPosition","legendScrollBgColor","legendIconScale","scrollShowButtons","legendCaptionAlignment","alignLegendWithCanvas","pieRadius","showSecondaryLimits","showDivLineSecondaryValue","pYAxisNameBorderPadding","sYAxisNameBorderPadding","pYAxisName","sYAxisname","textLength","getTitle","maxLenght","textLenght","neededSpaces","space","repeat","FusionChartHelper","getPieRadius","getLegendWidth","legendWidth","trimChartLabels","chartWidth","chartHeight","handleLegendWidth","handlePieRadius","chartMinumunHeight","startPercantage","stepHeight","step","floor","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","creditLabel","FusionChart","dataLoaded","setDataLoaded","fusionKey","chartData","resizeTimer","setResizeTimer","axiosController","AbortController","args","setArgs","fChart","setFchart","chartContainerId","progressRef","fusionRef","fusionChartHelper","isDummyChangesActive","_data","handleData","abort","clearTimeout","HandleSizeChange","useImperativeHandle","onResizeFinish","oldPieRadius","oldLegendWidth","offsetHeight","isTargetWidget","updatedAxiosController","isTargetUsed","SeriesMeasures","showTargetUsageTooltipMessageError","isDummyChange","errorMsg","dataplotClick","eventObj","dataObj","groupbyid","measurefieldid","measurecode","groupbyidsec","useResizeObserver","onResize","resizeTo","renderComplete","handlePieDonutChartTooltip","chartDataSource","handleOtherChartsTooltip","loaded","sender","onRender","setFusionKey","getChartData","chartRef","chartContainer","getObjectReference","svgContainer","textElements","lastTextElement","cursor","transition","fill","textDecoration","WidgetCard","fusionChartRef","showHeaderErrorMessages","setShowHeaderErrorMessages","headerErrorMessages","setHeaderErrorMessages","showCopiedNotification","setShowCopiedNotification","copyPopupRef","copiedNotificationTimer","editWidget","editBtnClicked","duplicateWidget","duplicateBtnClicked","copyBtnClicked","copyWidgetToClipboard","copyToClipboardBtnClicked","onEditWidget","getCSSPropertyValue","widgetData","propUnit","propDefaultVal","GetChartComponent","showErrorMsg","GaugeChart","msg","isTableWidget","isPivotWidget","isTableOrPivotWidget","getwidgetTitlesContainer","drilldownToTableData","isThereTitle","Title","isThereSubtitle","Subtitle","tableHintMessage","isTitleAligmentRight","visibility","TitleAlignment","justifyContent","flexDirection","Popup","trigger","position","arrowStyle","offsetY","on","EditWidgetIcon","CopyWidgetIcon","closeOnDocumentClick","closeOnEscape","arrow","close","DeleteWidgetIcon","deleteBtnClicked","TargetWarningIcon","deepClone","obj","ResponsiveReactGridLayout","WidthProvider","Responsive","DashboardDesigner","array12","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","dispatchEvent","CustomEvent","confirmDeleteWidget","deleteWidgetProps","onWidgetDelete","newLayouts","newWidgets","ChangeSetOp","openEditWidget","copyWidget","onCopyWidget","onCopyWidgetToClipboard","y","newPlaceholderRows","Event","layoutGridProps","compactType","draggableCancel","isDraggable","isResizable","onWidthChange","cols","md","sm","xs","xxs","useCSSTransforms","Dashboard","UseAgGridPivot","agGridLicenseKey","widgetlayoutsState","setWidgetlayoutsState","setIsInEditMode","setIsPreviewModeActive","previewWidget","setPreviewWidget","CurrentUserId","userId","tenant","onGetLayouts","isOnEditLayout","onAddWidget","updateWidgets","layoutsDic","sizeType","newWidgetlayouts","StartPotistion","EndPosition","onChangeLayouts","openDeleteWidgetConfirmWindow"],"mappings":"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"}