annotate core/misc/batch.es6.js @ 19:fa3358dc1485 tip

Add ndrum files
author Chris Cannam
date Wed, 28 Aug 2019 13:14:47 +0100
parents 129ea1e6d783
children
rev   line source
Chris@0 1 /**
Chris@0 2 * @file
Chris@0 3 * Drupal's batch API.
Chris@0 4 */
Chris@0 5
Chris@17 6 (function($, Drupal) {
Chris@0 7 /**
Chris@0 8 * Attaches the batch behavior to progress bars.
Chris@0 9 *
Chris@0 10 * @type {Drupal~behavior}
Chris@0 11 */
Chris@0 12 Drupal.behaviors.batch = {
Chris@0 13 attach(context, settings) {
Chris@0 14 const batch = settings.batch;
Chris@0 15 const $progress = $('[data-drupal-progress]').once('batch');
Chris@0 16 let progressBar;
Chris@0 17
Chris@0 18 // Success: redirect to the summary.
Chris@0 19 function updateCallback(progress, status, pb) {
Chris@0 20 if (progress === '100') {
Chris@0 21 pb.stopMonitoring();
Chris@0 22 window.location = `${batch.uri}&op=finished`;
Chris@0 23 }
Chris@0 24 }
Chris@0 25
Chris@0 26 function errorCallback(pb) {
Chris@0 27 $progress.prepend($('<p class="error"></p>').html(batch.errorMessage));
Chris@0 28 $('#wait').hide();
Chris@0 29 }
Chris@0 30
Chris@0 31 if ($progress.length) {
Chris@17 32 progressBar = new Drupal.ProgressBar(
Chris@17 33 'updateprogress',
Chris@17 34 updateCallback,
Chris@17 35 'POST',
Chris@17 36 errorCallback,
Chris@17 37 );
Chris@0 38 progressBar.setProgress(-1, batch.initMessage);
Chris@0 39 progressBar.startMonitoring(`${batch.uri}&op=do`, 10);
Chris@0 40 // Remove HTML from no-js progress bar.
Chris@0 41 $progress.empty();
Chris@0 42 // Append the JS progressbar element.
Chris@0 43 $progress.append(progressBar.element);
Chris@0 44 }
Chris@0 45 },
Chris@0 46 };
Chris@17 47 })(jQuery, Drupal);