WordPress Charts and Graphs Lite - Version 1.7.0

Version Description

Download this release

Release Info

Developer codeinwp
Plugin Icon WordPress Charts and Graphs Lite
Version 1.7.0
Comparing to
See all releases

Code changes from version 1.6.6 to 1.7.0

Files changed (54) hide show
  1. CHANGELOG.md +4 -2
  2. classes/Visualizer/Module.php +12 -11
  3. classes/Visualizer/Module/Admin.php +37 -39
  4. classes/Visualizer/Module/Chart.php +130 -122
  5. classes/Visualizer/Module/Frontend.php +12 -13
  6. classes/Visualizer/Module/Setup.php +1 -2
  7. classes/Visualizer/Module/Sources.php +9 -10
  8. classes/Visualizer/Plugin.php +14 -16
  9. classes/Visualizer/Render.php +6 -7
  10. classes/Visualizer/Render/Library.php +45 -47
  11. classes/Visualizer/Render/Page.php +3 -5
  12. classes/Visualizer/Render/Page/Data.php +39 -43
  13. classes/Visualizer/Render/Page/Send.php +1 -2
  14. classes/Visualizer/Render/Page/Settings.php +2 -3
  15. classes/Visualizer/Render/Page/Types.php +18 -19
  16. classes/Visualizer/Render/Page/Update.php +17 -20
  17. classes/Visualizer/Render/Sidebar.php +88 -87
  18. classes/Visualizer/Render/Sidebar/Columnar.php +16 -18
  19. classes/Visualizer/Render/Sidebar/Graph.php +159 -161
  20. classes/Visualizer/Render/Sidebar/Linear.php +40 -42
  21. classes/Visualizer/Render/Sidebar/Type/Area.php +20 -22
  22. classes/Visualizer/Render/Sidebar/Type/Bar.php +2 -4
  23. classes/Visualizer/Render/Sidebar/Type/Candlestick.php +37 -39
  24. classes/Visualizer/Render/Sidebar/Type/Column.php +2 -4
  25. classes/Visualizer/Render/Sidebar/Type/Gauge.php +25 -27
  26. classes/Visualizer/Render/Sidebar/Type/Geo.php +72 -74
  27. classes/Visualizer/Render/Sidebar/Type/Line.php +3 -5
  28. classes/Visualizer/Render/Sidebar/Type/Pie.php +48 -50
  29. classes/Visualizer/Render/Sidebar/Type/Scatter.php +1 -3
  30. classes/Visualizer/Render/Templates.php +5 -6
  31. classes/Visualizer/Source.php +12 -13
  32. classes/Visualizer/Source/Csv.php +7 -8
  33. classes/Visualizer/Source/Csv/Remote.php +6 -7
  34. css/frame.css +322 -320
  35. css/library.css +57 -39
  36. css/media.css +43 -31
  37. images/ajax-loader.gif +0 -0
  38. images/available_pro.png +0 -0
  39. images/computer.png +0 -0
  40. images/from_chart.png +0 -0
  41. images/notfound.png +0 -0
  42. images/star.png +0 -0
  43. images/ui-icons.png +0 -0
  44. images/web.png +0 -0
  45. index.php +16 -17
  46. js/frame.js +9 -5
  47. js/library.js +2 -1
  48. js/media.js +1 -0
  49. js/media/model.js +1 -1
  50. js/media/view.js +18 -18
  51. js/preview.js +1 -0
  52. js/render.js +29 -20
  53. languages/visualizer.pot +1351 -0
  54. readme.txt +5 -0
CHANGELOG.md CHANGED
@@ -1,4 +1,8 @@
1
 
 
 
 
2
- Release 1.7.0
3
 
4
 
5
 
6
- Fixed issue on chart resizing on tabbed system
1
 
2
+
3
+
4
+
5
+
6
 
7
 
8
 
 
classes/Visualizer/Module.php CHANGED
@@ -19,7 +19,6 @@
19
  // +----------------------------------------------------------------------+
20
  // | Author: Eugene Manuilov <eugene@manuilov.org> |
21
  // +----------------------------------------------------------------------+
22
-
23
  /**
24
  * Base class for all modules. Implements routine methods required by all modules.
25
  *
@@ -75,11 +74,12 @@ class Visualizer_Module {
75
  * @access protected
76
  * @param string $tag The name of the action to which the $method is hooked.
77
  * @param string $method The name of the method to be called.
78
- * @param int $priority optional. Used to specify the order in which the functions associated with a particular action are executed (default: 10). Lower numbers correspond with earlier execution, and functions with the same priority are executed in the order in which they were added to the action.
79
- * @param int $accepted_args optional. The number of arguments the function accept (default 1).
 
80
  * @return Visualizer_Module
81
  */
82
- protected function _addAction( $tag, $method, $methodClass=NULL, $priority = 10, $accepted_args = 1 ) {
83
  add_action( $tag, array( $methodClass ? $methodClass : $this, $method ), $priority, $accepted_args );
84
  return $this;
85
  }
@@ -90,13 +90,14 @@ class Visualizer_Module {
90
  * @since 1.0.0
91
  *
92
  * @access public
93
- * @param string $tag The name of the AJAX action to which the $method is hooked.
94
- * @param string $method Optional. The name of the method to be called. If the name of the method is not provided, tag name will be used as method name.
 
95
  * @param boolean $private Optional. Determines if we should register hook for logged in users.
96
  * @param boolean $public Optional. Determines if we should register hook for not logged in users.
97
  * @return Visualizer_Module
98
  */
99
- protected function _addAjaxAction( $tag, $method = '', $methodClass=NULL, $private = true, $public = false ) {
100
  if ( $private ) {
101
  $this->_addAction( 'wp_ajax_' . $tag, $method, $methodClass );
102
  }
@@ -116,9 +117,9 @@ class Visualizer_Module {
116
  *
117
  * @access protected
118
  * @param string $tag The name of the filter to hook the $method to.
119
- * @param type $method The name of the method to be called when the filter is applied.
120
- * @param int $priority optional. Used to specify the order in which the functions associated with a particular action are executed (default: 10). Lower numbers correspond with earlier execution, and functions with the same priority are executed in the order in which they were added to the action.
121
- * @param int $accepted_args optional. The number of arguments the function accept (default 1).
122
  * @return Visualizer_Module
123
  */
124
  protected function _addFilter( $tag, $method, $priority = 10, $accepted_args = 1 ) {
@@ -142,4 +143,4 @@ class Visualizer_Module {
142
  return $this;
143
  }
144
 
145
- }
19
  // +----------------------------------------------------------------------+
20
  // | Author: Eugene Manuilov <eugene@manuilov.org> |
21
  // +----------------------------------------------------------------------+
 
22
  /**
23
  * Base class for all modules. Implements routine methods required by all modules.
24
  *
74
  * @access protected
75
  * @param string $tag The name of the action to which the $method is hooked.
76
  * @param string $method The name of the method to be called.
77
+ * @param bool $methodClass The root of the method.
78
+ * @param int $priority optional. Used to specify the order in which the functions associated with a particular action are executed (default: 10). Lower numbers correspond with earlier execution, and functions with the same priority are executed in the order in which they were added to the action.
79
+ * @param int $accepted_args optional. The number of arguments the function accept (default 1).
80
  * @return Visualizer_Module
81
  */
82
+ protected function _addAction( $tag, $method, $methodClass = null, $priority = 10, $accepted_args = 1 ) {
83
  add_action( $tag, array( $methodClass ? $methodClass : $this, $method ), $priority, $accepted_args );
84
  return $this;
85
  }
90
  * @since 1.0.0
91
  *
92
  * @access public
93
+ * @param string $tag The name of the AJAX action to which the $method is hooked.
94
+ * @param string $method Optional. The name of the method to be called. If the name of the method is not provided, tag name will be used as method name.
95
+ * @param bool $methodClass The root of the method.
96
  * @param boolean $private Optional. Determines if we should register hook for logged in users.
97
  * @param boolean $public Optional. Determines if we should register hook for not logged in users.
98
  * @return Visualizer_Module
99
  */
100
+ protected function _addAjaxAction( $tag, $method = '', $methodClass = null, $private = true, $public = false ) {
101
  if ( $private ) {
102
  $this->_addAction( 'wp_ajax_' . $tag, $method, $methodClass );
103
  }
117
  *
118
  * @access protected
119
  * @param string $tag The name of the filter to hook the $method to.
120
+ * @param type $method The name of the method to be called when the filter is applied.
121
+ * @param int $priority optional. Used to specify the order in which the functions associated with a particular action are executed (default: 10). Lower numbers correspond with earlier execution, and functions with the same priority are executed in the order in which they were added to the action.
122
+ * @param int $accepted_args optional. The number of arguments the function accept (default 1).
123
  * @return Visualizer_Module
124
  */
125
  protected function _addFilter( $tag, $method, $priority = 10, $accepted_args = 1 ) {
143
  return $this;
144
  }
145
 
146
+ }
classes/Visualizer/Module/Admin.php CHANGED
@@ -19,7 +19,6 @@
19
  // +----------------------------------------------------------------------+
20
  // | Author: Eugene Manuilov <eugene@manuilov.org> |
21
  // +----------------------------------------------------------------------+
22
-
23
  /**
24
  * The module for all admin stuff.
25
  *
@@ -75,21 +74,21 @@ class Visualizer_Module_Admin extends Visualizer_Module {
75
  */
76
  public static function _getChartTypesLocalized() {
77
  $types = array(
78
- 'all' => esc_html__( 'All', Visualizer_Plugin::NAME ),
79
- 'pie' => esc_html__( 'Pie', Visualizer_Plugin::NAME ),
80
- 'line' => esc_html__( 'Line', Visualizer_Plugin::NAME ),
81
- 'area' => esc_html__( 'Area', Visualizer_Plugin::NAME ),
82
- 'geo' => esc_html__( 'Geo', Visualizer_Plugin::NAME ),
83
- 'bar' => esc_html__( 'Bar', Visualizer_Plugin::NAME ),
84
- 'column' => esc_html__( 'Column', Visualizer_Plugin::NAME ),
85
- 'gauge' => esc_html__( 'Gauge', Visualizer_Plugin::NAME ),
86
- 'scatter' => esc_html__( 'Scatter', Visualizer_Plugin::NAME ),
87
- 'candlestick' => esc_html__( 'Candlestick', Visualizer_Plugin::NAME ),
88
  );
89
 
90
- $types = apply_filters("visualizer_pro_chart_types", $types);
91
 
92
- return $types;
93
  }
94
 
95
  /**
@@ -134,11 +133,11 @@ class Visualizer_Module_Admin extends Visualizer_Module {
134
  'delete_chart' => Visualizer_Plugin::ACTION_DELETE_CHART,
135
  ),
136
  'controller' => array(
137
- 'title' => esc_html__( 'Visualizations', Visualizer_Plugin::NAME ),
138
  ),
139
  'routers' => array(
140
- 'library' => esc_html__( 'From Library', Visualizer_Plugin::NAME ),
141
- 'create' => esc_html__( 'Create New', Visualizer_Plugin::NAME ),
142
  ),
143
  'library' => array(
144
  'filters' => self::_getChartTypesLocalized(),
@@ -189,7 +188,7 @@ class Visualizer_Module_Admin extends Visualizer_Module {
189
  wp_enqueue_media();
190
  wp_enqueue_script( 'visualizer-library', VISUALIZER_ABSURL . 'js/library.js', array( 'jquery', 'media-views' ), Visualizer_Plugin::VERSION, true );
191
  wp_enqueue_script( 'google-jsapi-new', '//www.gstatic.com/charts/loader.js', array(), null, true );
192
- wp_enqueue_script( 'google-jsapi-old', '//www.google.com/jsapi', array('google-jsapi-new'), null, true );
193
  wp_enqueue_script( 'visualizer-render', VISUALIZER_ABSURL . 'js/render.js', array( 'google-jsapi-old', 'visualizer-library' ), Visualizer_Plugin::VERSION, true );
194
  }
195
  }
@@ -216,7 +215,7 @@ class Visualizer_Module_Admin extends Visualizer_Module {
216
  * @access public
217
  */
218
  public function registerAdminMenu() {
219
- $title = esc_html__( 'Visualizer Library', Visualizer_Plugin::NAME );
220
  $callback = array( $this, 'renderLibraryPage' );
221
  $this->_libraryPage = add_submenu_page( 'upload.php', $title, $title, 'edit_posts', Visualizer_Plugin::NAME, $callback );
222
  }
@@ -234,7 +233,7 @@ class Visualizer_Module_Admin extends Visualizer_Module {
234
  'options' => array(
235
  'min_range' => 1,
236
  'default' => 1,
237
- )
238
  ) );
239
 
240
  // the initial query arguments to fetch charts
@@ -258,24 +257,23 @@ class Visualizer_Module_Admin extends Visualizer_Module {
258
  $filter = 'all';
259
  }
260
 
261
- // Added by Ash/Upwork
262
- $filterByMeta = filter_input( INPUT_GET, 'filter', FILTER_SANITIZE_STRING );
263
- if($filterByMeta){
264
- $query = array(
265
  'key' => Visualizer_Plugin::CF_SETTINGS,
266
  'value' => $filterByMeta,
267
  'compare' => 'LIKE',
268
- );
269
- $meta = isset($query_args['meta_query']) ? $query_args['meta_query'] : array();
270
- $meta[] = $query;
271
- $query_args['meta_query'] = $meta;
272
- }
273
- // Added by Ash/Upwork
274
-
275
  // fetch charts
276
  $charts = array();
277
  $query = new WP_Query( $query_args );
278
- while( $query->have_posts() ) {
279
  $chart = $query->next_post();
280
 
281
  // fetch and update settings
@@ -287,7 +285,7 @@ class Visualizer_Module_Admin extends Visualizer_Module {
287
  $data = apply_filters( Visualizer_Plugin::FILTER_GET_CHART_DATA, unserialize( $chart->post_content ), $chart->ID, $type );
288
 
289
  // add chart to the array
290
- $charts['visualizer-' . $chart->ID] = array(
291
  'id' => $chart->ID,
292
  'type' => $type,
293
  'series' => $series,
@@ -303,7 +301,7 @@ class Visualizer_Module_Admin extends Visualizer_Module {
303
  'urls' => array(
304
  'base' => add_query_arg( 'vpage', false ),
305
  'create' => add_query_arg( array( 'action' => Visualizer_Plugin::ACTION_CREATE_CHART, 'library' => 'yes' ), $ajaxurl ),
306
- 'edit' => add_query_arg( array( 'action' => Visualizer_Plugin::ACTION_EDIT_CHART, 'library' => 'yes' ), $ajaxurl ),
307
  ),
308
  ) );
309
 
@@ -330,7 +328,7 @@ class Visualizer_Module_Admin extends Visualizer_Module {
330
  * @since 1.0.0
331
  *
332
  * @access public
333
- * @param array $links The array of original action links.
334
  * @param string $file The plugin basename.
335
  * @return array Updated array of action links.
336
  */
@@ -341,7 +339,7 @@ class Visualizer_Module_Admin extends Visualizer_Module {
341
  sprintf(
342
  '<a href="%s">%s</a>',
343
  admin_url( 'upload.php?page=' . Visualizer_Plugin::NAME ),
344
- esc_html__( 'Library', Visualizer_Plugin::NAME )
345
  )
346
  );
347
  }
@@ -355,7 +353,7 @@ class Visualizer_Module_Admin extends Visualizer_Module {
355
  * @since 1.0.0
356
  *
357
  * @access public
358
- * @param array $plugin_meta The array of a plugin meta links.
359
  * @param string $plugin_file The plugin's basename.
360
  * @return array Updated array of plugin meta links.
361
  */
@@ -364,16 +362,16 @@ class Visualizer_Module_Admin extends Visualizer_Module {
364
  // knowledge base link
365
  $plugin_meta[] = sprintf(
366
  '<a href="https://github.com/codeinwp/visualizer/wiki" target="_blank">%s</a>',
367
- esc_html__( 'Knowledge Base', Visualizer_Plugin::NAME )
368
  );
369
  // flattr link
370
  $plugin_meta[] = sprintf(
371
  '<a style="color:red" href="https://themeisle.com/plugins/visualizer-charts-and-graphs-pro-addon/" target="_blank">%s</a>',
372
- esc_html__( 'Pro Addon', Visualizer_Plugin::NAME )
373
  );
374
  }
375
 
376
  return $plugin_meta;
377
  }
378
 
379
- }
19
  // +----------------------------------------------------------------------+
20
  // | Author: Eugene Manuilov <eugene@manuilov.org> |
21
  // +----------------------------------------------------------------------+
 
22
  /**
23
  * The module for all admin stuff.
24
  *
74
  */
75
  public static function _getChartTypesLocalized() {
76
  $types = array(
77
+ 'all' => esc_html__( 'All', 'visualizer' ),
78
+ 'pie' => esc_html__( 'Pie', 'visualizer' ),
79
+ 'line' => esc_html__( 'Line', 'visualizer' ),
80
+ 'area' => esc_html__( 'Area', 'visualizer' ),
81
+ 'geo' => esc_html__( 'Geo', 'visualizer' ),
82
+ 'bar' => esc_html__( 'Bar', 'visualizer' ),
83
+ 'column' => esc_html__( 'Column', 'visualizer' ),
84
+ 'gauge' => esc_html__( 'Gauge', 'visualizer' ),
85
+ 'scatter' => esc_html__( 'Scatter', 'visualizer' ),
86
+ 'candlestick' => esc_html__( 'Candlestick', 'visualizer' ),
87
  );
88
 
89
+ $types = apply_filters( 'visualizer_pro_chart_types', $types );
90
 
91
+ return $types;
92
  }
93
 
94
  /**
133
  'delete_chart' => Visualizer_Plugin::ACTION_DELETE_CHART,
134
  ),
135
  'controller' => array(
136
+ 'title' => esc_html__( 'Visualizations', 'visualizer' ),
137
  ),
138
  'routers' => array(
139
+ 'library' => esc_html__( 'From Library', 'visualizer' ),
140
+ 'create' => esc_html__( 'Create New', 'visualizer' ),
141
  ),
142
  'library' => array(
143
  'filters' => self::_getChartTypesLocalized(),
188
  wp_enqueue_media();
189
  wp_enqueue_script( 'visualizer-library', VISUALIZER_ABSURL . 'js/library.js', array( 'jquery', 'media-views' ), Visualizer_Plugin::VERSION, true );
190
  wp_enqueue_script( 'google-jsapi-new', '//www.gstatic.com/charts/loader.js', array(), null, true );
191
+ wp_enqueue_script( 'google-jsapi-old', '//www.google.com/jsapi', array( 'google-jsapi-new' ), null, true );
192
  wp_enqueue_script( 'visualizer-render', VISUALIZER_ABSURL . 'js/render.js', array( 'google-jsapi-old', 'visualizer-library' ), Visualizer_Plugin::VERSION, true );
193
  }
194
  }
215
  * @access public
216
  */
217
  public function registerAdminMenu() {
218
+ $title = esc_html__( 'Visualizer Library', 'visualizer' );
219
  $callback = array( $this, 'renderLibraryPage' );
220
  $this->_libraryPage = add_submenu_page( 'upload.php', $title, $title, 'edit_posts', Visualizer_Plugin::NAME, $callback );
221
  }
233
  'options' => array(
234
  'min_range' => 1,
235
  'default' => 1,
236
+ ),
237
  ) );
238
 
239
  // the initial query arguments to fetch charts
257
  $filter = 'all';
258
  }
259
 
260
+ // Added by Ash/Upwork
261
+ $filterByMeta = filter_input( INPUT_GET, 'filter', FILTER_SANITIZE_STRING );
262
+ if ( $filterByMeta ) {
263
+ $query = array(
264
  'key' => Visualizer_Plugin::CF_SETTINGS,
265
  'value' => $filterByMeta,
266
  'compare' => 'LIKE',
267
+ );
268
+ $meta = isset( $query_args['meta_query'] ) ? $query_args['meta_query'] : array();
269
+ $meta[] = $query;
270
+ $query_args['meta_query'] = $meta;
271
+ }
272
+ // Added by Ash/Upwork
 
273
  // fetch charts
274
  $charts = array();
275
  $query = new WP_Query( $query_args );
276
+ while ( $query->have_posts() ) {
277
  $chart = $query->next_post();
278
 
279
  // fetch and update settings
285
  $data = apply_filters( Visualizer_Plugin::FILTER_GET_CHART_DATA, unserialize( $chart->post_content ), $chart->ID, $type );
286
 
287
  // add chart to the array
288
+ $charts[ 'visualizer-' . $chart->ID ] = array(
289
  'id' => $chart->ID,
290
  'type' => $type,
291
  'series' => $series,
301
  'urls' => array(
302
  'base' => add_query_arg( 'vpage', false ),
303
  'create' => add_query_arg( array( 'action' => Visualizer_Plugin::ACTION_CREATE_CHART, 'library' => 'yes' ), $ajaxurl ),
304
+ 'edit' => add_query_arg( array( 'action' => Visualizer_Plugin::ACTION_EDIT_CHART, 'library' => 'yes' ), $ajaxurl ),
305
  ),
306
  ) );
307
 
328
  * @since 1.0.0
329
  *
330
  * @access public
331
+ * @param array $links The array of original action links.
332
  * @param string $file The plugin basename.
333
  * @return array Updated array of action links.
334
  */
339
  sprintf(
340
  '<a href="%s">%s</a>',
341
  admin_url( 'upload.php?page=' . Visualizer_Plugin::NAME ),
342
+ esc_html__( 'Library', 'visualizer' )
343
  )
344
  );
345
  }
353
  * @since 1.0.0
354
  *
355
  * @access public
356
+ * @param array $plugin_meta The array of a plugin meta links.
357
  * @param string $plugin_file The plugin's basename.
358
  * @return array Updated array of plugin meta links.
359
  */
362
  // knowledge base link
363
  $plugin_meta[] = sprintf(
364
  '<a href="https://github.com/codeinwp/visualizer/wiki" target="_blank">%s</a>',
365
+ esc_html__( 'Knowledge Base', 'visualizer' )
366
  );
367
  // flattr link
368
  $plugin_meta[] = sprintf(
369
  '<a style="color:red" href="https://themeisle.com/plugins/visualizer-charts-and-graphs-pro-addon/" target="_blank">%s</a>',
370
+ esc_html__( 'Pro Addon', 'visualizer' )
371
  );
372
  }
373
 
374
  return $plugin_meta;
375
  }
376
 
377
+ }
classes/Visualizer/Module/Chart.php CHANGED
@@ -19,7 +19,6 @@
19
  // +----------------------------------------------------------------------+
20
  // | Author: Eugene Manuilov <eugene@manuilov.org> |
21
  // +----------------------------------------------------------------------+
22
-
23
  /**
24
  * The module for all stuff related to getting, editing, creating and deleting charts.
25
  *
@@ -60,15 +59,14 @@ class Visualizer_Module_Chart extends Visualizer_Module {
60
  $this->_addAjaxAction( Visualizer_Plugin::ACTION_UPLOAD_DATA, 'uploadData' );
61
  $this->_addAjaxAction( Visualizer_Plugin::ACTION_CLONE_CHART, 'cloneChart' );
62
 
63
- // Added by Ash/Upwork
64
  $this->_addAjaxAction( Visualizer_Plugin::ACTION_EXPORT_DATA, 'exportData' );
65
- if( defined( 'Visualizer_Pro' ) ){
66
- global $Visualizer_Pro;
67
- list($action, $name, $class) = $Visualizer_Pro->_getAjaxAction($this);
68
- $this->_addAjaxAction($action, $name, $class);
69
- }
70
- // Added by Ash/Upwork
71
-
72
  }
73
 
74
  /**
@@ -128,8 +126,8 @@ class Visualizer_Module_Chart extends Visualizer_Module {
128
  'options' => array(
129
  'min_range' => 1,
130
  'default' => 1,
131
- )
132
- ) )
133
  );
134
 
135
  $filter = filter_input( INPUT_GET, 'filter', FILTER_SANITIZE_STRING );
@@ -146,7 +144,7 @@ class Visualizer_Module_Chart extends Visualizer_Module {
146
  $query = new WP_Query( $query_args );
147
 
148
  $charts = array();
149
- while( $query->have_posts() ) {
150
  $chart = $query->next_post();
151
 
152
  $chart_data = $this->_getChartArray( $chart );
@@ -206,11 +204,11 @@ class Visualizer_Module_Chart extends Visualizer_Module {
206
  * @access public
207
  */
208
  public function renderChartPages() {
209
- define ( 'IFRAME_REQUEST', 1 );
210
 
211
  // check chart, if chart not exists, will create new one and redirects to the same page with proper chart id
212
  $chart_id = filter_input( INPUT_GET, 'chart', FILTER_VALIDATE_INT );
213
- if ( !$chart_id || !( $chart = get_post( $chart_id ) ) || $chart->post_type != Visualizer_Plugin::CPT_VISUALIZER ) {
214
  $default_type = 'line';
215
 
216
  $source = new Visualizer_Source_Csv( VISUALIZER_ABSPATH . DIRECTORY_SEPARATOR . 'samples' . DIRECTORY_SEPARATOR . $default_type . '.csv' );
@@ -224,15 +222,15 @@ class Visualizer_Module_Chart extends Visualizer_Module {
224
  'post_content' => $source->getData(),
225
  ) );
226
 
227
- if ( $chart_id && !is_wp_error( $chart_id ) ) {
228
  add_post_meta( $chart_id, Visualizer_Plugin::CF_CHART_TYPE, $default_type );
229
  add_post_meta( $chart_id, Visualizer_Plugin::CF_DEFAULT_DATA, 1 );
230
  add_post_meta( $chart_id, Visualizer_Plugin::CF_SOURCE, $source->getSourceName() );
231
  add_post_meta( $chart_id, Visualizer_Plugin::CF_SERIES, $source->getSeries() );
232
- add_post_meta( $chart_id, Visualizer_Plugin::CF_SETTINGS, array('focusTarget' => 'datum') );
233
  }
234
 
235
- wp_redirect( add_query_arg( 'chart', (int)$chart_id ) );
236
  exit;
237
  }
238
 
@@ -241,21 +239,21 @@ class Visualizer_Module_Chart extends Visualizer_Module {
241
 
242
  wp_register_script( 'visualizer-frame', VISUALIZER_ABSURL . 'js/frame.js', array( 'jquery' ), Visualizer_Plugin::VERSION, true );
243
  wp_register_script( 'google-jsapi-new', '//www.gstatic.com/charts/loader.js', array(), null, true );
244
- wp_register_script( 'google-jsapi-old', '//www.google.com/jsapi', array('google-jsapi-new'), null, true );
245
  wp_register_script( 'visualizer-render', VISUALIZER_ABSURL . 'js/render.js', array( 'google-jsapi-old', 'google-jsapi-new', 'visualizer-frame' ), Visualizer_Plugin::VERSION, true );
246
  wp_register_script( 'visualizer-preview', VISUALIZER_ABSURL . 'js/preview.js', array( 'wp-color-picker', 'visualizer-render' ), Visualizer_Plugin::VERSION, true );
247
 
248
- // added by Ash/Upwork
249
- if( defined( 'Visualizer_Pro' ) ){
250
- global $Visualizer_Pro;
251
- $Visualizer_Pro->_addScriptsAndStyles();
252
- }
253
 
254
  // dispatch pages
255
  $this->_chart = $chart;
256
  switch ( filter_input( INPUT_GET, 'tab' ) ) {
257
  case 'settings':
258
- // changed by Ash/Upwork
259
  $this->_handleDataAndSettingsPage();
260
  break;
261
  case 'type':
@@ -295,7 +293,7 @@ class Visualizer_Module_Chart extends Visualizer_Module {
295
 
296
  // redirect to next tab
297
  // changed by Ash/Upwork
298
- wp_redirect( add_query_arg( 'tab', 'settings' ) );
299
  return;
300
  }
301
  }
@@ -308,7 +306,7 @@ class Visualizer_Module_Chart extends Visualizer_Module {
308
  wp_enqueue_style( 'visualizer-frame' );
309
  wp_enqueue_script( 'visualizer-frame' );
310
 
311
- wp_iframe( array( $render, 'render') );
312
  }
313
 
314
  /**
@@ -331,28 +329,29 @@ class Visualizer_Module_Chart extends Visualizer_Module {
331
  wp_enqueue_script( 'visualizer-render' );
332
  wp_localize_script( 'visualizer-render', 'visualizer', array(
333
  'l10n' => array(
334
- 'remotecsv_prompt' => esc_html__( 'Please, enter the URL of CSV file:', Visualizer_Plugin::NAME ),
335
- 'invalid_source' => esc_html__( 'You have entered invalid URL. Please, insert proper URL.', Visualizer_Plugin::NAME ),
336
  ),
337
  'charts' => array(
338
  'canvas' => $data,
339
  ),
340
  ) );
341
 
342
- // Added by Ash/Upwork
343
- if( defined( 'Visualizer_Pro' ) ){
344
- global $Visualizer_Pro;
345
- $Visualizer_Pro->_enqueueScriptsAndStyles($data);
346
- }
347
- // Added by Ash/Upwork
348
-
349
  $this->_addAction( 'admin_head', 'renderFlattrScript' );
350
 
351
- wp_iframe( array( $render, 'render') );
352
  }
353
 
354
- // changed by Ash/Upwork
355
- private function _handleDataAndSettingsPage(){
 
 
356
  if ( $_SERVER['REQUEST_METHOD'] == 'POST' && wp_verify_nonce( filter_input( INPUT_GET, 'nonce' ) ) ) {
357
  if ( $this->_chart->post_status == 'auto-draft' ) {
358
  $this->_chart->post_status = 'publish';
@@ -364,7 +363,7 @@ class Visualizer_Module_Chart extends Visualizer_Module {
364
  $render = new Visualizer_Render_Page_Send();
365
  $render->text = sprintf( '[visualizer id="%d"]', $this->_chart->ID );
366
 
367
- wp_iframe( array( $render, 'render') );
368
  return;
369
  }
370
 
@@ -377,12 +376,12 @@ class Visualizer_Module_Chart extends Visualizer_Module {
377
  $sidebar->__series = $data['series'];
378
  $sidebar->__data = $data['data'];
379
  } else {
380
- $sidebar = apply_filters("visualizer_pro_chart_type_sidebar", '', $data);
381
- if ($sidebar != '') {
382
- $sidebar->__series = $data['series'];
383
- $sidebar->__data = $data['data'];
384
- }
385
- }
386
 
387
  unset( $data['settings']['width'], $data['settings']['height'] );
388
 
@@ -394,8 +393,8 @@ class Visualizer_Module_Chart extends Visualizer_Module {
394
  wp_enqueue_script( 'visualizer-render' );
395
  wp_localize_script( 'visualizer-render', 'visualizer', array(
396
  'l10n' => array(
397
- 'remotecsv_prompt' => esc_html__( 'Please, enter the URL of CSV file:', Visualizer_Plugin::NAME ),
398
- 'invalid_source' => esc_html__( 'You have entered invalid URL. Please, insert proper URL.', Visualizer_Plugin::NAME ),
399
  ),
400
  'charts' => array(
401
  'canvas' => $data,
@@ -409,23 +408,22 @@ class Visualizer_Module_Chart extends Visualizer_Module {
409
  $render->sidebar = $sidebar;
410
  if ( filter_input( INPUT_GET, 'library', FILTER_VALIDATE_BOOLEAN ) ) {
411
  $render->button = filter_input( INPUT_GET, 'action' ) == Visualizer_Plugin::ACTION_EDIT_CHART
412
- ? esc_html__( 'Save Chart', Visualizer_Plugin::NAME )
413
- : esc_html__( 'Create Chart', Visualizer_Plugin::NAME );
414
  } else {
415
- $render->button = esc_attr__( 'Insert Chart', Visualizer_Plugin::NAME );
416
  }
417
 
418
- if( defined( 'Visualizer_Pro' ) ){
419
- global $Visualizer_Pro;
420
- $Visualizer_Pro->_enqueueScriptsAndStyles($data);
421
- }
422
 
423
  $this->_addAction( 'admin_head', 'renderFlattrScript' );
424
 
425
- wp_iframe( array( $render, 'render') );
426
- }
427
- // changed by Ash/Upwork
428
-
429
  /**
430
  * Renders flattr script in the iframe <head>
431
  *
@@ -435,7 +433,7 @@ class Visualizer_Module_Chart extends Visualizer_Module {
435
  * @access public
436
  */
437
  public function renderFlattrScript() {
438
- echo '';
439
  }
440
 
441
  /**
@@ -447,14 +445,14 @@ class Visualizer_Module_Chart extends Visualizer_Module {
447
  */
448
  public function uploadData() {
449
  // validate nonce
450
- if ( !wp_verify_nonce( filter_input( INPUT_GET, 'nonce' ) ) ) {
451
  status_header( 403 );
452
  exit;
453
  }
454
 
455
  // check chart, if chart exists
456
  $chart_id = filter_input( INPUT_GET, 'chart', FILTER_VALIDATE_INT );
457
- if ( !$chart_id || !( $chart = get_post( $chart_id ) ) || $chart->post_type != Visualizer_Plugin::CPT_VISUALIZER ) {
458
  status_header( 400 );
459
  exit;
460
  }
@@ -462,18 +460,17 @@ class Visualizer_Module_Chart extends Visualizer_Module {
462
  $source = null;
463
  $render = new Visualizer_Render_Page_Update();
464
  if ( filter_input( INPUT_POST, 'remote_data', FILTER_VALIDATE_URL ) ) {
465
- $source = new Visualizer_Source_Csv_Remote( $_POST['remote_data'] );
466
  } elseif ( isset( $_FILES['local_data'] ) && $_FILES['local_data']['error'] == 0 ) {
467
- $source = new Visualizer_Source_Csv( $_FILES['local_data']['tmp_name'] );
468
-
469
- // Added by Ash/Upwork
470
- } elseif ( defined( 'Visualizer_Pro' ) && isset( $_POST['chart_data'] ) && strlen( $_POST['chart_data'] ) > 0){
471
- global $Visualizer_Pro;
472
- $source = $Visualizer_Pro->_handleChartData($_POST['chart_data']);
473
- // Added by Ash/Upwork
474
 
475
- } else {
476
- $render->message = esc_html__( "CSV file with chart data was not uploaded. Please, try again.", Visualizer_Plugin::NAME );
 
 
 
 
 
477
  }
478
 
479
  if ( $source ) {
@@ -488,7 +485,7 @@ class Visualizer_Module_Chart extends Visualizer_Module {
488
  $render->data = json_encode( $source->getRawData() );
489
  $render->series = json_encode( $source->getSeries() );
490
  } else {
491
- $render->message = esc_html__( "CSV file is broken or invalid. Please, try again.", Visualizer_Plugin::NAME );
492
  }
493
  }
494
 
@@ -525,7 +522,7 @@ class Visualizer_Module_Chart extends Visualizer_Module {
525
  'post_content' => $chart->post_content,
526
  ) );
527
 
528
- if ( $new_chart_id && !is_wp_error( $new_chart_id ) ) {
529
  add_post_meta( $new_chart_id, Visualizer_Plugin::CF_CHART_TYPE, get_post_meta( $chart_id, Visualizer_Plugin::CF_CHART_TYPE, true ) );
530
  add_post_meta( $new_chart_id, Visualizer_Plugin::CF_DEFAULT_DATA, get_post_meta( $chart_id, Visualizer_Plugin::CF_DEFAULT_DATA, true ) );
531
  add_post_meta( $new_chart_id, Visualizer_Plugin::CF_SOURCE, get_post_meta( $chart_id, Visualizer_Plugin::CF_SOURCE, true ) );
@@ -551,7 +548,7 @@ class Visualizer_Module_Chart extends Visualizer_Module {
551
  * @access public
552
  */
553
  public function exportData() {
554
- check_ajax_referer(Visualizer_Plugin::ACTION_EXPORT_DATA . Visualizer_Plugin::VERSION, "security");
555
 
556
  $chart_id = $success = false;
557
  $capable = current_user_can( 'edit_posts' );
@@ -564,55 +561,66 @@ class Visualizer_Module_Chart extends Visualizer_Module {
564
  }
565
 
566
  if ( $success ) {
567
- $settings = get_post_meta($chart_id, Visualizer_Plugin::CF_SETTINGS, true);
568
- $filename = $settings["title"];
569
- if (empty($filename)) {
570
- $filename = "export.csv";
571
- } else {
572
- $filename .= ".csv";
573
- }
574
- $rows = array();
575
- $series = get_post_meta($chart_id, Visualizer_Plugin::CF_SERIES, true);
576
- $data = unserialize($chart->post_content);
577
- if (!empty($series)) {
578
- $row = array();
579
- foreach ($series as $array) {
580
- $row[] = $array["label"];
581
- }
582
- $rows[] = $row;
583
-
584
- $row = array();
585
- foreach ($series as $array) {
586
- $row[] = $array["type"];
587
- }
588
- $rows[] = $row;
589
- }
590
-
591
- if (!empty($data)) {
592
- foreach ($data as $array) {
593
- $rows[] = $array;
594
- }
595
- }
596
-
597
- $fp = tmpfile();
598
- foreach ($rows as $row) {
599
- fputcsv($fp, $row);
600
- }
601
- rewind($fp);
602
-
603
- $csv = "";
604
- while (($array = fgetcsv($fp)) !== FALSE) {
605
- if (strlen($csv) > 0) $csv .= PHP_EOL;
606
- $csv .= implode(",", $array);
607
- }
608
- fclose($fp);
609
-
610
- echo wp_send_json_success(array(
611
- "csv" => $csv,
612
- "name" => $filename
613
- ));
 
 
 
 
 
 
 
 
 
 
 
614
  }
615
 
616
  exit;
617
  }
618
- }
19
  // +----------------------------------------------------------------------+
20
  // | Author: Eugene Manuilov <eugene@manuilov.org> |
21
  // +----------------------------------------------------------------------+
 
22
  /**
23
  * The module for all stuff related to getting, editing, creating and deleting charts.
24
  *
59
  $this->_addAjaxAction( Visualizer_Plugin::ACTION_UPLOAD_DATA, 'uploadData' );
60
  $this->_addAjaxAction( Visualizer_Plugin::ACTION_CLONE_CHART, 'cloneChart' );
61
 
62
+ // Added by Ash/Upwork
63
  $this->_addAjaxAction( Visualizer_Plugin::ACTION_EXPORT_DATA, 'exportData' );
64
+ if ( defined( 'Visualizer_Pro' ) ) {
65
+ global $Visualizer_Pro;
66
+ list($action, $name, $class) = $Visualizer_Pro->_getAjaxAction( $this );
67
+ $this->_addAjaxAction( $action, $name, $class );
68
+ }
69
+ // Added by Ash/Upwork
 
70
  }
71
 
72
  /**
126
  'options' => array(
127
  'min_range' => 1,
128
  'default' => 1,
129
+ ),
130
+ ) ),
131
  );
132
 
133
  $filter = filter_input( INPUT_GET, 'filter', FILTER_SANITIZE_STRING );
144
  $query = new WP_Query( $query_args );
145
 
146
  $charts = array();
147
+ while ( $query->have_posts() ) {
148
  $chart = $query->next_post();
149
 
150
  $chart_data = $this->_getChartArray( $chart );
204
  * @access public
205
  */
206
  public function renderChartPages() {
207
+ define( 'IFRAME_REQUEST', 1 );
208
 
209
  // check chart, if chart not exists, will create new one and redirects to the same page with proper chart id
210
  $chart_id = filter_input( INPUT_GET, 'chart', FILTER_VALIDATE_INT );
211
+ if ( ! $chart_id || ! ( $chart = get_post( $chart_id ) ) || $chart->post_type != Visualizer_Plugin::CPT_VISUALIZER ) {
212
  $default_type = 'line';
213
 
214
  $source = new Visualizer_Source_Csv( VISUALIZER_ABSPATH . DIRECTORY_SEPARATOR . 'samples' . DIRECTORY_SEPARATOR . $default_type . '.csv' );
222
  'post_content' => $source->getData(),
223
  ) );
224
 
225
+ if ( $chart_id && ! is_wp_error( $chart_id ) ) {
226
  add_post_meta( $chart_id, Visualizer_Plugin::CF_CHART_TYPE, $default_type );
227
  add_post_meta( $chart_id, Visualizer_Plugin::CF_DEFAULT_DATA, 1 );
228
  add_post_meta( $chart_id, Visualizer_Plugin::CF_SOURCE, $source->getSourceName() );
229
  add_post_meta( $chart_id, Visualizer_Plugin::CF_SERIES, $source->getSeries() );
230
+ add_post_meta( $chart_id, Visualizer_Plugin::CF_SETTINGS, array( 'focusTarget' => 'datum' ) );
231
  }
232
 
233
+ wp_redirect( add_query_arg( 'chart', (int) $chart_id ) );
234
  exit;
235
  }
236
 
239
 
240
  wp_register_script( 'visualizer-frame', VISUALIZER_ABSURL . 'js/frame.js', array( 'jquery' ), Visualizer_Plugin::VERSION, true );
241
  wp_register_script( 'google-jsapi-new', '//www.gstatic.com/charts/loader.js', array(), null, true );
242
+ wp_register_script( 'google-jsapi-old', '//www.google.com/jsapi', array( 'google-jsapi-new' ), null, true );
243
  wp_register_script( 'visualizer-render', VISUALIZER_ABSURL . 'js/render.js', array( 'google-jsapi-old', 'google-jsapi-new', 'visualizer-frame' ), Visualizer_Plugin::VERSION, true );
244
  wp_register_script( 'visualizer-preview', VISUALIZER_ABSURL . 'js/preview.js', array( 'wp-color-picker', 'visualizer-render' ), Visualizer_Plugin::VERSION, true );
245
 
246
+ // added by Ash/Upwork
247
+ if ( defined( 'Visualizer_Pro' ) ) {
248
+ global $Visualizer_Pro;
249
+ $Visualizer_Pro->_addScriptsAndStyles();
250
+ }
251
 
252
  // dispatch pages
253
  $this->_chart = $chart;
254
  switch ( filter_input( INPUT_GET, 'tab' ) ) {
255
  case 'settings':
256
+ // changed by Ash/Upwork
257
  $this->_handleDataAndSettingsPage();
258
  break;
259
  case 'type':
293
 
294
  // redirect to next tab
295
  // changed by Ash/Upwork
296
+ wp_redirect( add_query_arg( 'tab', 'settings' ) );
297
  return;
298
  }
299
  }
306
  wp_enqueue_style( 'visualizer-frame' );
307
  wp_enqueue_script( 'visualizer-frame' );
308
 
309
+ wp_iframe( array( $render, 'render' ) );
310
  }
311
 
312
  /**
329
  wp_enqueue_script( 'visualizer-render' );
330
  wp_localize_script( 'visualizer-render', 'visualizer', array(
331
  'l10n' => array(
332
+ 'remotecsv_prompt' => esc_html__( 'Please, enter the URL of CSV file:', 'visualizer' ),
333
+ 'invalid_source' => esc_html__( 'You have entered invalid URL. Please, insert proper URL.', 'visualizer' ),
334
  ),
335
  'charts' => array(
336
  'canvas' => $data,
337
  ),
338
  ) );
339
 
340
+ // Added by Ash/Upwork
341
+ if ( defined( 'Visualizer_Pro' ) ) {
342
+ global $Visualizer_Pro;
343
+ $Visualizer_Pro->_enqueueScriptsAndStyles( $data );
344
+ }
345
+ // Added by Ash/Upwork
 
346
  $this->_addAction( 'admin_head', 'renderFlattrScript' );
347
 
348
+ wp_iframe( array( $render, 'render' ) );
349
  }
350
 
351
+ /**
352
+ * Handle data and settings page
353
+ */
354
+ private function _handleDataAndSettingsPage() {
355
  if ( $_SERVER['REQUEST_METHOD'] == 'POST' && wp_verify_nonce( filter_input( INPUT_GET, 'nonce' ) ) ) {
356
  if ( $this->_chart->post_status == 'auto-draft' ) {
357
  $this->_chart->post_status = 'publish';
363
  $render = new Visualizer_Render_Page_Send();
364
  $render->text = sprintf( '[visualizer id="%d"]', $this->_chart->ID );
365
 
366
+ wp_iframe( array( $render, 'render' ) );
367
  return;
368
  }
369
 
376
  $sidebar->__series = $data['series'];
377
  $sidebar->__data = $data['data'];
378
  } else {
379
+ $sidebar = apply_filters( 'visualizer_pro_chart_type_sidebar', '', $data );
380
+ if ( $sidebar != '' ) {
381
+ $sidebar->__series = $data['series'];
382
+ $sidebar->__data = $data['data'];
383
+ }
384
+ }
385
 
386
  unset( $data['settings']['width'], $data['settings']['height'] );
387
 
393
  wp_enqueue_script( 'visualizer-render' );
394
  wp_localize_script( 'visualizer-render', 'visualizer', array(
395
  'l10n' => array(
396
+ 'remotecsv_prompt' => esc_html__( 'Please, enter the URL of CSV file:', 'visualizer' ),
397
+ 'invalid_source' => esc_html__( 'You have entered invalid URL. Please, insert proper URL.', 'visualizer' ),
398
  ),
399
  'charts' => array(
400
  'canvas' => $data,
408
  $render->sidebar = $sidebar;
409
  if ( filter_input( INPUT_GET, 'library', FILTER_VALIDATE_BOOLEAN ) ) {
410
  $render->button = filter_input( INPUT_GET, 'action' ) == Visualizer_Plugin::ACTION_EDIT_CHART
411
+ ? esc_html__( 'Save Chart', 'visualizer' )
412
+ : esc_html__( 'Create Chart', 'visualizer' );
413
  } else {
414
+ $render->button = esc_attr__( 'Insert Chart', 'visualizer' );
415
  }
416
 
417
+ if ( defined( 'Visualizer_Pro' ) ) {
418
+ global $Visualizer_Pro;
419
+ $Visualizer_Pro->_enqueueScriptsAndStyles( $data );
420
+ }
421
 
422
  $this->_addAction( 'admin_head', 'renderFlattrScript' );
423
 
424
+ wp_iframe( array( $render, 'render' ) );
425
+ }
426
+ // changed by Ash/Upwork
 
427
  /**
428
  * Renders flattr script in the iframe <head>
429
  *
433
  * @access public
434
  */
435
  public function renderFlattrScript() {
436
+ echo '';
437
  }
438
 
439
  /**
445
  */
446
  public function uploadData() {
447
  // validate nonce
448
+ if ( ! wp_verify_nonce( filter_input( INPUT_GET, 'nonce' ) ) ) {
449
  status_header( 403 );
450
  exit;
451
  }
452
 
453
  // check chart, if chart exists
454
  $chart_id = filter_input( INPUT_GET, 'chart', FILTER_VALIDATE_INT );
455
+ if ( ! $chart_id || ! ( $chart = get_post( $chart_id ) ) || $chart->post_type != Visualizer_Plugin::CPT_VISUALIZER ) {
456
  status_header( 400 );
457
  exit;
458
  }
460
  $source = null;
461
  $render = new Visualizer_Render_Page_Update();
462
  if ( filter_input( INPUT_POST, 'remote_data', FILTER_VALIDATE_URL ) ) {
463
+ $source = new Visualizer_Source_Csv_Remote( $_POST['remote_data'] );
464
  } elseif ( isset( $_FILES['local_data'] ) && $_FILES['local_data']['error'] == 0 ) {
465
+ $source = new Visualizer_Source_Csv( $_FILES['local_data']['tmp_name'] );
 
 
 
 
 
 
466
 
467
+ // Added by Ash/Upwork
468
+ } elseif ( defined( 'Visualizer_Pro' ) && isset( $_POST['chart_data'] ) && strlen( $_POST['chart_data'] ) > 0 ) {
469
+ global $Visualizer_Pro;
470
+ $source = $Visualizer_Pro->_handleChartData( $_POST['chart_data'] );
471
+ // Added by Ash/Upwork
472
+ } else {
473
+ $render->message = esc_html__( 'CSV file with chart data was not uploaded. Please, try again.', 'visualizer' );
474
  }
475
 
476
  if ( $source ) {
485
  $render->data = json_encode( $source->getRawData() );
486
  $render->series = json_encode( $source->getSeries() );
487
  } else {
488
+ $render->message = esc_html__( 'CSV file is broken or invalid. Please, try again.', 'visualizer' );
489
  }
490
  }
491
 
522
  'post_content' => $chart->post_content,
523
  ) );
524
 
525
+ if ( $new_chart_id && ! is_wp_error( $new_chart_id ) ) {
526
  add_post_meta( $new_chart_id, Visualizer_Plugin::CF_CHART_TYPE, get_post_meta( $chart_id, Visualizer_Plugin::CF_CHART_TYPE, true ) );
527
  add_post_meta( $new_chart_id, Visualizer_Plugin::CF_DEFAULT_DATA, get_post_meta( $chart_id, Visualizer_Plugin::CF_DEFAULT_DATA, true ) );
528
  add_post_meta( $new_chart_id, Visualizer_Plugin::CF_SOURCE, get_post_meta( $chart_id, Visualizer_Plugin::CF_SOURCE, true ) );
548
  * @access public
549
  */
550
  public function exportData() {
551
+ check_ajax_referer( Visualizer_Plugin::ACTION_EXPORT_DATA . Visualizer_Plugin::VERSION, 'security' );
552
 
553
  $chart_id = $success = false;
554
  $capable = current_user_can( 'edit_posts' );
561
  }
562
 
563
  if ( $success ) {
564
+ $settings = get_post_meta( $chart_id, Visualizer_Plugin::CF_SETTINGS, true );
565
+ $filename = $settings['title'];
566
+ if ( empty( $filename ) ) {
567
+ $filename = 'export.csv';
568
+ } else {
569
+ $filename .= '.csv';
570
+ }
571
+ $rows = array();
572
+ $series = get_post_meta( $chart_id, Visualizer_Plugin::CF_SERIES, true );
573
+ $data = unserialize( $chart->post_content );
574
+ if ( ! empty( $series ) ) {
575
+ $row = array();
576
+ foreach ( $series as $array ) {
577
+ $row[] = $array['label'];
578
+ }
579
+ $rows[] = $row;
580
+
581
+ $row = array();
582
+ foreach ( $series as $array ) {
583
+ $row[] = $array['type'];
584
+ }
585
+ $rows[] = $row;
586
+ }
587
+
588
+ if ( ! empty( $data ) ) {
589
+ foreach ( $data as $array ) {
590
+ // ignore strings
591
+ if ( ! is_array( $array ) ) { continue; }
592
+
593
+ // if this is an array of arrays...
594
+ if ( is_array( $array[0] ) ) {
595
+ foreach ( $array as $arr ) {
596
+ $rows[] = $arr;
597
+ }
598
+ } else {
599
+ // just an array
600
+ $rows[] = $array;
601
+ }
602
+ }
603
+ }
604
+
605
+ $fp = tmpfile();
606
+ foreach ( $rows as $row ) {
607
+ fputcsv( $fp, $row );
608
+ }
609
+ rewind( $fp );
610
+
611
+ $csv = '';
612
+ while ( ($array = fgetcsv( $fp )) !== false ) {
613
+ if ( strlen( $csv ) > 0 ) { $csv .= PHP_EOL; }
614
+ $csv .= implode( ',', $array );
615
+ }
616
+ fclose( $fp );
617
+
618
+ echo wp_send_json_success(array(
619
+ 'csv' => $csv,
620
+ 'name' => $filename,
621
+ ));
622
  }
623
 
624
  exit;
625
  }
626
+ }
classes/Visualizer/Module/Frontend.php CHANGED
@@ -19,7 +19,6 @@
19
  // +----------------------------------------------------------------------+
20
  // | Author: Eugene Manuilov <eugene@manuilov.org> |
21
  // +----------------------------------------------------------------------+
22
-
23
  /**
24
  * Frontend module class.
25
  *
@@ -58,12 +57,12 @@ class Visualizer_Module_Frontend extends Visualizer_Module {
58
  $this->_addShortcode( 'visualizer', 'renderChart' );
59
 
60
  // add do_shortocde hook for widget_text filter
61
- if ( !has_filter( 'widget_text', 'do_shortcode' ) ) {
62
  add_filter( 'widget_text', 'do_shortcode' );
63
  }
64
 
65
  // add do_shortcode hook for term_description filter
66
- if ( !has_filter( 'term_description', 'do_shortcode' ) ) {
67
  add_filter( 'term_description', 'do_shortcode' );
68
  }
69
  }
@@ -78,7 +77,7 @@ class Visualizer_Module_Frontend extends Visualizer_Module {
78
  */
79
  public function enqueueScripts() {
80
  wp_register_script( 'visualizer-google-jsapi-new', '//www.gstatic.com/charts/loader.js', array(), null, true );
81
- wp_register_script( 'visualizer-google-jsapi-old', '//www.google.com/jsapi', array('visualizer-google-jsapi-new'), null, true );
82
  wp_register_script( 'visualizer-render', VISUALIZER_ABSURL . 'js/render.js', array( 'visualizer-google-jsapi-old', 'jquery' ), Visualizer_Plugin::VERSION, true );
83
  }
84
 
@@ -105,15 +104,15 @@ class Visualizer_Module_Frontend extends Visualizer_Module {
105
  ), $atts );
106
 
107
  // if empty id or chart does not exists, then return empty string
108
- if ( !$atts['id'] || !( $chart = get_post( $atts['id'] ) ) || $chart->post_type != Visualizer_Plugin::CPT_VISUALIZER ) {
109
  return '';
110
  }
111
 
112
  $id = 'visualizer-' . $atts['id'];
113
- $defaultClass = "visualizer-front";
114
  $class = apply_filters( Visualizer_Plugin::FILTER_CHART_WRAPPER_CLASS, $atts['class'], $atts['id'] );
115
- $class = $defaultClass . " " . $class;
116
- $class = !empty( $class ) ? ' class="' . trim($class) . '"' : '';
117
 
118
  $type = get_post_meta( $chart->ID, Visualizer_Plugin::CF_CHART_TYPE, true );
119
 
@@ -125,23 +124,23 @@ class Visualizer_Module_Frontend extends Visualizer_Module {
125
 
126
  // handle series filter hooks
127
  $series = apply_filters( Visualizer_Plugin::FILTER_GET_CHART_SERIES, get_post_meta( $chart->ID, Visualizer_Plugin::CF_SERIES, true ), $chart->ID, $type );
128
- if ( !empty( $atts['series'] ) ) {
129
  $series = apply_filters( $atts['series'], $series, $chart->ID, $type );
130
  }
131
  // handle settings filter hooks
132
  $settings = apply_filters( Visualizer_Plugin::FILTER_GET_CHART_SETTINGS, $settings, $chart->ID, $type );
133
- if ( !empty( $atts['settings'] ) ) {
134
  $settings = apply_filters( $atts['settings'], $settings, $chart->ID, $type );
135
  }
136
 
137
  // handle data filter hooks
138
  $data = apply_filters( Visualizer_Plugin::FILTER_GET_CHART_DATA, unserialize( $chart->post_content ), $chart->ID, $type );
139
- if ( !empty( $atts['data'] ) ) {
140
  $data = apply_filters( $atts['data'], $data, $chart->ID, $type );
141
  }
142
 
143
  // add chart to the array
144
- $this->_charts[$id] = array(
145
  'type' => $type,
146
  'series' => $series,
147
  'settings' => $settings,
@@ -156,4 +155,4 @@ class Visualizer_Module_Frontend extends Visualizer_Module {
156
  return '<div id="' . $id . '"' . $class . '></div>';
157
  }
158
 
159
- }
19
  // +----------------------------------------------------------------------+
20
  // | Author: Eugene Manuilov <eugene@manuilov.org> |
21
  // +----------------------------------------------------------------------+
 
22
  /**
23
  * Frontend module class.
24
  *
57
  $this->_addShortcode( 'visualizer', 'renderChart' );
58
 
59
  // add do_shortocde hook for widget_text filter
60
+ if ( ! has_filter( 'widget_text', 'do_shortcode' ) ) {
61
  add_filter( 'widget_text', 'do_shortcode' );
62
  }
63
 
64
  // add do_shortcode hook for term_description filter
65
+ if ( ! has_filter( 'term_description', 'do_shortcode' ) ) {
66
  add_filter( 'term_description', 'do_shortcode' );
67
  }
68
  }
77
  */
78
  public function enqueueScripts() {
79
  wp_register_script( 'visualizer-google-jsapi-new', '//www.gstatic.com/charts/loader.js', array(), null, true );
80
+ wp_register_script( 'visualizer-google-jsapi-old', '//www.google.com/jsapi', array( 'visualizer-google-jsapi-new' ), null, true );
81
  wp_register_script( 'visualizer-render', VISUALIZER_ABSURL . 'js/render.js', array( 'visualizer-google-jsapi-old', 'jquery' ), Visualizer_Plugin::VERSION, true );
82
  }
83
 
104
  ), $atts );
105
 
106
  // if empty id or chart does not exists, then return empty string
107
+ if ( ! $atts['id'] || ! ( $chart = get_post( $atts['id'] ) ) || $chart->post_type != Visualizer_Plugin::CPT_VISUALIZER ) {
108
  return '';
109
  }
110
 
111
  $id = 'visualizer-' . $atts['id'];
112
+ $defaultClass = 'visualizer-front';
113
  $class = apply_filters( Visualizer_Plugin::FILTER_CHART_WRAPPER_CLASS, $atts['class'], $atts['id'] );
114
+ $class = $defaultClass . ' ' . $class;
115
+ $class = ! empty( $class ) ? ' class="' . trim( $class ) . '"' : '';
116
 
117
  $type = get_post_meta( $chart->ID, Visualizer_Plugin::CF_CHART_TYPE, true );
118
 
124
 
125
  // handle series filter hooks
126
  $series = apply_filters( Visualizer_Plugin::FILTER_GET_CHART_SERIES, get_post_meta( $chart->ID, Visualizer_Plugin::CF_SERIES, true ), $chart->ID, $type );
127
+ if ( ! empty( $atts['series'] ) ) {
128
  $series = apply_filters( $atts['series'], $series, $chart->ID, $type );
129
  }
130
  // handle settings filter hooks
131
  $settings = apply_filters( Visualizer_Plugin::FILTER_GET_CHART_SETTINGS, $settings, $chart->ID, $type );
132
+ if ( ! empty( $atts['settings'] ) ) {
133
  $settings = apply_filters( $atts['settings'], $settings, $chart->ID, $type );
134
  }
135
 
136
  // handle data filter hooks
137
  $data = apply_filters( Visualizer_Plugin::FILTER_GET_CHART_DATA, unserialize( $chart->post_content ), $chart->ID, $type );
138
+ if ( ! empty( $atts['data'] ) ) {
139
  $data = apply_filters( $atts['data'], $data, $chart->ID, $type );
140
  }
141
 
142
  // add chart to the array
143
+ $this->_charts[ $id ] = array(
144
  'type' => $type,
145
  'series' => $series,
146
  'settings' => $settings,
155
  return '<div id="' . $id . '"' . $class . '></div>';
156
  }
157
 
158
+ }
classes/Visualizer/Module/Setup.php CHANGED
@@ -19,7 +19,6 @@
19
  // +----------------------------------------------------------------------+
20
  // | Author: Eugene Manuilov <eugene@manuilov.org> |
21
  // +----------------------------------------------------------------------+
22
-
23
  /**
24
  * General module what setups all required environment.
25
  *
@@ -74,4 +73,4 @@ class Visualizer_Module_Setup extends Visualizer_Module {
74
  load_plugin_textdomain( Visualizer_Plugin::NAME, false, dirname( plugin_basename( VISUALIZER_BASEFILE ) ) . '/languages/' );
75
  }
76
 
77
- }
19
  // +----------------------------------------------------------------------+
20
  // | Author: Eugene Manuilov <eugene@manuilov.org> |
21
  // +----------------------------------------------------------------------+
 
22
  /**
23
  * General module what setups all required environment.
24
  *
73
  load_plugin_textdomain( Visualizer_Plugin::NAME, false, dirname( plugin_basename( VISUALIZER_BASEFILE ) ) . '/languages/' );
74
  }
75
 
76
+ }
classes/Visualizer/Module/Sources.php CHANGED
@@ -19,7 +19,6 @@
19
  // +----------------------------------------------------------------------+
20
  // | Author: Eugene Manuilov <eugene@manuilov.org> |
21
  // +----------------------------------------------------------------------+
22
-
23
  /**
24
  * Sources module class.
25
  *
@@ -67,16 +66,16 @@ class Visualizer_Module_Sources extends Visualizer_Module {
67
  * @return Visualizer_Source The source object if source exists, otherwise FALSE.
68
  */
69
  private function _getSource( $chart_id ) {
70
- if ( !isset( $this->_sources[$chart_id] ) ) {
71
  $class = get_post_meta( $chart_id, Visualizer_Plugin::CF_SOURCE, true );
72
- if ( !class_exists( $class, true ) ) {
73
  return false;
74
  }
75
 
76
- $this->_sources[$chart_id] = new $class();
77
  }
78
 
79
- return $this->_sources[$chart_id];
80
  }
81
 
82
  /**
@@ -86,12 +85,12 @@ class Visualizer_Module_Sources extends Visualizer_Module {
86
  *
87
  * @access public
88
  * @param array $series The array of chart series.
89
- * @param int $chart_id The chart id.
90
  * @return array The array of filtered series.
91
  */
92
  public function filterChartSeries( $series, $chart_id ) {
93
  $source = $this->_getSource( $chart_id );
94
- if ( !$source ) {
95
  return $series;
96
  }
97
 
@@ -105,16 +104,16 @@ class Visualizer_Module_Sources extends Visualizer_Module {
105
  *
106
  * @access public
107
  * @param array $data The array of chart data.
108
- * @param int $chart_id The chart id.
109
  * @return array The array of filtered data.
110
  */
111
  public function filterChartData( $data, $chart_id ) {
112
  $source = $this->_getSource( $chart_id );
113
- if ( !$source ) {
114
  return $data;
115
  }
116
 
117
  return $source->repopulateData( $data, $chart_id );
118
  }
119
 
120
- }
19
  // +----------------------------------------------------------------------+
20
  // | Author: Eugene Manuilov <eugene@manuilov.org> |
21
  // +----------------------------------------------------------------------+
 
22
  /**
23
  * Sources module class.
24
  *
66
  * @return Visualizer_Source The source object if source exists, otherwise FALSE.
67
  */
68
  private function _getSource( $chart_id ) {
69
+ if ( ! isset( $this->_sources[ $chart_id ] ) ) {
70
  $class = get_post_meta( $chart_id, Visualizer_Plugin::CF_SOURCE, true );
71
+ if ( ! class_exists( $class, true ) ) {
72
  return false;
73
  }
74
 
75
+ $this->_sources[ $chart_id ] = new $class();
76
  }
77
 
78
+ return $this->_sources[ $chart_id ];
79
  }
80
 
81
  /**
85
  *
86
  * @access public
87
  * @param array $series The array of chart series.
88
+ * @param int $chart_id The chart id.
89
  * @return array The array of filtered series.
90
  */
91
  public function filterChartSeries( $series, $chart_id ) {
92
  $source = $this->_getSource( $chart_id );
93
+ if ( ! $source ) {
94
  return $series;
95
  }
96
 
104
  *
105
  * @access public
106
  * @param array $data The array of chart data.
107
+ * @param int $chart_id The chart id.
108
  * @return array The array of filtered data.
109
  */
110
  public function filterChartData( $data, $chart_id ) {
111
  $source = $this->_getSource( $chart_id );
112
+ if ( ! $source ) {
113
  return $data;
114
  }
115
 
116
  return $source->repopulateData( $data, $chart_id );
117
  }
118
 
119
+ }
classes/Visualizer/Plugin.php CHANGED
@@ -19,7 +19,6 @@
19
  // +----------------------------------------------------------------------+
20
  // | Author: Eugene Manuilov <eugene@manuilov.org> |
21
  // +----------------------------------------------------------------------+
22
-
23
  /**
24
  * The core plugin class.
25
  *
@@ -30,7 +29,7 @@
30
  class Visualizer_Plugin {
31
 
32
  const NAME = 'visualizer';
33
- const VERSION = '1.6.6';
34
 
35
  // custom post types
36
  const CPT_VISUALIZER = 'visualizer';
@@ -49,7 +48,7 @@ class Visualizer_Plugin {
49
  const ACTION_CLONE_CHART = 'visualizer-clone-chart';
50
  const ACTION_DELETE_CHART = 'visualizer-delete-chart';
51
  const ACTION_UPLOAD_DATA = 'visualizer-upload-data';
52
- // Added by Ash/Upwork
53
  const ACTION_EXPORT_DATA = 'visualizer-export-data';
54
 
55
  // custom filters
@@ -58,11 +57,10 @@ class Visualizer_Plugin {
58
  const FILTER_GET_CHART_DATA = 'visualizer-get-chart-data';
59
  const FILTER_GET_CHART_SETTINGS = 'visualizer-get-chart-settings';
60
 
61
- // Added by Ash/Upwork
62
- const PRO_TEASER_URL = "http://themeisle.com/plugins/visualizer-charts-and-graphs-pro-addon/";
63
- const PRO_TEASER_TITLE = "Check PRO version ";
64
- // Added by Ash/Upwork
65
-
66
  /**
67
  * Singletone instance of the plugin.
68
  *
@@ -128,7 +126,7 @@ class Visualizer_Plugin {
128
  * @return Visualizer_Module|null Returns a module if it was registered or NULL.
129
  */
130
  public function getModule( $name ) {
131
- return isset( $this->_modules[$name] ) ? $this->_modules[$name] : null;
132
  }
133
 
134
  /**
@@ -141,7 +139,7 @@ class Visualizer_Plugin {
141
  * @return boolean TRUE if the module has been registered. Otherwise FALSE.
142
  */
143
  public function hasModule( $name ) {
144
- return isset( $this->_modules[$name] );
145
  }
146
 
147
  /**
@@ -150,10 +148,10 @@ class Visualizer_Plugin {
150
  * @since 1.0.0
151
  *
152
  * @access public
153
- * @param string $module The name of the module to use in the plugin.
154
  */
155
  public function setModule( $class ) {
156
- $this->_modules[$class] = new $class( $this );
157
  }
158
 
159
  /**
@@ -166,9 +164,9 @@ class Visualizer_Plugin {
166
  * @return array
167
  */
168
  public static function getChartTypes() {
169
- $array = array_keys(Visualizer_Module_Admin::_getChartTypesLocalized());
170
- unset($array[0]); // all
171
- return $array;
172
  }
173
 
174
- }
19
  // +----------------------------------------------------------------------+
20
  // | Author: Eugene Manuilov <eugene@manuilov.org> |
21
  // +----------------------------------------------------------------------+
 
22
  /**
23
  * The core plugin class.
24
  *
29
  class Visualizer_Plugin {
30
 
31
  const NAME = 'visualizer';
32
+ const VERSION = '1.7.0';
33
 
34
  // custom post types
35
  const CPT_VISUALIZER = 'visualizer';
48
  const ACTION_CLONE_CHART = 'visualizer-clone-chart';
49
  const ACTION_DELETE_CHART = 'visualizer-delete-chart';
50
  const ACTION_UPLOAD_DATA = 'visualizer-upload-data';
51
+ // Added by Ash/Upwork
52
  const ACTION_EXPORT_DATA = 'visualizer-export-data';
53
 
54
  // custom filters
57
  const FILTER_GET_CHART_DATA = 'visualizer-get-chart-data';
58
  const FILTER_GET_CHART_SETTINGS = 'visualizer-get-chart-settings';
59
 
60
+ // Added by Ash/Upwork
61
+ const PRO_TEASER_URL = 'http://themeisle.com/plugins/visualizer-charts-and-graphs-pro-addon/';
62
+ const PRO_TEASER_TITLE = 'Check PRO version ';
63
+ // Added by Ash/Upwork
 
64
  /**
65
  * Singletone instance of the plugin.
66
  *
126
  * @return Visualizer_Module|null Returns a module if it was registered or NULL.
127
  */
128
  public function getModule( $name ) {
129
+ return isset( $this->_modules[ $name ] ) ? $this->_modules[ $name ] : null;
130
  }
131
 
132
  /**
139
  * @return boolean TRUE if the module has been registered. Otherwise FALSE.
140
  */
141
  public function hasModule( $name ) {
142
+ return isset( $this->_modules[ $name ] );
143
  }
144
 
145
  /**
148
  * @since 1.0.0
149
  *
150
  * @access public
151
+ * @param string $class The name of the module to use in the plugin.
152
  */
153
  public function setModule( $class ) {
154
+ $this->_modules[ $class ] = new $class( $this );
155
  }
156
 
157
  /**
164
  * @return array
165
  */
166
  public static function getChartTypes() {
167
+ $array = array_keys( Visualizer_Module_Admin::_getChartTypesLocalized() );
168
+ unset( $array[0] ); // all
169
+ return $array;
170
  }
171
 
172
+ }
classes/Visualizer/Render.php CHANGED
@@ -19,7 +19,6 @@
19
  // +----------------------------------------------------------------------+
20
  // | Author: Eugene Manuilov <eugene@manuilov.org> |
21
  // +----------------------------------------------------------------------+
22
-
23
  /**
24
  * Abstract render class implements all routine stuff required for template
25
  * rendering.
@@ -64,7 +63,7 @@ abstract class Visualizer_Render {
64
  * @return mixed Returns mixed value of a property or NULL if a property doesn't exist.
65
  */
66
  public function __get( $name ) {
67
- return array_key_exists( $name, $this->_data ) ? $this->_data[$name] : null;
68
  }
69
 
70
  /**
@@ -73,7 +72,7 @@ abstract class Visualizer_Render {
73
  * @since 1.0.0
74
  *
75
  * @access public
76
- * @param string $name
77
  * @return boolean TRUE if the property exists, otherwise FALSE.
78
  */
79
  public function __isset( $name ) {
@@ -87,10 +86,10 @@ abstract class Visualizer_Render {
87
  *
88
  * @access public
89
  * @param string $name The name of a property to associate.
90
- * @param mixed $value The value of a property.
91
  */
92
  public function __set( $name, $value ) {
93
- $this->_data[$name] = $value;
94
  }
95
 
96
  /**
@@ -102,7 +101,7 @@ abstract class Visualizer_Render {
102
  * @param string $name The name of the property to unassociate.
103
  */
104
  public function __unset( $name ) {
105
- unset( $this->_data[$name] );
106
  }
107
 
108
  /**
@@ -152,4 +151,4 @@ abstract class Visualizer_Render {
152
  $this->_toHTML();
153
  }
154
 
155
- }
19
  // +----------------------------------------------------------------------+
20
  // | Author: Eugene Manuilov <eugene@manuilov.org> |
21
  // +----------------------------------------------------------------------+
 
22
  /**
23
  * Abstract render class implements all routine stuff required for template
24
  * rendering.
63
  * @return mixed Returns mixed value of a property or NULL if a property doesn't exist.
64
  */
65
  public function __get( $name ) {
66
+ return array_key_exists( $name, $this->_data ) ? $this->_data[ $name ] : null;
67
  }
68
 
69
  /**
72
  * @since 1.0.0
73
  *
74
  * @access public
75
+ * @param string $name The key name.
76
  * @return boolean TRUE if the property exists, otherwise FALSE.
77
  */
78
  public function __isset( $name ) {
86
  *
87
  * @access public
88
  * @param string $name The name of a property to associate.
89
+ * @param mixed $value The value of a property.
90
  */
91
  public function __set( $name, $value ) {
92
+ $this->_data[ $name ] = $value;
93
  }
94
 
95
  /**
101
  * @param string $name The name of the property to unassociate.
102
  */
103
  public function __unset( $name ) {
104
+ unset( $this->_data[ $name ] );
105
  }
106
 
107
  /**
151
  $this->_toHTML();
152
  }
153
 
154
+ }
classes/Visualizer/Render/Library.php CHANGED
@@ -19,7 +19,6 @@
19
  // +----------------------------------------------------------------------+
20
  // | Author: Eugene Manuilov <eugene@manuilov.org> |
21
  // +----------------------------------------------------------------------+
22
-
23
  /**
24
  * Renders visualizer library page.
25
  *
@@ -37,7 +36,7 @@ class Visualizer_Render_Library extends Visualizer_Render {
37
  *
38
  * @access private
39
  * @param string $placeholder_id The placeholder's id for the chart.
40
- * @param int $chart_id The id of the chart.
41
  */
42
  private function _renderChartBox( $placeholder_id, $chart_id ) {
43
  $ajax_url = admin_url( 'admin-ajax.php' );
@@ -55,23 +54,23 @@ class Visualizer_Render_Library extends Visualizer_Render {
55
  'type' => $this->type,
56
  ), $ajax_url );
57
 
58
- $export_link = add_query_arg( array(
59
- 'action' => Visualizer_Plugin::ACTION_EXPORT_DATA,
60
- 'chart' => $chart_id,
61
- 'security' => wp_create_nonce(Visualizer_Plugin::ACTION_EXPORT_DATA . Visualizer_Plugin::VERSION),
62
- ), admin_url( 'admin-ajax.php' ) );
63
 
64
  echo '<div class="visualizer-chart">';
65
  echo '<div id="', $placeholder_id, '" class="visualizer-chart-canvas">';
66
  echo '<img src="', VISUALIZER_ABSURL, 'images/ajax-loader.gif" class="loader">';
67
  echo '</div>';
68
  echo '<div class="visualizer-chart-footer visualizer-clearfix">';
69
- echo '<a class="visualizer-chart-action visualizer-chart-delete" href="', $delete_url, '" title="', esc_attr__( 'Delete', Visualizer_Plugin::NAME ), '" onclick="return showNotice.warn();"></a>';
70
- echo '<a class="visualizer-chart-action visualizer-chart-clone" href="', $clone_url, '" title="', esc_attr__( 'Clone', Visualizer_Plugin::NAME ), '"></a>';
71
- echo '<a class="visualizer-chart-action visualizer-chart-edit" href="javascript:;" title="', esc_attr__( 'Edit', Visualizer_Plugin::NAME ), '" data-chart="', $chart_id, '"></a>';
72
- echo '<a class="visualizer-chart-action visualizer-chart-export" href="javascript:;" title="', esc_attr__( 'Export', Visualizer_Plugin::NAME ), '" data-chart="', $export_link, '"></a>';
73
 
74
- echo '<span class="visualizer-chart-shortcode" title="', esc_attr__( 'Click to select', Visualizer_Plugin::NAME ), '">';
75
  echo '&nbsp;[visualizer id=&quot;', $chart_id, '&quot;]&nbsp;';
76
  echo '</span>';
77
  echo '</div>';
@@ -86,55 +85,54 @@ class Visualizer_Render_Library extends Visualizer_Render {
86
  * @access private
87
  */
88
  private function _renderLibrary() {
89
- // Added by Ash/Upwork
90
- $filterBy = null;
91
- if(isset($_GET["filter"]) && strlen($_GET["filter"]) > 0){
92
- $filterBy = filter_input( INPUT_GET, "filter", FILTER_SANITIZE_STRING );
93
- }
94
- echo '<div id="visualizer-search"><form action="" method="get">
95
  <input type="text" name="filter" value="' . $filterBy . '">
96
  <input type="hidden" name="page" value="visualizer">
97
- <input type="submit" class="button button-secondary" value="' . esc_attr__('Search', Visualizer_Plugin::NAME) . '">
98
  </form></div>';
99
- // Added by Ash/Upwork
100
-
101
  echo '<div id="visualizer-types" class="visualizer-clearfix">';
102
  echo '<ul>';
103
- foreach ( $this->types as $type => $label ) {
104
- echo '<li class="visualizer-list-item">';
105
- if ( $type == $this->type ) {
106
- echo '<a class="page-numbers current" href="', esc_url(add_query_arg( 'vpage', false )), '">';
107
- echo $label;
108
- echo '</a>';
109
- } else {
110
- echo '<a class="page-numbers" href="', esc_url(add_query_arg( array( 'type' => $type, 'vpage' => false ) )), '">';
111
- echo $label;
112
- echo '</a>';
113
- }
114
- echo '</li>';
115
- }
116
  echo '</ul>';
117
  echo '</div>';
118
 
119
- if ( !empty( $this->charts ) ) {
120
  echo '<div id="visualizer-library" class="visualizer-clearfix">';
121
- foreach ( $this->charts as $placeholder_id => $chart ) {
122
- $this->_renderChartBox( $placeholder_id, $chart['id'] );
123
- }
124
  echo '</div>';
125
 
126
  if ( is_array( $this->pagination ) ) {
127
  echo '<ul class="visualizer-library-pagination">';
128
- foreach ( $this->pagination as $page ) {
129
- echo '<li class="visualizer-list-item">', $page, '</li>';
130
- }
131
  echo '</ul>';
132
  }
133
  } else {
134
  echo '<div id="visualizer-library" class="visualizer-clearfix">';
135
  echo '<div class="visualizer-chart">';
136
  echo '<div class="visualizer-chart-canvas visualizer-nochart-canvas">';
137
- echo '<div class="visualizer-notfound">', esc_html__( 'No charts found', Visualizer_Plugin::NAME ), '</div>';
138
  echo '</div>';
139
  echo '<div class="visualizer-chart-footer visualizer-clearfix">';
140
  echo '<span class="visualizer-chart-action visualizer-nochart-delete"></span>';
@@ -162,8 +160,8 @@ class Visualizer_Render_Library extends Visualizer_Render {
162
  echo '<div class="wrap">';
163
  echo '<div id="visualizer-icon" class="icon32"><br></div>';
164
  echo '<h2>';
165
- esc_html_e( 'Visualizer Library', Visualizer_Plugin::NAME );
166
- echo ' <a href="javascript:;" class="add-new-h2">', esc_html__( 'Add New', Visualizer_Plugin::NAME ), '</a>';
167
  echo '</h2>';
168
 
169
  $this->_renderMessages();
@@ -179,13 +177,13 @@ class Visualizer_Render_Library extends Visualizer_Render {
179
  * @access private
180
  */
181
  private function _renderMessages() {
182
- if ( !filter_var( ini_get( 'allow_url_fopen' ), FILTER_VALIDATE_BOOLEAN ) ) {
183
  echo '<div class="updated error">';
184
  echo '<p>';
185
- printf( esc_html__( '%s option is disabled in your php.ini config. Please, enable it by change its value to 1. This option increases the speed of remote CSV uploading.', Visualizer_Plugin::NAME ), '<b>allow_url_fopen</b>' );
186
  echo '</p>';
187
  echo '</div>';
188
  }
189
  }
190
 
191
- }
19
  // +----------------------------------------------------------------------+
20
  // | Author: Eugene Manuilov <eugene@manuilov.org> |
21
  // +----------------------------------------------------------------------+
 
22
  /**
23
  * Renders visualizer library page.
24
  *
36
  *
37
  * @access private
38
  * @param string $placeholder_id The placeholder's id for the chart.
39
+ * @param int $chart_id The id of the chart.
40
  */
41
  private function _renderChartBox( $placeholder_id, $chart_id ) {
42
  $ajax_url = admin_url( 'admin-ajax.php' );
54
  'type' => $this->type,
55
  ), $ajax_url );
56
 
57
+ $export_link = add_query_arg( array(
58
+ 'action' => Visualizer_Plugin::ACTION_EXPORT_DATA,
59
+ 'chart' => $chart_id,
60
+ 'security' => wp_create_nonce( Visualizer_Plugin::ACTION_EXPORT_DATA . Visualizer_Plugin::VERSION ),
61
+ ), admin_url( 'admin-ajax.php' ) );
62
 
63
  echo '<div class="visualizer-chart">';
64
  echo '<div id="', $placeholder_id, '" class="visualizer-chart-canvas">';
65
  echo '<img src="', VISUALIZER_ABSURL, 'images/ajax-loader.gif" class="loader">';
66
  echo '</div>';
67
  echo '<div class="visualizer-chart-footer visualizer-clearfix">';
68
+ echo '<a class="visualizer-chart-action visualizer-chart-delete" href="', $delete_url, '" title="', esc_attr__( 'Delete', 'visualizer' ), '" onclick="return showNotice.warn();"></a>';
69
+ echo '<a class="visualizer-chart-action visualizer-chart-clone" href="', $clone_url, '" title="', esc_attr__( 'Clone', 'visualizer' ), '"></a>';
70
+ echo '<a class="visualizer-chart-action visualizer-chart-edit" href="javascript:;" title="', esc_attr__( 'Edit', 'visualizer' ), '" data-chart="', $chart_id, '"></a>';
71
+ echo '<a class="visualizer-chart-action visualizer-chart-export" href="javascript:;" title="', esc_attr__( 'Export', 'visualizer' ), '" data-chart="', $export_link, '"></a>';
72
 
73
+ echo '<span class="visualizer-chart-shortcode" title="', esc_attr__( 'Click to select', 'visualizer' ), '">';
74
  echo '&nbsp;[visualizer id=&quot;', $chart_id, '&quot;]&nbsp;';
75
  echo '</span>';
76
  echo '</div>';
85
  * @access private
86
  */
87
  private function _renderLibrary() {
88
+ // Added by Ash/Upwork
89
+ $filterBy = null;
90
+ if ( isset( $_GET['filter'] ) && strlen( $_GET['filter'] ) > 0 ) {
91
+ $filterBy = filter_input( INPUT_GET, 'filter', FILTER_SANITIZE_STRING );
92
+ }
93
+ echo '<div id="visualizer-search"><form action="" method="get">
94
  <input type="text" name="filter" value="' . $filterBy . '">
95
  <input type="hidden" name="page" value="visualizer">
96
+ <input type="submit" class="button button-secondary" value="' . esc_attr__( 'Search', 'visualizer' ) . '">
97
  </form></div>';
98
+ // Added by Ash/Upwork
 
99
  echo '<div id="visualizer-types" class="visualizer-clearfix">';
100
  echo '<ul>';
101
+ foreach ( $this->types as $type => $label ) {
102
+ echo '<li class="visualizer-list-item">';
103
+ if ( $type == $this->type ) {
104
+ echo '<a class="page-numbers current" href="', esc_url( add_query_arg( 'vpage', false ) ), '">';
105
+ echo $label;
106
+ echo '</a>';
107
+ } else {
108
+ echo '<a class="page-numbers" href="', esc_url( add_query_arg( array( 'type' => $type, 'vpage' => false ) ) ), '">';
109
+ echo $label;
110
+ echo '</a>';
111
+ }
112
+ echo '</li>';
113
+ }
114
  echo '</ul>';
115
  echo '</div>';
116
 
117
+ if ( ! empty( $this->charts ) ) {
118
  echo '<div id="visualizer-library" class="visualizer-clearfix">';
119
+ foreach ( $this->charts as $placeholder_id => $chart ) {
120
+ $this->_renderChartBox( $placeholder_id, $chart['id'] );
121
+ }
122
  echo '</div>';
123
 
124
  if ( is_array( $this->pagination ) ) {
125
  echo '<ul class="visualizer-library-pagination">';
126
+ foreach ( $this->pagination as $page ) {
127
+ echo '<li class="visualizer-list-item">', $page, '</li>';
128
+ }
129
  echo '</ul>';
130
  }
131
  } else {
132
  echo '<div id="visualizer-library" class="visualizer-clearfix">';
133
  echo '<div class="visualizer-chart">';
134
  echo '<div class="visualizer-chart-canvas visualizer-nochart-canvas">';
135
+ echo '<div class="visualizer-notfound">', esc_html__( 'No charts found', 'visualizer' ), '</div>';
136
  echo '</div>';
137
  echo '<div class="visualizer-chart-footer visualizer-clearfix">';
138
  echo '<span class="visualizer-chart-action visualizer-nochart-delete"></span>';
160
  echo '<div class="wrap">';
161
  echo '<div id="visualizer-icon" class="icon32"><br></div>';
162
  echo '<h2>';
163
+ esc_html_e( 'Visualizer Library', 'visualizer' );
164
+ echo ' <a href="javascript:;" class="add-new-h2">', esc_html__( 'Add New', 'visualizer' ), '</a>';
165
  echo '</h2>';
166
 
167
  $this->_renderMessages();
177
  * @access private
178
  */
179
  private function _renderMessages() {
180
+ if ( ! filter_var( ini_get( 'allow_url_fopen' ), FILTER_VALIDATE_BOOLEAN ) ) {
181
  echo '<div class="updated error">';
182
  echo '<p>';
183
+ printf( esc_html__( '%s option is disabled in your php.ini config. Please, enable it by change its value to 1. This option increases the speed of remote CSV uploading.', 'visualizer' ), '<b>allow_url_fopen</b>' );
184
  echo '</p>';
185
  echo '</div>';
186
  }
187
  }
188
 
189
+ }
classes/Visualizer/Render/Page.php CHANGED
@@ -19,8 +19,6 @@
19
  // +----------------------------------------------------------------------+
20
  // | Author: Eugene Manuilov <eugene@manuilov.org> |
21
  // +----------------------------------------------------------------------+
22
-
23
-
24
  /**
25
  * Base class for all chart builder pages.
26
  *
@@ -71,10 +69,10 @@ class Visualizer_Render_Page extends Visualizer_Render {
71
  echo '</ul>';
72
 
73
  echo '<div id="rate-the-plugin">';
74
- echo '<div><b>', esc_html__( 'Like the plugin? Show us your love!', Visualizer_Plugin::NAME ), '</b></div>';
75
  echo '<div id="rate-stars">&nbsp;</div>';
76
  echo '<a id="rate-link" href="http://wordpress.org/support/view/plugin-reviews/visualizer" target="_blank">';
77
- esc_html_e( 'Rate it on WordPress.org', Visualizer_Plugin::NAME );
78
  echo '</a>';
79
  echo '</div>';
80
  echo '</div>';
@@ -98,4 +96,4 @@ class Visualizer_Render_Page extends Visualizer_Render {
98
  */
99
  protected function _renderToolbar() {}
100
 
101
- }
19
  // +----------------------------------------------------------------------+
20
  // | Author: Eugene Manuilov <eugene@manuilov.org> |
21
  // +----------------------------------------------------------------------+
 
 
22
  /**
23
  * Base class for all chart builder pages.
24
  *
69
  echo '</ul>';
70
 
71
  echo '<div id="rate-the-plugin">';
72
+ echo '<div><b>', esc_html__( 'Like the plugin? Show us your love!', 'visualizer' ), '</b></div>';
73
  echo '<div id="rate-stars">&nbsp;</div>';
74
  echo '<a id="rate-link" href="http://wordpress.org/support/view/plugin-reviews/visualizer" target="_blank">';
75
+ esc_html_e( 'Rate it on WordPress.org', 'visualizer' );
76
  echo '</a>';
77
  echo '</div>';
78
  echo '</div>';
96
  */
97
  protected function _renderToolbar() {}
98
 
99
+ }
classes/Visualizer/Render/Page/Data.php CHANGED
@@ -19,7 +19,6 @@
19
  // +----------------------------------------------------------------------+
20
  // | Author: Eugene Manuilov <eugene@manuilov.org> |
21
  // +----------------------------------------------------------------------+
22
-
23
  /**
24
  * Renders chart data setup page.
25
  *
@@ -39,14 +38,13 @@ class Visualizer_Render_Page_Data extends Visualizer_Render_Page {
39
  * @access protected
40
  */
41
  protected function _renderContent() {
42
- // Added by Ash/Upwork
43
- if( defined( 'Visualizer_Pro' ) ){
44
- global $Visualizer_Pro;
45
- $Visualizer_Pro->_addEditor();
46
- }
47
- // Added by Ash/Upwork
48
-
49
- echo '<div id="canvas">';
50
  echo '<img src="', VISUALIZER_ABSURL, 'images/ajax-loader.gif" class="loader">';
51
  echo '</div>';
52
  }
@@ -69,13 +67,13 @@ class Visualizer_Render_Page_Data extends Visualizer_Render_Page {
69
  echo '<div class="initial-screen">';
70
  echo '<iframe id="thehole" name="thehole"></iframe>';
71
  echo '<p class="group-description">';
72
- esc_html_e( "Select and upload your data CSV file here. The first row of the CSV file should contain the column headings. The second one should contain series type (string, number, boolean, date, datetime, timeofday).", Visualizer_Plugin::NAME );
73
  echo '</p>';
74
 
75
  echo '<p class="group-description">';
76
- esc_html_e( 'If you are unsure about how to format your data CSV then please take a look at this sample:', Visualizer_Plugin::NAME );
77
  echo ' <a href="', VISUALIZER_ABSURL, 'samples/', $this->type, '.csv" target="_blank">', $this->type, '.csv</a> ';
78
- printf( esc_html__( 'or read how you can add Google spreadsheet in following %sarticle%s.', Visualizer_Plugin::NAME ), '<a href="https://github.com/madpixelslabs/visualizer/wiki/How-can-I-populate-data-from-Google-Spreadsheet%3F" target="_blank">', '</a>' );
79
  echo '</p>';
80
 
81
  echo '<div>';
@@ -84,46 +82,45 @@ class Visualizer_Render_Page_Data extends Visualizer_Render_Page {
84
  echo '<div class="form-inline">';
85
  echo '<div class="button button-primary file-wrapper computer-btn">';
86
  echo '<input type="file" id="csv-file" class="file" name="local_data">';
87
- esc_attr_e( 'From Computer', Visualizer_Plugin::NAME );
88
  echo '</div>';
89
 
90
- echo '<a id="remote-file" class="button from-web from-web-btn" href="javascript:;">', esc_html__( 'From Web', Visualizer_Plugin::NAME ), '</a>';
91
- // Added by Ash/Upwork
92
- if( defined( 'Visualizer_Pro' ) ){
93
- global $Visualizer_Pro;
94
- $Visualizer_Pro->_addFormElements();
95
- }else{
96
- // Added by Ash/Upwork
97
- echo '<div class="just-on-pro"> </div>';
98
- }
99
  echo '</div>';
100
  echo '</form>';
101
 
102
- // added by Ash/Upwork
103
- if( defined( 'Visualizer_Pro' ) ){
104
- global $Visualizer_Pro;
105
- $Visualizer_Pro->_addEditorElements();
106
- }else{
107
  ?>
108
- <a href="<?php echo Visualizer_Plugin::PRO_TEASER_URL;?>" title="<?php echo Visualizer_Plugin::PRO_TEASER_TITLE;?>" class="check-pro-btn" target="_new">
109
- <input type="button" class="button preview preview-btn" id="existing-chart-free" value="<?php esc_attr_e( 'Check PRO Version ', Visualizer_Plugin::NAME );?>">
110
- </a>
111
  <?php
112
- }
113
-
114
- echo'<input type="button" name="advanced_button" class="advanced-settings-btn preview-btn" value="'. __( 'Advanced', Visualizer_Plugin::NAME ).' &raquo;">';
115
- // Added by Ash/Upwork
116
 
 
 
117
  echo '</div>';
118
  echo '</div>';
119
 
120
- // changed by Ash/Upwork
121
  echo '<div class= "second-screen hidden-setting">';
122
  echo '<form id="settings-form" action="', add_query_arg( 'nonce', wp_create_nonce() ), '" method="post">';
123
- echo $this->sidebar;
124
  echo '</form>';
125
  echo '</div>';
126
- // changed by Ash/Upwork
127
  }
128
 
129
  /**
@@ -134,16 +131,15 @@ class Visualizer_Render_Page_Data extends Visualizer_Render_Page {
134
  * @access protected
135
  */
136
  protected function _renderToolbar() {
137
- // changed by Ash/Upwork
138
- echo '<div class="toolbar-div">';
139
  echo '<a class="button button-large" href="', add_query_arg( 'tab', 'types' ), '">';
140
- esc_html_e( 'Back', Visualizer_Plugin::NAME );
141
  echo '</a>';
142
- echo '</div>';
143
  echo '<input type="submit" id="settings-button" class="button button-primary button-large push-right" value="', $this->button, '">';
144
 
145
- echo '</div>';
146
-
147
 
148
  }
149
 
19
  // +----------------------------------------------------------------------+
20
  // | Author: Eugene Manuilov <eugene@manuilov.org> |
21
  // +----------------------------------------------------------------------+
 
22
  /**
23
  * Renders chart data setup page.
24
  *
38
  * @access protected
39
  */
40
  protected function _renderContent() {
41
+ // Added by Ash/Upwork
42
+ if ( defined( 'Visualizer_Pro' ) ) {
43
+ global $Visualizer_Pro;
44
+ $Visualizer_Pro->_addEditor();
45
+ }
46
+ // Added by Ash/Upwork
47
+ echo '<div id="canvas">';
 
48
  echo '<img src="', VISUALIZER_ABSURL, 'images/ajax-loader.gif" class="loader">';
49
  echo '</div>';
50
  }
67
  echo '<div class="initial-screen">';
68
  echo '<iframe id="thehole" name="thehole"></iframe>';
69
  echo '<p class="group-description">';
70
+ esc_html_e( 'Select and upload your data CSV file here. The first row of the CSV file should contain the column headings. The second one should contain series type (string, number, boolean, date, datetime, timeofday).', 'visualizer' );
71
  echo '</p>';
72
 
73
  echo '<p class="group-description">';
74
+ esc_html_e( 'If you are unsure about how to format your data CSV then please take a look at this sample:', 'visualizer' );
75
  echo ' <a href="', VISUALIZER_ABSURL, 'samples/', $this->type, '.csv" target="_blank">', $this->type, '.csv</a> ';
76
+ printf( esc_html__( 'or read how you can add Google spreadsheet in following %1$sarticle%1$s.', 'visualizer' ), '<a href="https://github.com/madpixelslabs/visualizer/wiki/How-can-I-populate-data-from-Google-Spreadsheet%3F" target="_blank">', '</a>' );
77
  echo '</p>';
78
 
79
  echo '<div>';
82
  echo '<div class="form-inline">';
83
  echo '<div class="button button-primary file-wrapper computer-btn">';
84
  echo '<input type="file" id="csv-file" class="file" name="local_data">';
85
+ esc_attr_e( 'From Computer', 'visualizer' );
86
  echo '</div>';
87
 
88
+ echo '<a id="remote-file" class="button from-web from-web-btn" href="javascript:;">', esc_html__( 'From Web', 'visualizer' ), '</a>';
89
+ // Added by Ash/Upwork
90
+ if ( defined( 'Visualizer_Pro' ) ) {
91
+ global $Visualizer_Pro;
92
+ $Visualizer_Pro->_addFormElements();
93
+ } else {
94
+ // Added by Ash/Upwork
95
+ echo '<div class="just-on-pro"> </div>';
96
+ }
97
  echo '</div>';
98
  echo '</form>';
99
 
100
+ // added by Ash/Upwork
101
+ if ( defined( 'Visualizer_Pro' ) ) {
102
+ global $Visualizer_Pro;
103
+ $Visualizer_Pro->_addEditorElements();
104
+ } else {
105
  ?>
106
+ <a href="<?php echo Visualizer_Plugin::PRO_TEASER_URL;?>" title="<?php echo Visualizer_Plugin::PRO_TEASER_TITLE;?>" class="check-pro-btn" target="_new">
107
+ <input type="button" class="button preview preview-btn" id="existing-chart-free" value="<?php esc_attr_e( 'Check PRO Version ', 'visualizer' );?>">
108
+ </a>
109
  <?php
110
+ }
 
 
 
111
 
112
+ echo'<input type="button" name="advanced_button" class="advanced-settings-btn preview-btn" value="' . __( 'Advanced', 'visualizer' ) . ' &raquo;">';
113
+ // Added by Ash/Upwork
114
  echo '</div>';
115
  echo '</div>';
116
 
117
+ // changed by Ash/Upwork
118
  echo '<div class= "second-screen hidden-setting">';
119
  echo '<form id="settings-form" action="', add_query_arg( 'nonce', wp_create_nonce() ), '" method="post">';
120
+ echo $this->sidebar;
121
  echo '</form>';
122
  echo '</div>';
123
+ // changed by Ash/Upwork
124
  }
125
 
126
  /**
131
  * @access protected
132
  */
133
  protected function _renderToolbar() {
134
+ // changed by Ash/Upwork
135
+ echo '<div class="toolbar-div">';
136
  echo '<a class="button button-large" href="', add_query_arg( 'tab', 'types' ), '">';
137
+ esc_html_e( 'Back', 'visualizer' );
138
  echo '</a>';
139
+ echo '</div>';
140
  echo '<input type="submit" id="settings-button" class="button button-primary button-large push-right" value="', $this->button, '">';
141
 
142
+ echo '</div>';
 
143
 
144
  }
145
 
classes/Visualizer/Render/Page/Send.php CHANGED
@@ -19,7 +19,6 @@
19
  // +----------------------------------------------------------------------+
20
  // | Author: Eugene Manuilov <eugene@manuilov.org> |
21
  // +----------------------------------------------------------------------+
22
-
23
  /**
24
  * Renders page which sends a text to editor.
25
  *
@@ -55,4 +54,4 @@ class Visualizer_Render_Page_Send extends Visualizer_Render_Page {
55
  echo '</html>';
56
  }
57
 
58
- }
19
  // +----------------------------------------------------------------------+
20
  // | Author: Eugene Manuilov <eugene@manuilov.org> |
21
  // +----------------------------------------------------------------------+
 
22
  /**
23
  * Renders page which sends a text to editor.
24
  *
54
  echo '</html>';
55
  }
56
 
57
+ }
classes/Visualizer/Render/Page/Settings.php CHANGED
@@ -19,7 +19,6 @@
19
  // +----------------------------------------------------------------------+
20
  // | Author: Eugene Manuilov <eugene@manuilov.org> |
21
  // +----------------------------------------------------------------------+
22
-
23
  /**
24
  * Renders chart settings page.
25
  *
@@ -53,7 +52,7 @@ class Visualizer_Render_Page_Settings extends Visualizer_Render_Page {
53
  */
54
  protected function _renderToolbar() {
55
  echo '<a class="button button-large" href="', add_query_arg( 'tab', 'data' ), '">';
56
- esc_html_e( 'Back', Visualizer_Plugin::NAME );
57
  echo '</a>';
58
  echo '<input type="submit" class="button button-primary button-large push-right" value="', $this->button, '">';
59
  }
@@ -82,4 +81,4 @@ class Visualizer_Render_Page_Settings extends Visualizer_Render_Page {
82
  echo $this->sidebar;
83
  }
84
 
85
- }
19
  // +----------------------------------------------------------------------+
20
  // | Author: Eugene Manuilov <eugene@manuilov.org> |
21
  // +----------------------------------------------------------------------+
 
22
  /**
23
  * Renders chart settings page.
24
  *
52
  */
53
  protected function _renderToolbar() {
54
  echo '<a class="button button-large" href="', add_query_arg( 'tab', 'data' ), '">';
55
+ esc_html_e( 'Back', 'visualizer' );
56
  echo '</a>';
57
  echo '<input type="submit" class="button button-primary button-large push-right" value="', $this->button, '">';
58
  }
81
  echo $this->sidebar;
82
  }
83
 
84
+ }
classes/Visualizer/Render/Page/Types.php CHANGED
@@ -19,7 +19,6 @@
19
  // +----------------------------------------------------------------------+
20
  // | Author: Eugene Manuilov <eugene@manuilov.org> |
21
  // +----------------------------------------------------------------------+
22
-
23
  /**
24
  * Renders chart type picker page.
25
  *
@@ -54,13 +53,13 @@ class Visualizer_Render_Page_Types extends Visualizer_Render_Page {
54
  */
55
  protected function _renderContent() {
56
  echo '<div id="type-picker">';
57
- foreach ( $this->types as $type ) {
58
- echo '<div class="type-box type-box-', $type, '">';
59
- echo '<label class="type-label', $type == $this->type ? ' type-label-selected' : '', '">';
60
- echo '<input type="radio" class="type-radio" name="type" value="', $type, '"', checked( $type, $this->type, false ), '>';
61
- echo '</label>';
62
- echo '</div>';
63
- }
64
  echo '</div>';
65
  }
66
 
@@ -80,15 +79,15 @@ class Visualizer_Render_Page_Types extends Visualizer_Render_Page {
80
  *
81
  * @access protected
82
  */
83
- protected function _renderToolbar() {
84
- if( defined( 'Visualizer_Pro' ) ){
85
- global $Visualizer_Pro;
86
- }else{
87
- echo "<a class='pro-upsell' href='".Visualizer_Plugin::PRO_TEASER_URL."' target='_blank'>";
88
- echo "<span class='dashicons dashicons-plus-alt'></span>";
89
- echo esc_html( "Three Additional Chart Types Available in the Pro Version ( Table, Timeline and Combo Chart ) ", Visualizer_Plugin::NAME );
90
- echo "</a>";
91
- }
92
- echo '<input type="submit" class="button button-primary button-large push-right" value="', esc_attr__( 'Next', Visualizer_Plugin::NAME ), '">';
93
- }
94
  }
19
  // +----------------------------------------------------------------------+
20
  // | Author: Eugene Manuilov <eugene@manuilov.org> |
21
  // +----------------------------------------------------------------------+
 
22
  /**
23
  * Renders chart type picker page.
24
  *
53
  */
54
  protected function _renderContent() {
55
  echo '<div id="type-picker">';
56
+ foreach ( $this->types as $type ) {
57
+ echo '<div class="type-box type-box-', $type, '">';
58
+ echo '<label class="type-label', $type == $this->type ? ' type-label-selected' : '', '">';
59
+ echo '<input type="radio" class="type-radio" name="type" value="', $type, '"', checked( $type, $this->type, false ), '>';
60
+ echo '</label>';
61
+ echo '</div>';
62
+ }
63
  echo '</div>';
64
  }
65
 
79
  *
80
  * @access protected
81
  */
82
+ protected function _renderToolbar() {
83
+ if ( defined( 'Visualizer_Pro' ) ) {
84
+ global $Visualizer_Pro;
85
+ } else {
86
+ echo "<a class='pro-upsell' href='" . Visualizer_Plugin::PRO_TEASER_URL . "' target='_blank'>";
87
+ echo "<span class='dashicons dashicons-plus-alt'></span>";
88
+ echo esc_html( 'Three Additional Chart Types Available in the Pro Version ( Table, Timeline and Combo Chart ) ', 'visualizer' );
89
+ echo '</a>';
90
+ }
91
+ echo '<input type="submit" class="button button-primary button-large push-right" value="', esc_attr__( 'Next', 'visualizer' ), '">';
92
+ }
93
  }
classes/Visualizer/Render/Page/Update.php CHANGED
@@ -19,8 +19,6 @@
19
  // +----------------------------------------------------------------------+
20
  // | Author: Eugene Manuilov <eugene@manuilov.org> |
21
  // +----------------------------------------------------------------------+
22
-
23
-
24
  /**
25
  * Renders data uploading respond.
26
  *
@@ -45,24 +43,23 @@ class Visualizer_Render_Page_Update extends Visualizer_Render_Page {
45
  echo '<head>';
46
  echo '<script type="text/javascript">';
47
  echo '(function() {';
48
- if ( empty( $this->message ) ) {
49
- echo 'var win = window.dialogArguments || opener || parent || top;';
50
- echo 'if (win.visualizer) {';
51
- echo 'win.visualizer.charts.canvas.series = ', $this->series, ';';
52
- echo 'win.visualizer.charts.canvas.data = ', $this->data, ';';
53
- echo 'win.visualizer.render();';
54
- echo '}';
55
-
56
- // added by Ash/Upwork
57
- if( defined( 'Visualizer_Pro' ) ){
58
- global $Visualizer_Pro;
59
- $Visualizer_Pro->_addUpdateHook($this->series, $this->data);
60
- }
61
- // Added by Ash/Upwork
62
 
63
- } else {
64
- echo 'alert("', $this->message, '");';
65
- }
 
 
 
 
 
 
66
  echo '})();';
67
  echo '</script>';
68
  echo '</head>';
@@ -70,4 +67,4 @@ class Visualizer_Render_Page_Update extends Visualizer_Render_Page {
70
  echo '</html>';
71
  }
72
 
73
- }
19
  // +----------------------------------------------------------------------+
20
  // | Author: Eugene Manuilov <eugene@manuilov.org> |
21
  // +----------------------------------------------------------------------+
 
 
22
  /**
23
  * Renders data uploading respond.
24
  *
43
  echo '<head>';
44
  echo '<script type="text/javascript">';
45
  echo '(function() {';
46
+ if ( empty( $this->message ) ) {
47
+ echo 'var win = window.dialogArguments || opener || parent || top;';
48
+ echo 'if (win.visualizer) {';
49
+ echo 'win.visualizer.charts.canvas.series = ', $this->series, ';';
50
+ echo 'win.visualizer.charts.canvas.data = ', $this->data, ';';
51
+ echo 'win.visualizer.render();';
52
+ echo '}';
 
 
 
 
 
 
 
53
 
54
+ // added by Ash/Upwork
55
+ if ( defined( 'Visualizer_Pro' ) ) {
56
+ global $Visualizer_Pro;
57
+ $Visualizer_Pro->_addUpdateHook( $this->series, $this->data );
58
+ }
59
+ // Added by Ash/Upwork
60
+ } else {
61
+ echo 'alert("', $this->message, '");';
62
+ }
63
  echo '})();';
64
  echo '</script>';
65
  echo '</head>';
67
  echo '</html>';
68
  }
69
 
70
+ }
classes/Visualizer/Render/Sidebar.php CHANGED
@@ -19,8 +19,6 @@
19
  // +----------------------------------------------------------------------+
20
  // | Author: Eugene Manuilov <eugene@manuilov.org> |
21
  // +----------------------------------------------------------------------+
22
-
23
-
24
  /**
25
  * Base class for all chart sidebar groups.
26
  *
@@ -98,25 +96,25 @@ abstract class Visualizer_Render_Sidebar extends Visualizer_Render {
98
 
99
  $this->_legendPositions = array(
100
  '' => '',
101
- 'left' => esc_html__( 'Left of the chart', Visualizer_Plugin::NAME ),
102
- 'right' => esc_html__( 'Right of the chart', Visualizer_Plugin::NAME ),
103
- 'top' => esc_html__( 'Above the chart', Visualizer_Plugin::NAME ),
104
- 'bottom' => esc_html__( 'Below the chart', Visualizer_Plugin::NAME ),
105
- 'in' => esc_html__( 'Inside the chart', Visualizer_Plugin::NAME ),
106
- 'none' => esc_html__( 'Omit the legend', Visualizer_Plugin::NAME ),
107
  );
108
 
109
  $this->_alignments = array(
110
  '' => '',
111
- 'start' => esc_html__( 'Aligned to the start of the allocated area', Visualizer_Plugin::NAME ),
112
- 'center' => esc_html__( 'Centered in the allocated area', Visualizer_Plugin::NAME ),
113
- 'end' => esc_html__( 'Aligned to the end of the allocated area', Visualizer_Plugin::NAME ),
114
  );
115
 
116
  $this->_yesno = array(
117
  '' => '',
118
- '1' => esc_html__( 'Yes', Visualizer_Plugin::NAME ),
119
- '0' => esc_html__( 'No', Visualizer_Plugin::NAME ),
120
  );
121
  }
122
 
@@ -129,14 +127,14 @@ abstract class Visualizer_Render_Sidebar extends Visualizer_Render {
129
  */
130
  protected function _renderChartTitleSettings() {
131
  self::_renderTextItem(
132
- esc_html__( 'Chart Title', Visualizer_Plugin::NAME ),
133
  'title',
134
  $this->title,
135
- esc_html__( 'Text to display above the chart.', Visualizer_Plugin::NAME )
136
  );
137
 
138
  self::_renderColorPickerItem(
139
- esc_html__( 'Chart Title Color', Visualizer_Plugin::NAME ),
140
  'titleTextStyle[color]',
141
  isset( $this->titleTextStyle['color'] ) ? $this->titleTextStyle['color'] : null,
142
  '#000'
@@ -151,75 +149,75 @@ abstract class Visualizer_Render_Sidebar extends Visualizer_Render {
151
  * @access protected
152
  */
153
  protected function _renderGeneralSettings() {
154
- self::_renderGroupStart( esc_html__( 'General Settings', Visualizer_Plugin::NAME ) );
155
  self::_renderSectionStart();
156
- self::_renderSectionDescription( esc_html__( 'Configure title, font styles, tooltip, legend and else settings for the chart.', Visualizer_Plugin::NAME ) );
157
  self::_renderSectionEnd();
158
 
159
- self::_renderSectionStart( esc_html__( 'Title', Visualizer_Plugin::NAME ), false );
160
  $this->_renderChartTitleSettings();
161
  self::_renderSectionEnd();
162
 
163
- self::_renderSectionStart( esc_html__( 'Font Styles' ), false );
164
  echo '<div class="section-item">';
165
  echo '<a class="more-info" href="javascript:;">[?]</a>';
166
- echo '<b>', esc_html__( 'Family And Size', Visualizer_Plugin::NAME ), '</b>';
167
 
168
  echo '<table class="section-table" cellspacing="0" cellpadding="0" border="0">';
169
  echo '<tr>';
170
  echo '<td class="section-table-column">';
171
  echo '<select name="fontName" class="control-select">';
172
  echo '<option></option>';
173
- foreach ( self::$_fontFamilies as $font => $label ) {
174
- echo '<option value="', $font, '"', selected( $font, $this->fontName, false ), '>';
175
- echo $label;
176
- echo '</option>';
177
- }
178
  echo '</select>';
179
  echo '</td>';
180
  echo '<td class="section-table-column">';
181
  echo '<select name="fontSize" class="control-select">';
182
  echo '<option></option>';
183
- for ( $i = 7; $i <= 20; $i++ ) {
184
- echo '<option value="', $i, '"', selected( $i, $this->fontSize, false ), '>', $i, '</option>';
185
- }
186
  echo '</select>';
187
  echo '</td>';
188
  echo '</tr>';
189
  echo '</table>';
190
 
191
  echo '<p class="section-description">';
192
- esc_html_e( 'The default font family and size for all text in the chart.', Visualizer_Plugin::NAME );
193
  echo '</p>';
194
  echo '</div>';
195
  self::_renderSectionEnd();
196
 
197
- self::_renderSectionStart( esc_html__( 'Legend', Visualizer_Plugin::NAME ), false );
198
  self::_renderSelectItem(
199
- esc_html__( 'Position', Visualizer_Plugin::NAME ),
200
  'legend[position]',
201
  $this->legend['position'],
202
  $this->_legendPositions,
203
- esc_html__( 'Determines where to place the legend, compared to the chart area.', Visualizer_Plugin::NAME )
204
  );
205
 
206
  self::_renderSelectItem(
207
- esc_html__( 'Alignment', Visualizer_Plugin::NAME ),
208
  'legend[alignment]',
209
  $this->legend['alignment'],
210
  $this->_alignments,
211
- esc_html__( 'Determines the alignment of the legend.', Visualizer_Plugin::NAME )
212
  );
213
 
214
  self::_renderColorPickerItem(
215
- esc_html__( 'Font Color', Visualizer_Plugin::NAME ),
216
  'legend[textStyle][color]',
217
  isset( $this->legend['textStyle']['color'] ) ? $this->legend['textStyle']['color'] : null,
218
  '#000'
219
  );
220
  self::_renderSectionEnd();
221
 
222
- self::_renderSectionStart( esc_html__( 'Tooltip', Visualizer_Plugin::NAME ), false );
223
  $this->_renderTooltipSettigns();
224
  self::_renderSectionEnd();
225
  self::_renderGroupEnd();
@@ -234,24 +232,24 @@ abstract class Visualizer_Render_Sidebar extends Visualizer_Render {
234
  */
235
  protected function _renderTooltipSettigns() {
236
  self::_renderSelectItem(
237
- esc_html__( 'Trigger', Visualizer_Plugin::NAME ),
238
  'tooltip[trigger]',
239
  isset( $this->tooltip['trigger'] ) ? $this->tooltip['trigger'] : null,
240
  array(
241
  '' => '',
242
- 'focus' => esc_html__( 'The tooltip will be displayed when the user hovers over an element', Visualizer_Plugin::NAME ),
243
- 'selection' => esc_html__( 'The tooltip will be displayed when the user selects an element', Visualizer_Plugin::NAME ),
244
- 'none' => esc_html__( 'The tooltip will not be displayed', Visualizer_Plugin::NAME ),
245
  ),
246
- esc_html__( 'Determines the user interaction that causes the tooltip to be displayed.', Visualizer_Plugin::NAME )
247
  );
248
 
249
  self::_renderSelectItem(
250
- esc_html__( 'Show Color Code', Visualizer_Plugin::NAME ),
251
  'tooltip[showColorCode]',
252
  isset( $this->tooltip['showColorCode'] ) ? $this->tooltip['showColorCode'] : null,
253
  $this->_yesno,
254
- esc_html__( 'If set to yes, will show colored squares next to the slice information in the tooltip.', Visualizer_Plugin::NAME )
255
  );
256
  }
257
 
@@ -263,13 +261,13 @@ abstract class Visualizer_Render_Sidebar extends Visualizer_Render {
263
  * @access protected
264
  */
265
  protected function _renderViewSettings() {
266
- self::_renderGroupStart( esc_html__( 'Layout & Chart Area', Visualizer_Plugin::NAME ) );
267
- self::_renderSectionStart( esc_html__( 'Layout', Visualizer_Plugin::NAME ), false );
268
- self::_renderSectionDescription( esc_html__( 'Configure the total size of the chart. Two formats are supported: a number, or a number followed by %. A simple number is a value in pixels; a number followed by % is a percentage.', Visualizer_Plugin::NAME ) );
269
 
270
  echo '<div class="section-item">';
271
  echo '<a class="more-info" href="javascript:;">[?]</a>';
272
- echo '<b>', esc_html__( 'Width And Height Of Chart', Visualizer_Plugin::NAME ), '</b>';
273
 
274
  echo '<table class="section-table" cellspacing="0" cellpadding="0" border="0">';
275
  echo '<tr>';
@@ -283,32 +281,32 @@ abstract class Visualizer_Render_Sidebar extends Visualizer_Render {
283
  echo '</table>';
284
 
285
  echo '<p class="section-description">';
286
- esc_html_e( 'Determines the total width and height of the chart.', Visualizer_Plugin::NAME );
287
  echo '</p>';
288
  echo '</div>';
289
 
290
  echo '<div class="section-delimiter"></div>';
291
 
292
- self::_renderSectionDescription( esc_html__( 'Configure the background color for the main area of the chart and the chart border width and color.', Visualizer_Plugin::NAME ) );
293
 
294
  self::_renderTextItem(
295
- esc_html__( 'Stroke Width', Visualizer_Plugin::NAME ),
296
  'backgroundColor[strokeWidth]',
297
  isset( $this->backgroundColor['strokeWidth'] ) ? $this->backgroundColor['strokeWidth'] : null,
298
- esc_html__( 'The chart border width in pixels.', Visualizer_Plugin::NAME ),
299
  '0'
300
  );
301
 
302
  self::_renderColorPickerItem(
303
- esc_html__( 'Stroke Color', Visualizer_Plugin::NAME ),
304
  'backgroundColor[stroke]',
305
- !empty( $this->backgroundColor['stroke'] ) ? $this->backgroundColor['stroke'] : null,
306
  '#666'
307
  );
308
 
309
- $background_color = !empty( $this->backgroundColor['fill'] ) ? $this->backgroundColor['fill'] : null;
310
  self::_renderColorPickerItem(
311
- esc_html__( 'Background Color', Visualizer_Plugin::NAME ),
312
  'backgroundColor[fill]',
313
  $background_color,
314
  '#fff'
@@ -317,51 +315,51 @@ abstract class Visualizer_Render_Sidebar extends Visualizer_Render {
317
  echo '<div class="section-item">';
318
  echo '<label>';
319
  echo '<input type="checkbox" class="control-checkbox" name="backgroundColor[fill]" value="transparent"', checked( $background_color, 'transparent', false ), '> ';
320
- esc_html_e( 'Transparent background' );
321
  echo '</label>';
322
  echo '</div>';
323
  self::_renderSectionEnd();
324
 
325
- self::_renderSectionStart( esc_html__( 'Chart Area', Visualizer_Plugin::NAME ), false );
326
- self::_renderSectionDescription( esc_html__( 'Configure the placement and size of the chart area (where the chart itself is drawn, excluding axis and legends). Two formats are supported: a number, or a number followed by %. A simple number is a value in pixels; a number followed by % is a percentage.', Visualizer_Plugin::NAME ) );
327
 
328
  echo '<div class="section-item">';
329
  echo '<a class="more-info" href="javascript:;">[?]</a>';
330
- echo '<b>', esc_html__( 'Left And Top Margins', Visualizer_Plugin::NAME ), '</b>';
331
 
332
  echo '<table class="section-table" cellspacing="0" cellpadding="0" border="0">';
333
  echo '<tr>';
334
  echo '<td class="section-table-column">';
335
- echo '<input type="text" name="chartArea[left]" class="control-text" value="', !empty( $this->chartArea['left'] ) ? esc_attr( $this->chartArea['left'] ) : '', '" placeholder="20%">';
336
  echo '</td>';
337
  echo '<td class="section-table-column">';
338
- echo '<input type="text" name="chartArea[top]" class="control-text" value="', !empty( $this->chartArea['top'] ) ? esc_attr( $this->chartArea['top'] ) : '', '" placeholder="20%">';
339
  echo '</td>';
340
  echo '</tr>';
341
  echo '</table>';
342
 
343
  echo '<p class="section-description">';
344
- esc_html_e( 'Determines how far to draw the chart from the left and top borders.', Visualizer_Plugin::NAME );
345
  echo '</p>';
346
  echo '</div>';
347
 
348
  echo '<div class="section-item">';
349
  echo '<a class="more-info" href="javascript:;">[?]</a>';
350
- echo '<b>', esc_html__( 'Width And Height Of Chart Area', Visualizer_Plugin::NAME ), '</b>';
351
 
352
  echo '<table class="section-table" cellspacing="0" cellpadding="0" border="0">';
353
  echo '<tr>';
354
  echo '<td class="section-table-column">';
355
- echo '<input type="text" name="chartArea[width]" class="control-text" value="', !empty( $this->chartArea['width'] ) ? esc_attr( $this->chartArea['width'] ) : '', '" placeholder="60%">';
356
  echo '</td>';
357
  echo '<td class="section-table-column">';
358
- echo '<input type="text" name="chartArea[height]" class="control-text" value="', !empty( $this->chartArea['height'] ) ? esc_attr( $this->chartArea['height'] ) : '', '" placeholder="60%">';
359
  echo '</td>';
360
  echo '</tr>';
361
  echo '</table>';
362
 
363
  echo '<p class="section-description">';
364
- esc_html_e( 'Determines the width and hight of the chart area.', Visualizer_Plugin::NAME );
365
  echo '</p>';
366
  echo '</div>';
367
  self::_renderSectionEnd();
@@ -378,7 +376,7 @@ abstract class Visualizer_Render_Sidebar extends Visualizer_Render {
378
  * @param string $title The title of the select item.
379
  * @param string $name The name of the select item.
380
  * @param string $value The actual value of the select item.
381
- * @param array $options The array of select options.
382
  * @param string $desc The description of the select item.
383
  */
384
  protected static function _renderSelectItem( $title, $name, $value, array $options, $desc ) {
@@ -386,11 +384,11 @@ abstract class Visualizer_Render_Sidebar extends Visualizer_Render {
386
  echo '<a class="more-info" href="javascript:;">[?]</a>';
387
  echo '<b>', $title, '</b>';
388
  echo '<select class="control-select" name="', $name, '">';
389
- foreach ( $options as $key => $label ) {
390
- echo '<option value="', $key, '"', selected( $key, $value, false ), '>';
391
- echo $label;
392
- echo '</option>';
393
- }
394
  echo '</select>';
395
  echo '<p class="section-description">', $desc, '</p>';
396
  echo '</div>';
@@ -412,7 +410,7 @@ abstract class Visualizer_Render_Sidebar extends Visualizer_Render {
412
  echo '<div class="section-item">';
413
  echo '<b>', $title, '</b>';
414
  echo '<div>';
415
- echo '<input type="text" class="color-picker-hex" name="', $name, '" maxlength="7" placeholder="', esc_attr__( 'Hex Value', Visualizer_Plugin::NAME ), '" value="', is_null( $value ) ? $default : esc_attr( $value ), '" data-default-color="', $default, '">';
416
  echo '</div>';
417
  echo '</div>';
418
  }
@@ -474,14 +472,14 @@ abstract class Visualizer_Render_Sidebar extends Visualizer_Render {
474
  *
475
  * @static
476
  * @access protected
477
- * @param string $title The title of this section. If the title is empty, no title will be displayed.
478
  * @param boolean $open Determines whether the section items block has to be expanded or collapsed.
479
  */
480
  protected static function _renderSectionStart( $title = false, $open = true ) {
481
  echo '<li>';
482
- if ( !empty( $title ) ) {
483
- echo '<span class="section-title">', $title, '</span>';
484
- }
485
  echo '<div class="section-items', $open ? ' open' : '', '">';
486
  }
487
 
@@ -522,13 +520,13 @@ abstract class Visualizer_Render_Sidebar extends Visualizer_Render {
522
  * @param int $index The index of the series.
523
  */
524
  protected function _renderFormatField( $index = 0 ) {
525
- switch ( $this->__series[$index + 1]['type'] ) {
526
  case 'number':
527
  self::_renderTextItem(
528
- esc_html__( 'Number Format', Visualizer_Plugin::NAME ),
529
  'series[' . $index . '][format]',
530
- isset( $this->series[$index]['format'] ) ? $this->series[$index]['format'] : '',
531
- sprintf( esc_html__( 'Enter custom format pattern to apply to this series value, similar to the %sICU pattern set%s. Use something like #,### to get 1,234 as output, or $# to add dollar sign before digits. Pay attention that if you use #%% percentage format then your values will be multiplied by 100.', Visualizer_Plugin::NAME ), '<a href="http://icu-project.org/apiref/icu4c/classDecimalFormat.html#_details" target="_blank">', '</a>' ),
532
  '#,###.##'
533
  );
534
  break;
@@ -536,23 +534,26 @@ abstract class Visualizer_Render_Sidebar extends Visualizer_Render {
536
  case 'datetime':
537
  case 'timeofday':
538
  self::_renderTextItem(
539
- esc_html__( 'Date Format', Visualizer_Plugin::NAME ),
540
  'series[' . $index . '][format]',
541
- isset( $this->series[$index]['format'] ) ? $this->series[$index]['format'] : '',
542
- sprintf( esc_html__( 'Enter custom format pattern to apply to this series value, similar to the %sICU date and time format%s.', Visualizer_Plugin::NAME ), '<a href="http://userguide.icu-project.org/formatparse/datetime#TOC-Date-Time-Format-Syntax" target="_blank">', '</a>' ),
543
  'eeee, dd LLLL yyyy'
544
  );
545
  break;
546
  }
547
  }
548
 
 
 
 
549
  protected static function _renderCheckboxItem( $title, $name, $value, $default, $desc ) {
550
  echo '<div class="section-item">';
551
  echo '<a class="more-info" href="javascript:;">[?]</a>';
552
  echo '<b>', $title, '</b>';
553
- echo '<input type="checkbox" class="control-check" value="', $default, '" name="', $name, '" ', ($value == $default ? "checked" : ""), '>';
554
  echo '<p class="section-description">', $desc, '</p>';
555
  echo '</div>';
556
  }
557
 
558
- }
19
  // +----------------------------------------------------------------------+
20
  // | Author: Eugene Manuilov <eugene@manuilov.org> |
21
  // +----------------------------------------------------------------------+
 
 
22
  /**
23
  * Base class for all chart sidebar groups.
24
  *
96
 
97
  $this->_legendPositions = array(
98
  '' => '',
99
+ 'left' => esc_html__( 'Left of the chart', 'visualizer' ),
100
+ 'right' => esc_html__( 'Right of the chart', 'visualizer' ),
101
+ 'top' => esc_html__( 'Above the chart', 'visualizer' ),
102
+ 'bottom' => esc_html__( 'Below the chart', 'visualizer' ),
103
+ 'in' => esc_html__( 'Inside the chart', 'visualizer' ),
104
+ 'none' => esc_html__( 'Omit the legend', 'visualizer' ),
105
  );
106
 
107
  $this->_alignments = array(
108
  '' => '',
109
+ 'start' => esc_html__( 'Aligned to the start of the allocated area', 'visualizer' ),
110
+ 'center' => esc_html__( 'Centered in the allocated area', 'visualizer' ),
111
+ 'end' => esc_html__( 'Aligned to the end of the allocated area', 'visualizer' ),
112
  );
113
 
114
  $this->_yesno = array(
115
  '' => '',
116
+ '1' => esc_html__( 'Yes', 'visualizer' ),
117
+ '0' => esc_html__( 'No', 'visualizer' ),
118
  );
119
  }
120
 
127
  */
128
  protected function _renderChartTitleSettings() {
129
  self::_renderTextItem(
130
+ esc_html__( 'Chart Title', 'visualizer' ),
131
  'title',
132
  $this->title,
133
+ esc_html__( 'Text to display above the chart.', 'visualizer' )
134
  );
135
 
136
  self::_renderColorPickerItem(
137
+ esc_html__( 'Chart Title Color', 'visualizer' ),
138
  'titleTextStyle[color]',
139
  isset( $this->titleTextStyle['color'] ) ? $this->titleTextStyle['color'] : null,
140
  '#000'
149
  * @access protected
150
  */
151
  protected function _renderGeneralSettings() {
152
+ self::_renderGroupStart( esc_html__( 'General Settings', 'visualizer' ) );
153
  self::_renderSectionStart();
154
+ self::_renderSectionDescription( esc_html__( 'Configure title, font styles, tooltip, legend and else settings for the chart.', 'visualizer' ) );
155
  self::_renderSectionEnd();
156
 
157
+ self::_renderSectionStart( esc_html__( 'Title', 'visualizer' ), false );
158
  $this->_renderChartTitleSettings();
159
  self::_renderSectionEnd();
160
 
161
+ self::_renderSectionStart( esc_html__( 'Font Styles', 'visualizer' ), false );
162
  echo '<div class="section-item">';
163
  echo '<a class="more-info" href="javascript:;">[?]</a>';
164
+ echo '<b>', esc_html__( 'Family And Size', 'visualizer' ), '</b>';
165
 
166
  echo '<table class="section-table" cellspacing="0" cellpadding="0" border="0">';
167
  echo '<tr>';
168
  echo '<td class="section-table-column">';
169
  echo '<select name="fontName" class="control-select">';
170
  echo '<option></option>';
171
+ foreach ( self::$_fontFamilies as $font => $label ) {
172
+ echo '<option value="', $font, '"', selected( $font, $this->fontName, false ), '>';
173
+ echo $label;
174
+ echo '</option>';
175
+ }
176
  echo '</select>';
177
  echo '</td>';
178
  echo '<td class="section-table-column">';
179
  echo '<select name="fontSize" class="control-select">';
180
  echo '<option></option>';
181
+ for ( $i = 7; $i <= 20; $i++ ) {
182
+ echo '<option value="', $i, '"', selected( $i, $this->fontSize, false ), '>', $i, '</option>';
183
+ }
184
  echo '</select>';
185
  echo '</td>';
186
  echo '</tr>';
187
  echo '</table>';
188
 
189
  echo '<p class="section-description">';
190
+ esc_html_e( 'The default font family and size for all text in the chart.', 'visualizer' );
191
  echo '</p>';
192
  echo '</div>';
193
  self::_renderSectionEnd();
194
 
195
+ self::_renderSectionStart( esc_html__( 'Legend', 'visualizer' ), false );
196
  self::_renderSelectItem(
197
+ esc_html__( 'Position', 'visualizer' ),
198
  'legend[position]',
199
  $this->legend['position'],
200
  $this->_legendPositions,
201
+ esc_html__( 'Determines where to place the legend, compared to the chart area.', 'visualizer' )
202
  );
203
 
204
  self::_renderSelectItem(
205
+ esc_html__( 'Alignment', 'visualizer' ),
206
  'legend[alignment]',
207
  $this->legend['alignment'],
208
  $this->_alignments,
209
+ esc_html__( 'Determines the alignment of the legend.', 'visualizer' )
210
  );
211
 
212
  self::_renderColorPickerItem(
213
+ esc_html__( 'Font Color', 'visualizer' ),
214
  'legend[textStyle][color]',
215
  isset( $this->legend['textStyle']['color'] ) ? $this->legend['textStyle']['color'] : null,
216
  '#000'
217
  );
218
  self::_renderSectionEnd();
219
 
220
+ self::_renderSectionStart( esc_html__( 'Tooltip', 'visualizer' ), false );
221
  $this->_renderTooltipSettigns();
222
  self::_renderSectionEnd();
223
  self::_renderGroupEnd();
232
  */
233
  protected function _renderTooltipSettigns() {
234
  self::_renderSelectItem(
235
+ esc_html__( 'Trigger', 'visualizer' ),
236
  'tooltip[trigger]',
237
  isset( $this->tooltip['trigger'] ) ? $this->tooltip['trigger'] : null,
238
  array(
239
  '' => '',
240
+ 'focus' => esc_html__( 'The tooltip will be displayed when the user hovers over an element', 'visualizer' ),
241
+ 'selection' => esc_html__( 'The tooltip will be displayed when the user selects an element', 'visualizer' ),
242
+ 'none' => esc_html__( 'The tooltip will not be displayed', 'visualizer' ),
243
  ),
244
+ esc_html__( 'Determines the user interaction that causes the tooltip to be displayed.', 'visualizer' )
245
  );
246
 
247
  self::_renderSelectItem(
248
+ esc_html__( 'Show Color Code', 'visualizer' ),
249
  'tooltip[showColorCode]',
250
  isset( $this->tooltip['showColorCode'] ) ? $this->tooltip['showColorCode'] : null,
251
  $this->_yesno,
252
+ esc_html__( 'If set to yes, will show colored squares next to the slice information in the tooltip.', 'visualizer' )
253
  );
254
  }
255
 
261
  * @access protected
262
  */
263
  protected function _renderViewSettings() {
264
+ self::_renderGroupStart( esc_html__( 'Layout & Chart Area', 'visualizer' ) );
265
+ self::_renderSectionStart( esc_html__( 'Layout', 'visualizer' ), false );
266
+ self::_renderSectionDescription( esc_html__( 'Configure the total size of the chart. Two formats are supported: a number, or a number followed by %. A simple number is a value in pixels; a number followed by % is a percentage.', 'visualizer' ) );
267
 
268
  echo '<div class="section-item">';
269
  echo '<a class="more-info" href="javascript:;">[?]</a>';
270
+ echo '<b>', esc_html__( 'Width And Height Of Chart', 'visualizer' ), '</b>';
271
 
272
  echo '<table class="section-table" cellspacing="0" cellpadding="0" border="0">';
273
  echo '<tr>';
281
  echo '</table>';
282
 
283
  echo '<p class="section-description">';
284
+ esc_html_e( 'Determines the total width and height of the chart.', 'visualizer' );
285
  echo '</p>';
286
  echo '</div>';
287
 
288
  echo '<div class="section-delimiter"></div>';
289
 
290
+ self::_renderSectionDescription( esc_html__( 'Configure the background color for the main area of the chart and the chart border width and color.', 'visualizer' ) );
291
 
292
  self::_renderTextItem(
293
+ esc_html__( 'Stroke Width', 'visualizer' ),
294
  'backgroundColor[strokeWidth]',
295
  isset( $this->backgroundColor['strokeWidth'] ) ? $this->backgroundColor['strokeWidth'] : null,
296
+ esc_html__( 'The chart border width in pixels.', 'visualizer' ),
297
  '0'
298
  );
299
 
300
  self::_renderColorPickerItem(
301
+ esc_html__( 'Stroke Color', 'visualizer' ),
302
  'backgroundColor[stroke]',
303
+ ! empty( $this->backgroundColor['stroke'] ) ? $this->backgroundColor['stroke'] : null,
304
  '#666'
305
  );
306
 
307
+ $background_color = ! empty( $this->backgroundColor['fill'] ) ? $this->backgroundColor['fill'] : null;
308
  self::_renderColorPickerItem(
309
+ esc_html__( 'Background Color', 'visualizer' ),
310
  'backgroundColor[fill]',
311
  $background_color,
312
  '#fff'
315
  echo '<div class="section-item">';
316
  echo '<label>';
317
  echo '<input type="checkbox" class="control-checkbox" name="backgroundColor[fill]" value="transparent"', checked( $background_color, 'transparent', false ), '> ';
318
+ esc_html_e( 'Transparent background', 'visualizer' );
319
  echo '</label>';
320
  echo '</div>';
321
  self::_renderSectionEnd();
322
 
323
+ self::_renderSectionStart( esc_html__( 'Chart Area', 'visualizer' ), false );
324
+ self::_renderSectionDescription( esc_html__( 'Configure the placement and size of the chart area (where the chart itself is drawn, excluding axis and legends). Two formats are supported: a number, or a number followed by %. A simple number is a value in pixels; a number followed by % is a percentage.', 'visualizer' ) );
325
 
326
  echo '<div class="section-item">';
327
  echo '<a class="more-info" href="javascript:;">[?]</a>';
328
+ echo '<b>', esc_html__( 'Left And Top Margins', 'visualizer' ), '</b>';
329
 
330
  echo '<table class="section-table" cellspacing="0" cellpadding="0" border="0">';
331
  echo '<tr>';
332
  echo '<td class="section-table-column">';
333
+ echo '<input type="text" name="chartArea[left]" class="control-text" value="', $this->chartArea['left'] || $this->chartArea['left'] === '0' ? esc_attr( $this->chartArea['left'] ) : '', '" placeholder="20%">';
334
  echo '</td>';
335
  echo '<td class="section-table-column">';
336
+ echo '<input type="text" name="chartArea[top]" class="control-text" value="', $this->chartArea['top'] || $this->chartArea['top'] === '0' ? esc_attr( $this->chartArea['top'] ) : '', '" placeholder="20%">';
337
  echo '</td>';
338
  echo '</tr>';
339
  echo '</table>';
340
 
341
  echo '<p class="section-description">';
342
+ esc_html_e( 'Determines how far to draw the chart from the left and top borders.', 'visualizer' );
343
  echo '</p>';
344
  echo '</div>';
345
 
346
  echo '<div class="section-item">';
347
  echo '<a class="more-info" href="javascript:;">[?]</a>';
348
+ echo '<b>', esc_html__( 'Width And Height Of Chart Area', 'visualizer' ), '</b>';
349
 
350
  echo '<table class="section-table" cellspacing="0" cellpadding="0" border="0">';
351
  echo '<tr>';
352
  echo '<td class="section-table-column">';
353
+ echo '<input type="text" name="chartArea[width]" class="control-text" value="', ! empty( $this->chartArea['width'] ) ? esc_attr( $this->chartArea['width'] ) : '', '" placeholder="60%">';
354
  echo '</td>';
355
  echo '<td class="section-table-column">';
356
+ echo '<input type="text" name="chartArea[height]" class="control-text" value="', ! empty( $this->chartArea['height'] ) ? esc_attr( $this->chartArea['height'] ) : '', '" placeholder="60%">';
357
  echo '</td>';
358
  echo '</tr>';
359
  echo '</table>';
360
 
361
  echo '<p class="section-description">';
362
+ esc_html_e( 'Determines the width and hight of the chart area.', 'visualizer' );
363
  echo '</p>';
364
  echo '</div>';
365
  self::_renderSectionEnd();
376
  * @param string $title The title of the select item.
377
  * @param string $name The name of the select item.
378
  * @param string $value The actual value of the select item.
379
+ * @param array $options The array of select options.
380
  * @param string $desc The description of the select item.
381
  */
382
  protected static function _renderSelectItem( $title, $name, $value, array $options, $desc ) {
384
  echo '<a class="more-info" href="javascript:;">[?]</a>';
385
  echo '<b>', $title, '</b>';
386
  echo '<select class="control-select" name="', $name, '">';
387
+ foreach ( $options as $key => $label ) {
388
+ echo '<option value="', $key, '"', selected( $key, $value, false ), '>';
389
+ echo $label;
390
+ echo '</option>';
391
+ }
392
  echo '</select>';
393
  echo '<p class="section-description">', $desc, '</p>';
394
  echo '</div>';
410
  echo '<div class="section-item">';
411
  echo '<b>', $title, '</b>';
412
  echo '<div>';
413
+ echo '<input type="text" class="color-picker-hex" name="', $name, '" maxlength="7" placeholder="', esc_attr__( 'Hex Value', 'visualizer' ), '" value="', is_null( $value ) ? $default : esc_attr( $value ), '" data-default-color="', $default, '">';
414
  echo '</div>';
415
  echo '</div>';
416
  }
472
  *
473
  * @static
474
  * @access protected
475
+ * @param string $title The title of this section. If the title is empty, no title will be displayed.
476
  * @param boolean $open Determines whether the section items block has to be expanded or collapsed.
477
  */
478
  protected static function _renderSectionStart( $title = false, $open = true ) {
479
  echo '<li>';
480
+ if ( ! empty( $title ) ) {
481
+ echo '<span class="section-title">', $title, '</span>';
482
+ }
483
  echo '<div class="section-items', $open ? ' open' : '', '">';
484
  }
485
 
520
  * @param int $index The index of the series.
521
  */
522
  protected function _renderFormatField( $index = 0 ) {
523
+ switch ( $this->__series[ $index + 1 ]['type'] ) {
524
  case 'number':
525
  self::_renderTextItem(
526
+ esc_html__( 'Number Format', 'visualizer' ),
527
  'series[' . $index . '][format]',
528
+ isset( $this->series[ $index ]['format'] ) ? $this->series[ $index ]['format'] : '',
529
+ sprintf( esc_html__( 'Enter custom format pattern to apply to this series value, similar to the %1$sICU pattern set%1$s. Use something like #,### to get 1,234 as output, or $# to add dollar sign before digits. Pay attention that if you use #%3$% percentage format then your values will be multiplied by 100.', 'visualizer' ), '<a href="http://icu-project.org/apiref/icu4c/classDecimalFormat.html#_details" target="_blank">', '</a>' ),
530
  '#,###.##'
531
  );
532
  break;
534
  case 'datetime':
535
  case 'timeofday':
536
  self::_renderTextItem(
537
+ esc_html__( 'Date Format', 'visualizer' ),
538
  'series[' . $index . '][format]',
539
+ isset( $this->series[ $index ]['format'] ) ? $this->series[ $index ]['format'] : '',
540
+ sprintf( esc_html__( 'Enter custom format pattern to apply to this series value, similar to the %1$sICU date and time format%1$s.', 'visualizer' ), '<a href="http://userguide.icu-project.org/formatparse/datetime#TOC-Date-Time-Format-Syntax" target="_blank">', '</a>' ),
541
  'eeee, dd LLLL yyyy'
542
  );
543
  break;
544
  }
545
  }
546
 
547
+ /**
548
+ * Render a checkbox item
549
+ */
550
  protected static function _renderCheckboxItem( $title, $name, $value, $default, $desc ) {
551
  echo '<div class="section-item">';
552
  echo '<a class="more-info" href="javascript:;">[?]</a>';
553
  echo '<b>', $title, '</b>';
554
+ echo '<input type="checkbox" class="control-check" value="', $default, '" name="', $name, '" ', ($value == $default ? 'checked' : ''), '>';
555
  echo '<p class="section-description">', $desc, '</p>';
556
  echo '</div>';
557
  }
558
 
559
+ }
classes/Visualizer/Render/Sidebar/Columnar.php CHANGED
@@ -19,8 +19,6 @@
19
  // +----------------------------------------------------------------------+
20
  // | Author: Eugene Manuilov <eugene@manuilov.org> |
21
  // +----------------------------------------------------------------------+
22
-
23
-
24
  /**
25
  * Base class for sidebar settings of columnar based charts.
26
  *
@@ -41,37 +39,37 @@ abstract class Visualizer_Render_Sidebar_Columnar extends Visualizer_Render_Side
41
  * @access protected
42
  */
43
  protected function _renderColumnarSettings() {
44
- self::_renderGroupStart( esc_html__( 'Bars Settings', Visualizer_Plugin::NAME ) );
45
  self::_renderSectionStart();
46
  self::_renderSelectItem(
47
- esc_html__( 'Focus Target', Visualizer_Plugin::NAME ),
48
  'focusTarget',
49
  $this->focusTarget,
50
  array(
51
  '' => '',
52
- 'datum' => esc_html__( 'Focus on a single data point.', Visualizer_Plugin::NAME ),
53
- 'category' => esc_html__( 'Focus on a grouping of all data points along the major axis.', Visualizer_Plugin::NAME ),
54
  ),
55
- esc_html__( 'The type of the entity that receives focus on mouse hover. Also affects which entity is selected by mouse click.', Visualizer_Plugin::NAME )
56
  );
57
 
58
  echo '<div class="section-delimiter"></div>';
59
 
60
  self::_renderSelectItem(
61
- esc_html__( 'Is Stacked', Visualizer_Plugin::NAME ),
62
  'isStacked',
63
  $this->isStacked,
64
  $this->_yesno,
65
- esc_html__( 'If set to yes, series elements are stacked.', Visualizer_Plugin::NAME )
66
  );
67
 
68
  echo '<div class="section-delimiter"></div>';
69
 
70
  self::_renderTextItem(
71
- esc_html__( 'Bars Opacity', Visualizer_Plugin::NAME ),
72
  'dataOpacity',
73
  $this->dataOpacity,
74
- esc_html__( 'Bars transparency, with 1.0 being completely opaque and 0.0 fully transparent.', Visualizer_Plugin::NAME ),
75
  '1.0'
76
  );
77
  self::_renderSectionEnd();
@@ -87,14 +85,14 @@ abstract class Visualizer_Render_Sidebar_Columnar extends Visualizer_Render_Side
87
  * @access protected
88
  */
89
  protected function _renderVerticalAxisGeneralSettings() {
90
- parent::_renderVerticalAxisGeneralSettings();
91
  self::_renderColorPickerItem(
92
- esc_html__( 'Axis Text Color', Visualizer_Plugin::NAME ),
93
  'hAxis[textStyle]',
94
  isset( $this->hAxis['textStyle'] ) ? $this->hAxis['textStyle'] : null,
95
  '#000'
96
  );
97
- }
98
 
99
  /**
100
  * Renders general settings block for vertical axis settings.
@@ -104,13 +102,13 @@ abstract class Visualizer_Render_Sidebar_Columnar extends Visualizer_Render_Side
104
  * @access protected
105
  */
106
  protected function _renderHorizontalAxisGeneralSettings() {
107
- parent::_renderHorizontalAxisGeneralSettings();
108
  self::_renderColorPickerItem(
109
- esc_html__( 'Axis Text Color', Visualizer_Plugin::NAME ),
110
  'vAxis[textStyle]',
111
  isset( $this->vAxis['textStyle'] ) ? $this->vAxis['textStyle'] : null,
112
  '#000'
113
  );
114
- }
115
 
116
- }
19
  // +----------------------------------------------------------------------+
20
  // | Author: Eugene Manuilov <eugene@manuilov.org> |
21
  // +----------------------------------------------------------------------+
 
 
22
  /**
23
  * Base class for sidebar settings of columnar based charts.
24
  *
39
  * @access protected
40
  */
41
  protected function _renderColumnarSettings() {
42
+ self::_renderGroupStart( esc_html__( 'Bars Settings', 'visualizer' ) );
43
  self::_renderSectionStart();
44
  self::_renderSelectItem(
45
+ esc_html__( 'Focus Target', 'visualizer' ),
46
  'focusTarget',
47
  $this->focusTarget,
48
  array(
49
  '' => '',
50
+ 'datum' => esc_html__( 'Focus on a single data point.', 'visualizer' ),
51
+ 'category' => esc_html__( 'Focus on a grouping of all data points along the major axis.', 'visualizer' ),
52
  ),
53
+ esc_html__( 'The type of the entity that receives focus on mouse hover. Also affects which entity is selected by mouse click.', 'visualizer' )
54
  );
55
 
56
  echo '<div class="section-delimiter"></div>';
57
 
58
  self::_renderSelectItem(
59
+ esc_html__( 'Is Stacked', 'visualizer' ),
60
  'isStacked',
61
  $this->isStacked,
62
  $this->_yesno,
63
+ esc_html__( 'If set to yes, series elements are stacked.', 'visualizer' )
64
  );
65
 
66
  echo '<div class="section-delimiter"></div>';
67
 
68
  self::_renderTextItem(
69
+ esc_html__( 'Bars Opacity', 'visualizer' ),
70
  'dataOpacity',
71
  $this->dataOpacity,
72
+ esc_html__( 'Bars transparency, with 1.0 being completely opaque and 0.0 fully transparent.', 'visualizer' ),
73
  '1.0'
74
  );
75
  self::_renderSectionEnd();
85
  * @access protected
86
  */
87
  protected function _renderVerticalAxisGeneralSettings() {
88
+ parent::_renderVerticalAxisGeneralSettings();
89
  self::_renderColorPickerItem(
90
+ esc_html__( 'Axis Text Color', 'visualizer' ),
91
  'hAxis[textStyle]',
92
  isset( $this->hAxis['textStyle'] ) ? $this->hAxis['textStyle'] : null,
93
  '#000'
94
  );
95
+ }
96
 
97
  /**
98
  * Renders general settings block for vertical axis settings.
102
  * @access protected
103
  */
104
  protected function _renderHorizontalAxisGeneralSettings() {
105
+ parent::_renderHorizontalAxisGeneralSettings();
106
  self::_renderColorPickerItem(
107
+ esc_html__( 'Axis Text Color', 'visualizer' ),
108
  'vAxis[textStyle]',
109
  isset( $this->vAxis['textStyle'] ) ? $this->vAxis['textStyle'] : null,
110
  '#000'
111
  );
112
+ }
113
 
114
+ }
classes/Visualizer/Render/Sidebar/Graph.php CHANGED
@@ -19,8 +19,6 @@
19
  // +----------------------------------------------------------------------+
20
  // | Author: Eugene Manuilov <eugene@manuilov.org> |
21
  // +----------------------------------------------------------------------+
22
-
23
-
24
  /**
25
  * Base class for sidebar settigns of graph based charts.
26
  *
@@ -79,9 +77,9 @@ abstract class Visualizer_Render_Sidebar_Graph extends Visualizer_Render_Sidebar
79
 
80
  $this->_positions = array(
81
  '' => '',
82
- 'in' => esc_html__( 'Inside the chart', Visualizer_Plugin::NAME ),
83
- 'out' => esc_html__( 'Outside the chart', Visualizer_Plugin::NAME ),
84
- 'none' => esc_html__( 'None', Visualizer_Plugin::NAME ),
85
  );
86
  }
87
 
@@ -94,22 +92,22 @@ abstract class Visualizer_Render_Sidebar_Graph extends Visualizer_Render_Sidebar
94
  */
95
  protected function _renderChartTitleSettings() {
96
  self::_renderTextItem(
97
- esc_html__( 'Chart Title', Visualizer_Plugin::NAME ),
98
  'title',
99
  $this->title,
100
- esc_html__( 'Text to display above the chart.', Visualizer_Plugin::NAME )
101
  );
102
 
103
  self::_renderSelectItem(
104
- esc_html__( 'Chart Title Position', Visualizer_Plugin::NAME ),
105
  'titlePosition',
106
  $this->titlePosition,
107
  $this->_positions,
108
- esc_html__( 'Where to place the chart title, compared to the chart area.', Visualizer_Plugin::NAME )
109
  );
110
 
111
  self::_renderColorPickerItem(
112
- esc_html__( 'Chart Title Color', Visualizer_Plugin::NAME ),
113
  'titleTextStyle[color]',
114
  isset( $this->titleTextStyle['color'] ) ? $this->titleTextStyle['color'] : null,
115
  '#000'
@@ -118,11 +116,11 @@ abstract class Visualizer_Render_Sidebar_Graph extends Visualizer_Render_Sidebar
118
  echo '<div class="section-delimiter"></div>';
119
 
120
  self::_renderSelectItem(
121
- esc_html__( 'Axes Titles Position', Visualizer_Plugin::NAME ),
122
  'axisTitlesPosition',
123
  $this->axisTitlesPosition,
124
  $this->_positions,
125
- esc_html__( 'Determines where to place the axis titles, compared to the chart area.', Visualizer_Plugin::NAME )
126
  );
127
  }
128
 
@@ -135,34 +133,34 @@ abstract class Visualizer_Render_Sidebar_Graph extends Visualizer_Render_Sidebar
135
  */
136
  protected function _renderHorizontalAxisGeneralSettings() {
137
  self::_renderTextItem(
138
- esc_html__( 'Axis Title', Visualizer_Plugin::NAME ),
139
  'hAxis[title]',
140
  isset( $this->hAxis['title'] ) ? $this->hAxis['title'] : '',
141
- esc_html__( 'The title of the horizontal axis.', Visualizer_Plugin::NAME )
142
  );
143
 
144
  self::_renderSelectItem(
145
- esc_html__( 'Text Position', Visualizer_Plugin::NAME ),
146
  'vAxis[textPosition]',
147
  isset( $this->vAxis['textPosition'] ) ? $this->vAxis['textPosition'] : '',
148
  $this->_positions,
149
- esc_html__( 'Position of the horizontal axis text, relative to the chart area.', Visualizer_Plugin::NAME )
150
  );
151
 
152
  self::_renderSelectItem(
153
- esc_html__( 'Direction', Visualizer_Plugin::NAME ),
154
  'hAxis[direction]',
155
  isset( $this->hAxis['direction'] ) ? $this->hAxis['direction'] : '',
156
  array(
157
  '' => '',
158
- '1' => esc_html__( 'Identical Direction', Visualizer_Plugin::NAME ),
159
- '-1' => esc_html__( 'Reverse Direction', Visualizer_Plugin::NAME ),
160
  ),
161
- esc_html__( 'The direction in which the values along the horizontal axis grow.', Visualizer_Plugin::NAME )
162
  );
163
 
164
  self::_renderColorPickerItem(
165
- esc_html__( 'Base Line Color', Visualizer_Plugin::NAME ),
166
  'vAxis[baselineColor]',
167
  isset( $this->vAxis['baselineColor'] ) ? $this->vAxis['baselineColor'] : null,
168
  '#000'
@@ -177,64 +175,64 @@ abstract class Visualizer_Render_Sidebar_Graph extends Visualizer_Render_Sidebar
177
  * @access protected
178
  */
179
  protected function _renderHorizontalAxisSettings() {
180
- self::_renderGroupStart( esc_html__( 'Horizontal Axis Settings', Visualizer_Plugin::NAME ) );
181
- self::_renderSectionStart( esc_html__( 'General Settings', Visualizer_Plugin::NAME ), false );
182
  $this->_renderHorizontalAxisGeneralSettings();
183
  self::_renderSectionEnd();
184
 
185
- if ( $this->_horizontalGridLines ) {
186
- self::_renderSectionStart( esc_html__( 'Grid Lines', Visualizer_Plugin::NAME ), false );
187
- self::_renderTextItem(
188
- esc_html__( 'Count', Visualizer_Plugin::NAME ),
189
- 'vAxis[gridlines][count]',
190
- isset( $this->vAxis['gridlines']['count'] ) ? $this->vAxis['gridlines']['count'] : '',
191
- esc_html__( 'The number of horizontal gridlines inside the chart area. Minimum value is 2. Specify -1 to automatically compute the number of gridlines.', Visualizer_Plugin::NAME ),
192
- 5
193
- );
194
-
195
- self::_renderColorPickerItem(
196
- esc_html__( 'Color', Visualizer_Plugin::NAME ),
197
- 'vAxis[gridlines][color]',
198
- isset( $this->vAxis['gridlines']['color'] ) ? $this->vAxis['gridlines']['color'] : null,
199
- '#ccc'
200
- );
201
- self::_renderSectionEnd();
202
-
203
- self::_renderSectionStart( esc_html__( 'Minor Grid Lines', Visualizer_Plugin::NAME ), false );
204
- self::_renderTextItem(
205
- esc_html__( 'Count', Visualizer_Plugin::NAME ),
206
- 'vAxis[minorGridlines][count]',
207
- isset( $this->vAxis['minorGridlines']['count'] ) ? $this->vAxis['minorGridlines']['count'] : '',
208
- esc_html__( 'The number of horizontal minor gridlines between two regular gridlines.', Visualizer_Plugin::NAME ),
209
- 0
210
- );
211
-
212
- self::_renderColorPickerItem(
213
- esc_html__( 'Color', Visualizer_Plugin::NAME ),
214
- 'vAxis[minorGridlines][color]',
215
- isset( $this->vAxis['minorGridlines']['color'] ) ? $this->vAxis['minorGridlines']['color'] : null,
216
- null
217
- );
218
- self::_renderSectionEnd();
219
- }
220
 
221
- if ( $this->_verticalGridLines ) {
222
- self::_renderSectionStart( esc_html__( 'View Window', Visualizer_Plugin::NAME ), false );
223
- self::_renderTextItem(
224
- esc_html__( 'Maximum Value', Visualizer_Plugin::NAME ),
225
- 'hAxis[viewWindow][max]',
226
- isset( $this->hAxis['viewWindow']['max'] ) ? $this->hAxis['viewWindow']['max'] : '',
227
- 'The maximum vertical data value to render.'
228
- );
229
-
230
- self::_renderTextItem(
231
- esc_html__( 'Minimum Value', Visualizer_Plugin::NAME ),
232
- 'hAxis[viewWindow][min]',
233
- isset( $this->hAxis['viewWindow']['min'] ) ? $this->hAxis['viewWindow']['min'] : '',
234
- 'The minimum vertical data value to render.'
235
- );
236
- self::_renderSectionEnd();
237
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
238
  self::_renderGroupEnd();
239
  }
240
 
@@ -247,34 +245,34 @@ abstract class Visualizer_Render_Sidebar_Graph extends Visualizer_Render_Sidebar
247
  */
248
  protected function _renderVerticalAxisGeneralSettings() {
249
  self::_renderTextItem(
250
- esc_html__( 'Axis Title', Visualizer_Plugin::NAME ),
251
  'vAxis[title]',
252
  isset( $this->vAxis['title'] ) ? $this->vAxis['title'] : '',
253
- esc_html__( 'The title of the vertical axis.', Visualizer_Plugin::NAME )
254
  );
255
 
256
  self::_renderSelectItem(
257
- esc_html__( 'Text Position', Visualizer_Plugin::NAME ),
258
  'hAxis[textPosition]',
259
  isset( $this->hAxis['textPosition'] ) ? $this->hAxis['textPosition'] : '',
260
  $this->_positions,
261
- esc_html__( 'Position of the vertical axis text, relative to the chart area.', Visualizer_Plugin::NAME )
262
  );
263
 
264
  self::_renderSelectItem(
265
- esc_html__( 'Direction', Visualizer_Plugin::NAME ),
266
  'vAxis[direction]',
267
  isset( $this->vAxis['direction'] ) ? $this->vAxis['direction'] : '',
268
  array(
269
  '' => '',
270
- '1' => esc_html__( 'Identical Direction', Visualizer_Plugin::NAME ),
271
- '-1' => esc_html__( 'Reverse Direction', Visualizer_Plugin::NAME ),
272
  ),
273
- esc_html__( 'The direction in which the values along the vertical axis grow.', Visualizer_Plugin::NAME )
274
  );
275
 
276
  self::_renderColorPickerItem(
277
- esc_html__( 'Base Line Color', Visualizer_Plugin::NAME ),
278
  'hAxis[baselineColor]',
279
  isset( $this->hAxis['baselineColor'] ) ? $this->hAxis['baselineColor'] : null,
280
  '#000'
@@ -289,64 +287,64 @@ abstract class Visualizer_Render_Sidebar_Graph extends Visualizer_Render_Sidebar
289
  * @access protected
290
  */
291
  protected function _renderVerticalAxisSettings() {
292
- self::_renderGroupStart( esc_html__( 'Vertical Axis Settings', Visualizer_Plugin::NAME ) );
293
- self::_renderSectionStart( esc_html__( 'General Settings', Visualizer_Plugin::NAME ), false );
294
  $this->_renderVerticalAxisGeneralSettings();
295
  self::_renderSectionEnd();
296
 
297
- if ( $this->_verticalGridLines ) {
298
- self::_renderSectionStart( esc_html__( 'Grid Lines', Visualizer_Plugin::NAME ), false );
299
- self::_renderTextItem(
300
- esc_html__( 'Count', Visualizer_Plugin::NAME ),
301
- 'hAxis[gridlines][count]',
302
- isset( $this->hAxis['gridlines']['count'] ) ? $this->hAxis['gridlines']['count'] : '',
303
- esc_html__( 'The number of vertical gridlines inside the chart area. Minimum value is 2. Specify -1 to automatically compute the number of gridlines.', Visualizer_Plugin::NAME ),
304
- 5
305
- );
306
-
307
- self::_renderColorPickerItem(
308
- esc_html__( 'Color', Visualizer_Plugin::NAME ),
309
- 'hAxis[gridlines][color]',
310
- isset( $this->hAxis['gridlines']['color'] ) ? $this->hAxis['gridlines']['color'] : null,
311
- '#ccc'
312
- );
313
- self::_renderSectionEnd();
314
-
315
- self::_renderSectionStart( esc_html__( 'Minor Grid Lines', Visualizer_Plugin::NAME ), false );
316
- self::_renderTextItem(
317
- esc_html__( 'Count', Visualizer_Plugin::NAME ),
318
- 'hAxis[minorGridlines][count]',
319
- isset( $this->hAxis['minorGridlines']['count'] ) ? $this->hAxis['minorGridlines']['count'] : '',
320
- esc_html__( 'The number of vertical minor gridlines between two regular gridlines.', Visualizer_Plugin::NAME ),
321
- 0
322
- );
323
-
324
- self::_renderColorPickerItem(
325
- esc_html__( 'Color', Visualizer_Plugin::NAME ),
326
- 'hAxis[minorGridlines][color]',
327
- isset( $this->hAxis['minorGridlines']['color'] ) ? $this->hAxis['minorGridlines']['color'] : null,
328
- null
329
- );
330
- self::_renderSectionEnd();
331
- }
332
 
333
- if ( $this->_horizontalGridLines ) {
334
- self::_renderSectionStart( esc_html__( 'View Window', Visualizer_Plugin::NAME ), false );
335
- self::_renderTextItem(
336
- esc_html__( 'Maximum Value', Visualizer_Plugin::NAME ),
337
- 'vAxis[viewWindow][max]',
338
- isset( $this->vAxis['viewWindow']['max'] ) ? $this->vAxis['viewWindow']['max'] : '',
339
- 'The maximum vertical data value to render.'
340
- );
341
-
342
- self::_renderTextItem(
343
- esc_html__( 'Minimum Value', Visualizer_Plugin::NAME ),
344
- 'vAxis[viewWindow][min]',
345
- isset( $this->vAxis['viewWindow']['min'] ) ? $this->vAxis['viewWindow']['min'] : '',
346
- 'The minimum vertical data value to render.'
347
- );
348
- self::_renderSectionEnd();
349
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
350
  self::_renderGroupEnd();
351
  }
352
 
@@ -370,14 +368,14 @@ abstract class Visualizer_Render_Sidebar_Graph extends Visualizer_Render_Sidebar
370
  * @access protected
371
  */
372
  protected function _renderSeriesSettings() {
373
- self::_renderGroupStart( esc_html__( 'Series Settings', Visualizer_Plugin::NAME ) );
374
- for ( $i = 1, $cnt = count( $this->__series ); $i < $cnt; $i++ ) {
375
- if ( !empty( $this->__series[$i]['label'] ) ) {
376
- self::_renderSectionStart( esc_html( $this->__series[$i]['label'] ), false );
377
- $this->_renderSeries( $i - 1 );
378
- self::_renderSectionEnd();
379
- }
380
  }
 
381
  self::_renderGroupEnd();
382
  }
383
 
@@ -391,23 +389,23 @@ abstract class Visualizer_Render_Sidebar_Graph extends Visualizer_Render_Sidebar
391
  */
392
  protected function _renderSeries( $index ) {
393
  self::_renderSelectItem(
394
- esc_html__( 'Visible In Legend', Visualizer_Plugin::NAME ),
395
  'series[' . $index . '][visibleInLegend]',
396
- isset( $this->series[$index]['visibleInLegend'] ) ? $this->series[$index]['visibleInLegend'] : '',
397
  array(
398
  '' => '',
399
- '0' => esc_html__( 'No', Visualizer_Plugin::NAME ),
400
- '1' => esc_html__( 'Yes', Visualizer_Plugin::NAME ),
401
  ),
402
- esc_html__( 'Determines whether the series has to be presented in the legend or not.', Visualizer_Plugin::NAME )
403
  );
404
 
405
  $this->_renderFormatField( $index );
406
 
407
  self::_renderColorPickerItem(
408
- esc_html__( 'Color', Visualizer_Plugin::NAME ),
409
  'series[' . $index . '][color]',
410
- isset( $this->series[$index]['color'] ) ? $this->series[$index]['color'] : null,
411
  null
412
  );
413
  }
@@ -421,19 +419,19 @@ abstract class Visualizer_Render_Sidebar_Graph extends Visualizer_Render_Sidebar
421
  */
422
  protected function _renderHorizontalAxisFormatField() {
423
  self::_renderTextItem(
424
- esc_html__( 'Number Format', Visualizer_Plugin::NAME ),
425
  'hAxis[format]',
426
  isset( $this->hAxis['format'] ) ? $this->hAxis['format'] : '',
427
  sprintf(
428
  '%s<br><br>%s<br><br>%s',
429
- esc_html__( 'Enter custom format pattern to apply to horizontal axis labels.', Visualizer_Plugin::NAME ),
430
  sprintf(
431
- esc_html__( 'For number axis labels, this is a subset of the decimal formatting %sICU pattern set%s. For instance, $#,###.## will display values $1,234.56 for value 1234.56. Pay attention that if you use #%% percentage format then your values will be multiplied by 100.', Visualizer_Plugin::NAME ),
432
  '<a href="http://icu-project.org/apiref/icu4c/classDecimalFormat.html#_details" target="_blank">',
433
  '</a>'
434
  ),
435
  sprintf(
436
- esc_html__( 'For date axis labels, this is a subset of the date formatting %sICU date and time format%s.', Visualizer_Plugin::NAME ),
437
  '<a href="http://userguide.icu-project.org/formatparse/datetime#TOC-Date-Time-Format-Syntax" target="_blank">',
438
  '</a>'
439
  )
@@ -450,19 +448,19 @@ abstract class Visualizer_Render_Sidebar_Graph extends Visualizer_Render_Sidebar
450
  */
451
  protected function _renderVerticalAxisFormatField() {
452
  self::_renderTextItem(
453
- esc_html__( 'Number Format', Visualizer_Plugin::NAME ),
454
  'vAxis[format]',
455
  isset( $this->vAxis['format'] ) ? $this->vAxis['format'] : '',
456
  sprintf(
457
  '%s<br><br>%s<br><br>%s',
458
- esc_html__( 'Enter custom format pattern to apply to vertical axis labels.', Visualizer_Plugin::NAME ),
459
  sprintf(
460
- esc_html__( 'For number axis labels, this is a subset of the decimal formatting %sICU pattern set%s. For instance, $#,###.## will display values $1,234.56 for value 1234.56. Pay attention that if you use #%% percentage format then your values will be multiplied by 100.', Visualizer_Plugin::NAME ),
461
  '<a href="http://icu-project.org/apiref/icu4c/classDecimalFormat.html#_details" target="_blank">',
462
  '</a>'
463
  ),
464
  sprintf(
465
- esc_html__( 'For date axis labels, this is a subset of the date formatting %sICU date and time format%s.', Visualizer_Plugin::NAME ),
466
  '<a href="http://userguide.icu-project.org/formatparse/datetime#TOC-Date-Time-Format-Syntax" target="_blank">',
467
  '</a>'
468
  )
@@ -470,4 +468,4 @@ abstract class Visualizer_Render_Sidebar_Graph extends Visualizer_Render_Sidebar
470
  );
471
  }
472
 
473
- }
19
  // +----------------------------------------------------------------------+
20
  // | Author: Eugene Manuilov <eugene@manuilov.org> |
21
  // +----------------------------------------------------------------------+
 
 
22
  /**
23
  * Base class for sidebar settigns of graph based charts.
24
  *
77
 
78
  $this->_positions = array(
79
  '' => '',
80
+ 'in' => esc_html__( 'Inside the chart', 'visualizer' ),
81
+ 'out' => esc_html__( 'Outside the chart', 'visualizer' ),
82
+ 'none' => esc_html__( 'None', 'visualizer' ),
83
  );
84
  }
85
 
92
  */
93
  protected function _renderChartTitleSettings() {
94
  self::_renderTextItem(
95
+ esc_html__( 'Chart Title', 'visualizer' ),
96
  'title',
97
  $this->title,
98
+ esc_html__( 'Text to display above the chart.', 'visualizer' )
99
  );
100
 
101
  self::_renderSelectItem(
102
+ esc_html__( 'Chart Title Position', 'visualizer' ),
103
  'titlePosition',
104
  $this->titlePosition,
105
  $this->_positions,
106
+ esc_html__( 'Where to place the chart title, compared to the chart area.', 'visualizer' )
107
  );
108
 
109
  self::_renderColorPickerItem(
110
+ esc_html__( 'Chart Title Color', 'visualizer' ),
111
  'titleTextStyle[color]',
112
  isset( $this->titleTextStyle['color'] ) ? $this->titleTextStyle['color'] : null,
113
  '#000'
116
  echo '<div class="section-delimiter"></div>';
117
 
118
  self::_renderSelectItem(
119
+ esc_html__( 'Axes Titles Position', 'visualizer' ),
120
  'axisTitlesPosition',
121
  $this->axisTitlesPosition,
122
  $this->_positions,
123
+ esc_html__( 'Determines where to place the axis titles, compared to the chart area.', 'visualizer' )
124
  );
125
  }
126
 
133
  */
134
  protected function _renderHorizontalAxisGeneralSettings() {
135
  self::_renderTextItem(
136
+ esc_html__( 'Axis Title', 'visualizer' ),
137
  'hAxis[title]',
138
  isset( $this->hAxis['title'] ) ? $this->hAxis['title'] : '',
139
+ esc_html__( 'The title of the horizontal axis.', 'visualizer' )
140
  );
141
 
142
  self::_renderSelectItem(
143
+ esc_html__( 'Text Position', 'visualizer' ),
144
  'vAxis[textPosition]',
145
  isset( $this->vAxis['textPosition'] ) ? $this->vAxis['textPosition'] : '',
146
  $this->_positions,
147
+ esc_html__( 'Position of the horizontal axis text, relative to the chart area.', 'visualizer' )
148
  );
149
 
150
  self::_renderSelectItem(
151
+ esc_html__( 'Direction', 'visualizer' ),
152
  'hAxis[direction]',
153
  isset( $this->hAxis['direction'] ) ? $this->hAxis['direction'] : '',
154
  array(
155
  '' => '',
156
+ '1' => esc_html__( 'Identical Direction', 'visualizer' ),
157
+ '-1' => esc_html__( 'Reverse Direction', 'visualizer' ),
158
  ),
159
+ esc_html__( 'The direction in which the values along the horizontal axis grow.', 'visualizer' )
160
  );
161
 
162
  self::_renderColorPickerItem(
163
+ esc_html__( 'Base Line Color', 'visualizer' ),
164
  'vAxis[baselineColor]',
165
  isset( $this->vAxis['baselineColor'] ) ? $this->vAxis['baselineColor'] : null,
166
  '#000'
175
  * @access protected
176
  */
177
  protected function _renderHorizontalAxisSettings() {
178
+ self::_renderGroupStart( esc_html__( 'Horizontal Axis Settings', 'visualizer' ) );
179
+ self::_renderSectionStart( esc_html__( 'General Settings', 'visualizer' ), false );
180
  $this->_renderHorizontalAxisGeneralSettings();
181
  self::_renderSectionEnd();
182
 
183
+ if ( $this->_horizontalGridLines ) {
184
+ self::_renderSectionStart( esc_html__( 'Grid Lines', 'visualizer' ), false );
185
+ self::_renderTextItem(
186
+ esc_html__( 'Count', 'visualizer' ),
187
+ 'vAxis[gridlines][count]',
188
+ isset( $this->vAxis['gridlines']['count'] ) ? $this->vAxis['gridlines']['count'] : '',
189
+ esc_html__( 'The number of horizontal gridlines inside the chart area. Minimum value is 2. Specify -1 to automatically compute the number of gridlines.', 'visualizer' ),
190
+ 5
191
+ );
192
+
193
+ self::_renderColorPickerItem(
194
+ esc_html__( 'Color', 'visualizer' ),
195
+ 'vAxis[gridlines][color]',
196
+ isset( $this->vAxis['gridlines']['color'] ) ? $this->vAxis['gridlines']['color'] : null,
197
+ '#ccc'
198
+ );
199
+ self::_renderSectionEnd();
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
200
 
201
+ self::_renderSectionStart( esc_html__( 'Minor Grid Lines', 'visualizer' ), false );
202
+ self::_renderTextItem(
203
+ esc_html__( 'Count', 'visualizer' ),
204
+ 'vAxis[minorGridlines][count]',
205
+ isset( $this->vAxis['minorGridlines']['count'] ) ? $this->vAxis['minorGridlines']['count'] : '',
206
+ esc_html__( 'The number of horizontal minor gridlines between two regular gridlines.', 'visualizer' ),
207
+ 0
208
+ );
209
+
210
+ self::_renderColorPickerItem(
211
+ esc_html__( 'Color', 'visualizer' ),
212
+ 'vAxis[minorGridlines][color]',
213
+ isset( $this->vAxis['minorGridlines']['color'] ) ? $this->vAxis['minorGridlines']['color'] : null,
214
+ null
215
+ );
216
+ self::_renderSectionEnd();
217
+ }
218
+
219
+ if ( $this->_verticalGridLines ) {
220
+ self::_renderSectionStart( esc_html__( 'View Window', 'visualizer' ), false );
221
+ self::_renderTextItem(
222
+ esc_html__( 'Maximum Value', 'visualizer' ),
223
+ 'hAxis[viewWindow][max]',
224
+ isset( $this->hAxis['viewWindow']['max'] ) ? $this->hAxis['viewWindow']['max'] : '',
225
+ 'The maximum vertical data value to render.'
226
+ );
227
+
228
+ self::_renderTextItem(
229
+ esc_html__( 'Minimum Value', 'visualizer' ),
230
+ 'hAxis[viewWindow][min]',
231
+ isset( $this->hAxis['viewWindow']['min'] ) ? $this->hAxis['viewWindow']['min'] : '',
232
+ 'The minimum vertical data value to render.'
233
+ );
234
+ self::_renderSectionEnd();
235
+ }
236
  self::_renderGroupEnd();
237
  }
238
 
245
  */
246
  protected function _renderVerticalAxisGeneralSettings() {
247
  self::_renderTextItem(
248
+ esc_html__( 'Axis Title', 'visualizer' ),
249
  'vAxis[title]',
250
  isset( $this->vAxis['title'] ) ? $this->vAxis['title'] : '',
251
+ esc_html__( 'The title of the vertical axis.', 'visualizer' )
252
  );
253
 
254
  self::_renderSelectItem(
255
+ esc_html__( 'Text Position', 'visualizer' ),
256
  'hAxis[textPosition]',
257
  isset( $this->hAxis['textPosition'] ) ? $this->hAxis['textPosition'] : '',
258
  $this->_positions,
259
+ esc_html__( 'Position of the vertical axis text, relative to the chart area.', 'visualizer' )
260
  );
261
 
262
  self::_renderSelectItem(
263
+ esc_html__( 'Direction', 'visualizer' ),
264
  'vAxis[direction]',
265
  isset( $this->vAxis['direction'] ) ? $this->vAxis['direction'] : '',
266
  array(
267
  '' => '',
268
+ '1' => esc_html__( 'Identical Direction', 'visualizer' ),
269
+ '-1' => esc_html__( 'Reverse Direction', 'visualizer' ),
270
  ),
271
+ esc_html__( 'The direction in which the values along the vertical axis grow.', 'visualizer' )
272
  );
273
 
274
  self::_renderColorPickerItem(
275
+ esc_html__( 'Base Line Color', 'visualizer' ),
276
  'hAxis[baselineColor]',
277
  isset( $this->hAxis['baselineColor'] ) ? $this->hAxis['baselineColor'] : null,
278
  '#000'
287
  * @access protected
288
  */
289
  protected function _renderVerticalAxisSettings() {
290
+ self::_renderGroupStart( esc_html__( 'Vertical Axis Settings', 'visualizer' ) );
291
+ self::_renderSectionStart( esc_html__( 'General Settings', 'visualizer' ), false );
292
  $this->_renderVerticalAxisGeneralSettings();
293
  self::_renderSectionEnd();
294
 
295
+ if ( $this->_verticalGridLines ) {
296
+ self::_renderSectionStart( esc_html__( 'Grid Lines', 'visualizer' ), false );
297
+ self::_renderTextItem(
298
+ esc_html__( 'Count', 'visualizer' ),
299
+ 'hAxis[gridlines][count]',
300
+ isset( $this->hAxis['gridlines']['count'] ) ? $this->hAxis['gridlines']['count'] : '',
301
+ esc_html__( 'The number of vertical gridlines inside the chart area. Minimum value is 2. Specify -1 to automatically compute the number of gridlines.', 'visualizer' ),
302
+ 5
303
+ );
304
+
305
+ self::_renderColorPickerItem(
306
+ esc_html__( 'Color', 'visualizer' ),
307
+ 'hAxis[gridlines][color]',
308
+ isset( $this->hAxis['gridlines']['color'] ) ? $this->hAxis['gridlines']['color'] : null,
309
+ '#ccc'
310
+ );
311
+ self::_renderSectionEnd();
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
312
 
313
+ self::_renderSectionStart( esc_html__( 'Minor Grid Lines', 'visualizer' ), false );
314
+ self::_renderTextItem(
315
+ esc_html__( 'Count', 'visualizer' ),
316
+ 'hAxis[minorGridlines][count]',
317
+ isset( $this->hAxis['minorGridlines']['count'] ) ? $this->hAxis['minorGridlines']['count'] : '',
318
+ esc_html__( 'The number of vertical minor gridlines between two regular gridlines.', 'visualizer' ),
319
+ 0
320
+ );
321
+
322
+ self::_renderColorPickerItem(
323
+ esc_html__( 'Color', 'visualizer' ),
324
+ 'hAxis[minorGridlines][color]',
325
+ isset( $this->hAxis['minorGridlines']['color'] ) ? $this->hAxis['minorGridlines']['color'] : null,
326
+ null
327
+ );
328
+ self::_renderSectionEnd();
329
+ }
330
+
331
+ if ( $this->_horizontalGridLines ) {
332
+ self::_renderSectionStart( esc_html__( 'View Window', 'visualizer' ), false );
333
+ self::_renderTextItem(
334
+ esc_html__( 'Maximum Value', 'visualizer' ),
335
+ 'vAxis[viewWindow][max]',
336
+ isset( $this->vAxis['viewWindow']['max'] ) ? $this->vAxis['viewWindow']['max'] : '',
337
+ 'The maximum vertical data value to render.'
338
+ );
339
+
340
+ self::_renderTextItem(
341
+ esc_html__( 'Minimum Value', 'visualizer' ),
342
+ 'vAxis[viewWindow][min]',
343
+ isset( $this->vAxis['viewWindow']['min'] ) ? $this->vAxis['viewWindow']['min'] : '',
344
+ 'The minimum vertical data value to render.'
345
+ );
346
+ self::_renderSectionEnd();
347
+ }
348
  self::_renderGroupEnd();
349
  }
350
 
368
  * @access protected
369
  */
370
  protected function _renderSeriesSettings() {
371
+ self::_renderGroupStart( esc_html__( 'Series Settings', 'visualizer' ) );
372
+ for ( $i = 1, $cnt = count( $this->__series ); $i < $cnt; $i++ ) {
373
+ if ( ! empty( $this->__series[ $i ]['label'] ) ) {
374
+ self::_renderSectionStart( esc_html( $this->__series[ $i ]['label'] ), false );
375
+ $this->_renderSeries( $i - 1 );
376
+ self::_renderSectionEnd();
 
377
  }
378
+ }
379
  self::_renderGroupEnd();
380
  }
381
 
389
  */
390
  protected function _renderSeries( $index ) {
391
  self::_renderSelectItem(
392
+ esc_html__( 'Visible In Legend', 'visualizer' ),
393
  'series[' . $index . '][visibleInLegend]',
394
+ isset( $this->series[ $index ]['visibleInLegend'] ) ? $this->series[ $index ]['visibleInLegend'] : '',
395
  array(
396
  '' => '',
397
+ '0' => esc_html__( 'No', 'visualizer' ),
398
+ '1' => esc_html__( 'Yes', 'visualizer' ),
399
  ),
400
+ esc_html__( 'Determines whether the series has to be presented in the legend or not.', 'visualizer' )
401
  );
402
 
403
  $this->_renderFormatField( $index );
404
 
405
  self::_renderColorPickerItem(
406
+ esc_html__( 'Color', 'visualizer' ),
407
  'series[' . $index . '][color]',
408
+ isset( $this->series[ $index ]['color'] ) ? $this->series[ $index ]['color'] : null,
409
  null
410
  );
411
  }
419
  */
420
  protected function _renderHorizontalAxisFormatField() {
421
  self::_renderTextItem(
422
+ esc_html__( 'Number Format', 'visualizer' ),
423
  'hAxis[format]',
424
  isset( $this->hAxis['format'] ) ? $this->hAxis['format'] : '',
425
  sprintf(
426
  '%s<br><br>%s<br><br>%s',
427
+ esc_html__( 'Enter custom format pattern to apply to horizontal axis labels.', 'visualizer' ),
428
  sprintf(
429
+ esc_html__( 'For number axis labels, this is a subset of the decimal formatting %1$sICU pattern set%1$s. For instance, $#,###.## will display values $1,234.56 for value 1234.56. Pay attention that if you use #%3$% percentage format then your values will be multiplied by 100.', 'visualizer' ),
430
  '<a href="http://icu-project.org/apiref/icu4c/classDecimalFormat.html#_details" target="_blank">',
431
  '</a>'
432
  ),
433
  sprintf(
434
+ esc_html__( 'For date axis labels, this is a subset of the date formatting %1$sICU date and time format%1$s.', 'visualizer' ),
435
  '<a href="http://userguide.icu-project.org/formatparse/datetime#TOC-Date-Time-Format-Syntax" target="_blank">',
436
  '</a>'
437
  )
448
  */
449
  protected function _renderVerticalAxisFormatField() {
450
  self::_renderTextItem(
451
+ esc_html__( 'Number Format', 'visualizer' ),
452
  'vAxis[format]',
453
  isset( $this->vAxis['format'] ) ? $this->vAxis['format'] : '',
454
  sprintf(
455
  '%s<br><br>%s<br><br>%s',
456
+ esc_html__( 'Enter custom format pattern to apply to vertical axis labels.', 'visualizer' ),
457
  sprintf(
458
+ esc_html__( 'For number axis labels, this is a subset of the decimal formatting %1$sICU pattern set%1$s. For instance, $#,###.## will display values $1,234.56 for value 1234.56. Pay attention that if you use #%3$% percentage format then your values will be multiplied by 100.', 'visualizer' ),
459
  '<a href="http://icu-project.org/apiref/icu4c/classDecimalFormat.html#_details" target="_blank">',
460
  '</a>'
461
  ),
462
  sprintf(
463
+ esc_html__( 'For date axis labels, this is a subset of the date formatting %1$sICU date and time format%1$s.', 'visualizer' ),
464
  '<a href="http://userguide.icu-project.org/formatparse/datetime#TOC-Date-Time-Format-Syntax" target="_blank">',
465
  '</a>'
466
  )
468
  );
469
  }
470
 
471
+ }
classes/Visualizer/Render/Sidebar/Linear.php CHANGED
@@ -19,8 +19,6 @@
19
  // +----------------------------------------------------------------------+
20
  // | Author: Eugene Manuilov <eugene@manuilov.org> |
21
  // +----------------------------------------------------------------------+
22
-
23
-
24
  /**
25
  * Base class for sidebar settings of linear based charts.
26
  *
@@ -79,8 +77,8 @@ abstract class Visualizer_Render_Sidebar_Linear extends Visualizer_Render_Sideba
79
 
80
  $this->_curveTypes = array(
81
  '' => '',
82
- 'none' => esc_html__( 'Straight line without curve', Visualizer_Plugin::NAME ),
83
- 'function' => esc_html__( 'The angles of the line will be smoothed', Visualizer_Plugin::NAME ),
84
  );
85
  }
86
 
@@ -95,7 +93,7 @@ abstract class Visualizer_Render_Sidebar_Linear extends Visualizer_Render_Sideba
95
  parent::_renderHorizontalAxisGeneralSettings();
96
 
97
  self::_renderColorPickerItem(
98
- esc_html__( 'Axis Text Color', Visualizer_Plugin::NAME ),
99
  'vAxis[textStyle]',
100
  isset( $this->vAxis['textStyle'] ) ? $this->vAxis['textStyle'] : null,
101
  '#000'
@@ -115,7 +113,7 @@ abstract class Visualizer_Render_Sidebar_Linear extends Visualizer_Render_Sideba
115
  parent::_renderVerticalAxisGeneralSettings();
116
 
117
  self::_renderColorPickerItem(
118
- esc_html__( 'Axis Text Color', Visualizer_Plugin::NAME ),
119
  'hAxis[textStyle]',
120
  isset( $this->hAxis['textStyle'] ) ? $this->hAxis['textStyle'] : null,
121
  '#000'
@@ -134,7 +132,7 @@ abstract class Visualizer_Render_Sidebar_Linear extends Visualizer_Render_Sideba
134
  protected function _renderLineSettingsItems() {
135
  echo '<div class="section-item">';
136
  echo '<a class="more-info" href="javascript:;">[?]</a>';
137
- echo '<b>', esc_html__( 'Line Width And Point Size', Visualizer_Plugin::NAME ), '</b>';
138
 
139
  echo '<table class="section-table" cellspacing="0" cellpadding="0" border="0">';
140
  echo '<tr>';
@@ -148,17 +146,17 @@ abstract class Visualizer_Render_Sidebar_Linear extends Visualizer_Render_Sideba
148
  echo '</table>';
149
 
150
  echo '<p class="section-description">';
151
- esc_html_e( 'Data line width and diameter of displayed points in pixels. Use zero to hide all lines or points.', Visualizer_Plugin::NAME );
152
  echo '</p>';
153
  echo '</div>';
154
 
155
  if ( $this->_includeCurveTypes ) {
156
  self::_renderSelectItem(
157
- esc_html__( 'Curve Type', Visualizer_Plugin::NAME ),
158
  'curveType',
159
  $this->curveType,
160
  $this->_curveTypes,
161
- esc_html__( 'Determines whether the series has to be presented in the legend or not.', Visualizer_Plugin::NAME )
162
  );
163
  }
164
 
@@ -166,51 +164,51 @@ abstract class Visualizer_Render_Sidebar_Linear extends Visualizer_Render_Sideba
166
 
167
  if ( $this->_includeFocusTarget ) {
168
  self::_renderSelectItem(
169
- esc_html__( 'Focus Target', Visualizer_Plugin::NAME ),
170
  'focusTarget',
171
  $this->focusTarget,
172
  array(
173
  '' => '',
174
- 'datum' => esc_html__( 'Focus on a single data point.', Visualizer_Plugin::NAME ),
175
- 'category' => esc_html__( 'Focus on a grouping of all data points along the major axis.', Visualizer_Plugin::NAME ),
176
  ),
177
- esc_html__( 'The type of the entity that receives focus on mouse hover. Also affects which entity is selected by mouse click.', Visualizer_Plugin::NAME )
178
  );
179
  }
180
 
181
  self::_renderSelectItem(
182
- esc_html__( 'Selection Mode', Visualizer_Plugin::NAME ),
183
  'selectionMode',
184
  $this->selectionMode,
185
  array(
186
  '' => '',
187
- 'single' => esc_html__( 'Single data point', Visualizer_Plugin::NAME ),
188
- 'multiple' => esc_html__( 'Multiple data points', Visualizer_Plugin::NAME ),
189
  ),
190
- esc_html__( 'Determines how many data points an user can select on a chart.', Visualizer_Plugin::NAME )
191
  );
192
 
193
  self::_renderSelectItem(
194
- esc_html__( 'Aggregation Target', Visualizer_Plugin::NAME ),
195
  'aggregationTarget',
196
  $this->aggregationTarget,
197
  array(
198
  '' => '',
199
- 'category' => esc_html__( 'Group selected data by x-value', Visualizer_Plugin::NAME ),
200
- 'series' => esc_html__( 'Group selected data by series', Visualizer_Plugin::NAME ),
201
- 'auto' => esc_html__( 'Group selected data by x-value if all selections have the same x-value, and by series otherwise', Visualizer_Plugin::NAME ),
202
- 'none' => esc_html__( 'Show only one tooltip per selection', Visualizer_Plugin::NAME ),
203
  ),
204
- esc_html__( 'Determines how multiple data selections are rolled up into tooltips. To make it working you need to set multiple selection mode and tooltip trigger to display it when an user selects an element.', Visualizer_Plugin::NAME )
205
  );
206
 
207
  echo '<div class="section-delimiter"></div>';
208
 
209
  self::_renderTextItem(
210
- esc_html__( 'Point Opacity', Visualizer_Plugin::NAME ),
211
  'dataOpacity',
212
  $this->dataOpacity,
213
- esc_html__( 'The transparency of data points, with 1.0 being completely opaque and 0.0 fully transparent.', Visualizer_Plugin::NAME ),
214
  '1.0'
215
  );
216
  }
@@ -223,7 +221,7 @@ abstract class Visualizer_Render_Sidebar_Linear extends Visualizer_Render_Sideba
223
  * @access protected
224
  */
225
  protected function _renderLineSettings() {
226
- self::_renderGroupStart( esc_html__( 'Lines Settings', Visualizer_Plugin::NAME ) );
227
  self::_renderSectionStart();
228
  $this->_renderLineSettingsItems();
229
  self::_renderSectionEnd();
@@ -240,36 +238,36 @@ abstract class Visualizer_Render_Sidebar_Linear extends Visualizer_Render_Sideba
240
  */
241
  protected function _renderSeries( $index ) {
242
  self::_renderSelectItem(
243
- esc_html__( 'Visible In Legend', Visualizer_Plugin::NAME ),
244
  'series[' . $index . '][visibleInLegend]',
245
- isset( $this->series[$index]['visibleInLegend'] ) ? $this->series[$index]['visibleInLegend'] : '',
246
  array(
247
  '' => '',
248
- '0' => esc_html__( 'No', Visualizer_Plugin::NAME ),
249
- '1' => esc_html__( 'Yes', Visualizer_Plugin::NAME ),
250
  ),
251
- esc_html__( 'Determines whether the series has to be presented in the legend or not.', Visualizer_Plugin::NAME )
252
  );
253
 
254
  echo '<div class="section-item">';
255
  echo '<a class="more-info" href="javascript:;">[?]</a>';
256
- echo '<b>', esc_html__( 'Line Width And Point Size', Visualizer_Plugin::NAME ), '</b>';
257
 
258
  echo '<table class="section-table" cellspacing="0" cellpadding="0" border="0">';
259
  echo '<tr>';
260
  echo '<td class="section-table-column">';
261
- $line_width = isset( $this->series[$index]['lineWidth'] ) ? $this->series[$index]['lineWidth'] : '';
262
  echo '<input type="text" name="series[', $index, '][lineWidth]" class="control-text" value="', esc_attr( $line_width ), '" placeholder="2">';
263
  echo '</td>';
264
  echo '<td class="section-table-column">';
265
- $point_size = isset( $this->series[$index]['pointSize'] ) ? $this->series[$index]['pointSize'] : '';
266
  echo '<input type="text" name="series[', $index, '][pointSize]" class="control-text" value="', esc_attr( $point_size ), '" placeholder="0">';
267
  echo '</td>';
268
  echo '</tr>';
269
  echo '</table>';
270
 
271
  echo '<p class="section-description">';
272
- esc_html_e( 'Overrides the global line width and point size values for this series.', Visualizer_Plugin::NAME );
273
  echo '</p>';
274
  echo '</div>';
275
 
@@ -277,20 +275,20 @@ abstract class Visualizer_Render_Sidebar_Linear extends Visualizer_Render_Sideba
277
 
278
  if ( $this->_includeCurveTypes ) {
279
  self::_renderSelectItem(
280
- esc_html__( 'Curve Type', Visualizer_Plugin::NAME ),
281
  'series[' . $index . '][curveType]',
282
- isset( $this->series[$index]['curveType'] ) ? $this->series[$index]['curveType'] : '',
283
  $this->_curveTypes,
284
- esc_html__( 'Determines whether the series has to be presented in the legend or not.', Visualizer_Plugin::NAME )
285
  );
286
  }
287
 
288
  self::_renderColorPickerItem(
289
- esc_html__( 'Color', Visualizer_Plugin::NAME ),
290
  'series[' . $index . '][color]',
291
- isset( $this->series[$index]['color'] ) ? $this->series[$index]['color'] : null,
292
  null
293
  );
294
  }
295
 
296
- }
19
  // +----------------------------------------------------------------------+
20
  // | Author: Eugene Manuilov <eugene@manuilov.org> |
21
  // +----------------------------------------------------------------------+
 
 
22
  /**
23
  * Base class for sidebar settings of linear based charts.
24
  *
77
 
78
  $this->_curveTypes = array(
79
  '' => '',
80
+ 'none' => esc_html__( 'Straight line without curve', 'visualizer' ),
81
+ 'function' => esc_html__( 'The angles of the line will be smoothed', 'visualizer' ),
82
  );
83
  }
84
 
93
  parent::_renderHorizontalAxisGeneralSettings();
94
 
95
  self::_renderColorPickerItem(
96
+ esc_html__( 'Axis Text Color', 'visualizer' ),
97
  'vAxis[textStyle]',
98
  isset( $this->vAxis['textStyle'] ) ? $this->vAxis['textStyle'] : null,
99
  '#000'
113
  parent::_renderVerticalAxisGeneralSettings();
114
 
115
  self::_renderColorPickerItem(
116
+ esc_html__( 'Axis Text Color', 'visualizer' ),
117
  'hAxis[textStyle]',
118
  isset( $this->hAxis['textStyle'] ) ? $this->hAxis['textStyle'] : null,
119
  '#000'
132
  protected function _renderLineSettingsItems() {
133
  echo '<div class="section-item">';
134
  echo '<a class="more-info" href="javascript:;">[?]</a>';
135
+ echo '<b>', esc_html__( 'Line Width And Point Size', 'visualizer' ), '</b>';
136
 
137
  echo '<table class="section-table" cellspacing="0" cellpadding="0" border="0">';
138
  echo '<tr>';
146
  echo '</table>';
147
 
148
  echo '<p class="section-description">';
149
+ esc_html_e( 'Data line width and diameter of displayed points in pixels. Use zero to hide all lines or points.', 'visualizer' );
150
  echo '</p>';
151
  echo '</div>';
152
 
153
  if ( $this->_includeCurveTypes ) {
154
  self::_renderSelectItem(
155
+ esc_html__( 'Curve Type', 'visualizer' ),
156
  'curveType',
157
  $this->curveType,
158
  $this->_curveTypes,
159
+ esc_html__( 'Determines whether the series has to be presented in the legend or not.', 'visualizer' )
160
  );
161
  }
162
 
164
 
165
  if ( $this->_includeFocusTarget ) {
166
  self::_renderSelectItem(
167
+ esc_html__( 'Focus Target', 'visualizer' ),
168
  'focusTarget',
169
  $this->focusTarget,
170
  array(
171
  '' => '',
172
+ 'datum' => esc_html__( 'Focus on a single data point.', 'visualizer' ),
173
+ 'category' => esc_html__( 'Focus on a grouping of all data points along the major axis.', 'visualizer' ),
174
  ),
175
+ esc_html__( 'The type of the entity that receives focus on mouse hover. Also affects which entity is selected by mouse click.', 'visualizer' )
176
  );
177
  }
178
 
179
  self::_renderSelectItem(
180
+ esc_html__( 'Selection Mode', 'visualizer' ),
181
  'selectionMode',
182
  $this->selectionMode,
183
  array(
184
  '' => '',
185
+ 'single' => esc_html__( 'Single data point', 'visualizer' ),
186
+ 'multiple' => esc_html__( 'Multiple data points', 'visualizer' ),
187
  ),
188
+ esc_html__( 'Determines how many data points an user can select on a chart.', 'visualizer' )
189
  );
190
 
191
  self::_renderSelectItem(
192
+ esc_html__( 'Aggregation Target', 'visualizer' ),
193
  'aggregationTarget',
194
  $this->aggregationTarget,
195
  array(
196
  '' => '',
197
+ 'category' => esc_html__( 'Group selected data by x-value', 'visualizer' ),
198
+ 'series' => esc_html__( 'Group selected data by series', 'visualizer' ),
199
+ 'auto' => esc_html__( 'Group selected data by x-value if all selections have the same x-value, and by series otherwise', 'visualizer' ),
200
+ 'none' => esc_html__( 'Show only one tooltip per selection', 'visualizer' ),
201
  ),
202
+ esc_html__( 'Determines how multiple data selections are rolled up into tooltips. To make it working you need to set multiple selection mode and tooltip trigger to display it when an user selects an element.', 'visualizer' )
203
  );
204
 
205
  echo '<div class="section-delimiter"></div>';
206
 
207
  self::_renderTextItem(
208
+ esc_html__( 'Point Opacity', 'visualizer' ),
209
  'dataOpacity',
210
  $this->dataOpacity,
211
+ esc_html__( 'The transparency of data points, with 1.0 being completely opaque and 0.0 fully transparent.', 'visualizer' ),
212
  '1.0'
213
  );
214
  }
221
  * @access protected
222
  */
223
  protected function _renderLineSettings() {
224
+ self::_renderGroupStart( esc_html__( 'Lines Settings', 'visualizer' ) );
225
  self::_renderSectionStart();
226
  $this->_renderLineSettingsItems();
227
  self::_renderSectionEnd();
238
  */
239
  protected function _renderSeries( $index ) {
240
  self::_renderSelectItem(
241
+ esc_html__( 'Visible In Legend', 'visualizer' ),
242
  'series[' . $index . '][visibleInLegend]',
243
+ isset( $this->series[ $index ]['visibleInLegend'] ) ? $this->series[ $index ]['visibleInLegend'] : '',
244
  array(
245
  '' => '',
246
+ '0' => esc_html__( 'No', 'visualizer' ),
247
+ '1' => esc_html__( 'Yes', 'visualizer' ),
248
  ),
249
+ esc_html__( 'Determines whether the series has to be presented in the legend or not.', 'visualizer' )
250
  );
251
 
252
  echo '<div class="section-item">';
253
  echo '<a class="more-info" href="javascript:;">[?]</a>';
254
+ echo '<b>', esc_html__( 'Line Width And Point Size', 'visualizer' ), '</b>';
255
 
256
  echo '<table class="section-table" cellspacing="0" cellpadding="0" border="0">';
257
  echo '<tr>';
258
  echo '<td class="section-table-column">';
259
+ $line_width = isset( $this->series[ $index ]['lineWidth'] ) ? $this->series[ $index ]['lineWidth'] : '';
260
  echo '<input type="text" name="series[', $index, '][lineWidth]" class="control-text" value="', esc_attr( $line_width ), '" placeholder="2">';
261
  echo '</td>';
262
  echo '<td class="section-table-column">';
263
+ $point_size = isset( $this->series[ $index ]['pointSize'] ) ? $this->series[ $index ]['pointSize'] : '';
264
  echo '<input type="text" name="series[', $index, '][pointSize]" class="control-text" value="', esc_attr( $point_size ), '" placeholder="0">';
265
  echo '</td>';
266
  echo '</tr>';
267
  echo '</table>';
268
 
269
  echo '<p class="section-description">';
270
+ esc_html_e( 'Overrides the global line width and point size values for this series.', 'visualizer' );
271
  echo '</p>';
272
  echo '</div>';
273
 
275
 
276
  if ( $this->_includeCurveTypes ) {
277
  self::_renderSelectItem(
278
+ esc_html__( 'Curve Type', 'visualizer' ),
279
  'series[' . $index . '][curveType]',
280
+ isset( $this->series[ $index ]['curveType'] ) ? $this->series[ $index ]['curveType'] : '',
281
  $this->_curveTypes,
282
+ esc_html__( 'Determines whether the series has to be presented in the legend or not.', 'visualizer' )
283
  );
284
  }
285
 
286
  self::_renderColorPickerItem(
287
+ esc_html__( 'Color', 'visualizer' ),
288
  'series[' . $index . '][color]',
289
+ isset( $this->series[ $index ]['color'] ) ? $this->series[ $index ]['color'] : null,
290
  null
291
  );
292
  }
293
 
294
+ }
classes/Visualizer/Render/Sidebar/Type/Area.php CHANGED
@@ -19,8 +19,6 @@
19
  // +----------------------------------------------------------------------+
20
  // | Author: Eugene Manuilov <eugene@manuilov.org> |
21
  // +----------------------------------------------------------------------+
22
-
23
-
24
  /**
25
  * Class for area chart sidebar settings.
26
  *
@@ -40,7 +38,7 @@ class Visualizer_Render_Sidebar_Type_Area extends Visualizer_Render_Sidebar_Line
40
  * @access public
41
  * @param array $data The data what has to be associated with this render.
42
  */
43
- public function __construct( $data = array( ) ) {
44
  parent::__construct( $data );
45
  $this->_includeCurveTypes = false;
46
  }
@@ -71,21 +69,21 @@ class Visualizer_Render_Sidebar_Type_Area extends Visualizer_Render_Sidebar_Line
71
  parent::_renderLineSettingsItems();
72
 
73
  self::_renderTextItem(
74
- esc_html__( 'Area Opacity', Visualizer_Plugin::NAME ),
75
  'areaOpacity',
76
  $this->areaOpacity,
77
- esc_html__( 'The default opacity of the colored area under an area chart series, where 0.0 is fully transparent and 1.0 is fully opaque. To specify opacity for an individual series, set the area opacity value in the series property.', Visualizer_Plugin::NAME ),
78
  '0.3'
79
  );
80
 
81
  echo '<div class="section-delimiter"></div>';
82
 
83
  self::_renderSelectItem(
84
- esc_html__( 'Is Stacked', Visualizer_Plugin::NAME ),
85
  'isStacked',
86
  $this->isStacked,
87
  $this->_yesno,
88
- esc_html__( 'If set to yes, series elements are stacked.', Visualizer_Plugin::NAME )
89
  );
90
  }
91
 
@@ -99,55 +97,55 @@ class Visualizer_Render_Sidebar_Type_Area extends Visualizer_Render_Sidebar_Line
99
  */
100
  protected function _renderSeries( $index ) {
101
  self::_renderSelectItem(
102
- esc_html__( 'Visible In Legend', Visualizer_Plugin::NAME ),
103
  'series[' . $index . '][visibleInLegend]',
104
- isset( $this->series[$index]['visibleInLegend'] ) ? $this->series[$index]['visibleInLegend'] : '',
105
  array(
106
  '' => '',
107
- '0' => esc_html__( 'No', Visualizer_Plugin::NAME ),
108
- '1' => esc_html__( 'Yes', Visualizer_Plugin::NAME ),
109
  ),
110
- esc_html__( 'Determines whether the series has to be presented in the legend or not.', Visualizer_Plugin::NAME )
111
  );
112
 
113
  echo '<div class="section-item">';
114
  echo '<a class="more-info" href="javascript:;">[?]</a>';
115
- echo '<b>', esc_html__( 'Line Width And Point Size', Visualizer_Plugin::NAME ), '</b>';
116
 
117
  echo '<table class="section-table" cellspacing="0" cellpadding="0" border="0">';
118
  echo '<tr>';
119
  echo '<td class="section-table-column">';
120
- $line_width = isset( $this->series[$index]['lineWidth'] ) ? $this->series[$index]['lineWidth'] : '';
121
  echo '<input type="text" name="series[', $index, '][lineWidth]" class="control-text" value="', esc_attr( $line_width ), '" placeholder="2">';
122
  echo '</td>';
123
  echo '<td class="section-table-column">';
124
- $point_size = isset( $this->series[$index]['pointSize'] ) ? $this->series[$index]['pointSize'] : '';
125
  echo '<input type="text" name="series[', $index, '][pointSize]" class="control-text" value="', esc_attr( $point_size ), '" placeholder="0">';
126
  echo '</td>';
127
  echo '</tr>';
128
  echo '</table>';
129
 
130
  echo '<p class="section-description">';
131
- esc_html_e( 'Overrides the global line width and point size values for this series.', Visualizer_Plugin::NAME );
132
  echo '</p>';
133
  echo '</div>';
134
 
135
  $this->_renderFormatField( $index );
136
 
137
  self::_renderTextItem(
138
- esc_html__( 'Area Opacity', Visualizer_Plugin::NAME ),
139
  'series[' . $index . '][areaOpacity]',
140
- isset( $this->series[$index]['areaOpacity'] ) ? $this->series[$index]['areaOpacity'] : null,
141
- esc_html__( 'The opacity of the colored area, where 0.0 is fully transparent and 1.0 is fully opaque.', Visualizer_Plugin::NAME ),
142
  '0.3'
143
  );
144
 
145
  self::_renderColorPickerItem(
146
- esc_html__( 'Color', Visualizer_Plugin::NAME ),
147
  'series[' . $index . '][color]',
148
- isset( $this->series[$index]['color'] ) ? $this->series[$index]['color'] : null,
149
  null
150
  );
151
  }
152
 
153
- }
19
  // +----------------------------------------------------------------------+
20
  // | Author: Eugene Manuilov <eugene@manuilov.org> |
21
  // +----------------------------------------------------------------------+
 
 
22
  /**
23
  * Class for area chart sidebar settings.
24
  *
38
  * @access public
39
  * @param array $data The data what has to be associated with this render.
40
  */
41
+ public function __construct( $data = array() ) {
42
  parent::__construct( $data );
43
  $this->_includeCurveTypes = false;
44
  }
69
  parent::_renderLineSettingsItems();
70
 
71
  self::_renderTextItem(
72
+ esc_html__( 'Area Opacity', 'visualizer' ),
73
  'areaOpacity',
74
  $this->areaOpacity,
75
+ esc_html__( 'The default opacity of the colored area under an area chart series, where 0.0 is fully transparent and 1.0 is fully opaque. To specify opacity for an individual series, set the area opacity value in the series property.', 'visualizer' ),
76
  '0.3'
77
  );
78
 
79
  echo '<div class="section-delimiter"></div>';
80
 
81
  self::_renderSelectItem(
82
+ esc_html__( 'Is Stacked', 'visualizer' ),
83
  'isStacked',
84
  $this->isStacked,
85
  $this->_yesno,
86
+ esc_html__( 'If set to yes, series elements are stacked.', 'visualizer' )
87
  );
88
  }
89
 
97
  */
98
  protected function _renderSeries( $index ) {
99
  self::_renderSelectItem(
100
+ esc_html__( 'Visible In Legend', 'visualizer' ),
101
  'series[' . $index . '][visibleInLegend]',
102
+ isset( $this->series[ $index ]['visibleInLegend'] ) ? $this->series[ $index ]['visibleInLegend'] : '',
103
  array(
104
  '' => '',
105
+ '0' => esc_html__( 'No', 'visualizer' ),
106
+ '1' => esc_html__( 'Yes', 'visualizer' ),
107
  ),
108
+ esc_html__( 'Determines whether the series has to be presented in the legend or not.', 'visualizer' )
109
  );
110
 
111
  echo '<div class="section-item">';
112
  echo '<a class="more-info" href="javascript:;">[?]</a>';
113
+ echo '<b>', esc_html__( 'Line Width And Point Size', 'visualizer' ), '</b>';
114
 
115
  echo '<table class="section-table" cellspacing="0" cellpadding="0" border="0">';
116
  echo '<tr>';
117
  echo '<td class="section-table-column">';
118
+ $line_width = isset( $this->series[ $index ]['lineWidth'] ) ? $this->series[ $index ]['lineWidth'] : '';
119
  echo '<input type="text" name="series[', $index, '][lineWidth]" class="control-text" value="', esc_attr( $line_width ), '" placeholder="2">';
120
  echo '</td>';
121
  echo '<td class="section-table-column">';
122
+ $point_size = isset( $this->series[ $index ]['pointSize'] ) ? $this->series[ $index ]['pointSize'] : '';
123
  echo '<input type="text" name="series[', $index, '][pointSize]" class="control-text" value="', esc_attr( $point_size ), '" placeholder="0">';
124
  echo '</td>';
125
  echo '</tr>';
126
  echo '</table>';
127
 
128
  echo '<p class="section-description">';
129
+ esc_html_e( 'Overrides the global line width and point size values for this series.', 'visualizer' );
130
  echo '</p>';
131
  echo '</div>';
132
 
133
  $this->_renderFormatField( $index );
134
 
135
  self::_renderTextItem(
136
+ esc_html__( 'Area Opacity', 'visualizer' ),
137
  'series[' . $index . '][areaOpacity]',
138
+ isset( $this->series[ $index ]['areaOpacity'] ) ? $this->series[ $index ]['areaOpacity'] : null,
139
+ esc_html__( 'The opacity of the colored area, where 0.0 is fully transparent and 1.0 is fully opaque.', 'visualizer' ),
140
  '0.3'
141
  );
142
 
143
  self::_renderColorPickerItem(
144
+ esc_html__( 'Color', 'visualizer' ),
145
  'series[' . $index . '][color]',
146
+ isset( $this->series[ $index ]['color'] ) ? $this->series[ $index ]['color'] : null,
147
  null
148
  );
149
  }
150
 
151
+ }
classes/Visualizer/Render/Sidebar/Type/Bar.php CHANGED
@@ -19,8 +19,6 @@
19
  // +----------------------------------------------------------------------+
20
  // | Author: Eugene Manuilov <eugene@manuilov.org> |
21
  // +----------------------------------------------------------------------+
22
-
23
-
24
  /**
25
  * Class for bar chart sidebar settings.
26
  *
@@ -40,7 +38,7 @@ class Visualizer_Render_Sidebar_Type_Bar extends Visualizer_Render_Sidebar_Colum
40
  * @access public
41
  * @param array $data The data what has to be associated with this render.
42
  */
43
- public function __construct( $data = array( ) ) {
44
  parent::__construct( $data );
45
 
46
  // disable horizontal gridlines settings
@@ -74,4 +72,4 @@ class Visualizer_Render_Sidebar_Type_Bar extends Visualizer_Render_Sidebar_Colum
74
  $this->_renderViewSettings();
75
  }
76
 
77
- }
19
  // +----------------------------------------------------------------------+
20
  // | Author: Eugene Manuilov <eugene@manuilov.org> |
21
  // +----------------------------------------------------------------------+
 
 
22
  /**
23
  * Class for bar chart sidebar settings.
24
  *
38
  * @access public
39
  * @param array $data The data what has to be associated with this render.
40
  */
41
+ public function __construct( $data = array() ) {
42
  parent::__construct( $data );
43
 
44
  // disable horizontal gridlines settings
72
  $this->_renderViewSettings();
73
  }
74
 
75
+ }
classes/Visualizer/Render/Sidebar/Type/Candlestick.php CHANGED
@@ -19,8 +19,6 @@
19
  // +----------------------------------------------------------------------+
20
  // | Author: Eugene Manuilov <eugene@manuilov.org> |
21
  // +----------------------------------------------------------------------+
22
-
23
-
24
  /**
25
  * Class for candlestick chart sidebar settings.
26
  *
@@ -55,93 +53,93 @@ class Visualizer_Render_Sidebar_Type_Candlestick extends Visualizer_Render_Sideb
55
  * @access protected
56
  */
57
  protected function _renderLineSettings() {
58
- self::_renderGroupStart( esc_html__( 'Candles Settings', Visualizer_Plugin::NAME ) );
59
  self::_renderSectionStart();
60
  self::_renderSelectItem(
61
- esc_html__( 'Focus Target', Visualizer_Plugin::NAME ),
62
  'focusTarget',
63
  $this->focusTarget,
64
  array(
65
  '' => '',
66
- 'datum' => esc_html__( 'Focus on a single data point.', Visualizer_Plugin::NAME ),
67
- 'category' => esc_html__( 'Focus on a grouping of all data points along the major axis.', Visualizer_Plugin::NAME ),
68
  ),
69
- esc_html__( 'The type of the entity that receives focus on mouse hover. Also affects which entity is selected by mouse click.', Visualizer_Plugin::NAME )
70
  );
71
 
72
  echo '<div class="section-delimiter"></div>';
73
 
74
  self::_renderSelectItem(
75
- esc_html__( 'Selection Mode', Visualizer_Plugin::NAME ),
76
  'selectionMode',
77
  $this->selectionMode,
78
  array(
79
  '' => '',
80
- 'single' => esc_html__( 'Single data point', Visualizer_Plugin::NAME ),
81
- 'multiple' => esc_html__( 'Multiple data points', Visualizer_Plugin::NAME ),
82
  ),
83
- esc_html__( 'Determines how many data points an user can select on a chart.', Visualizer_Plugin::NAME )
84
  );
85
 
86
  self::_renderSelectItem(
87
- esc_html__( 'Aggregation Target', Visualizer_Plugin::NAME ),
88
  'aggregationTarget',
89
  $this->aggregationTarget,
90
  array(
91
  '' => '',
92
- 'category' => esc_html__( 'Group selected data by x-value', Visualizer_Plugin::NAME ),
93
- 'series' => esc_html__( 'Group selected data by series', Visualizer_Plugin::NAME ),
94
- 'auto' => esc_html__( 'Group selected data by x-value if all selections have the same x-value, and by series otherwise', Visualizer_Plugin::NAME ),
95
- 'none' => esc_html__( 'Show only one tooltip per selection', Visualizer_Plugin::NAME ),
96
  ),
97
- esc_html__( 'Determines how multiple data selections are rolled up into tooltips. To make it working you need to set multiple selection mode and tooltip trigger to display it when an user selects an element.', Visualizer_Plugin::NAME )
98
  );
99
  self::_renderSectionEnd();
100
 
101
- self::_renderSectionStart( esc_html__( 'Failing Candles', Visualizer_Plugin::NAME ), false );
102
  self::_renderTextItem(
103
- esc_html__( 'Stroke Width', Visualizer_Plugin::NAME ),
104
  'candlestick[fallingColor][strokeWidth]',
105
  isset( $this->candlestick['fallingColor']['strokeWidth'] ) ? $this->candlestick['fallingColor']['strokeWidth'] : null,
106
- esc_html__( 'The stroke width of falling candles.', Visualizer_Plugin::NAME ),
107
  '2'
108
  );
109
 
110
  self::_renderColorPickerItem(
111
- esc_html__( 'Stroke Color', Visualizer_Plugin::NAME ),
112
  'candlestick[fallingColor][stroke]',
113
- !empty( $this->candlestick['fallingColor']['stroke'] ) ? $this->candlestick['fallingColor']['stroke'] : null,
114
  null
115
  );
116
 
117
  self::_renderColorPickerItem(
118
- esc_html__( 'Fill Color', Visualizer_Plugin::NAME ),
119
  'candlestick[fallingColor][fill]',
120
- !empty( $this->candlestick['fallingColor']['fill'] ) ? $this->candlestick['fallingColor']['fill'] : null,
121
  null
122
  );
123
  self::_renderSectionEnd();
124
 
125
- self::_renderSectionStart( esc_html__( 'Rising Candles', Visualizer_Plugin::NAME ), false );
126
  self::_renderTextItem(
127
- esc_html__( 'Stroke Width', Visualizer_Plugin::NAME ),
128
  'candlestick[risingColor][strokeWidth]',
129
  isset( $this->candlestick['risingColor']['strokeWidth'] ) ? $this->candlestick['risingColor']['strokeWidth'] : null,
130
- esc_html__( 'The stroke width of rising candles.', Visualizer_Plugin::NAME ),
131
  '2'
132
  );
133
 
134
  self::_renderColorPickerItem(
135
- esc_html__( 'Stroke Color', Visualizer_Plugin::NAME ),
136
  'candlestick[risingColor][stroke]',
137
- !empty( $this->candlestick['risingColor']['stroke'] ) ? $this->candlestick['risingColor']['stroke'] : null,
138
  null
139
  );
140
 
141
  self::_renderColorPickerItem(
142
- esc_html__( 'Fill Color', Visualizer_Plugin::NAME ),
143
  'candlestick[risingColor][fill]',
144
- !empty( $this->candlestick['risingColor']['fill'] ) ? $this->candlestick['risingColor']['fill'] : null,
145
  null
146
  );
147
  self::_renderSectionEnd();
@@ -158,23 +156,23 @@ class Visualizer_Render_Sidebar_Type_Candlestick extends Visualizer_Render_Sideb
158
  */
159
  protected function _renderSeries( $index ) {
160
  self::_renderSelectItem(
161
- esc_html__( 'Visible In Legend', Visualizer_Plugin::NAME ),
162
  'series[' . $index . '][visibleInLegend]',
163
- isset( $this->series[$index]['visibleInLegend'] ) ? $this->series[$index]['visibleInLegend'] : '',
164
  array(
165
  '' => '',
166
- '0' => esc_html__( 'No', Visualizer_Plugin::NAME ),
167
- '1' => esc_html__( 'Yes', Visualizer_Plugin::NAME ),
168
  ),
169
- esc_html__( 'Determines whether the series has to be presented in the legend or not.', Visualizer_Plugin::NAME )
170
  );
171
 
172
  self::_renderColorPickerItem(
173
- esc_html__( 'Color', Visualizer_Plugin::NAME ),
174
  'series[' . $index . '][color]',
175
- isset( $this->series[$index]['color'] ) ? $this->series[$index]['color'] : null,
176
  null
177
  );
178
  }
179
 
180
- }
19
  // +----------------------------------------------------------------------+
20
  // | Author: Eugene Manuilov <eugene@manuilov.org> |
21
  // +----------------------------------------------------------------------+
 
 
22
  /**
23
  * Class for candlestick chart sidebar settings.
24
  *
53
  * @access protected
54
  */
55
  protected function _renderLineSettings() {
56
+ self::_renderGroupStart( esc_html__( 'Candles Settings', 'visualizer' ) );
57
  self::_renderSectionStart();
58
  self::_renderSelectItem(
59
+ esc_html__( 'Focus Target', 'visualizer' ),
60
  'focusTarget',
61
  $this->focusTarget,
62
  array(
63
  '' => '',
64
+ 'datum' => esc_html__( 'Focus on a single data point.', 'visualizer' ),
65
+ 'category' => esc_html__( 'Focus on a grouping of all data points along the major axis.', 'visualizer' ),
66
  ),
67
+ esc_html__( 'The type of the entity that receives focus on mouse hover. Also affects which entity is selected by mouse click.', 'visualizer' )
68
  );
69
 
70
  echo '<div class="section-delimiter"></div>';
71
 
72
  self::_renderSelectItem(
73
+ esc_html__( 'Selection Mode', 'visualizer' ),
74
  'selectionMode',
75
  $this->selectionMode,
76
  array(
77
  '' => '',
78
+ 'single' => esc_html__( 'Single data point', 'visualizer' ),
79
+ 'multiple' => esc_html__( 'Multiple data points', 'visualizer' ),
80
  ),
81
+ esc_html__( 'Determines how many data points an user can select on a chart.', 'visualizer' )
82
  );
83
 
84
  self::_renderSelectItem(
85
+ esc_html__( 'Aggregation Target', 'visualizer' ),
86
  'aggregationTarget',
87
  $this->aggregationTarget,
88
  array(
89
  '' => '',
90
+ 'category' => esc_html__( 'Group selected data by x-value', 'visualizer' ),
91
+ 'series' => esc_html__( 'Group selected data by series', 'visualizer' ),
92
+ 'auto' => esc_html__( 'Group selected data by x-value if all selections have the same x-value, and by series otherwise', 'visualizer' ),
93
+ 'none' => esc_html__( 'Show only one tooltip per selection', 'visualizer' ),
94
  ),
95
+ esc_html__( 'Determines how multiple data selections are rolled up into tooltips. To make it working you need to set multiple selection mode and tooltip trigger to display it when an user selects an element.', 'visualizer' )
96
  );
97
  self::_renderSectionEnd();
98
 
99
+ self::_renderSectionStart( esc_html__( 'Failing Candles', 'visualizer' ), false );
100
  self::_renderTextItem(
101
+ esc_html__( 'Stroke Width', 'visualizer' ),
102
  'candlestick[fallingColor][strokeWidth]',
103
  isset( $this->candlestick['fallingColor']['strokeWidth'] ) ? $this->candlestick['fallingColor']['strokeWidth'] : null,
104
+ esc_html__( 'The stroke width of falling candles.', 'visualizer' ),
105
  '2'
106
  );
107
 
108
  self::_renderColorPickerItem(
109
+ esc_html__( 'Stroke Color', 'visualizer' ),
110
  'candlestick[fallingColor][stroke]',
111
+ ! empty( $this->candlestick['fallingColor']['stroke'] ) ? $this->candlestick['fallingColor']['stroke'] : null,
112
  null
113
  );
114
 
115
  self::_renderColorPickerItem(
116
+ esc_html__( 'Fill Color', 'visualizer' ),
117
  'candlestick[fallingColor][fill]',
118
+ ! empty( $this->candlestick['fallingColor']['fill'] ) ? $this->candlestick['fallingColor']['fill'] : null,
119
  null
120
  );
121
  self::_renderSectionEnd();
122
 
123
+ self::_renderSectionStart( esc_html__( 'Rising Candles', 'visualizer' ), false );
124
  self::_renderTextItem(
125
+ esc_html__( 'Stroke Width', 'visualizer' ),
126
  'candlestick[risingColor][strokeWidth]',
127
  isset( $this->candlestick['risingColor']['strokeWidth'] ) ? $this->candlestick['risingColor']['strokeWidth'] : null,
128
+ esc_html__( 'The stroke width of rising candles.', 'visualizer' ),
129
  '2'
130
  );
131
 
132
  self::_renderColorPickerItem(
133
+ esc_html__( 'Stroke Color', 'visualizer' ),
134
  'candlestick[risingColor][stroke]',
135
+ ! empty( $this->candlestick['risingColor']['stroke'] ) ? $this->candlestick['risingColor']['stroke'] : null,
136
  null
137
  );
138
 
139
  self::_renderColorPickerItem(
140
+ esc_html__( 'Fill Color', 'visualizer' ),
141
  'candlestick[risingColor][fill]',
142
+ ! empty( $this->candlestick['risingColor']['fill'] ) ? $this->candlestick['risingColor']['fill'] : null,
143
  null
144
  );
145
  self::_renderSectionEnd();
156
  */
157
  protected function _renderSeries( $index ) {
158
  self::_renderSelectItem(
159
+ esc_html__( 'Visible In Legend', 'visualizer' ),
160
  'series[' . $index . '][visibleInLegend]',
161
+ isset( $this->series[ $index ]['visibleInLegend'] ) ? $this->series[ $index ]['visibleInLegend'] : '',
162
  array(
163
  '' => '',
164
+ '0' => esc_html__( 'No', 'visualizer' ),
165
+ '1' => esc_html__( 'Yes', 'visualizer' ),
166
  ),
167
+ esc_html__( 'Determines whether the series has to be presented in the legend or not.', 'visualizer' )
168
  );
169
 
170
  self::_renderColorPickerItem(
171
+ esc_html__( 'Color', 'visualizer' ),
172
  'series[' . $index . '][color]',
173
+ isset( $this->series[ $index ]['color'] ) ? $this->series[ $index ]['color'] : null,
174
  null
175
  );
176
  }
177
 
178
+ }
classes/Visualizer/Render/Sidebar/Type/Column.php CHANGED
@@ -19,8 +19,6 @@
19
  // +----------------------------------------------------------------------+
20
  // | Author: Eugene Manuilov <eugene@manuilov.org> |
21
  // +----------------------------------------------------------------------+
22
-
23
-
24
  /**
25
  * Class for column chart sidebar settings.
26
  *
@@ -40,7 +38,7 @@ class Visualizer_Render_Sidebar_Type_Column extends Visualizer_Render_Sidebar_Co
40
  * @access public
41
  * @param array $data The data what has to be associated with this render.
42
  */
43
- public function __construct( $data = array( ) ) {
44
  parent::__construct( $data );
45
 
46
  // disable vertical gridlines settings
@@ -74,4 +72,4 @@ class Visualizer_Render_Sidebar_Type_Column extends Visualizer_Render_Sidebar_Co
74
  $this->_renderViewSettings();
75
  }
76
 
77
- }
19
  // +----------------------------------------------------------------------+
20
  // | Author: Eugene Manuilov <eugene@manuilov.org> |
21
  // +----------------------------------------------------------------------+
 
 
22
  /**
23
  * Class for column chart sidebar settings.
24
  *
38
  * @access public
39
  * @param array $data The data what has to be associated with this render.
40
  */
41
+ public function __construct( $data = array() ) {
42
  parent::__construct( $data );
43
 
44
  // disable vertical gridlines settings
72
  $this->_renderViewSettings();
73
  }
74
 
75
+ }
classes/Visualizer/Render/Sidebar/Type/Gauge.php CHANGED
@@ -19,8 +19,6 @@
19
  // +----------------------------------------------------------------------+
20
  // | Author: Eugene Manuilov <eugene@manuilov.org> |
21
  // +----------------------------------------------------------------------+
22
-
23
-
24
  /**
25
  * Class for gauge chart sidebar settings.
26
  *
@@ -55,12 +53,12 @@ class Visualizer_Render_Sidebar_Type_Gauge extends Visualizer_Render_Sidebar {
55
  * @access protected
56
  */
57
  protected function _renderGeneralSettings() {
58
- self::_renderGroupStart( esc_html__( 'General Settings', Visualizer_Plugin::NAME ) );
59
  self::_renderSectionStart();
60
 
61
  echo '<div class="section-item">';
62
  echo '<a class="more-info" href="javascript:;">[?]</a>';
63
- echo '<b>', esc_html__( 'Min And Max Values', Visualizer_Plugin::NAME ), '</b>';
64
 
65
  echo '<table class="section-table" cellspacing="0" cellpadding="0" border="0">';
66
  echo '<tr>';
@@ -74,15 +72,15 @@ class Visualizer_Render_Sidebar_Type_Gauge extends Visualizer_Render_Sidebar {
74
  echo '</table>';
75
 
76
  echo '<p class="section-description">';
77
- esc_html_e( 'The maximal and minimal values of the gauge.', Visualizer_Plugin::NAME );
78
  echo '</p>';
79
  echo '</div>';
80
 
81
  self::_renderTextItem(
82
- esc_html__( 'Minor Ticks', Visualizer_Plugin::NAME ),
83
  'minorTicks',
84
  $this->minorTicks,
85
- esc_html__( 'The number of minor tick section in each major tick section.', Visualizer_Plugin::NAME ),
86
  2
87
  );
88
 
@@ -100,13 +98,13 @@ class Visualizer_Render_Sidebar_Type_Gauge extends Visualizer_Render_Sidebar {
100
  * @access protected
101
  */
102
  protected function _renderGreenColorSettings() {
103
- self::_renderGroupStart( esc_html__( 'Green Color', Visualizer_Plugin::NAME ) );
104
  self::_renderSectionStart();
105
- self::_renderSectionDescription( esc_html__( 'Configure the green section of the gauge chart.', Visualizer_Plugin::NAME ) );
106
 
107
  echo '<div class="section-item">';
108
  echo '<a class="more-info" href="javascript:;">[?]</a>';
109
- echo '<b>', esc_html__( 'From And To Range', Visualizer_Plugin::NAME ), '</b>';
110
 
111
  echo '<table class="section-table" cellspacing="0" cellpadding="0" border="0">';
112
  echo '<tr>';
@@ -120,12 +118,12 @@ class Visualizer_Render_Sidebar_Type_Gauge extends Visualizer_Render_Sidebar {
120
  echo '</table>';
121
 
122
  echo '<p class="section-description">';
123
- esc_html_e( 'The lowest and highest values for a range marked by a green color.', Visualizer_Plugin::NAME );
124
  echo '</p>';
125
  echo '</div>';
126
 
127
  self::_renderColorPickerItem(
128
- esc_html__( 'Green Color', Visualizer_Plugin::NAME ),
129
  'greenColor',
130
  $this->greenColor,
131
  '#109618'
@@ -142,13 +140,13 @@ class Visualizer_Render_Sidebar_Type_Gauge extends Visualizer_Render_Sidebar {
142
  * @access protected
143
  */
144
  protected function _renderYellowColorSettings() {
145
- self::_renderGroupStart( esc_html__( 'Yellow Color', Visualizer_Plugin::NAME ) );
146
  self::_renderSectionStart();
147
- self::_renderSectionDescription( esc_html__( 'Configure the yellow section of the gauge chart.', Visualizer_Plugin::NAME ) );
148
 
149
  echo '<div class="section-item">';
150
  echo '<a class="more-info" href="javascript:;">[?]</a>';
151
- echo '<b>', esc_html__( 'From And To Range', Visualizer_Plugin::NAME ), '</b>';
152
 
153
  echo '<table class="section-table" cellspacing="0" cellpadding="0" border="0">';
154
  echo '<tr>';
@@ -162,12 +160,12 @@ class Visualizer_Render_Sidebar_Type_Gauge extends Visualizer_Render_Sidebar {
162
  echo '</table>';
163
 
164
  echo '<p class="section-description">';
165
- esc_html_e( 'The lowest and highest values for a range marked by a yellow color.', Visualizer_Plugin::NAME );
166
  echo '</p>';
167
  echo '</div>';
168
 
169
  self::_renderColorPickerItem(
170
- esc_html__( 'Yellow Color', Visualizer_Plugin::NAME ),
171
  'yellowColor',
172
  $this->yellowColor,
173
  '#FF9900'
@@ -184,13 +182,13 @@ class Visualizer_Render_Sidebar_Type_Gauge extends Visualizer_Render_Sidebar {
184
  * @access protected
185
  */
186
  protected function _renderRedColorSettings() {
187
- self::_renderGroupStart( esc_html__( 'Red Color', Visualizer_Plugin::NAME ) );
188
  self::_renderSectionStart();
189
- self::_renderSectionDescription( esc_html__( 'Configure the red section of the gauge chart.', Visualizer_Plugin::NAME ) );
190
 
191
  echo '<div class="section-item">';
192
  echo '<a class="more-info" href="javascript:;">[?]</a>';
193
- echo '<b>', esc_html__( 'From And To Range', Visualizer_Plugin::NAME ), '</b>';
194
 
195
  echo '<table class="section-table" cellspacing="0" cellpadding="0" border="0">';
196
  echo '<tr>';
@@ -204,12 +202,12 @@ class Visualizer_Render_Sidebar_Type_Gauge extends Visualizer_Render_Sidebar {
204
  echo '</table>';
205
 
206
  echo '<p class="section-description">';
207
- esc_html_e( 'The lowest and highest values for a range marked by a red color.', Visualizer_Plugin::NAME );
208
  echo '</p>';
209
  echo '</div>';
210
 
211
  self::_renderColorPickerItem(
212
- esc_html__( 'Red Color', Visualizer_Plugin::NAME ),
213
  'redColor',
214
  $this->redColor,
215
  '#DC3912'
@@ -226,13 +224,13 @@ class Visualizer_Render_Sidebar_Type_Gauge extends Visualizer_Render_Sidebar {
226
  * @access protected
227
  */
228
  protected function _renderViewSettings() {
229
- self::_renderGroupStart( esc_html__( 'Layout & Chart Area', Visualizer_Plugin::NAME ) );
230
  self::_renderSectionStart();
231
- self::_renderSectionDescription( esc_html__( 'Configure the total size of the chart. Two formats are supported: a number, or a number followed by %. A simple number is a value in pixels; a number followed by % is a percentage.', Visualizer_Plugin::NAME ) );
232
 
233
  echo '<div class="section-item">';
234
  echo '<a class="more-info" href="javascript:;">[?]</a>';
235
- echo '<b>', esc_html__( 'Width And Height Of Chart', Visualizer_Plugin::NAME ), '</b>';
236
 
237
  echo '<table class="section-table" cellspacing="0" cellpadding="0" border="0">';
238
  echo '<tr>';
@@ -246,11 +244,11 @@ class Visualizer_Render_Sidebar_Type_Gauge extends Visualizer_Render_Sidebar {
246
  echo '</table>';
247
 
248
  echo '<p class="section-description">';
249
- esc_html_e( 'Determines the total width and height of the chart.', Visualizer_Plugin::NAME );
250
  echo '</p>';
251
  echo '</div>';
252
  self::_renderSectionEnd();
253
  self::_renderGroupEnd();
254
  }
255
 
256
- }
19
  // +----------------------------------------------------------------------+
20
  // | Author: Eugene Manuilov <eugene@manuilov.org> |
21
  // +----------------------------------------------------------------------+
 
 
22
  /**
23
  * Class for gauge chart sidebar settings.
24
  *
53
  * @access protected
54
  */
55
  protected function _renderGeneralSettings() {
56
+ self::_renderGroupStart( esc_html__( 'General Settings', 'visualizer' ) );
57
  self::_renderSectionStart();
58
 
59
  echo '<div class="section-item">';
60
  echo '<a class="more-info" href="javascript:;">[?]</a>';
61
+ echo '<b>', esc_html__( 'Min And Max Values', 'visualizer' ), '</b>';
62
 
63
  echo '<table class="section-table" cellspacing="0" cellpadding="0" border="0">';
64
  echo '<tr>';
72
  echo '</table>';
73
 
74
  echo '<p class="section-description">';
75
+ esc_html_e( 'The maximal and minimal values of the gauge.', 'visualizer' );
76
  echo '</p>';
77
  echo '</div>';
78
 
79
  self::_renderTextItem(
80
+ esc_html__( 'Minor Ticks', 'visualizer' ),
81
  'minorTicks',
82
  $this->minorTicks,
83
+ esc_html__( 'The number of minor tick section in each major tick section.', 'visualizer' ),
84
  2
85
  );
86
 
98
  * @access protected
99
  */
100
  protected function _renderGreenColorSettings() {
101
+ self::_renderGroupStart( esc_html__( 'Green Color', 'visualizer' ) );
102
  self::_renderSectionStart();
103
+ self::_renderSectionDescription( esc_html__( 'Configure the green section of the gauge chart.', 'visualizer' ) );
104
 
105
  echo '<div class="section-item">';
106
  echo '<a class="more-info" href="javascript:;">[?]</a>';
107
+ echo '<b>', esc_html__( 'From And To Range', 'visualizer' ), '</b>';
108
 
109
  echo '<table class="section-table" cellspacing="0" cellpadding="0" border="0">';
110
  echo '<tr>';
118
  echo '</table>';
119
 
120
  echo '<p class="section-description">';
121
+ esc_html_e( 'The lowest and highest values for a range marked by a green color.', 'visualizer' );
122
  echo '</p>';
123
  echo '</div>';
124
 
125
  self::_renderColorPickerItem(
126
+ esc_html__( 'Green Color', 'visualizer' ),
127
  'greenColor',
128
  $this->greenColor,
129
  '#109618'
140
  * @access protected
141
  */
142
  protected function _renderYellowColorSettings() {
143
+ self::_renderGroupStart( esc_html__( 'Yellow Color', 'visualizer' ) );
144
  self::_renderSectionStart();
145
+ self::_renderSectionDescription( esc_html__( 'Configure the yellow section of the gauge chart.', 'visualizer' ) );
146
 
147
  echo '<div class="section-item">';
148
  echo '<a class="more-info" href="javascript:;">[?]</a>';
149
+ echo '<b>', esc_html__( 'From And To Range', 'visualizer' ), '</b>';
150
 
151
  echo '<table class="section-table" cellspacing="0" cellpadding="0" border="0">';
152
  echo '<tr>';
160
  echo '</table>';
161
 
162
  echo '<p class="section-description">';
163
+ esc_html_e( 'The lowest and highest values for a range marked by a yellow color.', 'visualizer' );
164
  echo '</p>';
165
  echo '</div>';
166
 
167
  self::_renderColorPickerItem(
168
+ esc_html__( 'Yellow Color', 'visualizer' ),
169
  'yellowColor',
170
  $this->yellowColor,
171
  '#FF9900'
182
  * @access protected
183
  */
184
  protected function _renderRedColorSettings() {
185
+ self::_renderGroupStart( esc_html__( 'Red Color', 'visualizer' ) );
186
  self::_renderSectionStart();
187
+ self::_renderSectionDescription( esc_html__( 'Configure the red section of the gauge chart.', 'visualizer' ) );
188
 
189
  echo '<div class="section-item">';
190
  echo '<a class="more-info" href="javascript:;">[?]</a>';
191
+ echo '<b>', esc_html__( 'From And To Range', 'visualizer' ), '</b>';
192
 
193
  echo '<table class="section-table" cellspacing="0" cellpadding="0" border="0">';
194
  echo '<tr>';
202
  echo '</table>';
203
 
204
  echo '<p class="section-description">';
205
+ esc_html_e( 'The lowest and highest values for a range marked by a red color.', 'visualizer' );
206
  echo '</p>';
207
  echo '</div>';
208
 
209
  self::_renderColorPickerItem(
210
+ esc_html__( 'Red Color', 'visualizer' ),
211
  'redColor',
212
  $this->redColor,
213
  '#DC3912'
224
  * @access protected
225
  */
226
  protected function _renderViewSettings() {
227
+ self::_renderGroupStart( esc_html__( 'Layout & Chart Area', 'visualizer' ) );
228
  self::_renderSectionStart();
229
+ self::_renderSectionDescription( esc_html__( 'Configure the total size of the chart. Two formats are supported: a number, or a number followed by %. A simple number is a value in pixels; a number followed by % is a percentage.', 'visualizer' ) );
230
 
231
  echo '<div class="section-item">';
232
  echo '<a class="more-info" href="javascript:;">[?]</a>';
233
+ echo '<b>', esc_html__( 'Width And Height Of Chart', 'visualizer' ), '</b>';
234
 
235
  echo '<table class="section-table" cellspacing="0" cellpadding="0" border="0">';
236
  echo '<tr>';
244
  echo '</table>';
245
 
246
  echo '<p class="section-description">';
247
+ esc_html_e( 'Determines the total width and height of the chart.', 'visualizer' );
248
  echo '</p>';
249
  echo '</div>';
250
  self::_renderSectionEnd();
251
  self::_renderGroupEnd();
252
  }
253
 
254
+ }
classes/Visualizer/Render/Sidebar/Type/Geo.php CHANGED
@@ -19,8 +19,6 @@
19
  // +----------------------------------------------------------------------+
20
  // | Author: Eugene Manuilov <eugene@manuilov.org> |
21
  // +----------------------------------------------------------------------+
22
-
23
-
24
  /**
25
  * Class for geo chart sidebar settings.
26
  *
@@ -55,20 +53,20 @@ class Visualizer_Render_Sidebar_Type_Geo extends Visualizer_Render_Sidebar {
55
  * @access protected
56
  */
57
  protected function _renderMapSettings() {
58
- self::_renderGroupStart( esc_html__( 'Map Settings', Visualizer_Plugin::NAME ) );
59
- self::_renderSectionStart( esc_html__( 'Region', Visualizer_Plugin::NAME ), false );
60
  self::_renderSectionDescription(
61
- esc_html__( 'Configure the region area to display on the map. (Surrounding areas will be displayed as well.) Can be one of the following:' ) .
62
  '<ul>' .
63
- '<li>' . esc_html__( "'world' - A map of the entire world.", Visualizer_Plugin::NAME ) . '</li>' .
64
- '<li>' . sprintf( esc_html__( "A continent or a sub-continent, specified by its %s code, e.g., '011' for Western Africa.", Visualizer_Plugin::NAME ), '<a href="https://google-developers.appspot.com/chart/interactive/docs/gallery/geochart#Continent_Hierarchy" target="_blank">3-digit</a>' ) . '</li>' .
65
- '<li>' . sprintf( esc_html__( "A country, specified by its %s code, e.g., 'AU' for Australia.", Visualizer_Plugin::NAME ), '<a href="http://en.wikipedia.org/wiki/ISO_3166-1_alpha-2" target="_blank">ISO 3166-1 alpha-2</a>' ) . '</li>' .
66
- '<li>' . sprintf( esc_html__( "A state in the United States, specified by its %s code, e.g., 'US-AL' for Alabama. Note that the resolution option must be set to either 'provinces' or 'metros'.", Visualizer_Plugin::NAME ), '<a href="http://en.wikipedia.org/wiki/ISO_3166-2:US" target="_blank">ISO 3166-2:US</a>' ) . '</li>' .
67
  '</ul>'
68
  );
69
 
70
  self::_renderTextItem(
71
- esc_html__( 'Region', Visualizer_Plugin::NAME ),
72
  'region',
73
  $this->region,
74
  '',
@@ -76,56 +74,56 @@ class Visualizer_Render_Sidebar_Type_Geo extends Visualizer_Render_Sidebar {
76
  );
77
 
78
  self::_renderSectionEnd();
79
- self::_renderSectionStart( esc_html__( 'Resolution', Visualizer_Plugin::NAME ), false );
80
 
81
  self::_renderSectionDescription(
82
- esc_html__( 'The resolution of the map borders. Choose one of the following values:' ) .
83
  '<ul>' .
84
- '<li>' . esc_html__( "'countries' - Supported for all regions, except for US state regions.", Visualizer_Plugin::NAME ) . '</li>' .
85
- '<li>' . esc_html__( "'provinces' - Supported only for country regions and US state regions. Not supported for all countries; please test a country to see whether this option is supported.", Visualizer_Plugin::NAME ) . '</li>' .
86
- '<li>' . esc_html__( "'metros' - Supported for the US country region and US state regions only.", Visualizer_Plugin::NAME ) . '</li>' .
87
  '</ul>'
88
  );
89
 
90
  self::_renderSelectItem(
91
- esc_html__( 'Resolution', Visualizer_Plugin::NAME ),
92
  'resolution',
93
  $this->resolution,
94
  array(
95
  '' => '',
96
- 'countries' => esc_html__( 'Countries', Visualizer_Plugin::NAME ),
97
- 'provinces' => esc_html__( 'Provinces', Visualizer_Plugin::NAME ),
98
- 'metros' => esc_html__( 'Metros', Visualizer_Plugin::NAME ),
99
  ),
100
  ''
101
  );
102
 
103
  self::_renderSectionEnd();
104
- self::_renderSectionStart( esc_html__( 'Display Mode', Visualizer_Plugin::NAME ), false );
105
 
106
  self::_renderSectionDescription(
107
- esc_html__( 'Determines which type of map this is. The following values are supported:' ) .
108
  '<ul>' .
109
- '<li>' . esc_html__( "'auto' - Choose based on the format of the data.", Visualizer_Plugin::NAME ) . '</li>' .
110
- '<li>' . esc_html__( "'regions' - This is a region map.", Visualizer_Plugin::NAME ) . '</li>' .
111
- '<li>' . esc_html__( "'markers' - This is a marker map.", Visualizer_Plugin::NAME ) . '</li>' .
112
  '</ul>'
113
  );
114
 
115
  self::_renderSelectItem(
116
- esc_html__( 'Display Mode', Visualizer_Plugin::NAME ),
117
  'displayMode',
118
  $this->displayMode,
119
  array(
120
  '' => '',
121
- 'auto' => esc_html__( 'Auto', Visualizer_Plugin::NAME ),
122
- 'regions' => esc_html__( 'Regions', Visualizer_Plugin::NAME ),
123
- 'markers' => esc_html__( 'Markers', Visualizer_Plugin::NAME ),
124
  ),
125
  ''
126
  );
127
  self::_renderSectionEnd();
128
- self::_renderSectionStart( esc_html__( 'Tooltip', Visualizer_Plugin::NAME ), false );
129
  $this->_renderTooltipSettigns();
130
  self::_renderSectionEnd();
131
  self::_renderGroupEnd();
@@ -140,15 +138,15 @@ class Visualizer_Render_Sidebar_Type_Geo extends Visualizer_Render_Sidebar {
140
  */
141
  protected function _renderTooltipSettigns() {
142
  self::_renderSelectItem(
143
- esc_html__( 'Trigger', Visualizer_Plugin::NAME ),
144
  'tooltip[trigger]',
145
  isset( $this->tooltip['trigger'] ) ? $this->tooltip['trigger'] : null,
146
  array(
147
  '' => '',
148
- 'focus' => esc_html__( 'The tooltip will be displayed when the user hovers over an element', Visualizer_Plugin::NAME ),
149
- 'none' => esc_html__( 'The tooltip will not be displayed', Visualizer_Plugin::NAME ),
150
  ),
151
- esc_html__( 'Determines the user interaction that causes the tooltip to be displayed.', Visualizer_Plugin::NAME )
152
  );
153
  }
154
 
@@ -160,13 +158,13 @@ class Visualizer_Render_Sidebar_Type_Geo extends Visualizer_Render_Sidebar {
160
  * @access protected
161
  */
162
  protected function _renderColorAxisSettings() {
163
- self::_renderGroupStart( esc_html__( 'Color Axis', Visualizer_Plugin::NAME ) );
164
  self::_renderSectionStart();
165
- self::_renderSectionDescription( esc_html__( 'Configure color axis gradient scale, minimum and maximun values and a color of the dateless regions.', Visualizer_Plugin::NAME ) );
166
 
167
  echo '<div class="section-item">';
168
  echo '<a class="more-info" href="javascript:;">[?]</a>';
169
- echo '<b>', esc_html__( 'Minimum And Maximum Values', Visualizer_Plugin::NAME ), '</b>';
170
 
171
  echo '<table class="section-table" cellspacing="0" cellpadding="0" border="0">';
172
  echo '<tr>';
@@ -180,35 +178,35 @@ class Visualizer_Render_Sidebar_Type_Geo extends Visualizer_Render_Sidebar {
180
  echo '</table>';
181
 
182
  echo '<p class="section-description">';
183
- esc_html_e( 'Determines the minimum and maximum values of color axis.', Visualizer_Plugin::NAME );
184
  echo '</p>';
185
  echo '</div>';
186
 
187
  self::_renderColorPickerItem(
188
- esc_html__( 'Minimum Value', Visualizer_Plugin::NAME ),
189
  'colorAxis[colors][]',
190
- !empty( $this->colorAxis['color'][0] ) ? $this->colorAxis['color'][0] : null,
191
  '#efe6dc'
192
  );
193
 
194
  self::_renderColorPickerItem(
195
- esc_html__( 'Intermediate Value', Visualizer_Plugin::NAME ),
196
  'colorAxis[colors][]',
197
- !empty( $this->colorAxis['color'][1] ) ? $this->colorAxis['color'][1] : null,
198
  '#82bf7c'
199
  );
200
 
201
  self::_renderColorPickerItem(
202
- esc_html__( 'Maximum Value', Visualizer_Plugin::NAME ),
203
  'colorAxis[colors][]',
204
- !empty( $this->colorAxis['color'][2] ) ? $this->colorAxis['color'][2] : null,
205
  '#109618'
206
  );
207
 
208
  self::_renderColorPickerItem(
209
- esc_html__( 'Dateless Region', Visualizer_Plugin::NAME ),
210
  'datalessRegionColor',
211
- !empty( $this->datalessRegionColor ) ? $this->datalessRegionColor : null,
212
  null
213
  );
214
 
@@ -224,13 +222,13 @@ class Visualizer_Render_Sidebar_Type_Geo extends Visualizer_Render_Sidebar {
224
  * @access protected
225
  */
226
  protected function _renderSizeAxisSettings() {
227
- self::_renderGroupStart( esc_html__( 'Size Axis', Visualizer_Plugin::NAME ) );
228
  self::_renderSectionStart();
229
- self::_renderSectionDescription( esc_html__( 'Configure how values are associated with bubble size, minimum and maximun values and marker opacity setting.', Visualizer_Plugin::NAME ) );
230
 
231
  echo '<div class="section-item">';
232
  echo '<a class="more-info" href="javascript:;">[?]</a>';
233
- echo '<b>', esc_html__( 'Minimum And Maximum Values', Visualizer_Plugin::NAME ), '</b>';
234
 
235
  echo '<table class="section-table" cellspacing="0" cellpadding="0" border="0">';
236
  echo '<tr>';
@@ -244,13 +242,13 @@ class Visualizer_Render_Sidebar_Type_Geo extends Visualizer_Render_Sidebar {
244
  echo '</table>';
245
 
246
  echo '<p class="section-description">';
247
- esc_html_e( 'Determines the minimum and maximum values of size axis.', Visualizer_Plugin::NAME );
248
  echo '</p>';
249
  echo '</div>';
250
 
251
  echo '<div class="section-item">';
252
  echo '<a class="more-info" href="javascript:;">[?]</a>';
253
- echo '<b>', esc_html__( 'Minimum And Maximum Marker Radius', Visualizer_Plugin::NAME ), '</b>';
254
 
255
  echo '<table class="section-table" cellspacing="0" cellpadding="0" border="0">';
256
  echo '<tr>';
@@ -264,15 +262,15 @@ class Visualizer_Render_Sidebar_Type_Geo extends Visualizer_Render_Sidebar {
264
  echo '</table>';
265
 
266
  echo '<p class="section-description">';
267
- esc_html_e( 'Determines the radius of the smallest and largest possible bubbles, in pixels.', Visualizer_Plugin::NAME );
268
  echo '</p>';
269
  echo '</div>';
270
 
271
  self::_renderTextItem(
272
- esc_html__( 'Marker Opacity', Visualizer_Plugin::NAME ),
273
  'markerOpacity',
274
  $this->markerOpacity,
275
- esc_html__( 'The opacity of the markers, where 0.0 is fully transparent and 1.0 is fully opaque.', Visualizer_Plugin::NAME ),
276
  '1.0'
277
  );
278
 
@@ -290,23 +288,23 @@ class Visualizer_Render_Sidebar_Type_Geo extends Visualizer_Render_Sidebar {
290
  * @access protected
291
  */
292
  protected function _renderMagnifyingGlassSettings() {
293
- self::_renderGroupStart( esc_html__( 'Magnifying Glass', Visualizer_Plugin::NAME ) );
294
  self::_renderSectionStart();
295
- self::_renderSectionDescription( esc_html__( 'Configure magnifying glass settings, which appears, when the user lingers over a cluttered marker. Note: this feature is not supported in browsers that do not support SVG, i.e. Internet Explorer version 8 or earlier.', Visualizer_Plugin::NAME ) );
296
 
297
  self::_renderSelectItem(
298
- esc_html__( 'Enabled', Visualizer_Plugin::NAME ),
299
  'magnifyingGlass[enable]',
300
  isset( $this->magnifyingGlass['enable'] ) ? $this->magnifyingGlass['enable'] : '',
301
  $this->_yesno,
302
- esc_html__( 'If yes, when the user lingers over a cluttered marker, a magnifiying glass will be opened.', Visualizer_Plugin::NAME )
303
  );
304
 
305
  self::_renderTextItem(
306
- esc_html__( 'Zoom Factor', Visualizer_Plugin::NAME ),
307
  'magnifyingGlass[zoomFactor]',
308
  isset( $this->magnifyingGlass['zoomFactor'] ) ? $this->magnifyingGlass['zoomFactor'] : '',
309
- esc_html__( 'The zoom factor of the magnifying glass. Can be any number greater than 0.', Visualizer_Plugin::NAME ),
310
  '5.0'
311
  );
312
  self::_renderSectionEnd();
@@ -321,13 +319,13 @@ class Visualizer_Render_Sidebar_Type_Geo extends Visualizer_Render_Sidebar {
321
  * @access protected
322
  */
323
  protected function _renderViewSettings() {
324
- self::_renderGroupStart( esc_html__( 'Layout Settings', Visualizer_Plugin::NAME ) );
325
  self::_renderSectionStart();
326
- self::_renderSectionDescription( esc_html__( 'Configure the total size of the chart. Two formats are supported: a number, or a number followed by %. A simple number is a value in pixels; a number followed by % is a percentage.', Visualizer_Plugin::NAME ) );
327
 
328
  echo '<div class="section-item">';
329
  echo '<a class="more-info" href="javascript:;">[?]</a>';
330
- echo '<b>', esc_html__( 'Width And Height Of Chart', Visualizer_Plugin::NAME ), '</b>';
331
 
332
  echo '<table class="section-table" cellspacing="0" cellpadding="0" border="0">';
333
  echo '<tr>';
@@ -341,46 +339,46 @@ class Visualizer_Render_Sidebar_Type_Geo extends Visualizer_Render_Sidebar {
341
  echo '</table>';
342
 
343
  echo '<p class="section-description">';
344
- esc_html_e( 'Determines the total width and height of the chart.', Visualizer_Plugin::NAME );
345
  echo '</p>';
346
  echo '</div>';
347
 
348
  self::_renderSelectItem(
349
- esc_html__( 'Keep Aspect Ratio', Visualizer_Plugin::NAME ),
350
  'keepAspectRatio',
351
  $this->keepAspectRatio,
352
  $this->_yesno,
353
- esc_html__( 'If yes, the map will be drawn at the largest size that can fit inside the chart area at its natural aspect ratio. If only one of the width and height options is specified, the other one will be calculated according to the aspect ratio.', Visualizer_Plugin::NAME ) . '<br><br>' .
354
- esc_html__( 'If no, the map will be stretched to the exact size of the chart as specified by the width and height options.', Visualizer_Plugin::NAME )
355
  );
356
 
357
  echo '<div class="section-delimiter"></div>';
358
 
359
- self::_renderSectionDescription( esc_html__( 'Configure the background color for the main area of the chart and the chart border width and color.', Visualizer_Plugin::NAME ) );
360
 
361
  self::_renderTextItem(
362
- esc_html__( 'Stroke Width', Visualizer_Plugin::NAME ),
363
  'backgroundColor[strokeWidth]',
364
  isset( $this->backgroundColor['strokeWidth'] ) ? $this->backgroundColor['strokeWidth'] : null,
365
- esc_html__( 'The chart border width in pixels.', Visualizer_Plugin::NAME ),
366
  '0'
367
  );
368
 
369
  self::_renderColorPickerItem(
370
- esc_html__( 'Stroke Color', Visualizer_Plugin::NAME ),
371
  'backgroundColor[stroke]',
372
- !empty( $this->backgroundColor['stroke'] ) ? $this->backgroundColor['stroke'] : null,
373
  '#666'
374
  );
375
 
376
  self::_renderColorPickerItem(
377
- esc_html__( 'Background Color', Visualizer_Plugin::NAME ),
378
  'backgroundColor[fill]',
379
- !empty( $this->backgroundColor['fill'] ) ? $this->backgroundColor['fill'] : null,
380
  '#fff'
381
  );
382
  self::_renderSectionEnd();
383
  self::_renderGroupEnd();
384
  }
385
 
386
- }
19
  // +----------------------------------------------------------------------+
20
  // | Author: Eugene Manuilov <eugene@manuilov.org> |
21
  // +----------------------------------------------------------------------+
 
 
22
  /**
23
  * Class for geo chart sidebar settings.
24
  *
53
  * @access protected
54
  */
55
  protected function _renderMapSettings() {
56
+ self::_renderGroupStart( esc_html__( 'Map Settings', 'visualizer' ) );
57
+ self::_renderSectionStart( esc_html__( 'Region', 'visualizer' ), false );
58
  self::_renderSectionDescription(
59
+ esc_html__( 'Configure the region area to display on the map. (Surrounding areas will be displayed as well.) Can be one of the following:' , 'visualizer' ) .
60
  '<ul>' .
61
+ '<li>' . esc_html__( "'world' - A map of the entire world.", 'visualizer' ) . '</li>' .
62
+ '<li>' . sprintf( esc_html__( "A continent or a sub-continent, specified by its %s code, e.g., '011' for Western Africa.", 'visualizer' ), '<a href="https://google-developers.appspot.com/chart/interactive/docs/gallery/geochart#Continent_Hierarchy" target="_blank">3-digit</a>' ) . '</li>' .
63
+ '<li>' . sprintf( esc_html__( "A country, specified by its %s code, e.g., 'AU' for Australia.", 'visualizer' ), '<a href="http://en.wikipedia.org/wiki/ISO_3166-1_alpha-2" target="_blank">ISO 3166-1 alpha-2</a>' ) . '</li>' .
64
+ '<li>' . sprintf( esc_html__( "A state in the United States, specified by its %s code, e.g., 'US-AL' for Alabama. Note that the resolution option must be set to either 'provinces' or 'metros'.", 'visualizer' ), '<a href="http://en.wikipedia.org/wiki/ISO_3166-2:US" target="_blank">ISO 3166-2:US</a>' ) . '</li>' .
65
  '</ul>'
66
  );
67
 
68
  self::_renderTextItem(
69
+ esc_html__( 'Region', 'visualizer' ),
70
  'region',
71
  $this->region,
72
  '',
74
  );
75
 
76
  self::_renderSectionEnd();
77
+ self::_renderSectionStart( esc_html__( 'Resolution', 'visualizer' ), false );
78
 
79
  self::_renderSectionDescription(
80
+ esc_html__( 'The resolution of the map borders. Choose one of the following values:', 'visualizer' ) .
81
  '<ul>' .
82
+ '<li>' . esc_html__( "'countries' - Supported for all regions, except for US state regions.", 'visualizer' ) . '</li>' .
83
+ '<li>' . esc_html__( "'provinces' - Supported only for country regions and US state regions. Not supported for all countries; please test a country to see whether this option is supported.", 'visualizer' ) . '</li>' .
84
+ '<li>' . esc_html__( "'metros' - Supported for the US country region and US state regions only.", 'visualizer' ) . '</li>' .
85
  '</ul>'
86
  );
87
 
88
  self::_renderSelectItem(
89
+ esc_html__( 'Resolution', 'visualizer' ),
90
  'resolution',
91
  $this->resolution,
92
  array(
93
  '' => '',
94
+ 'countries' => esc_html__( 'Countries', 'visualizer' ),
95
+ 'provinces' => esc_html__( 'Provinces', 'visualizer' ),
96
+ 'metros' => esc_html__( 'Metros', 'visualizer' ),
97
  ),
98
  ''
99
  );
100
 
101
  self::_renderSectionEnd();
102
+ self::_renderSectionStart( esc_html__( 'Display Mode', 'visualizer' ), false );
103
 
104
  self::_renderSectionDescription(
105
+ esc_html__( 'Determines which type of map this is. The following values are supported:', 'visualizer' ) .
106
  '<ul>' .
107
+ '<li>' . esc_html__( "'auto' - Choose based on the format of the data.", 'visualizer' ) . '</li>' .
108
+ '<li>' . esc_html__( "'regions' - This is a region map.", 'visualizer' ) . '</li>' .
109
+ '<li>' . esc_html__( "'markers' - This is a marker map.", 'visualizer' ) . '</li>' .
110
  '</ul>'
111
  );
112
 
113
  self::_renderSelectItem(
114
+ esc_html__( 'Display Mode', 'visualizer' ),
115
  'displayMode',
116
  $this->displayMode,
117
  array(
118
  '' => '',
119
+ 'auto' => esc_html__( 'Auto', 'visualizer' ),
120
+ 'regions' => esc_html__( 'Regions', 'visualizer' ),
121
+ 'markers' => esc_html__( 'Markers', 'visualizer' ),
122
  ),
123
  ''
124
  );
125
  self::_renderSectionEnd();
126
+ self::_renderSectionStart( esc_html__( 'Tooltip', 'visualizer' ), false );
127
  $this->_renderTooltipSettigns();
128
  self::_renderSectionEnd();
129
  self::_renderGroupEnd();
138
  */
139
  protected function _renderTooltipSettigns() {
140
  self::_renderSelectItem(
141
+ esc_html__( 'Trigger', 'visualizer' ),
142
  'tooltip[trigger]',
143
  isset( $this->tooltip['trigger'] ) ? $this->tooltip['trigger'] : null,
144
  array(
145
  '' => '',
146
+ 'focus' => esc_html__( 'The tooltip will be displayed when the user hovers over an element', 'visualizer' ),
147
+ 'none' => esc_html__( 'The tooltip will not be displayed', 'visualizer' ),
148
  ),
149
+ esc_html__( 'Determines the user interaction that causes the tooltip to be displayed.', 'visualizer' )
150
  );
151
  }
152
 
158
  * @access protected
159
  */
160
  protected function _renderColorAxisSettings() {
161
+ self::_renderGroupStart( esc_html__( 'Color Axis', 'visualizer' ) );
162
  self::_renderSectionStart();
163
+ self::_renderSectionDescription( esc_html__( 'Configure color axis gradient scale, minimum and maximun values and a color of the dateless regions.', 'visualizer' ) );
164
 
165
  echo '<div class="section-item">';
166
  echo '<a class="more-info" href="javascript:;">[?]</a>';
167
+ echo '<b>', esc_html__( 'Minimum And Maximum Values', 'visualizer' ), '</b>';
168
 
169
  echo '<table class="section-table" cellspacing="0" cellpadding="0" border="0">';
170
  echo '<tr>';
178
  echo '</table>';
179
 
180
  echo '<p class="section-description">';
181
+ esc_html_e( 'Determines the minimum and maximum values of color axis.', 'visualizer' );
182
  echo '</p>';
183
  echo '</div>';
184
 
185
  self::_renderColorPickerItem(
186
+ esc_html__( 'Minimum Value', 'visualizer' ),
187
  'colorAxis[colors][]',
188
+ ! empty( $this->colorAxis['color'][0] ) ? $this->colorAxis['color'][0] : null,
189
  '#efe6dc'
190
  );
191
 
192
  self::_renderColorPickerItem(
193
+ esc_html__( 'Intermediate Value', 'visualizer' ),
194
  'colorAxis[colors][]',
195
+ ! empty( $this->colorAxis['color'][1] ) ? $this->colorAxis['color'][1] : null,
196
  '#82bf7c'
197
  );
198
 
199
  self::_renderColorPickerItem(
200
+ esc_html__( 'Maximum Value', 'visualizer' ),
201
  'colorAxis[colors][]',
202
+ ! empty( $this->colorAxis['color'][2] ) ? $this->colorAxis['color'][2] : null,
203
  '#109618'
204
  );
205
 
206
  self::_renderColorPickerItem(
207
+ esc_html__( 'Dateless Region', 'visualizer' ),
208
  'datalessRegionColor',
209
+ ! empty( $this->datalessRegionColor ) ? $this->datalessRegionColor : null,
210
  null
211
  );
212
 
222
  * @access protected
223
  */
224
  protected function _renderSizeAxisSettings() {
225
+ self::_renderGroupStart( esc_html__( 'Size Axis', 'visualizer' ) );
226
  self::_renderSectionStart();
227
+ self::_renderSectionDescription( esc_html__( 'Configure how values are associated with bubble size, minimum and maximun values and marker opacity setting.', 'visualizer' ) );
228
 
229
  echo '<div class="section-item">';
230
  echo '<a class="more-info" href="javascript:;">[?]</a>';
231
+ echo '<b>', esc_html__( 'Minimum And Maximum Values', 'visualizer' ), '</b>';
232
 
233
  echo '<table class="section-table" cellspacing="0" cellpadding="0" border="0">';
234
  echo '<tr>';
242
  echo '</table>';
243
 
244
  echo '<p class="section-description">';
245
+ esc_html_e( 'Determines the minimum and maximum values of size axis.', 'visualizer' );
246
  echo '</p>';
247
  echo '</div>';
248
 
249
  echo '<div class="section-item">';
250
  echo '<a class="more-info" href="javascript:;">[?]</a>';
251
+ echo '<b>', esc_html__( 'Minimum And Maximum Marker Radius', 'visualizer' ), '</b>';
252
 
253
  echo '<table class="section-table" cellspacing="0" cellpadding="0" border="0">';
254
  echo '<tr>';
262
  echo '</table>';
263
 
264
  echo '<p class="section-description">';
265
+ esc_html_e( 'Determines the radius of the smallest and largest possible bubbles, in pixels.', 'visualizer' );
266
  echo '</p>';
267
  echo '</div>';
268
 
269
  self::_renderTextItem(
270
+ esc_html__( 'Marker Opacity', 'visualizer' ),
271
  'markerOpacity',
272
  $this->markerOpacity,
273
+ esc_html__( 'The opacity of the markers, where 0.0 is fully transparent and 1.0 is fully opaque.', 'visualizer' ),
274
  '1.0'
275
  );
276
 
288
  * @access protected
289
  */
290
  protected function _renderMagnifyingGlassSettings() {
291
+ self::_renderGroupStart( esc_html__( 'Magnifying Glass', 'visualizer' ) );
292
  self::_renderSectionStart();
293
+ self::_renderSectionDescription( esc_html__( 'Configure magnifying glass settings, which appears, when the user lingers over a cluttered marker. Note: this feature is not supported in browsers that do not support SVG, i.e. Internet Explorer version 8 or earlier.', 'visualizer' ) );
294
 
295
  self::_renderSelectItem(
296
+ esc_html__( 'Enabled', 'visualizer' ),
297
  'magnifyingGlass[enable]',
298
  isset( $this->magnifyingGlass['enable'] ) ? $this->magnifyingGlass['enable'] : '',
299
  $this->_yesno,
300
+ esc_html__( 'If yes, when the user lingers over a cluttered marker, a magnifiying glass will be opened.', 'visualizer' )
301
  );
302
 
303
  self::_renderTextItem(
304
+ esc_html__( 'Zoom Factor', 'visualizer' ),
305
  'magnifyingGlass[zoomFactor]',
306
  isset( $this->magnifyingGlass['zoomFactor'] ) ? $this->magnifyingGlass['zoomFactor'] : '',
307
+ esc_html__( 'The zoom factor of the magnifying glass. Can be any number greater than 0.', 'visualizer' ),
308
  '5.0'
309
  );
310
  self::_renderSectionEnd();
319
  * @access protected
320
  */
321
  protected function _renderViewSettings() {
322
+ self::_renderGroupStart( esc_html__( 'Layout Settings', 'visualizer' ) );
323
  self::_renderSectionStart();
324
+ self::_renderSectionDescription( esc_html__( 'Configure the total size of the chart. Two formats are supported: a number, or a number followed by %. A simple number is a value in pixels; a number followed by % is a percentage.', 'visualizer' ) );
325
 
326
  echo '<div class="section-item">';
327
  echo '<a class="more-info" href="javascript:;">[?]</a>';
328
+ echo '<b>', esc_html__( 'Width And Height Of Chart', 'visualizer' ), '</b>';
329
 
330
  echo '<table class="section-table" cellspacing="0" cellpadding="0" border="0">';
331
  echo '<tr>';
339
  echo '</table>';
340
 
341
  echo '<p class="section-description">';
342
+ esc_html_e( 'Determines the total width and height of the chart.', 'visualizer' );
343
  echo '</p>';
344
  echo '</div>';
345
 
346
  self::_renderSelectItem(
347
+ esc_html__( 'Keep Aspect Ratio', 'visualizer' ),
348
  'keepAspectRatio',
349
  $this->keepAspectRatio,
350
  $this->_yesno,
351
+ esc_html__( 'If yes, the map will be drawn at the largest size that can fit inside the chart area at its natural aspect ratio. If only one of the width and height options is specified, the other one will be calculated according to the aspect ratio.', 'visualizer' ) . '<br><br>' .
352
+ esc_html__( 'If no, the map will be stretched to the exact size of the chart as specified by the width and height options.', 'visualizer' )
353
  );
354
 
355
  echo '<div class="section-delimiter"></div>';
356
 
357
+ self::_renderSectionDescription( esc_html__( 'Configure the background color for the main area of the chart and the chart border width and color.', 'visualizer' ) );
358
 
359
  self::_renderTextItem(
360
+ esc_html__( 'Stroke Width', 'visualizer' ),
361
  'backgroundColor[strokeWidth]',
362
  isset( $this->backgroundColor['strokeWidth'] ) ? $this->backgroundColor['strokeWidth'] : null,
363
+ esc_html__( 'The chart border width in pixels.', 'visualizer' ),
364
  '0'
365
  );
366
 
367
  self::_renderColorPickerItem(
368
+ esc_html__( 'Stroke Color', 'visualizer' ),
369
  'backgroundColor[stroke]',
370
+ ! empty( $this->backgroundColor['stroke'] ) ? $this->backgroundColor['stroke'] : null,
371
  '#666'
372
  );
373
 
374
  self::_renderColorPickerItem(
375
+ esc_html__( 'Background Color', 'visualizer' ),
376
  'backgroundColor[fill]',
377
+ ! empty( $this->backgroundColor['fill'] ) ? $this->backgroundColor['fill'] : null,
378
  '#fff'
379
  );
380
  self::_renderSectionEnd();
381
  self::_renderGroupEnd();
382
  }
383
 
384
+ }
classes/Visualizer/Render/Sidebar/Type/Line.php CHANGED
@@ -19,8 +19,6 @@
19
  // +----------------------------------------------------------------------+
20
  // | Author: Eugene Manuilov <eugene@manuilov.org> |
21
  // +----------------------------------------------------------------------+
22
-
23
-
24
  /**
25
  * Class for line chart sidebar settings.
26
  *
@@ -60,12 +58,12 @@ class Visualizer_Render_Sidebar_Type_Line extends Visualizer_Render_Sidebar_Line
60
  echo '<div class="section-delimiter"></div>';
61
 
62
  self::_renderSelectItem(
63
- esc_html__( 'Interpolate Nulls', Visualizer_Plugin::NAME ),
64
  'interpolateNulls',
65
  $this->interpolateNulls,
66
  $this->_yesno,
67
- esc_html__( 'Whether to guess the value of missing points. If yes, it will guess the value of any missing data based on neighboring points. If no, it will leave a break in the line at the unknown point.', Visualizer_Plugin::NAME )
68
  );
69
  }
70
 
71
- }
19
  // +----------------------------------------------------------------------+
20
  // | Author: Eugene Manuilov <eugene@manuilov.org> |
21
  // +----------------------------------------------------------------------+
 
 
22
  /**
23
  * Class for line chart sidebar settings.
24
  *
58
  echo '<div class="section-delimiter"></div>';
59
 
60
  self::_renderSelectItem(
61
+ esc_html__( 'Interpolate Nulls', 'visualizer' ),
62
  'interpolateNulls',
63
  $this->interpolateNulls,
64
  $this->_yesno,
65
+ esc_html__( 'Whether to guess the value of missing points. If yes, it will guess the value of any missing data based on neighboring points. If no, it will leave a break in the line at the unknown point.', 'visualizer' )
66
  );
67
  }
68
 
69
+ }
classes/Visualizer/Render/Sidebar/Type/Pie.php CHANGED
@@ -19,8 +19,6 @@
19
  // +----------------------------------------------------------------------+
20
  // | Author: Eugene Manuilov <eugene@manuilov.org> |
21
  // +----------------------------------------------------------------------+
22
-
23
-
24
  /**
25
  * Class for pie chart sidebar settings.
26
  *
@@ -55,56 +53,56 @@ class Visualizer_Render_Sidebar_Type_Pie extends Visualizer_Render_Sidebar {
55
  * @access protected
56
  */
57
  protected function _renderPieSettings() {
58
- self::_renderGroupStart( esc_html__( 'Pie Settings', Visualizer_Plugin::NAME ) );
59
  self::_renderSectionStart();
60
  self::_renderSelectItem(
61
- esc_html__( 'Is 3D', Visualizer_Plugin::NAME ),
62
  'is3D',
63
  $this->is3D,
64
  $this->_yesno,
65
- esc_html__( 'If set to yes, displays a three-dimensional chart.', Visualizer_Plugin::NAME )
66
  );
67
 
68
  self::_renderSelectItem(
69
- esc_html__( 'Reverse Categories', Visualizer_Plugin::NAME ),
70
  'reverseCategories',
71
  $this->reverseCategories,
72
  $this->_yesno,
73
- esc_html__( 'If set to yes, will draw slices counterclockwise.', Visualizer_Plugin::NAME )
74
  );
75
 
76
  self::_renderSelectItem(
77
- esc_html__( 'Slice Text', Visualizer_Plugin::NAME ),
78
  'pieSliceText',
79
  $this->pieSliceText,
80
  array(
81
  '' => '',
82
- 'percentage' => esc_html__( 'The percentage of the slice size out of the total', Visualizer_Plugin::NAME ),
83
- 'value' => esc_html__( 'The quantitative value of the slice', Visualizer_Plugin::NAME ),
84
- 'label' => esc_html__( 'The name of the slice', Visualizer_Plugin::NAME ),
85
- 'none' => esc_html__( 'No text is displayed', Visualizer_Plugin::NAME ),
86
  ),
87
- esc_html__( 'The content of the text displayed on the slice.', Visualizer_Plugin::NAME )
88
  );
89
 
90
  self::_renderTextItem(
91
- esc_html__( 'Pie Hole', Visualizer_Plugin::NAME ),
92
  'pieHole',
93
  $this->pieHole,
94
- esc_html__( 'If between 0 and 1, displays a donut chart. The hole with have a radius equal to number times the radius of the chart. Only applicable when the chart is two-dimensional.', Visualizer_Plugin::NAME ),
95
  '0.0'
96
  );
97
 
98
  self::_renderTextItem(
99
- esc_html__( 'Start Angle', Visualizer_Plugin::NAME ),
100
  'pieStartAngle',
101
  $this->pieStartAngle,
102
- esc_html__( 'The angle, in degrees, to rotate the chart by. The default of 0 will orient the leftmost edge of the first slice directly up.', Visualizer_Plugin::NAME ),
103
  0
104
  );
105
 
106
  self::_renderColorPickerItem(
107
- esc_html__( 'Slice Border Color', Visualizer_Plugin::NAME ),
108
  'pieSliceBorderColor',
109
  $this->pieSliceBorderColor,
110
  '#fff'
@@ -121,26 +119,26 @@ class Visualizer_Render_Sidebar_Type_Pie extends Visualizer_Render_Sidebar {
121
  * @access protected
122
  */
123
  protected function _renderResidueSettings() {
124
- self::_renderGroupStart( esc_html__( 'Residue Settings', Visualizer_Plugin::NAME ) );
125
  self::_renderSectionStart();
126
  self::_renderTextItem(
127
- esc_html__( 'Visibility Threshold', Visualizer_Plugin::NAME ),
128
  'sliceVisibilityThreshold',
129
  $this->sliceVisibilityThreshold,
130
- esc_html__( 'The slice relative part, below which a slice will not show individually. All slices that have not passed this threshold will be combined to a single slice, whose size is the sum of all their sizes. Default is not to show individually any slice which is smaller than half a degree.', Visualizer_Plugin::NAME ),
131
  '0.001388889'
132
  );
133
 
134
  self::_renderTextItem(
135
- esc_html__( 'Residue Slice Label', Visualizer_Plugin::NAME ),
136
  'pieResidueSliceLabel',
137
  $this->pieResidueSliceLabel,
138
- esc_html__( 'A label for the combination slice that holds all slices below slice visibility threshold.' ),
139
- esc_html__( 'Other', Visualizer_Plugin::NAME )
140
  );
141
 
142
  self::_renderColorPickerItem(
143
- esc_html__( 'Residue Slice Color', Visualizer_Plugin::NAME ),
144
  'pieResidueSliceColor',
145
  $this->pieResidueSliceColor,
146
  '#ccc'
@@ -157,25 +155,25 @@ class Visualizer_Render_Sidebar_Type_Pie extends Visualizer_Render_Sidebar {
157
  * @access protected
158
  */
159
  protected function _renderSlicesSettings() {
160
- self::_renderGroupStart( esc_html__( 'Slices Settings', Visualizer_Plugin::NAME ) );
161
- for ( $i = 0, $cnt = count( $this->__data ); $i < $cnt; $i++ ) {
162
- self::_renderSectionStart( esc_html( $this->__data[$i][0] ), false );
163
- self::_renderTextItem(
164
- esc_html__( 'Slice Offset', Visualizer_Plugin::NAME ),
165
- 'slices[' . $i . '][offset]',
166
- isset( $this->slices[$i]['color'] ) ? $this->slices[$i]['color'] : null,
167
- esc_html__( "How far to separate the slice from the rest of the pie, from 0.0 (not at all) to 1.0 (the pie's radius).", Visualizer_Plugin::NAME ),
168
- '0.0'
169
- );
170
-
171
- self::_renderColorPickerItem(
172
- esc_html__( 'Slice Color', Visualizer_Plugin::NAME ),
173
- 'slices[' . $i . '][color]',
174
- isset( $this->slices[$i]['color'] ) ? $this->slices[$i]['color'] : null,
175
- null
176
- );
177
- self::_renderSectionEnd();
178
- }
179
  self::_renderGroupEnd();
180
  }
181
 
@@ -190,17 +188,17 @@ class Visualizer_Render_Sidebar_Type_Pie extends Visualizer_Render_Sidebar {
190
  parent::_renderTooltipSettigns();
191
 
192
  self::_renderSelectItem(
193
- esc_html__( 'Text', Visualizer_Plugin::NAME ),
194
  'tooltip[text]',
195
  isset( $this->tooltip['text'] ) ? $this->tooltip['text'] : null,
196
  array(
197
  '' => '',
198
- 'both' => esc_html__( 'Display both the absolute value of the slice and the percentage of the whole', Visualizer_Plugin::NAME ),
199
- 'value' => esc_html__( 'Display only the absolute value of the slice', Visualizer_Plugin::NAME ),
200
- 'percentage' => esc_html__( 'Display only the percentage of the whole represented by the slice', Visualizer_Plugin::NAME ),
201
  ),
202
- esc_html__( 'Determines what information to display when the user hovers over a pie slice.', Visualizer_Plugin::NAME )
203
  );
204
  }
205
 
206
- }
19
  // +----------------------------------------------------------------------+
20
  // | Author: Eugene Manuilov <eugene@manuilov.org> |
21
  // +----------------------------------------------------------------------+
 
 
22
  /**
23
  * Class for pie chart sidebar settings.
24
  *
53
  * @access protected
54
  */
55
  protected function _renderPieSettings() {
56
+ self::_renderGroupStart( esc_html__( 'Pie Settings', 'visualizer' ) );
57
  self::_renderSectionStart();
58
  self::_renderSelectItem(
59
+ esc_html__( 'Is 3D', 'visualizer' ),
60
  'is3D',
61
  $this->is3D,
62
  $this->_yesno,
63
+ esc_html__( 'If set to yes, displays a three-dimensional chart.', 'visualizer' )
64
  );
65
 
66
  self::_renderSelectItem(
67
+ esc_html__( 'Reverse Categories', 'visualizer' ),
68
  'reverseCategories',
69
  $this->reverseCategories,
70
  $this->_yesno,
71
+ esc_html__( 'If set to yes, will draw slices counterclockwise.', 'visualizer' )
72
  );
73
 
74
  self::_renderSelectItem(
75
+ esc_html__( 'Slice Text', 'visualizer' ),
76
  'pieSliceText',
77
  $this->pieSliceText,
78
  array(
79
  '' => '',
80
+ 'percentage' => esc_html__( 'The percentage of the slice size out of the total', 'visualizer' ),
81
+ 'value' => esc_html__( 'The quantitative value of the slice', 'visualizer' ),
82
+ 'label' => esc_html__( 'The name of the slice', 'visualizer' ),
83
+ 'none' => esc_html__( 'No text is displayed', 'visualizer' ),
84
  ),
85
+ esc_html__( 'The content of the text displayed on the slice.', 'visualizer' )
86
  );
87
 
88
  self::_renderTextItem(
89
+ esc_html__( 'Pie Hole', 'visualizer' ),
90
  'pieHole',
91
  $this->pieHole,
92
+ esc_html__( 'If between 0 and 1, displays a donut chart. The hole with have a radius equal to number times the radius of the chart. Only applicable when the chart is two-dimensional.', 'visualizer' ),
93
  '0.0'
94
  );
95
 
96
  self::_renderTextItem(
97
+ esc_html__( 'Start Angle', 'visualizer' ),
98
  'pieStartAngle',
99
  $this->pieStartAngle,
100
+ esc_html__( 'The angle, in degrees, to rotate the chart by. The default of 0 will orient the leftmost edge of the first slice directly up.', 'visualizer' ),
101
  0
102
  );
103
 
104
  self::_renderColorPickerItem(
105
+ esc_html__( 'Slice Border Color', 'visualizer' ),
106
  'pieSliceBorderColor',
107
  $this->pieSliceBorderColor,
108
  '#fff'
119
  * @access protected
120
  */
121
  protected function _renderResidueSettings() {
122
+ self::_renderGroupStart( esc_html__( 'Residue Settings', 'visualizer' ) );
123
  self::_renderSectionStart();
124
  self::_renderTextItem(
125
+ esc_html__( 'Visibility Threshold', 'visualizer' ),
126
  'sliceVisibilityThreshold',
127
  $this->sliceVisibilityThreshold,
128
+ esc_html__( 'The slice relative part, below which a slice will not show individually. All slices that have not passed this threshold will be combined to a single slice, whose size is the sum of all their sizes. Default is not to show individually any slice which is smaller than half a degree.', 'visualizer' ),
129
  '0.001388889'
130
  );
131
 
132
  self::_renderTextItem(
133
+ esc_html__( 'Residue Slice Label', 'visualizer' ),
134
  'pieResidueSliceLabel',
135
  $this->pieResidueSliceLabel,
136
+ esc_html__( 'A label for the combination slice that holds all slices below slice visibility threshold.', 'visualizer' ),
137
+ esc_html__( 'Other', 'visualizer' )
138
  );
139
 
140
  self::_renderColorPickerItem(
141
+ esc_html__( 'Residue Slice Color', 'visualizer' ),
142
  'pieResidueSliceColor',
143
  $this->pieResidueSliceColor,
144
  '#ccc'
155
  * @access protected
156
  */
157
  protected function _renderSlicesSettings() {
158
+ self::_renderGroupStart( esc_html__( 'Slices Settings', 'visualizer' ) );
159
+ for ( $i = 0, $cnt = count( $this->__data ); $i < $cnt; $i++ ) {
160
+ self::_renderSectionStart( esc_html( $this->__data[ $i ][0] ), false );
161
+ self::_renderTextItem(
162
+ esc_html__( 'Slice Offset', 'visualizer' ),
163
+ 'slices[' . $i . '][offset]',
164
+ isset( $this->slices[ $i ]['color'] ) ? $this->slices[ $i ]['color'] : null,
165
+ esc_html__( "How far to separate the slice from the rest of the pie, from 0.0 (not at all) to 1.0 (the pie's radius).", 'visualizer' ),
166
+ '0.0'
167
+ );
168
+
169
+ self::_renderColorPickerItem(
170
+ esc_html__( 'Slice Color', 'visualizer' ),
171
+ 'slices[' . $i . '][color]',
172
+ isset( $this->slices[ $i ]['color'] ) ? $this->slices[ $i ]['color'] : null,
173
+ null
174
+ );
175
+ self::_renderSectionEnd();
176
+ }
177
  self::_renderGroupEnd();
178
  }
179
 
188
  parent::_renderTooltipSettigns();
189
 
190
  self::_renderSelectItem(
191
+ esc_html__( 'Text', 'visualizer' ),
192
  'tooltip[text]',
193
  isset( $this->tooltip['text'] ) ? $this->tooltip['text'] : null,
194
  array(
195
  '' => '',
196
+ 'both' => esc_html__( 'Display both the absolute value of the slice and the percentage of the whole', 'visualizer' ),
197
+ 'value' => esc_html__( 'Display only the absolute value of the slice', 'visualizer' ),
198
+ 'percentage' => esc_html__( 'Display only the percentage of the whole represented by the slice', 'visualizer' ),
199
  ),
200
+ esc_html__( 'Determines what information to display when the user hovers over a pie slice.', 'visualizer' )
201
  );
202
  }
203
 
204
+ }
classes/Visualizer/Render/Sidebar/Type/Scatter.php CHANGED
@@ -19,8 +19,6 @@
19
  // +----------------------------------------------------------------------+
20
  // | Author: Eugene Manuilov <eugene@manuilov.org> |
21
  // +----------------------------------------------------------------------+
22
-
23
-
24
  /**
25
  * Class for scatter chart sidebar settings.
26
  *
@@ -62,4 +60,4 @@ class Visualizer_Render_Sidebar_Type_Scatter extends Visualizer_Render_Sidebar_L
62
  $this->_renderViewSettings();
63
  }
64
 
65
- }
19
  // +----------------------------------------------------------------------+
20
  // | Author: Eugene Manuilov <eugene@manuilov.org> |
21
  // +----------------------------------------------------------------------+
 
 
22
  /**
23
  * Class for scatter chart sidebar settings.
24
  *
60
  $this->_renderViewSettings();
61
  }
62
 
63
+ }
classes/Visualizer/Render/Templates.php CHANGED
@@ -19,7 +19,6 @@
19
  // +----------------------------------------------------------------------+
20
  // | Author: Eugene Manuilov <eugene@manuilov.org> |
21
  // +----------------------------------------------------------------------+
22
-
23
  /**
24
  * Media view template rendering class.
25
  *
@@ -66,10 +65,10 @@ class Visualizer_Render_Templates extends Visualizer_Render {
66
  */
67
  protected function _renderLibraryChart() {
68
  echo '<div class="visualizer-library-chart-footer visualizer-clearfix">';
69
- echo '<a class="visualizer-library-chart-action visualizer-library-chart-delete" href="javascript:;" title="', esc_attr__( 'Delete', Visualizer_Plugin::NAME ), '"></a>';
70
- echo '<a class="visualizer-library-chart-action visualizer-library-chart-insert" href="javascript:;" title="', esc_attr__( 'Insert', Visualizer_Plugin::NAME ), '"></a>';
71
 
72
- echo '<span class="visualizer-library-chart-shortcode" title="', esc_attr__( 'Click to select', Visualizer_Plugin::NAME ), '">&nbsp;[visualizer id=&quot;{{data.id}}&quot;]&nbsp;</span>';
73
  echo '</div>';
74
  }
75
 
@@ -83,7 +82,7 @@ class Visualizer_Render_Templates extends Visualizer_Render {
83
  protected function _renderLibraryEmpty() {
84
  echo '<div class="visualizer-library-chart">';
85
  echo '<div class="visualizer-library-chart-canvas visualizer-library-nochart-canvas">';
86
- echo '<div class="visualizer-library-notfound">', esc_html__( 'No charts found', Visualizer_Plugin::NAME ), '</div>';
87
  echo '</div>';
88
  echo '<div class="visualizer-library-chart-footer visualizer-clearfix">';
89
  echo '<span class="visualizer-library-chart-action visualizer-library-nochart-delete"></span>';
@@ -110,4 +109,4 @@ class Visualizer_Render_Templates extends Visualizer_Render {
110
  }
111
  }
112
 
113
- }
19
  // +----------------------------------------------------------------------+
20
  // | Author: Eugene Manuilov <eugene@manuilov.org> |
21
  // +----------------------------------------------------------------------+
 
22
  /**
23
  * Media view template rendering class.
24
  *
65
  */
66
  protected function _renderLibraryChart() {
67
  echo '<div class="visualizer-library-chart-footer visualizer-clearfix">';
68
+ echo '<a class="visualizer-library-chart-action visualizer-library-chart-delete" href="javascript:;" title="', esc_attr__( 'Delete', 'visualizer' ), '"></a>';
69
+ echo '<a class="visualizer-library-chart-action visualizer-library-chart-insert" href="javascript:;" title="', esc_attr__( 'Insert', 'visualizer' ), '"></a>';
70
 
71
+ echo '<span class="visualizer-library-chart-shortcode" title="', esc_attr__( 'Click to select', 'visualizer' ), '">&nbsp;[visualizer id=&quot;{{data.id}}&quot;]&nbsp;</span>';
72
  echo '</div>';
73
  }
74
 
82
  protected function _renderLibraryEmpty() {
83
  echo '<div class="visualizer-library-chart">';
84
  echo '<div class="visualizer-library-chart-canvas visualizer-library-nochart-canvas">';
85
+ echo '<div class="visualizer-library-notfound">', esc_html__( 'No charts found', 'visualizer' ), '</div>';
86
  echo '</div>';
87
  echo '<div class="visualizer-library-chart-footer visualizer-clearfix">';
88
  echo '<span class="visualizer-library-chart-action visualizer-library-nochart-delete"></span>';
109
  }
110
  }
111
 
112
+ }
classes/Visualizer/Source.php CHANGED
@@ -19,7 +19,6 @@
19
  // +----------------------------------------------------------------------+
20
  // | Author: Eugene Manuilov <eugene@manuilov.org> |
21
  // +----------------------------------------------------------------------+
22
-
23
  /**
24
  * The abstract class for source managers.
25
  *
@@ -119,28 +118,28 @@ abstract class Visualizer_Source {
119
  */
120
  protected function _normalizeData( $data ) {
121
  // normalize values
122
- //print_r($data);
123
  foreach ( $this->_series as $i => $series ) {
124
  // if no value exists for the seires, then add null
125
- if ( !isset( $data[$i] ) ) {
126
- $data[$i] = null;
127
  }
128
 
129
- if ( is_null( $data[$i] ) && !is_numeric($data[$i])) {
130
  continue;
131
  }
132
 
133
  switch ( $series['type'] ) {
134
  case 'number':
135
- $data[$i] = ( is_numeric($data[$i]) ) ? floatval( $data[$i] ) : null;
136
  break;
137
  case 'boolean':
138
- $data[$i] = !empty( $data[$i] ) ? filter_validate( $data[$i], FILTER_VALIDATE_BOOLEAN ) : null;
139
  break;
140
  case 'timeofday':
141
- $date = new DateTime( '1984-03-16T' . $data[$i] );
142
  if ( $date ) {
143
- $data[$i] = array(
144
  intval( $date->format( 'H' ) ),
145
  intval( $date->format( 'i' ) ),
146
  intval( $date->format( 's' ) ),
@@ -166,7 +165,7 @@ abstract class Visualizer_Source {
166
  protected static function _validateTypes( $types ) {
167
  $allowed_types = array( 'string', 'number', 'boolean', 'date', 'datetime', 'timeofday' );
168
  foreach ( $types as $type ) {
169
- if ( !in_array( $type, $allowed_types ) ) {
170
  return false;
171
  }
172
  }
@@ -181,7 +180,7 @@ abstract class Visualizer_Source {
181
  *
182
  * @access public
183
  * @param array $series The actual array of series.
184
- * @param int $chart_id The chart id.
185
  * @return array The re populated array of series or old one.
186
  */
187
  public function repopulateSeries( $series, $chart_id ) {
@@ -195,11 +194,11 @@ abstract class Visualizer_Source {
195
  *
196
  * @access public
197
  * @param array $data The actual array of data.
198
- * @param int $chart_id The chart id.
199
  * @return array The re populated array of data or old one.
200
  */
201
  public function repopulateData( $data, $chart_id ) {
202
  return $data;
203
  }
204
 
205
- }
19
  // +----------------------------------------------------------------------+
20
  // | Author: Eugene Manuilov <eugene@manuilov.org> |
21
  // +----------------------------------------------------------------------+
 
22
  /**
23
  * The abstract class for source managers.
24
  *
118
  */
119
  protected function _normalizeData( $data ) {
120
  // normalize values
121
+ // print_r($data);
122
  foreach ( $this->_series as $i => $series ) {
123
  // if no value exists for the seires, then add null
124
+ if ( ! isset( $data[ $i ] ) ) {
125
+ $data[ $i ] = null;
126
  }
127
 
128
+ if ( is_null( $data[ $i ] ) && ! is_numeric( $data[ $i ] ) ) {
129
  continue;
130
  }
131
 
132
  switch ( $series['type'] ) {
133
  case 'number':
134
+ $data[ $i ] = ( is_numeric( $data[ $i ] ) ) ? floatval( $data[ $i ] ) : null;
135
  break;
136
  case 'boolean':
137
+ $data[ $i ] = ! empty( $data[ $i ] ) ? filter_validate( $data[ $i ], FILTER_VALIDATE_BOOLEAN ) : null;
138
  break;
139
  case 'timeofday':
140
+ $date = new DateTime( '1984-03-16T' . $data[ $i ] );
141
  if ( $date ) {
142
+ $data[ $i ] = array(
143
  intval( $date->format( 'H' ) ),
144
  intval( $date->format( 'i' ) ),
145
  intval( $date->format( 's' ) ),
165
  protected static function _validateTypes( $types ) {
166
  $allowed_types = array( 'string', 'number', 'boolean', 'date', 'datetime', 'timeofday' );
167
  foreach ( $types as $type ) {
168
+ if ( ! in_array( $type, $allowed_types ) ) {
169
  return false;
170
  }
171
  }
180
  *
181
  * @access public
182
  * @param array $series The actual array of series.
183
+ * @param int $chart_id The chart id.
184
  * @return array The re populated array of series or old one.
185
  */
186
  public function repopulateSeries( $series, $chart_id ) {
194
  *
195
  * @access public
196
  * @param array $data The actual array of data.
197
+ * @param int $chart_id The chart id.
198
  * @return array The re populated array of data or old one.
199
  */
200
  public function repopulateData( $data, $chart_id ) {
201
  return $data;
202
  }
203
 
204
+ }
classes/Visualizer/Source/Csv.php CHANGED
@@ -19,7 +19,6 @@
19
  // +----------------------------------------------------------------------+
20
  // | Author: Eugene Manuilov <eugene@manuilov.org> |
21
  // +----------------------------------------------------------------------+
22
-
23
  /**
24
  * Source manager for local CSV files.
25
  *
@@ -66,13 +65,13 @@ class Visualizer_Source_Csv extends Visualizer_Source {
66
  // read series types
67
  $types = fgetcsv( $handle, 0, VISUALIZER_CSV_DELIMITER, VISUALIZER_CSV_ENCLOSURE );
68
 
69
- if ( !$labels || !$types ) {
70
  return false;
71
  }
72
 
73
  // if no types were setup, re read labels and empty types array
74
  $types = array_map( 'trim', $types );
75
- if ( !self::_validateTypes( $types ) ) {
76
  // re open the file
77
  fclose( $handle );
78
  $handle = $this->_get_file_handle();
@@ -85,8 +84,8 @@ class Visualizer_Source_Csv extends Visualizer_Source {
85
  for ( $i = 0, $len = count( $labels ); $i < $len; $i++ ) {
86
  $default_type = $i == 0 ? 'string' : 'number';
87
  $this->_series[] = array(
88
- 'label' => $labels[$i],
89
- 'type' => isset( $types[$i] ) ? $types[$i] : $default_type,
90
  );
91
  }
92
 
@@ -104,7 +103,7 @@ class Visualizer_Source_Csv extends Visualizer_Source {
104
  */
105
  protected function _get_file_handle( $filename = false ) {
106
  // set line endings auto detect mode
107
- @ini_set( 'auto_detect_line_endings', true );
108
  // open file and return handle
109
  return fopen( $filename ? $filename : $this->_filename, 'rb' );
110
  }
@@ -127,7 +126,7 @@ class Visualizer_Source_Csv extends Visualizer_Source {
127
  $handle = $this->_get_file_handle();
128
  if ( $handle ) {
129
  // fetch series
130
- if ( !$this->_fetchSeries( $handle ) ) {
131
  return false;
132
  }
133
 
@@ -156,4 +155,4 @@ class Visualizer_Source_Csv extends Visualizer_Source {
156
  return __CLASS__;
157
  }
158
 
159
- }
19
  // +----------------------------------------------------------------------+
20
  // | Author: Eugene Manuilov <eugene@manuilov.org> |
21
  // +----------------------------------------------------------------------+
 
22
  /**
23
  * Source manager for local CSV files.
24
  *
65
  // read series types
66
  $types = fgetcsv( $handle, 0, VISUALIZER_CSV_DELIMITER, VISUALIZER_CSV_ENCLOSURE );
67
 
68
+ if ( ! $labels || ! $types ) {
69
  return false;
70
  }
71
 
72
  // if no types were setup, re read labels and empty types array
73
  $types = array_map( 'trim', $types );
74
+ if ( ! self::_validateTypes( $types ) ) {
75
  // re open the file
76
  fclose( $handle );
77
  $handle = $this->_get_file_handle();
84
  for ( $i = 0, $len = count( $labels ); $i < $len; $i++ ) {
85
  $default_type = $i == 0 ? 'string' : 'number';
86
  $this->_series[] = array(
87
+ 'label' => $labels[ $i ],
88
+ 'type' => isset( $types[ $i ] ) ? $types[ $i ] : $default_type,
89
  );
90
  }
91
 
103
  */
104
  protected function _get_file_handle( $filename = false ) {
105
  // set line endings auto detect mode
106
+ ini_set( 'auto_detect_line_endings', true );
107
  // open file and return handle
108
  return fopen( $filename ? $filename : $this->_filename, 'rb' );
109
  }
126
  $handle = $this->_get_file_handle();
127
  if ( $handle ) {
128
  // fetch series
129
+ if ( ! $this->_fetchSeries( $handle ) ) {
130
  return false;
131
  }
132
 
155
  return __CLASS__;
156
  }
157
 
158
+ }
classes/Visualizer/Source/Csv/Remote.php CHANGED
@@ -19,7 +19,6 @@
19
  // +----------------------------------------------------------------------+
20
  // | Author: Eugene Manuilov <eugene@manuilov.org> |
21
  // +----------------------------------------------------------------------+
22
-
23
  /**
24
  * Source manager for remote CSV files.
25
  *
@@ -66,7 +65,7 @@ class Visualizer_Source_Csv_Remote extends Visualizer_Source_Csv {
66
  */
67
  private function _repopulate( $chart_id ) {
68
  // if it has been already populated, then just return true
69
- if ( !empty( $this->_data ) && !empty( $this->_series ) ) {
70
  return true;
71
  }
72
 
@@ -74,7 +73,7 @@ class Visualizer_Source_Csv_Remote extends Visualizer_Source_Csv {
74
  if ( empty( $this->_filename ) ) {
75
  $chart = get_post( $chart_id );
76
  $data = unserialize( $chart->post_content );
77
- if ( !isset( $data['source'] ) ) {
78
  return false;
79
  }
80
 
@@ -92,7 +91,7 @@ class Visualizer_Source_Csv_Remote extends Visualizer_Source_Csv {
92
  *
93
  * @access public
94
  * @param array $data The actual array of data.
95
- * @param int $chart_id The chart id.
96
  * @return array The re populated array of data or old one.
97
  */
98
  public function repopulateData( $data, $chart_id ) {
@@ -106,7 +105,7 @@ class Visualizer_Source_Csv_Remote extends Visualizer_Source_Csv {
106
  *
107
  * @access public
108
  * @param array $series The actual array of series.
109
- * @param int $chart_id The chart id.
110
  * @return array The re populated array of series or old one.
111
  */
112
  public function repopulateSeries( $series, $chart_id ) {
@@ -155,7 +154,7 @@ class Visualizer_Source_Csv_Remote extends Visualizer_Source_Csv {
155
 
156
  $this->_tmpfile = download_url( $this->_filename );
157
 
158
- return !is_wp_error( $this->_tmpfile ) ? parent::_get_file_handle( $this->_tmpfile ) : false;
159
  }
160
 
161
- }
19
  // +----------------------------------------------------------------------+
20
  // | Author: Eugene Manuilov <eugene@manuilov.org> |
21
  // +----------------------------------------------------------------------+
 
22
  /**
23
  * Source manager for remote CSV files.
24
  *
65
  */
66
  private function _repopulate( $chart_id ) {
67
  // if it has been already populated, then just return true
68
+ if ( ! empty( $this->_data ) && ! empty( $this->_series ) ) {
69
  return true;
70
  }
71
 
73
  if ( empty( $this->_filename ) ) {
74
  $chart = get_post( $chart_id );
75
  $data = unserialize( $chart->post_content );
76
+ if ( ! isset( $data['source'] ) ) {
77
  return false;
78
  }
79
 
91
  *
92
  * @access public
93
  * @param array $data The actual array of data.
94
+ * @param int $chart_id The chart id.
95
  * @return array The re populated array of data or old one.
96
  */
97
  public function repopulateData( $data, $chart_id ) {
105
  *
106
  * @access public
107
  * @param array $series The actual array of series.
108
+ * @param int $chart_id The chart id.
109
  * @return array The re populated array of series or old one.
110
  */
111
  public function repopulateSeries( $series, $chart_id ) {
154
 
155
  $this->_tmpfile = download_url( $this->_filename );
156
 
157
+ return ! is_wp_error( $this->_tmpfile ) ? parent::_get_file_handle( $this->_tmpfile ) : false;
158
  }
159
 
160
+ }
css/frame.css CHANGED
@@ -1,28 +1,28 @@
1
  #content {
 
2
  position: absolute;
 
3
  top: 0;
4
  right: 0;
5
  bottom: 60px;
6
  left: 0;
7
- z-index: 75;
8
- overflow: auto;
9
  background-color: white;
10
  }
11
 
12
  #canvas {
13
  position: absolute;
14
- left: 10px;
15
- right: 310px;
16
  top: 10px;
 
17
  bottom: 10px;
 
18
  }
19
 
20
  .loader {
21
  position: absolute;
22
- left: 50%;
23
  top: 50%;
24
- margin-left: -16px;
25
  margin-top: -16px;
 
26
  }
27
 
28
  /******************************************************************************/
@@ -30,94 +30,92 @@
30
  /******************************************************************************/
31
 
32
  #sidebar {
 
33
  position: absolute;
 
34
  top: 0;
35
  right: 0;
36
  bottom: 60px;
37
  width: 299px;
38
- z-index: 75;
39
  background: whitesmoke;
40
- border-left: 1px solid #DFDFDF;
41
- overflow: auto;
42
  -webkit-overflow-scrolling: touch;
43
  }
44
 
45
  .group-wrapper {
46
- border-top: 1px solid #DFDFDF;
47
  margin: 0;
48
  padding: 0;
 
49
  list-style: none;
50
  }
51
 
52
  .group {
53
  margin: 0;
54
- list-style: none;
55
  font-size: 12px;
56
  line-height: 18px;
 
57
  }
58
 
59
  .group.open {
60
- border-bottom: 1px solid #DFDFDF;
61
-
62
  }
63
 
64
  .group-title {
65
- border-top: 1px solid white;
66
- border-bottom: 1px solid #DFDFDF;
67
  position: relative;
68
- cursor: pointer;
69
- -webkit-user-select: none;
70
- -moz-user-select: none;
71
- -ms-user-select: none;
72
- user-select: none;
73
  margin: 0;
74
  padding: 10px 20px;
75
- font-size: 15px;
76
- font-family: Georgia, "Times New Roman", "Bitstream Charter", Times, serif;
77
- font-weight: normal;
78
- text-shadow: 0 1px 0 white;
79
  background: whiteSmoke;
80
- background-image: -webkit-gradient(linear, left bottom, left top, from(#EEE), to(whiteSmoke));
81
- background-image: -webkit-linear-gradient(bottom, #EEE, whiteSmoke);
82
- background-image: -moz-linear-gradient(bottom, #EEE, whiteSmoke);
83
- background-image: -o-linear-gradient(bottom, #EEE, whiteSmoke);
84
- background-image: -ms-linear-gradient(bottom, #EEE, whiteSmoke);
85
- background-image: linear-gradient(bottom, #EEE, whiteSmoke);
 
86
  font-family: "Open Sans",sans-serif;
 
 
87
  font-weight: 700;
 
 
 
 
 
88
  }
89
 
90
  .group-title:hover,
91
  .group.open .group-title {
92
  color: white;
93
- text-shadow: 0 -1px 0 #333;
94
  background: gray;
95
- background-image: -webkit-gradient(linear, left bottom, left top, from(#6D6D6D), to(gray));
96
- background-image: -webkit-linear-gradient(bottom, #6D6D6D, gray);
97
- background-image: -moz-linear-gradient(bottom, #6D6D6D, gray);
98
- background-image: -o-linear-gradient(bottom, #6D6D6D, gray);
99
- background-image: -ms-linear-gradient(bottom, #6D6D6D, gray);
100
- background-image: linear-gradient(bottom, #6D6D6D, gray);
101
  font-family: "Open Sans", sans-serif;
102
  font-weight: 700;
103
  }
104
 
105
  .group-title::after {
106
- content: '';
107
- width: 0;
108
- height: 0;
109
- border-color: #CCC transparent;
110
- border-style: solid;
111
- border-width: 6px 6px 0;
112
  position: absolute;
 
113
  top: 15px;
114
  right: 20px;
115
- z-index: 1;
 
 
 
 
 
116
  }
117
 
118
  .group-title:hover::after,
119
  .group.open .group-title::after {
120
- border-color: #EEE transparent;
121
  }
122
 
123
  .group:hover .group-title {
@@ -125,7 +123,7 @@
125
  }
126
 
127
  .group.open .group-title {
128
- border-top-color: #6D6D6D;
129
  }
130
 
131
  .group.open .group-title::after {
@@ -133,11 +131,11 @@
133
  }
134
 
135
  .group-content {
136
- margin: 0;
137
  display: none;
138
- background-color: #FDFDFD;
139
- padding: 10px 0 20px 0;
140
  overflow: hidden;
 
 
 
141
  }
142
 
143
  div.group-content {
@@ -149,50 +147,50 @@ div.group-content {
149
  }
150
 
151
  .group-description {
152
- font-size: 12px;
153
- color: #555;
154
- padding: 5px 20px 10px;
155
  margin: 0;
 
 
 
156
  }
157
 
158
  div.group-content .group-description {
159
  padding: 0;
160
- font-weight: 300;
161
  font-family: "Montserrat",sans-serif;
 
162
  }
163
 
164
  .initial-screen .group-description {
165
  padding: 0;
166
- font-weight: 300;
167
- font-family: "Montserrat",sans-serif;
168
  padding: 10px 20px 20px;
 
 
169
  }
170
 
171
  .section-title {
172
  display: block;
173
- font-weight: bold;
174
  position: relative;
175
- cursor: pointer;
176
- padding: 4px 20px;
177
  margin-bottom: 5px;
 
 
 
178
  background-color: rgba(0, 0, 0, 0.02);
179
- border-top: 1px solid #eeeeee;
180
  -webkit-box-shadow: 0 4px 4px -4px rgba(0, 0, 0, 0.1);
181
  box-shadow: 0 4px 4px -4px rgba(0, 0, 0, 0.1);
182
- border-bottom: 1px solid #eeeeee;
 
183
  }
184
 
185
  .section-title::after {
186
- content: '';
187
- width: 0;
188
- height: 0;
189
- border-color: #CCC transparent;
190
- border-style: solid;
191
- border-width: 4px 4px 0;
192
  position: absolute;
 
193
  top: 13px;
194
  right: 20px;
195
- z-index: 1;
 
 
 
 
 
196
  }
197
 
198
  .section-title.open::after {
@@ -209,20 +207,20 @@ div.group-content .group-description {
209
  }
210
 
211
  .more-info {
212
- text-decoration: none;
213
- color: #21759B;
 
214
  font-size: 85%;
215
  font-weight: normal;
216
- float: right;
217
- display: none;
218
  }
219
 
220
  .section-description {
 
221
  /*display: none;*/
222
  padding: 0;
223
- margin: 0;
224
- font-size: 11px;
225
  color: gray;
 
226
  }
227
 
228
  .section-table {
@@ -236,9 +234,9 @@ div.group-content .group-description {
236
 
237
  .section-table-column {
238
  width: 50%;
 
239
  text-align: left;
240
  vertical-align: top;
241
- padding: 0 1px;
242
  }
243
 
244
  .section-item {
@@ -253,6 +251,7 @@ div.group-content .group-description {
253
  .control-check {
254
  float: right;
255
  }
 
256
  .control-check::after {
257
  clear: both;
258
  }
@@ -263,8 +262,8 @@ div.group-content .group-description {
263
  }
264
 
265
  .section-description li {
266
- list-style: circle;
267
  margin: 0;
 
268
  }
269
 
270
  #rate-the-plugin {
@@ -274,24 +273,24 @@ div.group-content .group-description {
274
  text-align: center;
275
  }
276
 
277
- .rate-the-plugin{
278
  width: 40% !important;
279
- margin-top: -5px;
280
  }
281
 
282
  #rate-stars {
283
- margin: 15px auto;
284
  width: 100px;
285
  height: 20px;
286
- background-image: url('../images/star.png');
 
287
  background-repeat: repeat-x;
288
  background-position: right center;
289
  }
290
 
291
  #rate-link {
292
- text-decoration: none;
293
  font-family: "Montserrat",sans-serif;
294
- font-weight: 400;
 
295
  }
296
 
297
  #flattr {
@@ -304,32 +303,33 @@ div.group-content .group-description {
304
  /******************************************************************************/
305
 
306
  #toolbar {
307
- height: 36px;
308
- padding: 12px 16px;
309
  position: absolute;
310
  z-index: 100;
311
- left: 0;
312
  right: 0;
313
- text-align: center;
314
  bottom: 0;
315
- border-top: 1px solid #DFDFDF;
316
- overflow: hidden;
 
 
317
  -webkit-box-shadow: 0 -4px 4px -4px rgba(0, 0, 0, 0.1);
318
  box-shadow: 0 -4px 4px -4px rgba(0, 0, 0, 0.1);
 
319
  }
320
 
321
  #toolbar .push-right {
322
  float: right;
323
  }
324
 
325
- .toolbar-div a{
326
- float:left;
327
  }
328
- .toolbar-div{
329
- display: inline-block;
330
- vertical-align: top;
 
331
  width: 30%;
332
- float:left;
333
  }
334
 
335
  /******************************************************************************/
@@ -337,21 +337,21 @@ div.group-content .group-description {
337
  /******************************************************************************/
338
 
339
  #type-picker {
340
- margin: 50px auto;
341
  width: 952px;
 
342
  }
343
 
344
  .type-box {
345
  float: left;
346
  margin: 0 20px 20px 0;
347
  border: 1px dashed #ddd;
348
- -webkit-box-shadow: 0px 0px 8px #ddd;
349
- box-shadow: 0px 0px 8px #ddd;
350
  background-color: #efefef;
 
 
351
  }
352
 
353
  .type-box:nth-child(3n+3) {
354
- margin-right: 0px;
355
  }
356
 
357
  .type-label {
@@ -359,11 +359,11 @@ div.group-content .group-description {
359
  width: 270px;
360
  height: 195px;
361
  padding: 15px;
 
362
  background-color: white;
363
  background-image: url(../images/chart_types_g.png);
364
  background-repeat: no-repeat;
365
  background-position: center center;
366
- border: 1px solid #e0e0e0;
367
  }
368
 
369
  .type-label-selected,
@@ -372,23 +372,23 @@ div.group-content .group-description {
372
  }
373
 
374
  .type-box-area .type-label {
375
- background-position: 0px -225px;
376
  }
377
 
378
  .type-box-line .type-label {
379
- background-position: -600px 0px;
380
  }
381
 
382
  .type-box-scatter .type-label {
383
- background-position: -300px 0px;
384
  }
385
 
386
  .type-box-pie .type-label {
387
- background-position: 0px 0px;
388
  }
389
 
390
  .type-box-gauge .type-label {
391
- background-position: 0px -450px;
392
  }
393
 
394
  .type-box-geo .type-label {
@@ -420,40 +420,48 @@ div.group-content .group-description {
420
  }
421
 
422
  a.pro-upsell {
423
- margin: 0;
 
 
424
  display: flex;
425
- align-items: center;
 
426
  height: 20px;
427
- padding:10px 20px;
 
 
428
  border-radius: 50px;
429
- -moz-border-radius: 50px;
430
- -webkit-border-radius: 50px;
431
- background-color: #4285F4;
432
  text-decoration: none;
433
- box-shadow: 0 2px 5px 0 rgba(0, 0, 0, 0.16), 0 2px 10px 0 rgba(0, 0, 0, 0.12);
434
- border: 1px solid #2c80d6;
435
- transition: all .5s ease-in;
436
- top: 10px;
437
- position: relative;
438
- }
 
 
439
 
440
- a.pro-upsell:hover {
441
  background-color: #5a95f5;
 
442
  box-shadow: 0 5px 11px 0 rgba(0, 0, 0, 0.18), 0 4px 15px 0 rgba(0, 0, 0, 0.15);
443
  }
444
 
445
- a.pro-upsell span {
446
- color: #fff;
447
- margin-right: 10px;
448
- display:inline-block;
449
- }
450
 
451
- a.pro-upsell {
452
- font-weight: bold;
453
- font-size: 13px;
454
- color: #fff;
455
- display: inline;
456
- }
457
 
458
  /******************************************************************************/
459
  /******************************** OTHER STYLES ******************************/
@@ -461,28 +469,31 @@ a.pro-upsell {
461
 
462
  #thehole {
463
  position: absolute;
464
- left: 0;
465
  top: 0;
 
466
  width: 1px;
467
  height: 1px;
468
  border: 0;
469
- opacity: 0;
470
- -moz-opacity: 0;
471
- filter:progid:DXImageTransform.Microsoft.Alpha(opacity=0);
 
472
  }
473
 
474
- .locker, .locker-loader {
475
- left: 0;
476
- top: 0;
477
  position: absolute;
 
 
478
  }
479
 
480
  .locker {
481
  z-index: 1000;
 
482
  background-color: white;
 
483
  -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=80)";
484
  filter: alpha(opacity=80);
485
- opacity: 0.8;
486
  }
487
 
488
  .locker-loader {
@@ -491,251 +502,241 @@ a.pro-upsell {
491
  }
492
 
493
  .file-wrapper {
494
- display: inline-block;
495
- width: auto;
496
- max-width: 133px;
497
  }
498
 
499
  .file {
500
- font-size: 22px;
501
- position: fixed;
502
- opacity: 0;
503
- margin-left: -33px;
504
- margin-top: -6px;
505
- -moz-opacity: 0;
506
- filter: progid:DXImageTransform.Microsoft.Alpha(opacity=0);
507
- cursor: pointer;
508
- max-width: 138px;
 
509
  }
510
 
511
  #remote-file {
512
- float: right;
513
- display: inline-block;
514
- margin-left: 6px;
515
  }
516
 
517
- .form-inline {
518
- /*margin: 0 auto;*/
519
- width:100%;
520
- display: table;
521
- vertical-align: middle;
522
- }
523
 
524
- .computer-btn{
525
- color: #646464 !important;
526
- border: medium none rgb(100, 100, 100) !important;
527
- background: #E6E6E6 url("../images/computer.png") no-repeat scroll 7px 1px !important;
528
  padding-left: 27px !important;
529
- transition: all 0.3s ease 0s;
 
 
 
 
 
 
530
  font-family: "Open Sans",sans-serif;
531
  font-weight: 700;
532
- border: 1px solid #B0B0B0 !important;
533
- box-shadow: none !important;
534
- text-shadow:none!important;
535
- left: -18px;
536
- overflow: hidden;
537
-
538
- }
539
-
540
- .computer-btn:hover{
541
- color: white !important;
542
- background: #2f8cea url("../images/computer.png") no-repeat scroll 7px -36px !important;
543
  transition: all 0.3s ease 0s;
 
 
 
544
  padding-left: 27px !important;
545
- -webkit-transition: all .3s ease;
546
- -moz-transition: all .3s ease;
547
- -ms-transition: all .3s ease;
548
- -o-transition: all .3s ease;
549
- transition: all .3s ease;
550
- box-shadow: 0px 1px 0px rgba(171, 171, 171, 0.5) inset, 0px 1px 0px rgba(0, 0, 0, 0.15) !important;
551
  border: 1px solid #2f8cea !important;
 
 
 
 
 
552
  box-shadow: none !important;
 
 
 
 
 
553
 
554
-
555
- }
556
-
557
- .just-on-pro{
558
- background: #F5F5F5 url("../images/available_pro.png") no-repeat scroll 0px 1px !important;
559
  width: 250px;
560
  height: 100px;
561
- cursor:not-allowed;
562
- opacity: 0.8;
563
  margin-bottom: 10px;
564
- }
565
-
566
-
 
567
 
568
- .from-web{
569
- margin-top: 0px;
570
  margin-bottom: 15px !important;
571
  }
572
 
573
- .from-web-btn{
574
- color: #646464 !important;
575
- border: medium none #646464 !important;
576
- background: #E6E6E6 url("../images/web.png") no-repeat scroll 7px 1px !important;
577
  padding-left: 25px !important;
578
- transition: all 0.3s ease 0s;
579
- border: 1px solid #B0B0B0 !important;
 
 
 
580
  box-shadow: none !important;
581
  font-family: "Open Sans",sans-serif;
582
  font-weight: 700;
 
 
583
  /*margin-left: 2px !important;*/
584
  }
585
 
586
- .from-web-btn:hover{
587
- color: white !important;
588
- background: #89B158 url("../images/web.png") no-repeat scroll 7px -38px !important;
589
- transition: all 0.3s ease 0s;
590
  padding-left: 25px !important;
591
- -webkit-transition: all .3s ease;
592
- -moz-transition: all .3s ease;
593
- -ms-transition: all .3s ease;
594
- -o-transition: all .3s ease;
595
- transition: all .3s ease;
596
  /*margin-left: 2px !important;*/
597
- border: 1px solid #89B158 !important;
 
 
 
598
  box-shadow: none !important;
 
 
 
 
599
  }
600
 
601
- .preview{
602
  width: 100%;
603
  }
604
 
605
-
606
  #sidebar > ul > div.initial-screen > div {
607
  padding: 0 20px;
608
  }
609
 
610
- .from-chart-btn{
611
- color: #646464 !important;
612
- border: medium none #646464 !important;
613
- background: #E6E6E6 url("../images/from_chart.png") no-repeat scroll 7px 1px !important;
614
  padding-left: 25px !important;
615
- transition: all 0.3s ease 0s;
616
- border: 1px solid #B0B0B0 !important;
 
 
 
617
  box-shadow: none !important;
618
  font-family: "Open Sans",sans-serif;
619
  font-weight: 700;
 
 
620
  /*margin-left: 2px !important;
621
  margin-top: 2px !important;*/
622
  }
623
 
624
- .from-chart-btn:hover{
625
- color: white !important;
626
- background: #10aecb url("../images/from_chart.png") no-repeat scroll 7px -36px !important;
627
- transition: all 0.3s ease 0s;
628
- padding-left: 25px !important;
629
- -webkit-transition: all .3s ease;
630
- -moz-transition: all .3s ease;
631
- -ms-transition: all .3s ease;
632
- -o-transition: all .3s ease;
633
- transition: all .3s ease;
634
- /*margin-left: 2px !important;*/
635
- border: 1px solid #10aecb !important;
636
- box-shadow: none !important;
637
- /*margin-top: 2px !important;*/
638
- }
639
-
640
- input#existing-chart {
641
- /*left: 18px;
642
  width: 110px;
643
  position: relative;*/
644
- }
645
-
646
- select#chart-id {
647
- float: right;
648
- width: 95px;
649
- }
650
 
651
- button#editor-chart-button {
652
- margin: 0 auto;
653
- display: block;
654
- background-color: #2f8cea !important;
655
- color: white !important;
656
- border: 1px solid #2c80d6 !important;
657
- box-shadow: none !important;
658
- -webkit-transition: all .3s ease;
659
- -moz-transition: all .3s ease;
660
- -ms-transition: all .3s ease;
661
- -o-transition: all .3s ease;
662
- transition: all .3s ease;
663
- text-shadow: none;
664
- }
665
 
666
- .preview-btn{
667
- font-family: "Open Sans",sans-serif;
668
- font-weight: 700;
669
- background-color: #2f8cea !important;
670
- color: white !important;
671
  border: 1px solid #2c80d6 !important;
 
 
 
672
  box-shadow: none !important;
673
- -webkit-transition: all .3s ease;
674
- -moz-transition: all .3s ease;
675
- -ms-transition: all .3s ease;
676
- -o-transition: all .3s ease;
677
- transition: all .3s ease;
678
  }
679
 
680
- .preview-btn:hover{
 
 
 
 
 
681
  font-family: "Open Sans",sans-serif;
682
  font-weight: 700;
683
- background-color: #2c80d6 !important;
684
- color: white !important;
 
 
 
685
  border: 1px solid #2c80d6 !important;
 
 
 
686
  box-shadow: none !important;
687
- -webkit-transition: all .3s ease;
688
- -moz-transition: all .3s ease;
689
- -ms-transition: all .3s ease;
690
- -o-transition: all .3s ease;
691
- transition: all .3s ease;
692
  }
693
 
694
- .show-live-btn{
695
- margin-top: 15px !important;
696
  width: 100%;
697
- background-color: #F90 !important;
698
- border-color: #E98B00 !important;
 
 
 
699
  font-family: "Open Sans",sans-serif;
700
  font-weight: 700;
701
- box-shadow: none !important;
702
  }
703
 
704
-
705
- .show-live-btn:hover{
706
- margin-top: 15px !important;
707
  width: 100%;
 
 
708
  background-color: #ea8c00 !important;
709
- border-color: #E98B00 !important;
 
710
  font-family: "Open Sans",sans-serif;
711
  font-weight: 700;
712
- box-shadow: none !important;
713
- -webkit-transition: all .3s ease;
714
- -moz-transition: all .3s ease;
715
- -ms-transition: all .3s ease;
716
- -o-transition: all .3s ease;
717
- transition: all .3s ease;
718
  }
719
 
720
  .check-pro-btn {
721
- height: 40px;
722
- width: 245px;
723
  display: block;
 
 
724
  margin: 0 auto;
725
  }
726
 
727
- .advanced-settings-btn, .return-settings-btn {
728
- cursor: pointer;
729
  display: block;
730
- margin: 0 auto;
731
- line-height: 34px;
732
- font-size: 17px;
733
  height: auto;
734
- -webkit-border-radius: 3px;
735
- -moz-border-radius: 3px;
736
- border-radius: 3px;
737
  margin-bottom: 20px;
738
- margin-top:5px;
 
 
 
739
  }
740
 
741
  .return-settings-btn {
@@ -751,39 +752,40 @@ a.pro-upsell {
751
  }
752
 
753
  .hidden-setting {
754
- display:none;
755
  }
756
 
 
757
 
 
 
 
 
 
 
758
 
759
- /* ====== RESPONSIVE ====== */
 
 
760
 
 
 
 
761
 
762
- @media (max-width: 1366px) {
763
- .group-title {
764
- padding: 4px 20px;
765
- font-weight: 400;
766
- font-size: 14px;
767
- }
768
- .group-title::after {
769
- top: 10px;
770
- }
771
- #rate-stars {
772
- margin: 3px 0 10px 40%;
773
- }
774
- .rate-the-plugin {
775
- margin-left: -8%;
776
- }
777
  }
778
 
779
  @media screen and (max-width: 782px) {
780
- .button.button-primary.file-wrapper.computer-btn, #remote-file, #existing-chart {
 
 
 
 
781
  padding: 0 10px 1px;
782
- line-height: 26px;
783
- font-size: 13px;
784
- vertical-align: middle;
785
- height: 28px;
786
- margin-bottom: 4px;
787
  }
788
-
789
  }
1
  #content {
2
+ overflow: auto;
3
  position: absolute;
4
+ z-index: 75;
5
  top: 0;
6
  right: 0;
7
  bottom: 60px;
8
  left: 0;
 
 
9
  background-color: white;
10
  }
11
 
12
  #canvas {
13
  position: absolute;
 
 
14
  top: 10px;
15
+ right: 310px;
16
  bottom: 10px;
17
+ left: 10px;
18
  }
19
 
20
  .loader {
21
  position: absolute;
 
22
  top: 50%;
23
+ left: 50%;
24
  margin-top: -16px;
25
+ margin-left: -16px;
26
  }
27
 
28
  /******************************************************************************/
30
  /******************************************************************************/
31
 
32
  #sidebar {
33
+ overflow: auto;
34
  position: absolute;
35
+ z-index: 75;
36
  top: 0;
37
  right: 0;
38
  bottom: 60px;
39
  width: 299px;
40
+ border-left: 1px solid #dfdfdf;
41
  background: whitesmoke;
42
+
 
43
  -webkit-overflow-scrolling: touch;
44
  }
45
 
46
  .group-wrapper {
 
47
  margin: 0;
48
  padding: 0;
49
+ border-top: 1px solid #dfdfdf;
50
  list-style: none;
51
  }
52
 
53
  .group {
54
  margin: 0;
 
55
  font-size: 12px;
56
  line-height: 18px;
57
+ list-style: none;
58
  }
59
 
60
  .group.open {
61
+ border-bottom: 1px solid #dfdfdf;
 
62
  }
63
 
64
  .group-title {
 
 
65
  position: relative;
 
 
 
 
 
66
  margin: 0;
67
  padding: 10px 20px;
68
+ border-top: 1px solid white;
69
+ border-bottom: 1px solid #dfdfdf;
 
 
70
  background: whiteSmoke;
71
+ background-image: -webkit-gradient(linear, left bottom, left top, from(#eee), to(whiteSmoke));
72
+ background-image: -webkit-linear-gradient(bottom, #eee, whiteSmoke);
73
+ background-image: -webkit-gradient( linear, left top, left bottom, from(#eee), to(whiteSmoke));
74
+ background-image: -webkit-linear-gradient( top, #eee, whiteSmoke);
75
+ background-image: linear-gradient( to bottom, #eee, whiteSmoke);
76
+ text-shadow: 0 1px 0 white;
77
+ font-family: Georgia, "Times New Roman", "Bitstream Charter", Times, serif;
78
  font-family: "Open Sans",sans-serif;
79
+ font-size: 15px;
80
+ font-weight: normal;
81
  font-weight: 700;
82
+ cursor: pointer;
83
+ -webkit-user-select: none;
84
+ -moz-user-select: none;
85
+ -ms-user-select: none;
86
+ user-select: none;
87
  }
88
 
89
  .group-title:hover,
90
  .group.open .group-title {
91
  color: white;
 
92
  background: gray;
93
+ background-image: -webkit-gradient(linear, left bottom, left top, from(#6d6d6d), to(gray));
94
+ background-image: -webkit-linear-gradient(bottom, #6d6d6d, gray);
95
+ background-image: -webkit-gradient( linear, left top, left bottom, from(#6d6d6d), to(gray));
96
+ background-image: -webkit-linear-gradient( top, #6d6d6d, gray);
97
+ background-image: linear-gradient( to bottom, #6d6d6d, gray);
98
+ text-shadow: 0 -1px 0 #333;
99
  font-family: "Open Sans", sans-serif;
100
  font-weight: 700;
101
  }
102
 
103
  .group-title::after {
 
 
 
 
 
 
104
  position: absolute;
105
+ z-index: 1;
106
  top: 15px;
107
  right: 20px;
108
+ width: 0;
109
+ height: 0;
110
+ border-width: 6px 6px 0;
111
+ border-style: solid;
112
+ border-color: #ccc transparent;
113
+ content: "";
114
  }
115
 
116
  .group-title:hover::after,
117
  .group.open .group-title::after {
118
+ border-color: #eee transparent;
119
  }
120
 
121
  .group:hover .group-title {
123
  }
124
 
125
  .group.open .group-title {
126
+ border-top-color: #6d6d6d;
127
  }
128
 
129
  .group.open .group-title::after {
131
  }
132
 
133
  .group-content {
 
134
  display: none;
 
 
135
  overflow: hidden;
136
+ margin: 0;
137
+ padding: 10px 0 20px 0;
138
+ background-color: #fdfdfd;
139
  }
140
 
141
  div.group-content {
147
  }
148
 
149
  .group-description {
 
 
 
150
  margin: 0;
151
+ padding: 5px 20px 10px;
152
+ color: #555;
153
+ font-size: 12px;
154
  }
155
 
156
  div.group-content .group-description {
157
  padding: 0;
 
158
  font-family: "Montserrat",sans-serif;
159
+ font-weight: 300;
160
  }
161
 
162
  .initial-screen .group-description {
163
  padding: 0;
 
 
164
  padding: 10px 20px 20px;
165
+ font-family: "Montserrat",sans-serif;
166
+ font-weight: 300;
167
  }
168
 
169
  .section-title {
170
  display: block;
 
171
  position: relative;
 
 
172
  margin-bottom: 5px;
173
+ padding: 4px 20px;
174
+ border-top: 1px solid #eee;
175
+ border-bottom: 1px solid #eee;
176
  background-color: rgba(0, 0, 0, 0.02);
 
177
  -webkit-box-shadow: 0 4px 4px -4px rgba(0, 0, 0, 0.1);
178
  box-shadow: 0 4px 4px -4px rgba(0, 0, 0, 0.1);
179
+ font-weight: bold;
180
+ cursor: pointer;
181
  }
182
 
183
  .section-title::after {
 
 
 
 
 
 
184
  position: absolute;
185
+ z-index: 1;
186
  top: 13px;
187
  right: 20px;
188
+ width: 0;
189
+ height: 0;
190
+ border-width: 4px 4px 0;
191
+ border-style: solid;
192
+ border-color: #ccc transparent;
193
+ content: "";
194
  }
195
 
196
  .section-title.open::after {
207
  }
208
 
209
  .more-info {
210
+ display: none;
211
+ float: right;
212
+ color: #21759b;
213
  font-size: 85%;
214
  font-weight: normal;
215
+ text-decoration: none;
 
216
  }
217
 
218
  .section-description {
219
+ margin: 0;
220
  /*display: none;*/
221
  padding: 0;
 
 
222
  color: gray;
223
+ font-size: 11px;
224
  }
225
 
226
  .section-table {
234
 
235
  .section-table-column {
236
  width: 50%;
237
+ padding: 0 1px;
238
  text-align: left;
239
  vertical-align: top;
 
240
  }
241
 
242
  .section-item {
251
  .control-check {
252
  float: right;
253
  }
254
+
255
  .control-check::after {
256
  clear: both;
257
  }
262
  }
263
 
264
  .section-description li {
 
265
  margin: 0;
266
+ list-style: circle;
267
  }
268
 
269
  #rate-the-plugin {
273
  text-align: center;
274
  }
275
 
276
+ .rate-the-plugin {
277
  width: 40% !important;
278
+ margin-top: -5px;
279
  }
280
 
281
  #rate-stars {
 
282
  width: 100px;
283
  height: 20px;
284
+ margin: 15px auto;
285
+ background-image: url("../images/star.png");
286
  background-repeat: repeat-x;
287
  background-position: right center;
288
  }
289
 
290
  #rate-link {
 
291
  font-family: "Montserrat",sans-serif;
292
+ font-weight: 400;
293
+ text-decoration: none;
294
  }
295
 
296
  #flattr {
303
  /******************************************************************************/
304
 
305
  #toolbar {
306
+ overflow: hidden;
 
307
  position: absolute;
308
  z-index: 100;
 
309
  right: 0;
 
310
  bottom: 0;
311
+ left: 0;
312
+ height: 36px;
313
+ padding: 12px 16px;
314
+ border-top: 1px solid #dfdfdf;
315
  -webkit-box-shadow: 0 -4px 4px -4px rgba(0, 0, 0, 0.1);
316
  box-shadow: 0 -4px 4px -4px rgba(0, 0, 0, 0.1);
317
+ text-align: center;
318
  }
319
 
320
  #toolbar .push-right {
321
  float: right;
322
  }
323
 
324
+ .toolbar-div a {
325
+ float: left;
326
  }
327
+
328
+ .toolbar-div {
329
+ display: inline-block;
330
+ float: left;
331
  width: 30%;
332
+ vertical-align: top;
333
  }
334
 
335
  /******************************************************************************/
337
  /******************************************************************************/
338
 
339
  #type-picker {
 
340
  width: 952px;
341
+ margin: 50px auto;
342
  }
343
 
344
  .type-box {
345
  float: left;
346
  margin: 0 20px 20px 0;
347
  border: 1px dashed #ddd;
 
 
348
  background-color: #efefef;
349
+ -webkit-box-shadow: 0 0 8px #ddd;
350
+ box-shadow: 0 0 8px #ddd;
351
  }
352
 
353
  .type-box:nth-child(3n+3) {
354
+ margin-right: 0;
355
  }
356
 
357
  .type-label {
359
  width: 270px;
360
  height: 195px;
361
  padding: 15px;
362
+ border: 1px solid #e0e0e0;
363
  background-color: white;
364
  background-image: url(../images/chart_types_g.png);
365
  background-repeat: no-repeat;
366
  background-position: center center;
 
367
  }
368
 
369
  .type-label-selected,
372
  }
373
 
374
  .type-box-area .type-label {
375
+ background-position: 0 -225px;
376
  }
377
 
378
  .type-box-line .type-label {
379
+ background-position: -600px 0;
380
  }
381
 
382
  .type-box-scatter .type-label {
383
+ background-position: -300px 0;
384
  }
385
 
386
  .type-box-pie .type-label {
387
+ background-position: 0 0;
388
  }
389
 
390
  .type-box-gauge .type-label {
391
+ background-position: 0 -450px;
392
  }
393
 
394
  .type-box-geo .type-label {
420
  }
421
 
422
  a.pro-upsell {
423
+ display: -webkit-box;
424
+ display: -webkit-flex;
425
+ display: -ms-flexbox;
426
  display: flex;
427
+ position: relative;
428
+ top: 10px;
429
  height: 20px;
430
+ margin: 0;
431
+ padding: 10px 20px;
432
+ border: 1px solid #2c80d6;
433
  border-radius: 50px;
434
+ background-color: #4285f4;
435
+ -webkit-box-shadow: 0 2px 5px 0 rgba(0, 0, 0, 0.16), 0 2px 10px 0 rgba(0, 0, 0, 0.12);
436
+ box-shadow: 0 2px 5px 0 rgba(0, 0, 0, 0.16), 0 2px 10px 0 rgba(0, 0, 0, 0.12);
437
  text-decoration: none;
438
+ -webkit-transition: all 0.5s ease-in;
439
+ transition: all 0.5s ease-in;
440
+
441
+ -webkit-align-items: center;
442
+ align-items: center;
443
+ -webkit-box-align: center;
444
+ -ms-flex-align: center;
445
+ }
446
 
447
+ a.pro-upsell:hover {
448
  background-color: #5a95f5;
449
+ -webkit-box-shadow: 0 5px 11px 0 rgba(0, 0, 0, 0.18), 0 4px 15px 0 rgba(0, 0, 0, 0.15);
450
  box-shadow: 0 5px 11px 0 rgba(0, 0, 0, 0.18), 0 4px 15px 0 rgba(0, 0, 0, 0.15);
451
  }
452
 
453
+ a.pro-upsell span {
454
+ display: inline-block;
455
+ margin-right: 10px;
456
+ color: #fff;
457
+ }
458
 
459
+ a.pro-upsell {
460
+ display: inline;
461
+ color: #fff;
462
+ font-size: 13px;
463
+ font-weight: bold;
464
+ }
465
 
466
  /******************************************************************************/
467
  /******************************** OTHER STYLES ******************************/
469
 
470
  #thehole {
471
  position: absolute;
 
472
  top: 0;
473
+ left: 0;
474
  width: 1px;
475
  height: 1px;
476
  border: 0;
477
+ opacity: 0;
478
+
479
+ filter: progid:DXImageTransform.Microsoft.Alpha(opacity=0);
480
+ -moz-opacity: 0;
481
  }
482
 
483
+ .locker,
484
+ .locker-loader {
 
485
  position: absolute;
486
+ top: 0;
487
+ left: 0;
488
  }
489
 
490
  .locker {
491
  z-index: 1000;
492
+ opacity: 0.8;
493
  background-color: white;
494
+
495
  -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=80)";
496
  filter: alpha(opacity=80);
 
497
  }
498
 
499
  .locker-loader {
502
  }
503
 
504
  .file-wrapper {
505
+ display: inline-block;
506
+ width: auto;
507
+ max-width: 133px;
508
  }
509
 
510
  .file {
511
+ position: fixed;
512
+ max-width: 138px;
513
+ margin-top: -6px;
514
+ margin-left: -33px;
515
+ opacity: 0;
516
+ font-size: 22px;
517
+ cursor: pointer;
518
+
519
+ filter: progid:DXImageTransform.Microsoft.Alpha(opacity=0);
520
+ -moz-opacity: 0;
521
  }
522
 
523
  #remote-file {
524
+ display: inline-block;
525
+ float: right;
526
+ margin-left: 6px;
527
  }
528
 
529
+ .form-inline {
530
+ display: table;
531
+ /*margin: 0 auto;*/
532
+ width: 100%;
533
+ vertical-align: middle;
534
+ }
535
 
536
+ .computer-btn {
537
+ overflow: hidden;
538
+ left: -18px;
 
539
  padding-left: 27px !important;
540
+ border: medium none rgb(100, 100, 100) !important;
541
+ border: 1px solid #b0b0b0 !important;
542
+ color: #646464 !important;
543
+ background: #e6e6e6 url("../images/computer.png") no-repeat scroll 7px 1px !important;
544
+ -webkit-box-shadow: none !important;
545
+ box-shadow: none !important;
546
+ text-shadow: none!important;
547
  font-family: "Open Sans",sans-serif;
548
  font-weight: 700;
549
+ -webkit-transition: all 0.3s ease 0s;
 
 
 
 
 
 
 
 
 
 
550
  transition: all 0.3s ease 0s;
551
+ }
552
+
553
+ .computer-btn:hover {
554
  padding-left: 27px !important;
 
 
 
 
 
 
555
  border: 1px solid #2f8cea !important;
556
+ color: white !important;
557
+ background: #2f8cea url("../images/computer.png") no-repeat scroll 7px -36px !important;
558
+ -webkit-box-shadow: 0 1px 0 rgba(171, 171, 171, 0.5) inset, 0 1px 0 rgba(0, 0, 0, 0.15) !important;
559
+ -webkit-box-shadow: none !important;
560
+ box-shadow: 0 1px 0 rgba(171, 171, 171, 0.5) inset, 0 1px 0 rgba(0, 0, 0, 0.15) !important;
561
  box-shadow: none !important;
562
+ -webkit-transition: all 0.3s ease 0s;
563
+ -webkit-transition: all 0.3s ease;
564
+ transition: all 0.3s ease 0s;
565
+ transition: all 0.3s ease;
566
+ }
567
 
568
+ .just-on-pro {
 
 
 
 
569
  width: 250px;
570
  height: 100px;
 
 
571
  margin-bottom: 10px;
572
+ opacity: 0.8;
573
+ background: #f5f5f5 url("../images/available_pro.png") no-repeat scroll 0 1px !important;
574
+ cursor: not-allowed;
575
+ }
576
 
577
+ .from-web {
578
+ margin-top: 0;
579
  margin-bottom: 15px !important;
580
  }
581
 
582
+ .from-web-btn {
 
 
 
583
  padding-left: 25px !important;
584
+ border: medium none #646464 !important;
585
+ border: 1px solid #b0b0b0 !important;
586
+ color: #646464 !important;
587
+ background: #e6e6e6 url("../images/web.png") no-repeat scroll 7px 1px !important;
588
+ -webkit-box-shadow: none !important;
589
  box-shadow: none !important;
590
  font-family: "Open Sans",sans-serif;
591
  font-weight: 700;
592
+ -webkit-transition: all 0.3s ease 0s;
593
+ transition: all 0.3s ease 0s;
594
  /*margin-left: 2px !important;*/
595
  }
596
 
597
+ .from-web-btn:hover {
 
 
 
598
  padding-left: 25px !important;
 
 
 
 
 
599
  /*margin-left: 2px !important;*/
600
+ border: 1px solid #89b158 !important;
601
+ color: white !important;
602
+ background: #89b158 url("../images/web.png") no-repeat scroll 7px -38px !important;
603
+ -webkit-box-shadow: none !important;
604
  box-shadow: none !important;
605
+ -webkit-transition: all 0.3s ease 0s;
606
+ -webkit-transition: all 0.3s ease;
607
+ transition: all 0.3s ease 0s;
608
+ transition: all 0.3s ease;
609
  }
610
 
611
+ .preview {
612
  width: 100%;
613
  }
614
 
 
615
  #sidebar > ul > div.initial-screen > div {
616
  padding: 0 20px;
617
  }
618
 
619
+ .from-chart-btn {
 
 
 
620
  padding-left: 25px !important;
621
+ border: medium none #646464 !important;
622
+ border: 1px solid #b0b0b0 !important;
623
+ color: #646464 !important;
624
+ background: #e6e6e6 url("../images/from_chart.png") no-repeat scroll 7px 1px !important;
625
+ -webkit-box-shadow: none !important;
626
  box-shadow: none !important;
627
  font-family: "Open Sans",sans-serif;
628
  font-weight: 700;
629
+ -webkit-transition: all 0.3s ease 0s;
630
+ transition: all 0.3s ease 0s;
631
  /*margin-left: 2px !important;
632
  margin-top: 2px !important;*/
633
  }
634
 
635
+ .from-chart-btn:hover {
636
+ padding-left: 25px !important;
637
+ /*margin-left: 2px !important;*/
638
+ border: 1px solid #10aecb !important;
639
+ color: white !important;
640
+ background: #10aecb url("../images/from_chart.png") no-repeat scroll 7px -36px !important;
641
+ -webkit-box-shadow: none !important;
642
+ box-shadow: none !important;
643
+ -webkit-transition: all 0.3s ease 0s;
644
+ -webkit-transition: all 0.3s ease;
645
+ transition: all 0.3s ease 0s;
646
+ transition: all 0.3s ease;
647
+ /*margin-top: 2px !important;*/
648
+ }
649
+
650
+ input#existing-chart {
651
+ /*left: 18px;
 
652
  width: 110px;
653
  position: relative;*/
654
+ }
 
 
 
 
 
655
 
656
+ select#chart-id {
657
+ float: right;
658
+ width: 95px;
659
+ }
 
 
 
 
 
 
 
 
 
 
660
 
661
+ button#editor-chart-button {
662
+ display: block;
663
+ margin: 0 auto;
 
 
664
  border: 1px solid #2c80d6 !important;
665
+ color: white !important;
666
+ background-color: #2f8cea !important;
667
+ -webkit-box-shadow: none !important;
668
  box-shadow: none !important;
669
+ text-shadow: none;
670
+ -webkit-transition: all 0.3s ease;
671
+ transition: all 0.3s ease;
 
 
672
  }
673
 
674
+ .preview-btn {
675
+ border: 1px solid #2c80d6 !important;
676
+ color: white !important;
677
+ background-color: #2f8cea !important;
678
+ -webkit-box-shadow: none !important;
679
+ box-shadow: none !important;
680
  font-family: "Open Sans",sans-serif;
681
  font-weight: 700;
682
+ -webkit-transition: all 0.3s ease;
683
+ transition: all 0.3s ease;
684
+ }
685
+
686
+ .preview-btn:hover {
687
  border: 1px solid #2c80d6 !important;
688
+ color: white !important;
689
+ background-color: #2c80d6 !important;
690
+ -webkit-box-shadow: none !important;
691
  box-shadow: none !important;
692
+ font-family: "Open Sans",sans-serif;
693
+ font-weight: 700;
694
+ -webkit-transition: all 0.3s ease;
695
+ transition: all 0.3s ease;
 
696
  }
697
 
698
+ .show-live-btn {
 
699
  width: 100%;
700
+ margin-top: 15px !important;
701
+ border-color: #e98b00 !important;
702
+ background-color: #f90 !important;
703
+ -webkit-box-shadow: none !important;
704
+ box-shadow: none !important;
705
  font-family: "Open Sans",sans-serif;
706
  font-weight: 700;
 
707
  }
708
 
709
+ .show-live-btn:hover {
 
 
710
  width: 100%;
711
+ margin-top: 15px !important;
712
+ border-color: #e98b00 !important;
713
  background-color: #ea8c00 !important;
714
+ -webkit-box-shadow: none !important;
715
+ box-shadow: none !important;
716
  font-family: "Open Sans",sans-serif;
717
  font-weight: 700;
718
+ -webkit-transition: all 0.3s ease;
719
+ transition: all 0.3s ease;
 
 
 
 
720
  }
721
 
722
  .check-pro-btn {
 
 
723
  display: block;
724
+ width: 245px;
725
+ height: 40px;
726
  margin: 0 auto;
727
  }
728
 
729
+ .advanced-settings-btn,
730
+ .return-settings-btn {
731
  display: block;
 
 
 
732
  height: auto;
733
+ margin: 0 auto;
734
+ margin-top: 5px;
 
735
  margin-bottom: 20px;
736
+ border-radius: 3px;
737
+ font-size: 17px;
738
+ line-height: 34px;
739
+ cursor: pointer;
740
  }
741
 
742
  .return-settings-btn {
752
  }
753
 
754
  .hidden-setting {
755
+ display: none;
756
  }
757
 
758
+ /* ====== RESPONSIVE ====== */
759
 
760
+ @media (max-width: 1366px) {
761
+ .group-title {
762
+ padding: 4px 20px;
763
+ font-size: 14px;
764
+ font-weight: 400;
765
+ }
766
 
767
+ .group-title::after {
768
+ top: 10px;
769
+ }
770
 
771
+ #rate-stars {
772
+ margin: 3px 0 10px 40%;
773
+ }
774
 
775
+ .rate-the-plugin {
776
+ margin-left: -8%;
777
+ }
 
 
 
 
 
 
 
 
 
 
 
 
778
  }
779
 
780
  @media screen and (max-width: 782px) {
781
+ .button.button-primary.file-wrapper.computer-btn,
782
+ #remote-file,
783
+ #existing-chart {
784
+ height: 28px;
785
+ margin-bottom: 4px;
786
  padding: 0 10px 1px;
787
+ font-size: 13px;
788
+ line-height: 26px;
789
+ vertical-align: middle;
 
 
790
  }
 
791
  }
css/library.css CHANGED
@@ -1,5 +1,5 @@
1
  #visualizer-icon {
2
- background-image: url('../images/icon.png');
3
  }
4
 
5
  .visualizer-clearfix {
@@ -27,55 +27,55 @@
27
 
28
  .loader {
29
  position: absolute;
30
- left: 50%;
31
  top: 50%;
32
- margin-left: -16px;
33
  margin-top: -16px;
 
34
  }
35
 
36
  .visualizer-chart {
 
37
  float: left;
38
- padding: 5px;
39
  margin: 0 24px 24px 0;
 
40
  border: 1px solid #ddd;
41
- -webkit-box-shadow: 0px 0px 8px #ddd;
42
- box-shadow: 0px 0px 8px #ddd;
43
  background-color: #efefef;
44
- display: none;
 
45
  }
46
 
47
  .visualizer-chart-canvas {
48
- border: 1px solid #ddd;
49
- background-color: white;
50
  position: relative;
51
  width: 30%;
52
  height: 18.75%;
 
 
53
  }
54
 
55
  .visualizer-nochart-canvas {
56
- background-image: url('../images/notfound.png?v=4');
57
  background-repeat: repeat;
58
  }
59
 
60
  .visualizer-notfound {
61
- text-align: center;
62
- font-weight: bold;
63
- font-size: 14px;
64
- margin-top: -7px;
65
  position: absolute;
66
  top: 50%;
67
- left: 0;
68
  right: 0;
 
 
 
 
 
69
  }
70
 
71
  .visualizer-chart-action {
72
- float: right;
73
  display: block;
74
- height: 16px;
75
  width: 16px;
76
- background-repeat: no-repeat;
77
- background-image: url('../images/ui-icons.png');
78
  margin: 2px 5px 0;
 
 
79
  }
80
 
81
  .visualizer-nochart-delete,
@@ -95,15 +95,16 @@
95
 
96
  .visualizer-nochart-export,
97
  .visualizer-chart-export {
98
- background-position: -46px -64px;
99
  }
100
 
101
  .visualizer-nochart-clone,
102
  .visualizer-nochart-delete,
103
  .visualizer-nochart-edit {
104
- -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=50)";
105
- filter: alpha(opacity=50);
106
- opacity: 0.5
 
107
  }
108
 
109
  .visualizer-chart-footer {
@@ -111,16 +112,23 @@
111
  }
112
 
113
  .visualizer-chart-shortcode {
 
114
  color: #aaa;
115
  text-shadow: 0 1px 0 #fff;
116
  cursor: pointer;
117
- padding: 3px 0;
118
  }
119
 
120
- .visualizer-chart-shortcode::selection,
121
  .visualizer-chart-shortcode::-moz-selection {
 
122
  background-color: #a8d1ff;
 
 
 
 
 
123
  color: black;
 
124
  text-shadow: none;
125
  }
126
 
@@ -131,17 +139,19 @@
131
 
132
  .page-numbers {
133
  padding: 5px 10px;
134
- background-color: #aaa;
135
- color: white !important;
136
- text-decoration: none;
137
  border-radius: 2px;
 
 
 
138
  box-shadow: 0 0 5px #ccc;
139
  font-weight: bold;
 
140
  }
141
 
142
  .page-numbers.current,
143
  a.page-numbers:hover {
144
  background-color: lightcoral;
 
145
  box-shadow: 0 0 5px lightpink;
146
  }
147
 
@@ -150,28 +160,36 @@ a.page-numbers:hover {
150
  }
151
 
152
  #visualizer-search form {
153
- display:flex;
 
 
 
 
 
154
  align-items: center;
 
 
155
  }
156
 
157
  #visualizer-search > form > input[type="text"]:nth-child(1) {
158
  height: 30px;
159
  }
 
160
  #visualizer-search .button-secondary {
161
- background-color: lightcoral;
162
- box-shadow: 0 0 5px lightpink;
163
  padding: 5px 10px;
164
- color: white;
165
- text-decoration: none;
166
- -webkit-border-radius: 5px;
167
- -moz-border-radius: 5px;
168
  border-radius: 5px;
169
- font-weight: bold;
170
- line-height: 17px;
 
 
171
  font-size: 14px;
172
- margin-left: 20px;
 
 
173
  }
 
174
  #visualizer-search .button-secondary:hover {
175
- background-color: lightpink;
176
  border-color: lightpink;
 
177
  }
1
  #visualizer-icon {
2
+ background-image: url("../images/icon.png");
3
  }
4
 
5
  .visualizer-clearfix {
27
 
28
  .loader {
29
  position: absolute;
 
30
  top: 50%;
31
+ left: 50%;
32
  margin-top: -16px;
33
+ margin-left: -16px;
34
  }
35
 
36
  .visualizer-chart {
37
+ display: none;
38
  float: left;
 
39
  margin: 0 24px 24px 0;
40
+ padding: 5px;
41
  border: 1px solid #ddd;
 
 
42
  background-color: #efefef;
43
+ -webkit-box-shadow: 0 0 8px #ddd;
44
+ box-shadow: 0 0 8px #ddd;
45
  }
46
 
47
  .visualizer-chart-canvas {
 
 
48
  position: relative;
49
  width: 30%;
50
  height: 18.75%;
51
+ border: 1px solid #ddd;
52
+ background-color: white;
53
  }
54
 
55
  .visualizer-nochart-canvas {
56
+ background-image: url("../images/notfound.png?v=4");
57
  background-repeat: repeat;
58
  }
59
 
60
  .visualizer-notfound {
 
 
 
 
61
  position: absolute;
62
  top: 50%;
 
63
  right: 0;
64
+ left: 0;
65
+ margin-top: -7px;
66
+ font-size: 14px;
67
+ font-weight: bold;
68
+ text-align: center;
69
  }
70
 
71
  .visualizer-chart-action {
 
72
  display: block;
73
+ float: right;
74
  width: 16px;
75
+ height: 16px;
 
76
  margin: 2px 5px 0;
77
+ background-image: url("../images/ui-icons.png");
78
+ background-repeat: no-repeat;
79
  }
80
 
81
  .visualizer-nochart-delete,
95
 
96
  .visualizer-nochart-export,
97
  .visualizer-chart-export {
98
+ background-position: -46px -64px;
99
  }
100
 
101
  .visualizer-nochart-clone,
102
  .visualizer-nochart-delete,
103
  .visualizer-nochart-edit {
104
+ opacity: 0.5;
105
+
106
+ -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=50)";
107
+ filter: alpha(opacity=50);
108
  }
109
 
110
  .visualizer-chart-footer {
112
  }
113
 
114
  .visualizer-chart-shortcode {
115
+ padding: 3px 0;
116
  color: #aaa;
117
  text-shadow: 0 1px 0 #fff;
118
  cursor: pointer;
 
119
  }
120
 
121
+ .visualizer-chart-shortcode::-moz-selection,
122
  .visualizer-chart-shortcode::-moz-selection {
123
+ color: black;
124
  background-color: #a8d1ff;
125
+ text-shadow: none;
126
+ }
127
+
128
+ .visualizer-chart-shortcode::selection,
129
+ .visualizer-chart-shortcode::-moz-selection {
130
  color: black;
131
+ background-color: #a8d1ff;
132
  text-shadow: none;
133
  }
134
 
139
 
140
  .page-numbers {
141
  padding: 5px 10px;
 
 
 
142
  border-radius: 2px;
143
+ color: white !important;
144
+ background-color: #aaa;
145
+ -webkit-box-shadow: 0 0 5px #ccc;
146
  box-shadow: 0 0 5px #ccc;
147
  font-weight: bold;
148
+ text-decoration: none;
149
  }
150
 
151
  .page-numbers.current,
152
  a.page-numbers:hover {
153
  background-color: lightcoral;
154
+ -webkit-box-shadow: 0 0 5px lightpink;
155
  box-shadow: 0 0 5px lightpink;
156
  }
157
 
160
  }
161
 
162
  #visualizer-search form {
163
+ display: -webkit-box;
164
+ display: -webkit-flex;
165
+ display: -ms-flexbox;
166
+ display: flex;
167
+
168
+ -webkit-align-items: center;
169
  align-items: center;
170
+ -webkit-box-align: center;
171
+ -ms-flex-align: center;
172
  }
173
 
174
  #visualizer-search > form > input[type="text"]:nth-child(1) {
175
  height: 30px;
176
  }
177
+
178
  #visualizer-search .button-secondary {
179
+ margin-left: 20px;
 
180
  padding: 5px 10px;
 
 
 
 
181
  border-radius: 5px;
182
+ color: white;
183
+ background-color: lightcoral;
184
+ -webkit-box-shadow: 0 0 5px lightpink;
185
+ box-shadow: 0 0 5px lightpink;
186
  font-size: 14px;
187
+ font-weight: bold;
188
+ line-height: 17px;
189
+ text-decoration: none;
190
  }
191
+
192
  #visualizer-search .button-secondary:hover {
 
193
  border-color: lightpink;
194
+ background-color: lightpink;
195
  }
css/media.css CHANGED
@@ -1,5 +1,5 @@
1
  /*
2
- Version: 1.6.6
3
  */
4
  #visualizer-library-view {
5
  padding: 30px 10px 10px 30px;
@@ -30,46 +30,46 @@
30
  margin: 0 20px 20px 0;
31
  padding: 5px;
32
  border: 1px solid #ddd;
33
- -webkit-box-shadow: 0px 0px 8px #ddd;
34
- box-shadow: 0px 0px 8px #ddd;
35
  background-color: #efefef;
 
 
36
  }
37
 
38
  .visualizer-library-chart-canvas {
39
- height: 187px;
40
  width: 250px;
 
41
  border: 1px solid #ddd;
42
  background-color: white;
43
- background-image: url('../images/ajax-loader.gif');
44
- background-position: center center;
45
  background-repeat: no-repeat;
 
46
  }
47
 
48
  .visualizer-library-nochart-canvas {
49
- background-image: url('../images/notfound.png?v=4');
50
- background-repeat: repeat;
51
  position: relative;
 
 
52
  }
53
 
54
  .visualizer-library-notfound {
55
- text-align: center;
56
- font-weight: bold;
57
- font-size: 14px;
58
- margin-top: -7px;
59
  position: absolute;
60
  top: 50%;
61
- left: 0;
62
  right: 0;
 
 
 
 
 
63
  }
64
 
65
  .visualizer-library-chart-action {
66
- float: right;
67
  display: block;
68
- height: 16px;
69
  width: 16px;
70
- background-repeat: no-repeat;
71
- background-image: url('../images/ui-icons.png');
72
  margin: 2px 5px 0;
 
 
73
  }
74
 
75
  .visualizer-library-nochart-delete,
@@ -84,9 +84,10 @@
84
 
85
  .visualizer-library-nochart-delete,
86
  .visualizer-library-nochart-insert {
87
- -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=50)";
88
- filter: alpha(opacity=50);
89
- opacity: 0.5
 
90
  }
91
 
92
  .visualizer-library-chart-footer {
@@ -94,16 +95,23 @@
94
  }
95
 
96
  .visualizer-library-chart-shortcode {
 
97
  color: #aaa;
98
  text-shadow: 0 1px 0 #fff;
99
  cursor: pointer;
100
- padding: 3px 0;
101
  }
102
 
103
- .visualizer-library-chart-shortcode::selection,
104
  .visualizer-library-chart-shortcode::-moz-selection {
 
105
  background-color: #a8d1ff;
 
 
 
 
 
106
  color: black;
 
107
  text-shadow: none;
108
  }
109
 
@@ -113,43 +121,47 @@
113
 
114
  .visualizer-library-pagination-item {
115
  float: left;
116
- margin-left: 20px;
117
  margin-top: 10px;
 
118
  }
119
 
120
  .visualizer-library-pagination-page {
121
  padding: 5px 10px;
122
- background-color: #aaa;
123
- color: white !important;
124
- text-decoration: none;
125
  border-radius: 2px;
 
 
 
126
  box-shadow: 0 0 5px #ccc;
127
  font-weight: bold;
 
128
  }
129
 
130
  .visualizer-library-pagination-active > .visualizer-library-pagination-page,
131
  a.visualizer-library-pagination-page:hover {
132
  background-color: lightcoral;
 
133
  box-shadow: 0 0 5px lightpink;
134
  }
135
 
136
- .locker, .locker-loader {
137
- left: 0;
 
138
  top: 0;
 
139
  width: 100%;
140
  height: 100%;
141
- position: absolute;
142
  }
143
 
144
  .locker {
145
  z-index: 1000;
 
146
  background-color: white;
 
147
  -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=80)";
148
  filter: alpha(opacity=80);
149
- opacity: 0.8;
150
  }
151
 
152
  .locker-loader {
153
  z-index: 1001;
154
  background: url(../images/ajax-loader.gif) no-repeat center center;
155
- }
1
  /*
2
+ Version: 1.7.0
3
  */
4
  #visualizer-library-view {
5
  padding: 30px 10px 10px 30px;
30
  margin: 0 20px 20px 0;
31
  padding: 5px;
32
  border: 1px solid #ddd;
 
 
33
  background-color: #efefef;
34
+ -webkit-box-shadow: 0 0 8px #ddd;
35
+ box-shadow: 0 0 8px #ddd;
36
  }
37
 
38
  .visualizer-library-chart-canvas {
 
39
  width: 250px;
40
+ height: 187px;
41
  border: 1px solid #ddd;
42
  background-color: white;
43
+ background-image: url("../images/ajax-loader.gif");
 
44
  background-repeat: no-repeat;
45
+ background-position: center center;
46
  }
47
 
48
  .visualizer-library-nochart-canvas {
 
 
49
  position: relative;
50
+ background-image: url("../images/notfound.png?v=4");
51
+ background-repeat: repeat;
52
  }
53
 
54
  .visualizer-library-notfound {
 
 
 
 
55
  position: absolute;
56
  top: 50%;
 
57
  right: 0;
58
+ left: 0;
59
+ margin-top: -7px;
60
+ font-size: 14px;
61
+ font-weight: bold;
62
+ text-align: center;
63
  }
64
 
65
  .visualizer-library-chart-action {
 
66
  display: block;
67
+ float: right;
68
  width: 16px;
69
+ height: 16px;
 
70
  margin: 2px 5px 0;
71
+ background-image: url("../images/ui-icons.png");
72
+ background-repeat: no-repeat;
73
  }
74
 
75
  .visualizer-library-nochart-delete,
84
 
85
  .visualizer-library-nochart-delete,
86
  .visualizer-library-nochart-insert {
87
+ opacity: 0.5;
88
+
89
+ -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=50)";
90
+ filter: alpha(opacity=50);
91
  }
92
 
93
  .visualizer-library-chart-footer {
95
  }
96
 
97
  .visualizer-library-chart-shortcode {
98
+ padding: 3px 0;
99
  color: #aaa;
100
  text-shadow: 0 1px 0 #fff;
101
  cursor: pointer;
 
102
  }
103
 
104
+ .visualizer-library-chart-shortcode::-moz-selection,
105
  .visualizer-library-chart-shortcode::-moz-selection {
106
+ color: black;
107
  background-color: #a8d1ff;
108
+ text-shadow: none;
109
+ }
110
+
111
+ .visualizer-library-chart-shortcode::selection,
112
+ .visualizer-library-chart-shortcode::-moz-selection {
113
  color: black;
114
+ background-color: #a8d1ff;
115
  text-shadow: none;
116
  }
117
 
121
 
122
  .visualizer-library-pagination-item {
123
  float: left;
 
124
  margin-top: 10px;
125
+ margin-left: 20px;
126
  }
127
 
128
  .visualizer-library-pagination-page {
129
  padding: 5px 10px;
 
 
 
130
  border-radius: 2px;
131
+ color: white !important;
132
+ background-color: #aaa;
133
+ -webkit-box-shadow: 0 0 5px #ccc;
134
  box-shadow: 0 0 5px #ccc;
135
  font-weight: bold;
136
+ text-decoration: none;
137
  }
138
 
139
  .visualizer-library-pagination-active > .visualizer-library-pagination-page,
140
  a.visualizer-library-pagination-page:hover {
141
  background-color: lightcoral;
142
+ -webkit-box-shadow: 0 0 5px lightpink;
143
  box-shadow: 0 0 5px lightpink;
144
  }
145
 
146
+ .locker,
147
+ .locker-loader {
148
+ position: absolute;
149
  top: 0;
150
+ left: 0;
151
  width: 100%;
152
  height: 100%;
 
153
  }
154
 
155
  .locker {
156
  z-index: 1000;
157
+ opacity: 0.8;
158
  background-color: white;
159
+
160
  -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=80)";
161
  filter: alpha(opacity=80);
 
162
  }
163
 
164
  .locker-loader {
165
  z-index: 1001;
166
  background: url(../images/ajax-loader.gif) no-repeat center center;
167
+ }
images/ajax-loader.gif CHANGED
Binary file
images/available_pro.png CHANGED
Binary file
images/computer.png CHANGED
Binary file
images/from_chart.png CHANGED
Binary file
images/notfound.png CHANGED
Binary file
images/star.png CHANGED
Binary file
images/ui-icons.png CHANGED
Binary file
images/web.png CHANGED
Binary file
index.php CHANGED
@@ -1,15 +1,16 @@
1
  <?php
 
2
  /*
3
- Plugin Name: Visualizer: Charts and Graphs Lite
4
- Plugin URI: https://themeisle.com/plugins/visualizer-charts-and-graphs-lite/
5
- Description: A simple, easy to use and quite powerful tool to create, manage and embed interactive charts into your WordPress posts and pages. The plugin uses Google Visualization API to render charts, which supports cross-browser compatibility (adopting VML for older IE versions) and cross-platform portability to iOS and new Android releases.
6
- Version: 1.6.6
7
- Author: Themeisle
8
- Author URI: http://themeisle.com
9
- License: GPL v2.0 or later
10
- License URI: http://www.opensource.org/licenses/gpl-license.php
11
  */
12
-
13
 
14
  // +----------------------------------------------------------------------+
15
  // | Copyright 2013 Madpixels (email : visualizer@madpixels.net) |
@@ -30,24 +31,22 @@ License URI: http://www.opensource.org/licenses/gpl-license.php
30
  // +----------------------------------------------------------------------+
31
  // | Author: Eugene Manuilov <eugene@manuilov.org> |
32
  // +----------------------------------------------------------------------+
33
-
34
  // prevent direct access to the plugin folder
35
- if ( !defined( 'ABSPATH' ) ) {
36
  header( 'HTTP/1.0 404 Not Found', true, 404 );
37
  exit;
38
  }
39
 
40
  // don't load the plugin, if it has been already loaded
41
  if ( class_exists( 'Visualizer_Plugin', false ) ) {
42
- return;
43
  }
44
 
45
  // Added by Ash/Upwork
46
- if ( class_exists( 'Visualizer_Pro', false ) ){
47
- define( 'Visualizer_Pro', true);
48
  }
49
  // Added by Ash/Upwork
50
-
51
  /**
52
  * Automatically loads classes for the plugin. Checks a namespace and loads only
53
  * approved classes.
@@ -83,11 +82,11 @@ function visualizer_launch() {
83
  define( 'VISUALIZER_ABSURL', plugins_url( '/', __FILE__ ) );
84
  define( 'VISUALIZER_ABSPATH', dirname( __FILE__ ) );
85
 
86
- if ( !defined( 'VISUALIZER_CSV_DELIMITER' ) ) {
87
  define( 'VISUALIZER_CSV_DELIMITER', ',' );
88
  }
89
 
90
- if ( !defined( 'VISUALIZER_CSV_ENCLOSURE' ) ) {
91
  define( 'VISUALIZER_CSV_ENCLOSURE', '"' );
92
  }
93
 
1
  <?php
2
+
3
  /*
4
+ Plugin Name: Visualizer: Charts and Graphs Lite
5
+ Plugin URI: https://themeisle.com/plugins/visualizer-charts-and-graphs-lite/
6
+ Description: A simple, easy to use and quite powerful tool to create, manage and embed interactive charts into your WordPress posts and pages. The plugin uses Google Visualization API to render charts, which supports cross-browser compatibility (adopting VML for older IE versions) and cross-platform portability to iOS and new Android releases.
7
+ Version: 1.7.0
8
+ Author: Themeisle
9
+ Author URI: http://themeisle.com
10
+ License: GPL v2.0 or later
11
+ License URI: http://www.opensource.org/licenses/gpl-license.php
12
  */
13
+
14
 
15
  // +----------------------------------------------------------------------+
16
  // | Copyright 2013 Madpixels (email : visualizer@madpixels.net) |
31
  // +----------------------------------------------------------------------+
32
  // | Author: Eugene Manuilov <eugene@manuilov.org> |
33
  // +----------------------------------------------------------------------+
 
34
  // prevent direct access to the plugin folder
35
+ if ( ! defined( 'ABSPATH' ) ) {
36
  header( 'HTTP/1.0 404 Not Found', true, 404 );
37
  exit;
38
  }
39
 
40
  // don't load the plugin, if it has been already loaded
41
  if ( class_exists( 'Visualizer_Plugin', false ) ) {
42
+ return;
43
  }
44
 
45
  // Added by Ash/Upwork
46
+ if ( class_exists( 'Visualizer_Pro', false ) ) {
47
+ define( 'Visualizer_Pro', true );
48
  }
49
  // Added by Ash/Upwork
 
50
  /**
51
  * Automatically loads classes for the plugin. Checks a namespace and loads only
52
  * approved classes.
82
  define( 'VISUALIZER_ABSURL', plugins_url( '/', __FILE__ ) );
83
  define( 'VISUALIZER_ABSPATH', dirname( __FILE__ ) );
84
 
85
+ if ( ! defined( 'VISUALIZER_CSV_DELIMITER' ) ) {
86
  define( 'VISUALIZER_CSV_DELIMITER', ',' );
87
  }
88
 
89
+ if ( ! defined( 'VISUALIZER_CSV_ENCLOSURE' ) ) {
90
  define( 'VISUALIZER_CSV_ENCLOSURE', '"' );
91
  }
92
 
js/frame.js CHANGED
@@ -1,3 +1,7 @@
 
 
 
 
1
  (function($) {
2
  $(document).ready(function() {
3
  $('.type-radio').change(function() {
@@ -19,9 +23,9 @@
19
  $('#remote-file').click(function() {
20
  var url = $.trim(prompt(visualizer.l10n.remotecsv_prompt));
21
 
22
- if (url != '') {
23
  if (/^([a-z]([a-z]|\d|\+|-|\.)*):(\/\/(((([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:)*@)?((\[(|(v[\da-f]{1,}\.(([a-z]|\d|-|\.|_|~)|[!\$&'\(\)\*\+,;=]|:)+))\])|((\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5])\.(\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5])\.(\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5])\.(\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5]))|(([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=])*)(:\d*)?)(\/(([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)*)*|(\/((([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)+(\/(([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)*)*)?)|((([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)+(\/(([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)*)*)|((([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)){0})(\?((([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)|[\uE000-\uF8FF]|\/|\?)*)?(\#((([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)|\/|\?)*)?$/i.test(url)) {
24
- if (url.substr(url.length - 8) == '/pubhtml') {
25
  url = url.substring(0, url.length - 8) + '/export?format=csv';
26
  }
27
 
@@ -36,7 +40,7 @@
36
  });
37
 
38
  $('#csv-file').change(function() {
39
- if ($.trim($(this).val()) != '') {
40
  $('#remote-data').val('');
41
  $('#canvas').lock();
42
  $('#csv-form').submit();
@@ -96,7 +100,7 @@
96
  });
97
 
98
  return $(this);
99
- }
100
 
101
  $.fn.unlock = function() {
102
  $(this).each(function() {
@@ -105,7 +109,7 @@
105
  });
106
 
107
  return $(this);
108
- }
109
  })(jQuery);
110
 
111
  //Hide / show settings in sidebar
1
+ /* global prompt */
2
+ /* global visualizer */
3
+ /* global alert */
4
+
5
  (function($) {
6
  $(document).ready(function() {
7
  $('.type-radio').change(function() {
23
  $('#remote-file').click(function() {
24
  var url = $.trim(prompt(visualizer.l10n.remotecsv_prompt));
25
 
26
+ if (url !== '') {
27
  if (/^([a-z]([a-z]|\d|\+|-|\.)*):(\/\/(((([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:)*@)?((\[(|(v[\da-f]{1,}\.(([a-z]|\d|-|\.|_|~)|[!\$&'\(\)\*\+,;=]|:)+))\])|((\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5])\.(\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5])\.(\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5])\.(\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5]))|(([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=])*)(:\d*)?)(\/(([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)*)*|(\/((([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)+(\/(([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)*)*)?)|((([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)+(\/(([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)*)*)|((([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)){0})(\?((([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)|[\uE000-\uF8FF]|\/|\?)*)?(\#((([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)|\/|\?)*)?$/i.test(url)) {
28
+ if (url.substr(url.length - 8) === '/pubhtml') {
29
  url = url.substring(0, url.length - 8) + '/export?format=csv';
30
  }
31
 
40
  });
41
 
42
  $('#csv-file').change(function() {
43
+ if ($.trim($(this).val()) !== '') {
44
  $('#remote-data').val('');
45
  $('#canvas').lock();
46
  $('#csv-form').submit();
100
  });
101
 
102
  return $(this);
103
+ };
104
 
105
  $.fn.unlock = function() {
106
  $(this).each(function() {
109
  });
110
 
111
  return $(this);
112
+ };
113
  })(jQuery);
114
 
115
  //Hide / show settings in sidebar
js/library.js CHANGED
@@ -1,3 +1,4 @@
 
1
  (function(wpmv) {
2
  var vm, vmv;
3
 
@@ -37,7 +38,7 @@
37
  width *= 0.305;
38
  $(this).width(width - 14).height(width * 0.75).parent().css('margin-right', margin + 'px').css('margin-bottom', margin + 'px');
39
  });
40
- }
41
 
42
  $('.visualizer-chart-canvas').adjust();
43
 
1
+ /* global visualizer */
2
  (function(wpmv) {
3
  var vm, vmv;
4
 
38
  width *= 0.305;
39
  $(this).width(width - 14).height(width * 0.75).parent().css('margin-right', margin + 'px').css('margin-bottom', margin + 'px');
40
  });
41
+ };
42
 
43
  $('.visualizer-chart-canvas').adjust();
44
 
js/media.js CHANGED
@@ -1,3 +1,4 @@
 
1
  (function(wpmv, g) {
2
  var mediaFrame, wpmvtv;
3
 
1
+ /* global google */
2
  (function(wpmv, g) {
3
  var mediaFrame, wpmvtv;
4
 
js/media/model.js CHANGED
@@ -3,7 +3,7 @@
3
 
4
  wpmm.visualizer.Chart = Backbone.Model.extend({
5
  sync: function(method, model, options) {
6
- if ('delete' == method) {
7
  options = options || {};
8
  options.data = _.extend( options.data || {}, {
9
  action: wpmvlv.actions.delete_chart,
3
 
4
  wpmm.visualizer.Chart = Backbone.Model.extend({
5
  sync: function(method, model, options) {
6
+ if ('delete' === method) {
7
  options = options || {};
8
  options.data = _.extend( options.data || {}, {
9
  action: wpmvlv.actions.delete_chart,
js/media/view.js CHANGED
@@ -1,3 +1,7 @@
 
 
 
 
1
  (function($, wpm) {
2
  var libraryWidth, libraryHeight, wpmv, wpmV, wpmvv, wpmvvl, wpmvvb, l10n;
3
 
@@ -55,14 +59,14 @@
55
  settings.height = self.options.height;
56
 
57
  table = new gv.DataTable({cols: series});
58
- chart = type == 'gauge' ? 'Gauge' : type.charAt(0).toUpperCase() + type.slice(1) + 'Chart';
59
  chart = new gv[chart](self.el);
60
 
61
  switch (type) {
62
  case 'pie':
63
  if (settings.slices) {
64
  for (i in settings.slices) {
65
- if (settings.slices[i]['color'] == '') {
66
  delete settings.slices[i]['color'];
67
  }
68
  }
@@ -76,14 +80,14 @@
76
  case 'candlestick':
77
  if (settings.series) {
78
  for (i in settings.series) {
79
- if (settings.series[i]['color'] == '') {
80
  delete settings.series[i]['color'];
81
  }
82
  }
83
  }
84
  break;
85
  case 'geo':
86
- if (settings.region != undefined && settings.region.replace(/^\s+|\s+$/g, '') == '') {
87
  settings['region'] = 'world';
88
  }
89
  break;
@@ -93,7 +97,7 @@
93
  return;
94
  }
95
 
96
- if (series[0] && (series[0].type == 'date' || series[0].type == 'datetime')) {
97
  axis = false;
98
  switch (type) {
99
  case 'line':
@@ -126,7 +130,7 @@
126
  for (i = 0; i < data.length; i++) {
127
  row = [];
128
  for (j = 0; j < series.length; j++) {
129
- if (series[j].type == 'date' || series[j].type == 'datetime') {
130
  date = new Date(data[i][j]);
131
  data[i][j] = null;
132
  if (Object.prototype.toString.call(date) === "[object Date]") {
@@ -143,7 +147,7 @@
143
  if (settings.series) {
144
  for (i = 0; i < settings.series.length; i++) {
145
  format = settings.series[i].format;
146
- if (!format || format == '') {
147
  continue;
148
  }
149
 
@@ -397,13 +401,9 @@
397
  self.$el.html(_.chain(items).map(function(item) {
398
  var content, className;
399
 
400
- content = item == '...' || item == self.options.page
401
- ? self.make('span', { class: 'visualizer-library-pagination-page' }, item)
402
- : self.make('a', { class: 'visualizer-library-pagination-page', href: 'javascript:;', 'data-page': item }, item);
403
 
404
- className = item == self.options.page
405
- ? 'visualizer-library-pagination-item visualizer-library-pagination-active'
406
- : 'visualizer-library-pagination-item';
407
 
408
  return self.make('li', { class: className }, content);
409
  }).value());
@@ -419,7 +419,7 @@
419
  } else {
420
  tmp = current - Math.floor( max / 2 );
421
 
422
- if ( max % 2 == 0 ) {
423
  tmp++;
424
  }
425
 
@@ -435,12 +435,12 @@
435
  pagenation.push(tmp++);
436
  }
437
 
438
- if ( pagenation[0] != 1 ) {
439
  pagenation[0] = 1;
440
  pagenation[1] = '...';
441
  }
442
 
443
- if ( pagenation[max - 1] != total ) {
444
  pagenation[max - 1] = total;
445
  pagenation[max - 2] = '...';
446
  }
@@ -487,7 +487,7 @@
487
  });
488
 
489
  return $(this);
490
- }
491
 
492
  $.fn.unlock = function() {
493
  $(this).each(function() {
@@ -500,5 +500,5 @@
500
  });
501
 
502
  return $(this);
503
- }
504
  })(jQuery);
1
+ /*jshint scripturl:true*/
2
+ /* global google */
3
+ /* global visualizer */
4
+ /* global showNotice */
5
  (function($, wpm) {
6
  var libraryWidth, libraryHeight, wpmv, wpmV, wpmvv, wpmvvl, wpmvvb, l10n;
7
 
59
  settings.height = self.options.height;
60
 
61
  table = new gv.DataTable({cols: series});
62
+ chart = type === 'gauge' ? 'Gauge' : type.charAt(0).toUpperCase() + type.slice(1) + 'Chart';
63
  chart = new gv[chart](self.el);
64
 
65
  switch (type) {
66
  case 'pie':
67
  if (settings.slices) {
68
  for (i in settings.slices) {
69
+ if (settings.slices[i]['color'] === '') {
70
  delete settings.slices[i]['color'];
71
  }
72
  }
80
  case 'candlestick':
81
  if (settings.series) {
82
  for (i in settings.series) {
83
+ if (settings.series[i]['color'] === '') {
84
  delete settings.series[i]['color'];
85
  }
86
  }
87
  }
88
  break;
89
  case 'geo':
90
+ if (settings.region !== undefined && settings.region.replace(/^\s+|\s+$/g, '') === '') {
91
  settings['region'] = 'world';
92
  }
93
  break;
97
  return;
98
  }
99
 
100
+ if (series[0] && (series[0].type === 'date' || series[0].type === 'datetime')) {
101
  axis = false;
102
  switch (type) {
103
  case 'line':
130
  for (i = 0; i < data.length; i++) {
131
  row = [];
132
  for (j = 0; j < series.length; j++) {
133
+ if (series[j].type === 'date' || series[j].type === 'datetime') {
134
  date = new Date(data[i][j]);
135
  data[i][j] = null;
136
  if (Object.prototype.toString.call(date) === "[object Date]") {
147
  if (settings.series) {
148
  for (i = 0; i < settings.series.length; i++) {
149
  format = settings.series[i].format;
150
+ if (!format || format === '') {
151
  continue;
152
  }
153
 
401
  self.$el.html(_.chain(items).map(function(item) {
402
  var content, className;
403
 
404
+ content = item === '...' || item === self.options.page ? self.make('span', { class: 'visualizer-library-pagination-page' }, item) : self.make('a', { class: 'visualizer-library-pagination-page', href: 'javascript:;', 'data-page': item }, item);
 
 
405
 
406
+ className = item === self.options.page ? 'visualizer-library-pagination-item visualizer-library-pagination-active' : 'visualizer-library-pagination-item';
 
 
407
 
408
  return self.make('li', { class: className }, content);
409
  }).value());
419
  } else {
420
  tmp = current - Math.floor( max / 2 );
421
 
422
+ if ( max % 2 === 0 ) {
423
  tmp++;
424
  }
425
 
435
  pagenation.push(tmp++);
436
  }
437
 
438
+ if ( pagenation[0] !== 1 ) {
439
  pagenation[0] = 1;
440
  pagenation[1] = '...';
441
  }
442
 
443
+ if ( pagenation[max - 1] !== total ) {
444
  pagenation[max - 1] = total;
445
  pagenation[max - 2] = '...';
446
  }
487
  });
488
 
489
  return $(this);
490
+ };
491
 
492
  $.fn.unlock = function() {
493
  $(this).each(function() {
500
  });
501
 
502
  return $(this);
503
+ };
504
  })(jQuery);
js/preview.js CHANGED
@@ -1,3 +1,4 @@
 
1
  (function($, v) {
2
  var timeout;
3
 
1
+ /* global visualizer */
2
  (function($, v) {
3
  var timeout;
4
 
js/render.js CHANGED
@@ -1,3 +1,5 @@
 
 
1
  (function(v, g) {
2
  var gv;
3
 
@@ -34,7 +36,7 @@
34
  case 'pie':
35
  if (settings.slices) {
36
  for (i in settings.slices) {
37
- if (settings.slices[i]['color'] == '') {
38
  delete settings.slices[i]['color'];
39
  }
40
  }
@@ -48,24 +50,24 @@
48
  case 'candlestick':
49
  if (settings.series) {
50
  for (i in settings.series) {
51
- if (settings.series[i]['color'] == '') {
52
  delete settings.series[i]['color'];
53
  }
54
  }
55
  }
56
 
57
- if (settings.series && settings.legend && settings.legend.position == "left")
58
  {
59
  settings.targetAxisIndex = 1;
60
  }
61
  break;
62
  case 'geo':
63
- if (settings.region != undefined && settings.region.replace(/^\s+|\s+$/g, '') == '') {
64
  settings['region'] = 'world';
65
  }
66
  break;
67
  case 'table':
68
- if (parseInt(settings['pagination']) != 1)
69
  {
70
  delete settings['pageSize'];
71
  }
@@ -77,23 +79,23 @@
77
  settings['timeline']['groupByRowLabel'] = settings['groupByRowLabel'] ? true : false;
78
  settings['timeline']['colorByRowLabel'] = settings['colorByRowLabel'] ? true : false;
79
  settings['timeline']['showRowLabels'] = settings['showRowLabels'] ? true : false;
80
- if(settings['singleColor'] != '') {
81
  settings['timeline']['singleColor'] = settings['singleColor'];
82
  }
83
  break;
84
  case 'combo':
85
  if (settings.series) {
86
  for (i in settings.series) {
87
- if (settings.series[i]['type'] == '') {
88
  delete settings.series[i]['type'];
89
  }
90
- if (settings.series[i]['color'] == '') {
91
  delete settings.series[i]['color'];
92
  }
93
  }
94
  }
95
 
96
- if (settings.series && settings.legend && settings.legend.position == "left")
97
  {
98
  settings.targetAxisIndex = 1;
99
  }
@@ -102,7 +104,7 @@
102
  return;
103
  }
104
 
105
- if (series[0] && (series[0].type == 'date' || series[0].type == 'datetime')) {
106
  axis = false;
107
  switch (v.charts[id].type) {
108
  case 'line':
@@ -133,13 +135,13 @@
133
  }
134
 
135
  if(settings.hAxis){
136
- if(settings.hAxis.textStyle && settings.hAxis.textStyle != ''){
137
  settings.hAxis.textStyle = {color: settings.hAxis.textStyle};
138
  }
139
  }
140
 
141
  if(settings.vAxis){
142
- if(settings.vAxis.textStyle && settings.vAxis.textStyle != ''){
143
  settings.vAxis.textStyle = {color: settings.vAxis.textStyle};
144
  }
145
  }
@@ -147,7 +149,7 @@
147
  for (i = 0; i < data.length; i++) {
148
  row = [];
149
  for (j = 0; j < series.length; j++) {
150
- if (series[j].type == 'date' || series[j].type == 'datetime') {
151
  date = new Date(data[i][j]);
152
  data[i][j] = null;
153
  if (Object.prototype.toString.call(date) === "[object Date]") {
@@ -164,7 +166,7 @@
164
  if (settings.series) {
165
  for (i = 0; i < settings.series.length; i++) {
166
  format = settings.series[i].format;
167
- if (!format || format == '') {
168
  continue;
169
  }
170
 
@@ -211,23 +213,30 @@
211
  resizeTimeout = setTimeout(v.render, 100);
212
  });
213
 
214
- resizeHiddenContainers();
215
  });
216
 
217
- function resizeHiddenContainers(){
 
 
 
 
218
  $(".visualizer-front").parents().each(function(){
219
- if(!$(this).is(":visible")){
220
  $(this).addClass("visualizer-hidden-container");
221
  }
222
  });
223
 
224
  var mutateObserver = new MutationObserver(function(records) {
225
  records.forEach(function(record) {
226
- if(record.attributeName == "style" || record.attributeName == "class"){
227
  var element = $(record.target);
228
  var displayStyle = window.getComputedStyle(element[0]).getPropertyValue("display");
229
- if(element.hasClass("visualizer-hidden-container-resized") || displayStyle == "none") return;
230
- element.addClass("visualizer-hidden-container-resized").find(".visualizer-front").resize();
 
 
 
231
  }
232
  });
233
  });
1
+ /* global google */
2
+ /* global visualizer */
3
  (function(v, g) {
4
  var gv;
5
 
36
  case 'pie':
37
  if (settings.slices) {
38
  for (i in settings.slices) {
39
+ if (settings.slices[i]['color'] === '') {
40
  delete settings.slices[i]['color'];
41
  }
42
  }
50
  case 'candlestick':
51
  if (settings.series) {
52
  for (i in settings.series) {
53
+ if (settings.series[i]['color'] === '') {
54
  delete settings.series[i]['color'];
55
  }
56
  }
57
  }
58
 
59
+ if (settings.series && settings.legend && settings.legend.position === "left")
60
  {
61
  settings.targetAxisIndex = 1;
62
  }
63
  break;
64
  case 'geo':
65
+ if (settings.region !== undefined && settings.region.replace(/^\s+|\s+$/g, '') === '') {
66
  settings['region'] = 'world';
67
  }
68
  break;
69
  case 'table':
70
+ if (parseInt(settings['pagination']) !== 1)
71
  {
72
  delete settings['pageSize'];
73
  }
79
  settings['timeline']['groupByRowLabel'] = settings['groupByRowLabel'] ? true : false;
80
  settings['timeline']['colorByRowLabel'] = settings['colorByRowLabel'] ? true : false;
81
  settings['timeline']['showRowLabels'] = settings['showRowLabels'] ? true : false;
82
+ if(settings['singleColor'] !== '') {
83
  settings['timeline']['singleColor'] = settings['singleColor'];
84
  }
85
  break;
86
  case 'combo':
87
  if (settings.series) {
88
  for (i in settings.series) {
89
+ if (settings.series[i]['type'] === '') {
90
  delete settings.series[i]['type'];
91
  }
92
+ if (settings.series[i]['color'] === '') {
93
  delete settings.series[i]['color'];
94
  }
95
  }
96
  }
97
 
98
+ if (settings.series && settings.legend && settings.legend.position === "left")
99
  {
100
  settings.targetAxisIndex = 1;
101
  }
104
  return;
105
  }
106
 
107
+ if (series[0] && (series[0].type === 'date' || series[0].type === 'datetime')) {
108
  axis = false;
109
  switch (v.charts[id].type) {
110
  case 'line':
135
  }
136
 
137
  if(settings.hAxis){
138
+ if(settings.hAxis.textStyle && settings.hAxis.textStyle !== ''){
139
  settings.hAxis.textStyle = {color: settings.hAxis.textStyle};
140
  }
141
  }
142
 
143
  if(settings.vAxis){
144
+ if(settings.vAxis.textStyle && settings.vAxis.textStyle !== ''){
145
  settings.vAxis.textStyle = {color: settings.vAxis.textStyle};
146
  }
147
  }
149
  for (i = 0; i < data.length; i++) {
150
  row = [];
151
  for (j = 0; j < series.length; j++) {
152
+ if (series[j].type === 'date' || series[j].type === 'datetime') {
153
  date = new Date(data[i][j]);
154
  data[i][j] = null;
155
  if (Object.prototype.toString.call(date) === "[object Date]") {
166
  if (settings.series) {
167
  for (i = 0; i < settings.series.length; i++) {
168
  format = settings.series[i].format;
169
+ if (!format || format === '') {
170
  continue;
171
  }
172
 
213
  resizeTimeout = setTimeout(v.render, 100);
214
  });
215
 
216
+ resizeHiddenContainers(false);
217
  });
218
 
219
+ $(window).load(function(){
220
+ resizeHiddenContainers(true);
221
+ });
222
+
223
+ function resizeHiddenContainers(everytime){
224
  $(".visualizer-front").parents().each(function(){
225
+ if(!$(this).is(":visible") && !$(this).hasClass("visualizer-hidden-container")){
226
  $(this).addClass("visualizer-hidden-container");
227
  }
228
  });
229
 
230
  var mutateObserver = new MutationObserver(function(records) {
231
  records.forEach(function(record) {
232
+ if(record.attributeName === "style" || record.attributeName === "class"){
233
  var element = $(record.target);
234
  var displayStyle = window.getComputedStyle(element[0]).getPropertyValue("display");
235
+ if(element.hasClass("visualizer-hidden-container-resized") || displayStyle === "none") { return ; }
236
+ element.find(".visualizer-front").resize();
237
+ if(!everytime) {
238
+ element.addClass("visualizer-hidden-container-resized");
239
+ }
240
  }
241
  });
242
  });
languages/visualizer.pot ADDED
@@ -0,0 +1,1351 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ # Copyright (C) 2016 Themeisle
2
+ # This file is distributed under the GPL v2.0 or later.
3
+ msgid ""
4
+ msgstr ""
5
+ "Project-Id-Version: Visualizer: Charts and Graphs Lite 1.6.6\n"
6
+ "Report-Msgid-Bugs-To: https://github.com/Codeinwp/visualizer/issues\n"
7
+ "POT-Creation-Date: 2016-10-20 11:18:21+00:00\n"
8
+ "MIME-Version: 1.0\n"
9
+ "Content-Type: text/plain; charset=utf-8\n"
10
+ "Content-Transfer-Encoding: 8bit\n"
11
+ "PO-Revision-Date: 2016-MO-DA HO:MI+ZONE\n"
12
+ "Last-Translator: Themeisle Translate Team <friends@themeisle.com>\n"
13
+ "Language-Team: Themeisle Translate <friends@themeisle.com>\n"
14
+ "X-Generator: grunt-wp-i18n 0.5.4\n"
15
+ "X-Poedit-KeywordsList: "
16
+ "__;_e;_x:1,2c;_ex:1,2c;_n:1,2;_nx:1,2,4c;_n_noop:1,2;_nx_noop:1,2,3c;esc_"
17
+ "attr__;esc_html__;esc_attr_e;esc_html_e;esc_attr_x:1,2c;esc_html_x:1,2c;\n"
18
+ "Language: en\n"
19
+ "Plural-Forms: nplurals=2; plural=(n != 1);\n"
20
+ "X-Poedit-Country: United States\n"
21
+ "X-Poedit-SourceCharset: UTF-8\n"
22
+ "X-Poedit-Basepath: ../\n"
23
+ "X-Poedit-SearchPath-0: .\n"
24
+ "X-Poedit-Bookmarks: \n"
25
+ "X-Textdomain-Support: yes\n"
26
+
27
+ #: classes/Visualizer/Module/Admin.php:77
28
+ msgid "All"
29
+ msgstr ""
30
+
31
+ #: classes/Visualizer/Module/Admin.php:78
32
+ msgid "Pie"
33
+ msgstr ""
34
+
35
+ #: classes/Visualizer/Module/Admin.php:79
36
+ msgid "Line"
37
+ msgstr ""
38
+
39
+ #: classes/Visualizer/Module/Admin.php:80
40
+ msgid "Area"
41
+ msgstr ""
42
+
43
+ #: classes/Visualizer/Module/Admin.php:81
44
+ msgid "Geo"
45
+ msgstr ""
46
+
47
+ #: classes/Visualizer/Module/Admin.php:82
48
+ msgid "Bar"
49
+ msgstr ""
50
+
51
+ #: classes/Visualizer/Module/Admin.php:83
52
+ msgid "Column"
53
+ msgstr ""
54
+
55
+ #: classes/Visualizer/Module/Admin.php:84
56
+ msgid "Gauge"
57
+ msgstr ""
58
+
59
+ #: classes/Visualizer/Module/Admin.php:85
60
+ msgid "Scatter"
61
+ msgstr ""
62
+
63
+ #: classes/Visualizer/Module/Admin.php:86
64
+ msgid "Candlestick"
65
+ msgstr ""
66
+
67
+ #: classes/Visualizer/Module/Admin.php:136
68
+ msgid "Visualizations"
69
+ msgstr ""
70
+
71
+ #: classes/Visualizer/Module/Admin.php:139
72
+ msgid "From Library"
73
+ msgstr ""
74
+
75
+ #: classes/Visualizer/Module/Admin.php:140
76
+ msgid "Create New"
77
+ msgstr ""
78
+
79
+ #: classes/Visualizer/Module/Admin.php:218
80
+ #: classes/Visualizer/Render/Library.php:163
81
+ msgid "Visualizer Library"
82
+ msgstr ""
83
+
84
+ #: classes/Visualizer/Module/Admin.php:342
85
+ msgid "Library"
86
+ msgstr ""
87
+
88
+ #: classes/Visualizer/Module/Admin.php:365
89
+ msgid "Knowledge Base"
90
+ msgstr ""
91
+
92
+ #: classes/Visualizer/Module/Admin.php:370
93
+ msgid "Pro Addon"
94
+ msgstr ""
95
+
96
+ #: classes/Visualizer/Module/Chart.php:332
97
+ #: classes/Visualizer/Module/Chart.php:394
98
+ msgid "Please, enter the URL of CSV file:"
99
+ msgstr ""
100
+
101
+ #: classes/Visualizer/Module/Chart.php:333
102
+ #: classes/Visualizer/Module/Chart.php:395
103
+ msgid "You have entered invalid URL. Please, insert proper URL."
104
+ msgstr ""
105
+
106
+ #: classes/Visualizer/Module/Chart.php:409
107
+ msgid "Save Chart"
108
+ msgstr ""
109
+
110
+ #: classes/Visualizer/Module/Chart.php:410
111
+ msgid "Create Chart"
112
+ msgstr ""
113
+
114
+ #: classes/Visualizer/Module/Chart.php:412
115
+ msgid "Insert Chart"
116
+ msgstr ""
117
+
118
+ #: classes/Visualizer/Module/Chart.php:471
119
+ msgid "CSV file with chart data was not uploaded. Please, try again."
120
+ msgstr ""
121
+
122
+ #: classes/Visualizer/Module/Chart.php:486
123
+ msgid "CSV file is broken or invalid. Please, try again."
124
+ msgstr ""
125
+
126
+ #: classes/Visualizer/Render/Library.php:68
127
+ #: classes/Visualizer/Render/Templates.php:68
128
+ msgid "Delete"
129
+ msgstr ""
130
+
131
+ #: classes/Visualizer/Render/Library.php:69
132
+ msgid "Clone"
133
+ msgstr ""
134
+
135
+ #: classes/Visualizer/Render/Library.php:70
136
+ msgid "Edit"
137
+ msgstr ""
138
+
139
+ #: classes/Visualizer/Render/Library.php:71
140
+ msgid "Export"
141
+ msgstr ""
142
+
143
+ #: classes/Visualizer/Render/Library.php:73
144
+ #: classes/Visualizer/Render/Templates.php:71
145
+ msgid "Click to select"
146
+ msgstr ""
147
+
148
+ #: classes/Visualizer/Render/Library.php:96
149
+ msgid "Search"
150
+ msgstr ""
151
+
152
+ #: classes/Visualizer/Render/Library.php:135
153
+ #: classes/Visualizer/Render/Templates.php:85
154
+ msgid "No charts found"
155
+ msgstr ""
156
+
157
+ #: classes/Visualizer/Render/Library.php:164
158
+ msgid "Add New"
159
+ msgstr ""
160
+
161
+ #: classes/Visualizer/Render/Library.php:183
162
+ msgid ""
163
+ "%s option is disabled in your php.ini config. Please, enable it by change "
164
+ "its value to 1. This option increases the speed of remote CSV uploading."
165
+ msgstr ""
166
+
167
+ #: classes/Visualizer/Render/Page/Data.php:70
168
+ msgid ""
169
+ "Select and upload your data CSV file here. The first row of the CSV file "
170
+ "should contain the column headings. The second one should contain series "
171
+ "type (string, number, boolean, date, datetime, timeofday)."
172
+ msgstr ""
173
+
174
+ #: classes/Visualizer/Render/Page/Data.php:74
175
+ msgid ""
176
+ "If you are unsure about how to format your data CSV then please take a look "
177
+ "at this sample:"
178
+ msgstr ""
179
+
180
+ #: classes/Visualizer/Render/Page/Data.php:76
181
+ msgid "or read how you can add Google spreadsheet in following %1$sarticle%1$s."
182
+ msgstr ""
183
+
184
+ #: classes/Visualizer/Render/Page/Data.php:85
185
+ msgid "From Computer"
186
+ msgstr ""
187
+
188
+ #: classes/Visualizer/Render/Page/Data.php:88
189
+ msgid "From Web"
190
+ msgstr ""
191
+
192
+ #: classes/Visualizer/Render/Page/Data.php:107
193
+ msgid "Check PRO Version "
194
+ msgstr ""
195
+
196
+ #: classes/Visualizer/Render/Page/Data.php:112
197
+ msgid "Advanced"
198
+ msgstr ""
199
+
200
+ #: classes/Visualizer/Render/Page/Data.php:137
201
+ #: classes/Visualizer/Render/Page/Settings.php:55
202
+ msgid "Back"
203
+ msgstr ""
204
+
205
+ #: classes/Visualizer/Render/Page/Types.php:91
206
+ msgid "Next"
207
+ msgstr ""
208
+
209
+ #: classes/Visualizer/Render/Page.php:72
210
+ msgid "Like the plugin? Show us your love!"
211
+ msgstr ""
212
+
213
+ #: classes/Visualizer/Render/Page.php:75
214
+ msgid "Rate it on WordPress.org"
215
+ msgstr ""
216
+
217
+ #: classes/Visualizer/Render/Sidebar/Columnar.php:42
218
+ msgid "Bars Settings"
219
+ msgstr ""
220
+
221
+ #: classes/Visualizer/Render/Sidebar/Columnar.php:45
222
+ #: classes/Visualizer/Render/Sidebar/Linear.php:167
223
+ #: classes/Visualizer/Render/Sidebar/Type/Candlestick.php:59
224
+ msgid "Focus Target"
225
+ msgstr ""
226
+
227
+ #: classes/Visualizer/Render/Sidebar/Columnar.php:50
228
+ #: classes/Visualizer/Render/Sidebar/Linear.php:172
229
+ #: classes/Visualizer/Render/Sidebar/Type/Candlestick.php:64
230
+ msgid "Focus on a single data point."
231
+ msgstr ""
232
+
233
+ #: classes/Visualizer/Render/Sidebar/Columnar.php:51
234
+ #: classes/Visualizer/Render/Sidebar/Linear.php:173
235
+ #: classes/Visualizer/Render/Sidebar/Type/Candlestick.php:65
236
+ msgid "Focus on a grouping of all data points along the major axis."
237
+ msgstr ""
238
+
239
+ #: classes/Visualizer/Render/Sidebar/Columnar.php:53
240
+ #: classes/Visualizer/Render/Sidebar/Linear.php:175
241
+ #: classes/Visualizer/Render/Sidebar/Type/Candlestick.php:67
242
+ msgid ""
243
+ "The type of the entity that receives focus on mouse hover. Also affects "
244
+ "which entity is selected by mouse click."
245
+ msgstr ""
246
+
247
+ #: classes/Visualizer/Render/Sidebar/Columnar.php:59
248
+ #: classes/Visualizer/Render/Sidebar/Type/Area.php:82
249
+ msgid "Is Stacked"
250
+ msgstr ""
251
+
252
+ #: classes/Visualizer/Render/Sidebar/Columnar.php:63
253
+ #: classes/Visualizer/Render/Sidebar/Type/Area.php:86
254
+ msgid "If set to yes, series elements are stacked."
255
+ msgstr ""
256
+
257
+ #: classes/Visualizer/Render/Sidebar/Columnar.php:69
258
+ msgid "Bars Opacity"
259
+ msgstr ""
260
+
261
+ #: classes/Visualizer/Render/Sidebar/Columnar.php:72
262
+ msgid ""
263
+ "Bars transparency, with 1.0 being completely opaque and 0.0 fully "
264
+ "transparent."
265
+ msgstr ""
266
+
267
+ #: classes/Visualizer/Render/Sidebar/Columnar.php:90
268
+ #: classes/Visualizer/Render/Sidebar/Columnar.php:107
269
+ #: classes/Visualizer/Render/Sidebar/Linear.php:96
270
+ #: classes/Visualizer/Render/Sidebar/Linear.php:116
271
+ msgid "Axis Text Color"
272
+ msgstr ""
273
+
274
+ #: classes/Visualizer/Render/Sidebar/Graph.php:80
275
+ #: classes/Visualizer/Render/Sidebar.php:103
276
+ msgid "Inside the chart"
277
+ msgstr ""
278
+
279
+ #: classes/Visualizer/Render/Sidebar/Graph.php:81
280
+ msgid "Outside the chart"
281
+ msgstr ""
282
+
283
+ #: classes/Visualizer/Render/Sidebar/Graph.php:82
284
+ msgid "None"
285
+ msgstr ""
286
+
287
+ #: classes/Visualizer/Render/Sidebar/Graph.php:95
288
+ #: classes/Visualizer/Render/Sidebar.php:130
289
+ msgid "Chart Title"
290
+ msgstr ""
291
+
292
+ #: classes/Visualizer/Render/Sidebar/Graph.php:98
293
+ #: classes/Visualizer/Render/Sidebar.php:133
294
+ msgid "Text to display above the chart."
295
+ msgstr ""
296
+
297
+ #: classes/Visualizer/Render/Sidebar/Graph.php:102
298
+ msgid "Chart Title Position"
299
+ msgstr ""
300
+
301
+ #: classes/Visualizer/Render/Sidebar/Graph.php:106
302
+ msgid "Where to place the chart title, compared to the chart area."
303
+ msgstr ""
304
+
305
+ #: classes/Visualizer/Render/Sidebar/Graph.php:110
306
+ #: classes/Visualizer/Render/Sidebar.php:137
307
+ msgid "Chart Title Color"
308
+ msgstr ""
309
+
310
+ #: classes/Visualizer/Render/Sidebar/Graph.php:119
311
+ msgid "Axes Titles Position"
312
+ msgstr ""
313
+
314
+ #: classes/Visualizer/Render/Sidebar/Graph.php:123
315
+ msgid "Determines where to place the axis titles, compared to the chart area."
316
+ msgstr ""
317
+
318
+ #: classes/Visualizer/Render/Sidebar/Graph.php:136
319
+ #: classes/Visualizer/Render/Sidebar/Graph.php:248
320
+ msgid "Axis Title"
321
+ msgstr ""
322
+
323
+ #: classes/Visualizer/Render/Sidebar/Graph.php:139
324
+ msgid "The title of the horizontal axis."
325
+ msgstr ""
326
+
327
+ #: classes/Visualizer/Render/Sidebar/Graph.php:143
328
+ #: classes/Visualizer/Render/Sidebar/Graph.php:255
329
+ msgid "Text Position"
330
+ msgstr ""
331
+
332
+ #: classes/Visualizer/Render/Sidebar/Graph.php:147
333
+ msgid "Position of the horizontal axis text, relative to the chart area."
334
+ msgstr ""
335
+
336
+ #: classes/Visualizer/Render/Sidebar/Graph.php:151
337
+ #: classes/Visualizer/Render/Sidebar/Graph.php:263
338
+ msgid "Direction"
339
+ msgstr ""
340
+
341
+ #: classes/Visualizer/Render/Sidebar/Graph.php:156
342
+ #: classes/Visualizer/Render/Sidebar/Graph.php:268
343
+ msgid "Identical Direction"
344
+ msgstr ""
345
+
346
+ #: classes/Visualizer/Render/Sidebar/Graph.php:157
347
+ #: classes/Visualizer/Render/Sidebar/Graph.php:269
348
+ msgid "Reverse Direction"
349
+ msgstr ""
350
+
351
+ #: classes/Visualizer/Render/Sidebar/Graph.php:159
352
+ msgid "The direction in which the values along the horizontal axis grow."
353
+ msgstr ""
354
+
355
+ #: classes/Visualizer/Render/Sidebar/Graph.php:163
356
+ #: classes/Visualizer/Render/Sidebar/Graph.php:275
357
+ msgid "Base Line Color"
358
+ msgstr ""
359
+
360
+ #: classes/Visualizer/Render/Sidebar/Graph.php:178
361
+ msgid "Horizontal Axis Settings"
362
+ msgstr ""
363
+
364
+ #: classes/Visualizer/Render/Sidebar/Graph.php:179
365
+ #: classes/Visualizer/Render/Sidebar/Graph.php:291
366
+ #: classes/Visualizer/Render/Sidebar/Type/Gauge.php:56
367
+ #: classes/Visualizer/Render/Sidebar.php:152
368
+ msgid "General Settings"
369
+ msgstr ""
370
+
371
+ #: classes/Visualizer/Render/Sidebar/Graph.php:184
372
+ #: classes/Visualizer/Render/Sidebar/Graph.php:296
373
+ msgid "Grid Lines"
374
+ msgstr ""
375
+
376
+ #: classes/Visualizer/Render/Sidebar/Graph.php:186
377
+ #: classes/Visualizer/Render/Sidebar/Graph.php:203
378
+ #: classes/Visualizer/Render/Sidebar/Graph.php:298
379
+ #: classes/Visualizer/Render/Sidebar/Graph.php:315
380
+ msgid "Count"
381
+ msgstr ""
382
+
383
+ #: classes/Visualizer/Render/Sidebar/Graph.php:189
384
+ msgid ""
385
+ "The number of horizontal gridlines inside the chart area. Minimum value is "
386
+ "2. Specify -1 to automatically compute the number of gridlines."
387
+ msgstr ""
388
+
389
+ #: classes/Visualizer/Render/Sidebar/Graph.php:194
390
+ #: classes/Visualizer/Render/Sidebar/Graph.php:211
391
+ #: classes/Visualizer/Render/Sidebar/Graph.php:306
392
+ #: classes/Visualizer/Render/Sidebar/Graph.php:323
393
+ #: classes/Visualizer/Render/Sidebar/Graph.php:406
394
+ #: classes/Visualizer/Render/Sidebar/Linear.php:287
395
+ #: classes/Visualizer/Render/Sidebar/Type/Area.php:144
396
+ #: classes/Visualizer/Render/Sidebar/Type/Candlestick.php:171
397
+ msgid "Color"
398
+ msgstr ""
399
+
400
+ #: classes/Visualizer/Render/Sidebar/Graph.php:201
401
+ #: classes/Visualizer/Render/Sidebar/Graph.php:313
402
+ msgid "Minor Grid Lines"
403
+ msgstr ""
404
+
405
+ #: classes/Visualizer/Render/Sidebar/Graph.php:206
406
+ msgid "The number of horizontal minor gridlines between two regular gridlines."
407
+ msgstr ""
408
+
409
+ #: classes/Visualizer/Render/Sidebar/Graph.php:220
410
+ #: classes/Visualizer/Render/Sidebar/Graph.php:332
411
+ msgid "View Window"
412
+ msgstr ""
413
+
414
+ #: classes/Visualizer/Render/Sidebar/Graph.php:222
415
+ #: classes/Visualizer/Render/Sidebar/Graph.php:334
416
+ #: classes/Visualizer/Render/Sidebar/Type/Geo.php:200
417
+ msgid "Maximum Value"
418
+ msgstr ""
419
+
420
+ #: classes/Visualizer/Render/Sidebar/Graph.php:229
421
+ #: classes/Visualizer/Render/Sidebar/Graph.php:341
422
+ #: classes/Visualizer/Render/Sidebar/Type/Geo.php:186
423
+ msgid "Minimum Value"
424
+ msgstr ""
425
+
426
+ #: classes/Visualizer/Render/Sidebar/Graph.php:251
427
+ msgid "The title of the vertical axis."
428
+ msgstr ""
429
+
430
+ #: classes/Visualizer/Render/Sidebar/Graph.php:259
431
+ msgid "Position of the vertical axis text, relative to the chart area."
432
+ msgstr ""
433
+
434
+ #: classes/Visualizer/Render/Sidebar/Graph.php:271
435
+ msgid "The direction in which the values along the vertical axis grow."
436
+ msgstr ""
437
+
438
+ #: classes/Visualizer/Render/Sidebar/Graph.php:290
439
+ msgid "Vertical Axis Settings"
440
+ msgstr ""
441
+
442
+ #: classes/Visualizer/Render/Sidebar/Graph.php:301
443
+ msgid ""
444
+ "The number of vertical gridlines inside the chart area. Minimum value is 2. "
445
+ "Specify -1 to automatically compute the number of gridlines."
446
+ msgstr ""
447
+
448
+ #: classes/Visualizer/Render/Sidebar/Graph.php:318
449
+ msgid "The number of vertical minor gridlines between two regular gridlines."
450
+ msgstr ""
451
+
452
+ #: classes/Visualizer/Render/Sidebar/Graph.php:371
453
+ msgid "Series Settings"
454
+ msgstr ""
455
+
456
+ #: classes/Visualizer/Render/Sidebar/Graph.php:392
457
+ #: classes/Visualizer/Render/Sidebar/Linear.php:241
458
+ #: classes/Visualizer/Render/Sidebar/Type/Area.php:100
459
+ #: classes/Visualizer/Render/Sidebar/Type/Candlestick.php:159
460
+ msgid "Visible In Legend"
461
+ msgstr ""
462
+
463
+ #: classes/Visualizer/Render/Sidebar/Graph.php:397
464
+ #: classes/Visualizer/Render/Sidebar/Linear.php:246
465
+ #: classes/Visualizer/Render/Sidebar/Type/Area.php:105
466
+ #: classes/Visualizer/Render/Sidebar/Type/Candlestick.php:164
467
+ #: classes/Visualizer/Render/Sidebar.php:117
468
+ msgid "No"
469
+ msgstr ""
470
+
471
+ #: classes/Visualizer/Render/Sidebar/Graph.php:398
472
+ #: classes/Visualizer/Render/Sidebar/Linear.php:247
473
+ #: classes/Visualizer/Render/Sidebar/Type/Area.php:106
474
+ #: classes/Visualizer/Render/Sidebar/Type/Candlestick.php:165
475
+ #: classes/Visualizer/Render/Sidebar.php:116
476
+ msgid "Yes"
477
+ msgstr ""
478
+
479
+ #: classes/Visualizer/Render/Sidebar/Graph.php:400
480
+ #: classes/Visualizer/Render/Sidebar/Linear.php:159
481
+ #: classes/Visualizer/Render/Sidebar/Linear.php:249
482
+ #: classes/Visualizer/Render/Sidebar/Linear.php:282
483
+ #: classes/Visualizer/Render/Sidebar/Type/Area.php:108
484
+ #: classes/Visualizer/Render/Sidebar/Type/Candlestick.php:167
485
+ msgid "Determines whether the series has to be presented in the legend or not."
486
+ msgstr ""
487
+
488
+ #: classes/Visualizer/Render/Sidebar/Graph.php:422
489
+ #: classes/Visualizer/Render/Sidebar/Graph.php:451
490
+ #: classes/Visualizer/Render/Sidebar.php:526
491
+ msgid "Number Format"
492
+ msgstr ""
493
+
494
+ #: classes/Visualizer/Render/Sidebar/Graph.php:427
495
+ msgid "Enter custom format pattern to apply to horizontal axis labels."
496
+ msgstr ""
497
+
498
+ #: classes/Visualizer/Render/Sidebar/Graph.php:429
499
+ #: classes/Visualizer/Render/Sidebar/Graph.php:458
500
+ msgid ""
501
+ "For number axis labels, this is a subset of the decimal formatting %1$sICU "
502
+ "pattern set%1$s. For instance, $#,###.## will display values $1,234.56 for "
503
+ "value 1234.56. Pay attention that if you use #%3$% percentage format then "
504
+ "your values will be multiplied by 100."
505
+ msgstr ""
506
+
507
+ #: classes/Visualizer/Render/Sidebar/Graph.php:434
508
+ #: classes/Visualizer/Render/Sidebar/Graph.php:463
509
+ msgid ""
510
+ "For date axis labels, this is a subset of the date formatting %1$sICU date "
511
+ "and time format%1$s."
512
+ msgstr ""
513
+
514
+ #: classes/Visualizer/Render/Sidebar/Graph.php:456
515
+ msgid "Enter custom format pattern to apply to vertical axis labels."
516
+ msgstr ""
517
+
518
+ #: classes/Visualizer/Render/Sidebar/Linear.php:80
519
+ msgid "Straight line without curve"
520
+ msgstr ""
521
+
522
+ #: classes/Visualizer/Render/Sidebar/Linear.php:81
523
+ msgid "The angles of the line will be smoothed"
524
+ msgstr ""
525
+
526
+ #: classes/Visualizer/Render/Sidebar/Linear.php:135
527
+ #: classes/Visualizer/Render/Sidebar/Linear.php:254
528
+ #: classes/Visualizer/Render/Sidebar/Type/Area.php:113
529
+ msgid "Line Width And Point Size"
530
+ msgstr ""
531
+
532
+ #: classes/Visualizer/Render/Sidebar/Linear.php:149
533
+ msgid ""
534
+ "Data line width and diameter of displayed points in pixels. Use zero to "
535
+ "hide all lines or points."
536
+ msgstr ""
537
+
538
+ #: classes/Visualizer/Render/Sidebar/Linear.php:155
539
+ #: classes/Visualizer/Render/Sidebar/Linear.php:278
540
+ msgid "Curve Type"
541
+ msgstr ""
542
+
543
+ #: classes/Visualizer/Render/Sidebar/Linear.php:180
544
+ #: classes/Visualizer/Render/Sidebar/Type/Candlestick.php:73
545
+ msgid "Selection Mode"
546
+ msgstr ""
547
+
548
+ #: classes/Visualizer/Render/Sidebar/Linear.php:185
549
+ #: classes/Visualizer/Render/Sidebar/Type/Candlestick.php:78
550
+ msgid "Single data point"
551
+ msgstr ""
552
+
553
+ #: classes/Visualizer/Render/Sidebar/Linear.php:186
554
+ #: classes/Visualizer/Render/Sidebar/Type/Candlestick.php:79
555
+ msgid "Multiple data points"
556
+ msgstr ""
557
+
558
+ #: classes/Visualizer/Render/Sidebar/Linear.php:188
559
+ #: classes/Visualizer/Render/Sidebar/Type/Candlestick.php:81
560
+ msgid "Determines how many data points an user can select on a chart."
561
+ msgstr ""
562
+
563
+ #: classes/Visualizer/Render/Sidebar/Linear.php:192
564
+ #: classes/Visualizer/Render/Sidebar/Type/Candlestick.php:85
565
+ msgid "Aggregation Target"
566
+ msgstr ""
567
+
568
+ #: classes/Visualizer/Render/Sidebar/Linear.php:197
569
+ #: classes/Visualizer/Render/Sidebar/Type/Candlestick.php:90
570
+ msgid "Group selected data by x-value"
571
+ msgstr ""
572
+
573
+ #: classes/Visualizer/Render/Sidebar/Linear.php:198
574
+ #: classes/Visualizer/Render/Sidebar/Type/Candlestick.php:91
575
+ msgid "Group selected data by series"
576
+ msgstr ""
577
+
578
+ #: classes/Visualizer/Render/Sidebar/Linear.php:199
579
+ #: classes/Visualizer/Render/Sidebar/Type/Candlestick.php:92
580
+ msgid ""
581
+ "Group selected data by x-value if all selections have the same x-value, and "
582
+ "by series otherwise"
583
+ msgstr ""
584
+
585
+ #: classes/Visualizer/Render/Sidebar/Linear.php:200
586
+ #: classes/Visualizer/Render/Sidebar/Type/Candlestick.php:93
587
+ msgid "Show only one tooltip per selection"
588
+ msgstr ""
589
+
590
+ #: classes/Visualizer/Render/Sidebar/Linear.php:202
591
+ #: classes/Visualizer/Render/Sidebar/Type/Candlestick.php:95
592
+ msgid ""
593
+ "Determines how multiple data selections are rolled up into tooltips. To "
594
+ "make it working you need to set multiple selection mode and tooltip trigger "
595
+ "to display it when an user selects an element."
596
+ msgstr ""
597
+
598
+ #: classes/Visualizer/Render/Sidebar/Linear.php:208
599
+ msgid "Point Opacity"
600
+ msgstr ""
601
+
602
+ #: classes/Visualizer/Render/Sidebar/Linear.php:211
603
+ msgid ""
604
+ "The transparency of data points, with 1.0 being completely opaque and 0.0 "
605
+ "fully transparent."
606
+ msgstr ""
607
+
608
+ #: classes/Visualizer/Render/Sidebar/Linear.php:224
609
+ msgid "Lines Settings"
610
+ msgstr ""
611
+
612
+ #: classes/Visualizer/Render/Sidebar/Linear.php:270
613
+ #: classes/Visualizer/Render/Sidebar/Type/Area.php:129
614
+ msgid "Overrides the global line width and point size values for this series."
615
+ msgstr ""
616
+
617
+ #: classes/Visualizer/Render/Sidebar/Type/Area.php:72
618
+ #: classes/Visualizer/Render/Sidebar/Type/Area.php:136
619
+ msgid "Area Opacity"
620
+ msgstr ""
621
+
622
+ #: classes/Visualizer/Render/Sidebar/Type/Area.php:75
623
+ msgid ""
624
+ "The default opacity of the colored area under an area chart series, where "
625
+ "0.0 is fully transparent and 1.0 is fully opaque. To specify opacity for an "
626
+ "individual series, set the area opacity value in the series property."
627
+ msgstr ""
628
+
629
+ #: classes/Visualizer/Render/Sidebar/Type/Area.php:139
630
+ msgid ""
631
+ "The opacity of the colored area, where 0.0 is fully transparent and 1.0 is "
632
+ "fully opaque."
633
+ msgstr ""
634
+
635
+ #: classes/Visualizer/Render/Sidebar/Type/Candlestick.php:56
636
+ msgid "Candles Settings"
637
+ msgstr ""
638
+
639
+ #: classes/Visualizer/Render/Sidebar/Type/Candlestick.php:99
640
+ msgid "Failing Candles"
641
+ msgstr ""
642
+
643
+ #: classes/Visualizer/Render/Sidebar/Type/Candlestick.php:101
644
+ #: classes/Visualizer/Render/Sidebar/Type/Candlestick.php:125
645
+ #: classes/Visualizer/Render/Sidebar/Type/Geo.php:360
646
+ #: classes/Visualizer/Render/Sidebar.php:293
647
+ msgid "Stroke Width"
648
+ msgstr ""
649
+
650
+ #: classes/Visualizer/Render/Sidebar/Type/Candlestick.php:104
651
+ msgid "The stroke width of falling candles."
652
+ msgstr ""
653
+
654
+ #: classes/Visualizer/Render/Sidebar/Type/Candlestick.php:109
655
+ #: classes/Visualizer/Render/Sidebar/Type/Candlestick.php:133
656
+ #: classes/Visualizer/Render/Sidebar/Type/Geo.php:368
657
+ #: classes/Visualizer/Render/Sidebar.php:301
658
+ msgid "Stroke Color"
659
+ msgstr ""
660
+
661
+ #: classes/Visualizer/Render/Sidebar/Type/Candlestick.php:116
662
+ #: classes/Visualizer/Render/Sidebar/Type/Candlestick.php:140
663
+ msgid "Fill Color"
664
+ msgstr ""
665
+
666
+ #: classes/Visualizer/Render/Sidebar/Type/Candlestick.php:123
667
+ msgid "Rising Candles"
668
+ msgstr ""
669
+
670
+ #: classes/Visualizer/Render/Sidebar/Type/Candlestick.php:128
671
+ msgid "The stroke width of rising candles."
672
+ msgstr ""
673
+
674
+ #: classes/Visualizer/Render/Sidebar/Type/Gauge.php:61
675
+ msgid "Min And Max Values"
676
+ msgstr ""
677
+
678
+ #: classes/Visualizer/Render/Sidebar/Type/Gauge.php:75
679
+ msgid "The maximal and minimal values of the gauge."
680
+ msgstr ""
681
+
682
+ #: classes/Visualizer/Render/Sidebar/Type/Gauge.php:80
683
+ msgid "Minor Ticks"
684
+ msgstr ""
685
+
686
+ #: classes/Visualizer/Render/Sidebar/Type/Gauge.php:83
687
+ msgid "The number of minor tick section in each major tick section."
688
+ msgstr ""
689
+
690
+ #: classes/Visualizer/Render/Sidebar/Type/Gauge.php:101
691
+ #: classes/Visualizer/Render/Sidebar/Type/Gauge.php:126
692
+ msgid "Green Color"
693
+ msgstr ""
694
+
695
+ #: classes/Visualizer/Render/Sidebar/Type/Gauge.php:103
696
+ msgid "Configure the green section of the gauge chart."
697
+ msgstr ""
698
+
699
+ #: classes/Visualizer/Render/Sidebar/Type/Gauge.php:107
700
+ #: classes/Visualizer/Render/Sidebar/Type/Gauge.php:149
701
+ #: classes/Visualizer/Render/Sidebar/Type/Gauge.php:191
702
+ msgid "From And To Range"
703
+ msgstr ""
704
+
705
+ #: classes/Visualizer/Render/Sidebar/Type/Gauge.php:121
706
+ msgid "The lowest and highest values for a range marked by a green color."
707
+ msgstr ""
708
+
709
+ #: classes/Visualizer/Render/Sidebar/Type/Gauge.php:143
710
+ #: classes/Visualizer/Render/Sidebar/Type/Gauge.php:168
711
+ msgid "Yellow Color"
712
+ msgstr ""
713
+
714
+ #: classes/Visualizer/Render/Sidebar/Type/Gauge.php:145
715
+ msgid "Configure the yellow section of the gauge chart."
716
+ msgstr ""
717
+
718
+ #: classes/Visualizer/Render/Sidebar/Type/Gauge.php:163
719
+ msgid "The lowest and highest values for a range marked by a yellow color."
720
+ msgstr ""
721
+
722
+ #: classes/Visualizer/Render/Sidebar/Type/Gauge.php:185
723
+ #: classes/Visualizer/Render/Sidebar/Type/Gauge.php:210
724
+ msgid "Red Color"
725
+ msgstr ""
726
+
727
+ #: classes/Visualizer/Render/Sidebar/Type/Gauge.php:187
728
+ msgid "Configure the red section of the gauge chart."
729
+ msgstr ""
730
+
731
+ #: classes/Visualizer/Render/Sidebar/Type/Gauge.php:205
732
+ msgid "The lowest and highest values for a range marked by a red color."
733
+ msgstr ""
734
+
735
+ #: classes/Visualizer/Render/Sidebar/Type/Gauge.php:227
736
+ #: classes/Visualizer/Render/Sidebar.php:264
737
+ msgid "Layout & Chart Area"
738
+ msgstr ""
739
+
740
+ #: classes/Visualizer/Render/Sidebar/Type/Gauge.php:229
741
+ #: classes/Visualizer/Render/Sidebar/Type/Geo.php:324
742
+ #: classes/Visualizer/Render/Sidebar.php:266
743
+ msgid ""
744
+ "Configure the total size of the chart. Two formats are supported: a number, "
745
+ "or a number followed by %. A simple number is a value in pixels; a number "
746
+ "followed by % is a percentage."
747
+ msgstr ""
748
+
749
+ #: classes/Visualizer/Render/Sidebar/Type/Gauge.php:233
750
+ #: classes/Visualizer/Render/Sidebar/Type/Geo.php:328
751
+ #: classes/Visualizer/Render/Sidebar.php:270
752
+ msgid "Width And Height Of Chart"
753
+ msgstr ""
754
+
755
+ #: classes/Visualizer/Render/Sidebar/Type/Gauge.php:247
756
+ #: classes/Visualizer/Render/Sidebar/Type/Geo.php:342
757
+ #: classes/Visualizer/Render/Sidebar.php:284
758
+ msgid "Determines the total width and height of the chart."
759
+ msgstr ""
760
+
761
+ #: classes/Visualizer/Render/Sidebar/Type/Geo.php:56
762
+ msgid "Map Settings"
763
+ msgstr ""
764
+
765
+ #: classes/Visualizer/Render/Sidebar/Type/Geo.php:57
766
+ #: classes/Visualizer/Render/Sidebar/Type/Geo.php:69
767
+ msgid "Region"
768
+ msgstr ""
769
+
770
+ #: classes/Visualizer/Render/Sidebar/Type/Geo.php:59
771
+ msgid ""
772
+ "Configure the region area to display on the map. (Surrounding areas will be "
773
+ "displayed as well.) Can be one of the following:"
774
+ msgstr ""
775
+
776
+ #: classes/Visualizer/Render/Sidebar/Type/Geo.php:61
777
+ msgid "'world' - A map of the entire world."
778
+ msgstr ""
779
+
780
+ #: classes/Visualizer/Render/Sidebar/Type/Geo.php:62
781
+ msgid ""
782
+ "A continent or a sub-continent, specified by its %s code, e.g., '011' for "
783
+ "Western Africa."
784
+ msgstr ""
785
+
786
+ #: classes/Visualizer/Render/Sidebar/Type/Geo.php:63
787
+ msgid "A country, specified by its %s code, e.g., 'AU' for Australia."
788
+ msgstr ""
789
+
790
+ #: classes/Visualizer/Render/Sidebar/Type/Geo.php:64
791
+ msgid ""
792
+ "A state in the United States, specified by its %s code, e.g., 'US-AL' for "
793
+ "Alabama. Note that the resolution option must be set to either 'provinces' "
794
+ "or 'metros'."
795
+ msgstr ""
796
+
797
+ #: classes/Visualizer/Render/Sidebar/Type/Geo.php:77
798
+ #: classes/Visualizer/Render/Sidebar/Type/Geo.php:89
799
+ msgid "Resolution"
800
+ msgstr ""
801
+
802
+ #: classes/Visualizer/Render/Sidebar/Type/Geo.php:80
803
+ msgid "The resolution of the map borders. Choose one of the following values:"
804
+ msgstr ""
805
+
806
+ #: classes/Visualizer/Render/Sidebar/Type/Geo.php:82
807
+ msgid "'countries' - Supported for all regions, except for US state regions."
808
+ msgstr ""
809
+
810
+ #: classes/Visualizer/Render/Sidebar/Type/Geo.php:83
811
+ msgid ""
812
+ "'provinces' - Supported only for country regions and US state regions. Not "
813
+ "supported for all countries; please test a country to see whether this "
814
+ "option is supported."
815
+ msgstr ""
816
+
817
+ #: classes/Visualizer/Render/Sidebar/Type/Geo.php:84
818
+ msgid "'metros' - Supported for the US country region and US state regions only."
819
+ msgstr ""
820
+
821
+ #: classes/Visualizer/Render/Sidebar/Type/Geo.php:94
822
+ msgid "Countries"
823
+ msgstr ""
824
+
825
+ #: classes/Visualizer/Render/Sidebar/Type/Geo.php:95
826
+ msgid "Provinces"
827
+ msgstr ""
828
+
829
+ #: classes/Visualizer/Render/Sidebar/Type/Geo.php:96
830
+ msgid "Metros"
831
+ msgstr ""
832
+
833
+ #: classes/Visualizer/Render/Sidebar/Type/Geo.php:102
834
+ #: classes/Visualizer/Render/Sidebar/Type/Geo.php:114
835
+ msgid "Display Mode"
836
+ msgstr ""
837
+
838
+ #: classes/Visualizer/Render/Sidebar/Type/Geo.php:105
839
+ msgid "Determines which type of map this is. The following values are supported:"
840
+ msgstr ""
841
+
842
+ #: classes/Visualizer/Render/Sidebar/Type/Geo.php:107
843
+ msgid "'auto' - Choose based on the format of the data."
844
+ msgstr ""
845
+
846
+ #: classes/Visualizer/Render/Sidebar/Type/Geo.php:108
847
+ msgid "'regions' - This is a region map."
848
+ msgstr ""
849
+
850
+ #: classes/Visualizer/Render/Sidebar/Type/Geo.php:109
851
+ msgid "'markers' - This is a marker map."
852
+ msgstr ""
853
+
854
+ #: classes/Visualizer/Render/Sidebar/Type/Geo.php:119
855
+ msgid "Auto"
856
+ msgstr ""
857
+
858
+ #: classes/Visualizer/Render/Sidebar/Type/Geo.php:120
859
+ msgid "Regions"
860
+ msgstr ""
861
+
862
+ #: classes/Visualizer/Render/Sidebar/Type/Geo.php:121
863
+ msgid "Markers"
864
+ msgstr ""
865
+
866
+ #: classes/Visualizer/Render/Sidebar/Type/Geo.php:126
867
+ #: classes/Visualizer/Render/Sidebar.php:220
868
+ msgid "Tooltip"
869
+ msgstr ""
870
+
871
+ #: classes/Visualizer/Render/Sidebar/Type/Geo.php:141
872
+ #: classes/Visualizer/Render/Sidebar.php:235
873
+ msgid "Trigger"
874
+ msgstr ""
875
+
876
+ #: classes/Visualizer/Render/Sidebar/Type/Geo.php:146
877
+ #: classes/Visualizer/Render/Sidebar.php:240
878
+ msgid "The tooltip will be displayed when the user hovers over an element"
879
+ msgstr ""
880
+
881
+ #: classes/Visualizer/Render/Sidebar/Type/Geo.php:147
882
+ #: classes/Visualizer/Render/Sidebar.php:242
883
+ msgid "The tooltip will not be displayed"
884
+ msgstr ""
885
+
886
+ #: classes/Visualizer/Render/Sidebar/Type/Geo.php:149
887
+ #: classes/Visualizer/Render/Sidebar.php:244
888
+ msgid "Determines the user interaction that causes the tooltip to be displayed."
889
+ msgstr ""
890
+
891
+ #: classes/Visualizer/Render/Sidebar/Type/Geo.php:161
892
+ msgid "Color Axis"
893
+ msgstr ""
894
+
895
+ #: classes/Visualizer/Render/Sidebar/Type/Geo.php:163
896
+ msgid ""
897
+ "Configure color axis gradient scale, minimum and maximun values and a color "
898
+ "of the dateless regions."
899
+ msgstr ""
900
+
901
+ #: classes/Visualizer/Render/Sidebar/Type/Geo.php:167
902
+ #: classes/Visualizer/Render/Sidebar/Type/Geo.php:231
903
+ msgid "Minimum And Maximum Values"
904
+ msgstr ""
905
+
906
+ #: classes/Visualizer/Render/Sidebar/Type/Geo.php:181
907
+ msgid "Determines the minimum and maximum values of color axis."
908
+ msgstr ""
909
+
910
+ #: classes/Visualizer/Render/Sidebar/Type/Geo.php:193
911
+ msgid "Intermediate Value"
912
+ msgstr ""
913
+
914
+ #: classes/Visualizer/Render/Sidebar/Type/Geo.php:207
915
+ msgid "Dateless Region"
916
+ msgstr ""
917
+
918
+ #: classes/Visualizer/Render/Sidebar/Type/Geo.php:225
919
+ msgid "Size Axis"
920
+ msgstr ""
921
+
922
+ #: classes/Visualizer/Render/Sidebar/Type/Geo.php:227
923
+ msgid ""
924
+ "Configure how values are associated with bubble size, minimum and maximun "
925
+ "values and marker opacity setting."
926
+ msgstr ""
927
+
928
+ #: classes/Visualizer/Render/Sidebar/Type/Geo.php:245
929
+ msgid "Determines the minimum and maximum values of size axis."
930
+ msgstr ""
931
+
932
+ #: classes/Visualizer/Render/Sidebar/Type/Geo.php:251
933
+ msgid "Minimum And Maximum Marker Radius"
934
+ msgstr ""
935
+
936
+ #: classes/Visualizer/Render/Sidebar/Type/Geo.php:265
937
+ msgid ""
938
+ "Determines the radius of the smallest and largest possible bubbles, in "
939
+ "pixels."
940
+ msgstr ""
941
+
942
+ #: classes/Visualizer/Render/Sidebar/Type/Geo.php:270
943
+ msgid "Marker Opacity"
944
+ msgstr ""
945
+
946
+ #: classes/Visualizer/Render/Sidebar/Type/Geo.php:273
947
+ msgid ""
948
+ "The opacity of the markers, where 0.0 is fully transparent and 1.0 is fully "
949
+ "opaque."
950
+ msgstr ""
951
+
952
+ #: classes/Visualizer/Render/Sidebar/Type/Geo.php:291
953
+ msgid "Magnifying Glass"
954
+ msgstr ""
955
+
956
+ #: classes/Visualizer/Render/Sidebar/Type/Geo.php:293
957
+ msgid ""
958
+ "Configure magnifying glass settings, which appears, when the user lingers "
959
+ "over a cluttered marker. Note: this feature is not supported in browsers "
960
+ "that do not support SVG, i.e. Internet Explorer version 8 or earlier."
961
+ msgstr ""
962
+
963
+ #: classes/Visualizer/Render/Sidebar/Type/Geo.php:296
964
+ msgid "Enabled"
965
+ msgstr ""
966
+
967
+ #: classes/Visualizer/Render/Sidebar/Type/Geo.php:300
968
+ msgid ""
969
+ "If yes, when the user lingers over a cluttered marker, a magnifiying glass "
970
+ "will be opened."
971
+ msgstr ""
972
+
973
+ #: classes/Visualizer/Render/Sidebar/Type/Geo.php:304
974
+ msgid "Zoom Factor"
975
+ msgstr ""
976
+
977
+ #: classes/Visualizer/Render/Sidebar/Type/Geo.php:307
978
+ msgid "The zoom factor of the magnifying glass. Can be any number greater than 0."
979
+ msgstr ""
980
+
981
+ #: classes/Visualizer/Render/Sidebar/Type/Geo.php:322
982
+ msgid "Layout Settings"
983
+ msgstr ""
984
+
985
+ #: classes/Visualizer/Render/Sidebar/Type/Geo.php:347
986
+ msgid "Keep Aspect Ratio"
987
+ msgstr ""
988
+
989
+ #: classes/Visualizer/Render/Sidebar/Type/Geo.php:351
990
+ msgid ""
991
+ "If yes, the map will be drawn at the largest size that can fit inside the "
992
+ "chart area at its natural aspect ratio. If only one of the width and height "
993
+ "options is specified, the other one will be calculated according to the "
994
+ "aspect ratio."
995
+ msgstr ""
996
+
997
+ #: classes/Visualizer/Render/Sidebar/Type/Geo.php:352
998
+ msgid ""
999
+ "If no, the map will be stretched to the exact size of the chart as "
1000
+ "specified by the width and height options."
1001
+ msgstr ""
1002
+
1003
+ #: classes/Visualizer/Render/Sidebar/Type/Geo.php:357
1004
+ #: classes/Visualizer/Render/Sidebar.php:290
1005
+ msgid ""
1006
+ "Configure the background color for the main area of the chart and the chart "
1007
+ "border width and color."
1008
+ msgstr ""
1009
+
1010
+ #: classes/Visualizer/Render/Sidebar/Type/Geo.php:363
1011
+ #: classes/Visualizer/Render/Sidebar.php:296
1012
+ msgid "The chart border width in pixels."
1013
+ msgstr ""
1014
+
1015
+ #: classes/Visualizer/Render/Sidebar/Type/Geo.php:375
1016
+ #: classes/Visualizer/Render/Sidebar.php:309
1017
+ msgid "Background Color"
1018
+ msgstr ""
1019
+
1020
+ #: classes/Visualizer/Render/Sidebar/Type/Line.php:61
1021
+ msgid "Interpolate Nulls"
1022
+ msgstr ""
1023
+
1024
+ #: classes/Visualizer/Render/Sidebar/Type/Line.php:65
1025
+ msgid ""
1026
+ "Whether to guess the value of missing points. If yes, it will guess the "
1027
+ "value of any missing data based on neighboring points. If no, it will leave "
1028
+ "a break in the line at the unknown point."
1029
+ msgstr ""
1030
+
1031
+ #: classes/Visualizer/Render/Sidebar/Type/Pie.php:56
1032
+ msgid "Pie Settings"
1033
+ msgstr ""
1034
+
1035
+ #: classes/Visualizer/Render/Sidebar/Type/Pie.php:59
1036
+ msgid "Is 3D"
1037
+ msgstr ""
1038
+
1039
+ #: classes/Visualizer/Render/Sidebar/Type/Pie.php:63
1040
+ msgid "If set to yes, displays a three-dimensional chart."
1041
+ msgstr ""
1042
+
1043
+ #: classes/Visualizer/Render/Sidebar/Type/Pie.php:67
1044
+ msgid "Reverse Categories"
1045
+ msgstr ""
1046
+
1047
+ #: classes/Visualizer/Render/Sidebar/Type/Pie.php:71
1048
+ msgid "If set to yes, will draw slices counterclockwise."
1049
+ msgstr ""
1050
+
1051
+ #: classes/Visualizer/Render/Sidebar/Type/Pie.php:75
1052
+ msgid "Slice Text"
1053
+ msgstr ""
1054
+
1055
+ #: classes/Visualizer/Render/Sidebar/Type/Pie.php:80
1056
+ msgid "The percentage of the slice size out of the total"
1057
+ msgstr ""
1058
+
1059
+ #: classes/Visualizer/Render/Sidebar/Type/Pie.php:81
1060
+ msgid "The quantitative value of the slice"
1061
+ msgstr ""
1062
+
1063
+ #: classes/Visualizer/Render/Sidebar/Type/Pie.php:82
1064
+ msgid "The name of the slice"
1065
+ msgstr ""
1066
+
1067
+ #: classes/Visualizer/Render/Sidebar/Type/Pie.php:83
1068
+ msgid "No text is displayed"
1069
+ msgstr ""
1070
+
1071
+ #: classes/Visualizer/Render/Sidebar/Type/Pie.php:85
1072
+ msgid "The content of the text displayed on the slice."
1073
+ msgstr ""
1074
+
1075
+ #: classes/Visualizer/Render/Sidebar/Type/Pie.php:89
1076
+ msgid "Pie Hole"
1077
+ msgstr ""
1078
+
1079
+ #: classes/Visualizer/Render/Sidebar/Type/Pie.php:92
1080
+ msgid ""
1081
+ "If between 0 and 1, displays a donut chart. The hole with have a radius "
1082
+ "equal to number times the radius of the chart. Only applicable when the "
1083
+ "chart is two-dimensional."
1084
+ msgstr ""
1085
+
1086
+ #: classes/Visualizer/Render/Sidebar/Type/Pie.php:97
1087
+ msgid "Start Angle"
1088
+ msgstr ""
1089
+
1090
+ #: classes/Visualizer/Render/Sidebar/Type/Pie.php:100
1091
+ msgid ""
1092
+ "The angle, in degrees, to rotate the chart by. The default of 0 will orient "
1093
+ "the leftmost edge of the first slice directly up."
1094
+ msgstr ""
1095
+
1096
+ #: classes/Visualizer/Render/Sidebar/Type/Pie.php:105
1097
+ msgid "Slice Border Color"
1098
+ msgstr ""
1099
+
1100
+ #: classes/Visualizer/Render/Sidebar/Type/Pie.php:122
1101
+ msgid "Residue Settings"
1102
+ msgstr ""
1103
+
1104
+ #: classes/Visualizer/Render/Sidebar/Type/Pie.php:125
1105
+ msgid "Visibility Threshold"
1106
+ msgstr ""
1107
+
1108
+ #: classes/Visualizer/Render/Sidebar/Type/Pie.php:128
1109
+ msgid ""
1110
+ "The slice relative part, below which a slice will not show individually. "
1111
+ "All slices that have not passed this threshold will be combined to a single "
1112
+ "slice, whose size is the sum of all their sizes. Default is not to show "
1113
+ "individually any slice which is smaller than half a degree."
1114
+ msgstr ""
1115
+
1116
+ #: classes/Visualizer/Render/Sidebar/Type/Pie.php:133
1117
+ msgid "Residue Slice Label"
1118
+ msgstr ""
1119
+
1120
+ #: classes/Visualizer/Render/Sidebar/Type/Pie.php:136
1121
+ msgid ""
1122
+ "A label for the combination slice that holds all slices below slice "
1123
+ "visibility threshold."
1124
+ msgstr ""
1125
+
1126
+ #: classes/Visualizer/Render/Sidebar/Type/Pie.php:137
1127
+ msgid "Other"
1128
+ msgstr ""
1129
+
1130
+ #: classes/Visualizer/Render/Sidebar/Type/Pie.php:141
1131
+ msgid "Residue Slice Color"
1132
+ msgstr ""
1133
+
1134
+ #: classes/Visualizer/Render/Sidebar/Type/Pie.php:158
1135
+ msgid "Slices Settings"
1136
+ msgstr ""
1137
+
1138
+ #: classes/Visualizer/Render/Sidebar/Type/Pie.php:162
1139
+ msgid "Slice Offset"
1140
+ msgstr ""
1141
+
1142
+ #: classes/Visualizer/Render/Sidebar/Type/Pie.php:165
1143
+ msgid ""
1144
+ "How far to separate the slice from the rest of the pie, from 0.0 (not at "
1145
+ "all) to 1.0 (the pie's radius)."
1146
+ msgstr ""
1147
+
1148
+ #: classes/Visualizer/Render/Sidebar/Type/Pie.php:170
1149
+ msgid "Slice Color"
1150
+ msgstr ""
1151
+
1152
+ #: classes/Visualizer/Render/Sidebar/Type/Pie.php:191
1153
+ msgid "Text"
1154
+ msgstr ""
1155
+
1156
+ #: classes/Visualizer/Render/Sidebar/Type/Pie.php:196
1157
+ msgid "Display both the absolute value of the slice and the percentage of the whole"
1158
+ msgstr ""
1159
+
1160
+ #: classes/Visualizer/Render/Sidebar/Type/Pie.php:197
1161
+ msgid "Display only the absolute value of the slice"
1162
+ msgstr ""
1163
+
1164
+ #: classes/Visualizer/Render/Sidebar/Type/Pie.php:198
1165
+ msgid "Display only the percentage of the whole represented by the slice"
1166
+ msgstr ""
1167
+
1168
+ #: classes/Visualizer/Render/Sidebar/Type/Pie.php:200
1169
+ msgid ""
1170
+ "Determines what information to display when the user hovers over a pie "
1171
+ "slice."
1172
+ msgstr ""
1173
+
1174
+ #: classes/Visualizer/Render/Sidebar.php:99
1175
+ msgid "Left of the chart"
1176
+ msgstr ""
1177
+
1178
+ #: classes/Visualizer/Render/Sidebar.php:100
1179
+ msgid "Right of the chart"
1180
+ msgstr ""
1181
+
1182
+ #: classes/Visualizer/Render/Sidebar.php:101
1183
+ msgid "Above the chart"
1184
+ msgstr ""
1185
+
1186
+ #: classes/Visualizer/Render/Sidebar.php:102
1187
+ msgid "Below the chart"
1188
+ msgstr ""
1189
+
1190
+ #: classes/Visualizer/Render/Sidebar.php:104
1191
+ msgid "Omit the legend"
1192
+ msgstr ""
1193
+
1194
+ #: classes/Visualizer/Render/Sidebar.php:109
1195
+ msgid "Aligned to the start of the allocated area"
1196
+ msgstr ""
1197
+
1198
+ #: classes/Visualizer/Render/Sidebar.php:110
1199
+ msgid "Centered in the allocated area"
1200
+ msgstr ""
1201
+
1202
+ #: classes/Visualizer/Render/Sidebar.php:111
1203
+ msgid "Aligned to the end of the allocated area"
1204
+ msgstr ""
1205
+
1206
+ #: classes/Visualizer/Render/Sidebar.php:154
1207
+ msgid ""
1208
+ "Configure title, font styles, tooltip, legend and else settings for the "
1209
+ "chart."
1210
+ msgstr ""
1211
+
1212
+ #: classes/Visualizer/Render/Sidebar.php:157
1213
+ msgid "Title"
1214
+ msgstr ""
1215
+
1216
+ #: classes/Visualizer/Render/Sidebar.php:161
1217
+ msgid "Font Styles"
1218
+ msgstr ""
1219
+
1220
+ #: classes/Visualizer/Render/Sidebar.php:164
1221
+ msgid "Family And Size"
1222
+ msgstr ""
1223
+
1224
+ #: classes/Visualizer/Render/Sidebar.php:190
1225
+ msgid "The default font family and size for all text in the chart."
1226
+ msgstr ""
1227
+
1228
+ #: classes/Visualizer/Render/Sidebar.php:195
1229
+ msgid "Legend"
1230
+ msgstr ""
1231
+
1232
+ #: classes/Visualizer/Render/Sidebar.php:197
1233
+ msgid "Position"
1234
+ msgstr ""
1235
+
1236
+ #: classes/Visualizer/Render/Sidebar.php:201
1237
+ msgid "Determines where to place the legend, compared to the chart area."
1238
+ msgstr ""
1239
+
1240
+ #: classes/Visualizer/Render/Sidebar.php:205
1241
+ msgid "Alignment"
1242
+ msgstr ""
1243
+
1244
+ #: classes/Visualizer/Render/Sidebar.php:209
1245
+ msgid "Determines the alignment of the legend."
1246
+ msgstr ""
1247
+
1248
+ #: classes/Visualizer/Render/Sidebar.php:213
1249
+ msgid "Font Color"
1250
+ msgstr ""
1251
+
1252
+ #: classes/Visualizer/Render/Sidebar.php:241
1253
+ msgid "The tooltip will be displayed when the user selects an element"
1254
+ msgstr ""
1255
+
1256
+ #: classes/Visualizer/Render/Sidebar.php:248
1257
+ msgid "Show Color Code"
1258
+ msgstr ""
1259
+
1260
+ #: classes/Visualizer/Render/Sidebar.php:252
1261
+ msgid ""
1262
+ "If set to yes, will show colored squares next to the slice information in "
1263
+ "the tooltip."
1264
+ msgstr ""
1265
+
1266
+ #: classes/Visualizer/Render/Sidebar.php:265
1267
+ msgid "Layout"
1268
+ msgstr ""
1269
+
1270
+ #: classes/Visualizer/Render/Sidebar.php:318
1271
+ msgid "Transparent background"
1272
+ msgstr ""
1273
+
1274
+ #: classes/Visualizer/Render/Sidebar.php:323
1275
+ msgid "Chart Area"
1276
+ msgstr ""
1277
+
1278
+ #: classes/Visualizer/Render/Sidebar.php:324
1279
+ msgid ""
1280
+ "Configure the placement and size of the chart area (where the chart itself "
1281
+ "is drawn, excluding axis and legends). Two formats are supported: a number, "
1282
+ "or a number followed by %. A simple number is a value in pixels; a number "
1283
+ "followed by % is a percentage."
1284
+ msgstr ""
1285
+
1286
+ #: classes/Visualizer/Render/Sidebar.php:328
1287
+ msgid "Left And Top Margins"
1288
+ msgstr ""
1289
+
1290
+ #: classes/Visualizer/Render/Sidebar.php:342
1291
+ msgid "Determines how far to draw the chart from the left and top borders."
1292
+ msgstr ""
1293
+
1294
+ #: classes/Visualizer/Render/Sidebar.php:348
1295
+ msgid "Width And Height Of Chart Area"
1296
+ msgstr ""
1297
+
1298
+ #: classes/Visualizer/Render/Sidebar.php:362
1299
+ msgid "Determines the width and hight of the chart area."
1300
+ msgstr ""
1301
+
1302
+ #: classes/Visualizer/Render/Sidebar.php:413
1303
+ msgid "Hex Value"
1304
+ msgstr ""
1305
+
1306
+ #: classes/Visualizer/Render/Sidebar.php:529
1307
+ msgid ""
1308
+ "Enter custom format pattern to apply to this series value, similar to the "
1309
+ "%1$sICU pattern set%1$s. Use something like #,### to get 1,234 as output, "
1310
+ "or $# to add dollar sign before digits. Pay attention that if you use #%3$% "
1311
+ "percentage format then your values will be multiplied by 100."
1312
+ msgstr ""
1313
+
1314
+ #: classes/Visualizer/Render/Sidebar.php:537
1315
+ msgid "Date Format"
1316
+ msgstr ""
1317
+
1318
+ #: classes/Visualizer/Render/Sidebar.php:540
1319
+ msgid ""
1320
+ "Enter custom format pattern to apply to this series value, similar to the "
1321
+ "%1$sICU date and time format%1$s."
1322
+ msgstr ""
1323
+
1324
+ #: classes/Visualizer/Render/Templates.php:69
1325
+ msgid "Insert"
1326
+ msgstr ""
1327
+
1328
+ #. Plugin Name of the plugin/theme
1329
+ msgid "Visualizer: Charts and Graphs Lite"
1330
+ msgstr ""
1331
+
1332
+ #. Plugin URI of the plugin/theme
1333
+ msgid "https://themeisle.com/plugins/visualizer-charts-and-graphs-lite/"
1334
+ msgstr ""
1335
+
1336
+ #. Description of the plugin/theme
1337
+ msgid ""
1338
+ "A simple, easy to use and quite powerful tool to create, manage and embed "
1339
+ "interactive charts into your WordPress posts and pages. The plugin uses "
1340
+ "Google Visualization API to render charts, which supports cross-browser "
1341
+ "compatibility (adopting VML for older IE versions) and cross-platform "
1342
+ "portability to iOS and new Android releases."
1343
+ msgstr ""
1344
+
1345
+ #. Author of the plugin/theme
1346
+ msgid "Themeisle"
1347
+ msgstr ""
1348
+
1349
+ #. Author URI of the plugin/theme
1350
+ msgid "http://themeisle.com"
1351
+ msgstr ""
readme.txt CHANGED
@@ -70,6 +70,11 @@ Pay attention that to turn your shortcodes into graphs, your theme has to have `
70
 
71
  == Changelog ==
72
 
 
 
 
 
 
73
  = 1.6.6=
74
  * Fixed charts resizing on tabbed content
75
 
70
 
71
  == Changelog ==
72
 
73
+ = 1.7.0=
74
+ * Fixed responsive issues
75
+ * Fixed issues with zero margin values
76
+ * Fixed import issue
77
+
78
  = 1.6.6=
79
  * Fixed charts resizing on tabbed content
80