* @returns {String} CSS style declaration
*/
style_for: function (record) {
- var style= '';
+ var len, style= '';
var context = _.extend({}, record.attributes, {
uid: this.session.uid,
- current_date: new Date().toString('yyyy-MM-dd')
+ current_date: moment().format('YYYY-MM-DD')
// TODO: time, datetime, relativedelta
});
var i;
// Pager
if (!this.$pager) {
- this.$pager = $(QWeb.render("ListView.pager", {'widget':self}));
+ this.$pager = $(QWeb.render("ListView.pager", {'widget':self})).hide();
if (this.options.$buttons) {
this.$pager.appendTo(this.options.$pager);
} else {
this.sidebar.$el.hide();
}
//Sort
+ var default_order = this.fields_view.arch.attrs.default_order,
+ unsorted = !this.dataset._sort.length;
+ if (unsorted && default_order) {
+ this.dataset.set_sort(default_order.split(','));
+ }
+
if(this.dataset._sort.length){
if(this.dataset._sort[0].indexOf('-') == -1){
this.$el.find('th[data-id=' + this.dataset._sort[0] + ']').addClass("sortdown");
var $column = $(e.currentTarget);
var col_name = $column.data('id');
var field = this.fields_view.fields[col_name];
- // test if the field is a function field with store=false, since it's impossible
- // for the server to sort those fields we desactivate the feature
- if (field && field.store === false) {
+ // test whether the field is sortable
+ if (field && !field.sortable) {
return false;
}
this.dataset.sort(col_name);
var total = dataset.size();
var limit = this.limit() || total;
- if (total === 0)
- this.$pager.hide();
- else
- this.$pager.css("display", "");
- this.$pager.toggleClass('oe_list_pager_single_page', (total <= limit));
+ this.$pager.find('.oe-pager-button').toggle(total > limit);
+ this.$pager.find('.oe_pager_value').toggle(total !== 0);
var spager = '-';
if (total) {
var range_start = this.page * limit + 1;
self.$el.find('.oe_list_record_selector').prop('checked', false);
this.records.reset();
var reloaded = $.Deferred();
+ reloaded.then(function () {
+ if (!self.grouped) self.$pager.show();
+ });
this.$el.find('.oe_list_content').append(
this.groups.render(function () {
if (self.dataset.index == null) {
},
reload_record: function (record) {
var self = this;
+ var fields = this.fields_view.fields;
return this.dataset.read_ids(
[record.get('id')],
_.pluck(_(this.columns).filter(function (r) {
self.records.remove(record);
return;
}
- _(_.keys(values)).each(function(key){
- record.set(key, values[key], {silent: true});
+ _.each(values, function (value, key) {
+ if (fields[key] && fields[key].type === 'many2many')
+ record.set(key + '__display', false, {silent: true});
+ record.set(key, value, {silent: true});
});
record.trigger('change', record);
});
this.$el.prepend(
$('<div class="oe_view_nocontent">').html(this.options.action.help)
);
- var create_nocontent = this.$buttons;
+ var $buttons = this.$buttons;
this.$el.find('.oe_view_nocontent').click(function() {
- create_nocontent.openerpBounce();
+ $buttons.width($buttons.width() + 1).openerpBounce();
});
}
});
}))
.end()
.find('button[data-pager-action=previous]')
- .css('visibility',
- page === 0 ? 'hidden' : '')
+ .toggleClass('disabled', page === 0)
.end()
.find('button[data-pager-action=next]')
- .css('visibility',
- page === pages - 1 ? 'hidden' : '');
+ .toggleClass('disabled', page === pages - 1);
}
}
self.setup_resequence_rows(list, dataset);
}).always(function() {
if (post_render) { post_render(); }
+ self.view.trigger('view_list_rendered');
});
});
return $el;
'button': 'instance.web.list.Button',
'field.many2onebutton': 'instance.web.list.Many2OneButton',
'field.reference': 'instance.web.list.Reference',
- 'field.many2many': 'instance.web.list.Many2Many'
+ 'field.many2many': 'instance.web.list.Many2Many',
+ 'button.toggle_button': 'instance.web.list.toggle_button',
});
instance.web.list.columns.for_ = function (id, field, node) {
var description = _.extend({tag: node.tag}, field, node.attrs);
return this._super(row_data, options);
}
});
+instance.web.list.toggle_button = instance.web.list.Column.extend({
+ format: function (row_data, options) {
+ this._super(row_data, options);
+ var button_tips = JSON.parse(this.options);
+ var fieldname = this.field_name;
+ var has_value = row_data[fieldname] && !!row_data[fieldname].value;
+ this.icon = has_value ? 'gtk-yes' : 'gtk-normal';
+ this.string = has_value ? _t(button_tips ? button_tips['active']: ''): _t(button_tips ? button_tips['inactive']: '');
+ return QWeb.render('toggle_button', {
+ widget: this,
+ prefix: instance.session.prefix,
+ });
+ },
+});
})();
-// vim:et fdc=0 fdl=0 foldnestmax=3 fdm=syntax: