diff options
Diffstat (limited to 'addons/web/static/src/js/view_form.js')
| -rw-r--r-- | addons/web/static/src/js/view_form.js | 118 |
1 files changed, 39 insertions, 79 deletions
diff --git a/addons/web/static/src/js/view_form.js b/addons/web/static/src/js/view_form.js index 5767ffe5489..93ebc8b8167 100644 --- a/addons/web/static/src/js/view_form.js +++ b/addons/web/static/src/js/view_form.js @@ -302,6 +302,7 @@ instance.web.FormView = instance.web.View.extend(instance.web.form.FieldManagerM opacity: '1', filter: 'alpha(opacity = 100)' }); + instance.web.bus.trigger('form_view_shown', self); }); }, do_hide: function () { @@ -705,6 +706,7 @@ instance.web.FormView = instance.web.View.extend(instance.web.form.FieldManagerM if (menu) { menu.do_reload_needaction(); } + instance.web.bus.trigger('form_view_saved', self); }); }).always(function(){ $(e.target).attr("disabled", false); @@ -1835,7 +1837,6 @@ instance.web.form.FormWidget = instance.web.Widget.extend(instance.web.form.Invi trigger = trigger || this.$el; options = _.extend({ delay: { show: 500, hide: 0 }, - trigger: 'hover', title: function() { var template = widget.template + '.tooltip'; if (!QWeb.has_template(template)) { @@ -2577,10 +2578,10 @@ instance.web.form.FieldCharDomain = instance.web.form.AbstractField.extend(insta instance.web.DateTimeWidget = instance.web.Widget.extend({ template: "web.datepicker", - jqueryui_object: 'datetimepicker', type_of_date: "datetime", events: { - 'change .oe_datepicker_master': 'change_datetime', + 'dp.change .oe_datepicker_main': 'change_datetime', + 'dp.show .oe_datepicker_main': 'set_datetime_default', 'keypress .oe_datepicker_master': 'change_datetime', }, init: function(parent) { @@ -2589,82 +2590,32 @@ instance.web.DateTimeWidget = instance.web.Widget.extend({ }, start: function() { var self = this; + var l10n = _t.database.parameters; + var options = { + pickTime: true, + useSeconds: true, + startDate: new moment({ y: 1900 }), + endDate: new moment().add(200, "y"), + calendarWeeks: true, + icons : { + time: 'fa fa-clock-o', + date: 'fa fa-calendar', + up: 'fa fa-chevron-up', + down: 'fa fa-chevron-down' + }, + language : moment.locale(), + format : instance.web.convert_to_moment_format(l10n.date_format +' '+ l10n.time_format), + }; this.$input = this.$el.find('input.oe_datepicker_master'); - this.$input_picker = this.$el.find('input.oe_datepicker_container'); - - $.datepicker.setDefaults({ - clearText: _t('Clear'), - clearStatus: _t('Erase the current date'), - closeText: _t('Done'), - closeStatus: _t('Close without change'), - prevText: _t('<Prev'), - prevStatus: _t('Show the previous month'), - nextText: _t('Next>'), - nextStatus: _t('Show the next month'), - currentText: _t('Today'), - currentStatus: _t('Show the current month'), - monthNames: Date.CultureInfo.monthNames, - monthNamesShort: Date.CultureInfo.abbreviatedMonthNames, - monthStatus: _t('Show a different month'), - yearStatus: _t('Show a different year'), - weekHeader: _t('Wk'), - weekStatus: _t('Week of the year'), - dayNames: Date.CultureInfo.dayNames, - dayNamesShort: Date.CultureInfo.abbreviatedDayNames, - dayNamesMin: Date.CultureInfo.shortestDayNames, - dayStatus: _t('Set DD as first week day'), - dateStatus: _t('Select D, M d'), - firstDay: Date.CultureInfo.firstDayOfWeek, - initStatus: _t('Select a date'), - isRTL: false - }); - $.timepicker.setDefaults({ - timeOnlyTitle: _t('Choose Time'), - timeText: _t('Time'), - hourText: _t('Hour'), - minuteText: _t('Minute'), - secondText: _t('Second'), - currentText: _t('Now'), - closeText: _t('Done') - }); - - this.picker({ - onClose: this.on_picker_select, - onSelect: this.on_picker_select, - changeMonth: true, - changeYear: true, - showWeek: true, - showButtonPanel: true, - firstDay: Date.CultureInfo.firstDayOfWeek - }); - // Some clicks in the datepicker dialog are not stopped by the - // datepicker and "bubble through", unexpectedly triggering the bus's - // click event. Prevent that. - this.picker('widget').click(function (e) { e.stopPropagation(); }); - - this.$el.find('img.oe_datepicker_trigger').click(function() { - if (self.get("effective_readonly") || self.picker('widget').is(':visible')) { - self.$input.focus(); - return; - } - self.picker('setDate', self.get('value') ? instance.web.auto_str_to_date(self.get('value')) : new Date()); - self.$input_picker.show(); - self.picker('show'); - self.$input_picker.hide(); - }); + if (this.type_of_date === 'date') { + options['pickTime'] = false; + options['useSeconds'] = false; + options['format'] = instance.web.convert_to_moment_format(l10n.date_format); + } + this.picker = this.$('.oe_datepicker_main').datetimepicker(options); this.set_readonly(false); this.set({'value': false}); }, - picker: function() { - return $.fn[this.jqueryui_object].apply(this.$input_picker, arguments); - }, - on_picker_select: function(text, instance_) { - var date = this.picker('getDate'); - this.$input - .val(date ? this.format_client(date) : '') - .change() - .focus(); - }, set_value: function(value_) { this.set({'value': value_}); this.$input.val(value_ ? this.format_client(value_) : ''); @@ -2674,12 +2625,11 @@ instance.web.DateTimeWidget = instance.web.Widget.extend({ }, set_value_from_ui_: function() { var value_ = this.$input.val() || false; - this.set({'value': this.parse_client(value_)}); + this.set_value(this.parse_client(value_)); }, set_readonly: function(readonly) { this.readonly = readonly; this.$input.prop('readonly', this.readonly); - this.$el.find('img.oe_datepicker_trigger').toggleClass('oe_input_icon_disabled', readonly); }, is_valid_: function() { var value_ = this.$input.val(); @@ -2700,6 +2650,17 @@ instance.web.DateTimeWidget = instance.web.Widget.extend({ format_client: function(v) { return instance.web.format_value(v, {"widget": this.type_of_date}); }, + set_datetime_default: function(){ + //when opening datetimepicker the date and time by default should be the one from + //the input field if any or the current day otherwise + if (this.type_of_date === 'datetime') { + value = new moment().second(0); + if (this.$input.val().length !== 0 && this.is_valid_()){ + var value = this.$input.val(); + } + this.$('.oe_datepicker_main').data('DateTimePicker').setValue(value); + } + }, change_datetime: function(e) { if ((e.type !== "keypress" || e.which === 13) && this.is_valid_()) { this.set_value_from_ui_(); @@ -2712,7 +2673,6 @@ instance.web.DateTimeWidget = instance.web.Widget.extend({ }); instance.web.DateWidget = instance.web.DateTimeWidget.extend({ - jqueryui_object: 'datepicker', type_of_date: "date" }); @@ -3161,9 +3121,9 @@ instance.web.form.FieldRadio = instance.web.form.AbstractField.extend(instance.w this._super(field_manager, node); this.selection = _.clone(this.field.selection) || []; this.domain = false; + this.uniqueId = _.uniqueId("radio"); }, initialize_content: function () { - this.uniqueId = _.uniqueId("radio"); this.on("change:effective_readonly", this, this.render_value); this.field_manager.on("view_content_has_changed", this, this.get_selection); this.get_selection(); |
