Ext.define('PBS.data.CalendarEventExamples', { extend: 'Ext.data.Store', alias: 'store.calendarEventExamples', field: ['value', 'text'], data: [ { value: '*:0/30', text: Ext.String.format(gettext("Every {0} minutes"), 30) }, { value: 'hourly', text: gettext("Every hour") }, { value: '0/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" }, { value: 'mon..fri *:00', text: gettext("Monday to Friday") + ', ' + gettext("hourly") }, { value: 'sat 18:15', text: gettext("Every Saturday") + " 18:15" }, { value: 'monthly', text: gettext("Every first day of the Month") + " 00:00" }, { value: 'sat *-1..7 02:00', text: gettext("Every first Saturday of the month") + " 02:00" }, { value: 'yearly', text: gettext("First day of the year") + " 00:00" }, ], }); Ext.define('PBS.form.CalendarEvent', { extend: 'Ext.form.field.ComboBox', xtype: 'pbsCalendarEvent', editable: true, valueField: 'value', displayField: 'text', queryMode: 'local', matchFieldWidth: false, 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>', ], });