public inbox for pbs-devel@lists.proxmox.com
 help / color / mirror / Atom feed
From: Lukas Wagner <l.wagner@proxmox.com>
To: Proxmox Backup Server development discussion
	<pbs-devel@lists.proxmox.com>, Markus Frank <m.frank@proxmox.com>
Subject: Re: [pbs-devel] [PATCH proxmox-backup 2/2] ui: add Remove button for DirectoryList
Date: Tue, 10 Oct 2023 10:43:20 +0200	[thread overview]
Message-ID: <4e7d4f89-7dc6-4065-9089-0d74dc0d369f@proxmox.com> (raw)
In-Reply-To: <20231010063926.2248-2-m.frank@proxmox.com>

Comments inline.

On 10/10/23 08:39, Markus Frank wrote:
> With this patch it is possible to remove systemd mount units via the webui.
> 
> Signed-off-by: Markus Frank <m.frank@proxmox.com>
> ---
>   www/DirectoryList.js | 79 ++++++++++++++++++++++++++++++++++++++++++++
>   1 file changed, 79 insertions(+)
> 
> diff --git a/www/DirectoryList.js b/www/DirectoryList.js
> index 00531fd0..53aa76cc 100644
> --- a/www/DirectoryList.js
> +++ b/www/DirectoryList.js
> @@ -7,6 +7,15 @@ Ext.define('PBS.admin.Directorylist', {
>   
>       emptyText: gettext('No Mount-Units found'),
>   
> +    viewModel: {
> +	data: {
> +	    path: '',
> +	},
> +	formulas: {
> +	    dirName: (get) => get('path')?.replace('/mnt/datastore/', '') || undefined,
> +	},
> +    },
> +
>       controller: {
>   	xclass: 'Ext.app.ViewController',
>   
> @@ -21,6 +30,27 @@ Ext.define('PBS.admin.Directorylist', {
>   	    }).show();
>   	},
>   
> +	removeDirectory: function() {
> +	    let me = this;
> +	    let vm = me.getViewModel();
> +
> +	    const dirName = vm.get('dirName');
Nit: As per our JS style guidelines I'd use 'let' here. For objects,
'const' only prohibits reassignemnt, but not modification of the
actual object.

> +
> +	    if (!dirName) {
> +		throw "no directory name specified";
> +	    }
> +
> +	    Ext.create('Proxmox.window.SafeDestroy', {
> +		url: `/nodes/localhost/disks/directory/${dirName}`,
> +		item: { id: dirName },
> +		showProgress: true,
> +		taskName: 'dirremove',
> +		listeners: {
> +		    destroy: () => me.reload(),
> +		},
> +	    }).show();
> +	},
> +
>   	reload: function() {
>   	    let me = this;
>   	    let store = me.getView().getStore();
> @@ -49,6 +79,45 @@ Ext.define('PBS.admin.Directorylist', {
>   	    text: gettext('Create') + ': Directory',
>   	    handler: 'createDirectory',
>   	},
> +	'->',
> +        {
> +            xtype: 'tbtext',
> +            data: {
> +                dirName: undefined,
> +            },
> +            bind: {
> +                data: {
> +                    dirName: "{dirName}",
> +                },
> +            },
> +            tpl: [
> +                '<tpl if="dirName">',
> +                gettext('Directory') + ' {dirName}:',
> +                '<tpl else>',
> +                Ext.String.format(gettext('No {0} selected'), gettext('directory')),
> +                '</tpl>',
> +            ],
> +	},
Indentation is off here (only spaces).

> +	{
> +	    text: gettext('More'),
> +	    iconCls: 'fa fa-bars',
> +	    disabled: true,
> +	    bind: {
> +		disabled: '{!dirName}',
> +	    },
> +	    menu: [
> +		{
> +		    text: gettext('Remove'),
> +		    itemId: 'remove',
> +		    iconCls: 'fa fa-fw fa-trash-o',
> +		    handler: 'removeDirectory',
> +		    disabled: true,
> +		    bind: {
> +			disabled: '{!dirName}',
> +		    },
> +		},
> +	    ],
> +	},
>       ],
>   
>       columns: [
> @@ -79,6 +148,16 @@ Ext.define('PBS.admin.Directorylist', {
>   	},
>       ],
>   
> +    listeners: {
> +	activate: "reload",
> +	selectionchange: function(model, selected) {
> +	    let me = this;
> +	    let vm = me.getViewModel();
> +
> +	    vm.set('path', selected[0]?.data.path || '');
> +	},
> +    },
> +
>       store: {
>   	fields: ['path', 'device', 'filesystem', 'options', 'unitfile'],
>   	proxy: {

A high-level comment about the UI changes:
In most places in our UI, we have a dedicated 'Remove' button right next
to the 'Add/Create' and 'Edit' button:

[Add] [Edit] [Remove]

We don't need 'Edit' here, but why not just add the button right next
to the 'Create: Directory' button?
What's the rationale of  moving the remove button to a menu on the
right-hand side?

-- 
- Lukas




  reply	other threads:[~2023-10-10  8:43 UTC|newest]

Thread overview: 6+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2023-10-10  6:39 [pbs-devel] [PATCH proxmox-backup 1/2] cli: add option to remove systemd mount unit Markus Frank
2023-10-10  6:39 ` [pbs-devel] [PATCH proxmox-backup 2/2] ui: add Remove button for DirectoryList Markus Frank
2023-10-10  8:43   ` Lukas Wagner [this message]
2023-10-10  9:05     ` Markus Frank
2023-10-10  9:13       ` Lukas Wagner
2023-10-10  8:43 ` [pbs-devel] [PATCH proxmox-backup 1/2] cli: add option to remove systemd mount unit Lukas Wagner

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=4e7d4f89-7dc6-4065-9089-0d74dc0d369f@proxmox.com \
    --to=l.wagner@proxmox.com \
    --cc=m.frank@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
Service provided by Proxmox Server Solutions GmbH | Privacy | Legal