From 2f3107f49a08fe1dfb3b0ff7bd43de119d523dfe Mon Sep 17 00:00:00 2001 From: nathan Date: Wed, 10 Jul 2024 11:08:44 -0600 Subject: [PATCH] Long task dialog improvements - Add 'Skip all' button to skip any further failed tasks - Add button to copy the log --- api/js/etemplate/Et2Button/Et2ButtonCopy.ts | 20 ++++++++++++++++++++ api/js/etemplate/Et2Dialog/Et2Dialog.ts | 19 +++++++++++++++---- api/js/etemplate/etemplate2.ts | 1 + api/templates/default/long_task.xet | 2 ++ 4 files changed, 38 insertions(+), 4 deletions(-) create mode 100644 api/js/etemplate/Et2Button/Et2ButtonCopy.ts diff --git a/api/js/etemplate/Et2Button/Et2ButtonCopy.ts b/api/js/etemplate/Et2Button/Et2ButtonCopy.ts new file mode 100644 index 0000000000..135cb1e811 --- /dev/null +++ b/api/js/etemplate/Et2Button/Et2ButtonCopy.ts @@ -0,0 +1,20 @@ +/** + * EGroupware eTemplate2 - Button widget + * + * @license http://opensource.org/licenses/gpl-license.php GPL - GNU General Public License + * @package etemplate + * @subpackage api + * @link https://www.egroupware.org + * @author Nathan Gray + */ + + +import {Et2Widget} from "../Et2Widget/Et2Widget"; +import {SlCopyButton} from "@shoelace-style/shoelace"; +import {customElement} from "lit/decorators/custom-element.js"; + +@customElement('et2-button-copy') +export class Et2Button extends Et2Widget(SlCopyButton) +{ + +} \ No newline at end of file diff --git a/api/js/etemplate/Et2Dialog/Et2Dialog.ts b/api/js/etemplate/Et2Dialog/Et2Dialog.ts index 5718c03d1d..77b7e4c3f3 100644 --- a/api/js/etemplate/Et2Dialog/Et2Dialog.ts +++ b/api/js/etemplate/Et2Dialog/Et2Dialog.ts @@ -834,10 +834,10 @@ export class Et2Dialog extends Et2Widget(SlDialog) this._template_widget.DOMContainer.setAttribute('id', this.__template.replace(/^(.*\/)?([^/]+?)(\.xet)?(\?.*)?$/, '$2').replace(/\./g, '-')); // Look for buttons after load - this._contentNode.addEventListener("load", this._adoptTemplateButtons); + this._template_promise.then(() => {this._adoptTemplateButtons();}); // Default autofocus to first input if autofocus is not set - this._contentNode.addEventListener("load", this._setDefaultAutofocus); + this._template_promise.then(() => {this._setDefaultAutofocus();}); // Need to update to pick up changes this.requestUpdate(); @@ -1333,6 +1333,7 @@ export class Et2Dialog extends Et2Widget(SlDialog) let log = null; let progressbar = null; let cancel = false; + let skip_all = false; let totals = { success: 0, skipped: 0, @@ -1358,6 +1359,11 @@ export class Et2Dialog extends Et2Widget(SlDialog) log.appendChild(div); totals.failed++; + if(skip_all) + { + totals.skipped++; + break; + } // Ask to retry / ignore / abort let retry = new Et2Dialog(dialog.egw()); @@ -1372,7 +1378,11 @@ export class Et2Dialog extends Et2Widget(SlDialog) break; case 'dialog[skip]': totals.skipped++; - break + break; + case 'dialog[skip_all]': + totals.skipped++; + skip_all = true; + break; default: // Try again with previous index retry_index = index - 1; @@ -1384,7 +1394,8 @@ export class Et2Dialog extends Et2Widget(SlDialog) // These ones will use the callback, just like normal {label: dialog.egw().lang("Abort"), id: 'dialog[cancel]'}, {label: dialog.egw().lang("Retry"), id: 'dialog[retry]'}, - {label: dialog.egw().lang("Skip"), id: 'dialog[skip]', default: true} + {label: dialog.egw().lang("Skip"), id: 'dialog[skip]', default: true}, + {label: dialog.egw().lang("Skip all"), id: 'dialog[skip_all]'} ], dialog_type: Et2Dialog.ERROR_MESSAGE }); diff --git a/api/js/etemplate/etemplate2.ts b/api/js/etemplate/etemplate2.ts index d1128a3c4f..4106bdac7d 100644 --- a/api/js/etemplate/etemplate2.ts +++ b/api/js/etemplate/etemplate2.ts @@ -31,6 +31,7 @@ import './Layout/Et2Tabs/Et2TabsMobile'; import './Et2Avatar/Et2Avatar'; import './Et2Avatar/Et2AvatarGroup'; import './Et2Button/Et2Button'; +import './Et2Button/Et2ButtonCopy'; import './Et2Button/Et2ButtonIcon'; import './Et2Button/Et2ButtonScroll'; import './Et2Button/Et2ButtonTimestamper'; diff --git a/api/templates/default/long_task.xet b/api/templates/default/long_task.xet index 82bf757498..57d9446a01 100644 --- a/api/templates/default/long_task.xet +++ b/api/templates/default/long_task.xet @@ -10,6 +10,8 @@ + + #long_task > div {