logitude-dashboard-library 3.2.2 → 3.2.4

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/Utils/General.tsx","../src/features/Dashboard/ChartsComponents/CustomCharts/KpiChart.tsx","../src/features/Dashboard/ChartsComponents/CustomCharts/TableChart.tsx","../src/features/Dashboard/ChartsComponents/CustomCharts/CustomChart.tsx","../src/features/Dashboard/ChartsComponents/FusionCharts/FusionColors.tsx","../src/features/Dashboard/ChartsComponents/FusionCharts/FusionChartObjectHelper.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/FusionChart.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}","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 post<T>(api,date){\r\n let token: string = this.getTokenFromStorage();\r\n\t\tvar apiURL = `${this._apiUrl}${api}`;\r\n return axios.post<T>(apiURL,date, { headers: { 'Content-Type': 'application/json', 'Token': token } });\r\n }\r\n\r\n getTokenFromStorage(){\r\n return Session.Token || '';\r\n }\r\n private ConcatFiltersToURL(filters: ApiQueryFilters, urlparameters: string)\r\n {\r\n var mykeys = Object.keys(filters);\r\n var addtionalFiltersValues: string | null = null;\r\n\r\n for (var i in mykeys) {\r\n var propName = mykeys[i];\r\n var propValue = filters[propName];\r\n var ignoreFilter = ((propName.indexOf(\"Operator\") > 0 && propValue == \"Equals\") || propName == \"AdditionalFilters\");\r\n\r\n if (urlparameters != \"?\") {\r\n urlparameters = urlparameters.concat('&');\r\n }\r\n\r\n if (!ignoreFilter) {\r\n propValue = propValue ? encodeURIComponent(propValue) : '';\r\n urlparameters = urlparameters.concat(propName.concat('=').concat(propValue));\r\n }\r\n\r\n if (propName == \"AdditionalFilters\" && propValue.length > 0) {\r\n addtionalFiltersValues = JSON.stringify(propValue);\r\n }\r\n }\r\n\r\n if (addtionalFiltersValues) {\r\n urlparameters = urlparameters.concat(\"&AdditionalFilters=\").concat(addtionalFiltersValues);\r\n }\r\n return urlparameters;\r\n }\r\n}","import axios from \"axios\";\r\nimport { ApiQueryFilters } from \"../common/data-contracts/ApiQueryFilter\";\r\nimport { ReactDashboardPM } from \"../types/Dashboard\";\r\nimport { SeriesMeasure } from \"../types/SeriesMeasure\";\r\nimport { ApiServices } from \"./ApiServices\";\r\nimport { Tools } from './tools';\r\nimport { ReactWidgetPM } from '../types/widget';\r\nimport { KpiChartData } from \"../types/KpiChart\";\r\n\r\n\r\nexport class DashboardAnalyticsService{ \r\n _ApiServices:ApiServices;\r\n controller = 'DashboardAnalytics';\r\n constructor(){\r\n this._ApiServices = new ApiServices();\r\n }\r\n \r\n\r\n getData(widget: ReactWidgetPM) {\r\n return this._ApiServices.post<SeriesMeasure[]>(`/api/${this.controller}/PostGetDataAnalytic`,widget);\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<KpiChartData>(`/api/${this.controller}/PostGetTableData`,widget);\r\n }\r\n \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\n\r\nexport {\r\n getLabelFormatByDateGroupType\r\n}","const isNullOrUndefined = (val: any) => {\r\n return val == null || val == undefined \r\n}\r\n\r\nexport {\r\n isNullOrUndefined\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 { getLabelFormatByDateGroupType } from \"../../../../Utils/DateHelper\";\r\nimport { isNullOrUndefined } from \"../../../../Utils/General\";\r\nimport { v4 as uuidv4 } from 'uuid';\r\n\r\ntype KpiChartProps = {\r\n customChartProps: CustomChartProps;\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 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 = { ...widget.current };\r\n postWidget.onChange = undefined;\r\n dashboardAnalyticsService.getKpiData(postWidget as ReactWidgetPM).then(result => {\r\n setData(result.data);\r\n setIsLoading(false);\r\n }, error => {\r\n console.log('error', error);\r\n if (error?.response?.data?.ErrorMessage) setError(error?.response?.data?.ErrorMessage);\r\n else setError(error.message);\r\n setIsLoading(false);\r\n\r\n })\r\n }\r\n\r\n const kpiClick = () => {\r\n var measureFieldId;\r\n var currentWidgetMeasure = widget?.current?.WidgetMeasures![0];\r\n if (widget?.current?.WidgetMeasures) measureFieldId = widget?.current?.WidgetMeasures[0]?.MeasureFieldId;\r\n props.customChartProps.onSelectDataPoint({\r\n MeasureFieldId: measureFieldId,\r\n Widget: widget.current,\r\n MeasureCode : currentWidgetMeasure!.MeasureCode,\r\n Formula : currentWidgetMeasure!.Formula,\r\n GroupById: data?.GroupById\r\n });\r\n }\r\n\r\n function getRatioComponent(): React.ReactNode {\r\n if (!data?.CompareWithPrevious) return null;\r\n return (\r\n <div className={\"dl-kpi-ratio-container\"}>\r\n {getArrowComponent()}\r\n <div className={'dl-kpi-ratio-text'}>{data?.Ratio} %</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 (!data?.CompareWithPrevious) return null;\r\n var prevtext = !data?.ComparisonValue ? '' : data?.ComparisonValue;\r\n let labelFormated = getLabelFormatByDateGroupType(data.ComparisonLabel,widget.current!,false)\r\n prevtext = labelFormated+\": \" + prevtext;\r\n\r\n return (\r\n <div className={\"dl-kpi-prev-container\"}>\r\n <div className={\"dl-kpi-prev-text\"}>{prevtext}</div>\r\n {data?.ComparisonAbbreviationSymbol && <div className=\"dl-kpi-prev-abbreviationSymbol\">{data?.ComparisonAbbreviationSymbol}</div>}\r\n </div>\r\n );\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 className=\"dl-kpi-value dl-kpi-textTrimming\">{data?.Value}</div>);\r\n\r\n }\r\n\r\n function getValueComponent(): React.ReactNode {\r\n return (\r\n <div className={\"dl-kpi-sub-container\"}>\r\n {getValueData()}\r\n {data?.AbbreviationSymbol && <div className=\"dl-kpi-abbreviationSymbol\">{data?.AbbreviationSymbol}</div>}\r\n {widget.current && widget.current.ShowMeasureUnit && data?.Unit && <div className=\"dl-kpi-unit\">{data?.Unit}</div>}\r\n {getRatioComponent()}\r\n </div>\r\n );\r\n }\r\n\r\n function getLabel():React.ReactNode{\r\n let labelFormated = getLabelFormatByDateGroupType(data!.Label,widget.current!,false)\r\n\r\n return(\r\n <div className={\"dl-kpi-label-container\"}>\r\n <span className={\"dl-kpi-label-span dl-kpi-textTrimming\"}>{labelFormated}</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 isThereTitle && isThereSubTitle && isKPIHasSmallestHeight;\r\n }\r\n\r\n return (\r\n isLoading || !widget.current?\r\n <div className={'dl-full-hight dl-flex-content-center spinner-custome'}>\r\n <ProgressSpinner style={{ width: '40px', height: '40px' }} strokeWidth=\"4\" animationDuration=\"2s\" />\r\n </div>\r\n :\r\n !error && widget.current?\r\n <div key={triggerId} onClick={kpiClick} className={(widget.current?.Alighnment == \"Left\" ? \"dl-kpi-container-click db-justify-content-flex-start\" : \"dl-kpi-container-click\")}>\r\n <div className={isKPICustomSizeNeeded ? \"dl-kpi-container kpi-custom-size\" : \"dl-kpi-container\"}>\r\n {getLabel()}\r\n {getValueComponent()}\r\n {getPreviousValueComponent()}\r\n </div>\r\n </div>\r\n : <div className=\"dl-flex-content-center dl-full-hight\" style={{ width: '100%' }}>\r\n <div className=\"dl-tooltip\">\r\n <RedWarningIcon className=\"red-warning-icon\" />\r\n <span className=\"dl-tooltiptext\">{error}</span>\r\n </div>\r\n\r\n </div>\r\n );\r\n}\r\n\r\n\r\nexport default KpiChart;\r\n","import { ProgressSpinner } from \"primereact/progressspinner\";\r\nimport React, { useEffect, useState } from \"react\";\r\nimport { DashboardAnalyticsService } from \"../../../../services/DashboardAnalyticsService\";\r\nimport { Session } from \"../../../../services/session\";\r\nimport { ReactWidgetPM } from \"../../../../types/widget\";\r\nimport { CustomChartProps } from \"./CustomChart\";\r\nimport { ReactComponent as RedWarningIcon } from \"../../../../assets/images/red-warning.svg\"\r\nimport moment from \"moment\";\r\nimport { isNullOrUndefined } from \"../../../../Utils/General\";\r\n\r\ntype TableChartProps = {\r\n customChartProps: CustomChartProps;\r\n};\r\nconst TableChart = (props: TableChartProps) => {\r\n const [isLoading, setIsLoading] = useState<boolean>(true);\r\n const [error, setError] = useState<string>();\r\n const [widget, setWidget] = useState<ReactWidgetPM>();\r\n const [tableData, setTableData] = useState<any>([]);\r\n \r\n useEffect(() => {\r\n if(props.customChartProps && props.customChartProps.widget) {\r\n setWidget(props.customChartProps.widget);\r\n getTableData(props.customChartProps.widget);\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 = 50;\r\n \r\n dashboardAnalyticsService.getTableData(widget as ReactWidgetPM)\r\n .then((res: any) => {\r\n if(res && res.data) {\r\n fillTableData(res.data);\r\n }\r\n setIsLoading(false);\r\n })\r\n .catch((error: any) => {\r\n if (error?.response?.data?.ErrorMessage) setError(error?.response?.data?.ErrorMessage);\r\n else setError(error.message);\r\n setIsLoading(false);\r\n })\r\n }\r\n\r\n const getBooleanStringValue = (value: any) => {\r\n if(isNullOrUndefined(value)) 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) => {\r\n if(!value) return value;\r\n\r\n let _date = moment(value);\r\n if(!_date || !_date.isValid()) return value;\r\n \r\n return _date.format(\"DD MMM YYYY\")\r\n }\r\n\r\n const fillTableData = (tableData : any) => {\r\n let tableRecoreds: any = [];\r\n let tableRow: any = [];\r\n if(tableData.Fields){\r\n tableData.Fields.forEach(item => {\r\n tableRow.push({...item, value: item.DisplayName ? item.DisplayName : \"\", isHeader: true})\r\n })\r\n }\r\n\r\n tableRecoreds.push(tableRow);\r\n\r\n if(tableData.Result){\r\n tableData.Result.forEach(item => {\r\n\r\n let _tableRow: any = [];\r\n tableData.Fields.forEach(field => {\r\n let key = field.FieldCode\r\n let valueType = field.DataTypeCode;\r\n\r\n let _value = valueType && (valueType == \"Date\" || valueType == \"DateTime\") ? getDateTimeValue(item[key]) : valueType == \"Boolean\" ? getBooleanStringValue(item[key]) : item[key]\r\n _tableRow.push({value: _value}); \r\n })\r\n\r\n tableRecoreds.push(_tableRow);\r\n })\r\n }\r\n\r\n setTableData([...tableRecoreds]);\r\n\r\n }\r\n\r\n const getTableTemplate = () => {\r\n return (\r\n tableData.length == 0 ?\r\n <div className=\"dl-kpi-no-data margin-auto\">No data to display.</div> :\r\n <table>\r\n <thead>\r\n <tr>\r\n {\r\n tableData[0].map((el: any) => {\r\n return (\r\n <th key={el.value}>{!isNullOrUndefined(el.value) ? el.value + \"\" : ''}</th>\r\n )\r\n })\r\n }\r\n </tr>\r\n </thead>\r\n <tbody>\r\n {\r\n tableData.map((el: any, index: number) => {\r\n return index == 0 ? null\r\n : (\r\n\r\n <tr key={index}>\r\n {\r\n el.map((item: any, index2: number) => {\r\n return <td key={index2 + \"_\" + el.value}>{!isNullOrUndefined(item.value) ? item.value + \"\" : ''}</td>\r\n })\r\n }\r\n </tr>\r\n\r\n )\r\n })\r\n }\r\n </tbody>\r\n </table>\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> : getTableTemplate()\r\n \r\n )\r\n\r\n\r\n\r\n\r\n}\r\n\r\n\r\nexport default TableChart;\r\n","import React from \"react\";\r\nimport { DashboardDataBinding } from \"../../../../types/DashboardDataBinding\";\r\nimport { DataPointSelection } from \"../../../../types/SeriesMeasure\";\r\nimport { ReactWidgetPM } from \"../../../../types/widget\";\r\nimport KpiChart from \"./KpiChart\";\r\nimport TableChart from \"./TableChart\";\r\n\r\n\r\nexport type CustomChartProps = {\r\n widget: ReactWidgetPM | undefined,\r\n widgetRef: ReactWidgetPM | undefined,\r\n dataBinding: DashboardDataBinding;\r\n isPreviewModeActive?:boolean;\r\n onSelectDataPoint: (dataPointSelection: DataPointSelection) => void;\r\n};\r\nconst CustomChart = (props: CustomChartProps) => {\r\n const project = () => {\r\n switch (props.widget?.TypeCode) {\r\n case \"kpi\": return <KpiChart customChartProps={props} />;\r\n case \"table\": return <TableChart customChartProps={props} />;\r\n \r\n default: return <div>Invalid Type</div>;\r\n }\r\n }\r\n return (\r\n <div className={props.widget && props.widget?.TypeCode == 'table' ? \"dl-custom-chart-container dl-table-chart-container\" : \"dl-custom-chart-container\"}>{project()}</div>\r\n );\r\n}\r\n\r\n\r\nexport default CustomChart;","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\"","import { lightBlueColor, lightGreenColor, lightOrangeColor, lightPurpleColor, lightRedColor, lightTurquoiseColor, lightYellowColor, mainBlueColor, mainGreenColor, mainOrangeColor, mainPurpleColor, mainRedColor, mainTurquoiseColor, mainYellowColor } 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 \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","import { SeriesMeasure } from \"../../../../types/SeriesMeasure\";\r\nimport { ReactWidgetPM } from \"../../../../types/widget\";\r\n\r\nexport function buildToolTip(widget: ReactWidgetPM, value: any, seriesName: SeriesMeasure, label: any, index: number): string {\r\n var padding = (widget.TypeCode == 'line' && index > 0) ? 'padding-top: 3px' : '';\r\n return `\r\n <div style=\"min-width: 108px;` + padding + `\">\r\n <div style=\"display: flex;align-items: center;margin-bottom: 6px;\">\r\n <span style=\"margin: 0; height: 10px; width: 10px; background-color: #A4A4A4; border-radius: 50%; display: inline-block;\"></span>\r\n <p style=\" margin: 0; margin-left: 4px;font-family: 'Manrope'; font-style: normal;font-weight: 400; font-size: 11px; line-height: 100%; color: #323232; flex: none; order: 1;flex-grow: 0;\"> ` + getTooltiplabel(label) + `</p>\r\n </div>\r\n <hr style=\"margin: 0;border-top: 1px solid #F0F0F0;\">\r\n <div style=\"display: flex;align-items: center;margin:0;margin-top: 6px;\">\r\n <p style=\"margin: 0;font-family: 'Manrope';font-style: normal;font-weight: 400; font-size: 11px;line-height: 100%;color: #A4A4A4;flex: none;order: 0;flex-grow: 0;\"> ` + getMeasureType(seriesName) + `</p>\r\n <p style=\"margin: 0;margin-left: 6px;font-family: 'Manrope';font-style: normal;font-weight: 500;font-size: 11px;line-height: 100%; color: #323232;flex: none; order: 1;flex-grow: 0;\">` + getTooltipValue(value) + `</p>\r\n ` + getTooltipPercentage(widget) +\r\n ` </div>\r\n </div>\r\n `;\r\n}\r\n\r\nfunction getTooltipPercentage(widget: ReactWidgetPM): string {\r\n if (widget.TypeCode != \"donut\" && widget.TypeCode != \"pie\") return \"\";\r\n return `\r\n <p style=\"margin: 0;margin-left: 2px;font-family: 'Manrope';font-style: normal;font-weight: 500;font-size: 11px;line-height: 100%; color: #A4A4A4;flex: none; order: 1;flex-grow: 0;\">($percentValue)</p>\r\n `;\r\n}\r\n\r\nfunction getTooltiplabel(value: any): string {\r\n if (value) return value;\r\n return '$label';\r\n}\r\n\r\nfunction getTooltipValue(value: any): string {\r\n if (value) return value;\r\n return '$dataValue';\r\n}\r\n\r\nfunction getMeasureType(seriesMeasure:SeriesMeasure): string {\r\n if (!seriesMeasure.Name) return \"Count:\"\r\n if(seriesMeasure.MeasureCode == \"Formula\"){\r\n var formula =JSON.parse(seriesMeasure.Formula)\r\n return formula.Name;\r\n }\r\n return seriesMeasure.Name.replace(/ .*/, '') + \":\";\r\n}","import { getLabelFormatByDateGroupType } from \"../../../../Utils/DateHelper\";\r\nimport { SeriesMeasure, SeriesMeasureValue } from \"../../../../types/SeriesMeasure\";\r\nimport { ReactWidgetPM } from \"../../../../types/widget\";\r\nimport { ChartInfo, getSeriesPositionColor } from \"./FusionChartObjectHelper\";\r\nimport { buildToolTip } from \"./FusionChartTooltip\";\r\n\r\nvar months = [\"Jan\", \"Feb\", \"Mar\", \"Apr\", \"May\", \"Jun\", \"Jul\", \"Aug\", \"Sep\", \"Oct\", \"Nov\", \"Dec\"];\r\nvar quarters = [\"Q\", \"Q1\", \"Q2\", \"Q3\", \"Q4\"];\r\n\r\nexport function getCategoriesBasedDataSource(chartInfo: ChartInfo, seriesMeasures: SeriesMeasure[], widget: ReactWidgetPM): any {\r\n if (seriesMeasuresIsEmpty(seriesMeasures)) return null;\r\n\r\n handelNullLabels(seriesMeasures);\r\n return {\r\n chart: chartInfo,\r\n categories: buildCategories(seriesMeasures, widget),\r\n dataset: buildDataSet(seriesMeasures, widget)\r\n }\r\n}\r\n\r\nexport function getStackedDataSource(chartInfo: ChartInfo, seriesMeasures: SeriesMeasure[], widget: ReactWidgetPM): any {\r\n if (seriesMeasuresIsEmpty(seriesMeasures)) return null;\r\n\r\n handelNullLabels(seriesMeasures);\r\n return {\r\n chart: chartInfo,\r\n categories: buildStackedCategories(seriesMeasures, widget),\r\n dataset: buildStackedDataSet(seriesMeasures, widget)\r\n }\r\n}\r\n\r\n\r\nexport function getSimpleDataSource(chartInfo: ChartInfo, seriesMeasures: SeriesMeasure[], widget: ReactWidgetPM): any {\r\n if (seriesMeasuresIsEmpty(seriesMeasures)) return null;\r\n\r\n handelNullLabels(seriesMeasures);\r\n return {\r\n chart: chartInfo,\r\n data: buildDataSource(seriesMeasures, widget),\r\n }\r\n}\r\n\r\nfunction handelNullLabels(seriesMeasures: SeriesMeasure[]) {\r\n seriesMeasures.forEach(element => {\r\n element.Values.forEach(value => {\r\n if (!value.Label || value.Label == '')\r\n value.Label = 'Not defined'\r\n });\r\n });\r\n}\r\n\r\nfunction seriesMeasuresIsEmpty(seriesMeasures: SeriesMeasure[]): boolean {\r\n if (!seriesMeasures || seriesMeasures.length == 0) return true;\r\n let hasValue = false;\r\n seriesMeasures.forEach(item => {\r\n if (item.Values && item.Values.length > 0) hasValue = true;\r\n });\r\n return !hasValue;\r\n}\r\n\r\nfunction buildDataSource(values: SeriesMeasure[], widget: ReactWidgetPM) {\r\n let data: any[] = [];\r\n if (!values || !values[0]) return data;\r\n\r\n var series = values[0];\r\n data = series.Values.map((e, index) => {\r\n let item = {\r\n value: e.Value,\r\n label: getLabelFormatByDateGroupType(e.Label, widget, false),\r\n id: {\r\n GroupById: e.GroupById,\r\n MeasureFieldId: series.MeasureFieldId,\r\n MeasureCode: series.MeasureCode,\r\n Formula: series.Formula\r\n },\r\n tooltext: buildToolTip(widget, null, series, e.Label, 0),\r\n color: getSeriesPositionColor(index + 1)\r\n }\r\n return item;\r\n });\r\n return data;\r\n}\r\n\r\nfunction buildDataSet(seriesMeasures: SeriesMeasure[], widget: ReactWidgetPM) {\r\n let dataSet: any[] = [];\r\n let seriesPosition = 1;\r\n\r\n seriesMeasures.forEach(seriesMeasure => {\r\n let datas = seriesMeasure.Values.map((e, index) => {\r\n return {\r\n value: e.Value,\r\n id: {\r\n GroupById: e.GroupById,\r\n MeasureFieldId: seriesMeasure.MeasureFieldId,\r\n MeasureCode: seriesMeasure.MeasureCode,\r\n Formula: seriesMeasure.Formula\r\n },\r\n tooltext: buildToolTip(widget, e.Value, seriesMeasure, null, index),\r\n }\r\n });\r\n var color = getSeriesPositionColor(seriesPosition);\r\n dataSet.push({\r\n data: datas,\r\n seriesname: seriesMeasure.Name,\r\n color: color,\r\n anchorBgColor: color,\r\n anchorBorderColor: \"#FFFFFF\",\r\n anchorBorderThickness: \"2\",\r\n anchorHoverColor: color,\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 var color = getSeriesPositionColor(seriesPosition);\r\n dataSet.push({\r\n seriesName: group.label,\r\n color: color,\r\n data: buildStackedGroupData(group, series, widget)\r\n });\r\n seriesPosition++;\r\n });\r\n let emptylabels = dataSet.filter(e=>e.seriesName == null)\r\n dataSet = widget.SecondaryDateGroupCode ? sortDataSet(dataSet.filter(e=>e.seriesName != null), widget.SecondaryDateGroupCode!) : dataSet;\r\n return emptylabels.concat(dataSet);\r\n}\r\n\r\nfunction sortDataSet(dataSet: any[], SecondaryDateGroupCode: string) {\r\n switch (SecondaryDateGroupCode) {\r\n case \"Year\":\r\n return dataSet.sort((s1, s2) => s1.seriesName - s2.seriesName);\r\n case \"Month\":\r\n return dataSet.sort(function (s1, s2) {\r\n return months.indexOf(s1.seriesName) - months.indexOf(s2.seriesName);\r\n });\r\n case \"Quarter\":\r\n return dataSet.sort(function (s1, s2) {\r\n return quarters.indexOf(s1.seriesName) - quarters.indexOf(s2.seriesName);\r\n });\r\n case \"Month & Year\": return dataSet.sort(function sort(s1, s2) {\r\n var aa = s1.seriesName.split(' '),\r\n bb = s2.seriesName.split(' ');\r\n return aa[1] - bb[1] || months.indexOf(aa[0]) - months.indexOf(bb[0]);\r\n });\r\n case \"Quarter & Year\": return dataSet.sort(function sort(s1, s2) {\r\n var aa = s1.seriesName.split(' '),\r\n bb = s2.seriesName.split(' ');\r\n return aa[1] - bb[1] || quarters.indexOf(aa[0]) - quarters.indexOf(bb[0]);\r\n });\r\n default:\r\n return dataSet;\r\n }\r\n}\r\n\r\nfunction buildStackedGroupData(secGroup: any, series: SeriesMeasure, widget: ReactWidgetPM) {\r\n const uniqueGroups: any[] = getUniqueGroupOrderdList(series);\r\n\r\n let data: any[] = [];\r\n uniqueGroups.forEach(group => {\r\n data.push({\r\n value: series.Values.find(x => x.GroupById == group.code && x.GroupByIdSec == secGroup.code)?.Value,\r\n id: {\r\n GroupById: group.code,\r\n MeasureFieldId: series.MeasureFieldId,\r\n GroupByIdSec: secGroup.code,\r\n MeasureCode: series.MeasureCode,\r\n Formula: series.Formula\r\n },\r\n tooltext: buildToolTip(widget, null, series, group.label + \" - \" + secGroup.label, 0),\r\n })\r\n });\r\n\r\n return data;\r\n}\r\nfunction buildCategories(seriesMeasures: SeriesMeasure[], widget: ReactWidgetPM) {\r\n var categories = seriesMeasures[0].Values.map((e) => {\r\n return {\r\n label: getLabelFormatByDateGroupType(e.Label, widget, false)\r\n }\r\n });\r\n var result: any[] = [];\r\n result.push({ category: categories });\r\n return result;\r\n}\r\n\r\nfunction buildStackedCategories(seriesMeasures: SeriesMeasure[], widget: ReactWidgetPM) {\r\n const uniqueGroups: any[] = getUniqueGroupOrderdList(seriesMeasures[0]);\r\n\r\n var categories = uniqueGroups.map((e) => {\r\n return {\r\n label: getLabelFormatByDateGroupType(e.label, widget, false)\r\n }\r\n });\r\n var result: any[] = [];\r\n result.push({ category: categories });\r\n return result;\r\n}\r\n\r\nfunction getUniqueGroupOrderdList(series: SeriesMeasure) {\r\n let uniqueGroups: any[] = [];\r\n series.Values.forEach(element => {\r\n if (!uniqueGroups.find(x => x.code == element.GroupById))\r\n uniqueGroups.push({ code: element.GroupById, label: element.Label });\r\n });\r\n return uniqueGroups;\r\n}\r\n\r\n","import { ChartObject } from \"fusioncharts\";\r\nimport { SeriesMeasure } from \"../../../../types/SeriesMeasure\";\r\nimport { ReactWidgetPM } from \"../../../../types/widget\";\r\nimport { getCategoriesBasedDataSource, getSimpleDataSource, getStackedDataSource } from \"./FusionChartDataSoruceBuilder\";\r\nimport { ChartInfo } from \"./FusionChartObjectHelper\";\r\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\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\nfunction getColumnObject(seriesMeasures: SeriesMeasure[], widget: ReactWidgetPM): ChartObject {\r\n let chart = getDefaultChartobject();\r\n chart.type = isGroupByFieldDateTime(widget.GroupByFieldDataType) ? \"mscombi2D\" : \"scrollcombidy2d\";\r\n\r\n let chartInfo = getDefaultChartInfo(widget);\r\n chartInfo.scrollPadding = \"8\";\r\n chartInfo.flatScrollBars = \"1\";\r\n chartInfo.showPercentValues = widget.ShowValueAsNumber ? \"0\" : \"1\";\r\n chartInfo.showLegend = widget.ShowLegend ? '1' : '0';\r\n chartInfo.scrollPosition = \"top\";\r\n setLineDash(chartInfo);\r\n chartInfo.chartTopMargin = \"20\";\r\n chartInfo.chartBottomMargin = \"10\";\r\n chartInfo.chartLeftMargin = \"20\";\r\n chartInfo.chartRightMargin = \"50\";\r\n chartInfo.canvasBottomPadding = \"10\";\r\n setDualyAxis(chartInfo, widget, seriesMeasures);\r\n chart.dataSource = getCategoriesBasedDataSource(chartInfo, seriesMeasures, widget);\r\n chartInfo.legendPosition = getWidgetLegendPosition(widget);\r\n\r\n return chart;\r\n}\r\n\r\nfunction setLineDash(chartInfo: ChartInfo) {\r\n chartInfo.divLineDashed = \"1\";\r\n chartInfo.divLineDashLen = \"5\";\r\n chartInfo.divLineDashGap = \"5\";\r\n chartInfo.divLineColor = \"#E7E7E7\";\r\n chartInfo.divLineAlpha = \"100\";\r\n chartInfo.divLineThickness = \"1\";\r\n}\r\n\r\n\r\nfunction getDefaultChartobject(): ChartObject {\r\n let chart = {} as ChartObject;\r\n chart.type = \"column2d\";\r\n chart.width = \"100%\";\r\n chart.height = \"100%\";\r\n chart.dataFormat = \"json\";\r\n return chart;\r\n}\r\n\r\nconst getXaxisTitle = (widget: ReactWidgetPM) => {\r\n if(widget.TypeCode == 'bar'){\r\n return widget.ShowYAxisTitle ? widget.YAxisTitle || \"\" : \"\"\r\n }\r\n\r\n return widget.XAxisTitle || \"\";\r\n}\r\n\r\nconst getYaxisTitle = (widget: ReactWidgetPM) => {\r\n if(widget.TypeCode == 'bar'){\r\n return widget.ShowXAxisTitle ? widget.XAxisTitle || \"\" : \"\"\r\n }\r\n \r\n return widget.YAxisTitle || \"\";\r\n}\r\n\r\nfunction getDefaultChartInfo(widget: ReactWidgetPM): ChartInfo {\r\n let chart = {} as ChartInfo;\r\n chart.theme = \"fusion\";\r\n chart.baseFont = defautFont;\r\n chart.baseFontSize = defautFontSize;\r\n chart.baseFontColor = defautColor;\r\n chart.legendCaptionFontSize = defautFontSize;\r\n chart.legendCaptionFontColor = defautColor;\r\n chart.legendCaptionFont = defautFont;\r\n chart.labelFontColor = defautColor;\r\n chart.labelFont = defautFont;\r\n chart.legendItemFont = defautFont;\r\n chart.legendItemFontSize = defautFontSize;\r\n chart.sYAxisNameFont = defautFont;\r\n chart.sYAxisNameFontSize = defautFontSize;\r\n chart.sYAxisNameFontColor = defautColor;\r\n\r\n chart.pYAxisNameFont = defautFont;\r\n chart.pYAxisNameFontSize = defautFontSize;\r\n chart.pYAxisNameFontColor = defautColor;\r\n\r\n chart.xAxisNameFont = defautFont;\r\n chart.xAxisNameFontSize = defautFontSize;\r\n chart.xAxisNameFontColor = defautColor;\r\n\r\n chart.yAxisNameFont = defautFont;\r\n chart.yAxisNameFontSize = defautFontSize;\r\n chart.yAxisNameFontColor = defautColor;\r\n chart.drawCrossLine = \"0\";\r\n \r\n chart.xAxisName = widget.ShowXAxisTitle && widget.XAxisTitle ? widget.XAxisTitle : \"\";\r\n chart.yAxisName = widget.ShowYAxisTitle && widget.YAxisTitle ? widget.YAxisTitle : \"\";\r\n chart.labelDisplay = widget.XAxisLabelsDisplay ? widget.XAxisLabelsDisplay : \"Auto\";\r\n chart.slantLabel = \"1\"\r\n chart.labelFontSize = widget.XAxisLabelsFontSize ? widget.XAxisLabelsFontSize + \"\" : \"10\";\r\n\r\n chart.showValues = widget.ShowValue ? \"1\" : '0';\r\n chart.valuePosition = widget.ShowValue && widget.ValuePosition ? widget.ValuePosition : 'Outside';\r\n\r\n let isValuePositionInside = widget.ShowValue && widget.ValuePosition && widget.ValuePosition.toLowerCase() == 'inside';\r\n\r\n if(widget.ShowValue && widget.ValuePosition && isColumnOrBarChart(widget)) { \r\n chart.placeValuesInside = widget.ValuePosition.toLowerCase() == 'inside' ? \"1\" : \"0\"\r\n }\r\n\r\n if(widget.IsStacked && isValuePositionInside && isColumnOrBarChart(widget)) { \r\n chart.minPlotHeightForValue = \"35\"\r\n }\r\n\r\n if(isValuePositionInside && isPieOrDonutChart(widget)) { \r\n chart.minAngleForValue = \"27\"\r\n }\r\n\r\n chart.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.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 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\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","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\n\r\nReactFC.fcRoot(FusionCharts, Charts, FusionTheme);\r\n\r\nFusionCharts.options['license']({\r\n key: 'prD4C-8eiA7A3A3C7E6G4B4A3J4C7B2D3D2nyqE1C3fd1npaE4D4tlA-21D7E4F4F1F1E1F4F1A10A8C2C5F5E2F2D1hwqD1B5D1aG4A19A32twbC6D3G4lhJ-7A9C11A5B-13ddA2I3A1B9B3D7A2B4G2H3H1F-7smC8B2XB4cetB8A7A5mxD3SG4F2tvgB2A3B2E4C3I3C7B3A4A3A2D3D2G4J-7==',\r\n creditLabel: false,\r\n});\r\n\r\nexport type FusionChartProps = {\r\n widget: ReactWidgetPM | undefined,\r\n widgetRef: ReactWidgetPM | undefined,\r\n dataBinding: DashboardDataBinding;\r\n onSelectDataPoint: (dataPointSelection: DataPointSelection) => void;\r\n};\r\nconst FusionChart = forwardRef((props: FusionChartProps, comRef) => {\r\n const [dataLoaded, setDataLoaded] = useState<boolean>(false);\r\n const [error, setError] = useState<string>();\r\n const [fusionKey, setFusionKey] = useState(uuidv4());\r\n const chartData = useRef<any>(null);\r\n \r\n const widget = useRef<ReactWidgetPM>();\r\n const [args, setArgs] = useState<ChartObject>({});\r\n const [fChart, setFchart] = useState<fusionCharts>();\r\n const id = (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\r\n useEffect(() => {\r\n widget.current = props.widget;\r\n setTimeout(function () {\r\n RefreshData();\r\n }, 500);\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 handleData(_data, true); \r\n }\r\n });\r\n }, []);\r\n\r\n useEffect(() => {\r\n let timeout: any;\r\n const handleResize = () => {\r\n clearTimeout(timeout);\r\n timeout = setTimeout(() => {\r\n HandleSizeChange();\r\n }, 200);\r\n }\r\n window.addEventListener(\"resize\", handleResize);\r\n return () => window.removeEventListener(\"resize\", handleResize);\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(function () {\r\n var oldPieRadius = fusionChartHelper?.current?.getPieRadius();\r\n var oldLegendWidth = fusionChartHelper?.current?.getLegendWidth();\r\n fusionChartHelper?.current?.trimChartLabels(fusionRef?.current?.offsetWidth, fusionRef?.current?.offsetHeight)!;\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(function () {\r\n setDataLoaded(true);\r\n }, 100);\r\n }, 100);\r\n }\r\n\r\n const RefreshData = () => {\r\n if (Session.Tenant == 0) {\r\n handleData(null);\r\n return;\r\n }\r\n\r\n var dashboardAnalyticsService = new DashboardAnalyticsService();\r\n var postWidget: any = { ...widget.current };\r\n postWidget.onChange = undefined;\r\n dashboardAnalyticsService.getData(postWidget as ReactWidgetPM).then(result => {\r\n handleData(result?.data);\r\n chartData.current = result?.data;\r\n }, error => {\r\n console.log('error', error);\r\n if (error?.response?.data?.ErrorMessage) setError(error?.response?.data?.ErrorMessage);\r\n else setError(error.message);\r\n setDataLoaded(true);\r\n })\r\n }\r\n\r\n const handleData = (data: any, isDummyChange: boolean = false): void => {\r\n let chart = BuildFusionChartObject(data, widget.current!);\r\n fusionChartHelper.current = new FusionChartHelper(widget.current!, chart);\r\n fusionChartHelper?.current.trimChartLabels(progressRef?.current?.offsetWidth, progressRef?.current?.offsetHeight)!;\r\n setArgs(chart);\r\n \r\n if(!isDummyChange){\r\n setDataLoaded(true);\r\n }\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 \r\n const dataplotRollOver = (event: any, plotObj: any) => {\r\n let chartData = event.sender.getChartData();\r\n let plotColor = plotObj.color;\r\n if(chartData && chartData.dataset && chartData.dataset.length) {\r\n chartData.dataset.forEach((el: any, index: number) => {\r\n if(index == plotObj.datasetIndex){\r\n el.data.forEach((item: any, index2: number) => {\r\n if(plotObj.dataIndex == index2 && item.tooltext && item.tooltext.replace){\r\n item.tooltext = item.tooltext.replace(\"transparent\", plotColor);\r\n }\r\n })\r\n }\r\n \r\n })\r\n }\r\n\r\n event.sender.setChartData(chartData);\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\r\n className={'db-fc-parent-container'}\r\n ref={fusionRef}>\r\n <div\r\n key={fusionKey}\r\n className={'db-fc-container'}\r\n ref={ref} id={id}>\r\n <ReactFC {...args}\r\n fcEvent-dataplotClick={dataplotClick}\r\n onRender={renderComplete}\r\n />\r\n </div>\r\n </div>\r\n : <div className=\"dl-flex-content-center dl-full-hight\" style={{ width: '100%' }}>\r\n <div className=\"dl-tooltip\">\r\n <RedWarningIcon className=\"red-warning-icon\" />\r\n <span className=\"dl-tooltiptext\">{error}</span>\r\n </div>\r\n </div>\r\n )\r\n});\r\nexport default FusionChart;\r\n\r\n","import React, { forwardRef, useEffect, useImperativeHandle, useRef, useState } from \"react\";\r\nimport { DataPointSelection } from \"../../types/SeriesMeasure\";\r\nimport { ReactWidgetPM } from \"../../types/widget\";\r\nimport { DashboardDataBinding } from '../../types/DashboardDataBinding';\r\nimport CustomChart from \"./ChartsComponents/CustomCharts/CustomChart\";\r\nimport FusionChart from \"./ChartsComponents/FusionCharts/FusionChart\";\r\nimport { isNullOrUndefined } from \"../../Utils/General\";\r\nimport { ReactComponent as DeleteWidgetIcon } from \"../../assets/images/delete-icon.svg\"\r\nimport { ReactComponent as EditWidgetIcon } from \"../../assets/images/edit-icon.svg\"\r\nimport { ReactComponent as CopyWidgetIcon } from \"../../assets/images/copy-icon.svg\"\r\nimport Popup from 'reactjs-popup';\r\nimport { v4 as uuidv4 } from 'uuid';\r\n\r\ntype WidgetCardProps = {\r\n editBtnClicked(widget: any): any;\r\n copyBtnClicked?(id: any): any;\r\n deleteBtnClicked(i: any): any;\r\n widget: ReactWidgetPM | undefined;\r\n widgetRef: ReactWidgetPM | undefined;\r\n el: any;\r\n dateFilter: any;\r\n dataBinding: DashboardDataBinding;\r\n isInEditMode: boolean;\r\n isPreviewModeActive?: boolean;\r\n onSelectDataPoint: (dataPointSelection: DataPointSelection) => void;\r\n}\r\n\r\n\r\nconst WidgetCard = forwardRef((props: WidgetCardProps, comRef) => {\r\n const widget = useRef<ReactWidgetPM>();\r\n const [isLoading, setIsLoading] = useState(false);\r\n const fusionChartRef = useRef<any>(null);\r\n const [triggerId, setTriggerId] = useState(uuidv4());\r\n\r\n const editWidget = () => {\r\n props.editBtnClicked(widget.current)\r\n };\r\n\r\n const copyWidget = () => {\r\n if(props && props.copyBtnClicked){\r\n props.copyBtnClicked(widget.current?.key)\r\n }\r\n };\r\n \r\n useEffect(() => {\r\n widget.current = props.widget;\r\n props.dataBinding?.onEditWidget.subscribe(e => {\r\n if (e?.key != widget.current?.key) return;\r\n setIsLoading(true);\r\n widget.current = { ...e };\r\n setIsLoading(false);\r\n })\r\n\r\n props.dataBinding?.widgetUpdated.subscribe(updatedWidget => {\r\n if (updatedWidget?.key != widget.current?.key) return;\r\n widget.current = {...updatedWidget};\r\n setTriggerId(uuidv4());\r\n });\r\n }, []);\r\n\r\n useImperativeHandle(comRef, () => ({\r\n onResizeFinish() {\r\n fusionChartRef?.current?.onResizeFinish();\r\n }\r\n }));\r\n\r\n const getCSSPropertyValue = (widgetData: ReactWidgetPM | undefined, propName: string, propUnit: string = \"\", propDefaultVal: any = \"\") => {\r\n return widgetData && propName && !isNullOrUndefined(widgetData[propName]) ? widgetData[propName] + propUnit : propDefaultVal || \"\";\r\n }\r\n \r\n const GetChartComponent = () => {\r\n if (isLoading || !widget.current?.TypeCode) return \"\";\r\n if (widget.current?.TypeCode == \"kpi\" || widget.current?.TypeCode == \"table\") return <CustomChart isPreviewModeActive={props.isPreviewModeActive} dataBinding={props.dataBinding} widget={widget.current} widgetRef={props.widgetRef} onSelectDataPoint={props.onSelectDataPoint} />;\r\n return <FusionChart ref={fusionChartRef} dataBinding={props.dataBinding} widget={widget.current} widgetRef={props.widgetRef} onSelectDataPoint={props.onSelectDataPoint} />\r\n }\r\n\r\n return (\r\n <div className=\"dl-panel\" key={props.el.i} >\r\n <header key={triggerId} className=\"widget-header\">\r\n <div className=\"header-contents\">\r\n <div style={{ cursor: props.isInEditMode ? \"move\" : \"default\" }} className=\"widget-titles-container\">\r\n <div\r\n className=\"title-container\"\r\n style={{ justifyContent: getCSSPropertyValue(widget?.current, 'TitleAlignment', '', undefined) }}>\r\n <Popup\r\n className=\"title-tooltip-container\"\r\n trigger={\r\n <div\r\n className=\"title\"\r\n style={{\r\n fontSize: getCSSPropertyValue(widget.current, 'TitleFontSize', 'px'),\r\n color: getCSSPropertyValue(widget.current, 'TitleFontColor', ''),\r\n textAlign: getCSSPropertyValue(widget?.current, 'TitleAlignment', '', undefined),\r\n }}>\r\n {widget.current?.Title}\r\n </div>\r\n }\r\n position={['top center']}\r\n arrowStyle={{color: '#262626'}}\r\n offsetY={-8}\r\n on={['hover', 'focus']}\r\n >\r\n <span className=\"widget-title-tooltip-text\">{widget.current?.Title}</span>\r\n </Popup>\r\n </div>\r\n\r\n <div\r\n className={widget.current?.Subtitle && widget.current?.Subtitle.length > 0 ? \"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 }}\r\n >{widget.current?.Subtitle}</div>\r\n </div>\r\n <div className={widget.current?.Title && widget.current?.Title.length > 0 ? \"widget-options-container\" : \"widget-options-container margin-top-6\"}>\r\n {props.isInEditMode ?\r\n <React.Fragment>\r\n <EditWidgetIcon onClick={() => editWidget()} />\r\n <CopyWidgetIcon onClick={() => copyWidget()} />\r\n <DeleteWidgetIcon onClick={() => props.deleteBtnClicked(props.widget?.key)} />\r\n </React.Fragment>\r\n : null\r\n }\r\n </div>\r\n </div>\r\n \r\n </header>\r\n <div className=\"dl-dashboard-widget\"> \r\n {GetChartComponent()}\r\n </div>\r\n </div>\r\n );\r\n});\r\n\r\nexport default WidgetCard;\r\n","export function deepClone (obj){\r\n return JSON.parse(JSON.stringify(obj))\r\n}","import { WidthProvider, Responsive, Layout, Layouts } from \"react-grid-layout\";\r\nimport React, { useEffect, useRef, useState } from \"react\";\r\nimport { ReactWidgetPM } from \"../../types/widget\";\r\nimport WidgetCard from \"./WidgetCard\";\r\nimport { DataPointSelection } from \"../../types/SeriesMeasure\";\r\nimport { DashboardDataBinding } from \"../../types/DashboardDataBinding\";\r\nimport { deepClone } from '../../services/clone';\r\nimport useResizeObserver from \"use-resize-observer\";\r\n\r\nconst ResponsiveReactGridLayout = WidthProvider(Responsive);\r\n\r\nexport type DeleteWidgetProps = {\r\n id: string, \r\n layouts: any, \r\n widgets: { lg: ReactWidgetPM[] }\r\n}\r\n\r\ntype DashboardDesignerProps = {\r\n editMode: boolean,\r\n Widgetlayouts: { lg: ReactWidgetPM[] },\r\n openEditWidget: (widget: ReactWidgetPM) => void\r\n onLayoutChange: (layouts: Layouts) => void,\r\n onWidgetDelete: (deleteProps: DeleteWidgetProps) => void,\r\n onCopyWidget?:(id: string) => void,\r\n dataBinding: DashboardDataBinding,\r\n onSelectDataPoint: (dataPointSelection: DataPointSelection) => void\r\n};\r\n\r\nconst DashboardDesigner = (props: DashboardDesignerProps) => {\r\n const array12 = Array.from({ length: 12 }).fill(null);\r\n const minimumPlaceholderRowsCount = 12;\r\n const [layouts, setLayouts] = useState<Layouts>({ lg: [] });\r\n const [placeholderRowsArray, setplaceholderRowsArray] = useState(Array.from({ length: minimumPlaceholderRowsCount }).fill(null));\r\n const [dateFilter, setDateFilter] = useState<Date | Date[] | undefined>(undefined);\r\n const [isInEditMode, setisInEditMode] = useState(false);\r\n const widgetsDictionaryRef = useRef<{ [k: string]: ReactWidgetPM }>({});\r\n const [widgets, setWidgets] = useState<{ lg: ReactWidgetPM[] }>({ lg: [] });\r\n const gridLayoutComponent = useRef<any>(null);\r\n const entered = useRef<boolean>(false);\r\n const widgetCardRef = useRef<any[]>([]);\r\n\r\n\r\n useEffect(() => {\r\n FillLayout(props.Widgetlayouts);\r\n }, [props.Widgetlayouts]);\r\n\r\n useEffect(() => {\r\n props.dataBinding?.onDeleteWidgetConfirmed.subscribe(deleteProps => {\r\n if (deleteProps){\r\n deletePanel(deleteProps);\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 // layoutsRef.current = changedLayouts;\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 function onResizeStop(event: any, oldItem: any) {\r\n widgetCardRef?.current?.find(x => x.i == oldItem.i)?.ref.onResizeFinish(widgetsDictionaryRef.current[oldItem.i].key);\r\n }\r\n\r\n function UpdateWidget(changedLayouts: Layouts) {\r\n for (const item of changedLayouts.lg) {\r\n if (widgetsDictionaryRef.current[item.i]) {\r\n widgetsDictionaryRef.current[item.i].Layout = item;\r\n }\r\n }\r\n }\r\n\r\n const confirmDeleteWidget = (id: string) => {\r\n let deleteWidgetProps: DeleteWidgetProps = {\r\n id: id, \r\n layouts: layouts, \r\n widgets: widgets\r\n }\r\n props.onWidgetDelete(deleteWidgetProps)\r\n }\r\n\r\n function deletePanel(deleteProps: DeleteWidgetProps) {\r\n var newLayouts = { lg: deleteProps.layouts.lg.filter(e => e.i != deleteProps.id) }\r\n setLayouts(newLayouts);\r\n var newWidgets = { lg: deleteProps.widgets.lg.filter(e => e.key != deleteProps.id) }\r\n FillWidgetDictionary(newWidgets);\r\n setWidgets(newWidgets);\r\n props.onLayoutChange(newLayouts)\r\n };\r\n\r\n function editWidget(widget: ReactWidgetPM) {\r\n widget.ChangeSetOp = 'Update';\r\n props.openEditWidget(widget);\r\n };\r\n\r\n function copyWidget(key: string) {\r\n if(props && props.onCopyWidget){\r\n props.onCopyWidget(key);\r\n }\r\n };\r\n \r\n\r\n function UpdatePlaceholderDimensions(layouts: Layouts) {\r\n if (!layouts)\r\n return;\r\n var max = minimumPlaceholderRowsCount;\r\n for (const layout of layouts['lg']) {\r\n if (layout.y + layout.h > max)\r\n max = layout.y + layout.h;\r\n }\r\n\r\n var newPlaceholderRows = max + 2;\r\n newPlaceholderRows = newPlaceholderRows < minimumPlaceholderRowsCount ? minimumPlaceholderRowsCount : newPlaceholderRows;\r\n setplaceholderRowsArray(Array.from({ length: newPlaceholderRows }).fill(null));\r\n }\r\n\r\n const { ref } = useResizeObserver<HTMLDivElement>({\r\n onResize: ({ }) => {\r\n window.dispatchEvent(new Event('resize'));\r\n },\r\n });\r\n\r\n return (<div ref={ref} className=\"dl-full-hight-scroll\">\r\n <div className=\"dl-box\">\r\n <div className=\"dl-row dl-content\">\r\n <div className=\"dl-grid-container\">\r\n <div className=\"dl-grid dl-grid--bordered\">\r\n {isInEditMode ? placeholderRowsArray.map((e, i) =>\r\n array12.map((e, i) => (\r\n <div key={i}\r\n style={{\r\n height: layoutGridProps.rowHeight,\r\n }}\r\n ></div>\r\n ))\r\n\r\n ) : null}\r\n </div>\r\n\r\n\r\n <ResponsiveReactGridLayout ref={gridLayoutComponent}\r\n {...layoutGridProps}\r\n layouts={layouts}\r\n compactType=\"vertical\"\r\n draggableCancel=\".widget-options-container\"\r\n isDraggable={isInEditMode}\r\n isResizable={isInEditMode}\r\n onWidthChange={() => { }}\r\n onResizeStop={onResizeStop}\r\n onLayoutChange={onLayoutChange}>\r\n\r\n {widgets.lg.map((widget, i) =>\r\n\r\n <div key={widget.Layout?.i}>\r\n <WidgetCard\r\n isInEditMode={isInEditMode}\r\n key={widget.Layout?.i}\r\n widget={widget}\r\n widgetRef={widgetsDictionaryRef.current[widget.key]}\r\n el={widget}\r\n dataBinding={props.dataBinding}\r\n dateFilter={dateFilter}\r\n editBtnClicked={editWidget}\r\n deleteBtnClicked={confirmDeleteWidget}\r\n onSelectDataPoint={props.onSelectDataPoint}\r\n copyBtnClicked={copyWidget}\r\n ref={el => {\r\n widgetCardRef.current[i] = {\r\n ref: el,\r\n i: widget.Layout?.i\r\n }\r\n }}\r\n />\r\n </div>\r\n )}\r\n </ResponsiveReactGridLayout>\r\n </div>\r\n\r\n </div>\r\n </div>\r\n </div>);\r\n\r\n}\r\n\r\nexport const layoutGridProps = {\r\n rowHeight: 50,\r\n className: \"layout\",\r\n cols: { lg: 12, md: 6, sm: 2, xs: 1, xxs: 1 },\r\n useCSSTransforms: true,\r\n}\r\n\r\nexport default DashboardDesigner;\r\n","import * as React from 'react'\r\nimport DashboardDesigner, { DeleteWidgetProps } from './features/Dashboard/DashboardDesigner'\r\nimport \"./styles.module.css\"\r\nimport { useEffect, useRef, useState } from \"react\";\r\nimport { Session } from './services/session';\r\nimport { ReactWidgetPM } from './types/widget';\r\nimport { DashboardDataBinding } from './types/DashboardDataBinding';\r\nimport { Layout, Layouts } from 'react-grid-layout';\r\nimport { deepClone } from './services/clone';\r\nimport { DataPointSelection } from './types/SeriesMeasure';\r\nimport WidgetCard from './features/Dashboard/WidgetCard';\r\n\r\ntype DashboardProps = {\r\n token: string,\r\n tenant: number,\r\n userId: string,\r\n isPreviewMode: boolean,\r\n widgetData: ReactWidgetPM | undefined,\r\n dataBinding: DashboardDataBinding,\r\n onChangeLayouts: (layouts: { lg: ReactWidgetPM[] }) => void,\r\n openEditWidget: (Widget: ReactWidgetPM) => void,\r\n onCopyWidget?:(key: string) => void,\r\n openDeleteWidgetConfirmWindow: (deleteProps: DeleteWidgetProps) => void,\r\n onSelectDataPoint: (dataPointSelection: DataPointSelection) => void;\r\n};\r\nconst Dashboard = (props: DashboardProps) => {\r\n const Widgetlayouts = useRef<{ lg: ReactWidgetPM[] }>({ lg: [] });\r\n const [widgetlayoutsState, setWidgetlayoutsState] = useState<{ lg: ReactWidgetPM[] }>({ lg: [] });\r\n const [isInEditMode, setIsInEditMode] = useState<boolean>(false);\r\n const [isPreviewModeActive, setIsPreviewModeActive] = useState<boolean>(props.isPreviewMode !== undefined ? props.isPreviewMode : false);\r\n const [previewWidget, setPreviewWidget] = useState<ReactWidgetPM | undefined>(props.widgetData);\r\n\r\n useEffect(() => {\r\n Session.CurrentUserId = props.userId;\r\n Session.Tenant = props.tenant;\r\n Session.Token = props?.token;\r\n setIsPreviewModeActive(props.isPreviewMode);\r\n\r\n props.dataBinding.onGetLayouts.subscribe(layouts => {\r\n Widgetlayouts.current = layouts;\r\n setWidgetlayoutsState(deepClone(Widgetlayouts.current));\r\n });\r\n props.dataBinding.isOnEditLayout.subscribe(e => {\r\n setIsInEditMode(e);\r\n });\r\n props.dataBinding.onAddWidget.subscribe(w => {\r\n Widgetlayouts.current.lg.push(w);\r\n setWidgetlayoutsState(deepClone(Widgetlayouts.current));\r\n });\r\n }, [])\r\n\r\n useEffect(() => {\r\n if (props.widgetData) {\r\n setPreviewWidget(JSON.parse(JSON.stringify(props.widgetData)))\r\n }\r\n }, [props.widgetData])\r\n\r\n const copyWidget = (key: string) => {\r\n if(props && props.onCopyWidget){\r\n props.onCopyWidget(key);\r\n }\r\n }\r\n\r\n const updateWidgets = (layouts: Layouts) => {\r\n var layoutsDic: { [key: string]: Layout } = {};\r\n Object.keys(layouts).forEach(sizeType => {\r\n if (layouts[sizeType].length > 0) {\r\n layouts[sizeType].map(layout => {\r\n layoutsDic[layout.i] = layout;\r\n })\r\n return;\r\n }\r\n })\r\n var newWidgetlayouts: ReactWidgetPM[] = [];\r\n Widgetlayouts.current.lg.forEach(widget => {\r\n if (layoutsDic[widget.key]) {\r\n widget.StartPotistion = `${layoutsDic[widget.key].x},${layoutsDic[widget.key].y}`;\r\n widget.EndPosition = `${layoutsDic[widget.key].w},${layoutsDic[widget.key].h}`;\r\n widget.Layout = layoutsDic[widget.key];\r\n newWidgetlayouts.push(widget);\r\n }\r\n\r\n });\r\n Widgetlayouts.current = { lg: newWidgetlayouts };\r\n props.onChangeLayouts(Widgetlayouts.current);\r\n }\r\n\r\n return isPreviewModeActive && previewWidget ? \r\n <div style={{width: \"420px\", height: \"310px\"}}>\r\n <div style={{height: \"100%\"}} key={\"widget-\" + previewWidget?.Layout?.i}>\r\n <WidgetCard\r\n isInEditMode={isInEditMode}\r\n isPreviewModeActive={isPreviewModeActive}\r\n key={previewWidget?.Layout?.i}\r\n widget={previewWidget}\r\n widgetRef={previewWidget}\r\n el={previewWidget}\r\n dataBinding={props.dataBinding}\r\n dateFilter={undefined}\r\n editBtnClicked={() => true}\r\n deleteBtnClicked={() => true}\r\n onSelectDataPoint={() => true}\r\n />\r\n </div>\r\n </div> :\r\n <div className='dl-full-hight'>\r\n <div className='dl-dashboard-body'>\r\n <DashboardDesigner \r\n onSelectDataPoint={props.onSelectDataPoint} \r\n Widgetlayouts={widgetlayoutsState} \r\n dataBinding={props.dataBinding} \r\n editMode={isInEditMode} \r\n onLayoutChange={updateWidgets} \r\n onWidgetDelete={(deleteProps: DeleteWidgetProps) => props.openDeleteWidgetConfirmWindow(deleteProps)}\r\n onCopyWidget={copyWidget}\r\n openEditWidget={(widget: ReactWidgetPM) => props.openEditWidget(widget)} ></DashboardDesigner>\r\n </div>\r\n </div >\r\n \r\n}\r\nexport default Dashboard;\r\n\r\n"],"names":["Session","Tools","GetLogitudeURL","logitude_url","location","href","replace","indexOf","urlArr","split","url","substring","lastIndexOf","length","Map","from","to","keys","Object","k","ApiServices","_apiUrl","getByFilters","api","filters","token","getTokenFromStorage","apiURL","ConcatFiltersToURL","axios","get","headers","post","date","Token","urlparameters","mykeys","addtionalFiltersValues","i","propName","propValue","ignoreFilter","concat","encodeURIComponent","JSON","stringify","DashboardAnalyticsService","_ApiServices","getData","widget","controller","getKpiData","getTableData","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","isNullOrUndefined","val","undefined","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","Tenant","emptyData","Value","dashboardAnalyticsService","postWidget","onChange","then","console","log","response","ErrorMessage","message","kpiClick","measureFieldId","currentWidgetMeasure","WidgetMeasures","MeasureFieldId","onSelectDataPoint","Widget","MeasureCode","Formula","GroupById","getRatioComponent","CompareWithPrevious","React","className","getArrowComponent","Ratio","ComparisonValue","style","marginTop","Increase","getPreviousValueComponent","prevtext","labelFormated","ComparisonLabel","ComparisonAbbreviationSymbol","getValueData","getValueComponent","AbbreviationSymbol","ShowMeasureUnit","Unit","getLabel","Label","getIsKPIHasSmallestHeight","widgetRef","Layout","h","isThereTitle","Title","isThereSubTitle","Subtitle","isKPIHasSmallestHeight","ProgressSpinner","width","height","strokeWidth","animationDuration","onClick","Alighnment","RedWarningIcon","TableChart","setWidget","tableData","setTableData","PageIndex","PageSize","res","fillTableData","getBooleanStringValue","value","_value","charAt","toUpperCase","slice","getDateTimeValue","tableRecoreds","tableRow","Fields","forEach","item","push","DisplayName","isHeader","Result","_tableRow","field","FieldCode","valueType","DataTypeCode","getTableTemplate","map","el","index","index2","CustomChart","project","TypeCode","mainYellowColor","mainRedColor","mainGreenColor","mainTurquoiseColor","mainBlueColor","mainPurpleColor","mainOrangeColor","getSeriesPositionColor","position","buildToolTip","seriesName","padding","getTooltiplabel","getMeasureType","getTooltipValue","getTooltipPercentage","seriesMeasure","Name","formula","parse","months","quarters","getCategoriesBasedDataSource","chartInfo","seriesMeasures","seriesMeasuresIsEmpty","handelNullLabels","chart","categories","buildCategories","dataset","buildDataSet","getStackedDataSource","buildStackedCategories","buildStackedDataSet","getSimpleDataSource","buildDataSource","element","Values","hasValue","values","series","e","id","tooltext","color","dataSet","seriesPosition","datas","seriesname","anchorBgColor","anchorBorderColor","anchorBorderThickness","anchorHoverColor","parentyaxis","PlotasLineChart","PlotonSecondAxis","renderAs","uniqueGroups","find","x","code","GroupByIdSec","LabelSec","group","buildStackedGroupData","emptylabels","filter","sortDataSet","sort","s1","s2","aa","bb","secGroup","getUniqueGroupOrderdList","category","defautFontSize","defautFont","defautColor","BuildFusionChartObject","SecondaryGroupById","getBarObject","getStackedBarObject","getLineObject","getClusteredLineObject","getPieObject","getDonutObject","getColumnObject","getClusteredColumnObject","getDefaultChartobject","type","isGroupByFieldDateTime","GroupByFieldDataType","getDefaultChartInfo","scrollPosition","scrollPadding","flatScrollBars","showPercentValues","ShowValueAsNumber","showLegend","ShowLegend","setLineDash","chartTopMargin","chartBottomMargin","legendPosition","getWidgetLegendPosition","dataSource","IsStacked","chartLeftMargin","chartRightMargin","anchorradius","canvasBottomPadding","canvasTopPadding","labelFontSize","labelFont","manageLabelOverflow","useEllipsesWhenOverflow","enableSmartLabels","setPieDonutLegends","setDualyAxis","divLineDashed","divLineDashLen","divLineDashGap","divLineColor","divLineAlpha","divLineThickness","dataFormat","theme","baseFont","baseFontSize","baseFontColor","legendCaptionFontSize","legendCaptionFontColor","legendCaptionFont","labelFontColor","legendItemFont","legendItemFontSize","sYAxisNameFont","sYAxisNameFontSize","sYAxisNameFontColor","pYAxisNameFont","pYAxisNameFontSize","pYAxisNameFontColor","xAxisNameFont","xAxisNameFontSize","xAxisNameFontColor","yAxisNameFont","yAxisNameFontSize","yAxisNameFontColor","drawCrossLine","xAxisName","ShowXAxisTitle","XAxisTitle","yAxisName","ShowYAxisTitle","YAxisTitle","labelDisplay","XAxisLabelsDisplay","slantLabel","XAxisLabelsFontSize","showValues","ShowValue","valuePosition","ValuePosition","isValuePositionInside","toLowerCase","isColumnOrBarChart","placeValuesInside","minPlotHeightForValue","isPieOrDonutChart","minAngleForValue","enableSlicing","enableRotation","toolTipBgColor","showToolTipShadow","scrollHeight","scrollWidth","plotColorinTooltip","showLabels","LabelsPosition","setOnChartLegend","setChartInLegend","LegendPosition","legendScrollBgColor","legendIconScale","scrollShowButtons","legendCaptionAlignment","alignLegendWithCanvas","pieRadius","showSecondaryLimits","showDivLineSecondaryValue","pYAxisNameBorderPadding","sYAxisNameBorderPadding","textLength","Math","max","pYAxisName","getTitle","sYAxisname","text","maxLenght","textLenght","neededSpaces","ceil","space","repeat","FusionChartHelper","getPieRadius","getLegendWidth","legendWidth","trimChartLabels","chartWidth","chartHeight","handleLegendWidth","handlePieRadius","chartMinumunHeight","startPercantage","stepHeight","step","floor","window","innerWidth","reducedValue","ReactFC","fcRoot","FusionCharts","Charts","FusionTheme","options","creditLabel","FusionChart","forwardRef","comRef","dataLoaded","setDataLoaded","fusionKey","chartData","args","setArgs","fChart","setFchart","random","toString","progressRef","fusionRef","fusionChartHelper","setTimeout","_data","handleData","timeout","handleResize","clearTimeout","HandleSizeChange","addEventListener","removeEventListener","useImperativeHandle","onResizeFinish","oldPieRadius","oldLegendWidth","offsetWidth","offsetHeight","isDummyChange","dataplotClick","eventObj","dataObj","groupbyid","measurefieldid","measurecode","groupbyidsec","useResizeObserver","onResize","resizeTo","ref","renderComplete","onRender","WidgetCard","fusionChartRef","editWidget","editBtnClicked","copyWidget","copyBtnClicked","onEditWidget","getCSSPropertyValue","widgetData","propUnit","propDefaultVal","GetChartComponent","cursor","isInEditMode","justifyContent","Popup","trigger","fontSize","textAlign","arrowStyle","offsetY","on","Fragment","EditWidgetIcon","CopyWidgetIcon","DeleteWidgetIcon","deleteBtnClicked","deepClone","obj","ResponsiveReactGridLayout","WidthProvider","Responsive","DashboardDesigner","array12","Array","fill","minimumPlaceholderRowsCount","lg","layouts","setLayouts","placeholderRowsArray","setplaceholderRowsArray","dateFilter","setisInEditMode","widgetsDictionaryRef","widgets","setWidgets","gridLayoutComponent","entered","widgetCardRef","FillLayout","Widgetlayouts","onDeleteWidgetConfirmed","deleteProps","deletePanel","dashboardLayouts","clone","layout","createLayout","FillWidgetDictionary","UpdatePlaceholderDimensions","w","editMode","onLayoutChange","changedLayouts","UpdateWidget","onResizeStop","event","oldItem","confirmDeleteWidget","deleteWidgetProps","onWidgetDelete","newLayouts","newWidgets","ChangeSetOp","openEditWidget","onCopyWidget","y","newPlaceholderRows","dispatchEvent","Event","layoutGridProps","rowHeight","compactType","draggableCancel","isDraggable","isResizable","onWidthChange","cols","md","sm","xs","xxs","useCSSTransforms","Dashboard","widgetlayoutsState","setWidgetlayoutsState","setIsInEditMode","isPreviewMode","setIsPreviewModeActive","previewWidget","setPreviewWidget","CurrentUserId","userId","tenant","onGetLayouts","isOnEditLayout","onAddWidget","updateWidgets","layoutsDic","sizeType","newWidgetlayouts","StartPotistion","EndPosition","onChangeLayouts","openDeleteWidgetConfirmWindow"],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sources":["../src/services/session.ts","../src/services/tools.ts","../src/services/ApiServices.ts","../src/services/DashboardAnalyticsService.ts","../src/Utils/DateHelper.tsx","../src/Utils/General.tsx","../src/features/Dashboard/ChartsComponents/CustomCharts/KpiChart.tsx","../src/features/Dashboard/ChartsComponents/CustomCharts/TableChart.tsx","../src/features/Dashboard/ChartsComponents/CustomCharts/CustomChart.tsx","../src/features/Dashboard/ChartsComponents/FusionCharts/FusionChartTooltip.tsx","../src/features/Dashboard/ChartsComponents/FusionCharts/FusionChartDataSoruceBuilder.tsx","../src/features/Dashboard/ChartsComponents/FusionCharts/FusionChartObjectBuilder.tsx","../src/features/Dashboard/ChartsComponents/FusionCharts/FusionChartHelper.tsx","../src/features/Dashboard/ChartsComponents/FusionCharts/FusionColors.tsx","../src/features/Dashboard/ChartsComponents/FusionCharts/FusionChartObjectHelper.tsx","../src/features/Dashboard/ChartsComponents/FusionCharts/FusionChart.tsx","../src/features/Dashboard/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}","export class Tools {\r\n public static GetLogitudeURL() {\r\n\r\n var logitude_url = location.href.replace('index.html', '');\r\n\r\n if (location.href.indexOf('localhost') > -1) {\r\n logitude_url = 'http://localhost:9996';//localhost:9996//';//\r\n }\r\n\r\n else {\r\n var urlArr = location.href.split(\"/index.html\");\r\n var url = urlArr[0];\r\n url = url.replace(url.substring(url.lastIndexOf('/'), url.length), \"\");\r\n logitude_url = url;\r\n }\r\n\r\n return logitude_url;\r\n }\r\n\r\n public static Map(from: any, to: any) {\r\n if (!from)\r\n return;\r\n if (!to)\r\n to = {};\r\n var keys = Object.keys(from);\r\n for (const k of keys) {\r\n if(from[k]){\r\n to[k] = from[k];\r\n }\r\n }\r\n }\r\n}","import axios from \"axios\";\r\nimport { ApiQueryFilters } from \"../common/data-contracts/ApiQueryFilter\";\r\nimport { APIResult } from \"../types/APIResult\";\r\nimport { Session } from \"./session\";\r\nimport { Tools } from './tools';\r\n\r\n\r\nexport class ApiServices{ \r\n private _apiUrl: string;\r\n constructor(){\r\n this._apiUrl = Tools.GetLogitudeURL() ;\r\n }\r\n getByFilters<T>(api,filters: ApiQueryFilters) {\r\n \r\n let token: string = this.getTokenFromStorage();\r\n\t\tvar apiURL = `${this._apiUrl}${api}`;\r\n\t\tapiURL = this.ConcatFiltersToURL(filters, apiURL);\r\n\r\n return axios.get<APIResult<T>>(apiURL, { headers: { 'Content-Type': 'application/json', 'Token': token } });\r\n }\r\n get<T>(api) {\r\n \r\n let token: string = this.getTokenFromStorage();\r\n\t\tvar apiURL = `${this._apiUrl}${api}`;\r\n return axios.get<T>(apiURL, { headers: { 'Content-Type': 'application/json', 'Token': token } });\r\n }\r\n \r\n post<T>(api,date, requestSignal : any= undefined){\r\n let token: string = this.getTokenFromStorage();\r\n\t\tvar apiURL = `${this._apiUrl}${api}`;\r\n return axios.post<T>(apiURL,date, { headers: { 'Content-Type': 'application/json', 'Token': token }, signal: requestSignal});\r\n }\r\n\r\n getTokenFromStorage(){\r\n return Session.Token || '';\r\n }\r\n private ConcatFiltersToURL(filters: ApiQueryFilters, urlparameters: string)\r\n {\r\n var mykeys = Object.keys(filters);\r\n var addtionalFiltersValues: string | null = null;\r\n\r\n for (var i in mykeys) {\r\n var propName = mykeys[i];\r\n var propValue = filters[propName];\r\n var ignoreFilter = ((propName.indexOf(\"Operator\") > 0 && propValue == \"Equals\") || propName == \"AdditionalFilters\");\r\n\r\n if (urlparameters != \"?\") {\r\n urlparameters = urlparameters.concat('&');\r\n }\r\n\r\n if (!ignoreFilter) {\r\n propValue = propValue ? encodeURIComponent(propValue) : '';\r\n urlparameters = urlparameters.concat(propName.concat('=').concat(propValue));\r\n }\r\n\r\n if (propName == \"AdditionalFilters\" && propValue.length > 0) {\r\n addtionalFiltersValues = JSON.stringify(propValue);\r\n }\r\n }\r\n\r\n if (addtionalFiltersValues) {\r\n urlparameters = urlparameters.concat(\"&AdditionalFilters=\").concat(addtionalFiltersValues);\r\n }\r\n return urlparameters;\r\n }\r\n}","import axios from \"axios\";\r\nimport { ApiQueryFilters } from \"../common/data-contracts/ApiQueryFilter\";\r\nimport { ReactDashboardPM } from \"../types/Dashboard\";\r\nimport { SeriesMeasure } from \"../types/SeriesMeasure\";\r\nimport { ApiServices } from \"./ApiServices\";\r\nimport { Tools } from './tools';\r\nimport { ReactWidgetPM } from '../types/widget';\r\nimport { KpiChartData } from \"../types/KpiChart\";\r\n\r\n\r\nexport class DashboardAnalyticsService{ \r\n _ApiServices:ApiServices;\r\n controller = 'DashboardAnalytics';\r\n constructor(){\r\n this._ApiServices = new ApiServices();\r\n }\r\n \r\n\r\n getData(widget: ReactWidgetPM, signal: any = undefined) {\r\n return this._ApiServices.post<SeriesMeasure[]>(`/api/${this.controller}/PostGetDataAnalytic`,widget, signal);\r\n }\r\n\r\n getKpiData(widget: ReactWidgetPM) {\r\n return this._ApiServices.post<KpiChartData>(`/api/${this.controller}/PostGetKpiData`,widget);\r\n }\r\n\r\n getTableData(widget: ReactWidgetPM) {\r\n return this._ApiServices.post<KpiChartData>(`/api/${this.controller}/PostGetTableData`,widget);\r\n }\r\n \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\n\r\nexport {\r\n getLabelFormatByDateGroupType\r\n}","const 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\nexport {\r\n isNullOrUndefined,\r\n isNullOrUndefinedOrEmpty\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 { getLabelFormatByDateGroupType } from \"../../../../Utils/DateHelper\";\r\nimport { isNullOrUndefined, isNullOrUndefinedOrEmpty } from \"../../../../Utils/General\";\r\nimport { v4 as uuidv4 } from 'uuid';\r\n\r\ntype KpiChartProps = {\r\n customChartProps: CustomChartProps;\r\n};\r\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 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 = { ...widget.current };\r\n postWidget.onChange = undefined;\r\n postWidget.EntityId = !isNullOrUndefinedOrEmpty(postWidget.RelatedToEntityId) ? postWidget.RelatedToEntityId : postWidget.EntityId\r\n \r\n dashboardAnalyticsService.getKpiData(postWidget as ReactWidgetPM).then(result => {\r\n setData(result.data);\r\n setIsLoading(false);\r\n }, error => {\r\n console.log('error', error);\r\n if (error?.response?.data?.ErrorMessage) setError(error?.response?.data?.ErrorMessage);\r\n else setError(error.message);\r\n setIsLoading(false);\r\n\r\n })\r\n }\r\n\r\n const kpiClick = () => {\r\n var measureFieldId;\r\n var currentWidgetMeasure = widget?.current?.WidgetMeasures![0];\r\n if (widget?.current?.WidgetMeasures) measureFieldId = widget?.current?.WidgetMeasures[0]?.MeasureFieldId;\r\n props.customChartProps.onSelectDataPoint({\r\n MeasureFieldId: measureFieldId,\r\n Widget: widget.current,\r\n MeasureCode : currentWidgetMeasure!.MeasureCode,\r\n Formula : currentWidgetMeasure!.Formula,\r\n GroupById: data?.GroupById\r\n });\r\n }\r\n\r\n const isComparisonIndicatorChecked = () => {\r\n let _kpiSettings = widget.current?.KPIComparisonSettings;\r\n\r\n if(_kpiSettings){\r\n let _kpiSettingsAsObj = JSON.parse(_kpiSettings);\r\n\r\n return !isNullOrUndefined(_kpiSettingsAsObj.ComparisonIndicator) ? _kpiSettingsAsObj.ComparisonIndicator : false;\r\n }\r\n\r\n return false;\r\n }\r\n\r\n function getRatioComponent(): React.ReactNode {\r\n if (!data?.CompareWithPrevious || !isComparisonIndicatorChecked()) return null;\r\n return (\r\n <div className={\"dl-kpi-ratio-container\"}>\r\n {getArrowComponent()}\r\n <div className={'dl-kpi-ratio-text'}>{data?.Ratio} %</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 labelFormated = !isNullOrUndefined(labelFormatByDateGroupType) ? labelFormatByDateGroupType : null;\r\n let prevtext = labelFormated ? labelFormated + \": \" + data?.ComparisonValue : \"\";\r\n\r\n return (\r\n <div className={\"dl-kpi-prev-container\"}>\r\n <div className={\"dl-kpi-prev-text\"}>{prevtext}</div>\r\n {data?.ComparisonAbbreviationSymbol && <div className=\"dl-kpi-prev-abbreviationSymbol\">{data?.ComparisonAbbreviationSymbol}</div>}\r\n </div>\r\n );\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 className=\"dl-kpi-value dl-kpi-textTrimming\">{data?.Value}</div>);\r\n\r\n }\r\n\r\n function getValueComponent(): React.ReactNode {\r\n return (\r\n <div className={\"dl-kpi-sub-container\"}>\r\n {getValueData()}\r\n {data?.AbbreviationSymbol && <div className=\"dl-kpi-abbreviationSymbol\">{data?.AbbreviationSymbol}</div>}\r\n {widget.current && widget.current.ShowMeasureUnit && data?.Unit && <div className=\"dl-kpi-unit\">{data?.Unit}</div>}\r\n {getRatioComponent()}\r\n </div>\r\n );\r\n }\r\n\r\n function getLabel():React.ReactNode{\r\n let labelFormated = getLabelFormatByDateGroupType(data!.Label,widget.current!,false)\r\n\r\n return(\r\n <div className={\"dl-kpi-label-container\"}>\r\n <span className={\"dl-kpi-label-span dl-kpi-textTrimming\"}>{labelFormated}</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 isThereTitle && isThereSubTitle && isKPIHasSmallestHeight;\r\n }\r\n\r\n return (\r\n isLoading || !widget.current?\r\n <div className={'dl-full-hight dl-flex-content-center spinner-custome'}>\r\n <ProgressSpinner style={{ width: '40px', height: '40px' }} strokeWidth=\"4\" animationDuration=\"2s\" />\r\n </div>\r\n :\r\n !error && widget.current?\r\n <div key={triggerId} onClick={kpiClick} className={(widget.current?.Alighnment == \"Left\" ? \"dl-kpi-container-click db-justify-content-flex-start\" : \"dl-kpi-container-click\")}>\r\n <div className={isKPICustomSizeNeeded ? \"dl-kpi-container kpi-custom-size\" : \"dl-kpi-container\"}>\r\n {getLabel()}\r\n {getValueComponent()}\r\n {getPreviousValueComponent()}\r\n </div>\r\n </div>\r\n : <div className=\"dl-flex-content-center dl-full-hight\" style={{ width: '100%' }}>\r\n <div className=\"dl-tooltip\">\r\n <RedWarningIcon className=\"red-warning-icon\" />\r\n <span className=\"dl-tooltiptext\">{error}</span>\r\n </div>\r\n\r\n </div>\r\n );\r\n}\r\n\r\n\r\nexport default KpiChart;\r\n","import { ProgressSpinner } from \"primereact/progressspinner\";\r\nimport React, { useEffect, useState } from \"react\";\r\nimport { DashboardAnalyticsService } from \"../../../../services/DashboardAnalyticsService\";\r\nimport { Session } from \"../../../../services/session\";\r\nimport { ReactWidgetPM } from \"../../../../types/widget\";\r\nimport { CustomChartProps } from \"./CustomChart\";\r\nimport { ReactComponent as RedWarningIcon } from \"../../../../assets/images/red-warning.svg\"\r\nimport moment from \"moment\";\r\nimport { isNullOrUndefined, isNullOrUndefinedOrEmpty } from \"../../../../Utils/General\";\r\nimport { DataTable } from 'primereact/datatable';\r\nimport { Column } from 'primereact/column';\r\n\r\ntype TableChartProps = {\r\n customChartProps: CustomChartProps;\r\n};\r\nconst TableChart = (props: TableChartProps) => {\r\n const [isLoading, setIsLoading] = useState<boolean>(true);\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 \r\n useEffect(() => {\r\n if(props.customChartProps && props.customChartProps.widget) {\r\n setWidget(props.customChartProps.widget);\r\n getTableData(props.customChartProps.widget);\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 widget.EntityId = !isNullOrUndefinedOrEmpty(widget.RelatedToEntityId) ? widget.RelatedToEntityId : widget.EntityId\r\n\r\n dashboardAnalyticsService.getTableData(widget as ReactWidgetPM)\r\n .then((res: any) => {\r\n if(res && res.data) {\r\n fillTableData(res.data);\r\n }\r\n setIsLoading(false);\r\n })\r\n .catch((error: any) => {\r\n if (error?.response?.data?.ErrorMessage) setError(error?.response?.data?.ErrorMessage);\r\n else setError(error.message);\r\n setIsLoading(false);\r\n })\r\n }\r\n\r\n const getBooleanStringValue = (value: any) => {\r\n if(isNullOrUndefined(value)) 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) => {\r\n if(!value) return value;\r\n\r\n let _date = moment(value);\r\n if(!_date || !_date.isValid()) return value;\r\n \r\n return _date.format(\"DD MMM YYYY\")\r\n }\r\n\r\n const fillTableData = (tableData : any) => {\r\n let tableRecords: any = [];\r\n if(tableData.Fields && tableData.Fields.length){\r\n setTableColumns([...tableData.Fields])\r\n }\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 == \"Date\" || valueType == \"DateTime\") ? getDateTimeValue(item[key]) : 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 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 value={tableData} responsiveLayout=\"scroll\">\r\n {\r\n tableColumns.map((column: any, index: number) => {\r\n return <Column key={column.FieldCode + \"_\" + index} field={column.FieldCode} header={column.DisplayName}></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","import React from \"react\";\r\nimport { DashboardDataBinding } from \"../../../../types/DashboardDataBinding\";\r\nimport { DataPointSelection } from \"../../../../types/SeriesMeasure\";\r\nimport { ReactWidgetPM } from \"../../../../types/widget\";\r\nimport KpiChart from \"./KpiChart\";\r\nimport TableChart from \"./TableChart\";\r\n\r\n\r\nexport type CustomChartProps = {\r\n widget: ReactWidgetPM | undefined,\r\n widgetRef: ReactWidgetPM | undefined,\r\n dataBinding: DashboardDataBinding;\r\n isPreviewModeActive?:boolean;\r\n onSelectDataPoint: (dataPointSelection: DataPointSelection) => void;\r\n};\r\nconst CustomChart = (props: CustomChartProps) => {\r\n const project = () => {\r\n switch (props.widget?.TypeCode) {\r\n case \"kpi\": return <KpiChart customChartProps={props} />;\r\n case \"table\": return <TableChart customChartProps={props} />;\r\n \r\n default: return <div>Invalid Type</div>;\r\n }\r\n }\r\n return (\r\n <React.Fragment>\r\n {\r\n props.widget?.TypeCode && props.widget?.TypeCode == 'table' && \r\n <div className=\"table-rows-number-indicator\">Showing the first 100 rows</div>\r\n }\r\n \r\n <div className={props.widget && props.widget?.TypeCode == 'table' ? \"dl-custom-chart-container dl-table-chart-container\" : \"dl-custom-chart-container\"}>{project()}</div>\r\n </React.Fragment>\r\n );\r\n}\r\n\r\n\r\nexport default CustomChart;","import { SeriesMeasure } from \"../../../../types/SeriesMeasure\";\r\nimport { ReactWidgetPM } from \"../../../../types/widget\";\r\n\r\nexport function buildToolTip(widget: ReactWidgetPM, value: any, seriesName: SeriesMeasure, label: any, index: number): string {\r\n var padding = (widget.TypeCode == 'line' && index > 0) ? 'padding-top: 3px' : '';\r\n return `\r\n <div style=\"min-width: 108px;` + padding + `\">\r\n <div style=\"display: flex;align-items: center;margin-bottom: 6px;\">\r\n <span style=\"margin: 0; min-height: 10px; min-width: 10px; height: 10px; width: 10px; background-color: transparent; border-radius: 50%; display: inline-block;\"></span>\r\n <p style=\" margin: 0; margin-left: 4px; white-space: pre-line; font-family: 'Manrope'; font-style: normal;font-weight: 400; font-size: 11px; line-height: 100%; color: #323232;\"> ` + getTooltiplabel(label, seriesName) + `</p>\r\n </div>\r\n <hr style=\"margin: 0;border-top: 1px solid #F0F0F0;\">\r\n <div style=\"display: flex;align-items: center;margin:0;margin-top: 6px;\">\r\n <p style=\"margin: 0;font-family: 'Manrope'; white-space: pre-line; font-style: normal;font-weight: 400; font-size: 11px;line-height: 100%;color: #A4A4A4;\"> ` + getMeasureType(seriesName) + `</p>\r\n <p style=\"margin: 0;margin-left: 6px; white-space: pre-line; font-family: 'Manrope';font-style: normal;font-weight: 500;font-size: 11px;line-height: 100%; color: #323232;\">` + getTooltipValue(value) + `</p>\r\n ` + getTooltipPercentage(widget) +\r\n ` </div>\r\n </div>\r\n `;\r\n}\r\n\r\nfunction getTooltipPercentage(widget: ReactWidgetPM): string {\r\n if (widget.TypeCode != \"donut\" && widget.TypeCode != \"pie\") return \"\";\r\n return `\r\n <p style=\"margin: 0;margin-left: 2px;font-family: 'Manrope';font-style: normal;font-weight: 500;font-size: 11px;line-height: 100%; color: #A4A4A4;flex: none; order: 1;flex-grow: 0;\">($percentValue)</p>\r\n `;\r\n}\r\n\r\nfunction getTooltiplabel(value: any, seriesMeasure: SeriesMeasure): string {\r\n if (value) return value;\r\n if (seriesMeasure && seriesMeasure.Name) return '$label' + \" - \" + seriesMeasure.Name;\r\n return '$label';\r\n}\r\n\r\nfunction getTooltipValue(value: any): string {\r\n if (value) return value;\r\n return '$dataValue';\r\n}\r\n\r\nfunction getMeasureType(seriesMeasure:SeriesMeasure): string {\r\n if (!seriesMeasure.Name) return \"Count:\"\r\n if(seriesMeasure.MeasureCode == \"Formula\"){\r\n var formula =JSON.parse(seriesMeasure.Formula)\r\n return formula.Name;\r\n }\r\n return seriesMeasure.Name.replace(/ .*/, '') + \":\";\r\n}","import { getLabelFormatByDateGroupType } from \"../../../../Utils/DateHelper\";\r\nimport { SeriesMeasure } from \"../../../../types/SeriesMeasure\";\r\nimport { ReactWidgetPM } from \"../../../../types/widget\";\r\nimport { ChartInfo } from \"./FusionChartObjectHelper\";\r\nimport { buildToolTip } from \"./FusionChartTooltip\";\r\n\r\nvar months = [\"Jan\", \"Feb\", \"Mar\", \"Apr\", \"May\", \"Jun\", \"Jul\", \"Aug\", \"Sep\", \"Oct\", \"Nov\", \"Dec\"];\r\nvar quarters = [\"Q\", \"Q1\", \"Q2\", \"Q3\", \"Q4\"];\r\n\r\nexport function getCategoriesBasedDataSource(chartInfo: ChartInfo, seriesMeasures: SeriesMeasure[], widget: ReactWidgetPM): any {\r\n if (seriesMeasuresIsEmpty(seriesMeasures)) return null;\r\n\r\n handelNullLabels(seriesMeasures);\r\n return {\r\n chart: chartInfo,\r\n categories: buildCategories(seriesMeasures, widget),\r\n dataset: buildDataSet(seriesMeasures, widget)\r\n }\r\n}\r\n\r\nexport function getStackedDataSource(chartInfo: ChartInfo, seriesMeasures: SeriesMeasure[], widget: ReactWidgetPM): any {\r\n if (seriesMeasuresIsEmpty(seriesMeasures)) return null;\r\n\r\n handelNullLabels(seriesMeasures);\r\n return {\r\n chart: chartInfo,\r\n categories: buildStackedCategories(seriesMeasures, widget),\r\n dataset: buildStackedDataSet(seriesMeasures, widget)\r\n }\r\n}\r\n\r\n\r\nexport function getSimpleDataSource(chartInfo: ChartInfo, seriesMeasures: SeriesMeasure[], widget: ReactWidgetPM): any {\r\n if (seriesMeasuresIsEmpty(seriesMeasures)) return null;\r\n\r\n handelNullLabels(seriesMeasures);\r\n return {\r\n chart: chartInfo,\r\n data: buildDataSource(seriesMeasures, widget),\r\n }\r\n}\r\n\r\nfunction handelNullLabels(seriesMeasures: SeriesMeasure[]) {\r\n seriesMeasures.forEach(element => {\r\n element.Values.forEach(value => {\r\n if (!value.Label || value.Label == '')\r\n value.Label = 'Not defined'\r\n });\r\n });\r\n}\r\n\r\nfunction seriesMeasuresIsEmpty(seriesMeasures: SeriesMeasure[]): boolean {\r\n if (!seriesMeasures || seriesMeasures.length == 0) return true;\r\n let hasValue = false;\r\n seriesMeasures.forEach(item => {\r\n if (item.Values && item.Values.length > 0) hasValue = true;\r\n });\r\n return !hasValue;\r\n}\r\n\r\nfunction buildDataSource(values: SeriesMeasure[], widget: ReactWidgetPM) {\r\n let data: any[] = [];\r\n if (!values || !values[0]) return data;\r\n\r\n var series = values[0];\r\n data = series.Values.map((e, index) => {\r\n let item = {\r\n value: e.Value,\r\n label: getLabelFormatByDateGroupType(e.Label, widget, false),\r\n id: {\r\n GroupById: e.GroupById,\r\n MeasureFieldId: series.MeasureFieldId,\r\n MeasureCode: series.MeasureCode,\r\n Formula: series.Formula\r\n },\r\n tooltext: buildToolTip(widget, null, series, e.Label, 0),\r\n }\r\n return item;\r\n });\r\n return data;\r\n}\r\n\r\nfunction buildDataSet(seriesMeasures: SeriesMeasure[], widget: ReactWidgetPM) {\r\n let dataSet: any[] = [];\r\n let seriesPosition = 1;\r\n\r\n seriesMeasures.forEach(seriesMeasure => {\r\n let datas = seriesMeasure.Values.map((e, index) => {\r\n return {\r\n value: e.Value,\r\n id: {\r\n GroupById: e.GroupById,\r\n MeasureFieldId: seriesMeasure.MeasureFieldId,\r\n MeasureCode: seriesMeasure.MeasureCode,\r\n Formula: seriesMeasure.Formula\r\n },\r\n tooltext: buildToolTip(widget, e.Value, seriesMeasure, null, index),\r\n }\r\n });\r\n dataSet.push({\r\n data: datas,\r\n seriesname: seriesMeasure.Name,\r\n anchorBgColor: \"inherit\",\r\n anchorBorderColor: \"#FFFFFF\",\r\n anchorBorderThickness: \"2\",\r\n anchorHoverColor: \"inherit\",\r\n parentyaxis: seriesMeasure.PlotasLineChart && seriesMeasure.PlotonSecondAxis ? 'S' : \"P\",\r\n renderAs: seriesMeasure.PlotasLineChart ? 'line' : \"column\",\r\n });\r\n seriesPosition++;\r\n });\r\n return dataSet;\r\n}\r\n\r\nfunction buildStackedDataSet(seriesMeasures: SeriesMeasure[], widget: ReactWidgetPM) {\r\n let dataSet: any[] = [];\r\n let seriesPosition = 1;\r\n\r\n var series = seriesMeasures[0];\r\n\r\n const uniqueGroups: any[] = [];\r\n\r\n series.Values.forEach(element => {\r\n if (!uniqueGroups.find(x => x.code == element.GroupByIdSec))\r\n uniqueGroups.push({ code: element.GroupByIdSec, label: getLabelFormatByDateGroupType(element.LabelSec, widget, true) })\r\n });\r\n\r\n uniqueGroups.forEach(group => {\r\n dataSet.push({\r\n seriesName: group.label,\r\n data: buildStackedGroupData(group, series, widget)\r\n });\r\n seriesPosition++;\r\n });\r\n let emptylabels = dataSet.filter(e=>e.seriesName == null)\r\n dataSet = widget.SecondaryDateGroupCode ? sortDataSet(dataSet.filter(e=>e.seriesName != null), widget.SecondaryDateGroupCode!) : dataSet;\r\n return emptylabels.concat(dataSet);\r\n}\r\n\r\nfunction sortDataSet(dataSet: any[], SecondaryDateGroupCode: string) {\r\n switch (SecondaryDateGroupCode) {\r\n case \"Year\":\r\n return dataSet.sort((s1, s2) => s1.seriesName - s2.seriesName);\r\n case \"Month\":\r\n return dataSet.sort(function (s1, s2) {\r\n return months.indexOf(s1.seriesName) - months.indexOf(s2.seriesName);\r\n });\r\n case \"Quarter\":\r\n return dataSet.sort(function (s1, s2) {\r\n return quarters.indexOf(s1.seriesName) - quarters.indexOf(s2.seriesName);\r\n });\r\n case \"Month & Year\": return dataSet.sort(function sort(s1, s2) {\r\n var aa = s1.seriesName.split(' '),\r\n bb = s2.seriesName.split(' ');\r\n return aa[1] - bb[1] || months.indexOf(aa[0]) - months.indexOf(bb[0]);\r\n });\r\n case \"Quarter & Year\": return dataSet.sort(function sort(s1, s2) {\r\n var aa = s1.seriesName.split(' '),\r\n bb = s2.seriesName.split(' ');\r\n return aa[1] - bb[1] || quarters.indexOf(aa[0]) - quarters.indexOf(bb[0]);\r\n });\r\n default:\r\n return dataSet;\r\n }\r\n}\r\n\r\nfunction buildStackedGroupData(secGroup: any, series: SeriesMeasure, widget: ReactWidgetPM) {\r\n const uniqueGroups: any[] = getUniqueGroupOrderdList(series);\r\n\r\n let data: any[] = [];\r\n uniqueGroups.forEach(group => {\r\n data.push({\r\n value: series.Values.find(x => x.GroupById == group.code && x.GroupByIdSec == secGroup.code)?.Value,\r\n id: {\r\n GroupById: group.code,\r\n MeasureFieldId: series.MeasureFieldId,\r\n GroupByIdSec: secGroup.code,\r\n MeasureCode: series.MeasureCode,\r\n Formula: series.Formula\r\n },\r\n tooltext: buildToolTip(widget, null, series, group.label + \" - \" + secGroup.label, 0),\r\n })\r\n });\r\n\r\n return data;\r\n}\r\nfunction buildCategories(seriesMeasures: SeriesMeasure[], widget: ReactWidgetPM) {\r\n var categories = seriesMeasures[0].Values.map((e) => {\r\n return {\r\n label: getLabelFormatByDateGroupType(e.Label, widget, false)\r\n }\r\n });\r\n var result: any[] = [];\r\n result.push({ category: categories });\r\n return result;\r\n}\r\n\r\nfunction buildStackedCategories(seriesMeasures: SeriesMeasure[], widget: ReactWidgetPM) {\r\n const uniqueGroups: any[] = getUniqueGroupOrderdList(seriesMeasures[0]);\r\n\r\n var categories = uniqueGroups.map((e) => {\r\n return {\r\n label: getLabelFormatByDateGroupType(e.label, widget, false)\r\n }\r\n });\r\n var result: any[] = [];\r\n result.push({ category: categories });\r\n return result;\r\n}\r\n\r\nfunction getUniqueGroupOrderdList(series: SeriesMeasure) {\r\n let uniqueGroups: any[] = [];\r\n series.Values.forEach(element => {\r\n if (!uniqueGroups.find(x => x.code == element.GroupById))\r\n uniqueGroups.push({ code: element.GroupById, label: element.Label });\r\n });\r\n return uniqueGroups;\r\n}\r\n\r\n","import { ChartObject } from \"fusioncharts\";\r\nimport { SeriesMeasure } from \"../../../../types/SeriesMeasure\";\r\nimport { ReactWidgetPM } from \"../../../../types/widget\";\r\nimport { getCategoriesBasedDataSource, getSimpleDataSource, getStackedDataSource } from \"./FusionChartDataSoruceBuilder\";\r\nimport { ChartInfo } from \"./FusionChartObjectHelper\";\r\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\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\nfunction getColumnObject(seriesMeasures: SeriesMeasure[], widget: ReactWidgetPM): ChartObject {\r\n let chart = getDefaultChartobject();\r\n chart.type = isGroupByFieldDateTime(widget.GroupByFieldDataType) ? \"mscombi2D\" : \"scrollcombidy2d\";\r\n\r\n let chartInfo = getDefaultChartInfo(widget);\r\n chartInfo.scrollPadding = \"8\";\r\n chartInfo.flatScrollBars = \"1\";\r\n chartInfo.showPercentValues = widget.ShowValueAsNumber ? \"0\" : \"1\";\r\n chartInfo.showLegend = widget.ShowLegend ? '1' : '0';\r\n chartInfo.scrollPosition = \"top\";\r\n setLineDash(chartInfo);\r\n chartInfo.chartTopMargin = \"20\";\r\n chartInfo.chartBottomMargin = \"10\";\r\n chartInfo.chartLeftMargin = \"20\";\r\n chartInfo.chartRightMargin = \"50\";\r\n chartInfo.canvasBottomPadding = \"10\";\r\n setDualyAxis(chartInfo, widget, seriesMeasures);\r\n chart.dataSource = getCategoriesBasedDataSource(chartInfo, seriesMeasures, widget);\r\n chartInfo.legendPosition = getWidgetLegendPosition(widget);\r\n\r\n return chart;\r\n}\r\n\r\nfunction setLineDash(chartInfo: ChartInfo) {\r\n chartInfo.divLineDashed = \"1\";\r\n chartInfo.divLineDashLen = \"5\";\r\n chartInfo.divLineDashGap = \"5\";\r\n chartInfo.divLineColor = \"#E7E7E7\";\r\n chartInfo.divLineAlpha = \"100\";\r\n chartInfo.divLineThickness = \"1\";\r\n}\r\n\r\n\r\nfunction getDefaultChartobject(): ChartObject {\r\n let chart = {} as ChartObject;\r\n chart.type = \"column2d\";\r\n chart.width = \"100%\";\r\n chart.height = \"100%\";\r\n chart.dataFormat = \"json\";\r\n return chart;\r\n}\r\n\r\nconst getXaxisTitle = (widget: ReactWidgetPM) => {\r\n if(widget.TypeCode == 'bar'){\r\n return widget.ShowYAxisTitle ? widget.YAxisTitle || \"\" : \"\"\r\n }\r\n\r\n return widget.XAxisTitle || \"\";\r\n}\r\n\r\nconst getYaxisTitle = (widget: ReactWidgetPM) => {\r\n if(widget.TypeCode == 'bar'){\r\n return widget.ShowXAxisTitle ? widget.XAxisTitle || \"\" : \"\"\r\n }\r\n \r\n return widget.YAxisTitle || \"\";\r\n}\r\n\r\nfunction getDefaultChartInfo(widget: ReactWidgetPM): ChartInfo {\r\n let chart = {} as ChartInfo;\r\n chart.theme = \"fusion\";\r\n chart.baseFont = defautFont;\r\n chart.baseFontSize = defautFontSize;\r\n chart.baseFontColor = defautColor;\r\n chart.legendCaptionFontSize = defautFontSize;\r\n chart.legendCaptionFontColor = defautColor;\r\n chart.legendCaptionFont = defautFont;\r\n chart.labelFontColor = defautColor;\r\n chart.labelFont = defautFont;\r\n chart.legendItemFont = defautFont;\r\n chart.legendItemFontSize = defautFontSize;\r\n chart.sYAxisNameFont = defautFont;\r\n chart.sYAxisNameFontSize = defautFontSize;\r\n chart.sYAxisNameFontColor = defautColor;\r\n\r\n chart.pYAxisNameFont = defautFont;\r\n chart.pYAxisNameFontSize = defautFontSize;\r\n chart.pYAxisNameFontColor = defautColor;\r\n\r\n chart.xAxisNameFont = defautFont;\r\n chart.xAxisNameFontSize = defautFontSize;\r\n chart.xAxisNameFontColor = defautColor;\r\n\r\n chart.yAxisNameFont = defautFont;\r\n chart.yAxisNameFontSize = defautFontSize;\r\n chart.yAxisNameFontColor = defautColor;\r\n chart.drawCrossLine = \"0\";\r\n \r\n chart.xAxisName = widget.ShowXAxisTitle && widget.XAxisTitle ? widget.XAxisTitle : \"\";\r\n chart.yAxisName = widget.ShowYAxisTitle && widget.YAxisTitle ? widget.YAxisTitle : \"\";\r\n chart.labelDisplay = widget.XAxisLabelsDisplay ? widget.XAxisLabelsDisplay : \"Auto\";\r\n chart.slantLabel = \"1\"\r\n chart.labelFontSize = widget.XAxisLabelsFontSize ? widget.XAxisLabelsFontSize + \"\" : \"10\";\r\n\r\n chart.showValues = widget.ShowValue ? \"1\" : '0';\r\n chart.valuePosition = widget.ShowValue && widget.ValuePosition ? widget.ValuePosition : 'Outside';\r\n\r\n let isValuePositionInside = widget.ShowValue && widget.ValuePosition && widget.ValuePosition.toLowerCase() == 'inside';\r\n\r\n if(widget.ShowValue && widget.ValuePosition && isColumnOrBarChart(widget)) { \r\n chart.placeValuesInside = widget.ValuePosition.toLowerCase() == 'inside' ? \"1\" : \"0\"\r\n }\r\n\r\n if(widget.IsStacked && isValuePositionInside && isColumnOrBarChart(widget)) { \r\n chart.minPlotHeightForValue = \"35\"\r\n }\r\n\r\n if(isValuePositionInside && isPieOrDonutChart(widget)) { \r\n chart.minAngleForValue = \"27\"\r\n }\r\n\r\n chart.palettecolors = \"#369CFB,#4AC76F,#F6CF33,#32C7C7,#935BE0,#FAAD14,#EE5F77,#5D62B5, #29C3BE, #F2726F, #FFC533, #62B58F, #BC95DF, #67CDF2\";\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 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\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 : \"#4AC76F\",\r\n plotColor2 : \"#F6CF33\",\r\n plotColor3 : \"#32C7C7\",\r\n plotColor4 : \"#935BE0\",\r\n plotColor5 : \"#FAAD14\",\r\n plotColor6 : \"#EE5F77\",\r\n plotColor7 : \"#5D62B5\",\r\n plotColor8 : \"#29C3BE\",\r\n plotColor9 : \"#F2726F\",\r\n plotColor10 : \"#FFC533\",\r\n plotColor11 : \"#62B58F\",\r\n plotColor12 : \"#BC95DF\",\r\n plotColor13 : \"#67CDF2\"\r\n}","import { lightBlueColor, lightGreenColor, lightOrangeColor, lightPurpleColor, lightRedColor, lightTurquoiseColor, lightYellowColor, mainBlueColor, mainGreenColor, mainOrangeColor, mainPurpleColor, mainRedColor, mainTurquoiseColor, mainYellowColor, plotColorsDictionary } from \"./FusionColors\";\r\n\r\nexport interface ChartInfo {\r\n theme: string;\r\n scrollPosition: string;\r\n scrollHeight: string;\r\n scrollWidth: string;\r\n scrollPadding: string;\r\n flatScrollBars: string;\r\n enableSlicing: string;\r\n chartLeftMargin: string;\r\n chartTopMargin: string;\r\n chartRightMargin: string;\r\n chartBottomMargin: string;\r\n baseFont: string;\r\n baseFontSize: string;\r\n showPercentValues: string;\r\n showValues: string;\r\n showLegend: string;\r\n lineColor: string;\r\n divLineDashed: string;\r\n divLineDashLen: string;\r\n divLineDashGap: string;\r\n divLineColor: string;\r\n divLineThickness: string;\r\n divLineAlpha: string;\r\n enableRotation: string;\r\n legendItemFont: string;\r\n legendItemFontSize: string;\r\n legendCaptionFont: string;\r\n legendCaptionFontSize: string;\r\n labelFont: string;\r\n labelFontSize: string;\r\n toolTipBorderColor: string;\r\n toolTipBgAlpha: string;\r\n showToolTipShadow: string;\r\n toolTipBgColor: string;\r\n plottooltext: string;\r\n anchorradius: string;\r\n canvasBottomPadding: string;\r\n canvasTopPadding: string;\r\n labelDisplay: string;\r\n slantLabel: string;\r\n manageLabelOverflow: string;\r\n useEllipsesWhenOverflow: string;\r\n enableSmartLabels: string;\r\n pieRadius: string;\r\n doughnutRadius: string;\r\n baseFontColor: string;\r\n legendCaptionFontColor: string;\r\n labelFontColor: string;\r\n plotColorinTooltip: string;\r\n showLabels: string;\r\n legendPosition: string;\r\n legendScrollBgColor: string;\r\n legendIconScale: number;\r\n scrollShowButtons: string;\r\n legendCaptionAlignment: string;\r\n legendWidth: string;\r\n alignLegendWithCanvas: string;\r\n centerLabelBold: string;\r\n showSecondaryLimits: string;\r\n showDivLineSecondaryValue: string;\r\n pYAxisName: string;\r\n sYAxisname: string;\r\n sYAxisNameFont: string;\r\n sYAxisNameFontColor: string;\r\n sYAxisNameFontSize: string;\r\n pYAxisNameFont: string;\r\n pYAxisNameFontColor: string;\r\n pYAxisNameFontSize: string;\r\n sYAxisNameBorderPadding: number;\r\n pYAxisNameBorderPadding: number;\r\n xAxisNameFont: string;\r\n xAxisName: string;\r\n xAxisNameFontSize: string;\r\n xAxisNameFontColor: string;\r\n yAxisNameFont: string;\r\n yAxisNameFontSize: string;\r\n yAxisNameFontColor: string;\r\n yAxisName: string;\r\n adjustDiv: string;\r\n placeValuesInside:string;\r\n valuePosition:string;\r\n minPlotHeightForValue:string;\r\n minAngleForValue:string;\r\n drawCrossLine:string;\r\n palettecolors:string;\r\n plotHoverEffect:string;\r\n}\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 >= 14) {\r\n //This conversion make sure that we always in the fusion colors range [0 - 13];\r\n // fusuin uses round-robin way for color selection.\r\n _index = _index % 14;\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 default: return \"#0566c2\";\r\n }\r\n}\r\n\r\n","import React, { forwardRef, useImperativeHandle, useRef, useState } from \"react\";\r\nimport ReactFC from 'react-fusioncharts';\r\nimport { DashboardDataBinding } from \"../../../../types/DashboardDataBinding\";\r\nimport { DataPointSelection } from \"../../../../types/SeriesMeasure\";\r\nimport { ReactWidgetPM } from \"../../../../types/widget\";\r\nimport FusionCharts, { ChartObject } from 'fusioncharts';\r\nimport { FusionCharts as fusionCharts } from 'fusioncharts';\r\nimport Charts from 'fusioncharts/fusioncharts.charts';\r\nimport FusionTheme from 'fusioncharts/themes/fusioncharts.theme.fusion';\r\nimport { useEffect } from \"react\";\r\nimport { DashboardAnalyticsService } from \"../../../../services/DashboardAnalyticsService\";\r\nimport { ProgressSpinner } from \"primereact/progressspinner\";\r\nimport { BuildFusionChartObject } from \"./FusionChartObjectBuilder\";\r\nimport useResizeObserver from \"use-resize-observer\";\r\nimport { FusionChartHelper } from \"./FusionChartHelper\";\r\nimport { Session } from \"../../../../services/session\";\r\nimport { ReactComponent as RedWarningIcon } from \"../../../../assets/images/red-warning.svg\"\r\nimport { v4 as uuidv4 } from 'uuid';\r\nimport { getPlotColorByIndexOrder } from \"./FusionChartObjectHelper\";\r\nimport { isNullOrUndefinedOrEmpty } from \"../../../../Utils/General\";\r\n\r\nReactFC.fcRoot(FusionCharts, Charts, FusionTheme);\r\n\r\nFusionCharts.options['license']({\r\n key: 'prD4C-8eiA7A3A3C7E6G4B4A3J4C7B2D3D2nyqE1C3fd1npaE4D4tlA-21D7E4F4F1F1E1F4F1A10A8C2C5F5E2F2D1hwqD1B5D1aG4A19A32twbC6D3G4lhJ-7A9C11A5B-13ddA2I3A1B9B3D7A2B4G2H3H1F-7smC8B2XB4cetB8A7A5mxD3SG4F2tvgB2A3B2E4C3I3C7B3A4A3A2D3D2G4J-7==',\r\n creditLabel: false,\r\n});\r\n\r\nexport type FusionChartProps = {\r\n widget: ReactWidgetPM | undefined,\r\n widgetRef: ReactWidgetPM | undefined,\r\n dataBinding: DashboardDataBinding;\r\n onSelectDataPoint: (dataPointSelection: DataPointSelection) => void;\r\n};\r\nconst FusionChart = forwardRef((props: FusionChartProps, comRef) => {\r\n const [dataLoaded, setDataLoaded] = useState<boolean>(false);\r\n const [error, setError] = useState<string>();\r\n const [fusionKey, setFusionKey] = useState(uuidv4());\r\n const chartData = useRef<any>(null);\r\n const [resizeTimer, setResizeTimer] = useState<any | null>(null);\r\n const axiosController = useRef<AbortController | null>(new AbortController());\r\n\r\n \r\n const widget = useRef<ReactWidgetPM>();\r\n const [args, setArgs] = useState<ChartObject>({});\r\n const [fChart, setFchart] = useState<fusionCharts>();\r\n const [chartContainerId, setChartContainerId] = useState<any>(uuidv4());\r\n //(Math.random() + 1).toString(36).substring(7);\r\n const progressRef = useRef<any>(null);\r\n const fusionRef = useRef<any>(null);\r\n const fusionChartHelper = useRef<FusionChartHelper>();\r\n const isDummyChangesActive = useRef(false);\r\n\r\n useEffect(() => {\r\n axiosController.current = new AbortController();\r\n widget.current = props.widget;\r\n RefreshData();\r\n\r\n props.dataBinding?.widgetUpdated.subscribe(updatedWidget => {\r\n if (updatedWidget?.key != widget.current?.key) return;\r\n widget.current = {...updatedWidget};\r\n if(chartData && chartData.current){\r\n let _data = JSON.parse(JSON.stringify(chartData.current));\r\n isDummyChangesActive.current = true;\r\n handleData(_data, true); \r\n }\r\n });\r\n\r\n window.addEventListener(\"resize\", handleResize);\r\n return () => {\r\n window.removeEventListener(\"resize\", handleResize);\r\n setDataLoaded(false);\r\n if(axiosController && axiosController?.current?.abort){\r\n axiosController?.current?.abort();\r\n }\r\n };\r\n }, []);\r\n\r\n\r\n const handleResize = () => {\r\n clearTimeout(resizeTimer);\r\n setResizeTimer(\r\n setTimeout(() => {\r\n HandleSizeChange();\r\n }, 200)\r\n );\r\n }\r\n\r\n useImperativeHandle(comRef, () => ({\r\n onResizeFinish() {\r\n HandleSizeChange();\r\n }\r\n }));\r\n\r\n const HandleSizeChange = () => {\r\n if (!widget || (widget.current?.TypeCode != \"pie\" && widget.current?.TypeCode != \"donut\")) return;\r\n setTimeout(()=> {\r\n var oldPieRadius = fusionChartHelper?.current?.getPieRadius();\r\n var oldLegendWidth = fusionChartHelper?.current?.getLegendWidth();\r\n\r\n fusionChartHelper?.current?.trimChartLabels(fusionRef?.current?.offsetWidth, fusionRef?.current?.offsetHeight)!;\r\n \r\n if (widget.current?.LabelsPosition != 'InLegend' && oldPieRadius == fusionChartHelper?.current?.getPieRadius()) return;\r\n if (widget.current?.LabelsPosition == 'InLegend' && oldLegendWidth == fusionChartHelper?.current?.getLegendWidth()) return;\r\n\r\n setDataLoaded(false);\r\n setTimeout(()=> {\r\n setDataLoaded(true);\r\n }, 100);\r\n }, 100);\r\n }\r\n\r\n const RefreshData = () => {\r\n if (Session.Tenant == 0) {\r\n handleData(null);\r\n return;\r\n }\r\n\r\n var dashboardAnalyticsService = new DashboardAnalyticsService();\r\n var postWidget: any = { ...widget.current };\r\n postWidget.onChange = undefined;\r\n\r\n let signal :any= undefined;\r\n if(axiosController) {\r\n axiosController?.current?.abort();\r\n let updatedAxiosController = new AbortController();\r\n axiosController.current= updatedAxiosController\r\n signal = updatedAxiosController?.signal;\r\n }\r\n\r\n postWidget.EntityId = !isNullOrUndefinedOrEmpty(postWidget.RelatedToEntityId) ? postWidget.RelatedToEntityId : postWidget.EntityId\r\n\r\n dashboardAnalyticsService.getData(postWidget as ReactWidgetPM, signal).then(result => {\r\n handleData(result?.data);\r\n chartData.current = result?.data;\r\n setDataLoaded(true);\r\n }, error => {\r\n console.log('error', error);\r\n if (error?.response?.data?.ErrorMessage) setError(error?.response?.data?.ErrorMessage);\r\n else setError(error.message);\r\n setDataLoaded(true);\r\n })\r\n }\r\n\r\n const handleData = (data: any, isDummyChange: boolean = false): void => {\r\n let chart = BuildFusionChartObject(data, widget.current!);\r\n fusionChartHelper.current = new FusionChartHelper(widget.current!, chart);\r\n fusionChartHelper?.current.trimChartLabels(progressRef?.current?.offsetWidth, progressRef?.current?.offsetHeight)!;\r\n setArgs(chart);\r\n \r\n if(!isDummyChange){\r\n setDataLoaded(true);\r\n }else{\r\n setTimeout(() => {\r\n isDummyChangesActive.current = false;\r\n }, 100);\r\n }\r\n }\r\n\r\n const dataplotClick = (eventObj: any, dataObj: any): void => {\r\n props.onSelectDataPoint({\r\n GroupById: dataObj.id.groupbyid,\r\n MeasureFieldId: dataObj.id.measurefieldid,\r\n MeasureCode: dataObj.id.measurecode,\r\n Formula: dataObj.id.formula,\r\n Widget: widget.current,\r\n GroupByIdSec: dataObj.id.groupbyidsec\r\n });\r\n };\r\n\r\n const { ref } = useResizeObserver<HTMLDivElement>({\r\n onResize: ({ width, height }) => {\r\n fChart?.resizeTo(width as number, height as number);\r\n },\r\n });\r\n\r\n const renderComplete = (chart: any): void => {\r\n setFchart(chart);\r\n }\r\n\r\n const handlePieDonutChartTooltip = (chartData: any) => {\r\n if(chartData && chartData.data && chartData.data.length) {\r\n chartData.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: chartData});\r\n }\r\n }\r\n\r\n const handleOtherChartsTooltip = (chartData: any) => {\r\n if(chartData && chartData.dataset && chartData.dataset.length) {\r\n chartData.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: chartData});\r\n }\r\n }\r\n\r\n const loaded = (event: any) => {\r\n if(isDummyChangesActive && isDummyChangesActive.current) return;\r\n\r\n let chartData = 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(chartData);\r\n }else {\r\n handleOtherChartsTooltip(chartData);\r\n }\r\n }\r\n\r\n return (\r\n !dataLoaded ?\r\n <div ref={progressRef} className={'dl-full-hight dl-flex-content-center spinner-custome'}>\r\n <ProgressSpinner style={{ width: '40px', height: '40px' }} strokeWidth=\"4\" animationDuration=\"2s\" />\r\n </div>\r\n :\r\n !error ?\r\n <div className={'db-fc-parent-container'} ref={fusionRef}>\r\n <div className={'db-fc-container'} key={fusionKey} ref={ref} id={chartContainerId}>\r\n <ReactFC\r\n {...args}\r\n fcEvent-dataplotClick={dataplotClick}\r\n fcEvent-loaded={loaded}\r\n onRender={renderComplete}\r\n />\r\n </div>\r\n </div>\r\n : <div className=\"dl-flex-content-center dl-full-hight\" style={{ width: '100%' }}>\r\n <div className=\"dl-tooltip\">\r\n <RedWarningIcon className=\"red-warning-icon\" />\r\n <span className=\"dl-tooltiptext\">{error}</span>\r\n </div>\r\n </div>\r\n )\r\n});\r\nexport default FusionChart;\r\n\r\n","import React, { forwardRef, useEffect, useImperativeHandle, useRef, useState } from \"react\";\r\nimport { DataPointSelection } from \"../../types/SeriesMeasure\";\r\nimport { ReactWidgetPM } from \"../../types/widget\";\r\nimport { DashboardDataBinding } from '../../types/DashboardDataBinding';\r\nimport CustomChart from \"./ChartsComponents/CustomCharts/CustomChart\";\r\nimport FusionChart from \"./ChartsComponents/FusionCharts/FusionChart\";\r\nimport { isNullOrUndefined } from \"../../Utils/General\";\r\nimport { ReactComponent as DeleteWidgetIcon } from \"../../assets/images/delete-icon.svg\"\r\nimport { ReactComponent as EditWidgetIcon } from \"../../assets/images/edit-icon.svg\"\r\nimport { ReactComponent as CopyWidgetIcon } from \"../../assets/images/copy-icon.svg\"\r\nimport Popup from 'reactjs-popup';\r\nimport { v4 as uuidv4 } from 'uuid';\r\n\r\ntype WidgetCardProps = {\r\n editBtnClicked(widget: any): any;\r\n copyBtnClicked?(id: any): any;\r\n deleteBtnClicked(i: any): any;\r\n widget: ReactWidgetPM | undefined;\r\n widgetRef: ReactWidgetPM | undefined;\r\n el: any;\r\n dateFilter: any;\r\n dataBinding: DashboardDataBinding;\r\n isInEditMode: boolean;\r\n isPreviewModeActive?: boolean;\r\n onSelectDataPoint: (dataPointSelection: DataPointSelection) => void;\r\n}\r\n\r\n\r\nconst WidgetCard = forwardRef((props: WidgetCardProps, comRef) => {\r\n const widget = useRef<ReactWidgetPM>();\r\n const [isLoading, setIsLoading] = useState(false);\r\n const fusionChartRef = useRef<any>(null);\r\n const [triggerId, setTriggerId] = useState(uuidv4());\r\n\r\n const editWidget = () => {\r\n props.editBtnClicked(widget.current)\r\n };\r\n\r\n const copyWidget = () => {\r\n if(props && props.copyBtnClicked){\r\n props.copyBtnClicked(widget.current?.key)\r\n }\r\n };\r\n \r\n useEffect(() => {\r\n widget.current = props.widget;\r\n props.dataBinding?.onEditWidget.subscribe(e => {\r\n if (e?.key != widget.current?.key) return;\r\n setIsLoading(true);\r\n widget.current = { ...e };\r\n setIsLoading(false);\r\n })\r\n\r\n props.dataBinding?.widgetUpdated.subscribe(updatedWidget => {\r\n if (updatedWidget?.key != widget.current?.key) return;\r\n widget.current = {...updatedWidget};\r\n setTriggerId(uuidv4());\r\n });\r\n }, []);\r\n\r\n useImperativeHandle(comRef, () => ({\r\n onResizeFinish() {\r\n fusionChartRef?.current?.onResizeFinish();\r\n }\r\n }));\r\n\r\n const getCSSPropertyValue = (widgetData: ReactWidgetPM | undefined, propName: string, propUnit: string = \"\", propDefaultVal: any = \"\") => {\r\n return widgetData && propName && !isNullOrUndefined(widgetData[propName]) ? widgetData[propName] + propUnit : propDefaultVal || \"\";\r\n }\r\n \r\n const GetChartComponent = () => {\r\n if (isLoading || !widget.current?.TypeCode) return \"\";\r\n if (widget.current?.TypeCode == \"kpi\" || widget.current?.TypeCode == \"table\") return <CustomChart isPreviewModeActive={props.isPreviewModeActive} dataBinding={props.dataBinding} widget={widget.current} widgetRef={props.widgetRef} onSelectDataPoint={props.onSelectDataPoint} />;\r\n return <FusionChart ref={fusionChartRef} dataBinding={props.dataBinding} widget={widget.current} widgetRef={props.widgetRef} onSelectDataPoint={props.onSelectDataPoint} />\r\n }\r\n\r\n return (\r\n <div className=\"dl-panel\" key={props.el.i} >\r\n <header key={triggerId} className=\"widget-header\">\r\n <div className=\"header-contents\">\r\n <div style={{ cursor: props.isInEditMode ? \"move\" : \"default\" }} className=\"widget-titles-container\">\r\n <div\r\n className=\"title-container\"\r\n style={{ justifyContent: getCSSPropertyValue(widget?.current, 'TitleAlignment', '', undefined) }}>\r\n <Popup\r\n className=\"title-tooltip-container\"\r\n trigger={\r\n <div\r\n className=\"title\"\r\n style={{\r\n fontSize: getCSSPropertyValue(widget.current, 'TitleFontSize', 'px'),\r\n color: getCSSPropertyValue(widget.current, 'TitleFontColor', ''),\r\n textAlign: getCSSPropertyValue(widget?.current, 'TitleAlignment', '', undefined),\r\n }}>\r\n {widget.current?.Title}\r\n </div>\r\n }\r\n position={['top center']}\r\n arrowStyle={{color: '#262626'}}\r\n offsetY={-8}\r\n on={['hover', 'focus']}\r\n >\r\n <span className=\"widget-title-tooltip-text\">{widget.current?.Title}</span>\r\n </Popup>\r\n </div>\r\n\r\n <div\r\n className={widget.current?.Subtitle && widget.current?.Subtitle.length > 0 ? \"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 }}\r\n >{widget.current?.Subtitle}</div>\r\n </div>\r\n <div className={widget.current?.Title && widget.current?.Title.length > 0 ? \"widget-options-container\" : \"widget-options-container margin-top-6\"}>\r\n {props.isInEditMode ?\r\n <React.Fragment>\r\n <EditWidgetIcon onClick={() => editWidget()} />\r\n <CopyWidgetIcon onClick={() => copyWidget()} />\r\n <DeleteWidgetIcon onClick={() => props.deleteBtnClicked(props.widget?.key)} />\r\n </React.Fragment>\r\n : null\r\n }\r\n </div>\r\n </div>\r\n \r\n </header>\r\n <div className=\"dl-dashboard-widget\"> \r\n {GetChartComponent()}\r\n </div>\r\n </div>\r\n );\r\n});\r\n\r\nexport default WidgetCard;\r\n","export function deepClone (obj){\r\n return JSON.parse(JSON.stringify(obj))\r\n}","import { WidthProvider, Responsive, Layout, Layouts } from \"react-grid-layout\";\r\nimport React, { useEffect, useRef, useState } from \"react\";\r\nimport { ReactWidgetPM } from \"../../types/widget\";\r\nimport WidgetCard from \"./WidgetCard\";\r\nimport { DataPointSelection } from \"../../types/SeriesMeasure\";\r\nimport { DashboardDataBinding } from \"../../types/DashboardDataBinding\";\r\nimport { deepClone } from '../../services/clone';\r\nimport useResizeObserver from \"use-resize-observer\";\r\n\r\nconst ResponsiveReactGridLayout = WidthProvider(Responsive);\r\n\r\nexport type DeleteWidgetProps = {\r\n id: string, \r\n layouts: any, \r\n widgets: { lg: ReactWidgetPM[] }\r\n}\r\n\r\ntype DashboardDesignerProps = {\r\n editMode: boolean,\r\n Widgetlayouts: { lg: ReactWidgetPM[] },\r\n openEditWidget: (widget: ReactWidgetPM) => void\r\n onLayoutChange: (layouts: Layouts) => void,\r\n onWidgetDelete: (deleteProps: DeleteWidgetProps) => void,\r\n onCopyWidget?:(id: string) => void,\r\n dataBinding: DashboardDataBinding,\r\n onSelectDataPoint: (dataPointSelection: DataPointSelection) => void\r\n};\r\n\r\nconst DashboardDesigner = (props: DashboardDesignerProps) => {\r\n const array12 = Array.from({ length: 12 }).fill(null);\r\n const minimumPlaceholderRowsCount = 12;\r\n const [layouts, setLayouts] = useState<Layouts>({ lg: [] });\r\n const [placeholderRowsArray, setplaceholderRowsArray] = useState(Array.from({ length: minimumPlaceholderRowsCount }).fill(null));\r\n const [dateFilter, setDateFilter] = useState<Date | Date[] | undefined>(undefined);\r\n const [isInEditMode, setisInEditMode] = useState(false);\r\n const widgetsDictionaryRef = useRef<{ [k: string]: ReactWidgetPM }>({});\r\n const [widgets, setWidgets] = useState<{ lg: ReactWidgetPM[] }>({ lg: [] });\r\n const gridLayoutComponent = useRef<any>(null);\r\n const entered = useRef<boolean>(false);\r\n const widgetCardRef = useRef<any[]>([]);\r\n\r\n\r\n useEffect(() => {\r\n FillLayout(props.Widgetlayouts);\r\n }, [props.Widgetlayouts]);\r\n\r\n useEffect(() => {\r\n props.dataBinding?.onDeleteWidgetConfirmed.subscribe(deleteProps => {\r\n if (deleteProps){\r\n deletePanel(deleteProps);\r\n }\r\n })\r\n }, []);\r\n\r\n const FillLayout = (dashboardLayouts: { lg: ReactWidgetPM[] }) => {\r\n var clone: { lg: ReactWidgetPM[] } = deepClone(dashboardLayouts);\r\n var layout = createLayout(clone);\r\n FillWidgetDictionary(clone);\r\n setWidgets(clone);\r\n setLayouts(layout);\r\n UpdatePlaceholderDimensions(layout);\r\n }\r\n const FillWidgetDictionary = (clone: { lg: ReactWidgetPM[] }) => {\r\n for (const item of clone.lg) {\r\n widgetsDictionaryRef.current[item.key] = item;\r\n }\r\n }\r\n const createLayout = (dashboardLayouts: { lg: ReactWidgetPM[] }): Layouts => {\r\n var layout: any = { lg: [] };\r\n dashboardLayouts.lg.map(w => w.Layout as Layout).forEach(e => {\r\n layout.lg.push(e)\r\n })\r\n return layout;\r\n }\r\n\r\n useEffect(() => {\r\n setisInEditMode(props.editMode);\r\n }, [props.editMode]);\r\n\r\n function onLayoutChange(layout: any, changedLayouts: Layouts) {\r\n UpdateWidget(changedLayouts);\r\n setLayouts(changedLayouts);\r\n UpdatePlaceholderDimensions(changedLayouts);\r\n if (entered.current == false) {\r\n entered.current = true;\r\n return;\r\n }\r\n props.onLayoutChange(changedLayouts);\r\n\r\n }\r\n\r\n function onResizeStop(event: any, oldItem: any) {\r\n widgetCardRef?.current?.find(x => x.i == oldItem.i)?.ref.onResizeFinish(widgetsDictionaryRef.current[oldItem.i].key);\r\n }\r\n\r\n function UpdateWidget(changedLayouts: Layouts) {\r\n for (const item of changedLayouts.lg) {\r\n if (widgetsDictionaryRef.current[item.i]) {\r\n widgetsDictionaryRef.current[item.i].Layout = item;\r\n }\r\n }\r\n }\r\n\r\n const confirmDeleteWidget = (id: string) => {\r\n let deleteWidgetProps: DeleteWidgetProps = {\r\n id: id, \r\n layouts: layouts, \r\n widgets: widgets\r\n }\r\n props.onWidgetDelete(deleteWidgetProps)\r\n }\r\n\r\n function deletePanel(deleteProps: DeleteWidgetProps) {\r\n var newLayouts = { lg: deleteProps.layouts.lg.filter(e => e.i != deleteProps.id) }\r\n setLayouts(newLayouts);\r\n var newWidgets = { lg: deleteProps.widgets.lg.filter(e => e.key != deleteProps.id) }\r\n FillWidgetDictionary(newWidgets);\r\n setWidgets(newWidgets);\r\n props.onLayoutChange(newLayouts)\r\n };\r\n\r\n function editWidget(widget: ReactWidgetPM) {\r\n widget.ChangeSetOp = 'Update';\r\n props.openEditWidget(widget);\r\n };\r\n\r\n function copyWidget(key: string) {\r\n if(props && props.onCopyWidget){\r\n props.onCopyWidget(key);\r\n }\r\n };\r\n \r\n\r\n function UpdatePlaceholderDimensions(layouts: Layouts) {\r\n if (!layouts)\r\n return;\r\n var max = minimumPlaceholderRowsCount;\r\n for (const layout of layouts['lg']) {\r\n if (layout.y + layout.h > max)\r\n max = layout.y + layout.h;\r\n }\r\n\r\n var newPlaceholderRows = max + 2;\r\n newPlaceholderRows = newPlaceholderRows < minimumPlaceholderRowsCount ? minimumPlaceholderRowsCount : newPlaceholderRows;\r\n setplaceholderRowsArray(Array.from({ length: newPlaceholderRows }).fill(null));\r\n }\r\n\r\n const { ref } = useResizeObserver<HTMLDivElement>({\r\n onResize: ({ }) => {\r\n window.dispatchEvent(new Event('resize'));\r\n },\r\n });\r\n\r\n return (<div ref={ref} className=\"dl-full-hight-scroll\">\r\n <div className=\"dl-box\">\r\n <div className=\"dl-row dl-content\">\r\n <div className=\"dl-grid-container\">\r\n <div className=\"dl-grid dl-grid--bordered\">\r\n {isInEditMode ? placeholderRowsArray.map((e, i) =>\r\n array12.map((e, i) => (\r\n <div key={i}\r\n style={{\r\n height: layoutGridProps.rowHeight,\r\n }}\r\n ></div>\r\n ))\r\n\r\n ) : null}\r\n </div>\r\n\r\n\r\n <ResponsiveReactGridLayout ref={gridLayoutComponent}\r\n {...layoutGridProps}\r\n layouts={layouts}\r\n compactType=\"vertical\"\r\n draggableCancel=\".widget-options-container\"\r\n isDraggable={isInEditMode}\r\n isResizable={isInEditMode}\r\n onWidthChange={() => { }}\r\n onResizeStop={onResizeStop}\r\n onLayoutChange={onLayoutChange}>\r\n\r\n {widgets.lg.map((widget, i) =>\r\n\r\n <div key={widget.Layout?.i}>\r\n <WidgetCard\r\n isInEditMode={isInEditMode}\r\n key={widget.Layout?.i}\r\n widget={widget}\r\n widgetRef={widgetsDictionaryRef.current[widget.key]}\r\n el={widget}\r\n dataBinding={props.dataBinding}\r\n dateFilter={dateFilter}\r\n editBtnClicked={editWidget}\r\n deleteBtnClicked={confirmDeleteWidget}\r\n onSelectDataPoint={props.onSelectDataPoint}\r\n copyBtnClicked={copyWidget}\r\n ref={el => {\r\n widgetCardRef.current[i] = {\r\n ref: el,\r\n i: widget.Layout?.i\r\n }\r\n }}\r\n />\r\n </div>\r\n )}\r\n </ResponsiveReactGridLayout>\r\n </div>\r\n\r\n </div>\r\n </div>\r\n </div>);\r\n\r\n}\r\n\r\nexport const layoutGridProps = {\r\n rowHeight: 50,\r\n className: \"layout\",\r\n cols: { lg: 12, md: 6, sm: 2, xs: 1, xxs: 1 },\r\n useCSSTransforms: true,\r\n}\r\n\r\nexport default DashboardDesigner;\r\n","import * as React from 'react'\r\nimport DashboardDesigner, { DeleteWidgetProps } from './features/Dashboard/DashboardDesigner'\r\nimport \"./styles.module.css\"\r\nimport { useEffect, useRef, useState } from \"react\";\r\nimport { Session } from './services/session';\r\nimport { ReactWidgetPM } from './types/widget';\r\nimport { DashboardDataBinding } from './types/DashboardDataBinding';\r\nimport { Layout, Layouts } from 'react-grid-layout';\r\nimport { deepClone } from './services/clone';\r\nimport { DataPointSelection } from './types/SeriesMeasure';\r\nimport WidgetCard from './features/Dashboard/WidgetCard';\r\n\r\ntype DashboardProps = {\r\n token: string,\r\n tenant: number,\r\n userId: string,\r\n isPreviewMode: boolean,\r\n widgetData: ReactWidgetPM | undefined,\r\n dataBinding: DashboardDataBinding,\r\n onChangeLayouts: (layouts: { lg: ReactWidgetPM[] }) => void,\r\n openEditWidget: (Widget: ReactWidgetPM) => void,\r\n onCopyWidget?:(key: string) => void,\r\n openDeleteWidgetConfirmWindow: (deleteProps: DeleteWidgetProps) => void,\r\n onSelectDataPoint: (dataPointSelection: DataPointSelection) => void;\r\n};\r\nconst Dashboard = (props: DashboardProps) => {\r\n const Widgetlayouts = useRef<{ lg: ReactWidgetPM[] }>({ lg: [] });\r\n const [widgetlayoutsState, setWidgetlayoutsState] = useState<{ lg: ReactWidgetPM[] }>({ lg: [] });\r\n const [isInEditMode, setIsInEditMode] = useState<boolean>(false);\r\n const [isPreviewModeActive, setIsPreviewModeActive] = useState<boolean>(props.isPreviewMode !== undefined ? props.isPreviewMode : false);\r\n const [previewWidget, setPreviewWidget] = useState<ReactWidgetPM | undefined>(props.widgetData);\r\n\r\n useEffect(() => {\r\n Session.CurrentUserId = props.userId;\r\n Session.Tenant = props.tenant;\r\n Session.Token = props?.token;\r\n setIsPreviewModeActive(props.isPreviewMode);\r\n\r\n props.dataBinding.onGetLayouts.subscribe(layouts => {\r\n Widgetlayouts.current = layouts;\r\n setWidgetlayoutsState(deepClone(Widgetlayouts.current));\r\n });\r\n props.dataBinding.isOnEditLayout.subscribe(e => {\r\n setIsInEditMode(e);\r\n });\r\n props.dataBinding.onAddWidget.subscribe(w => {\r\n Widgetlayouts.current.lg.push(w);\r\n setWidgetlayoutsState(deepClone(Widgetlayouts.current));\r\n });\r\n }, [])\r\n\r\n useEffect(() => {\r\n if (props.widgetData) {\r\n setPreviewWidget(JSON.parse(JSON.stringify(props.widgetData)))\r\n }\r\n }, [props.widgetData])\r\n\r\n const copyWidget = (key: string) => {\r\n if(props && props.onCopyWidget){\r\n props.onCopyWidget(key);\r\n }\r\n }\r\n\r\n const updateWidgets = (layouts: Layouts) => {\r\n var layoutsDic: { [key: string]: Layout } = {};\r\n Object.keys(layouts).forEach(sizeType => {\r\n if (layouts[sizeType].length > 0) {\r\n layouts[sizeType].map(layout => {\r\n layoutsDic[layout.i] = layout;\r\n })\r\n return;\r\n }\r\n })\r\n var newWidgetlayouts: ReactWidgetPM[] = [];\r\n Widgetlayouts.current.lg.forEach(widget => {\r\n if (layoutsDic[widget.key]) {\r\n widget.StartPotistion = `${layoutsDic[widget.key].x},${layoutsDic[widget.key].y}`;\r\n widget.EndPosition = `${layoutsDic[widget.key].w},${layoutsDic[widget.key].h}`;\r\n widget.Layout = layoutsDic[widget.key];\r\n newWidgetlayouts.push(widget);\r\n }\r\n\r\n });\r\n Widgetlayouts.current = { lg: newWidgetlayouts };\r\n props.onChangeLayouts(Widgetlayouts.current);\r\n }\r\n\r\n return isPreviewModeActive && previewWidget ? \r\n <div style={{width: \"420px\", height: \"310px\"}}>\r\n <div style={{height: \"100%\"}} key={\"widget-\" + previewWidget?.Layout?.i}>\r\n <WidgetCard\r\n isInEditMode={isInEditMode}\r\n isPreviewModeActive={isPreviewModeActive}\r\n key={previewWidget?.Layout?.i}\r\n widget={previewWidget}\r\n widgetRef={previewWidget}\r\n el={previewWidget}\r\n dataBinding={props.dataBinding}\r\n dateFilter={undefined}\r\n editBtnClicked={() => true}\r\n deleteBtnClicked={() => true}\r\n onSelectDataPoint={() => true}\r\n />\r\n </div>\r\n </div> :\r\n <div className='dl-full-hight'>\r\n <div className='dl-dashboard-body'>\r\n <DashboardDesigner \r\n onSelectDataPoint={props.onSelectDataPoint} \r\n Widgetlayouts={widgetlayoutsState} \r\n dataBinding={props.dataBinding} \r\n editMode={isInEditMode} \r\n onLayoutChange={updateWidgets} \r\n onWidgetDelete={(deleteProps: DeleteWidgetProps) => props.openDeleteWidgetConfirmWindow(deleteProps)}\r\n onCopyWidget={copyWidget}\r\n openEditWidget={(widget: ReactWidgetPM) => props.openEditWidget(widget)} ></DashboardDesigner>\r\n </div>\r\n </div >\r\n \r\n}\r\nexport default Dashboard;\r\n\r\n"],"names":["Session","Tools","GetLogitudeURL","logitude_url","location","href","replace","indexOf","urlArr","split","url","substring","lastIndexOf","length","Map","from","to","keys","Object","k","ApiServices","_apiUrl","getByFilters","api","filters","token","getTokenFromStorage","apiURL","ConcatFiltersToURL","axios","get","headers","post","date","requestSignal","undefined","signal","Token","urlparameters","mykeys","addtionalFiltersValues","i","propName","propValue","ignoreFilter","concat","encodeURIComponent","JSON","stringify","DashboardAnalyticsService","_ApiServices","getData","widget","controller","getKpiData","getTableData","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","isNullOrUndefined","val","isNullOrUndefinedOrEmpty","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","Tenant","emptyData","Value","dashboardAnalyticsService","postWidget","onChange","EntityId","RelatedToEntityId","then","console","log","response","ErrorMessage","message","kpiClick","measureFieldId","currentWidgetMeasure","WidgetMeasures","MeasureFieldId","onSelectDataPoint","Widget","MeasureCode","Formula","GroupById","isComparisonIndicatorChecked","_kpiSettings","KPIComparisonSettings","_kpiSettingsAsObj","parse","ComparisonIndicator","getRatioComponent","CompareWithPrevious","React","className","getArrowComponent","Ratio","ComparisonValue","style","marginTop","Increase","getPreviousValueComponent","ComparisonLabel","labelFormatByDateGroupType","labelFormated","prevtext","ComparisonAbbreviationSymbol","getValueData","getValueComponent","AbbreviationSymbol","ShowMeasureUnit","Unit","getLabel","Label","getIsKPIHasSmallestHeight","widgetRef","Layout","h","isThereTitle","Title","isThereSubTitle","Subtitle","isKPIHasSmallestHeight","ProgressSpinner","width","height","strokeWidth","animationDuration","onClick","Alighnment","RedWarningIcon","TableChart","setWidget","tableData","setTableData","tableColumns","setTableColumns","PageIndex","PageSize","res","fillTableData","getBooleanStringValue","value","_value","charAt","toUpperCase","slice","getDateTimeValue","tableRecords","Fields","Result","forEach","item","_tableRow","field","FieldCode","valueType","DataTypeCode","push","DataTable","responsiveLayout","map","column","index","Column","header","DisplayName","CustomChart","project","TypeCode","Fragment","buildToolTip","seriesName","padding","getTooltiplabel","getMeasureType","getTooltipValue","getTooltipPercentage","seriesMeasure","Name","formula","months","quarters","getCategoriesBasedDataSource","chartInfo","seriesMeasures","seriesMeasuresIsEmpty","handelNullLabels","chart","categories","buildCategories","dataset","buildDataSet","getStackedDataSource","buildStackedCategories","buildStackedDataSet","getSimpleDataSource","buildDataSource","element","Values","hasValue","values","series","e","id","tooltext","dataSet","datas","seriesname","anchorBgColor","anchorBorderColor","anchorBorderThickness","anchorHoverColor","parentyaxis","PlotasLineChart","PlotonSecondAxis","renderAs","uniqueGroups","find","x","code","GroupByIdSec","LabelSec","group","buildStackedGroupData","emptylabels","filter","sortDataSet","sort","s1","s2","aa","bb","secGroup","getUniqueGroupOrderdList","category","defautFontSize","defautFont","defautColor","BuildFusionChartObject","SecondaryGroupById","getBarObject","getStackedBarObject","getLineObject","getClusteredLineObject","getPieObject","getDonutObject","getColumnObject","getClusteredColumnObject","getDefaultChartobject","type","isGroupByFieldDateTime","GroupByFieldDataType","getDefaultChartInfo","scrollPosition","scrollPadding","flatScrollBars","showPercentValues","ShowValueAsNumber","showLegend","ShowLegend","setLineDash","chartTopMargin","chartBottomMargin","legendPosition","getWidgetLegendPosition","dataSource","IsStacked","chartLeftMargin","chartRightMargin","anchorradius","canvasBottomPadding","canvasTopPadding","labelFontSize","labelFont","manageLabelOverflow","useEllipsesWhenOverflow","enableSmartLabels","setPieDonutLegends","setDualyAxis","divLineDashed","divLineDashLen","divLineDashGap","divLineColor","divLineAlpha","divLineThickness","dataFormat","theme","baseFont","baseFontSize","baseFontColor","legendCaptionFontSize","legendCaptionFontColor","legendCaptionFont","labelFontColor","legendItemFont","legendItemFontSize","sYAxisNameFont","sYAxisNameFontSize","sYAxisNameFontColor","pYAxisNameFont","pYAxisNameFontSize","pYAxisNameFontColor","xAxisNameFont","xAxisNameFontSize","xAxisNameFontColor","yAxisNameFont","yAxisNameFontSize","yAxisNameFontColor","drawCrossLine","xAxisName","ShowXAxisTitle","XAxisTitle","yAxisName","ShowYAxisTitle","YAxisTitle","labelDisplay","XAxisLabelsDisplay","slantLabel","XAxisLabelsFontSize","showValues","ShowValue","valuePosition","ValuePosition","isValuePositionInside","toLowerCase","isColumnOrBarChart","placeValuesInside","minPlotHeightForValue","isPieOrDonutChart","minAngleForValue","palettecolors","enableSlicing","enableRotation","toolTipBgColor","showToolTipShadow","plotHoverEffect","scrollHeight","scrollWidth","plotColorinTooltip","showLabels","LabelsPosition","setOnChartLegend","setChartInLegend","LegendPosition","legendScrollBgColor","legendIconScale","scrollShowButtons","legendCaptionAlignment","alignLegendWithCanvas","pieRadius","showSecondaryLimits","showDivLineSecondaryValue","pYAxisNameBorderPadding","sYAxisNameBorderPadding","textLength","Math","max","pYAxisName","getTitle","sYAxisname","text","maxLenght","textLenght","neededSpaces","ceil","space","repeat","FusionChartHelper","getPieRadius","getLegendWidth","legendWidth","trimChartLabels","chartWidth","chartHeight","handleLegendWidth","handlePieRadius","chartMinumunHeight","startPercantage","stepHeight","step","floor","window","innerWidth","reducedValue","plotColorsDictionary","plotColor0","plotColor1","plotColor2","plotColor3","plotColor4","plotColor5","plotColor6","plotColor7","plotColor8","plotColor9","plotColor10","plotColor11","plotColor12","plotColor13","getPlotColorByIndexOrder","_index","ReactFC","fcRoot","FusionCharts","Charts","FusionTheme","options","creditLabel","FusionChart","forwardRef","comRef","dataLoaded","setDataLoaded","fusionKey","chartData","resizeTimer","setResizeTimer","axiosController","AbortController","args","setArgs","fChart","setFchart","chartContainerId","progressRef","fusionRef","fusionChartHelper","isDummyChangesActive","_data","handleData","addEventListener","handleResize","removeEventListener","abort","clearTimeout","setTimeout","HandleSizeChange","useImperativeHandle","onResizeFinish","oldPieRadius","oldLegendWidth","offsetWidth","offsetHeight","updatedAxiosController","isDummyChange","dataplotClick","eventObj","dataObj","groupbyid","measurefieldid","measurecode","groupbyidsec","useResizeObserver","onResize","resizeTo","ref","renderComplete","handlePieDonutChartTooltip","color","replaceAll","handleOtherChartsTooltip","el","loaded","event","sender","onRender","WidgetCard","fusionChartRef","editWidget","editBtnClicked","copyWidget","copyBtnClicked","onEditWidget","getCSSPropertyValue","widgetData","propUnit","propDefaultVal","GetChartComponent","cursor","isInEditMode","justifyContent","Popup","trigger","fontSize","textAlign","position","arrowStyle","offsetY","on","EditWidgetIcon","CopyWidgetIcon","DeleteWidgetIcon","deleteBtnClicked","deepClone","obj","ResponsiveReactGridLayout","WidthProvider","Responsive","DashboardDesigner","array12","Array","fill","minimumPlaceholderRowsCount","lg","layouts","setLayouts","placeholderRowsArray","setplaceholderRowsArray","dateFilter","setisInEditMode","widgetsDictionaryRef","widgets","setWidgets","gridLayoutComponent","entered","widgetCardRef","FillLayout","Widgetlayouts","onDeleteWidgetConfirmed","deleteProps","deletePanel","dashboardLayouts","clone","layout","createLayout","FillWidgetDictionary","UpdatePlaceholderDimensions","w","editMode","onLayoutChange","changedLayouts","UpdateWidget","onResizeStop","oldItem","confirmDeleteWidget","deleteWidgetProps","onWidgetDelete","newLayouts","newWidgets","ChangeSetOp","openEditWidget","onCopyWidget","y","newPlaceholderRows","dispatchEvent","Event","layoutGridProps","rowHeight","compactType","draggableCancel","isDraggable","isResizable","onWidthChange","cols","md","sm","xs","xxs","useCSSTransforms","Dashboard","widgetlayoutsState","setWidgetlayoutsState","setIsInEditMode","isPreviewMode","setIsPreviewModeActive","previewWidget","setPreviewWidget","CurrentUserId","userId","tenant","onGetLayouts","isOnEditLayout","onAddWidget","updateWidgets","layoutsDic","sizeType","newWidgetlayouts","StartPotistion","EndPosition","onChangeLayouts","openDeleteWidgetConfirmWindow"],"mappings":"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"}