Skip to content

Commit 86a8ab4

Browse files
authored
Add date range arguments to admin UI for generating data. (#165)
* Add start date argument to admin UI for generating orders. * Implement full date range and apply arguments to products and orders.
1 parent 176dc7c commit 86a8ab4

File tree

1 file changed

+61
-3
lines changed

1 file changed

+61
-3
lines changed

includes/Admin/Settings.php

Lines changed: 61 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -133,6 +133,39 @@ public static function render_admin_page() {
133133
?>
134134
</p>
135135

136+
<h2>Advanced Options</h2>
137+
<p>
138+
<label>
139+
<input
140+
type="checkbox"
141+
id="use_date_range"
142+
name="use_date_range"
143+
<?php disabled( $current_job instanceof AsyncJob ); ?>
144+
/>
145+
Specify date range for generation
146+
</label>
147+
</p>
148+
<div id="date_range_inputs" style="display: none;">
149+
<p>
150+
<label for="generate_start_date_input">Start date</label>
151+
<input
152+
id="generate_start_date_input"
153+
type="date"
154+
name="start_date"
155+
value="<?php echo esc_attr( date( 'Y-m-d' ) ); ?>"
156+
<?php disabled( $current_job instanceof AsyncJob ); ?>
157+
/>
158+
<label for="generate_end_date_input">End date</label>
159+
<input
160+
id="generate_end_date_input"
161+
type="date"
162+
name="end_date"
163+
value="<?php echo esc_attr( date( 'Y-m-d' ) ); ?>"
164+
<?php disabled( $current_job instanceof AsyncJob ); ?>
165+
/>
166+
</p>
167+
</div>
168+
136169
<?php
137170
submit_button(
138171
'Cancel current job',
@@ -146,6 +179,24 @@ public static function render_admin_page() {
146179
<?php
147180

148181
self::heartbeat_script();
182+
self::date_range_toggle_script();
183+
}
184+
185+
/**
186+
* Script to toggle date range inputs visibility.
187+
*
188+
* @return void
189+
*/
190+
protected static function date_range_toggle_script() {
191+
?>
192+
<script>
193+
( function( $ ) {
194+
$( '#use_date_range' ).on( 'change', function() {
195+
$( '#date_range_inputs' ).toggle( this.checked );
196+
} );
197+
} )( jQuery );
198+
</script>
199+
<?php
149200
}
150201

151202
/**
@@ -159,7 +210,7 @@ protected static function heartbeat_script() {
159210
( function( $ ) {
160211
const $document = $( document );
161212
const $progress = $( '#smoothgenerator-progress-bar' );
162-
const $controls = $( '[id^="generate_"]' );
213+
const $controls = $( '[id^="generate_"], #use_date_range, #date_range_inputs input' );
163214
const $cancel = $( '#cancel_job' );
164215

165216
$document.on( 'ready', function () {
@@ -232,14 +283,21 @@ public static function receive_heartbeat( array $response, array $data, $screen_
232283
* Process the generation.
233284
*/
234285
public static function process_page_submit() {
286+
$args = array();
287+
288+
if ( ! empty( $_POST['use_date_range'] ) ) {
289+
$args['date-start'] = sanitize_text_field( $_POST['start_date'] );
290+
$args['date-end'] = sanitize_text_field( $_POST['end_date'] );
291+
}
292+
235293
if ( ! empty( $_POST['generate_products'] ) && ! empty( $_POST['num_products_to_generate'] ) ) {
236294
check_admin_referer( 'generate', 'smoothgenerator_nonce' );
237295
$num_to_generate = absint( $_POST['num_products_to_generate'] );
238-
BatchProcessor::create_new_job( 'products', $num_to_generate );
296+
BatchProcessor::create_new_job( 'products', $num_to_generate, $args );
239297
} else if ( ! empty( $_POST['generate_orders'] ) && ! empty( $_POST['num_orders_to_generate'] ) ) {
240298
check_admin_referer( 'generate', 'smoothgenerator_nonce' );
241299
$num_to_generate = absint( $_POST['num_orders_to_generate'] );
242-
BatchProcessor::create_new_job( 'orders', $num_to_generate );
300+
BatchProcessor::create_new_job( 'orders', $num_to_generate, $args );
243301
} else if ( ! empty( $_POST['cancel_job'] ) ) {
244302
check_admin_referer( 'generate', 'smoothgenerator_nonce' );
245303
BatchProcessor::delete_current_job();

0 commit comments

Comments
 (0)