summaryrefslogtreecommitdiff
path: root/addons/web/static/src/js
diff options
context:
space:
mode:
authorAntony Lesuisse <al@openerp.com>2011-12-15 19:43:05 +0100
committerAntony Lesuisse <al@openerp.com>2011-12-15 19:43:05 +0100
commit2fd2f299b40a03044e5700509f18ae2ac2c0afce (patch)
tree67d8b4faa981df4b308bcf6261095c0f898fc77a /addons/web/static/src/js
parent4206e4d2627be8ca252fdfce2f90654ff9db0055 (diff)
parent72e820765fccc9227c8b684e3d42f6344756cffc (diff)
[MERGE] trunk
bzr revid: al@openerp.com-20111215184305-3yxw54l91psrz5d6
Diffstat (limited to 'addons/web/static/src/js')
-rw-r--r--addons/web/static/src/js/chrome.js15
-rw-r--r--addons/web/static/src/js/data.js7
-rw-r--r--addons/web/static/src/js/view_form.js9
-rw-r--r--addons/web/static/src/js/view_list.js25
-rw-r--r--addons/web/static/src/js/view_list_editable.js7
-rw-r--r--addons/web/static/src/js/view_page.js24
6 files changed, 67 insertions, 20 deletions
diff --git a/addons/web/static/src/js/chrome.js b/addons/web/static/src/js/chrome.js
index eb9328a6bd1..70beb7ecc34 100644
--- a/addons/web/static/src/js/chrome.js
+++ b/addons/web/static/src/js/chrome.js
@@ -956,13 +956,16 @@ openerp.web.Menu = openerp.web.Widget.extend(/** @lends openerp.web.Menu# */{
$sub_menu.css(css);
$sub_menu.mouseenter(function() {
clearTimeout($sub_menu.data('timeoutId'));
+ $sub_menu.data('timeoutId', null);
+ return false;
}).mouseleave(function(evt) {
var timeoutId = setTimeout(function() {
- if (self.folded) {
- $sub_menu.hide();
+ if (self.folded && $sub_menu.data('timeoutId')) {
+ $sub_menu.hide().unbind('mouseenter').unbind('mouseleave');
}
}, self.float_timeout);
$sub_menu.data('timeoutId', timeoutId);
+ return false;
});
}
$sub_menu.show();
@@ -988,6 +991,7 @@ openerp.web.WebClient = openerp.web.Widget.extend(/** @lends openerp.web.WebClie
* @param element_id
*/
init: function(element_id) {
+ var self = this;
this._super(null, element_id);
openerp.webclient = this;
@@ -1015,8 +1019,11 @@ openerp.web.WebClient = openerp.web.Widget.extend(/** @lends openerp.web.WebClie
var self = this;
openerp.connection.bind("",function() {
var params = {};
- if(jQuery.param != undefined && jQuery.deparam(jQuery.param.querystring()).kitten != undefined) {
- self.$element.addClass("kitten-mode-activated");
+ if (jQuery.param != undefined && jQuery.deparam(jQuery.param.querystring()).kitten != undefined) {
+ this.$element.addClass("kitten-mode-activated");
+ this.$element.delegate('img.oe-record-edit-link-img', 'hover', function(e) {
+ self.$element.toggleClass('clark-gable');
+ });
}
self.$element.html(QWeb.render("Interface", params));
openerp.connection.session_restore();
diff --git a/addons/web/static/src/js/data.js b/addons/web/static/src/js/data.js
index aec701e6e67..46393aaf205 100644
--- a/addons/web/static/src/js/data.js
+++ b/addons/web/static/src/js/data.js
@@ -510,9 +510,10 @@ openerp.web.DataSetStatic = openerp.web.DataSet.extend({
},
set_ids: function (ids) {
this.ids = ids;
- if (this.index !== null) {
- this.index = this.index <= this.ids.length - 1 ?
- this.index : (this.ids.length > 0 ? this.length - 1 : 0);
+ if (ids.length === 0) {
+ this.index = null;
+ } else if (this.index >= ids.length - 1) {
+ this.index = ids.length - 1;
}
},
unlink: function(ids) {
diff --git a/addons/web/static/src/js/view_form.js b/addons/web/static/src/js/view_form.js
index 0e7eca43eda..607bf7b8a00 100644
--- a/addons/web/static/src/js/view_form.js
+++ b/addons/web/static/src/js/view_form.js
@@ -2909,13 +2909,18 @@ openerp.web.form.FieldBinaryFile = openerp.web.form.FieldBinary.extend({
},
set_value: function(value) {
this._super.apply(this, arguments);
- var show_value = (value != null && value !== false) ? value : '';
+ var show_value;
+ if (this.node.attrs.filename) {
+ show_value = this.view.datarecord[this.node.attrs.filename] || '';
+ } else {
+ show_value = (value != null && value !== false) ? value : '';
+ }
this.$element.find('input').eq(0).val(show_value);
},
on_file_uploaded_and_valid: function(size, name, content_type, file_base64) {
this.value = file_base64;
this.binary_value = true;
- var show_value = this.human_filesize(size);
+ var show_value = name + " (" + this.human_filesize(size) + ")";
this.$element.find('input').eq(0).val(show_value);
this.set_filename(name);
},
diff --git a/addons/web/static/src/js/view_list.js b/addons/web/static/src/js/view_list.js
index 36dc71cc485..f3aa9a61703 100644
--- a/addons/web/static/src/js/view_list.js
+++ b/addons/web/static/src/js/view_list.js
@@ -17,7 +17,9 @@ openerp.web.ListView = openerp.web.View.extend( /** @lends openerp.web.ListView#
// sorted it can not be reordered anymore
'sortable': true,
// whether the view rows can be reordered (via vertical drag & drop)
- 'reorderable': true
+ 'reorderable': true,
+ // display an edit icon linking to form view
+ 'isClarkGable': true
},
/**
* Core class for list-type displays.
@@ -120,8 +122,8 @@ openerp.web.ListView = openerp.web.View.extend( /** @lends openerp.web.ListView#
'action': function (e, action_name, id, callback) {
self.do_button_action(action_name, id, callback);
},
- 'row_link': function (e, id, dataset) {
- self.do_activate_record(dataset.index, id, dataset);
+ 'row_link': function (e, id, dataset, view) {
+ self.do_activate_record(dataset.index, id, dataset, view);
}
});
},
@@ -556,9 +558,9 @@ openerp.web.ListView = openerp.web.View.extend( /** @lends openerp.web.ListView#
* @param {Object} id identifier of the activated record
* @param {openerp.web.DataSet} dataset dataset in which the record is available (may not be the listview's dataset in case of nested groups)
*/
- do_activate_record: function (index, id, dataset) {
+ do_activate_record: function (index, id, dataset, view) {
this.dataset.ids = dataset.ids;
- this.select_record(index);
+ this.select_record(index, view);
},
/**
* Handles signal for the addition of a new record (can be a creation,
@@ -818,15 +820,19 @@ openerp.web.ListView.List = openerp.web.Class.extend( /** @lends openerp.web.Lis
if (!self.dataset.select_id(row_id)) {
throw "Could not find id in dataset"
}
- self.row_clicked(e);
+ var view;
+ if ($(e.target).is('.oe-record-edit-link-img')) {
+ view = 'form';
+ }
+ self.row_clicked(e, view);
}
});
},
- row_clicked: function () {
+ row_clicked: function (e, view) {
$(this).trigger(
'row_link',
[this.dataset.ids[this.dataset.index],
- this.dataset]);
+ this.dataset, view]);
},
render_cell: function (record, column) {
var value;
@@ -887,6 +893,9 @@ openerp.web.ListView.List = openerp.web.Class.extend( /** @lends openerp.web.Lis
if (this.options.selectable) {
cells.push('<th class="oe-record-selector"></td>');
}
+ if (this.options.isClarkGable) {
+ cells.push('<th class="oe-record-edit-link"></td>');
+ }
_(this.columns).each(function(column) {
if (column.invisible === '1') {
return;
diff --git a/addons/web/static/src/js/view_list_editable.js b/addons/web/static/src/js/view_list_editable.js
index b2edf55b314..453536f7ec6 100644
--- a/addons/web/static/src/js/view_list_editable.js
+++ b/addons/web/static/src/js/view_list_editable.js
@@ -116,7 +116,7 @@ openerp.web.list_editable = function (openerp) {
openerp.web.ListView.List.include(/** @lends openerp.web.ListView.List# */{
row_clicked: function (event) {
if (!this.options.editable) {
- return this._super(event);
+ return this._super.apply(this, arguments);
}
this.edit_record($(event.currentTarget).data('id'));
},
@@ -248,7 +248,10 @@ openerp.web.list_editable = function (openerp) {
.end()
.find('td:last').removeClass('oe-field-cell').end();
if (self.options.selectable) {
- $new_row.prepend('<td>');
+ $new_row.prepend('<th>');
+ }
+ if (self.options.isClarkGable) {
+ $new_row.prepend('<th>');
}
// pad in case of groupby
_(self.columns).each(function (column) {
diff --git a/addons/web/static/src/js/view_page.js b/addons/web/static/src/js/view_page.js
index 40ca1176c79..060c95e86e3 100644
--- a/addons/web/static/src/js/view_page.js
+++ b/addons/web/static/src/js/view_page.js
@@ -200,6 +200,27 @@ openerp.web.page = function (openerp) {
openerp.web.page.FieldOne2ManyReadonly = openerp.web.form.FieldOne2Many.extend({
force_readonly: true
});
+ openerp.web.page.FieldBinaryFileReadonly = openerp.web.form.FieldBinary.extend({
+ template: 'FieldURI.readonly',
+ start: function() {
+ this._super.apply(this, arguments);
+ var self = this;
+ this.$element.find('a').click(function() {
+ if (self.value) {
+ self.on_save_as();
+ }
+ return false;
+ });
+ },
+ set_value: function(value) {
+ this._super.apply(this, arguments);
+ this.$element.find('a').show(!!value);
+ if (value) {
+ var show_value = _t("Download") + " " + (this.view.datarecord[this.node.attrs.filename] || '');
+ this.$element.find('a').text(show_value);
+ }
+ }
+ });
openerp.web.page.readonly = openerp.web.form.widgets.clone({
'frame': 'openerp.web.page.WidgetFrameReadonly',
'char': 'openerp.web.page.FieldCharReadonly',
@@ -218,6 +239,7 @@ openerp.web.page = function (openerp) {
'boolean': 'openerp.web.page.FieldBooleanReadonly',
'float': 'openerp.web.page.FieldCharReadonly',
'integer': 'openerp.web.page.FieldCharReadonly',
- 'float_time': 'openerp.web.page.FieldCharReadonly'
+ 'float_time': 'openerp.web.page.FieldCharReadonly',
+ 'binary': 'openerp.web.page.FieldBinaryFileReadonly',
});
};