MDL-73103 reportbuilder: use new notification confirmation method.

Prefetch all language strings used by editor modules.

Co-authored-by: Andrew Nicols <[email protected]>
This commit is contained in:
Paul Holden
2021-12-03 13:01:58 +00:00
co-authored by Andrew Nicols
parent aecdb936cf
commit b103060753
15 changed files with 168 additions and 127 deletions
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
+1 -1
View File
@@ -1,2 +1,2 @@
function _typeof(a){"@babel/helpers - typeof";if("function"==typeof Symbol&&"symbol"==typeof Symbol.iterator){_typeof=function(a){return typeof a}}else{_typeof=function(a){return a&&"function"==typeof Symbol&&a.constructor===Symbol&&a!==Symbol.prototype?"symbol":typeof a}}return _typeof(a)}define ("core_reportbuilder/local/editor/filters",["exports","jquery","core/event_dispatcher","core/inplace_editable","core/notification","core/pending","core/sortable_list","core/str","core/templates","core/toast","core_reportbuilder/local/events","core_reportbuilder/local/selectors","core_reportbuilder/local/repository/filters"],function(a,b,c,d,e,f,g,h,i,j,k,l,m){"use strict";Object.defineProperty(a,"__esModule",{value:!0});a.init=void 0;b=p(b);e=p(e);f=p(f);g=p(g);i=p(i);k=o(k);l=o(l);function n(){if("function"!=typeof WeakMap)return null;var a=new WeakMap;n=function(){return a};return a}function o(a){if(a&&a.__esModule){return a}if(null===a||"object"!==_typeof(a)&&"function"!=typeof a){return{default:a}}var b=n();if(b&&b.has(a)){return b.get(a)}var c={},d=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var e in a){if(Object.prototype.hasOwnProperty.call(a,e)){var f=d?Object.getOwnPropertyDescriptor(a,e):null;if(f&&(f.get||f.set)){Object.defineProperty(c,e,f)}else{c[e]=a[e]}}}c.default=a;if(b){b.set(a,c)}return c}function p(a){return a&&a.__esModule?a:{default:a}}function q(a,b){return v(a)||u(a,b)||s(a,b)||r()}function r(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}function s(a,b){if(!a)return;if("string"==typeof a)return t(a,b);var c=Object.prototype.toString.call(a).slice(8,-1);if("Object"===c&&a.constructor)c=a.constructor.name;if("Map"===c||"Set"===c)return Array.from(c);if("Arguments"===c||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(c))return t(a,b)}function t(a,b){if(null==b||b>a.length)b=a.length;for(var c=0,d=Array(b);c<b;c++){d[c]=a[c]}return d}function u(a,b){if("undefined"==typeof Symbol||!(Symbol.iterator in Object(a)))return;var c=[],d=!0,e=!1,f=void 0;try{for(var g=a[Symbol.iterator](),h;!(d=(h=g.next()).done);d=!0){c.push(h.value);if(b&&c.length===b)break}}catch(a){e=!0;f=a}finally{try{if(!d&&null!=g["return"])g["return"]()}finally{if(e)throw f}}return c}function v(a){if(Array.isArray(a))return a}var w=function(a,b){var c=new f.default("core_reportbuilder/filters:reload"),d=a.querySelector(l.regions.settingsFilters);return i.default.renderForPromise("core_reportbuilder/local/settings/filters",{filters:b}).then(function(b){var e=b.html,f=b.js;i.default.replaceNode(d,e,f);var g=a.querySelector(l.actions.reportAddFilter);null===g||void 0===g?void 0:g.focus();return c.resolve()})},x=function(a){if(a){return}document.addEventListener("click",function(a){var b=a.target.closest(l.actions.reportAddFilter);if(b){a.preventDefault();var o=b.closest(l.regions.report);if("0"===b.value){return}var p=new f.default("core_reportbuilder/filters:add");(0,m.addFilter)(o.dataset.reportId,b.value).then(function(a){return w(o,a)}).then(function(){return(0,h.get_string)("filteradded","core_reportbuilder",b.options[b.selectedIndex].text)}).then(j.add).then(function(){return p.resolve()}).catch(e.default.exception)}var d=a.target.closest(l.actions.reportRemoveFilter);if(d){a.preventDefault();var g=d.closest(l.regions.report),i=d.closest(l.regions.activeFilter),n=i.dataset.filterName;(0,h.get_strings)([{key:"deletefilter",component:"core_reportbuilder",param:n},{key:"deletefilterconfirm",component:"core_reportbuilder",param:n},{key:"delete",component:"moodle"}]).then(function(a){var b=q(a,3),d=b[0],l=b[1],o=b[2];e.default.confirm(d,l,o,null,function(){var a=new f.default("core_reportbuilder/filters:remove");(0,m.deleteFilter)(g.dataset.reportId,i.dataset.filterId).then(function(a){return w(g,a)}).then(function(){return(0,h.get_string)("filterdeleted","core_reportbuilder",n)}).then(j.add).then(function(){(0,c.dispatchEvent)(k.tableReload,{},g);return a.resolve()}).catch(e.default.exception)})}).catch(e.default.exception)}});var d=new g.default("".concat(l.regions.activeFilters," ul"),{isHorizontal:!1});d.getElementName=function(a){return Promise.resolve(a.data("filterName"))};(0,b.default)(document).on(g.default.EVENTS.DROP,"".concat(l.regions.report," li[data-filter-id]"),function(a,b){if(b.positionChanged){var c=new f.default("core_reportbuilder/filters:reorder"),d=a.target.closest(l.regions.report),g=b.element.data("filterId"),i=b.element.data("filterPosition"),k=b.targetNextElement.data("filterPosition")||b.element.siblings().length+2;if(k>i){k--}(0,m.reorderFilter)(d.dataset.reportId,g,k).then(function(a){return w(d,a)}).then(function(){return(0,h.get_string)("filtermoved","core_reportbuilder",b.element.data("filterName"))}).then(j.add).then(function(){return c.resolve()}).catch(e.default.exception)}})};a.init=x});
function _typeof(a){"@babel/helpers - typeof";if("function"==typeof Symbol&&"symbol"==typeof Symbol.iterator){_typeof=function(a){return typeof a}}else{_typeof=function(a){return a&&"function"==typeof Symbol&&a.constructor===Symbol&&a!==Symbol.prototype?"symbol":typeof a}}return _typeof(a)}define ("core_reportbuilder/local/editor/filters",["exports","jquery","core/event_dispatcher","core/inplace_editable","core/notification","core/pending","core/prefetch","core/sortable_list","core/str","core/templates","core/toast","core_reportbuilder/local/events","core_reportbuilder/local/selectors","core_reportbuilder/local/repository/filters"],function(a,b,c,d,e,f,g,h,i,j,k,l,m,n){"use strict";Object.defineProperty(a,"__esModule",{value:!0});a.init=void 0;b=q(b);e=q(e);f=q(f);h=q(h);j=q(j);l=p(l);m=p(m);function o(){if("function"!=typeof WeakMap)return null;var a=new WeakMap;o=function(){return a};return a}function p(a){if(a&&a.__esModule){return a}if(null===a||"object"!==_typeof(a)&&"function"!=typeof a){return{default:a}}var b=o();if(b&&b.has(a)){return b.get(a)}var c={},d=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var e in a){if(Object.prototype.hasOwnProperty.call(a,e)){var f=d?Object.getOwnPropertyDescriptor(a,e):null;if(f&&(f.get||f.set)){Object.defineProperty(c,e,f)}else{c[e]=a[e]}}}c.default=a;if(b){b.set(a,c)}return c}function q(a){return a&&a.__esModule?a:{default:a}}var r=function(a,b){var c=new f.default("core_reportbuilder/filters:reload"),d=a.querySelector(m.regions.settingsFilters);return j.default.renderForPromise("core_reportbuilder/local/settings/filters",{filters:b}).then(function(b){var e=b.html,f=b.js;j.default.replaceNode(d,e,f);var g=a.querySelector(m.actions.reportAddFilter);null===g||void 0===g?void 0:g.focus();return c.resolve()})},s=function(a){(0,g.prefetchStrings)("core_reportbuilder",["deletefilter","deletefilterconfirm","filteradded","filterdeleted","filtermoved"]);(0,g.prefetchStrings)("core",["delete"]);if(a){return}document.addEventListener("click",function(a){var b=a.target.closest(m.actions.reportAddFilter);if(b){a.preventDefault();var o=b.closest(m.regions.report);if("0"===b.value){return}var p=new f.default("core_reportbuilder/filters:add");(0,n.addFilter)(o.dataset.reportId,b.value).then(function(a){return r(o,a)}).then(function(){return(0,i.get_string)("filteradded","core_reportbuilder",b.options[b.selectedIndex].text)}).then(k.add).then(function(){return p.resolve()}).catch(e.default.exception)}var d=a.target.closest(m.actions.reportRemoveFilter);if(d){a.preventDefault();var g=d.closest(m.regions.report),h=d.closest(m.regions.activeFilter),j=h.dataset.filterName;e.default.saveCancelPromise((0,i.get_string)("deletefilter","core_reportbuilder",j),(0,i.get_string)("deletefilterconfirm","core_reportbuilder",j),(0,i.get_string)("delete","core")).then(function(){var a=new f.default("core_reportbuilder/filters:remove");return(0,n.deleteFilter)(g.dataset.reportId,h.dataset.filterId).then(function(a){return r(g,a)}).then(function(){return(0,k.add)((0,i.get_string)("filterdeleted","core_reportbuilder",j))}).then(function(){(0,c.dispatchEvent)(l.tableReload,{},g);return a.resolve()}).catch(e.default.exception)}).catch(function(){})}});var d=new h.default("".concat(m.regions.activeFilters," ul"),{isHorizontal:!1});d.getElementName=function(a){return Promise.resolve(a.data("filterName"))};(0,b.default)(document).on(h.default.EVENTS.DROP,"".concat(m.regions.report," li[data-filter-id]"),function(a,b){if(b.positionChanged){var c=new f.default("core_reportbuilder/filters:reorder"),d=a.target.closest(m.regions.report),g=b.element.data("filterId"),h=b.element.data("filterPosition"),j=b.targetNextElement.data("filterPosition")||b.element.siblings().length+2;if(j>h){j--}(0,n.reorderFilter)(d.dataset.reportId,g,j).then(function(a){return r(d,a)}).then(function(){return(0,i.get_string)("filtermoved","core_reportbuilder",b.element.data("filterName"))}).then(k.add).then(function(){return c.resolve()}).catch(e.default.exception)}})};a.init=s});
//# sourceMappingURL=filters.min.js.map
File diff suppressed because one or more lines are too long
+1 -1
View File
@@ -1,2 +1,2 @@
function _typeof(a){"@babel/helpers - typeof";if("function"==typeof Symbol&&"symbol"==typeof Symbol.iterator){_typeof=function(a){return typeof a}}else{_typeof=function(a){return a&&"function"==typeof Symbol&&a.constructor===Symbol&&a!==Symbol.prototype?"symbol":typeof a}}return _typeof(a)}define ("core_reportbuilder/reports_list",["exports","core/event_dispatcher","core/notification","core/pending","core/str","core/toast","core_reportbuilder/local/events","core_reportbuilder/local/selectors","core_reportbuilder/local/repository/reports","core_reportbuilder/local/repository/modals"],function(a,b,c,d,e,f,g,h,i,j){"use strict";Object.defineProperty(a,"__esModule",{value:!0});a.init=void 0;c=m(c);d=m(d);g=l(g);h=l(h);function k(){if("function"!=typeof WeakMap)return null;var a=new WeakMap;k=function(){return a};return a}function l(a){if(a&&a.__esModule){return a}if(null===a||"object"!==_typeof(a)&&"function"!=typeof a){return{default:a}}var b=k();if(b&&b.has(a)){return b.get(a)}var c={},d=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var e in a){if(Object.prototype.hasOwnProperty.call(a,e)){var f=d?Object.getOwnPropertyDescriptor(a,e):null;if(f&&(f.get||f.set)){Object.defineProperty(c,e,f)}else{c[e]=a[e]}}}c.default=a;if(b){b.set(a,c)}return c}function m(a){return a&&a.__esModule?a:{default:a}}function n(a,b){return s(a)||r(a,b)||p(a,b)||o()}function o(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}function p(a,b){if(!a)return;if("string"==typeof a)return q(a,b);var c=Object.prototype.toString.call(a).slice(8,-1);if("Object"===c&&a.constructor)c=a.constructor.name;if("Map"===c||"Set"===c)return Array.from(c);if("Arguments"===c||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(c))return q(a,b)}function q(a,b){if(null==b||b>a.length)b=a.length;for(var c=0,d=Array(b);c<b;c++){d[c]=a[c]}return d}function r(a,b){if("undefined"==typeof Symbol||!(Symbol.iterator in Object(a)))return;var c=[],d=!0,e=!1,f=void 0;try{for(var g=a[Symbol.iterator](),h;!(d=(h=g.next()).done);d=!0){c.push(h.value);if(b&&c.length===b)break}}catch(a){e=!0;f=a}finally{try{if(!d&&null!=g["return"])g["return"]()}finally{if(e)throw f}}return c}function s(a){if(Array.isArray(a))return a}a.init=function init(){document.addEventListener("click",function(a){var k=a.target.closest(h.actions.reportCreate);if(k){a.preventDefault();var o=(0,j.createReportModal)(a.target,(0,e.get_string)("newreport","core_reportbuilder"));o.addEventListener(o.events.FORM_SUBMITTED,function(a){window.location.href=a.detail});o.show()}var l=a.target.closest(h.actions.reportEdit);if(l){a.preventDefault();var p=(0,j.createReportModal)(a.target,(0,e.get_string)("editreportdetails","core_reportbuilder"),l.dataset.reportId);p.addEventListener(p.events.FORM_SUBMITTED,function(){var d=a.target.closest(h.regions.report);(0,e.get_string)("reportupdated","core_reportbuilder").then(f.add).then(function(){(0,b.dispatchEvent)(g.tableReload,{preservePagination:!0},d)}).catch(c.default.exception)});p.show()}var m=a.target.closest(h.actions.reportDelete);if(m){a.preventDefault();(0,e.get_strings)([{key:"deletereport",component:"core_reportbuilder"},{key:"deletereportconfirm",component:"core_reportbuilder",param:m.dataset.reportName},{key:"delete",component:"moodle"}]).then(function(j){var k=n(j,3),l=k[0],o=k[1],p=k[2];c.default.confirm(l,o,p,null,function(){var j=new d.default("core_reportbuilder/reports:delete"),k=a.target.closest(h.regions.report);(0,i.deleteReport)(m.dataset.reportId).then(function(){return(0,e.get_string)("reportdeleted","core_reportbuilder")}).then(f.add).then(function(){j.resolve();(0,b.dispatchEvent)(g.tableReload,{preservePagination:!0},k)}).catch(c.default.exception)})}).catch(c.default.exception)}})}});
function _typeof(a){"@babel/helpers - typeof";if("function"==typeof Symbol&&"symbol"==typeof Symbol.iterator){_typeof=function(a){return typeof a}}else{_typeof=function(a){return a&&"function"==typeof Symbol&&a.constructor===Symbol&&a!==Symbol.prototype?"symbol":typeof a}}return _typeof(a)}define ("core_reportbuilder/reports_list",["exports","core/event_dispatcher","core/notification","core/pending","core/prefetch","core/str","core/toast","core_reportbuilder/local/events","core_reportbuilder/local/selectors","core_reportbuilder/local/repository/reports","core_reportbuilder/local/repository/modals"],function(a,b,c,d,e,f,g,h,i,j,k){"use strict";Object.defineProperty(a,"__esModule",{value:!0});a.init=void 0;c=n(c);d=n(d);h=m(h);i=m(i);function l(){if("function"!=typeof WeakMap)return null;var a=new WeakMap;l=function(){return a};return a}function m(a){if(a&&a.__esModule){return a}if(null===a||"object"!==_typeof(a)&&"function"!=typeof a){return{default:a}}var b=l();if(b&&b.has(a)){return b.get(a)}var c={},d=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var e in a){if(Object.prototype.hasOwnProperty.call(a,e)){var f=d?Object.getOwnPropertyDescriptor(a,e):null;if(f&&(f.get||f.set)){Object.defineProperty(c,e,f)}else{c[e]=a[e]}}}c.default=a;if(b){b.set(a,c)}return c}function n(a){return a&&a.__esModule?a:{default:a}}a.init=function init(){(0,e.prefetchStrings)("core_reportbuilder",["deletereport","deletereportconfirm","editreportdetails","newreport","reportdeleted","reportupdated"]);(0,e.prefetchStrings)("core",["delete"]);document.addEventListener("click",function(a){var e=a.target.closest(i.actions.reportCreate);if(e){a.preventDefault();var n=(0,k.createReportModal)(a.target,(0,f.get_string)("newreport","core_reportbuilder"));n.addEventListener(n.events.FORM_SUBMITTED,function(a){window.location.href=a.detail});n.show()}var l=a.target.closest(i.actions.reportEdit);if(l){a.preventDefault();var o=(0,k.createReportModal)(a.target,(0,f.get_string)("editreportdetails","core_reportbuilder"),l.dataset.reportId);o.addEventListener(o.events.FORM_SUBMITTED,function(){var d=a.target.closest(i.regions.report);(0,f.get_string)("reportupdated","core_reportbuilder").then(g.add).then(function(){(0,b.dispatchEvent)(h.tableReload,{preservePagination:!0},d)}).catch(c.default.exception)});o.show()}var m=a.target.closest(i.actions.reportDelete);if(m){a.preventDefault();c.default.saveCancelPromise((0,f.get_string)("deletereport","core_reportbuilder"),(0,f.get_string)("deletereportconfirm","core_reportbuilder",m.dataset.reportName),(0,f.get_string)("delete","core")).then(function(){var e=new d.default("core_reportbuilder/reports:delete"),k=a.target.closest(i.regions.report);return(0,j.deleteReport)(m.dataset.reportId).then(function(){return(0,g.add)((0,f.get_string)("reportdeleted","core_reportbuilder"))}).then(function(){(0,b.dispatchEvent)(h.tableReload,{preservePagination:!0},k);return e.resolve()}).catch(c.default.exception)}).catch(function(){})}})}});
//# sourceMappingURL=reports_list.min.js.map
File diff suppressed because one or more lines are too long
+29 -18
View File
@@ -26,7 +26,8 @@
import Templates from 'core/templates';
import Notification from 'core/notification';
import Pending from 'core/pending';
import {get_string as getString, get_strings as getStrings} from 'core/str';
import {prefetchStrings} from 'core/prefetch';
import {get_string as getString} from 'core/str';
import DynamicForm from 'core_form/dynamicform';
import {add as addToast} from 'core/toast';
import {deleteAudience} from 'core_reportbuilder/local/repository/audiences';
@@ -148,25 +149,23 @@ const initAudienceCardForm = audienceCard => {
const deleteAudienceCard = audienceCard => {
const audienceTitle = audienceCard.dataset.title;
getStrings([
{key: 'deleteaudience', component: 'core_reportbuilder', param: audienceTitle},
{key: 'deleteaudienceconfirm', component: 'core_reportbuilder', param: audienceTitle},
{key: 'delete', component: 'moodle'},
]).then(([confirmTitle, confirmText, confirmButton]) => {
Notification.confirm(confirmTitle, confirmText, confirmButton, null, () => {
const pendingPromise = new Pending('core_reportbuilder/audience:delete');
Notification.saveCancelPromise(
getString('deleteaudience', 'core_reportbuilder', audienceTitle),
getString('deleteaudienceconfirm', 'core_reportbuilder', audienceTitle),
getString('delete', 'core')
).then(() => {
const pendingPromise = new Pending('core_reportbuilder/audience:delete');
deleteAudience(reportId, audienceCard.dataset.instanceid)
.then(() => getString('audiencedeleted', 'core_reportbuilder', audienceTitle))
.then(addToast)
.then(() => {
removeAudienceCard(audienceCard);
return pendingPromise.resolve();
})
.catch(Notification.exception);
});
return deleteAudience(reportId, audienceCard.dataset.instanceid)
.then(() => addToast(getString('audiencedeleted', 'core_reportbuilder', audienceTitle)))
.then(() => {
removeAudienceCard(audienceCard);
return pendingPromise.resolve();
})
.catch(Notification.exception);
}).catch(() => {
return;
}).catch(Notification.exception);
});
};
/**
@@ -215,6 +214,18 @@ let initialized = false;
* @param {Number} contextid
*/
export const init = (id, contextid) => {
prefetchStrings('core_reportbuilder', [
'audienceadded',
'audiencedeleted',
'audiencesaved',
'deleteaudience',
'deleteaudienceconfirm',
]);
prefetchStrings('core', [
'delete',
]);
reportId = id;
contextId = contextid;
+33 -21
View File
@@ -29,9 +29,10 @@ import 'core/inplace_editable';
import {eventTypes as inplaceEditableEvents} from 'core/local/inplace_editable/events';
import Notification from 'core/notification';
import Pending from 'core/pending';
import {prefetchStrings} from 'core/prefetch';
import {publish} from 'core/pubsub';
import SortableList from 'core/sortable_list';
import {get_string as getString, get_strings as getStrings} from 'core/str';
import {get_string as getString} from 'core/str';
import {add as addToast} from 'core/toast';
import * as reportEvents from 'core_reportbuilder/local/events';
import * as reportSelectors from 'core_reportbuilder/local/selectors';
@@ -39,11 +40,24 @@ import {addColumn, deleteColumn, reorderColumn} from 'core_reportbuilder/local/r
import {getColumnSorting} from 'core_reportbuilder/local/repository/sorting';
/**
* Initialise module
* Initialise module, prefetch all required strings
*
* @param {Boolean} initialized Ensure we only add our listeners once
*/
export const init = (initialized) => {
export const init = initialized => {
prefetchStrings('core_reportbuilder', [
'columnadded',
'columnaggregated',
'columndeleted',
'columnmoved',
'deletecolumn',
'deletecolumnconfirm',
]);
prefetchStrings('core', [
'delete',
]);
if (initialized) {
return;
}
@@ -78,26 +92,24 @@ export const init = (initialized) => {
const columnHeader = reportRemoveColumn.closest(reportSelectors.regions.columnHeader);
const columnName = columnHeader.dataset.columnName;
getStrings([
{key: 'deletecolumn', component: 'core_reportbuilder', param: columnName},
{key: 'deletecolumnconfirm', component: 'core_reportbuilder', param: columnName},
{key: 'delete', component: 'moodle'},
]).then(([confirmTitle, confirmText, confirmButton]) => {
Notification.confirm(confirmTitle, confirmText, confirmButton, null, () => {
const pendingPromise = new Pending('core_reportbuilder/columns:remove');
Notification.saveCancelPromise(
getString('deletecolumn', 'core_reportbuilder', columnName),
getString('deletecolumnconfirm', 'core_reportbuilder', columnName),
getString('delete', 'core')
).then(() => {
const pendingPromise = new Pending('core_reportbuilder/columns:remove');
deleteColumn(reportElement.dataset.reportId, columnHeader.dataset.columnId)
.then(data => publish(reportEvents.publish.reportColumnsUpdated, data))
.then(() => getString('columndeleted', 'core_reportbuilder', columnName))
.then(addToast)
.then(() => {
dispatchEvent(reportEvents.tableReload, {preservePagination: true}, reportElement);
return pendingPromise.resolve();
})
.catch(Notification.exception);
});
return deleteColumn(reportElement.dataset.reportId, columnHeader.dataset.columnId)
.then(data => publish(reportEvents.publish.reportColumnsUpdated, data))
.then(() => addToast(getString('columndeleted', 'core_reportbuilder', columnName)))
.then(() => {
dispatchEvent(reportEvents.tableReload, {preservePagination: true}, reportElement);
return pendingPromise.resolve();
})
.catch(Notification.exception);
}).catch(() => {
return;
}).catch(Notification.exception);
});
}
});
@@ -30,7 +30,7 @@ import Notification from 'core/notification';
import Pending from 'core/pending';
import {prefetchStrings} from 'core/prefetch';
import SortableList from 'core/sortable_list';
import {get_string as getString, get_strings as getStrings} from 'core/str';
import {get_string as getString} from 'core/str';
import Templates from 'core/templates';
import {add as addToast} from 'core/toast';
import DynamicForm from 'core_form/dynamicform';
@@ -88,26 +88,24 @@ const initConditionsForm = () => {
conditionForm.addEventListener(conditionForm.events.NOSUBMIT_BUTTON_PRESSED, event => {
event.preventDefault();
getStrings([
{key: 'resetconditions', component: 'core_reportbuilder'},
{key: 'resetconditionsconfirm', component: 'core_reportbuilder'},
{key: 'resetall', component: 'core_reportbuilder'},
]).then(([confirmTitle, confirmText, confirmButton]) => {
Notification.confirm(confirmTitle, confirmText, confirmButton, null, () => {
const pendingPromise = new Pending('core_reportbuilder/conditions:reset');
Notification.saveCancelPromise(
getString('resetconditions', 'core_reportbuilder'),
getString('resetconditionsconfirm', 'core_reportbuilder'),
getString('resetall', 'core_reportbuilder')
).then(() => {
const pendingPromise = new Pending('core_reportbuilder/conditions:reset');
resetConditions(reportElement.dataset.reportId)
.then(data => reloadSettingsConditionsRegion(reportElement, data))
.then(() => getString('conditionsreset', 'core_reportbuilder'))
.then(addToast)
.then(() => {
dispatchEvent(reportEvents.tableReload, {}, reportElement);
return pendingPromise.resolve();
})
.catch(Notification.exception);
});
return resetConditions(reportElement.dataset.reportId)
.then(data => reloadSettingsConditionsRegion(reportElement, data))
.then(() => addToast(getString('conditionsreset', 'core_reportbuilder')))
.then(() => {
dispatchEvent(reportEvents.tableReload, {}, reportElement);
return pendingPromise.resolve();
})
.catch(Notification.exception);
}).catch(() => {
return;
}).catch(Notification.exception);
});
});
};
@@ -176,26 +174,24 @@ export const init = initialized => {
const conditionContainer = reportRemoveCondition.closest(reportSelectors.regions.activeCondition);
const conditionName = conditionContainer.dataset.conditionName;
getStrings([
{key: 'deletecondition', component: 'core_reportbuilder', param: conditionName},
{key: 'deleteconditionconfirm', component: 'core_reportbuilder', param: conditionName},
{key: 'delete', component: 'core'},
]).then(([confirmTitle, confirmText, confirmButton]) => {
Notification.confirm(confirmTitle, confirmText, confirmButton, null, () => {
const pendingPromise = new Pending('core_reportbuilder/conditions:remove');
Notification.saveCancelPromise(
getString('deletecondition', 'core_reportbuilder', conditionName),
getString('deleteconditionconfirm', 'core_reportbuilder', conditionName),
getString('delete', 'core')
).then(() => {
const pendingPromise = new Pending('core_reportbuilder/conditions:remove');
deleteCondition(reportElement.dataset.reportId, conditionContainer.dataset.conditionId)
.then(data => reloadSettingsConditionsRegion(reportElement, data))
.then(() => getString('conditiondeleted', 'core_reportbuilder', conditionName))
.then(addToast)
.then(() => {
dispatchEvent(reportEvents.tableReload, {}, reportElement);
return pendingPromise.resolve();
})
.catch(Notification.exception);
});
return deleteCondition(reportElement.dataset.reportId, conditionContainer.dataset.conditionId)
.then(data => reloadSettingsConditionsRegion(reportElement, data))
.then(() => addToast(getString('conditiondeleted', 'core_reportbuilder', conditionName)))
.then(() => {
dispatchEvent(reportEvents.tableReload, {}, reportElement);
return pendingPromise.resolve();
})
.catch(Notification.exception);
}).catch(() => {
return;
}).catch(Notification.exception);
});
}
});
+32 -21
View File
@@ -28,8 +28,9 @@ import {dispatchEvent} from 'core/event_dispatcher';
import 'core/inplace_editable';
import Notification from 'core/notification';
import Pending from 'core/pending';
import {prefetchStrings} from 'core/prefetch';
import SortableList from 'core/sortable_list';
import {get_string as getString, get_strings as getStrings} from 'core/str';
import {get_string as getString} from 'core/str';
import Templates from 'core/templates';
import {add as addToast} from 'core/toast';
import * as reportEvents from 'core_reportbuilder/local/events';
@@ -58,11 +59,23 @@ const reloadSettingsFiltersRegion = (reportElement, templateContext) => {
};
/**
* Initialise module
* Initialise module, prefetch all required strings
*
* @param {Boolean} initialized Ensure we only add our listeners once
*/
export const init = (initialized) => {
export const init = initialized => {
prefetchStrings('core_reportbuilder', [
'deletefilter',
'deletefilterconfirm',
'filteradded',
'filterdeleted',
'filtermoved',
]);
prefetchStrings('core', [
'delete',
]);
if (initialized) {
return;
}
@@ -101,26 +114,24 @@ export const init = (initialized) => {
const filterContainer = reportRemoveFilter.closest(reportSelectors.regions.activeFilter);
const filterName = filterContainer.dataset.filterName;
getStrings([
{key: 'deletefilter', component: 'core_reportbuilder', param: filterName},
{key: 'deletefilterconfirm', component: 'core_reportbuilder', param: filterName},
{key: 'delete', component: 'moodle'},
]).then(([confirmTitle, confirmText, confirmButton]) => {
Notification.confirm(confirmTitle, confirmText, confirmButton, null, () => {
const pendingPromise = new Pending('core_reportbuilder/filters:remove');
Notification.saveCancelPromise(
getString('deletefilter', 'core_reportbuilder', filterName),
getString('deletefilterconfirm', 'core_reportbuilder', filterName),
getString('delete', 'core')
).then(() => {
const pendingPromise = new Pending('core_reportbuilder/filters:remove');
deleteFilter(reportElement.dataset.reportId, filterContainer.dataset.filterId)
.then(data => reloadSettingsFiltersRegion(reportElement, data))
.then(() => getString('filterdeleted', 'core_reportbuilder', filterName))
.then(addToast)
.then(() => {
dispatchEvent(reportEvents.tableReload, {}, reportElement);
return pendingPromise.resolve();
})
.catch(Notification.exception);
});
return deleteFilter(reportElement.dataset.reportId, filterContainer.dataset.filterId)
.then(data => reloadSettingsFiltersRegion(reportElement, data))
.then(() => addToast(getString('filterdeleted', 'core_reportbuilder', filterName)))
.then(() => {
dispatchEvent(reportEvents.tableReload, {}, reportElement);
return pendingPromise.resolve();
})
.catch(Notification.exception);
}).catch(() => {
return;
}).catch(Notification.exception);
});
}
});
+31 -20
View File
@@ -26,7 +26,8 @@
import {dispatchEvent} from 'core/event_dispatcher';
import Notification from 'core/notification';
import Pending from 'core/pending';
import {get_string as getString, get_strings as getStrings} from 'core/str';
import {prefetchStrings} from 'core/prefetch';
import {get_string as getString} from 'core/str';
import {add as addToast} from 'core/toast';
import * as reportEvents from 'core_reportbuilder/local/events';
import * as reportSelectors from 'core_reportbuilder/local/selectors';
@@ -37,6 +38,19 @@ import {createReportModal} from 'core_reportbuilder/local/repository/modals';
* Initialise module
*/
export const init = () => {
prefetchStrings('core_reportbuilder', [
'deletereport',
'deletereportconfirm',
'editreportdetails',
'newreport',
'reportdeleted',
'reportupdated',
]);
prefetchStrings('core', [
'delete',
]);
document.addEventListener('click', event => {
const reportCreate = event.target.closest(reportSelectors.actions.reportCreate);
if (reportCreate) {
@@ -77,27 +91,24 @@ export const init = () => {
if (reportDelete) {
event.preventDefault();
getStrings([
{key: 'deletereport', component: 'core_reportbuilder'},
{key: 'deletereportconfirm', component: 'core_reportbuilder', param: reportDelete.dataset.reportName},
{key: 'delete', component: 'moodle'},
]).then(([confirmTitle, confirmText, confirmButton]) => {
Notification.confirm(confirmTitle, confirmText, confirmButton, null, () => {
const pendingPromise = new Pending('core_reportbuilder/reports:delete');
const reportElement = event.target.closest(reportSelectors.regions.report);
Notification.saveCancelPromise(
getString('deletereport', 'core_reportbuilder'),
getString('deletereportconfirm', 'core_reportbuilder', reportDelete.dataset.reportName),
getString('delete', 'core')
).then(() => {
const pendingPromise = new Pending('core_reportbuilder/reports:delete');
const reportElement = event.target.closest(reportSelectors.regions.report);
deleteReport(reportDelete.dataset.reportId)
.then(() => getString('reportdeleted', 'core_reportbuilder'))
.then(addToast)
.then(() => {
pendingPromise.resolve();
dispatchEvent(reportEvents.tableReload, {preservePagination: true}, reportElement);
return;
})
.catch(Notification.exception);
});
return deleteReport(reportDelete.dataset.reportId)
.then(() => addToast(getString('reportdeleted', 'core_reportbuilder')))
.then(() => {
dispatchEvent(reportEvents.tableReload, {preservePagination: true}, reportElement);
return pendingPromise.resolve();
})
.catch(Notification.exception);
}).catch(() => {
return;
}).catch(Notification.exception);
});
}
});
};