diff options
Diffstat (limited to 'addons/web/static/src/js')
| -rw-r--r-- | addons/web/static/src/js/action_manager.js | 3 | ||||
| -rw-r--r-- | addons/web/static/src/js/framework/crash_manager.js | 15 | ||||
| -rw-r--r-- | addons/web/static/src/js/tour.js | 8 | ||||
| -rw-r--r-- | addons/web/static/src/js/views/form_view.js | 2 | ||||
| -rw-r--r-- | addons/web/static/src/js/views/form_widgets.js | 10 | ||||
| -rw-r--r-- | addons/web/static/src/js/views/graph_widget.js | 1 | ||||
| -rw-r--r-- | addons/web/static/src/js/views/pivot_view.js | 13 | ||||
| -rw-r--r-- | addons/web/static/src/js/views/search_filters.js | 4 | ||||
| -rw-r--r-- | addons/web/static/src/js/views/search_inputs.js | 14 | ||||
| -rw-r--r-- | addons/web/static/src/js/views/search_view.js | 9 | ||||
| -rw-r--r-- | addons/web/static/src/js/widgets/sidebar.js | 1 | ||||
| -rw-r--r-- | addons/web/static/src/js/widgets/user_menu.js | 2 |
12 files changed, 62 insertions, 20 deletions
diff --git a/addons/web/static/src/js/action_manager.js b/addons/web/static/src/js/action_manager.js index 7b9cfa9cbf8..6700932b4bc 100644 --- a/addons/web/static/src/js/action_manager.js +++ b/addons/web/static/src/js/action_manager.js @@ -507,7 +507,8 @@ var ActionManager = Widget.extend({ pager : (!popup || !form) && !inline, display_title : !popup, headless: (popup || inline) && form, - search_disable_custom_filters: action.context && action.context.search_disable_custom_filters + search_disable_custom_filters: action.context && action.context.search_disable_custom_filters, + default_view: action.context && action.context.params && action.context.params.view_type, }); } diff --git a/addons/web/static/src/js/framework/crash_manager.js b/addons/web/static/src/js/framework/crash_manager.js index 01fef03267b..303cd66a4a3 100644 --- a/addons/web/static/src/js/framework/crash_manager.js +++ b/addons/web/static/src/js/framework/crash_manager.js @@ -36,19 +36,24 @@ var CrashManager = core.Class.extend({ this.active = false; }, rpc_error: function(error) { + var self = this; if (!this.active) { return; } + if (this.$indicator){ + return; + } if (error.code == -32098) { $.blockUI({ message: '' , overlayCSS: {'z-index': 9999, backgroundColor: '#FFFFFF', opacity: 0.0, cursor: 'wait'}}); - var $indicator = $('<div class="oe_indicator">' + _t("Trying to reconnect... ") + '<i class="fa fa-refresh"></i></div>'); - $indicator.prependTo("body"); + this.$indicator = $('<div class="oe_indicator">' + _t("Trying to reconnect... ") + '<i class="fa fa-refresh"></i></div>'); + this.$indicator.prependTo("body"); var timeinterval = setInterval(function(){ ajax.jsonRpc('/web/webclient/version_info').then(function() { clearInterval(timeinterval); - $indicator.html(_t("You are back online")); - $indicator.delay(2000).fadeOut('slow',function(){ - $indicator.remove(); + self.$indicator.html(_t("You are back online")); + self.$indicator.delay(2000).fadeOut('slow',function(){ + $(this).remove(); + self.$indicator.remove(); }); $.unblockUI(); }); diff --git a/addons/web/static/src/js/tour.js b/addons/web/static/src/js/tour.js index ea64a55f22c..234b681f7d2 100644 --- a/addons/web/static/src/js/tour.js +++ b/addons/web/static/src/js/tour.js @@ -76,6 +76,7 @@ var localStorage = window.localStorage; var Tour = { tours: {}, defaultDelay: 50, + autoRunning: true, retryRunningDelay: 1000, errorDelay: 5000, state: null, @@ -378,6 +379,7 @@ var Tour = { }, logError: function (step, message, all) { var state = Tour.getState(); + console.log(state.tour.steps.slice()); message += '\ntour: ' + state.id + (step ? '\nstep: ' + step.id + ": '" + (step._title || step.title) + "'" : '' ) + (all ? '\nhref: ' + window.location.href : '' ) @@ -711,7 +713,11 @@ var Tour = { ///////////////////////////////////////////////// -$(document).ready(Tour.running); +$(document).ready(function () { + if (Tour.autoRunning) { + Tour.running(); + }; +}); return Tour; diff --git a/addons/web/static/src/js/views/form_view.js b/addons/web/static/src/js/views/form_view.js index aa06074401f..df570967f94 100644 --- a/addons/web/static/src/js/views/form_view.js +++ b/addons/web/static/src/js/views/form_view.js @@ -637,7 +637,7 @@ var FormView = View.extend(common.FieldManagerMixin, { // If field is not defined in the view, just ignore it if (field) { var value_ = values[f]; - if (field.get_value() != value_) { + if (field.get_value() !== value_) { field._inhibit_on_change_flag = true; field.set_value(value_); field._inhibit_on_change_flag = false; diff --git a/addons/web/static/src/js/views/form_widgets.js b/addons/web/static/src/js/views/form_widgets.js index b23bff4cc84..ee04f8376b4 100644 --- a/addons/web/static/src/js/views/form_widgets.js +++ b/addons/web/static/src/js/views/form_widgets.js @@ -1230,9 +1230,11 @@ var FieldBinary = common.AbstractField.extend(common.ReinitializeFieldMixin, { set_filename: function(value) { var filename = this.node.attrs.filename; if (filename) { - var tmp = {}; - tmp[filename] = value; - this.field_manager.set_values(tmp); + var field = this.field_manager.fields[filename]; + if (field) { + field.set_value(value); + field._dirty_flag = true; + } } }, on_clear: function() { @@ -1279,10 +1281,10 @@ var FieldBinaryFile = FieldBinary.extend({ }, on_file_uploaded_and_valid: function(size, name, content_type, file_base64) { this.binary_value = true; + this.set_filename(name); this.internal_set_value(file_base64); var show_value = name + " (" + utils.human_size(size) + ")"; this.$el.find('input').eq(0).val(show_value); - this.set_filename(name); }, on_clear: function() { this._super.apply(this, arguments); diff --git a/addons/web/static/src/js/views/graph_widget.js b/addons/web/static/src/js/views/graph_widget.js index 1e712b5af79..3f8a7566d97 100644 --- a/addons/web/static/src/js/views/graph_widget.js +++ b/addons/web/static/src/js/views/graph_widget.js @@ -168,6 +168,7 @@ return Widget.extend({ // rotateLabels: 40, showControls: (this.groupbys.length > 1) }); + chart.yAxis.tickFormat(function(d) { return openerp.web.format_value(d, { type : 'float' });}); chart(svg); this.to_remove = chart.update; diff --git a/addons/web/static/src/js/views/pivot_view.js b/addons/web/static/src/js/views/pivot_view.js index 1b55895d847..22b74ecbf15 100644 --- a/addons/web/static/src/js/views/pivot_view.js +++ b/addons/web/static/src/js/views/pivot_view.js @@ -60,6 +60,8 @@ var PivotView = View.extend({ this.last_header_selected = null; this.sorted_column = {}; + + this.numbering = {}; }, willStart: function () { var self = this; @@ -490,13 +492,22 @@ var PivotView = View.extend({ }, sanitize_value: function (value, field) { if (value === false) return _t("Undefined"); - if (value instanceof Array) return value[1]; + if (value instanceof Array) return this.get_numbered_value(value, field); if (field && this.fields[field] && (this.fields[field].type === 'selection')) { var selected = _.where(this.fields[field].selection, {0: value})[0]; return selected ? selected[1] : value; } return value; }, + get_numbered_value: function(value, field) { + var id= value[0]; + var name= value[1] + this.numbering[field] = this.numbering[field] || {}; + this.numbering[field][name] = this.numbering[field][name] || {}; + var numbers = this.numbering[field][name]; + numbers[id] = numbers[id] || _.size(numbers) + 1; + return name + (numbers[id] > 1 ? " (" + numbers[id] + ")" : ""); + }, make_header: function (data_pt, root, i, j, parent_header) { var attrs = data_pt.attributes, value = attrs.value, diff --git a/addons/web/static/src/js/views/search_filters.js b/addons/web/static/src/js/views/search_filters.js index 0409fa90a0d..506ddecd805 100644 --- a/addons/web/static/src/js/views/search_filters.js +++ b/addons/web/static/src/js/views/search_filters.js @@ -244,6 +244,10 @@ ExtendedSearchProposition.Float = ExtendedSearchProposition.Field.extend({ {value: "∃", text: _lt("is set")}, {value: "∄", text: _lt("is not set")} ], + init: function (parent) { + this._super(parent); + this.decimal_point = _t.database.parameters.decimal_point; + }, toString: function () { return this.$el.val(); }, diff --git a/addons/web/static/src/js/views/search_inputs.js b/addons/web/static/src/js/views/search_inputs.js index 16f95340dd6..4127b020970 100644 --- a/addons/web/static/src/js/views/search_inputs.js +++ b/addons/web/static/src/js/views/search_inputs.js @@ -22,6 +22,7 @@ var Input = Widget.extend( /** @lends instance.web.search.Input# */{ */ init: function (parent) { this._super(parent); + this.searchview = parent; this.load_attrs({}); }, /** @@ -406,9 +407,17 @@ var ManyToOneField = CharField.extend({ // FIXME: "concurrent" searches (multiple requests, mis-ordered responses) var context = pyeval.eval( 'contexts', [this.searchview.dataset.get_context()]); + var args = this.attrs.domain; + if (typeof args === 'string') { + try { + args = pyeval.eval('domain', args); + } catch(e) { + args = []; + } + } return this.model.call('name_search', [], { name: needle, - args: (typeof this.attrs.domain === 'string') ? [] : this.attrs.domain, + args: args, limit: 8, context: context }).then(function (results) { @@ -433,7 +442,8 @@ var ManyToOneField = CharField.extend({ // to handle this as if it were a single value. value = value[0]; } - return this.model.call('name_get', [value]).then(function (names) { + var context = pyeval.eval('contexts', [this.searchview.dataset.get_context()]); + return this.model.call('name_get', [value], {context: context}).then(function (names) { if (_(names).isEmpty()) { return null; } return facet_from(self, names[0]); }); diff --git a/addons/web/static/src/js/views/search_view.js b/addons/web/static/src/js/views/search_view.js index 1dd1b217951..3511bbca01c 100644 --- a/addons/web/static/src/js/views/search_view.js +++ b/addons/web/static/src/js/views/search_view.js @@ -888,14 +888,15 @@ return Widget.extend({ }, expand: function () { var self = this; - this.current_result.expand(this.get_search_string()).then(function (results) { + var current_result = this.current_result; + current_result.expand(this.get_search_string()).then(function (results) { (results || [{label: '(no result)'}]).reverse().forEach(function (result) { result.indent = true; var $li = self.make_list_item(result); - self.current_result.$el.after($li); + current_result.$el.after($li); }); - self.current_result.expanded = true; - self.current_result.$el.find('span.oe-expand').html('▼'); + current_result.expanded = true; + current_result.$el.find('span.oe-expand').html('▼'); }); }, fold: function () { diff --git a/addons/web/static/src/js/widgets/sidebar.js b/addons/web/static/src/js/widgets/sidebar.js index e0bdcd3f57c..5dc6c147f39 100644 --- a/addons/web/static/src/js/widgets/sidebar.js +++ b/addons/web/static/src/js/widgets/sidebar.js @@ -16,6 +16,7 @@ var Sidebar = Widget.extend({ init: function(parent) { var self = this; this._super(parent); + this.view = this.getParent(); this.sections = [ { 'name' : 'print', 'label' : _t('Print'), }, { 'name' : 'other', 'label' : _t('More'), } diff --git a/addons/web/static/src/js/widgets/user_menu.js b/addons/web/static/src/js/widgets/user_menu.js index fa5ea2bbdf7..dba1704c719 100644 --- a/addons/web/static/src/js/widgets/user_menu.js +++ b/addons/web/static/src/js/widgets/user_menu.js @@ -87,7 +87,7 @@ var SystrayMenu = Widget.extend({ framework.redirect('https://accounts.odoo.com/oauth2/auth?'+$.param(params)); }).fail(function(result, ev){ ev.preventDefault(); - framework.redirect('https://accounts.odoo.com/web'); + framework.redirect('https://accounts.odoo.com/account'); }); } }, |
