From: Dominik Csapak <d.csapak@proxmox.com>
To: pve-devel@lists.proxmox.com
Subject: [pve-devel] [PATCH manager 4/5] ui: change style of ListField
Date: Thu, 17 Nov 2022 15:56:22 +0100 [thread overview]
Message-ID: <20221117145623.661109-5-d.csapak@proxmox.com> (raw)
In-Reply-To: <20221117145623.661109-1-d.csapak@proxmox.com>
and make it more like the 'traffic control' time grid in pbs
Signed-off-by: Dominik Csapak <d.csapak@proxmox.com>
---
www/manager6/dc/RegisteredTagsEdit.js | 6 +-
www/manager6/dc/UserTagAccessEdit.js | 6 +-
www/manager6/form/ListField.js | 86 ++++++++++++++++-----------
3 files changed, 60 insertions(+), 38 deletions(-)
diff --git a/www/manager6/dc/RegisteredTagsEdit.js b/www/manager6/dc/RegisteredTagsEdit.js
index 92e076e0a..75b4f9ba3 100644
--- a/www/manager6/dc/RegisteredTagsEdit.js
+++ b/www/manager6/dc/RegisteredTagsEdit.js
@@ -52,8 +52,10 @@ Ext.define('PVE.dc.RegisteredTagsEdit', {
emptyText: gettext('No Tags defined'),
fieldTitle: gettext('Tag'),
maskRe: PVE.Utils.tagCharRegex,
- height: 200,
- scrollable: true,
+ gridConfig: {
+ height: 200,
+ scrollable: true,
+ },
listeners: {
change: 'tagChange',
},
diff --git a/www/manager6/dc/UserTagAccessEdit.js b/www/manager6/dc/UserTagAccessEdit.js
index 701d1de4f..f22ac9b3d 100644
--- a/www/manager6/dc/UserTagAccessEdit.js
+++ b/www/manager6/dc/UserTagAccessEdit.js
@@ -72,8 +72,10 @@ Ext.define('PVE.dc.UserTagAccessEdit', {
emptyText: gettext('No Tags defined'),
fieldTitle: gettext('Tag'),
maskRe: PVE.Utils.tagCharRegex,
- height: 200,
- scrollable: true,
+ gridConfig: {
+ height: 200,
+ scrollable: true,
+ },
listeners: {
change: 'tagChange',
},
diff --git a/www/manager6/form/ListField.js b/www/manager6/form/ListField.js
index faa8e168b..77e9ebfca 100644
--- a/www/manager6/form/ListField.js
+++ b/www/manager6/form/ListField.js
@@ -1,5 +1,5 @@
Ext.define('PVE.form.ListField', {
- extend: 'Ext.grid.Panel',
+ extend: 'Ext.container.Container',
alias: 'widget.pveListField',
mixins: [
@@ -16,23 +16,18 @@ Ext.define('PVE.form.ListField', {
selectAll: false,
isFormField: true,
deleteEmpty: false,
- selModel: 'checkboxmodel',
-
config: {
deleteEmpty: false,
},
- viewConfig: {
- deferEmptyText: false,
- },
-
setValue: function(list) {
let me = this;
list = Ext.isArray(list) ? list : (list ?? '').split(';');
+ let store = me.lookup('grid').getStore();
if (list.length > 0) {
- me.getStore().setData(list.map(item => ({ item })));
+ store.setData(list.map(item => ({ item })));
} else {
- me.getStore().removeAll();
+ store.removeAll();
}
me.checkChange();
return me;
@@ -41,7 +36,7 @@ Ext.define('PVE.form.ListField', {
getValue: function() {
let me = this;
let values = [];
- me.getStore().each((rec) => {
+ me.lookup('grid').getStore().each((rec) => {
if (rec.data.item) {
values.push(rec.data.item);
}
@@ -52,7 +47,7 @@ Ext.define('PVE.form.ListField', {
getErrors: function(value) {
let me = this;
let empty = false;
- me.getStore().each((rec) => {
+ me.lookup('grid').getStore().each((rec) => {
if (!rec.data.item) {
empty = true;
}
@@ -86,22 +81,23 @@ Ext.define('PVE.form.ListField', {
addLine: function() {
let me = this;
- me.getView().getStore().add({
+ me.lookup('grid').getStore().add({
item: '',
});
},
- removeSelection: function() {
+ removeSelection: function(field) {
let me = this;
let view = me.getView();
- let selection = view.getSelection();
- if (selection === undefined) {
+ let grid = me.lookup('grid');
+
+ let record = field.getWidgetRecord();
+ if (record === undefined) {
+ // this is sometimes called before a record/column is initialized
return;
}
- selection.forEach((sel) => {
- view.getStore().remove(sel);
- });
+ grid.getStore().remove(record);
view.checkChange();
},
@@ -114,33 +110,47 @@ Ext.define('PVE.form.ListField', {
rec.set(column.dataIndex, newValue);
field.up('pveListField').checkChange();
},
+
+ control: {
+ 'grid button': {
+ click: 'removeSelection',
+ },
+ },
},
- tbar: [
+ items: [
{
- text: gettext('Add'),
- handler: 'addLine',
+ xtype: 'grid',
+ reference: 'grid',
+
+ viewConfig: {
+ deferEmptyText: false,
+ },
+
+ store: {
+ listeners: {
+ update: function() {
+ this.commitChanges();
+ },
+ },
+ },
},
{
- xtype: 'proxmoxButton',
- text: gettext('Remove'),
- handler: 'removeSelection',
- disabled: true,
+ xtype: 'button',
+ text: gettext('Add'),
+ iconCls: 'fa fa-plus-circle',
+ handler: 'addLine',
},
],
- store: {
- listeners: {
- update: function() {
- this.commitChanges();
- },
- },
- },
-
initComponent: function() {
let me = this;
- me.columns = [
+ for (const [key, value] of Object.entries(me.gridConfig ?? {})) {
+ me.items[0][key] = value;
+ }
+
+ me.items[0].columns = [
{
header: me.fieldTtitle,
dataIndex: 'item',
@@ -157,6 +167,14 @@ Ext.define('PVE.form.ListField', {
},
flex: 1,
},
+ {
+ xtype: 'widgetcolumn',
+ width: 40,
+ widget: {
+ xtype: 'button',
+ iconCls: 'fa fa-trash-o',
+ },
+ },
];
me.callParent();
--
2.30.2
next prev parent reply other threads:[~2022-11-17 14:56 UTC|newest]
Thread overview: 7+ messages / expand[flat|nested] mbox.gz Atom feed top
2022-11-17 14:56 [pve-devel] [PATCH manager 0/5] tags ui follow up patches Dominik Csapak
2022-11-17 14:56 ` [pve-devel] [PATCH manager 1/5] ui: rework inline tag editing Dominik Csapak
2022-11-17 14:56 ` [pve-devel] [PATCH manager 2/5] ui: tags: make sorting more natural Dominik Csapak
2022-11-17 14:56 ` [pve-devel] [PATCH manager 3/5] ui: tags: hide already set tags in dropdown Dominik Csapak
2022-11-17 14:56 ` Dominik Csapak [this message]
2022-11-17 14:56 ` [pve-devel] [PATCH manager 5/5] ui: tags: add preview to tag shape option Dominik Csapak
2022-11-17 17:22 ` [pve-devel] applied-series: [PATCH manager 0/5] tags ui follow up patches Thomas Lamprecht
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=20221117145623.661109-5-d.csapak@proxmox.com \
--to=d.csapak@proxmox.com \
--cc=pve-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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.