public static function factory($constructedChartData, $loadFromDB = true) { $chartObj = new self(); if (isset($constructedChartData['chart_id'])) { $chartObj->setId((int) $constructedChartData['chart_id']); if ($loadFromDB) { $chartObj->loadFromDB(); $chartObj->prepareData(); $chartObj->shiftStringColumnUp(); } } // Main data (steps 1-3 of chart constructor) $chartObj->setwpDataTableId($constructedChartData['wpdatatable_id']); $chartObj->setTitle($constructedChartData['chart_title']); $chartObj->setEngine($constructedChartData['chart_engine']); $chartObj->setType($constructedChartData['chart_type']); $chartObj->setSelectedColumns($constructedChartData['selected_columns']); $chartObj->setRangeType($constructedChartData['range_type']); if (isset($constructedChartData['range_data'])) { $chartObj->setRowRange($constructedChartData['range_data']); } $chartObj->setFollowFiltering((bool) $constructedChartData['follow_filtering']); // Render data (step 4 or chart constructor) $chartObj->setShowTitle(WDTTools::defineDefaultValue($constructedChartData, 'show_title', '')); $chartObj->setWidth(WDTTools::defineDefaultValue($constructedChartData, 'width', 400)); $chartObj->setHeight(WDTTools::defineDefaultValue($constructedChartData, 'height', 400)); $chartObj->setShowGrid(WDTTools::defineDefaultValue($constructedChartData, 'show_grid', true)); $chartObj->setShowLegend(WDTTools::defineDefaultValue($constructedChartData, 'show_legend', true)); $chartObj->setMajorAxisLabel(WDTTools::defineDefaultValue($constructedChartData, 'horizontal_axis_label', '')); $chartObj->setMinorAxisLabel(WDTTools::defineDefaultValue($constructedChartData, 'vertical_axis_label', '')); if (!empty($constructedChartData['series_data'])) { $chartObj->setUserDefinedSeriesData($constructedChartData['series_data']); } $chartObj->loadChildWPDataTable(); return $chartObj; }