in modules/frontend/app/services/ConfirmBatch.service.js [30:100]
constructor($root, $q, $modal) {
const scope = $root.$new();
scope.confirmModal = $modal({
templateUrl,
scope,
show: false,
backdrop: 'static',
keyboard: false
});
const _done = (cancel) => {
scope.confirmModal.hide();
if (cancel)
scope.deferred.reject(new CancellationError());
else
scope.deferred.resolve();
};
const _nextElement = (skip) => {
scope.items[scope.curIx++].skip = skip;
if (scope.curIx < scope.items.length)
scope.content = scope.contentGenerator(scope.items[scope.curIx]);
else
_done();
};
scope.cancel = () => {
_done(true);
};
scope.skip = (applyToAll) => {
if (applyToAll) {
for (let i = scope.curIx; i < scope.items.length; i++)
scope.items[i].skip = true;
_done();
}
else
_nextElement(true);
};
scope.overwrite = (applyToAll) => {
if (applyToAll)
_done();
else
_nextElement(false);
};
/**
* Show confirm all dialog.
* @template T
* @param {(T) => string} confirmMessageFn Function to generate a confirm message.
* @param {Array<T>} [itemsToConfirm] Array of element to process by confirm.
*/
this.confirm = function confirm(confirmMessageFn, itemsToConfirm) {
scope.deferred = $q.defer();
scope.contentGenerator = confirmMessageFn;
scope.items = itemsToConfirm;
scope.curIx = 0;
scope.content = (scope.items && scope.items.length > 0) ? scope.contentGenerator(scope.items[0]) : null;
scope.confirmModal.$promise.then(scope.confirmModal.show);
return scope.deferred.promise;
};
}