Hi Dave, As validation related patch was committed with RM#3148 [ Sorry about that I forgot to checkout :) ] PFA patch to fix the issues you mentioned, I have also removed extra error message from sub node collection control and made it optional via flag.
-- Regards, Murtuza Zabuawala EnterpriseDB: http://www.enterprisedb.com The Enterprise PostgreSQL Company On Mon, Feb 26, 2018 at 10:14 PM, Dave Page <dp...@pgadmin.org> wrote: > Hi > > On Mon, Feb 26, 2018 at 2:46 PM, Murtuza Zabuawala <murtuza.zabuawala@ > enterprisedb.com> wrote: > >> Hi, >> >> PFA patch to fix the issue where user was not able to create pgAgent job >> from UI without entering End date in schedule section. >> > > Whilst this does resolve the validation issue, there are still a couple > of other related problems, as can be seen in the attached screenshots: > > - The Start date/time in the subnode control doesn't seem to be properly > synchronised with the value in the grid. > > - If you leave the End date/time blank (but maybe click into it first), > the grid will show "Invalid date". > > It's possible there are other oddities as well - please check carefully > for anything else. > > Thanks. > > -- > Dave Page > Blog: http://pgsnake.blogspot.com > Twitter: @pgsnake > > EnterpriseDB UK: http://www.enterprisedb.com > The Enterprise PostgreSQL Company >
diff --git a/web/pgadmin/browser/server_groups/servers/pgagent/schedules/static/js/pga_schedule.js b/web/pgadmin/browser/server_groups/servers/pgagent/schedules/static/js/pga_schedule.js index a88f9d0..1cfa38c 100644 --- a/web/pgadmin/browser/server_groups/servers/pgagent/schedules/static/js/pga_schedule.js +++ b/web/pgadmin/browser/server_groups/servers/pgagent/schedules/static/js/pga_schedule.js @@ -279,7 +279,7 @@ define('pgadmin.node.pga_schedule', [ control: 'datetimepicker', cell: DatetimeCell, disabled: function() { return false; }, displayInUTC: false, displayFormat: 'YYYY-MM-DD HH:mm:ss Z', options: { - format: 'YYYY-MM-DD HH:mm:ss Z', useCurrent: false, + format: 'YYYY-MM-DD HH:mm:ss Z', minDate: moment().add(0, 'm'), }, cellHeaderClasses: 'width_percent_25', modelFormat: 'YYYY-MM-DD HH:mm:ss Z', @@ -458,6 +458,9 @@ define('pgadmin.node.pga_schedule', [ if (_.isUndefined(val) || _.isNull(val) || String(val).replace(/^\s+|\s+$/g, '') == '') { msg = gettext('Please enter the start time.'); + if (val == '') { + this.set('jscstart', undefined); + } this.errorModel.set('jscstart', msg); errMsg = errMsg || msg; } else { @@ -471,6 +474,9 @@ define('pgadmin.node.pga_schedule', [ // the user if (_.isUndefined(val) || _.isNull(val) || String(val).replace(/^\s+|\s+$/g, '') == '') { + if (val == '') { + this.set('jscend', undefined); + } return; } diff --git a/web/pgadmin/browser/server_groups/servers/pgagent/static/js/pga_job.js b/web/pgadmin/browser/server_groups/servers/pgagent/static/js/pga_job.js index 1a1cfb1..72fd1be 100644 --- a/web/pgadmin/browser/server_groups/servers/pgagent/static/js/pga_job.js +++ b/web/pgadmin/browser/server_groups/servers/pgagent/static/js/pga_job.js @@ -133,6 +133,7 @@ define('pgadmin.node.pga_job', [ type: 'collection', mode: ['edit', 'create'], model: pgBrowser.Nodes['pga_jobstep'].model, canEdit: true, control: 'sub-node-collection', canAdd: true, canDelete: true, + showError: false, columns: [ 'jstname', 'jstenabled', 'jstkind', 'jstconntype', 'jstonerror', ], @@ -141,6 +142,7 @@ define('pgadmin.node.pga_job', [ type: 'collection', mode: ['edit', 'create'], control: 'sub-node-collection', canAdd: true, canDelete: true, canEdit: true, model: pgBrowser.Nodes['pga_schedule'].model, + showError: false, columns: ['jscname', 'jscenabled', 'jscstart', 'jscend'], }], validate: function() { diff --git a/web/pgadmin/browser/server_groups/servers/pgagent/steps/static/js/pga_jobstep.js b/web/pgadmin/browser/server_groups/servers/pgagent/steps/static/js/pga_jobstep.js index 0dd3f60..971c2d6 100644 --- a/web/pgadmin/browser/server_groups/servers/pgagent/steps/static/js/pga_jobstep.js +++ b/web/pgadmin/browser/server_groups/servers/pgagent/steps/static/js/pga_jobstep.js @@ -300,6 +300,17 @@ define('pgadmin.node.pga_jobstep', [ this.errorModel.unset('jstcode'); } + val = this.get('jstonerror'); + if ( + !_.isUndefined(val) && !_.isNull(val) && + String(val).replace(/^\s+|\s+$/g, '') == '' + ) { + msg = gettext('Please select valid on error option .'); + this.errorModel.set('jstonerror', msg); + } else { + this.errorModel.unset('jstonerror'); + } + return errMsg; }, }), diff --git a/web/pgadmin/static/js/backform.pgadmin.js b/web/pgadmin/static/js/backform.pgadmin.js index 2bbaa17..9f1f3db 100644 --- a/web/pgadmin/static/js/backform.pgadmin.js +++ b/web/pgadmin/static/js/backform.pgadmin.js @@ -1196,6 +1196,7 @@ define([ canAddRow: data.canAddRow, canEdit: evalF(data.canEdit, data, this.model), canDelete: evalF(data.canDelete, data, this.model), + showError: data.showError || true, }); // Show Backgrid Control var grid = (data.subnode == undefined) ? '' : this.showGridControl(data); @@ -1224,9 +1225,11 @@ define([ if (_.isEmpty(error)) return; - self.$el.addClass('subnode-error').append( - $('<div></div>').addClass('pgadmin-control-error-message pg-el-xs-offset-4 pg-el-xs-8 help-block').text(error) - ); + if (self.field.get('showError')) { + self.$el.addClass('subnode-error').append( + $('<div></div>').addClass('pgadmin-control-error-message pg-el-xs-offset-4 pg-el-xs-8 help-block').text(error) + ); + } }, cleanup: function() { // Clean up existing grid if any (in case of re-render) @@ -1238,8 +1241,10 @@ define([ } }, clearInvalid: function() { - this.$el.removeClass('subnode-error'); - this.$el.find('.pgadmin-control-error-message').remove(); + if (this.field.get('showError')) { + this.$el.removeClass('subnode-error'); + this.$el.find('.pgadmin-control-error-message').remove(); + } return this; }, showGridControl: function(data) {