Skip to content

Commit 1466d2b

Browse files
WIP
1 parent a42638c commit 1466d2b

File tree

7 files changed

+129
-59
lines changed

7 files changed

+129
-59
lines changed

classes/Visualizer/Module/Admin.php

Lines changed: 57 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -419,20 +419,26 @@ public function enqueueLibraryScripts( $suffix ) {
419419
Visualizer_Plugin::VERSION,
420420
true
421421
);
422-
wp_enqueue_script( 'google-jsapi-new', '//www.gstatic.com/charts/loader.js', array(), null, true );
423-
wp_enqueue_script( 'google-jsapi-old', '//www.google.com/jsapi', array( 'google-jsapi-new' ), null, true );
422+
424423
wp_enqueue_script( 'visualizer-customization', $this->get_user_customization_js(), array(), null, true );
425-
wp_enqueue_script(
426-
'visualizer-render',
427-
VISUALIZER_ABSURL . 'js/render.js',
428-
array(
429-
'google-jsapi-old',
430-
'visualizer-library',
431-
'visualizer-customization',
432-
),
433-
Visualizer_Plugin::VERSION,
434-
true
435-
);
424+
425+
$query = $this->getQuery();
426+
while ( $query->have_posts() ) {
427+
$chart = $query->next_post();
428+
$type = get_post_meta( $chart->ID, Visualizer_Plugin::CF_CHART_TYPE, true );
429+
$name = 'Visualizer_Render_Sidebar_Type_' . ucwords( $type );
430+
if ( ! class_exists( $name ) ) {
431+
continue;
432+
}
433+
$class = new $name;
434+
wp_enqueue_script(
435+
"visualizer-render-$type",
436+
VISUALIZER_ABSURL . 'js/render-facade.js',
437+
apply_filters( 'visualizer_assets_render', array( 'visualizer-library', 'visualizer-customization' ), true ),
438+
Visualizer_Plugin::VERSION,
439+
true
440+
);
441+
}
436442
}
437443
}
438444

@@ -466,14 +472,12 @@ public function registerAdminMenu() {
466472
$this->_libraryPage = add_submenu_page( 'upload.php', $title, $title, 'edit_posts', Visualizer_Plugin::NAME, $callback );
467473
}
468474

