Mercurial > hg > isophonics-drupal-site
diff core/misc/batch.es6.js @ 0:4c8ae668cc8c
Initial import (non-working)
author | Chris Cannam |
---|---|
date | Wed, 29 Nov 2017 16:09:58 +0000 |
parents | |
children | 129ea1e6d783 |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/core/misc/batch.es6.js Wed Nov 29 16:09:58 2017 +0000 @@ -0,0 +1,42 @@ +/** + * @file + * Drupal's batch API. + */ + +(function ($, Drupal) { + /** + * Attaches the batch behavior to progress bars. + * + * @type {Drupal~behavior} + */ + Drupal.behaviors.batch = { + attach(context, settings) { + const batch = settings.batch; + const $progress = $('[data-drupal-progress]').once('batch'); + let progressBar; + + // Success: redirect to the summary. + function updateCallback(progress, status, pb) { + if (progress === '100') { + pb.stopMonitoring(); + window.location = `${batch.uri}&op=finished`; + } + } + + function errorCallback(pb) { + $progress.prepend($('<p class="error"></p>').html(batch.errorMessage)); + $('#wait').hide(); + } + + if ($progress.length) { + progressBar = new Drupal.ProgressBar('updateprogress', updateCallback, 'POST', errorCallback); + progressBar.setProgress(-1, batch.initMessage); + progressBar.startMonitoring(`${batch.uri}&op=do`, 10); + // Remove HTML from no-js progress bar. + $progress.empty(); + // Append the JS progressbar element. + $progress.append(progressBar.element); + } + }, + }; +}(jQuery, Drupal));