Skip to content

Commit 02e90a5

Browse files
Merge pull request #543 from contactashish13/issue-525
Combine one time import and schedule import
2 parents 3388d76 + 3d50825 commit 02e90a5

File tree

4 files changed

+48
-63
lines changed

4 files changed

+48
-63
lines changed

classes/Visualizer/Module/Admin.php

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -115,6 +115,8 @@ public function addSplChartSchedules( $feature, $chart_id, $plan ) {
115115
case 'wp':
116116
// fall-through.
117117
case 'db':
118+
// fall-through.
119+
case 'csv':
118120
break;
119121
default:
120122
return;

classes/Visualizer/Module/Chart.php

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -676,7 +676,7 @@ private function _handleDataAndSettingsPage() {
676676
'visualizer',
677677
array(
678678
'l10n' => array(
679-
'invalid_source' => esc_html__( 'You have entered invalid URL. Please, insert proper URL.', 'visualizer' ),
679+
'invalid_source' => esc_html__( 'You have entered an invalid URL. Please provide a valid URL.', 'visualizer' ),
680680
'loading' => esc_html__( 'Loading...', 'visualizer' ),
681681
'json_error' => esc_html__( 'An error occured in fetching data.', 'visualizer' ),
682682
),
@@ -1143,7 +1143,7 @@ private function _handleDataPage() {
11431143
'visualizer',
11441144
array(
11451145
'l10n' => array(
1146-
'invalid_source' => esc_html__( 'You have entered invalid URL. Please, insert proper URL.', 'visualizer' ),
1146+
'invalid_source' => esc_html__( 'You have entered an invalid URL. Please provide a valid URL.', 'visualizer' ),
11471147
'loading' => esc_html__( 'Loading...', 'visualizer' ),
11481148
),
11491149
'charts' => array(

classes/Visualizer/Render/Page/Data.php

Lines changed: 42 additions & 59 deletions
Original file line numberDiff line numberDiff line change
@@ -98,11 +98,12 @@ protected function _renderSidebarContent() {
9898
</div>
9999
<ul class="viz-group-content">
100100
<ul class="viz-group-wrapper">
101+
<!-- import from file -->
101102
<li class="viz-group visualizer_source_csv">
102103
<h2 class="viz-group-title viz-sub-group visualizer-src-tab"><?php _e( 'Import data from file', 'visualizer' ); ?></h2>
103104
<div class="viz-group-content">
104105
<p class="viz-group-description"><?php 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' ); ?></p>
105-
<p class="viz-group-description"><b><?php echo sprintf( __( 'If you are unsure about how to format your data CSV then please take a look at this sample: %1$s %2$s%3$s. If you are using non-English characters, please make sure you save the file in UTF-8 encoding.', 'visualizer' ), '<a href="' . VISUALIZER_ABSURL . 'samples/' . $this->type . '.csv" target="_blank">', $this->type, '.csv</a>' ); ?></b></p>
106+
<p class="viz-group-description viz-info-msg"><b><?php echo sprintf( __( 'If you are unsure about how to format your data CSV then please take a look at this sample: %1$s %2$s%3$s. If you are using non-English characters, please make sure you save the file in UTF-8 encoding.', 'visualizer' ), '<a href="' . VISUALIZER_ABSURL . 'samples/' . $this->type . '.csv" target="_blank">', $this->type, '.csv</a>' ); ?></b></p>
106107
<form id="vz-csv-file-form" action="<?php echo $upload_link; ?>" method="post"
107108
target="thehole" enctype="multipart/form-data">
108109
<input type="hidden" id="remote-data" name="remote_data">
@@ -114,77 +115,54 @@ protected function _renderSidebarContent() {
114115
</form>
115116
</div>
116117
</li>
118+
<!-- import from url -->
117119
<li class="viz-group visualizer-import-url visualizer_source_csv_remote visualizer_source_json">
118120
<h2 class="viz-group-title viz-sub-group visualizer-src-tab"><?php _e( 'Import data from URL', 'visualizer' ); ?></h2>
119121
<ul class="viz-group-content">
122+
<!-- import from csv url -->
120123
<li class="viz-subsection">
121-
<span class="viz-section-title"><?php _e( 'One time import', 'visualizer' ); ?></span>
122-
124+
<span class="viz-section-title"><?php _e( 'Import from CSV', 'visualizer' ); ?></span>
123125
<div class="viz-section-items section-items">
124-
<p class="viz-group-description"><?php _e( 'You can use this to import data from a remote CSV file. 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' ); ?> </p>
125-
<p class="viz-group-description"><b><?php echo sprintf( __( 'If you are unsure about how to format your data CSV then please take a look at this sample: %1$s %2$s%3$s. If you have using non-English characters, please make sure you save the file in UTF-8 encoding.', 'visualizer' ), '<a href="' . VISUALIZER_ABSURL . 'samples/' . $this->type . '.csv" target="_blank">', $this->type, '.csv</a>' ); ?></b></p>
126-
<p class="viz-group-description"> <?php _e( 'You can also import data from Google Spreadsheet, for more info check <a href="https://docs.themeisle.com/article/607-how-can-i-populate-data-from-google-spreadsheet" target="_blank" >this</a> tutorial', 'visualizer' ); ?></p>
126+
<p class="viz-group-description"><?php echo sprintf( __( 'You can use this to import data from a remote CSV file or %1$sGoogle Spreadsheet%2$s.', 'visualizer' ), '<a href="https://docs.themeisle.com/article/607-how-can-i-populate-data-from-google-spreadsheet" target="_blank" >', '</a>' ); ?> </p>
127+
<p class="viz-group-description viz-info-msg"><b><?php echo sprintf( __( 'If you are unsure about how to format your data CSV then please take a look at this sample: %1$s %2$s%3$s. If you are using non-English characters, please make sure you save the file in UTF-8 encoding.', 'visualizer' ), '<a href="' . VISUALIZER_ABSURL . 'samples/' . $this->type . '.csv" target="_blank">', $this->type, '.csv</a>' ); ?></b></p>
127128
<form id="vz-one-time-import" action="<?php echo $upload_link; ?>" method="post"
128129
target="thehole" enctype="multipart/form-data">
129130
<div class="remote-file-section">
130-
<input type="url" id="remote-data" name="remote_data"
131-
placeholder="<?php esc_html_e( 'Please enter the URL of CSV file', 'visualizer' ); ?>"
132-
class="visualizer-input">
133-
131+
<input type="url" id="vz-schedule-url" name="remote_data" value="<?php echo esc_attr( get_post_meta( $this->chart->ID, Visualizer_Plugin::CF_CHART_URL, true ) ); ?>" placeholder="<?php esc_html_e( 'Please enter the URL of CSV file', 'visualizer' ); ?>" class="visualizer-input visualizer-remote-url">
134132
</div>
135-
<input type="button" id="view-remote-file" class="button button-primary"
136-
value="<?php _e( 'Import', 'visualizer' ); ?>">
137-
</form>
138-
</div>
139-
</li>
140-
<li class="viz-subsection <?php echo apply_filters( 'visualizer_pro_upsell_class', 'only-pro-feature', 'schedule-chart' ); ?>">
141-
<span class="viz-section-title visualizer-import-url-schedule"><?php _e( 'Schedule Import', 'visualizer' ); ?>
142-
<span
143-
class="dashicons dashicons-lock"></span></span>
144-
<div class="viz-section-items section-items">
145-
<p class="viz-group-description"><?php _e( 'You can choose here to synchronize your chart data with a remote CSV file.', 'visualizer' ); ?> </p>
146-
<p class="viz-group-description"> <?php _e( 'You can also synchronize with your Google Spreadsheet file, for more info check <a href="https://docs.themeisle.com/article/607-how-can-i-populate-data-from-google-spreadsheet" target="_blank" >this</a> tutorial', 'visualizer' ); ?></p>
147-
<p class="viz-group-description"> <?php _e( 'We will update the chart data based on your time interval preference by overwriting the current data with the one from the URL.', 'visualizer' ); ?></p>
148-
<form id="vz-schedule-import" action="<?php echo $upload_link; ?>" method="post"
149-
target="thehole" enctype="multipart/form-data">
150-
<div class="remote-file-section">
151-
<input type="url" id="vz-schedule-url" name="remote_data"
152-
value="<?php echo esc_url( get_post_meta( $this->chart->ID, Visualizer_Plugin::CF_CHART_URL, true ) ); ?>"
153-
placeholder="<?php esc_html_e( 'Please enter the URL of CSV file', 'visualizer' ); ?>"
154-
class="visualizer-input visualizer-remote-url">
155-
<p class="viz-group-description"><?php _e( 'How often do you want to check the url', 'visualizer' ); ?></p>
156-
<select name="vz-import-time" id="vz-import-time"
157-
class="visualizer-select">
158-
<?php
159-
$hours = get_post_meta( $this->chart->ID, Visualizer_Plugin::CF_CHART_SCHEDULE, true );
160-
$schedules = apply_filters(
161-
'visualizer_chart_schedules', array(
162-
'1' => __( 'Each hour', 'visualizer' ),
163-
'12' => __( 'Each 12 hours', 'visualizer' ),
164-
'24' => __( 'Each day', 'visualizer' ),
165-
'72' => __( 'Each 3 days', 'visualizer' ),
166-
),
167-
'csv',
168-
$this->chart->ID
169-
);
170-
foreach ( $schedules as $num => $name ) {
171-
// phpcs:ignore WordPress.PHP.StrictComparisons.LooseComparison
172-
$extra = $num == $hours ? 'selected' : '';
173-
?>
174-
<option value="<?php echo $num; ?>" <?php echo $extra; ?>><?php echo $name; ?></option>
175-
<?php
176-
}
177-
?>
178-
</select>
179-
</div>
180-
<input type="button" id="vz-save-schedule" class="button button-primary"
181-
value="<?php _e( 'Save schedule', 'visualizer' ); ?>">
133+
<select name="vz-import-time" id="vz-import-time" class="visualizer-select">
134+
<?php
135+
$hours = get_post_meta( $this->chart->ID, Visualizer_Plugin::CF_CHART_SCHEDULE, true );
136+
$schedules = apply_filters(
137+
'visualizer_chart_schedules', array(
138+
'-1' => __( 'One-time', 'visualizer' ),
139+
),
140+
'csv',
141+
$this->chart->ID
142+
);
143+
foreach ( $schedules as $num => $name ) {
144+
// phpcs:ignore WordPress.PHP.StrictComparisons.LooseComparison
145+
$extra = $num == $hours ? 'selected' : '';
146+
?>
147+
<option value="<?php echo $num; ?>" <?php echo $extra; ?>><?php echo $name; ?></option>
148+
<?php
149+
}
150+
do_action( 'visualizer_chart_schedules_spl', 'csv', $this->chart->ID, 1 );
151+
?>
152+
</select>
182153

183-
<?php echo apply_filters( 'visualizer_pro_upsell', '', 'schedule-chart' ); ?>
154+
<input type="button" id="view-remote-file" class="button <?php echo Visualizer_Module::is_pro() ? 'button-secondary' : 'button-primary'; ?>" value="<?php _e( 'Import', 'visualizer' ); ?>">
155+
<?php
156+
if ( Visualizer_Module::is_pro() ) {
157+
?>
158+
<input type="button" id="vz-save-schedule" class="button button-primary" value="<?php _e( 'Save schedule', 'visualizer' ); ?>">
159+
<?php
160+
}
161+
?>
184162
</form>
185163
</div>
186164
</li>
187-
165+
<!-- import from json url -->
188166
<li class="viz-subsection">
189167
<span class="viz-section-title visualizer_source_json"><?php _e( 'Import from JSON', 'visualizer' ); ?>
190168
<span class="dashicons dashicons-lock"></span></span>
@@ -239,6 +217,8 @@ class="visualizer-select">
239217
</li>
240218
</ul>
241219
</li>
220+
<!-- import from chart -->
221+
<li class="viz-group viz-import-from-other <?php echo apply_filters( 'visualizer_pro_upsell_class', 'only-pro-feature' ); ?>">
242222
<li class="viz-group viz-import-from-other <?php echo apply_filters( 'visualizer_pro_upsell_class', 'only-pro-feature' ); ?>">
243223
<h2 class="viz-group-title viz-sub-group"
244224
data-current="chart"><?php _e( 'Import from other chart', 'visualizer' ); ?><span
@@ -304,6 +284,7 @@ class="dashicons dashicons-lock"></span></h2>
304284
), admin_url( 'admin-ajax.php' )
305285
);
306286
?>
287+
<!-- import from WordPress -->
307288
<li class="viz-group visualizer_source_query_wp <?php echo apply_filters( 'visualizer_pro_upsell_class', 'only-pro-feature', 'import-wp' ); ?> ">
308289
<h2 class="viz-group-title viz-sub-group"><?php _e( 'Import from WordPress', 'visualizer' ); ?><span
309290
class="dashicons dashicons-lock"></span></h2>
@@ -352,6 +333,7 @@ class="dashicons dashicons-lock"></span></h2>
352333
), admin_url( 'admin-ajax.php' )
353334
);
354335
?>
336+
<!-- import from db -->
355337
<li class="viz-group visualizer_source_query <?php echo apply_filters( 'visualizer_pro_upsell_class', 'only-pro-feature', 'db-query' ); ?>">
356338
<h2 class="viz-group-title viz-sub-group"><?php _e( 'Import from database', 'visualizer' ); ?><span
357339
class="dashicons dashicons-lock"></span></h2>
@@ -394,6 +376,7 @@ class="dashicons dashicons-lock"></span></h2>
394376
<?php
395377
// we will auto-open the manual data feature only when source is empty.
396378
?>
379+
<!-- manual -->
397380
<li class="viz-group <?php echo empty( $source_of_chart ) ? 'open' : ''; ?> ">
398381
<h2 class="viz-group-title viz-sub-group visualizer-editor-tab"
399382
data-current="chart"><?php _e( 'Manual Data', 'visualizer' ); ?><span

js/frame.js

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -96,10 +96,10 @@
9696
});
9797

9898
$('#view-remote-file').click(function () {
99-
var url = $(this).parent().find('#remote-data').val();
99+
var url = $(this).parent().find('#vz-schedule-url').val();
100100

101101
if (url !== '') {
102-
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)) {
102+
if (url.indexOf('localhost') !== -1 || /^([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)) {
103103
if (url.substr(url.length - 8) === '/pubhtml') {
104104
url = url.substring(0, url.length - 8) + '/export?format=csv';
105105
}

0 commit comments

Comments
 (0)