Файловый менеджер - Редактировать - /home/bean7936/deribos.com/wp-content3e392d/plugins/graphina-elementor-charts-and-graphs/dist/GraphinaApexChartBase.js.map
Назад
{"version":3,"file":"GraphinaApexChartBase.js","sources":["../assets/elementor/js/apex-chart/GraphinaApexChartBase.js"],"sourcesContent":["// Parent class to manage shared functionalities for Graphina charts\nexport default class GraphinaApexChartBase {\n constructor() {\n \n this.chartHandlers = {};\n this.init();\n this.mainChart = {}\n this.chartIntervals = {};\n }\n\n // Initialize the class by setting up handlers and events\n init() {\n this.setUpChartsHandler();\n this.bindEventHandlers();\n this.bindElementorInit(); // Bind Elementor hooks separately\n }\n\n \n // Bind event listeners\n bindEventHandlers() {\n jQuery(document.body).on('change', '.graphina-select-apex-chart-type', this.debounce(this.handleChartTypeChange.bind(this), 300)); \n jQuery(document.body).off('click','.graphina-filter-div-button.apex')\n jQuery(document.body).on('click','.graphina-filter-div-button.apex', this.debounce(this.handleChartFilter.bind(this), 300));\n jQuery(document.body).off('click','.graphina-filter-div-button.common')\n }\n\n bindElementorInit() {\n // Flag to track if our handler has been registered\n let elementorHookCalled = false;\n \n const runOnElementorReady = () => {\n if (elementorHookCalled) return;\n \n // Wait for Elementor modules to be ready\n if (window.elementorFrontend && window.elementorFrontend.elementsHandler) {\n elementorHookCalled = true;\n \n // Register the widget handler\n window.elementorFrontend.hooks.addAction('frontend/element_ready/widget', ($scope) => {\n const chartElement = $scope.find('.graphina-elementor-chart');\n if (chartElement.length > 0) {\n this.initializeCharts(chartElement);\n }\n });\n }\n };\n\n // Case 1: Check if Elementor is already initialized\n if (window.elementorFrontend && window.elementorFrontend.elementsHandler) {\n runOnElementorReady();\n }\n\n // Case 2: Wait for Elementor to initialize\n jQuery(window).on('elementor/frontend/init', () => {\n // Add a small delay to ensure modules are loaded\n setTimeout(runOnElementorReady, 50);\n });\n\n // Case 3: Fallback for non-Elementor pages\n jQuery(document).ready(() => {\n if (!elementorHookCalled) {\n const chartElements = jQuery('.graphina-elementor-chart');\n if (chartElements.length > 0) {\n chartElements.each((index, element) => {\n this.initializeCharts(jQuery(element));\n });\n }\n }\n });\n }\n \n\n debounce(func, wait) {\n let timeout;\n \n return function(...args) {\n const context = this;\n clearTimeout(timeout);\n timeout = setTimeout(() => func.apply(context, args), wait);\n };\n }\n\n\n\n // Setup IntersectionObserver to call setupChart when the element is in the viewport\n observeChartElement(element, chartType) {\n const elementId = element.data('element_id')\n if (gcfe_public_localize.view_port === 'off') {\n if (!this.observer[elementId]) {\n this.observer[elementId] = new IntersectionObserver((entries) => {\n entries.forEach((entry) => {\n if (entry.isIntersecting) {\n // Element is in viewport; initialize the chart\n this.setupChart(jQuery(entry.target), chartType);\n // Stop observing the element after initializing the chart\n this.observer[elementId].unobserve(entry.target);\n // this.observer[elementID].unobserve(entry.target);\n this.observer[elementId].disconnect();\n delete this.observer[elementId];\n }\n });\n }, { threshold: 0.1 }); // Trigger when at least 10% of the element is visible\n }\n this.observer[elementId].observe(element[0]); // Start observing the chart element\n } else {\n this.setupChart(element, chartType);\n }\n }\n \n // Change Chart Type Handler\n handleChartTypeChange(event){\n const dropdown = jQuery(event.target);\n const newChartType = dropdown.val();\n const elementId = dropdown.data('element_id');\n const chartElement = jQuery(`.graphina-elementor-chart[data-element_id=\"${elementId}\"]`);\n\n if (chartElement.length > 0) {\n ApexCharts.exec(elementId, 'destroy');\n this.updateChartType(chartElement, newChartType);\n }\n }\n\n handleChartFilter(event){\n const currentElement = event.currentTarget\n const elementId = jQuery(currentElement).data('element_id');\n const chartElement = jQuery(`.graphina-elementor-chart[data-element_id=\"${elementId}\"]`);\n let chartType = jQuery(chartElement).data('chart_type');\n if(chartElement.length > 0){\n // Hide the no-data text right away before updating the chart\n jQuery(`.graphina-${elementId}-notext`).hide();\n // Destroy existing chart (if any)\n ApexCharts.exec(elementId, 'destroy');\n\n jQuery(document).find(`.graphina-${elementId}-loader`).show()\n this.updateChartType(chartElement, chartType,true);\n }\n }\n\n // Setup handlers for various chart types (to be implemented by child classes)\n setUpChartsHandler() {\n throw new Error('setUpChartsHandler method must be implemented by subclasses');\n }\n\n // Initialize charts for a given element\n initializeCharts(chartElement) {\n const chartType = chartElement.data('chart_type');\n if (this.chartHandlers[chartType]) {\n this.chartHandlers[chartType](chartElement);\n }\n }\n\n // Format large numbers with suffixes\n formatNumber(value, decimal) {\n const suffixes = [\"\", \"K\", \"M\", \"B\", \"T\"];\n let index = 0;\n while (value >= 1000 && index < suffixes.length - 1) {\n value /= 1000;\n index++;\n }\n return new Intl.NumberFormat(window.gcfe_public_localize.locale_with_hyphen, {\n minimumFractionDigits: decimal,\n maximumFractionDigits: decimal,\n }).format(value) + suffixes[index];\n }\n\n // Apply legend tooltip formatting\n applyLegendTooltip(chartOptions, extraData,chart_type) {\n if (extraData.legend_show_series_value) {\n chartOptions.legend.tooltipHoverFormatter = (seriesName, opts) => {\n let value = opts.w.globals.series[opts.seriesIndex][opts.dataPointIndex];\n seriesName = decodeURIComponent(seriesName);\n \n if(['polar','scatter','pie','donut','radial'].includes(chart_type)){\n value = opts.w.globals.series[opts.seriesIndex];\n }\n return `<div class=\"legend-info\"><span>${seriesName}</span>:<strong>${value}</strong></div>`;\n };\n }\n }\n\n // Apply X-axis label formatting\n applyXAxisFormatter(chartOptions, extraData) {\n if (extraData.xaxis_label_prefix_show) {\n chartOptions.xaxis.labels.formatter = (val) =>\n `${extraData.xaxis_label_prefix}${val}${extraData.xaxis_label_postfix}`;\n }\n }\n\n // Apply Y-axis label formatting\n\n applyYAxisFormatter(chartOptions, extraData, axisIndex = false, chart_type) {\n \n const formatAxisLabels = (val, prefix, postfix, decimal) => {\n if (extraData.chart_yaxis_label_pointer) {\n return prefix + this.formatNumber(val, decimal) + postfix;\n } else if (typeof decimal === 'number' && decimal >= 0) {\n return prefix + new Intl.NumberFormat(window.gcfe_public_localize.locale_with_hyphen, {\n minimumFractionDigits: decimal,\n maximumFractionDigits: decimal,\n }).format(val) + postfix;\n }\n return prefix + val + postfix;\n };\n\n const updateYAxisLabels = (yaxis, prefix, postfix, decimal) => {\n if (!yaxis.labels) {\n yaxis.labels = {};\n }\n yaxis.labels.formatter = (val) => formatAxisLabels(val, prefix, postfix, decimal);\n };\n\n // Default to single y-axis\n if (axisIndex === false) {\n const prefix = extraData.yaxis_label_prefix || '';\n const postfix = extraData.yaxis_label_postfix || '';\n let decimal = 0;\n if (extraData.chart_yaxis_label_pointer) {\n decimal = typeof extraData.chart_yaxis_label_pointer_number === 'number' ? extraData.chart_yaxis_label_pointer_number : 0;\n } else {\n decimal = typeof extraData.decimal_in_float === 'number' ? extraData.decimal_in_float : 0;\n }\n updateYAxisLabels(chartOptions.yaxis, prefix, postfix, decimal);\n }\n // Multiple y-axes: axisIndex 0 or 1\n else if (axisIndex === 0 || axisIndex === 1) {\n const yaxis = chartOptions.yaxis[axisIndex];\n const prefix = axisIndex === 0\n ? (extraData.yaxis_label_prefix || '')\n : (extraData.chart_opposite_yaxis_label_prefix || '');\n\n const postfix = axisIndex === 0\n ? (extraData.yaxis_label_postfix || '')\n : (extraData.chart_opposite_yaxis_label_postfix || '');\n\n let decimal = 0;\n if (axisIndex === 0) {\n if (extraData.chart_yaxis_label_pointer) {\n decimal = typeof extraData.chart_yaxis_label_pointer_number === 'number' ? extraData.chart_yaxis_label_pointer_number : 0;\n } else {\n decimal = typeof extraData.decimal_in_float === 'number' ? extraData.decimal_in_float : 0;\n }\n } else if (axisIndex === 1 && extraData.chart_opposite_yaxis_format_number === true) {\n if (extraData.chart_yaxis_label_pointer) {\n decimal = typeof extraData.chart_yaxis_label_pointer_number === 'number' ? extraData.chart_yaxis_label_pointer_number : 0;\n } else {\n decimal = typeof extraData.decimal_in_float === 'number' ? extraData.decimal_in_float : 0;\n }\n }\n updateYAxisLabels(yaxis, prefix, postfix, decimal);\n }\n }\n\n applyDataLabelFormatter(chartOptions, extraData, chart_type) {\n let datalabelPreFix = extraData.chart_datalabel_prefix ?? '';\n let datalabelPostFix = extraData.chart_datalabel_postfix ?? '';\n\n if (!chartOptions.dataLabels) {\n chartOptions.dataLabels = {};\n }\n\n // Arrow function to retain `this`\n chartOptions.dataLabels.formatter = (val) => {\n if (extraData.chart_number_format_commas) {\n val = new Intl.NumberFormat(window.gcfe_public_localize.locale_with_hyphen, {\n minimumFractionDigits: extraData.chart_datalabel_decimals_in_float ?? 0,\n maximumFractionDigits: extraData.chart_datalabel_decimals_in_float ?? 0,\n }).format(val);\n } else if (extraData.string_format) {\n const pointerDecimal = extraData.chart_label_pointer_number_for_label ?? 0;\n val = this.formatNumber(val, pointerDecimal); // uses `this` correctly\n }\n return datalabelPreFix + val + datalabelPostFix;\n };\n }\n\n\n applyTooltipFormatter(chartOptions, extraData, chartType) {\n const datalabelPreFix = extraData.chart_datalabel_prefix ?? '';\n const datalabelPostFix = extraData.chart_datalabel_postfix ?? '';\n const decimal = extraData.chart_datalabel_decimals_in_float ?? 0;\n\n if (!chartOptions.tooltip) {\n chartOptions.tooltip = {};\n }\n\n chartOptions.tooltip.y = {\n formatter: function (val) {\n let value = val;\n if (extraData.chart_number_format_commas) {\n value = new Intl.NumberFormat(window.gcfe_public_localize.locale_with_hyphen, {\n minimumFractionDigits: decimal,\n maximumFractionDigits: decimal,\n }).format(val);\n }\n return datalabelPreFix + value + datalabelPostFix;\n }\n };\n }\n\n\n async updateChartType(chartElement, newChartType, filter = false) {\n const elementId = chartElement.data('element_id');\n const chartOptions = chartElement.data('chart_options');\n const extraData = chartElement.data('extra_data');\n const settings = chartElement.data('settings');\n if (!chartOptions || !elementId || !newChartType) {\n console.error('Missing required chart options or element ID.');\n return;\n }\n\n // remove tooltip.shared if selected is column chart.\n if (newChartType === 'bar' && chartOptions.chart.type !== 'bar') {\n chartOptions.tooltip.shared = false\n }\n\n // Update the chart type in the options\n chartOptions.chart.type = newChartType;\n \n if(filter){\n // Filter Value\n let filterValue = []\n const totalFilter = jQuery(`#graphina_chart_filter_${elementId}`).data('total_filter');\n for (let index = 0; index < totalFilter; index++) {\n filterValue[index] = jQuery(`#graphina-start-date_${index}${elementId}`).val() ?? jQuery(`#graphina-drop_down_filter_${index}${elementId}`).val()\n }\n const dynamicData = await this.getDynamicData(settings, extraData, newChartType, elementId,filterValue);\n \n if (dynamicData.extra !== undefined) {\n const seriesData = dynamicData.extra.series || [];\n const categories = dynamicData.extra.category || [];\n if ( seriesData.length <= 0 ){\n chartOptions.noData.text = extraData.no_data_text\n } \n chartOptions.series = seriesData;\n\n // Handle chart types that use `labels` instead of `xaxis.categories`\n if (['polar', 'radialBar', 'radial','pie','donut'].includes(newChartType)) {\n chartOptions.labels = categories;\n } else {\n chartOptions.xaxis.categories = categories;\n }\n\n } else { \n chartOptions.series = [];\n chartOptions.xaxis.categories = [];\n }\n\n }\n if (newChartType === 'column'||newChartType === 'distributed_column') {\n chartOptions.chart.type = 'bar'\n } else if (chartOptions.chart.type == 'polar') {\n chartOptions.chart.type = 'polarArea'\n }\n else if (chartOptions.chart.type == 'radial') {\n chartOptions.chart.type = 'radialBar'\n }\n // Create and render the new chart\n const chart = new ApexCharts(chartElement[0], chartOptions);\n jQuery(chartElement).show()\n chart.render()\n .then(() => console.log(`Chart updated to ${newChartType}.`))\n .catch((error) => console.error('Error updating chart:', error));\n jQuery(document).find(`.graphina-${elementId}-loader`).hide()\n\n }\n\n setFieldForForminator(response, chartType, extraData) {\n const isAggregate = extraData.section_chart_forminator_aggregate;\n const manualChartList = ['mixed', 'brush', 'gantt_google'];\n const options = manualChartList.includes(chartType) \n ? response.forminator_columns \n : response.extra.forminator_columns;\n \n if (isAggregate) {\n this.populateDropdownField(\n `[data-setting=\"${extraData.graphina_prefix}${chartType}_section_chart_forminator_aggregate_column\"]`,\n options,\n extraData.section_chart_forminator_aggregate_column\n );\n } else {\n this.populateDropdownField(\n `[data-setting=\"${extraData.graphina_prefix}${chartType}_section_chart_forminator_x_axis_columns\"]`,\n options,\n extraData.section_chart_forminator_x_axis_columns\n );\n this.populateDropdownField(\n `[data-setting=\"${extraData.graphina_prefix}${chartType}_section_chart_forminator_y_axis_columns\"]`,\n options,\n extraData.section_chart_forminator_y_axis_columns\n );\n }\n }\n \n setFieldsForCSV(settings, response, chartType, extraData) {\n const isSQLBuilder = extraData.chart_dynamic_data_option === 'sql-builder';\n const options = isSQLBuilder ? response.extra.db_column : response.extra.column;\n \n this.populateDropdownField(\n `[data-setting=\"${extraData.graphina_prefix}${chartType}_${isSQLBuilder ? 'chart_sql_builder_x_columns' : 'chart_csv_x_columns'}\"]`,\n options,\n isSQLBuilder ? extraData.chart_csv_x_columns_sql : extraData.chart_csv_x_columns\n );\n \n this.populateDropdownField(\n `[data-setting=\"${extraData.graphina_prefix}${chartType}_${isSQLBuilder ? 'chart_sql_builder_y_columns' : 'chart_csv_y_columns'}\"]`,\n options,\n isSQLBuilder ? extraData.chart_csv_y_columns_sql : extraData.chart_csv_y_columns\n );\n }\n \n // Helper function to populate dropdown fields\n populateDropdownField(selector, options, selectedValues) {\n const element = parent.document.querySelector(selector);\n if (!element) return;\n \n element.innerHTML = ''; // Clear existing options\n \n try {\n options.forEach(option => {\n const isSelected = Array.isArray(selectedValues) \n ? selectedValues.includes(option) \n : selectedValues === option;\n element.append(new Option(option, option, isSelected, isSelected));\n });\n } catch (error) {\n console.log(error);\n }\n }\n \n setFieldsForCounter(settings,response, chartType,extraData){\n return true\n }\n\n getDynamicData(settings, extraData, chartType, elementId,filterValue) {\n\n let action = 'graphina_get_dynamic_data'\n let req_nonce = gcfe_public_localize.nonce\n if(chartType === 'counter'){\n action = 'get_jquery_datatable_data'\n req_nonce = gcfe_public_localize.table_nonce\n }\n let post_id = jQuery(`[data-element_id=\"${elementId}\"]`).closest('[data-elementor-id]').data('elementor-id');\n return new Promise((resolve, reject) => {\n jQuery.ajax({\n url: gcfe_public_localize.ajaxurl,\n type: 'POST',\n dataType: 'json',\n data: {\n action : action,\n nonce : req_nonce,\n chartType : chartType,\n post_id : post_id,\n element_id : elementId,\n series_count: extraData.chart_data_series_count_dynamic,\n settings : JSON.stringify(settings),\n selected_field: filterValue\n },\n success: (response) => {\n if (response.status) {\n if (jQuery('body').hasClass(\"elementor-editor-active\")) {\n if(chartType === 'counter'){\n this.setFieldsForCounter(settings,response, chartType,extraData);\n }\n if((extraData.chart_csv_column_wise_enable || extraData.chart_dynamic_data_option === 'sql-builder') && (extraData.chart_dynamic_data_option === 'csv' || extraData.chart_dynamic_data_option === 'remote-csv' || extraData.chart_dynamic_data_option === 'google-sheet' || extraData.chart_dynamic_data_option === 'sql-builder')){\n this.setFieldsForCSV(settings,response, chartType,extraData);\n }\n if(extraData.dynamic_type === 'forminator'){\n this.setFieldForForminator(response,chartType,extraData);\n }\n };\n }\n resolve(response);\n },\n error: (error) => {\n console.error('AJAX Error:', error);\n reject(new Error('AJAX request failed.'));\n },\n });\n });\n }\n \n getChartOptions(finalChartOptions,chartType,extraData,elementId){\n return finalChartOptions;\n }\n\n afterRenderChart(chart,elementId,extraData){\n return chart\n }\n\n processDynamicData(dynamicData,elementId,extraData){\n return true;\n }\n\n afterManualLoad(dynamicData,elementId,extraData){\n return true\n }\n afterDynamicLoad(dynamicData,elementId,extraData){\n return true\n }\n \n sanitizeChartOptions(options) {\n const sanitize = (obj) => {\n if (typeof obj === 'string') {\n return obj.replace(/<[^>]*>/g, '').replace(/javascript:/gi, '');\n } else if (Array.isArray(obj)) {\n return obj.map(sanitize);\n } else if (typeof obj === 'object' && obj !== null) {\n const sanitized = {};\n for (const key in obj) sanitized[key] = sanitize(obj[key]);\n return sanitized;\n }\n return obj;\n };\n return sanitize(options);\n }\n\n \n // Generic setup for any chart type\n async setupChart(element, chartType) {\n try {\n const elementId = element.data('element_id');\n const chartOptions = this.sanitizeChartOptions(element.data('chart_options'));\n const extraData = this.sanitizeChartOptions(element.data('extra_data'));\n const settings = this.sanitizeChartOptions(element.data('settings'));\n const chart_type = element.data('chart_type')\n \n if('nested_column' === chart_type){\n chartType = chart_type\n }else if('brush' === chart_type){\n chartType = chart_type\n }else if('column' === chart_type){\n chartType = chart_type\n }\n if (!chartOptions || !elementId) {\n console.error(`Missing required data attributes for ${chartType} chart.`);\n return;\n }\n\n // Apply formatting to chart options\n this.applyLegendTooltip(chartOptions, extraData,chart_type);\n this.applyXAxisFormatter(chartOptions, extraData);\n this.applyDataLabelFormatter(chartOptions, extraData, chart_type);\n this.applyTooltipFormatter(chartOptions, extraData, chart_type);\n\n\n if (!extraData.chart_opposite_yaxis_title_enable) {\n this.applyYAxisFormatter(chartOptions, extraData, false, chart_type);\n } else {\n this.applyYAxisFormatter(chartOptions, extraData, 0, chart_type);\n this.applyYAxisFormatter(chartOptions, extraData, 1, chart_type);\n }\n\n // Finalize and render the chart\n const finalChartOptions = this.getChartOptions(chartOptions, chartType,extraData,elementId);\n if(this.mainChart[elementId]){\n this.mainChart[elementId].destroy()\n }\n \n const chart = new ApexCharts(jQuery(element)[0], finalChartOptions);\n try {\n jQuery(document).find(`.graphina-${elementId}-loader`).hide()\n await chart.render();\n } catch (error) {\n console.warn(error);\n }\n\n\n if(extraData.chart_data_option === true) {\n try {\n let filterValue = []\n const totalFilter = jQuery(`#graphina_chart_filter_${elementId}`).data('total_filter');\n for (let index = 0; index < totalFilter; index++) {\n filterValue[index] = jQuery(`#graphina-start-date_${index}${elementId}`).val() ?? jQuery(`#graphina-drop_down_filter_${index}${elementId}`).val()\n }\n const dynamicData = await this.getDynamicData(settings, extraData, chartType, elementId,filterValue);\n this.processDynamicData(dynamicData,elementId,extraData);\n if(dynamicData.extra !== undefined){\n if('nested_column' === chart_type){ \n chart.updateSeries(\n [{data:dynamicData.extra.series}],\n true\n );\n }else{\n // FIX: Properly update both series and xaxis categories\n const updateOptions = {\n series: dynamicData.extra.series,\n };\n\n // Handle different chart types for categories/labels\n if (['polar', 'radialBar', 'radial', 'pie', 'donut'].includes(chart_type)) {\n updateOptions.labels = dynamicData.extra.category;\n } else {\n updateOptions.xaxis = {\n ...chartOptions.xaxis,\n categories: dynamicData.extra.category\n };\n }\n\n chart.updateOptions(updateOptions, true);\n chart.updateSeries(dynamicData.extra.series, true);\n \n if(dynamicData.extra.series.length <= 0){\n chart.destroy()\n jQuery(element).hide()\n jQuery(`.graphina-${elementId}-notext`).show()\n }\n }\n }else{\n if(dynamicData.extra.series.length <= 0){\n chart.destroy()\n jQuery(element).hide()\n jQuery(`.graphina-${elementId}-notext`).show()\n }\n chart.updateOptions({\n series: [],\n categories: []\n });\n chart.updateSeries(\n [],\n true\n );\n }\n this.afterDynamicLoad(dynamicData,elementId,extraData);\n } catch (error) {\n console.error('Failed to get dynamic data:', error);\n }\n jQuery(document).find(`.graphina-${elementId}-loader`).hide()\n }else{\n this.afterManualLoad([],elementId,extraData);\n }\n\n this.mainChart[elementId] = chart\n this.afterRenderChart(chart,elementId,extraData)\n // Clear previous interval\n if (this.chartIntervals[elementId]) {\n clearInterval(this.chartIntervals[elementId]);\n }\n\n if (extraData.can_chart_reload_ajax && !jQuery('body').hasClass('elementor-editor-active')) {\n this.chartIntervals[elementId] = setInterval(async () => {\n try {\n const dynamicDataLoad = await this.getDynamicData(settings, extraData, chartType, elementId);\n const currentChart = this.mainChart[elementId];\n\n if (!currentChart || currentChart.destroyed) {\n clearInterval(this.chartIntervals[elementId]);\n delete this.chartIntervals[elementId];\n return;\n }\n\n if (dynamicDataLoad?.extra) {\n const updateOptions = {\n series: dynamicDataLoad.extra.series\n };\n\n if (['polar', 'radialBar', 'radial', 'pie', 'donut'].includes(chart_type)) {\n updateOptions.labels = dynamicDataLoad.extra.category || [];\n } else {\n updateOptions.xaxis = {\n categories: dynamicDataLoad.extra.category || []\n };\n }\n\n currentChart.updateOptions(updateOptions, true);\n }\n } catch (error) {\n console.warn(`Error in auto-refresh for chart ${elementId}:`, error);\n }\n }, extraData.interval_data_refresh * 1000);\n }\n\n } catch (error) {\n console.error(`Error initializing ${chartType} chart:`, error);\n }\n }\n \n}\n"],"names":["GraphinaApexChartBase","elementorHookCalled","runOnElementorReady","$scope","chartElement","chartElements","index","element","func","wait","timeout","args","context","chartType","elementId","entries","entry","event","dropdown","newChartType","currentElement","value","decimal","suffixes","chartOptions","extraData","chart_type","seriesName","opts","val","axisIndex","formatAxisLabels","prefix","postfix","updateYAxisLabels","yaxis","datalabelPreFix","datalabelPostFix","pointerDecimal","filter","settings","filterValue","totalFilter","dynamicData","seriesData","categories","chart","error","response","isAggregate","options","isSQLBuilder","selector","selectedValues","option","isSelected","action","req_nonce","post_id","resolve","reject","finalChartOptions","sanitize","obj","sanitized","key","updateOptions","dynamicDataLoad","currentChart"],"mappings":"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"}
| ver. 1.6 |
Github
|
.
| PHP 8.3.30 | Генерация страницы: 0 |
proxy
|
phpinfo
|
Настройка