Файловый менеджер - Редактировать - /home/bean7936/deribos.com/wp-content3e392d/plugins/graphina-elementor-charts-and-graphs/dist/GraphinaGoogleChartBase.js.map
Назад
{"version":3,"file":"GraphinaGoogleChartBase.js","sources":["../assets/elementor/js/google-chart/GraphinaGoogleChartBase.js"],"sourcesContent":["// Base class to manage shared functionalities for Google Charts\nexport default class GraphinaGoogleChartBase {\n constructor() {\n this.chartHandlers = {};\n this.isGoogleChartsLoaded = false;\n this.init();\n }\n\n // Initialize the class\n init() {\n this.setUpChartsHandler();\n this.bindEventHandlers();\n this.bindElementorInit(); // Bind Elementor hooks separately\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-google-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 \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-google-chart');\n if (chartElements.length > 0) {\n chartElements.each((index, element) => {\n this.initializeCharts(jQuery(element));\n });\n }\n }\n });\n }\n \n\n // Bind event listeners (e.g., Elementor events)\n bindEventHandlers() {\n jQuery(document.body).on('change','.graphina-select-google-chart-type',this.debounce(this.handleChartTypeChange.bind(this), 300));\n jQuery(document.body).off('click','.graphina-filter-div-button.google')\n jQuery(document.body).on('click', '.graphina-filter-div-button.google', this.handleChartFilter.bind(this));\n }\n\n debounce(func, wait) {\n let timeout;\n return function (...args) {\n const context = this;\n clearTimeout(timeout);\n timeout = setTimeout(() => func.apply(context, args), wait);\n };\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-google-chart[data-element_id=\"${elementId}\"]`);\n if (chartElement.length > 0) {\n this.updateChartType(chartElement, newChartType);\n }\n }\n\n updateChartType(chartElement, newChartType) {\n this.setupChart(chartElement, newChartType)\n }\n getGoogleChartTypeFromAlias(chartTypeAlias) {\n const typeMap = {\n 'area_google': 'AreaChart',\n 'bar_google': 'BarChart',\n 'column_google': 'ColumnChart',\n 'line_google': 'LineChart',\n 'pie_google': 'PieChart',\n 'donut_google': 'PieChart', \n 'geo_google': 'GeoChart',\n 'gauge_google': 'Gauge',\n 'gantt_google': 'Gantt',\n 'org_google': 'OrgChart',\n };\n return typeMap[chartTypeAlias] || chartTypeAlias; \n }\n\n handleChartFilter(event) {\n const currentElement = event.currentTarget\n const elementId = jQuery(currentElement).data('element_id');\n const chartElement = jQuery(`.graphina-google-chart[data-element_id=\"${elementId}\"]`);\n const chartTypeAlias = chartElement.data('chart_type'); \n const chartType = this.getGoogleChartTypeFromAlias(chartTypeAlias); \n if (chartElement.length > 0) {\n this.setupChart(chartElement, chartType)\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 // Handle Elementor widget initialization\n handleElementorWidgetInit() {\n\n elementorFrontend.hooks.addAction('frontend/element_ready/widget', ($scope) => {\n const chartElement = $scope.find('.graphina-google-chart');\n if (chartElement.length > 0) {\n this.initializeCharts(chartElement);\n }\n });\n }\n\n setupTableData(dynamicData,dataTable,googleChart,googleChartTexture,extraData){\n if(dynamicData?.google_chart_data?.title_array.length > 0 && dynamicData?.google_chart_data?.data.length > 0){\n dataTable.addColumn('string',dynamicData.google_chart_data.title)\n dynamicData.google_chart_data.title_array.forEach((col) => {\n dataTable.addColumn('number',col);\n if(dynamicData.google_chart_data.annotation_show){\n dataTable.addColumn({type:'string',role:'annotation'});\n }\n });\n dynamicData.google_chart_data.data.forEach(row => dataTable.addRow(row));\n googleChart.show()\n googleChartTexture.hide()\n } else if(dynamicData?.columns.length > 0 && dynamicData.rows.length > 0){\n dynamicData.columns.forEach((col, index) => {\n dataTable.addColumn(col);\n });\n dynamicData.rows.forEach(row => dataTable.addRow(row));\n } else{\n googleChart.hide()\n googleChartTexture.show()\n }\n }\n\n // Initialize charts for a given element\n initializeCharts(chartElement) {\n\n const chartType = chartElement.data('chart_type');\n\n if (this.chartHandlers[chartType]) {\n this.chartHandlers[chartType](chartElement);\n }\n }\n\n setFieldsForCSV(settings, response, chartType, extraData) {\n // Determine the type of data source and select appropriate fields\n const isSQLBuilder = settings[`${extraData.graphina_prefix}${chartType}_chart_dynamic_data_option`] === 'sql-builder';\n const xFieldSelector = `[data-setting=\"${extraData.graphina_prefix}${chartType}_${isSQLBuilder ? 'chart_sql_builder_x_columns' : 'chart_csv_x_columns'}\"]`;\n const yFieldSelector = `[data-setting=\"${extraData.graphina_prefix}${chartType}_${isSQLBuilder ? 'chart_sql_builder_y_columns' : 'chart_csv_y_columns'}\"]`;\n\n const elementX = parent.document.querySelector(xFieldSelector);\n const elementY = parent.document.querySelector(yFieldSelector);\n // Exit if either element is not found\n if (!elementX || !elementY) return;\n\n // Clear existing options in the dropdowns\n elementX.innerHTML = '';\n elementY.innerHTML = '';\n\n // Determine the data source for options and extra data keys\n const options = isSQLBuilder ? response.extra.db_column : response.extra.column;\n const xExtraKey = isSQLBuilder ? extraData.chart_csv_x_columns_sql : extraData.chart_csv_x_columns;\n const yExtraKey = isSQLBuilder ? extraData.chart_csv_y_columns_sql : extraData.chart_csv_y_columns;\n\n // Populate the dropdown fields with options\n options.forEach((option) => {\n // Check for duplicates before adding options to dropdowns\n const optionExistsInX = Array.from(elementX.options).some(opt => opt.value === option);\n const optionExistsInY = Array.from(elementY.options).some(opt => opt.value === option);\n\n if (!optionExistsInX) {\n const isSelectedX = Array.isArray(xExtraKey) ? xExtraKey.includes(option) : xExtraKey === option;\n elementX.append(new Option(option, option, isSelectedX, isSelectedX));\n }\n\n if (!optionExistsInY) {\n const isSelectedY = Array.isArray(yExtraKey) ? yExtraKey.includes(option) : yExtraKey === option;\n elementY.append(new Option(option, option, isSelectedY, isSelectedY));\n }\n });\n }\n\n\n\n getDynamicData(settings, extraData, chartType, elementId, filterValue) {\n let post_id = jQuery(`[data-element_id=\"${elementId}\"]`).closest('[data-elementor-id]').data('elementor-id');\n\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: 'graphina_get_dynamic_data',\n nonce: gcfe_public_localize.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 ((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 if (jQuery('body').hasClass(\"elementor-editor-active\")) {\n this.setFieldsForCSV(settings, response, chartType, extraData);\n };\n }\n resolve(response);\n } else {\n console.error('Error:', response.message);\n reject(new Error(response.message || 'Failed to fetch dynamic data.'));\n }\n },\n error: (error) => {\n console.error('AJAX Error:', error);\n reject(new Error('AJAX request failed.'));\n },\n });\n });\n }\n\n\n getFinalChartOptions(finalChartOptions) {\n return finalChartOptions;\n }\n\n getFinalChartData(dataTable) {\n return dataTable\n }\n\n prepareGanttRowData(x) {\n return x.map(function (k, j) {\n if (j === 3 || j === 4) {\n if (/^\\d{2}-\\d{2}-\\d{4}$/.test(k)) {\n let [day, month, year] = k.split(\"-\");\n k = new Date(`${year}-${month}-${day}`); // Convert to \"YYYY-MM-DD\"\n } else if (/^\\d{4}-\\d{2}-\\d{2}$/.test(k)) {\n k = new Date(k); // Already in correct format\n } else {\n k = null; // Invalid date\n }\n }\n if (j === 5) {\n k = null;\n }\n if (j === 7 && (k === 'null' || k === '0')) {\n k = null;\n } else if (j === 7 && k !== 'null') {\n k = k.toString()\n }\n if (j === 0) {\n k = k.toString()\n }\n if (j === 6) {\n k = parseInt(k)\n }\n return k;\n });\n }\n\n afterSetupChart(element, extraData,chart,dataTable,finalChartOptions){\n return true\n }\n\n // Setup and render Google Chart\n async setupChart(element, chartType) {\n\n const chartBox = element.closest('.chart-box');\n const googleChartTexture = chartBox ? chartBox.find('.google-chart-texture') : null;\n const googleChart = chartBox ? chartBox.find('.graphina-google-chart') : null;\n\n try {\n const elementId = element.data('element_id'); // Chart Element ID\n const chart_type = element.data('chart_type'); // Chart Type\n const chartData = element.data('chart_data'); // Chart data from element attributes\n const extraData = element.data('extra_data'); // Chart data from element attributes\n const settings = element.data('settings'); // Chart settings\n const chartOptions = element.data('chart_options') || {}; // Chart options\n\n\n // Ensure that Google Charts is loaded and only once\n await this.loadGoogleCharts();\n\n // Validate chartType\n if (!google.visualization[chartType]) {\n throw new Error(`Invalid chart type: ${chartType}`);\n }\n // Create a new DataTable\n const dataTable = new google.visualization.DataTable();\n if (extraData.chart_data_option) {\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 }\n const dynamicData = await this.getDynamicData(settings, extraData, chart_type, elementId, filterValue);\n this.setupTableData(dynamicData, dataTable, googleChart, googleChartTexture, extraData);\n\n\n } catch (error) {\n googleChart.hide()\n googleChartTexture.show()\n console.error('Failed to get dynamic data:', error);\n }\n jQuery(document).find(`.graphina-${elementId}-loader`).hide()\n } else {\n\n const finalChartData = this.getFinalChartData(chartData);\n this.setupTableData(finalChartData, dataTable, googleChart, googleChartTexture, extraData);\n }\n\n if ('Gantt' === chartType) {\n this.setDependField(settings, extraData)\n }\n\n // Render the chart\n const chart = new google.visualization[chartType](element[0]);\n const finalChartOptions = this.getFinalChartOptions(chartOptions, elementId)\n\n chart.draw(dataTable, finalChartOptions);\n this.afterSetupChart(element[0], extraData, chart, dataTable, finalChartOptions);\n if (extraData.can_chart_reload_ajax && !jQuery('body').hasClass('elementor-editor-active')) {\n setInterval(async () => {\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\n const updatedData = await this.getDynamicData(settings, extraData, chart_type, elementId, filterValue);\n\n if (updatedData) {\n const newDataTable = new google.visualization.DataTable();\n this.setupTableData(updatedData, newDataTable, googleChart, googleChartTexture, extraData);\n\n const finalChartOptions = this.getFinalChartOptions(chartOptions, elementId);\n chart.draw(newDataTable, finalChartOptions);\n } else {\n console.warn(`No data returned for ${chart_type} chart with ID ${elementId}.`);\n }\n\n } catch (error) {\n console.warn(`Error fetching dynamic data for ${chart_type} chart with ID ${elementId}:`, error);\n }\n }, extraData.interval_data_refresh * 1000);\n }\n\n } catch (error) {\n // googleChart.hide()\n // googleChartTexture.show()\n console.error(`Error initializing ${chartType} chart:`, error);\n }\n }\n\n\n // Dynamically load the Google Charts library\n async loadGoogleCharts() {\n\n if (this.isGoogleChartsLoaded) return; // Prevent loading multiple times\n\n return new Promise((resolve, reject) => {\n try {\n google.charts.load('current', { packages: ['corechart','geochart','gauge','gantt','orgchart'] });\n google.charts.setOnLoadCallback(() => {\n this.isGoogleChartsLoaded = true;\n resolve();\n });\n } catch (error) {\n console.error('Error loading Google Charts:', error);\n reject(error);\n }\n });\n }\n}\n"],"names":["GraphinaGoogleChartBase","elementorHookCalled","runOnElementorReady","$scope","chartElement","chartElements","index","element","func","wait","timeout","args","context","event","dropdown","newChartType","elementId","chartTypeAlias","currentElement","chartType","dynamicData","dataTable","googleChart","googleChartTexture","extraData","_a","_b","col","row","settings","response","isSQLBuilder","xFieldSelector","yFieldSelector","elementX","elementY","options","xExtraKey","yExtraKey","option","optionExistsInX","opt","optionExistsInY","isSelectedX","isSelectedY","filterValue","post_id","resolve","reject","error","finalChartOptions","x","k","j","day","month","year","chart","chartBox","chart_type","chartData","chartOptions","totalFilter","finalChartData","updatedData","newDataTable"],"mappings":"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"}
| ver. 1.6 |
Github
|
.
| PHP 8.3.30 | Генерация страницы: 0 |
proxy
|
phpinfo
|
Настройка