From: Dylan Whyte <d.whyte@proxmox.com>
To: Proxmox Backup Server development discussion
<pbs-devel@lists.proxmox.com>, Oguz Bektas <o.bektas@proxmox.com>
Subject: Re: [pbs-devel] [PATCH v4 backup 1/2] ui: add 'join info' copy/paste button on datastore summary
Date: Wed, 31 Mar 2021 12:51:46 +0200 [thread overview]
Message-ID: <adb5e561-562f-dfcb-e690-edaceb76fffb@proxmox.com> (raw)
In-Reply-To: <20210331103540.466071-1-o.bektas@proxmox.com>
Hi,
I've just made one extra note to remove the "Datastore name" textfield
update, as this field no longer exists. (Sorry, this is my bad for not
seeing this during our off-list discussion).
Otherwise all is working perfectly.
Reviewed-By: Dylan Whyte<d.whyte@proxmox.com>
Tested-By: Dylan Whyte<d.whyte@proxmox.com>
On 3/31/21 12:35 PM, Oguz Bektas wrote:
> shows info about the datastore:
> - fingerprint
> - datastore name
> - hostname
>
> and creates the base64-encoded json blob to be pasted into Remote -> Add
> menu.
>
> Signed-off-by: Oguz Bektas <o.bektas@proxmox.com>
> ---
> www/Makefile | 1 +
> www/datastore/Summary.js | 35 ++++++++++++++-
> www/window/DataStoreJoin.js | 88 +++++++++++++++++++++++++++++++++++++
> 3 files changed, 123 insertions(+), 1 deletion(-)
> create mode 100644 www/window/DataStoreJoin.js
>
> diff --git a/www/Makefile b/www/Makefile
> index 1790273f..61bb6e02 100644
> --- a/www/Makefile
> +++ b/www/Makefile
> @@ -61,6 +61,7 @@ JSSRC= \
> window/BackupGroupChangeOwner.js \
> window/CreateDirectory.js \
> window/DataStoreEdit.js \
> + window/DataStoreJoin.js \
> window/FileBrowser.js \
> window/NotesEdit.js \
> window/RemoteEdit.js \
> diff --git a/www/datastore/Summary.js b/www/datastore/Summary.js
> index 25a7b6e5..6a74155a 100644
> --- a/www/datastore/Summary.js
> +++ b/www/datastore/Summary.js
> @@ -185,7 +185,40 @@ Ext.define('PBS.DataStoreSummary', {
> padding: 5,
> },
>
> - tbar: ['->', { xtype: 'proxmoxRRDTypeSelector' }],
> + tbar: [
> + {
> + xtype: 'button',
> + text: gettext('Show Datastore Information'),
> + handler: function() {
> + let me = this;
> + let panel = me.up('panel');
> + Proxmox.Utils.API2Request({
> + url: '/api2/extjs/nodes/localhost/status',
> + method: 'GET',
> + waitMsgTarget: panel,
> + failure: function(e) {
> + console.log(e);
> + },
> + success: function(response) {
> + let fingerprint = response.result.data.info.fingerprint;
> + let hostname = window.location.hostname;
> + let datastore = panel.datastore;
> + Ext.create('PBS.JoinInfoWindow', {
> + joinInfo: {
> + ipAddress: hostname,
> + fingerprint: fingerprint,
> + datastore: datastore,
> + },
> + }).show();
> + },
> + });
> + },
> + },
> + '->',
> + {
> + xtype: 'proxmoxRRDTypeSelector',
> + },
> + ],
>
> items: [
> {
> diff --git a/www/window/DataStoreJoin.js b/www/window/DataStoreJoin.js
> new file mode 100644
> index 00000000..bb009cc4
> --- /dev/null
> +++ b/www/window/DataStoreJoin.js
> @@ -0,0 +1,88 @@
> +Ext.define('PBS.JoinInfoWindow', {
> + extend: 'Ext.window.Window',
> + modal: true,
> + width: 600,
> + title: gettext('Datastore Join Information'),
> + mixins: ['Proxmox.Mixin.CBind'],
> + joinInfo: {
> + ipAddress: undefined,
> + fingerprint: undefined,
> + datastore: undefined,
> + },
> + layout: 'form',
> + bodyPadding: '10 0',
> + items: [
> + {
> + xtype: 'container',
> + layout: 'form',
> + border: false,
> + padding: '0 10 10 10',
> + items: [
> + {
> + xtype: 'textfield',
> + fieldLabel: gettext('Fingerprint'),
> + inputId: 'fingerprintField',
> + cbind: {
> + value: '{joinInfo.fingerprint}',
> + },
> + editable: false,
> + },
> + {
> + xtype: 'textfield',
> + fieldLabel: gettext('Hostname'),
> + editable: true,
> + inputId: 'hostnameField',
> + cbind: {
> + value: '{joinInfo.ipAddress}',
> + },
> + },
> + {
> + xtype: 'textfield',
> + fieldLabel: gettext('Datastore Name'),
> + inputId: 'datastoreField',
> + cbind: {
> + value: '{joinInfo.datastore}',
> + },
> + editable: false,
> + },
This should also be pulled out, since this field is no longer present.
> + {
> + xtype: 'textarea',
> + inputId: 'SerializedJoinInfo',
> + fieldLabel: gettext('Join Information'),
> + grow: true,
> + editable: false,
> + cbind: {
> + joinInfo: '{joinInfo}',
> + },
> + listeners: {
> + afterrender: function(field) {
> + var jsons = Ext.JSON.encode(field.joinInfo);
> + var base64s = Ext.util.Base64.encode(jsons);
> + field.setValue(base64s);
> + },
> + },
> + },
> + ],
> + },
> + ],
> + buttons: [
> + {
> + xtype: 'button',
> + iconCls: 'fa fa-clipboard',
> + handler: function(b) {
> + var el = document.getElementById('SerializedJoinInfo');
> + el.select();
> + document.execCommand("copy");
> + },
> + text: gettext('Copy'),
> + },
> + {
> + text: gettext('Ok'),
> + handler: function() {
> + this.up('window').close();
> + },
> + },
> + ],
> +});
> +
> +
prev parent reply other threads:[~2021-03-31 10:51 UTC|newest]
Thread overview: 3+ messages / expand[flat|nested] mbox.gz Atom feed top
2021-03-31 10:35 Oguz Bektas
2021-03-31 10:35 ` [pbs-devel] [PATCH v4 backup 2/2] ui: add textarea in remote and menu for pasting json blob Oguz Bektas
2021-03-31 10:51 ` Dylan Whyte [this message]
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=adb5e561-562f-dfcb-e690-edaceb76fffb@proxmox.com \
--to=d.whyte@proxmox.com \
--cc=o.bektas@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