From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from firstgate.proxmox.com (firstgate.proxmox.com [212.224.123.68]) by lore.proxmox.com (Postfix) with ESMTPS id 2EFFC1FF38F for ; Tue, 4 Jun 2024 14:49:53 +0200 (CEST) Received: from firstgate.proxmox.com (localhost [127.0.0.1]) by firstgate.proxmox.com (Proxmox) with ESMTP id DB8CE11BFB; Tue, 4 Jun 2024 14:50:20 +0200 (CEST) From: Gabriel Goller To: pbs-devel@lists.proxmox.com Date: Tue, 4 Jun 2024 14:50:05 +0200 Message-ID: <20240604125014.210321-3-g.goller@proxmox.com> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20240604125014.210321-1-g.goller@proxmox.com> References: <20240604125014.210321-1-g.goller@proxmox.com> MIME-Version: 1.0 X-SPAM-LEVEL: Spam detection results: 0 AWL -0.062 Adjusted score from AWL reputation of From: address BAYES_00 -1.9 Bayes spam probability is 0 to 1% DMARC_MISSING 0.1 Missing DMARC policy KAM_DMARC_STATUS 0.01 Test Rule for DKIM or SPF Failure with Strict Alignment SPF_HELO_NONE 0.001 SPF: HELO does not publish an SPF Record SPF_PASS -0.001 SPF: sender matches SPF record T_SCC_BODY_TEXT_LINE -0.01 - URIBL_BLOCKED 0.001 ADMINISTRATOR NOTICE: The query to URIBL was blocked. See http://wiki.apache.org/spamassassin/DnsBlocklists#dnsbl-block for more information. [mozilla.org] Subject: [pbs-devel] [PATCH widget-toolkit v2 2/5] form: add support for multiline textarea X-BeenThere: pbs-devel@lists.proxmox.com X-Mailman-Version: 2.1.29 Precedence: list List-Id: Proxmox Backup Server development discussion List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Reply-To: Proxmox Backup Server development discussion Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Errors-To: pbs-devel-bounces@lists.proxmox.com Sender: "pbs-devel" This adds support for a editable multiline textarea in the ObjectGrid. Now we can add a textarea row, which will open a textarea popup, and encode the multi-line text into an URI using encodeURI/decodeURI [0]. [0]: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/encodeURI Signed-off-by: Gabriel Goller --- src/Makefile | 1 + src/form/TextAreaField.js | 60 +++++++++++++++++++++++++++++++++++++++ src/grid/ObjectGrid.js | 29 +++++++++++++++++++ 3 files changed, 90 insertions(+) create mode 100644 src/form/TextAreaField.js diff --git a/src/Makefile b/src/Makefile index 3c2fd4b..aa81bef 100644 --- a/src/Makefile +++ b/src/Makefile @@ -31,6 +31,7 @@ JSSRC= \ form/ExpireDate.js \ form/IntegerField.js \ form/TextField.js \ + form/TextAreaField.js \ form/VlanField.js \ form/DateTimeField.js \ form/Checkbox.js \ diff --git a/src/form/TextAreaField.js b/src/form/TextAreaField.js new file mode 100644 index 0000000..a44279a --- /dev/null +++ b/src/form/TextAreaField.js @@ -0,0 +1,60 @@ +Ext.define('Proxmox.form.field.Textareafield', { + extend: 'Ext.form.field.TextArea', + alias: ['widget.proxmoxtextareafield'], + + config: { + skipEmptyText: true, + deleteEmpty: false, + trimValue: false, + editable: true, + width: 600, + height: 400, + scrollable: 'y', + }, + + setValue: function(value) { + // We want to edit the decoded version of the text + this.callParent([decodeURI(value)]); + }, + + processRawValue: function(value) { + // The field could contain multi-line values + return encodeURI(value); + }, + + getSubmitData: function() { + let me = this, + data = null, + val; + if (!me.disabled && me.submitValue && !me.isFileUpload()) { + val = me.getSubmitValue(); + if (val !== null) { + data = {}; + data[me.getName()] = val; + } else if (me.getDeleteEmpty()) { + data = {}; + data.delete = me.getName(); + } + } + return data; + }, + + getSubmitValue: function() { + let me = this; + + let value = this.processRawValue(this.getRawValue()); + if (me.getTrimValue() && typeof value === 'string') { + value = value.trim(); + } + if (value !== '') { + return value; + } + + return me.getSkipEmptyText() ? null: value; + }, + + setAllowBlank: function(allowBlank) { + this.allowBlank = allowBlank; + this.validate(); + }, +}); diff --git a/src/grid/ObjectGrid.js b/src/grid/ObjectGrid.js index b355d6d..c823e21 100644 --- a/src/grid/ObjectGrid.js +++ b/src/grid/ObjectGrid.js @@ -182,6 +182,35 @@ Ext.define('Proxmox.grid.ObjectGrid', { }; }, + add_textareafield_row: function(name, text, opts) { + let me = this; + + opts = opts || {}; + me.rows = me.rows || {}; + + me.rows[name] = { + required: true, + defaultValue: opts.defaultValue, + header: text, + renderer: function(value) { + return decodeURI(value); + }, + editor: { + xtype: 'proxmoxWindowEdit', + subject: text, + onlineHelp: opts.onlineHelp, + fieldDefaults: { + labelWidth: opts.labelWidth || 600, + }, + items: { + xtype: 'proxmoxtextareafield', + name: name, + }, + }, + }; + }, + + editorConfig: {}, // default config passed to editor run_editor: function() { -- 2.43.0 _______________________________________________ pbs-devel mailing list pbs-devel@lists.proxmox.com https://lists.proxmox.com/cgi-bin/mailman/listinfo/pbs-devel