From: Dominik Csapak <d.csapak@proxmox.com>
To: pbs-devel@lists.proxmox.com
Subject: Re: [pbs-devel] [PATCH v3 proxmox-widget-toolbox 1/9] safe-destroy: move SafeDestroy from pve-manager here
Date: Fri, 11 Sep 2020 13:07:44 +0200 [thread overview]
Message-ID: <95d4b25b-987d-a24e-8765-660a3c9db37c@proxmox.com> (raw)
In-Reply-To: <20200828084658.22057-2-h.laimer@proxmox.com>
On 8/28/20 10:46 AM, Hannes Laimer wrote:
> Signed-off-by: Hannes Laimer <h.laimer@proxmox.com>
> ---
> the file was just moved, nothing except the define changed ('PVE.window.SafeDestroy' -> 'Proxmox.window.SafeDestroy')
that's actually not true, you changed some things, e.g. whitespace and
trailing commas
which is ok (since its required for linting), but please mention such things
also you missed a place for fixing eslint (so i could not
build the package after the series was applied)
comment for this inline
>
> src/Makefile | 1 +
> src/window/SafeDestroy.js | 194 ++++++++++++++++++++++++++++++++++++++
> 2 files changed, 195 insertions(+)
> create mode 100644 src/window/SafeDestroy.js
>
> diff --git a/src/Makefile b/src/Makefile
> index 12dda30..ea71647 100644
> --- a/src/Makefile
> +++ b/src/Makefile
> @@ -43,6 +43,7 @@ JSSRC= \
> panel/GaugeWidget.js \
> window/Edit.js \
> window/PasswordEdit.js \
> + window/SafeDestroy.js \
> window/TaskViewer.js \
> window/LanguageEdit.js \
> window/DiskSmart.js \
> diff --git a/src/window/SafeDestroy.js b/src/window/SafeDestroy.js
> new file mode 100644
> index 0000000..b1001a8
> --- /dev/null
> +++ b/src/window/SafeDestroy.js
> @@ -0,0 +1,194 @@
> +/* Popup a message window
> + * where the user has to manually enter the resource ID
> + * to enable the destroy button
> + */
> +Ext.define('Proxmox.window.SafeDestroy', {
> + extend: 'Ext.window.Window',
> + alias: 'proxmoxSafeDestroy',
> +
> + title: gettext('Confirm'),
> + modal: true,
> + buttonAlign: 'center',
> + bodyPadding: 10,
> + width: 450,
> + layout: { type: 'hbox' },
> + defaultFocus: 'confirmField',
> + showProgress: false,
> +
> + config: {
> + item: {
> + id: undefined,
> + type: undefined,
> + },
> + url: undefined,
> + params: {},
> + },
> +
> + getParams: function() {
> + var me = this;
> + var purgeCheckbox = me.lookupReference('purgeCheckbox');
> + if (purgeCheckbox.checked) {
> + me.params.purge = 1;
> + }
> + if (Ext.Object.isEmpty(me.params)) {
> + return '';
> + }
> + return '?' + Ext.Object.toQueryString(me.params);
> + },
> +
> + controller: {
> +
> + xclass: 'Ext.app.ViewController',
> +
> + control: {
> + 'field[name=confirm]': {
> + change: function(f, value) {
> + var view = this.getView();
> + var removeButton = this.lookupReference('removeButton');
> + if (value === view.getItem().id.toString()) {
> + removeButton.enable();
> + } else {
> + removeButton.disable();
> + }
> + },
> + specialkey: function(field, event) {
> + var removeButton = this.lookupReference('removeButton');
> + if (!removeButton.isDisabled() && event.getKey() == event.ENTER) {
eslint wants a '===' instead of '==' here
> + removeButton.fireEvent('click', removeButton, event);
> + }
> + },
> + },
> + 'button[reference=removeButton]': {
> + click: function() {
> + var view = this.getView();
> + Proxmox.Utils.API2Request({
> + url: view.getUrl() + view.getParams(),
> + method: 'DELETE',
> + waitMsgTarget: view,
> + failure: function(response, opts) {
> + view.close();
> + Ext.Msg.alert('Error', response.htmlStatus);
> + },
> + success: function(response, options) {
> + var hasProgressBar = !!(view.showProgress &&
> + response.result.data);
> +
> + if (hasProgressBar) {
> + // stay around so we can trigger our close events
> + // when background action is completed
> + view.hide();
> +
> + var upid = response.result.data;
> + var win = Ext.create('Proxmox.window.TaskProgress', {
> + upid: upid,
> + listeners: {
> + destroy: function() {
> + view.close();
> + },
> + },
> + });
> + win.show();
> + } else {
> + view.close();
> + }
> + },
> + });
> + },
> + },
> + },
> + },
> +
> + items: [
> + {
> + xtype: 'component',
> + cls: [Ext.baseCSSPrefix + 'message-box-icon',
> + Ext.baseCSSPrefix + 'message-box-warning',
> + Ext.baseCSSPrefix + 'dlg-icon'],
> + },
> + {
> + xtype: 'container',
> + flex: 1,
> + layout: {
> + type: 'vbox',
> + align: 'stretch',
> + },
> + items: [
> + {
> + xtype: 'component',
> + reference: 'messageCmp',
> + },
> + {
> + itemId: 'confirmField',
> + reference: 'confirmField',
> + xtype: 'textfield',
> + name: 'confirm',
> + labelWidth: 300,
> + hideTrigger: true,
> + allowBlank: false,
> + },
> + {
> + xtype: 'proxmoxcheckbox',
> + name: 'purge',
> + reference: 'purgeCheckbox',
> + boxLabel: gettext('Purge'),
> + checked: false,
> + autoEl: {
> + tag: 'div',
> + 'data-qtip': gettext('Remove from replication and backup jobs'),
> + },
> + },
> + ],
> + },
> + ],
> + buttons: [
> + {
> + reference: 'removeButton',
> + text: gettext('Remove'),
> + disabled: true,
> + },
> + ],
> +
> + initComponent: function() {
> + var me = this;
> +
> + me.callParent();
> +
> + var item = me.getItem();
> +
> + if (!Ext.isDefined(item.id)) {
> + throw "no ID specified";
> + }
> +
> + if (!Ext.isDefined(item.type)) {
> + throw "no VM type specified";
> + }
> +
> + var messageCmp = me.lookupReference('messageCmp');
> + var msg;
> +
> + if (item.type === 'VM') {
> + msg = Proxmox.Utils.format_task_description('qmdestroy', item.id);
> + } else if (item.type === 'CT') {
> + msg = Proxmox.Utils.format_task_description('vzdestroy', item.id);
> + } else if (item.type === 'CephPool') {
> + msg = Proxmox.Utils.format_task_description('cephdestroypool', item.id);
> + } else if (item.type === 'Image') {
> + msg = Proxmox.Utils.format_task_description('unknownimgdel', item.id);
> + } else {
> + throw "unknown item type specified";
> + }
> +
> + messageCmp.setHtml(msg);
> +
> + if (!(item.type === 'VM' || item.type === 'CT')) {
> + let purgeCheckbox = me.lookupReference('purgeCheckbox');
> + purgeCheckbox.setDisabled(true);
> + purgeCheckbox.setHidden(true);
> + }
> +
> + var confirmField = me.lookupReference('confirmField');
> + msg = gettext('Please enter the ID to confirm') +
> + ' (' + item.id + ')';
> + confirmField.setFieldLabel(msg);
> + },
> +});
>
next prev parent reply other threads:[~2020-09-11 11:07 UTC|newest]
Thread overview: 15+ messages / expand[flat|nested] mbox.gz Atom feed top
2020-08-28 8:46 [pbs-devel] [PATCH v3 proxmox-widget-toolbox 0/9] removal of directories in PBS WebUI Hannes Laimer
2020-08-28 8:46 ` [pbs-devel] [PATCH v3 proxmox-widget-toolbox 1/9] safe-destroy: move SafeDestroy from pve-manager here Hannes Laimer
2020-09-11 11:07 ` Dominik Csapak [this message]
2020-08-28 8:46 ` [pbs-devel] [PATCH v3 proxmox-widget-toolbox 2/9] safe-destroy: replace type with purgeable and taskName Hannes Laimer
2020-08-28 8:46 ` [pbs-devel] [PATCH v3 proxmox-widget-toolbox 3/9] safe-destroy: replace var with let/const Hannes Laimer
2020-08-28 8:46 ` [pbs-devel] [PATCH v3 proxmox-widget-toolbox 4/9] safe-destroy: add possibility to show a small note Hannes Laimer
2020-09-11 11:08 ` Dominik Csapak
2020-08-28 8:46 ` [pbs-devel] [PATCH v3 pve-manager 5/9] safe-destroy: use SafeDestroy from proxmox-widget-toolkit Hannes Laimer
2020-08-28 8:46 ` [pbs-devel] [PATCH v3 pve-manager 6/9] remove SafeDestroy from pve-manager Hannes Laimer
2020-08-28 8:46 ` [pbs-devel] [PATCH v3 proxmox-widget-toolbox 7/9] utils: add task description for directory removal Hannes Laimer
2020-08-28 8:46 ` [pbs-devel] [PATCH v3 proxmox-backup 8/9] api2: add name of mount-point to DatastoreMountInfo Hannes Laimer
2020-09-11 11:08 ` Dominik Csapak
2020-08-28 8:46 ` [pbs-devel] [PATCH v3 proxmox-backup 9/9] ui: add remove-button for directories/mount-units Hannes Laimer
2020-09-11 11:08 ` Dominik Csapak
2020-09-11 11:07 ` [pbs-devel] [PATCH v3 proxmox-widget-toolbox 0/9] removal of directories in PBS WebUI Dominik Csapak
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=95d4b25b-987d-a24e-8765-660a3c9db37c@proxmox.com \
--to=d.csapak@proxmox.com \
--cc=pbs-devel@lists.proxmox.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox