| 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 {dispatchEvent} from 'core/event_dispatcher';
|
26 |
import {dispatchEvent} from 'core/event_dispatcher';
|
| 28 |
import 'core/inplace_editable';
|
27 |
import 'core/inplace_editable';
|
| 29 |
import {eventTypes as inplaceEditableEvents} from 'core/local/inplace_editable/events';
|
28 |
import {eventTypes as inplaceEditableEvents} from 'core/local/inplace_editable/events';
|
| Línea 112... |
Línea 111... |
| 112 |
return;
|
111 |
return;
|
| 113 |
});
|
112 |
});
|
| 114 |
}
|
113 |
}
|
| 115 |
});
|
114 |
});
|
| Línea 116... |
Línea 115... |
| 116 |
|
115 |
|
| - |
|
116 |
// Initialize sortable list to handle column moving.
|
| 117 |
// Initialize sortable list to handle column moving (note JQuery dependency, see MDL-72293 for resolution).
|
117 |
const columnHeadingSelector = `${reportSelectors.regions.reportTable} thead tr`;
|
| 118 |
var columnSortableList = new SortableList(`${reportSelectors.regions.reportTable} thead tr`, {isHorizontal: true});
|
118 |
const columnHeadingSortableList = new SortableList(columnHeadingSelector, {isHorizontal: true});
|
| 119 |
columnSortableList.getElementName = element => Promise.resolve(element.data('columnName'));
|
119 |
columnHeadingSortableList.getElementName = element => Promise.resolve(element.data('columnName'));
|
| 120 |
|
120 |
|
| - |
|
121 |
document.addEventListener(SortableList.EVENTS.elementDrag, event => {
|
| - |
|
122 |
const reportOrderColumn = event.target.closest(`${columnHeadingSelector} ${reportSelectors.regions.columnHeader}`);
|
| 121 |
$(document).on(SortableList.EVENTS.DRAG, `${reportSelectors.regions.report} th[data-column-id]`, (event, info) => {
|
123 |
if (reportOrderColumn) {
|
| 122 |
const reportElement = event.target.closest(reportSelectors.regions.report);
|
124 |
const reportElement = event.target.closest(reportSelectors.regions.report);
|
| - |
|
125 |
const {columnPosition} = reportOrderColumn.dataset;
|
| - |
|
126 |
|
| 123 |
const columnPosition = info.element.data('columnPosition');
|
127 |
// Select target position, shift table columns to match.
|
| 124 |
const targetColumnPosition = info.targetNextElement.data('columnPosition');
|
128 |
const targetColumnPosition = event.detail.targetNextElement.data('columnPosition');
|
| - |
|
129 |
|
| 125 |
|
130 |
const reportTableRows = reportElement.querySelectorAll(`${reportSelectors.regions.reportTable} tbody tr`);
|
| 126 |
$(reportElement).find('tbody tr').each(function() {
|
131 |
reportTableRows.forEach(reportTableRow => {
|
| 127 |
const cell = $(this).children(`td.c${columnPosition - 1}`)[0];
|
132 |
const reportTableRowCell = reportTableRow.querySelector(`td.c${columnPosition - 1}`);
|
| 128 |
if (targetColumnPosition) {
|
133 |
if (targetColumnPosition) {
|
| 129 |
var beforeCell = $(this).children(`td.c${targetColumnPosition - 1}`)[0];
|
134 |
const reportTableRowCellTarget = reportTableRow.querySelector(`td.c${targetColumnPosition - 1}`);
|
| 130 |
this.insertBefore(cell, beforeCell);
|
135 |
reportTableRow.insertBefore(reportTableRowCell, reportTableRowCellTarget);
|
| 131 |
} else {
|
136 |
} else {
|
| - |
|
137 |
reportTableRow.appendChild(reportTableRowCell);
|
| 132 |
this.appendChild(cell);
|
138 |
}
|
| 133 |
}
|
139 |
});
|
| 134 |
});
|
140 |
}
|
| Línea 135... |
Línea 141... |
| 135 |
});
|
141 |
});
|
| - |
|
142 |
|
| 136 |
|
143 |
document.addEventListener(SortableList.EVENTS.elementDrop, event => {
|
| 137 |
$(document).on(SortableList.EVENTS.DROP, `${reportSelectors.regions.report} th[data-column-id]`, (event, info) => {
|
144 |
const reportOrderColumn = event.target.closest(`${columnHeadingSelector} ${reportSelectors.regions.columnHeader}`);
|
| - |
|
145 |
if (reportOrderColumn && event.detail.positionChanged) {
|
| 138 |
if (info.positionChanged) {
|
146 |
const pendingPromise = new Pending('core_reportbuilder/columns:reorder');
|
| 139 |
const pendingPromise = new Pending('core_reportbuilder/columns:reorder');
|
- |
|
| 140 |
const reportElement = event.target.closest(reportSelectors.regions.report);
|
- |
|
| 141 |
const columnId = info.element.data('columnId');
|
147 |
|
| Línea 142... |
Línea 148... |
| 142 |
const columnName = info.element.data('columnName');
|
148 |
const reportElement = reportOrderColumn.closest(reportSelectors.regions.report);
|
| 143 |
const columnPosition = info.element.data('columnPosition');
|
149 |
const {columnId, columnPosition, columnName} = reportOrderColumn.dataset;
|
| - |
|
150 |
|
| 144 |
|
151 |
// Select target position, if moving to the end then count number of element siblings.
|
| 145 |
// Select target position, if moving to the end then count number of element siblings.
|
152 |
let targetColumnPosition = event.detail.targetNextElement.data('columnPosition')
|
| 146 |
let targetColumnPosition = info.targetNextElement.data('columnPosition') || info.element.siblings().length + 2;
|
153 |
|| event.detail.element.siblings().length + 2;
|
| Línea 147... |
Línea 154... |
| 147 |
if (targetColumnPosition > columnPosition) {
|
154 |
if (targetColumnPosition > columnPosition) {
|
| Línea 161... |
Línea 168... |
| 161 |
}
|
168 |
}
|
| 162 |
});
|
169 |
});
|
| Línea 163... |
Línea 170... |
| 163 |
|
170 |
|
| 164 |
// Initialize inplace editable listeners for column aggregation.
|
171 |
// Initialize inplace editable listeners for column aggregation.
|
| 165 |
document.addEventListener(inplaceEditableEvents.elementUpdated, event => {
|
- |
|
| 166 |
|
172 |
document.addEventListener(inplaceEditableEvents.elementUpdated, event => {
|
| 167 |
const columnAggregation = event.target.closest('[data-itemtype="columnaggregation"]');
|
173 |
const columnAggregation = event.target.closest('[data-itemtype="columnaggregation"]');
|
| 168 |
if (columnAggregation) {
|
174 |
if (columnAggregation) {
|
| 169 |
const pendingPromise = new Pending('core_reportbuilder/columns:aggregate');
|
175 |
const pendingPromise = new Pending('core_reportbuilder/columns:aggregate');
|
| 170 |
const reportElement = columnAggregation.closest(reportSelectors.regions.report);
|
176 |
const reportElement = columnAggregation.closest(reportSelectors.regions.report);
|