| Línea 21... |
Línea 21... |
| 21 |
* @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
|
21 |
* @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
|
| 22 |
*/
|
22 |
*/
|
| Línea 23... |
Línea 23... |
| 23 |
|
23 |
|
| Línea 24... |
Línea -... |
| 24 |
"use strict";
|
- |
|
| 25 |
|
24 |
"use strict";
|
| 26 |
import $ from 'jquery';
|
25 |
|
| 27 |
import AutoComplete from 'core/form-autocomplete';
|
26 |
import AutoComplete from 'core/form-autocomplete';
|
| 28 |
import 'core/inplace_editable';
|
27 |
import 'core/inplace_editable';
|
| 29 |
import Notification from 'core/notification';
|
28 |
import Notification from 'core/notification';
|
| Línea 149... |
Línea 148... |
| 149 |
return;
|
148 |
return;
|
| 150 |
});
|
149 |
});
|
| 151 |
}
|
150 |
}
|
| 152 |
});
|
151 |
});
|
| Línea 153... |
Línea 152... |
| 153 |
|
152 |
|
| - |
|
153 |
// Initialize sortable list to handle active filters moving.
|
| 154 |
// Initialize sortable list to handle active filters moving (note JQuery dependency, see MDL-72293 for resolution).
|
154 |
const activeFiltersSelector = `${reportSelectors.regions.activeFilters} ul`;
|
| 155 |
var activeFiltersSortableList = new SortableList(`${reportSelectors.regions.activeFilters} ul`, {isHorizontal: false});
|
155 |
const activeFiltersSortableList = new SortableList(activeFiltersSelector, {isHorizontal: false});
|
| Línea 156... |
Línea 156... |
| 156 |
activeFiltersSortableList.getElementName = element => Promise.resolve(element.data('filterName'));
|
156 |
activeFiltersSortableList.getElementName = element => Promise.resolve(element.data('filterName'));
|
| - |
|
157 |
|
| 157 |
|
158 |
document.addEventListener(SortableList.EVENTS.elementDrop, event => {
|
| 158 |
$(document).on(SortableList.EVENTS.DROP, `${reportSelectors.regions.report} li[data-filter-id]`, (event, info) => {
|
159 |
const reportOrderFilter = event.target.closest(`${activeFiltersSelector} ${reportSelectors.regions.activeFilter}`);
|
| - |
|
160 |
if (reportOrderFilter && event.detail.positionChanged) {
|
| 159 |
if (info.positionChanged) {
|
161 |
const pendingPromise = new Pending('core_reportbuilder/filters:reorder');
|
| 160 |
const pendingPromise = new Pending('core_reportbuilder/filters:reorder');
|
- |
|
| 161 |
const reportElement = event.target.closest(reportSelectors.regions.report);
|
162 |
|
| Línea 162... |
Línea 163... |
| 162 |
const filterId = info.element.data('filterId');
|
163 |
const reportElement = reportOrderFilter.closest(reportSelectors.regions.report);
|
| 163 |
const filterPosition = info.element.data('filterPosition');
|
164 |
const {filterId, filterPosition, filterName} = reportOrderFilter.dataset;
|
| - |
|
165 |
|
| 164 |
|
166 |
// Select target position, if moving to the end then count number of element siblings.
|
| 165 |
// Select target position, if moving to the end then count number of element siblings.
|
167 |
let targetFilterPosition = event.detail.targetNextElement.data('filterPosition')
|
| 166 |
let targetFilterPosition = info.targetNextElement.data('filterPosition') || info.element.siblings().length + 2;
|
168 |
|| event.detail.element.siblings().length + 2;
|
| Línea 167... |
Línea 169... |
| 167 |
if (targetFilterPosition > filterPosition) {
|
169 |
if (targetFilterPosition > filterPosition) {
|
| 168 |
targetFilterPosition--;
|
170 |
targetFilterPosition--;
|
| 169 |
}
|
171 |
}
|
| 170 |
|
172 |
|
| 171 |
// Re-order filter, giving drop event transition time to finish.
|
173 |
// Re-order filter, giving drop event transition time to finish.
|
| 172 |
const reorderPromise = reorderFilter(reportElement.dataset.reportId, filterId, targetFilterPosition);
|
174 |
const reorderPromise = reorderFilter(reportElement.dataset.reportId, filterId, targetFilterPosition);
|
| 173 |
Promise.all([reorderPromise, new Promise(resolve => setTimeout(resolve, 1000))])
|
175 |
Promise.all([reorderPromise, new Promise(resolve => setTimeout(resolve, 1000))])
|
| 174 |
.then(([data]) => reloadSettingsFiltersRegion(reportElement, data))
|
176 |
.then(([data]) => reloadSettingsFiltersRegion(reportElement, data))
|
| 175 |
.then(() => getString('filtermoved', 'core_reportbuilder', info.element.data('filterName')))
|
177 |
.then(() => getString('filtermoved', 'core_reportbuilder', filterName))
|
| 176 |
.then(addToast)
|
178 |
.then(addToast)
|