diff --git a/www/Makefile b/www/Makefile index 616c3e12..c975387c 100644 --- a/www/Makefile +++ b/www/Makefile @@ -42,6 +42,7 @@ JSSRC= \ form/DataStoreSelector.js \ form/CalendarEvent.js \ form/PermissionPathSelector.js \ + form/GroupSelector.js \ data/RunningTasksStore.js \ button/TaskButton.js \ config/UserView.js \ diff --git a/www/form/GroupSelector.js b/www/form/GroupSelector.js new file mode 100644 index 00000000..4bf51104 --- /dev/null +++ b/www/form/GroupSelector.js @@ -0,0 +1,54 @@ +Ext.define('pbs-groups', { + extend: 'Ext.data.Model', + fields: [ + 'backup-type', + 'backup-id', + { + name: 'group', + type: 'string', + convert: function(value, record) { + if (record.data['backup-type'] && record.data['backup-id']) { + return `${record.data['backup-type']}/${record.data['backup-id']}`; + } + return value; + }, + }, + ], + proxy: { + type: 'proxmox', + }, +}); + +Ext.define('PBS.form.GroupSelector', { + extend: 'Proxmox.form.ComboGrid', + alias: 'widget.pbsGroupSelector', + + allowBlank: false, + autoSelect: false, + notFoundIsValid: true, + editable: true, + valueField: 'group', + displayField: 'group', + + store: { + sorters: 'group', + model: 'pbs-groups', + }, + + listConfig: { + minHeight: 80, + emptyText: gettext('No Groups'), + viewConfig: { + deferEmptyText: false, + }, + columns: [ + { + header: gettext('Group'), + sortable: true, + dataIndex: 'group', + renderer: Ext.String.htmlEncode, + flex: 1, + }, + ], + }, +});