]> git.proxmox.com Git - proxmox-backup.git/commitdiff
ui: add calendar event selector
authorThomas Lamprecht <t.lamprecht@proxmox.com>
Tue, 21 Jul 2020 17:32:25 +0000 (19:32 +0200)
committerThomas Lamprecht <t.lamprecht@proxmox.com>
Tue, 21 Jul 2020 17:33:52 +0000 (19:33 +0200)
modelled after the PVE one, but we are not 1:1 compatible and need
deleteEmpty support. For now let's just have some duplicate code, but
we should try to move this to widget toolkit ASAP.

Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
www/Makefile
www/form/CalendarEvent.js [new file with mode: 0644]
www/window/DataStoreEdit.js
www/window/SyncJobEdit.js

index a92bdc91b545c0c5e94653fc6f733e056cb6e1f0..073f03838d8b6b5ff6e91f3c45991bac172d004d 100644 (file)
@@ -8,6 +8,7 @@ JSSRC=                                                  \
        form/UserSelector.js                            \
        form/RemoteSelector.js                          \
        form/DataStoreSelector.js                       \
+       form/CalendarEvent.js                           \
        data/RunningTasksStore.js                       \
        button/TaskButton.js                            \
        config/UserView.js                              \
diff --git a/www/form/CalendarEvent.js b/www/form/CalendarEvent.js
new file mode 100644 (file)
index 0000000..440bbc5
--- /dev/null
@@ -0,0 +1,64 @@
+Ext.define('PBS.data.CalendarEventExamples', {
+    extend: 'Ext.data.Store',
+    alias: 'store.calendarEventExamples',
+
+    field: ['value', 'text'],
+    data: [
+       //FIXME { value: '*/30', text: Ext.String.format(gettext("Every {0} minutes"), 30) },
+       { value: 'hourly', text: gettext("Every hour") },
+       //FIXME { value: '*/2:00', text: gettext("Every two hours") },
+       { value: '2,22:30', text: gettext("Every day") + " 02:30, 22:30" },
+       { value: 'daily', text: gettext("Every day") + " 00:00" },
+       { value: 'mon..fri', text: gettext("Monday to Friday") + " 00:00" },
+       //FIXME{ value: 'mon..fri */1:00', text: gettext("Monday to Friday") + ': ' + gettext("hourly") },
+       { value: 'sat 18:15', text: gettext("Every Saturday") + " 18:15" },
+       //FIXME{ value: 'monthly', text: gettext("Every 1st of Month") + " 00:00" }, // not yet possible..
+    ],
+});
+
+Ext.define('PBS.form.CalendarEvent', {
+    extend: 'Ext.form.field.ComboBox',
+    xtype: 'pbsCalendarEvent',
+
+    editable: true,
+
+    valueField: 'value',
+    displayField: 'text',
+    queryMode: 'local',
+
+    config: {
+       deleteEmpty: true,
+    },
+    // overide framework function to implement deleteEmpty behaviour
+    getSubmitData: function() {
+       let me = this, data = null;
+       if (!me.disabled && me.submitValue) {
+           let val = me.getSubmitValue();
+           if (val !== null && val !== '' && val !== '__default__') {
+               data = {};
+               data[me.getName()] = val;
+           } else if (me.getDeleteEmpty()) {
+               data = {};
+               data.delete = me.getName();
+           }
+       }
+       return data;
+    },
+
+
+    store: {
+       type: 'calendarEventExamples',
+    },
+
+    tpl: [
+       '<ul class="x-list-plain"><tpl for=".">',
+           '<li role="option" class="x-boundlist-item">{text}</li>',
+       '</tpl></ul>',
+    ],
+
+    displayTpl: [
+       '<tpl for=".">',
+       '{value}',
+       '</tpl>',
+    ],
+});
index 3488ff640d29a99a253dc0316d03c638c7720aca..adb857ab1630c1f03bbc508333b849b58aaf2cae 100644 (file)
@@ -15,6 +15,9 @@ Ext.define('PBS.DataStoreEdit', {
        let baseurl = '/api2/extjs/config/datastore';
 
        me.isCreate = !name;
+       if (!me.isCreate) {
+           me.defaultFocus = 'textfield[name=comment]';
+       }
        me.url = name ? baseurl + '/' + name : baseurl;
        me.method = name ? 'PUT' : 'POST';
        me.autoLoad = !!name;
@@ -51,17 +54,19 @@ Ext.define('PBS.DataStoreEdit', {
                ],
                column2: [
                    {
-                       xtype: 'proxmoxtextfield',
+                       xtype: 'pbsCalendarEvent',
                        name: 'gc-schedule',
                        fieldLabel: gettext("GC Schedule"),
+                       emptyText: gettext('none'),
                        cbind: {
                            deleteEmpty: '{!isCreate}',
                        },
                    },
                    {
-                       xtype: 'proxmoxtextfield',
+                       xtype: 'pbsCalendarEvent',
                        name: 'prune-schedule',
                        fieldLabel: gettext("Prune Schedule"),
+                       emptyText: gettext('none'),
                        cbind: {
                            deleteEmpty: '{!isCreate}',
                        },
index 8b9c34d7bf996ffacc9c4fc53f12488311897616..5b74ccdfaeb95721f74ff4313b941b3603cf71d3 100644 (file)
@@ -68,7 +68,7 @@ Ext.define('PBS.window.SyncJobEdit', {
            },
            {
                fieldLabel: gettext('Schedule'),
-               xtype: 'proxmoxtextfield',
+               xtype: 'pbsCalendarEvent',
                name: 'schedule',
                emptyText: gettext('none'),
                cbind: {