From 9693cfe5382c04b1173ab9970f97d8a752e7f1cb Mon Sep 17 00:00:00 2001 From: nathan Date: Wed, 23 Mar 2022 13:28:15 -0600 Subject: [PATCH] Switch nextmatch print & select all to using Et2Dialog --- .../et2_dataview_controller_selection.ts | 67 +++++++++++-------- api/js/etemplate/et2_extension_nextmatch.ts | 20 +++--- api/js/jsapi/egw_app.ts | 6 +- api/templates/default/nm_print_dialog.xet | 2 +- 4 files changed, 56 insertions(+), 39 deletions(-) diff --git a/api/js/etemplate/et2_dataview_controller_selection.ts b/api/js/etemplate/et2_dataview_controller_selection.ts index 8836d66402..4215fa46f7 100644 --- a/api/js/etemplate/et2_dataview_controller_selection.ts +++ b/api/js/etemplate/et2_dataview_controller_selection.ts @@ -17,17 +17,17 @@ import {egw} from "../jsapi/egw_global"; import {et2_bounds} from "./et2_core_common"; -import {et2_dialog} from "./et2_widget_dialog"; -import {et2_createWidget} from "./et2_core_widget"; import {et2_dataview_rowAOI} from "./et2_dataview_view_aoi"; +import {egwActionObjectInterface} from "../egw_action/egw_action.js"; import { - egwActionObjectInterface -} from "../egw_action/egw_action.js"; -import { - EGW_AO_SHIFT_STATE_BLOCK, EGW_AO_SHIFT_STATE_MULTI, - EGW_AO_STATE_FOCUSED, EGW_AO_STATE_NORMAL, EGW_AO_STATE_SELECTED + EGW_AO_SHIFT_STATE_BLOCK, + EGW_AO_SHIFT_STATE_MULTI, + EGW_AO_STATE_FOCUSED, + EGW_AO_STATE_NORMAL, + EGW_AO_STATE_SELECTED } from "../egw_action/egw_action_constants.js"; import {egwBitIsSet, egwSetBit} from "../egw_action/egw_action_common.js"; +import {Et2Dialog} from "./Et2Dialog/Et2Dialog"; /** * The selectioManager is internally used by the et2_dataview_controller class @@ -673,50 +673,63 @@ export class et2_dataview_selectionManager var range_index = 0; var range_count = queryRanges.length; var cont = true; - var fetchPromise = new Promise(function (resolve) { + var fetchPromise = new Promise(function(resolve) + { resolve(); }); // Found after dialog loads var progressbar; - var parent = et2_dialog._create_parent(); - var dialog = et2_createWidget("dialog", { + let dialog = new Et2Dialog(this._context._widget.egw()); + dialog.transformAttributes({ callback: - // Abort the long task if they canceled the data load + // Abort the long task if they canceled the data load function() {cont = false}, - template: egw.webserverUrl+'/api/templates/default/long_task.xet', + template: egw.webserverUrl + '/api/templates/default/long_task.xet', message: egw.lang('Loading'), title: egw.lang('please wait...'), - buttons: [{"button_id": et2_dialog.CANCEL_BUTTON,"text": egw.lang('cancel'),id: 'dialog[cancel]',image: 'cancel'}], + buttons: [{ + button_id: Et2Dialog.CANCEL_BUTTON, + label: egw.lang('cancel'), + id: 'dialog[cancel]', + image: 'cancel' + }], width: 300 - }, parent); - jQuery(dialog.template.DOMContainer).on('load', function() { + }); + (this._context._widget.getDOMNode() || document.body).appendChild(dialog); + dialog.addEventListener('load', function() + { // Get access to template widgets progressbar = dialog.template.widgetContainer.getWidgetById('progressbar'); }); - for (var i = 0; i < queryRanges.length; i++) + for(var i = 0; i < queryRanges.length; i++) { - if(record_count + (queryRanges[i].bottom - queryRanges[i].top+1) > that.MAX_SELECTION) + if(record_count + (queryRanges[i].bottom - queryRanges[i].top + 1) > that.MAX_SELECTION) { egw.message(egw.lang('Too many rows selected.
Select all, or less than %1 rows', that.MAX_SELECTION)); break; } else { - record_count += (queryRanges[i].bottom - queryRanges[i].top+1); - fetchPromise = fetchPromise.then((function () + record_count += (queryRanges[i].bottom - queryRanges[i].top + 1); + fetchPromise = fetchPromise.then((function() { // Check for abort - if(!cont) return; + if(!cont) + { + return; + } - return new Promise(function(resolve) { - that._queryRangeCallback.call(that._context, this, - function (_order) { - for (var j = 0; j < _order.length; j++) + return new Promise(function(resolve) + { + that._queryRangeCallback.call(that._context, this, + function(_order) { - // Check for no_actions flag via data since entry isn't there/available - var data = egw.dataGetUIDdata(_order[j]); + for(var j = 0; j < _order.length; j++) + { + // Check for no_actions flag via data since entry isn't there/available + var data = egw.dataGetUIDdata(_order[j]); if(!data || data && data.data && !data.data.no_actions) { var entry = this._getRegisteredRowsEntry(_order[j]); @@ -732,7 +745,7 @@ export class et2_dataview_selectionManager } } fetchPromise.finally(function() { - dialog.destroy(); + dialog.close(); }); } diff --git a/api/js/etemplate/et2_extension_nextmatch.ts b/api/js/etemplate/et2_extension_nextmatch.ts index 952b8724ef..196a49a53b 100644 --- a/api/js/etemplate/et2_extension_nextmatch.ts +++ b/api/js/etemplate/et2_extension_nextmatch.ts @@ -74,6 +74,7 @@ import {egw} from "../jsapi/egw_global"; import {et2_compileLegacyJS} from "./et2_core_legacyJSFunctions"; import {egwIsMobile} from "../egw_action/egw_action_common.js"; import Sortable from 'sortablejs/modular/sortable.complete.esm.js'; +import {Et2Dialog} from "./Et2Dialog/Et2Dialog"; //import {et2_selectAccount} from "./et2_widget_SelectAccount"; @@ -2954,9 +2955,9 @@ export class et2_nextmatch extends et2_DOMWidget implements et2_IResizeable, et2 this.set_columns(jQuery.extend([], this.egw().preference(pref, app))); } - const callback = jQuery.proxy(function(button, value) + const callback = function(button, value) { - if(button === et2_dialog.CANCEL_BUTTON) + if(button === Et2Dialog.CANCEL_BUTTON) { // Give dialog a chance to close, or it will be in the print window.setTimeout(function() @@ -3007,7 +3008,7 @@ export class et2_nextmatch extends et2_DOMWidget implements et2_IResizeable, et2 } // If they want the whole thing, style it as all - if(button === et2_dialog.OK_BUTTON && rows == this.controller._grid.getTotalCount()) + if(button === Et2Dialog.OK_BUTTON && rows == this.controller._grid.getTotalCount()) { // Add the class, gives more reliable sizing this.div.addClass('print'); @@ -3021,7 +3022,7 @@ export class et2_nextmatch extends et2_DOMWidget implements et2_IResizeable, et2 let fetchedCount = 0; let cancel = false; const nm = this; - const dialog = et2_dialog.show_dialog( + const dialog = Et2Dialog.show_dialog( // Abort the long task if they canceled the data load function() { @@ -3033,7 +3034,7 @@ export class et2_nextmatch extends et2_DOMWidget implements et2_IResizeable, et2 }, 0); }, egw.lang('Loading'), egw.lang('please wait...'), {}, [ - {"button_id": et2_dialog.CANCEL_BUTTON, "text": 'cancel', id: 'dialog[cancel]', image: 'cancel'} + {"button_id": Et2Dialog.CANCEL_BUTTON, label: 'cancel', id: 'dialog[cancel]', image: 'cancel'} ] ); @@ -3080,13 +3081,13 @@ export class et2_nextmatch extends et2_DOMWidget implements et2_IResizeable, et2 jQuery('.egwGridView_scrollarea', this.div).css('height', 'auto'); // Grid needs to redraw before it can be printed, so wait - window.setTimeout(jQuery.proxy(function() + window.setTimeout(function() { - dialog.destroy(); + dialog.close(); // Should be OK to print now defer.resolve(); - }, nm), et2_dataview_grid.ET2_GRID_INVALIDATE_TIMEOUT); + }.bind(nm), et2_dataview_grid.ET2_GRID_INVALIDATE_TIMEOUT); } @@ -3116,7 +3117,7 @@ export class et2_nextmatch extends et2_DOMWidget implements et2_IResizeable, et2 defer.resolve(); }, 0); } - }, this); + }.bind(this); var value = { content: { row_count: Math.min(100, total), @@ -3153,6 +3154,7 @@ export class et2_nextmatch extends et2_DOMWidget implements et2_IResizeable, et2 const tab = this.get_tab_info(); // Get title for print dialog from settings or tab, if available const title = this.options.settings.label ? this.options.settings.label : (tab ? tab.label : ''); + debugger; const dialog = et2_createWidget("dialog", { // If you use a template, the second parameter will be the value of the template, as if it were submitted. callback: callback, // return false to prevent dialog closing diff --git a/api/js/jsapi/egw_app.ts b/api/js/jsapi/egw_app.ts index b36442d62e..fc704a3f53 100644 --- a/api/js/jsapi/egw_app.ts +++ b/api/js/jsapi/egw_app.ts @@ -1901,7 +1901,8 @@ export abstract class EgwApp var dialog = function(_content, _callback?) { - return et2_createWidget("dialog", { + let dialog = new Et2Dialog(this.egw); + dialog.transformAttributes({ callback: function(_button_id, _value) { if(typeof _callback == "function") @@ -1912,7 +1913,7 @@ export abstract class EgwApp title: egw.lang('Backup/Restore'), buttons: [{ "button_id": 'close', - "text": egw.lang('Close'), + "label": egw.lang('Close'), id: 'dialog[close]', image: 'cancelled', "default": true @@ -1926,6 +1927,7 @@ export abstract class EgwApp class: "pgp_backup_restore", modal: true }); + return dialog; }; if(typeof mailvelope != 'undefined') { diff --git a/api/templates/default/nm_print_dialog.xet b/api/templates/default/nm_print_dialog.xet index 9bd3c96637..1e860e28cc 100644 --- a/api/templates/default/nm_print_dialog.xet +++ b/api/templates/default/nm_print_dialog.xet @@ -5,7 +5,7 @@