469-
/**
470-
* Renders visualizer library page.
471-
*
472-
* @since 1.0.0
473-
*
474-
* @access public
475-
*/
476-
public function renderLibraryPage() {
475+
private function getQuery() {
476+
static $q;
477+
if ( ! is_null( $q ) ) {
478+
return $q;
479+
}
480+
477481
// get current page
478482
$page = filter_input(
479483
INPUT_GET,
@@ -517,10 +521,39 @@ public function renderLibraryPage() {
517521
$meta[] = $query;
518522
$query_args['meta_query'] = $meta;
519523
}
520-
// Added by Ash/Upwork
521-
// fetch charts
524+
$q = new WP_Query( $query_args );
525+
return $q;
526+
}
527+
528+
/**
529+
* Renders visualizer library page.
530+
*
531+
* @since 1.0.0
532+
*
533+
* @access public
534+
*/
535+
public function renderLibraryPage() {
522536
$charts = array();
523-
$query = new WP_Query( $query_args );
537+
$query = $this->getQuery();
538+
539+
// get current page
540+
$page = filter_input(
541+
INPUT_GET,
542+
'vpage',
543+
FILTER_VALIDATE_INT,
544+
array(
545+
'options' => array(
546+
'min_range' => 1,
547+
'default' => 1,
548+
),
549+
)
550+
);
551+
// add chart type filter to the query arguments
552+
$filter = filter_input( INPUT_GET, 'type' );
553+
if ( ! ( $filter && in_array( $filter, Visualizer_Plugin::getChartTypes() ) ) ) {
554+
$filter = 'all';
555+
}
556+
524557
while ( $query->have_posts() ) {
525558
$chart = $query->next_post();
526559

classes/Visualizer/Module/Chart.php

Lines changed: 4 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -250,18 +250,11 @@ public function renderChartPages() {
250250

251251
wp_register_style( 'visualizer-frame', VISUALIZER_ABSURL . 'css/frame.css', array( 'visualizer-chosen' ), Visualizer_Plugin::VERSION );
252252
wp_register_script( 'visualizer-frame', VISUALIZER_ABSURL . 'js/frame.js', array( 'visualizer-chosen' ), Visualizer_Plugin::VERSION, true );
253-
wp_register_script( 'google-jsapi-new', '//www.gstatic.com/charts/loader.js', array(), null, true );
254-
wp_register_script( 'google-jsapi-old', '//www.google.com/jsapi', array( 'google-jsapi-new' ), null, true );
255253
wp_register_script( 'visualizer-customization', $this->get_user_customization_js(), array(), null, true );
256254
wp_register_script(
257255
'visualizer-render',
258-
VISUALIZER_ABSURL . 'js/render.js',
259-
array(
260-
'google-jsapi-old',
261-
'google-jsapi-new',
262-
'visualizer-frame',
263-
'visualizer-customization',
264-
),
256+
VISUALIZER_ABSURL . 'js/render-facade.js',
257+
apply_filters( 'visualizer_assets_render', array( 'visualizer-frame', 'visualizer-customization' ), false ),
265258
Visualizer_Plugin::VERSION,
266259
true
267260
);
@@ -356,11 +349,10 @@ private function _handleDataAndSettingsPage() {
356349
}
357350
}
358351
unset( $data['settings']['width'], $data['settings']['height'] );
359-
wp_enqueue_style( 'visualizer-frame' );
360352
wp_enqueue_style( 'wp-color-picker' );
361353
wp_enqueue_style( 'visualizer-frame' );
362354
wp_enqueue_script( 'visualizer-preview' );
363-
wp_enqueue_script( 'visualizer-render' );
355+
wp_enqueue_script( 'visualizer-render' ); // isn't this redundant if above we have defined render as dependency?
364356
wp_localize_script(
365357
'visualizer-render',
366358
'visualizer',
@@ -385,7 +377,7 @@ private function _handleDataAndSettingsPage() {
385377
),
386378
)
387379
);
388-
do_action( 'visualizer_load_assets_' . $data['type'] );
380+
389381
$render = new Visualizer_Render_Page_Data();
390382
$render->chart = $this->_chart;
391383
$render->type = $data['type'];

classes/Visualizer/Module/Frontend.php

Lines changed: 15 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -157,10 +157,7 @@ public function perform_action( WP_REST_Request $params ) {
157157
* @access public
158158
*/
159159
public function enqueueScripts() {
160-
wp_register_script( 'visualizer-google-jsapi-new', '//www.gstatic.com/charts/loader.js', array(), null, true );
161-
wp_register_script( 'visualizer-google-jsapi-old', '//www.google.com/jsapi', array( 'visualizer-google-jsapi-new' ), null, true );
162160
wp_register_script( 'visualizer-customization', $this->get_user_customization_js(), array(), null, true );
163-
wp_register_script( 'visualizer-render', VISUALIZER_ABSURL . 'js/render.js', array( 'visualizer-google-jsapi-old', 'jquery', 'visualizer-customization' ), Visualizer_Plugin::VERSION, true );
164161
wp_register_script( 'visualizer-clipboardjs', VISUALIZER_ABSURL . 'js/lib/clipboardjs/clipboard.min.js', array( 'jquery' ), Visualizer_Plugin::VERSION, true );
165162
wp_register_style( 'visualizer-front', VISUALIZER_ABSURL . 'css/front.css', array(), Visualizer_Plugin::VERSION );
166163
do_action( 'visualizer_pro_frontend_load_resources' );
@@ -254,16 +251,26 @@ public function renderChart( $atts ) {
254251
'data' => $data,
255252
);
256253

257-
// enqueue visualizer render and update render localizations
258-
do_action( 'visualizer_load_assets_' . $type );
254+
$name = 'Visualizer_Render_Sidebar_Type_' . ucwords( $type );
255+
if ( class_exists( $name ) ) {
256+
$classss = new $name;
257+
}
258+
259+
wp_register_script(
260+
"visualizer-render-$type",
261+
VISUALIZER_ABSURL . 'js/render-facade.js',
262+
apply_filters( 'visualizer_assets_render', array( 'jquery', 'visualizer-customization' ), true ),
263+
Visualizer_Plugin::VERSION,
264+
true
265+
);
259266

260-
wp_enqueue_script( 'visualizer-render' );
267+
wp_enqueue_script( "visualizer-render-$type" );
261268
wp_localize_script(
262-
'visualizer-render',
269+
"visualizer-render-$type",
263270
'visualizer',
264271
array(
265272
'charts' => $this->_charts,
266-
'language' => $this->get_language(),
273+
'language' => $this->get_language(),
267274
'map_api_key' => get_option( 'visualizer-map-api-key' ),
268275
'rest_url' => version_compare( $wp_version, '4.7.0', '>=' ) ? rest_url( 'visualizer/v' . VISUALIZER_REST_VERSION . '/action/#id#/#type#/' ) : '',
269276
'i10n' => array(

classes/Visualizer/Render/Sidebar/Graph.php

Lines changed: 32 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -61,6 +61,14 @@ abstract class Visualizer_Render_Sidebar_Graph extends Visualizer_Render_Sidebar
6161
*/
6262
protected $_positions;
6363

64+
/**
65+
* Is this a google chart?
66+
*
67+
* @access protected
68+
* @var bool
69+
*/
70+
protected $_is_google_chart = true;
71+
6472
/**
6573
* Constructor.
6674
*
@@ -91,9 +99,32 @@ public function __construct( $data = array() ) {
9199
* @access protected
92100
*/
93101
protected function hooks() {
94-
// empty.
102+
if ( $this->_is_google_chart ) {
103+
add_filter( 'visualizer_assets_render', array( $this, 'load_google_assets' ), 10, 2 );
104+
}
95105
}
96106

107+
function load_google_assets( $deps, $is_frontend ) {
108+
wp_register_script( 'google-jsapi-new', '//www.gstatic.com/charts/loader.js', array(), null, true );
109+
wp_register_script( 'google-jsapi-old', '//www.google.com/jsapi', array( 'google-jsapi-new' ), null, true );
110+
wp_register_script(
111+
'visualizer-render-google',
112+
VISUALIZER_ABSURL . 'js/render-google.js',
113+
array(
114+
'google-jsapi-old',
115+
),
116+
Visualizer_Plugin::VERSION,
117+
true
118+
);
119+
120+
return array_merge(
121+
$deps,
122+
array( 'visualizer-render-google' )
123+
);
124+
125+
}
126+
127+
97128

98129
/**
99130
* Renders chart title settings.

classes/Visualizer/Render/Sidebar/Type/Table.php renamed to classes/Visualizer/Render/Sidebar/Type/Html_Table.php

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@
2424
*
2525
* @since 1.0.0
2626
*/
27-
class Table extends Visualizer_Render_Sidebar_Columnar {
27+
class Visualizer_Render_Sidebar_Type_Html_Table extends Visualizer_Render_Sidebar_Columnar {
2828

2929
/**
3030
* Constructor.
@@ -37,6 +37,7 @@ class Table extends Visualizer_Render_Sidebar_Columnar {
3737
public function __construct( $data = array() ) {
3838
parent::__construct( $data );
3939
$this->_includeCurveTypes = false;
40+
$this->_is_google_chart = false;
4041
}
4142

4243
/**
@@ -45,7 +46,7 @@ public function __construct( $data = array() ) {
4546
* @access protected
4647
*/
4748
protected function hooks() {
48-
add_action( 'visualizer_load_assets_htmltable', array( $this, 'load_assets' ) );
49+
$this->load_assets();
4950
}
5051

5152
public function load_assets() {

js/render-facade.js

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
(function($, v){
2+
$(document).ready(function(){
3+
$('body').trigger('visualizer:render:chart:start', v);
4+
});
5+
})(jQuery, visualizer);

js/render.js renamed to js/render-google.js

Lines changed: 13 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -5,11 +5,9 @@
55
// this will store the images for each chart rendered.
66
var __visualizer_chart_images = [];
77

8-
(function(v, g) {
8+
(function($) {
99
var gv;
1010

11-
v.objects = {};
12-
1311
v.renderChart = function(id) {
1412
var chart, render, container, series, data, table, settings, i, j, row, date, axis, property, format, formatter;
1513

@@ -206,7 +204,7 @@ var __visualizer_chart_images = [];
206204
}
207205
v.override(settings);
208206

209-
g.visualization.events.addListener(render, 'ready', function () {
207+
gv.events.addListener(render, 'ready', function () {
210208
var arr = id.split('-');
211209
try{
212210
var img = render.getImageURI();
@@ -228,12 +226,12 @@ var __visualizer_chart_images = [];
228226
var formatter = null;
229227
switch (type) {
230228
case 'number':
231-
formatter = new g.visualization.NumberFormat({pattern: format});
229+
formatter = new gv.NumberFormat({pattern: format});
232230
break;
233231
case 'date':
234232
case 'datetime':
235233
case 'timeofday':
236-
formatter = new g.visualization.DateFormat({pattern: format});
234+
formatter = new gv.DateFormat({pattern: format});
237235
break;
238236
}
239237

@@ -264,12 +262,15 @@ var __visualizer_chart_images = [];
264262
}
265263
};
266264

267-
g.charts.load("current", {packages: ["corechart", "geochart", "gauge", "table", "timeline"], mapsApiKey: v.map_api_key, 'language' : v.language});
268-
g.charts.setOnLoadCallback(function() {
269-
gv = g.visualization;
270-
v.render();
271-
});
272-
})(visualizer, google);
265+
jQuery('body').on('visualizer:render:chart:start', function(event, v){
266+
v.objects = {};
267+
google.charts.load("current", {packages: ["corechart", "geochart", "gauge", "table", "timeline"], mapsApiKey: v.map_api_key, 'language' : v.language});
268+
goggle.charts.setOnLoadCallback(function() {
269+
gv = google.visualization;
270+
v.render();
271+
});
272+
});
273+
})(jQuery);
273274

274275
(function($, v) {
275276
var resizeTimeout;

0 commit comments

Comments
 (0)