changeset 584be2585d2a in sao:default
details: https://hg.tryton.org/sao?cmd=changeset;node=584be2585d2a
description:
Use properties
issue8109
review47811003
diffstat:
CHANGELOG | 1 +
src/board.js | 2 +-
src/model.js | 162 ++++++++++++++-------------
src/sao.js | 2 +-
src/screen.js | 108 +++++++++---------
src/tab.js | 24 ++--
src/view.js | 2 +-
src/view/calendar.js | 4 +-
src/view/form.js | 296 +++++++++++++++++++++++++-------------------------
src/view/graph.js | 6 +-
src/view/tree.js | 16 +-
src/window.js | 14 +-
12 files changed, 325 insertions(+), 312 deletions(-)
diffs (2039 lines):
diff -r 1c4f97a23a8f -r 584be2585d2a CHANGELOG
--- a/CHANGELOG Wed Feb 13 16:05:41 2019 +0100
+++ b/CHANGELOG Thu Feb 14 16:31:31 2019 +0100
@@ -1,3 +1,4 @@
+* Use properties
* Allow sao classes to use javascript properties
* Improve layout of CSV import/export
* Add support for height and width on notebook
diff -r 1c4f97a23a8f -r 584be2585d2a src/board.js
--- a/src/board.js Wed Feb 13 16:05:41 2019 +0100
+++ b/src/board.js Thu Feb 14 16:31:31 2019 +0100
@@ -274,7 +274,7 @@
if (this.screen.current_view.view_type == 'tree' &&
(this.screen.current_view.attributes.keyword_open == 1)) {
- record_ids = this.screen.current_view.selected_records().map(
+ record_ids = this.screen.current_view.selected_records.map(
function(record) { return record.id; });
Sao.Action.exec_keyword('tree_open', {
model: this.screen.model_name,
diff -r 1c4f97a23a8f -r 584be2585d2a src/model.js
--- a/src/model.js Wed Feb 13 16:05:41 2019 +0100
+++ b/src/model.js Thu Feb 14 16:31:31 2019 +0100
@@ -64,19 +64,21 @@
array.forEach(function(e, i, a) {
e.group = a;
});
- array.get_readonly = function() {
- // Must skip res.user for Preference windows
- var access = Sao.common.MODELACCESS.get(this.model.name);
- if (this.context()._datetime ||
+ Object.defineProperty(array, 'readonly', {
+ get: function() {
+ // Must skip res.user for Preference windows
+ var access = Sao.common.MODELACCESS.get(this.model.name);
+ if (this.context._datetime ||
(!(access.write || access.create) &&
- !this.skip_model_access)) {
- return true;
+ !this.skip_model_access)) {
+ return true;
+ }
+ return this.__readonly;
+ },
+ set: function(value) {
+ this.__readonly = value;
}
- return this.__readonly;
- };
- array.set_readonly = function(value) {
- this.__readonly = value;
- };
+ });
array.load = function(ids, modified) {
var new_records = [];
var i, len;
@@ -112,7 +114,7 @@
new_records.forEach(function(record) {
record._changed.id = true;
});
- var root_group = this.root_group();
+ var root_group = this.root_group;
this.changed().then(function() {
root_group.screens.forEach(function(screen) {
screen.display();
@@ -247,17 +249,17 @@
if (jQuery.isEmptyObject(records)) {
return jQuery.when();
}
- var root_group = this.root_group();
+ var root_group = this.root_group;
console.assert(records.every(function(r) {
return r.model.name == this.model.name;
}.bind(this)), 'records not from the same model');
console.assert(records.every(function(r) {
- return r.group.root_group() == root_group;
+ return r.group.root_group == root_group;
}), 'records not from the same root group');
records = records.filter(function(record) {
return record.id >= 0;
});
- var context = this.context();
+ var context = this.context;
context._timestamp = {};
records.forEach(function(record) {
jQuery.extend(context._timestamp, record.get_timestamp());
@@ -275,15 +277,17 @@
});
}.bind(this));
};
- array.root_group = function() {
- var root = this;
- var parent = this.parent;
- while (parent) {
- root = parent.group;
- parent = parent.parent;
+ Object.defineProperty(array, 'root_group', {
+ get: function() {
+ var root = this;
+ var parent = this.parent;
+ while (parent) {
+ root = parent.group;
+ parent = parent.parent;
+ }
+ return root;
}
- return root;
- };
+ });
array.save = function() {
var deferreds = [];
this.forEach(function(record) {
@@ -306,7 +310,7 @@
to_reload = to_reload.filter(function(e) {
return !~ids.indexOf(e);
});
- this.root_group().reload(to_reload);
+ this.root_group.reload(to_reload);
}.bind(this));
};
array.reload = function(ids) {
@@ -354,12 +358,12 @@
}
});
if (new_.length && added.length) {
- this.model.execute('default_get', [added, this.context()])
+ this.model.execute('default_get', [added, this.context])
.then(function(values) {
new_.forEach(function(record) {
record.set_default(values, true, false);
});
- this.root_group().screens.forEach(function(screen) {
+ this.root_group.screens.forEach(function(screen) {
return screen.display();
});
}.bind(this));
@@ -374,41 +378,45 @@
}
this.parent = null;
};
- array.domain = function() {
- var domain = [];
- this.screens.forEach(function(screen) {
- if (screen.attributes.domain) {
- domain.push(screen.attributes.domain);
- }
- });
- if (this.parent && this.child_name) {
- var field = this.parent.model.fields[this.child_name];
- return [domain, field.get_domain(this.parent)];
- } else {
- return domain;
- }
- };
- array.context = function() {
- var context = jQuery.extend({}, this.model.session.context);
- if (this.parent) {
- var parent_context = this.parent.get_context();
- jQuery.extend(context, parent_context);
- if (this.child_name in this.parent.model.fields) {
+ Object.defineProperty(array, 'domain', {
+ get: function() {
+ var domain = [];
+ this.screens.forEach(function(screen) {
+ if (screen.attributes.domain) {
+ domain.push(screen.attributes.domain);
+ }
+ });
+ if (this.parent && this.child_name) {
var field = this.parent.model.fields[this.child_name];
- jQuery.extend(context, field.get_context(
- this.parent, parent_context));
+ return [domain, field.get_domain(this.parent)];
+ } else {
+ return domain;
}
}
- jQuery.extend(context, this._context);
- if (this.parent_datetime_field) {
- context._datetime = this.parent.get_eval()
- [this.parent_datetime_field];
+ });
+ Object.defineProperty(array, 'context', {
+ get: function() {
+ var context = jQuery.extend({}, this.model.session.context);
+ if (this.parent) {
+ var parent_context = this.parent.get_context();
+ jQuery.extend(context, parent_context);
+ if (this.child_name in this.parent.model.fields) {
+ var field = this.parent.model.fields[this.child_name];
+ jQuery.extend(context, field.get_context(
+ this.parent, parent_context));
+ }
+ }
+ jQuery.extend(context, this._context);
+ if (this.parent_datetime_field) {
+ context._datetime = this.parent.get_eval()
+ [this.parent_datetime_field];
+ }
+ return context;
+ },
+ set: function(context) {
+ this._context = jQuery.extend({}, context);
}
- return context;
- };
- array.set_context = function(context) {
- this._context = jQuery.extend({}, context);
- };
+ });
array.clean4inversion = function(domain) {
if (jQuery.isEmptyObject(domain)) {
return [];
@@ -429,7 +437,7 @@
return [head].concat(this.clean4inversion(tail));
};
array.domain4inversion = function() {
- var domain = this.domain();
+ var domain = this.domain;
if (!this.__domain4inversion ||
!Sao.common.compare(this.__domain4inversion[0], domain)) {
this.__domain4inversion = [domain,
this.clean4inversion(domain)];
@@ -809,7 +817,7 @@
return fields;
},
get_context: function() {
- return this.group.context();
+ return this.group.context;
},
field_get: function(name) {
return this.model.fields[name].get(this);
@@ -885,7 +893,7 @@
return this.on_change_with(fieldnames).then(function() {
var callback = function() {
if (display) {
- return this.group.root_group().screens
+ return this.group.root_group.screens
.forEach(function(screen) {
return screen.display();
});
@@ -1197,7 +1205,7 @@
return Sao.common.compare(Object.keys(this.model.fields).sort(),
Object.keys(this._loaded).sort());
},
- root_parent: function root_parent() {
+ get root_parent() {
var parent = this;
while (parent.group.parent) {
parent = parent.group.parent;
@@ -1232,14 +1240,14 @@
path.reverse();
return path;
},
- deleted: function() {
+ get deleted() {
return Boolean(~this.group.record_deleted.indexOf(this));
},
- removed: function() {
+ get removed() {
return Boolean(~this.group.record_removed.indexOf(this));
},
- readonly: function() {
- return this.deleted() || this.removed() || this.exception;
+ get readonly() {
+ return this.deleted || this.removed || this.exception;
},
set_field_context: function() {
for (var name in this.model.fields) {
@@ -1248,12 +1256,14 @@
}
var field = this.model.fields[name];
var value = this._values[name];
- if (!value || !value.set_context) {
+ var context_descriptor = Object.getOwnPropertyDescriptor(
+ value, 'context');
+ if (!value || !context_descriptor.set) {
continue;
}
var context = field.description.context;
if (context) {
- value.set_context(this.expr_eval(context));
+ value.context = this.expr_eval(context);
}
}
},
@@ -1396,7 +1406,7 @@
record._changed[this.name] = true;
this.changed(record).done(function() {
record.validate(null, true).then(function() {
- var root_group = record.group.root_group();
+ var root_group = record.group.root_group;
root_group.screens.forEach(function(screen) {
screen.display();
});
@@ -1495,7 +1505,7 @@
this.description[state];
}
}.bind(this));
- if (record.group.get_readonly() ||
+ if (record.group.readonly ||
this.get_state_attrs(record).domain_readonly) {
this.get_state_attrs(record).readonly = true;
}
@@ -1505,7 +1515,7 @@
record.state_attrs[this.name] = jQuery.extend(
{}, this.description);
}
- if (record.group.get_readonly() || record.readonly()) {
+ if (record.group.readonly || record.readonly) {
record.state_attrs[this.name].readonly = true;
}
return record.state_attrs[this.name];
@@ -1559,8 +1569,8 @@
}
var setdefault = true;
var original_domain;
- if (!jQuery.isEmptyObject(record.group.domain())) {
- original_domain =
inversion.merge(record.group.domain());
+ if (!jQuery.isEmptyObject(record.group.domain)) {
+ original_domain = inversion.merge(record.group.domain);
} else {
original_domain = inversion.merge(domain);
}
@@ -1673,7 +1683,7 @@
Sao.field.TimeDelta = Sao.class_(Sao.field.Field, {
_default: null,
converter: function(group) {
- return group.context()[this.description.converter];
+ return group.context[this.description.converter];
},
set_client: function(record, value, force_change) {
if (typeof(value) == 'string') {
@@ -1848,7 +1858,7 @@
'params': [[value], ['rec_name'], record.get_context()]
}, record.model.session).done(store_rec_name.bind(this)).done(
function() {
- record.group.root_group().screens.forEach(
+ record.group.root_group.screens.forEach(
function(screen) {
screen.display();
});
@@ -2083,7 +2093,7 @@
record._changed[this.name] = true;
this.changed(record).done(function() {
record.validate(null, true).then(function() {
- var root_group = record.group.root_group();
+ var root_group = record.group.root_group;
root_group.screens.forEach(function(screen) {
screen.display();
});
@@ -2242,7 +2252,7 @@
for (var i = 0, len = record._values[this.name].length; i < len;
i++) {
var record2 = group[i];
- if (!record2.deleted() && !record2.removed())
+ if (!record2.deleted && !record2.removed)
result.push(record2.get_on_change_value(
[this.description.relation_field || '']));
}
diff -r 1c4f97a23a8f -r 584be2585d2a src/sao.js
--- a/src/sao.js Wed Feb 13 16:05:41 2019 +0100
+++ b/src/sao.js Thu Feb 14 16:31:31 2019 +0100
@@ -883,7 +883,7 @@
var ir_model = new Sao.Model('ir.model');
return ir_model.execute('global_search',
[text, Sao.config.limit, Sao.main_menu_screen.model_name],
- Sao.main_menu_screen.context())
+ Sao.main_menu_screen.context)
.then(function(s_results) {
var results = [];
for (var i=0, len=s_results.length; i < len; i++) {
diff -r 1c4f97a23a8f -r 584be2585d2a src/screen.js
--- a/src/screen.js Wed Feb 13 16:05:41 2019 +0100
+++ b/src/screen.js Thu Feb 14 16:31:31 2019 +0100
@@ -200,7 +200,7 @@
this.bookmark_match();
},
update: function() {
- var completions = this.screen.domain_parser().completion(
+ var completions = this.screen.domain_parser.completion(
this.get_text());
this.search_list.children().remove();
completions.forEach(function(e) {
@@ -247,13 +247,13 @@
if (!name) {
return;
}
- var domain = this.screen.domain_parser().parse(text);
+ var domain = this.screen.domain_parser.parse(text);
Sao.common.VIEW_SEARCH.add(model_name, name, domain)
.then(function() {
refresh();
});
this.set_text(
- this.screen.domain_parser().string(domain));
+ this.screen.domain_parser.string(domain));
}.bind(this));
} else {
var id = this.bookmark_match();
@@ -265,19 +265,19 @@
bookmarks: function() {
var searches = Sao.common.VIEW_SEARCH.get(this.screen.model_name);
return searches.filter(function(search) {
- return this.screen.domain_parser().stringable(search[2]);
+ return this.screen.domain_parser.stringable(search[2]);
}.bind(this));
},
bookmark_activate: function(e) {
e.preventDefault();
var domain = e.data;
- this.set_text(this.screen.domain_parser().string(domain));
+ this.set_text(this.screen.domain_parser.string(domain));
this.do_search();
},
bookmark_match: function() {
var current_text = this.get_text();
if (current_text) {
- var current_domain = this.screen.domain_parser().parse(
+ var current_domain = this.screen.domain_parser.parse(
current_text);
this.but_star.prop('disabled', !current_text);
var star = this.get_star();
@@ -286,7 +286,7 @@
var id = bookmarks[i][0];
var name = bookmarks[i][1];
var domain = bookmarks[i][2];
- var text = this.screen.domain_parser().string(domain);
+ var text = this.screen.domain_parser.string(domain);
if ((text === current_text) ||
(Sao.common.compare(domain, current_domain))) {
this.set_star(true);
@@ -387,7 +387,7 @@
return this.search_entry.val();
},
search_box: function() {
- var domain_parser = this.screen.domain_parser();
+ var domain_parser = this.screen.domain_parser;
var search = function() {
this.search_modal.modal('hide');
var text = '';
@@ -487,7 +487,7 @@
case 'time':
var format;
var date_format = Sao.common.date_format(
- this.screen.context().date_format);
+ this.screen.context.date_format);
if (field.type == 'date') {
format = date_format;
} else {
@@ -760,7 +760,7 @@
view = this.views_preload[view_type];
} else {
var prm = this.model.execute('fields_view_get',
- [view_id, view_type], this.context());
+ [view_id, view_type], this.context);
return prm.pipe(this.add_view.bind(this));
}
this.add_view(view);
@@ -798,7 +798,7 @@
return view_widget;
},
- number_of_views: function() {
+ get number_of_views() {
return this.views.length + this.view_to_load.length;
},
switch_view: function(view_type, view_id) {
@@ -891,20 +891,20 @@
this.context_screen.display(true);
return jQuery.when();
}
- this.new_group(jQuery.extend(this.context(),
+ this.new_group(jQuery.extend(this.context,
this.context_screen.get_on_change_value()));
}
var domain = this.search_domain(search_string, true);
if (this.context_domain) {
- var decoder = new Sao.PYSON.Decoder(this.context());
+ var decoder = new Sao.PYSON.Decoder(this.context);
domain = ['AND', domain, decoder.decode(this.context_domain)];
}
var tab_domain = this.screen_container.get_tab_domain();
if (!jQuery.isEmptyObject(tab_domain)) {
domain = ['AND', domain, tab_domain];
}
- var context = this.context();
+ var context = this.context;
if (this.screen_container.but_active.hasClass('active')) {
context.active_test = false;
}
@@ -960,8 +960,8 @@
var domain = [];
// Test first parent to avoid calling unnecessary domain_parser
- if (!this.group.parent && this.domain_parser()) {
- var domain_parser = this.domain_parser();
+ if (!this.group.parent && this.domain_parser) {
+ var domain_parser = this.domain_parser;
if (search_string || search_string === '') {
domain = domain_parser.parse(search_string);
} else {
@@ -1010,15 +1010,15 @@
var domain = ['AND', tab_domain[1], screen_domain];
this.screen_container.set_tab_counter(null, i);
this.group.model.execute(
- 'search_count', [domain], this.context())
+ 'search_count', [domain], this.context)
.then(function(count) {
this.screen_container.set_tab_counter(count, i);
}.bind(this));
}
}.bind(this));
},
- context: function() {
- var context = this.group.context();
+ get context() {
+ var context = this.group.context;
if ( this.context_screen ){
context.context_model = this.context_screen.model_name;
}
@@ -1050,9 +1050,9 @@
this.group = group;
this.model = group.model;
if (group && group.length) {
- this.set_current_record(group[0]);
+ this.current_record = group[0];
} else {
- this.set_current_record(null);
+ this.current_record = null;
}
this.group.add_fields(fields);
var views_add = function(view) {
@@ -1066,14 +1066,17 @@
},
new_group: function(context) {
if (!context) {
- context = this.context();
+ context = this.context;
}
var group = new Sao.Group(this.model, context, []);
- group.set_readonly(this.attributes.readonly || false);
+ group.readonly = this.attributes.readonly || false;
this.set_group(group);
},
- set_current_record: function(record) {
- this.current_record = record;
+ get current_record() {
+ return this.__current_record;
+ },
+ set current_record(record) {
+ this.__current_record = record;
if (this.message_callback){
var pos = null;
var record_id = null;
@@ -1149,7 +1152,7 @@
}
return jQuery.when.apply(jQuery, deferreds).then(function() {
return this.set_tree_state().then(function() {
- this.set_current_record(this.current_record);
+ this.current_record = this.current_record;
// set_cursor must be called after set_tree_state because
// set_tree_state redraws the tree
if (set_cursor) {
@@ -1180,9 +1183,9 @@
break;
}
}
- this.set_current_record(record);
+ this.current_record = record;
} else {
- this.set_current_record(this.group[0]);
+ this.current_record = this.group[0];
}
this.set_cursor(false, false);
view.display();
@@ -1209,9 +1212,9 @@
break;
}
}
- this.set_current_record(record);
+ this.current_record = record;
} else {
- this.set_current_record(this.group[0]);
+ this.current_record = this.group[0];
}
this.set_cursor(false, false);
view.display();
@@ -1271,7 +1274,7 @@
}
return prm.then(function() {
group.add(record, this.new_model_position());
- this.set_current_record(record);
+ this.current_record = record;
var prm = jQuery.when();
if (previous_view.view_type == 'calendar') {
prm = previous_view.set_default_date(
@@ -1323,7 +1326,7 @@
if (!current_record) {
if ((this.current_view.view_type == 'tree') &&
this.group && this.group.length) {
- this.set_current_record(this.group[0]);
+ this.current_record = this.group[0];
current_record = this.current_record;
} else {
return jQuery.when();
@@ -1357,7 +1360,7 @@
[path[path.length - 1][0], current_record.id]);
}
return this.group.get_by_path(path).then(function(record) {
- this.set_current_record(record);
+ this.current_record = record;
}.bind(this));
}.bind(this)).then(function() {
this.display().always(dfd.resolve);
@@ -1392,14 +1395,14 @@
return false;
},
unremove: function() {
- var records = this.current_view.selected_records();
+ var records = this.current_view.selected_records;
records.forEach(function(record) {
record.group.unremove(record);
});
},
remove: function(delete_, remove, force_remove, records) {
var prm = jQuery.when();
- records = records || this.current_view.selected_records();
+ records = records || this.current_view.selected_records;
if (jQuery.isEmptyObject(records)) {
return prm;
}
@@ -1440,10 +1443,10 @@
}
if (!jQuery.isEmptyObject(path)) {
prms.push(this.group.get_by_path(path).then(function(record) {
- this.set_current_record(record);
+ this.current_record = record;
}.bind(this)));
} else if (this.group.length) {
- this.set_current_record(this.group[0]);
+ this.current_record = this.group[0];
}
return jQuery.when.apply(jQuery, prms).then(function() {
@@ -1455,12 +1458,12 @@
},
copy: function() {
var dfd = jQuery.Deferred();
- var records = this.current_view.selected_records();
- this.model.copy(records, this.context())
+ var records = this.current_view.selected_records;
+ this.model.copy(records, this.context)
.then(function(new_ids) {
this.group.load(new_ids);
if (!jQuery.isEmptyObject(new_ids)) {
- this.set_current_record(this.group.get(new_ids[0]));
+ this.current_record = this.group.get(new_ids[0]);
}
this.display().always(dfd.resolve);
}.bind(this), dfd.reject);
@@ -1475,7 +1478,7 @@
}
return jQuery.when();
},
- domain_parser: function() {
+ get domain_parser() {
var view_id, view_tree, domain_parser;
if (this.current_view) {
view_id = this.current_view.view_id;
@@ -1487,7 +1490,7 @@
}
if (!(view_id in this.fields_view_tree)) {
view_tree = this.model.execute('fields_view_get', [false,
'tree'],
- this.context(), false);
+ this.context, false);
this.fields_view_tree[view_id] = view_tree;
} else {
view_tree = this.fields_view_tree[view_id];
@@ -1566,8 +1569,7 @@
}
});
- domain_parser = new Sao.common.DomainParser(
- fields, this.context());
+ domain_parser = new Sao.common.DomainParser(fields, this.context);
this._domain_parser[view_id] = domain_parser;
return domain_parser;
},
@@ -1666,12 +1668,12 @@
this.group.written(ids);
}
if (this.group.parent) {
- this.group.parent.root_parent().reload();
+ this.group.parent.root_parent.reload();
}
return this.display();
},
get_buttons: function() {
- var selected_records = this.current_view.selected_records();
+ var selected_records = this.current_view.selected_records;
if (jQuery.isEmptyObject(selected_records)) {
return [];
}
@@ -1700,12 +1702,12 @@
model: this.model_name,
id: this.current_record.id,
ids: ids
- }, null, this.context(), true);
+ }, null, this.context, true);
}
}.bind(this));
};
- var selected_records = this.current_view.selected_records();
+ var selected_records = this.current_view.selected_records;
this.current_view.set_value();
var fields = this.current_view.get_fields();
@@ -1747,16 +1749,16 @@
var args = record.expr_eval(attributes.change || []);
var values = record._get_on_change_args(args);
return record.model.execute(attributes.name, [values],
- this.context()).then(function(changes) {
+ this.context).then(function(changes) {
record.set_on_change(changes);
- record.group.root_group().screens.forEach(
+ record.group.root_group.screens.forEach(
function(screen) {
screen.display();
});
});
} else {
return record.save(false).then(function() {
- var context = this.context();
+ var context = this.context;
context._timestamp = {};
ids = [];
for (i = 0; i < selected_records.length; i++) {
@@ -1836,7 +1838,7 @@
function(v) {return v.view_id;}).concat(this.view_ids);
if (this.current_view.view_type != 'form') {
var search_string = this.screen_container.get_text();
- var search_value = this.domain_parser().parse(search_string);
+ var search_value = this.domain_parser.parse(search_string);
if (!jQuery.isEmptyObject(search_value)) {
query_string.push(['search_value', dumps(search_value)]);
}
@@ -1980,7 +1982,7 @@
}
}
if (record && (record != this.current_record)) {
- this.set_current_record(record);
+ this.current_record = record;
// Force a display of the view to synchronize the
// widgets with the new record
view.display();
diff -r 1c4f97a23a8f -r 584be2585d2a src/tab.js
--- a/src/tab.js Wed Feb 13 16:05:41 2019 +0100
+++ b/src/tab.js Thu Feb 14 16:31:31 2019 +0100
@@ -524,7 +524,7 @@
var screen = this.screen;
var buttons = this.buttons;
var prm = screen.model.execute('view_toolbar_get', [],
- screen.context());
+ screen.context);
prm.done(function(toolbars) {
[
['action', 'tryton-launch',
@@ -637,7 +637,7 @@
}).append(name))
.click(function(evt) {
evt.preventDefault();
- var ids =
screen.current_view.selected_records()
+ var ids = screen.current_view.selected_records
.map(function(record) {
return record.id;
});
@@ -675,7 +675,7 @@
record_id = screen.current_record.id;
}
var record_ids = screen.current_view
- .selected_records().map(function(record) {
+ .selected_records.map(function(record) {
return record.id;
});
exec_action = Sao.Action.evaluate(exec_action,
@@ -686,7 +686,7 @@
ids: record_ids
};
Sao.Action.exec_action(exec_action, data,
- screen.context());
+ screen.context);
});
}.bind(this))
.appendTo(menu);
@@ -797,7 +797,7 @@
.then(function() {
this.screen.group.forEach(function(record) {
if (record.id == record_id) {
- this.screen.set_current_record(record);
+ this.screen.current_record = record;
set_cursor = true;
}
}.bind(this));
@@ -903,7 +903,7 @@
return this.screen.model.execute('read', [[record.id],
fields.map(function(field) {
return field[0];
- })], this.screen.context())
+ })], this.screen.context)
.then(function(result) {
result = result[0];
var message = '';
@@ -939,7 +939,7 @@
(revision < revisions[revisions.length - 1][0])) {
revision = revisions[revisions.length - 1][0];
}
- if (revision != this.screen.context()._datetime) {
+ if (revision != this.screen.context._datetime) {
this.screen.clear();
// Update group context that will be propagated by
// recreating new group
@@ -957,19 +957,19 @@
}.bind(this);
}.bind(this);
return this.modified_save().then(function() {
- var ids = this.screen.current_view.selected_records().map(
+ var ids = this.screen.current_view.selected_records.map(
function(record) {
return record.id;
});
return this.screen.model.execute('history_revisions',
- [ids], this.screen.context())
+ [ids], this.screen.context)
.then(function(revisions) {
new Sao.Window.Revision(revisions,
set_revision(revisions));
});
}.bind(this));
},
update_revision: function() {
- var revision = this.screen.context()._datetime;
+ var revision = this.screen.context._datetime;
var label, title;
if (revision) {
var date_format = Sao.common.date_format();
@@ -1273,11 +1273,11 @@
export: function(){
new Sao.Window.Export(
this.title.text(), this.screen,
- this.screen.current_view.selected_records().map(function(r) {
+ this.screen.current_view.selected_records.map(function(r) {
return r.id;
}),
this.screen.current_view.get_fields(),
- this.screen.context());
+ this.screen.context);
},
import: function(){
new Sao.Window.Import(this.title.text(), this.screen);
diff -r 1c4f97a23a8f -r 584be2585d2a src/view.js
--- a/src/view.js Wed Feb 13 16:05:41 2019 +0100
+++ b/src/view.js Thu Feb 14 16:31:31 2019 +0100
@@ -23,7 +23,7 @@
get_fields: function() {
return Object.keys(this.fields);
},
- selected_records: function() {
+ get selected_records() {
return [];
},
get_buttons: function() {
diff -r 1c4f97a23a8f -r 584be2585d2a src/view/calendar.js
--- a/src/view/calendar.js Wed Feb 13 16:05:41 2019 +0100
+++ b/src/view/calendar.js Thu Feb 14 16:31:31 2019 +0100
@@ -171,7 +171,7 @@
// when loading
if (!this.clicked_event) {
this.clicked_event = true;
- this.screen.set_current_record(calEvent.record);
+ this.screen.current_record = calEvent.record;
this.screen.switch_view().always(function(){
this.clicked_event = false;
}.bind(this));
@@ -253,7 +253,7 @@
if (model_access.create) {
// Set the calendar date to the clicked date
this.el.fullCalendar('gotoDate', date);
- this.screen.set_current_record(null);
+ this.screen.current_record = null;
this.screen.new_();
}
},
diff -r 1c4f97a23a8f -r 584be2585d2a src/view/form.js
--- a/src/view/form.js Wed Feb 13 16:05:41 2019 +0100
+++ b/src/view/form.js Thu Feb 14 16:31:31 2019 +0100
@@ -411,7 +411,7 @@
button.el.prop('disabled', false);
});
},
- selected_records: function() {
+ get selected_records() {
if (this.screen.current_record) {
return [this.screen.current_record];
}
@@ -1032,8 +1032,8 @@
this.labelled = null; // Element which received the labelledby
},
display: function() {
- var field = this.field();
- var record = this.record();
+ var field = this.field;
+ var record = this.record;
var readonly = this.attributes.readonly;
var invisible = this.attributes.invisible;
var required = this.attributes.required;
@@ -1089,7 +1089,7 @@
invalid_el.removeClass('has-error');
}
if (invisible === undefined) {
- invisible = field.get_state_attrs(this.record()).invisible;
+ invisible = field.get_state_attrs(this.record).invisible;
if (invisible === undefined) {
invisible = false;
}
@@ -1102,19 +1102,19 @@
_invalid_el: function() {
return this.el;
},
- record: function() {
+ get record() {
if (this.view && this.view.screen) {
return this.view.screen.current_record;
}
},
- field: function() {
- var record = this.record();
+ get field() {
+ var record = this.record;
if (record) {
return record.model.fields[this.field_name];
}
},
focus_out: function() {
- if (!this.field()) {
+ if (!this.field) {
return;
}
if (!this.visible) {
@@ -1183,7 +1183,7 @@
var context = {};
context.language = lang.code;
var params = [
- [widget.record().id],
+ [widget.record.id],
[widget.field_name],
context
];
@@ -1214,7 +1214,7 @@
value = result[0][widget.field_name];
}.bind(this));
params = [
- [widget.record().id],
+ [widget.record.id],
[widget.field_name],
context
];
@@ -1267,7 +1267,7 @@
var values = {};
values[widget.field_name] =
widget.translate_widget_get(input);
var params = [
- [widget.record().id],
+ [widget.record.id],
values,
context
];
@@ -1281,7 +1281,7 @@
}.bind(this));
this.close(dialog);
jQuery.when.apply(jQuery, promises).then(function() {
- widget.record().cancel();
+ widget.record.cancel();
widget.view.display();
});
}
@@ -1307,7 +1307,7 @@
}
};
Sao.View.Form.TranslateMixin.translate = function() {
- if (this.record().id < 0 || this.record().has_changed()) {
+ if (this.record.id < 0 || this.record.has_changed()) {
var mg = Sao.i18n.gettext(
'You need to save the record before adding translations.');
Sao.common.message.run(mg);
@@ -1389,8 +1389,8 @@
}
},
get_client_value: function() {
- var field = this.field();
- var record = this.record();
+ var field = this.field;
+ var record = this.record;
var value = '';
if (field) {
value = field.get_client(record);
@@ -1400,7 +1400,7 @@
display: function() {
Sao.View.Form.Char._super.display.call(this);
- var record = this.record();
+ var record = this.record;
if (this.datalist) {
this.datalist.children().remove();
var set_autocompletion = function() {
@@ -1436,7 +1436,7 @@
this.group.css('width', width);
},
set_value: function() {
- this.field().set_client(this.record(), this.input.val());
+ this.field.set_client(this.record, this.input.val());
},
set_readonly: function(readonly) {
this.input.prop('readonly', readonly);
@@ -1556,7 +1556,7 @@
}.bind(this));
},
get_format: function() {
- return this.field().date_format(this.record());
+ return this.field.date_format(this.record);
},
get_value: function() {
var value = this.date.data('DateTimePicker').date();
@@ -1566,8 +1566,8 @@
return value;
},
display: function() {
- var record = this.record();
- var field = this.field();
+ var record = this.record;
+ var field = this.field;
if (record && field) {
this.date.data('DateTimePicker').format(
Sao.common.moment_format(this.get_format()));
@@ -1590,7 +1590,7 @@
this.input.focus();
},
set_value: function() {
- this.field().set_client(this.record(), this.get_value());
+ this.field.set_client(this.record, this.get_value());
},
set_readonly: function(readonly) {
this.date.find('button').prop('disabled', readonly);
@@ -1602,8 +1602,8 @@
class_: 'form-datetime',
_width: '20em',
get_format: function() {
- var record = this.record();
- var field = this.field();
+ var record = this.record;
+ var field = this.field;
return field.date_format(record) + ' ' + field.time_format(record);
},
get_value: function() {
@@ -1619,7 +1619,7 @@
class_: 'form-time',
_width: '10em',
get_format: function() {
- return this.field().time_format(this.record());
+ return this.field.time_format(this.record);
},
get_value: function() {
var value = this.date.data('DateTimePicker').date();
@@ -1646,7 +1646,7 @@
},
display: function() {
Sao.View.Form.TimeDelta._super.display.call(this);
- var record = this.record();
+ var record = this.record;
if (record) {
var value = record.field_get_client(this.field_name);
this.input.val(value || '');
@@ -1658,7 +1658,7 @@
this.input.focus();
},
set_value: function() {
- this.field().set_client(this.record(), this.input.val());
+ this.field.set_client(this.record, this.input.val());
},
set_readonly: function(readonly) {
this.input.prop('readonly', readonly);
@@ -1698,14 +1698,14 @@
this.factor = Number(attributes.factor || 1);
},
set_value: function() {
- this.field().set_client(
- this.record(), this.input.val(), undefined, this.factor);
+ this.field.set_client(
+ this.record, this.input.val(), undefined, this.factor);
},
get_client_value: function() {
var value = '';
- var field = this.field();
+ var field = this.field;
if (field) {
- value = field.get(this.record());
+ value = field.get(this.record);
if (value !== null) {
value *= this.factor;
}
@@ -1714,10 +1714,10 @@
},
display: function() {
Sao.View.Form.Integer._super.display.call(this);
- var field = this.field();
+ var field = this.field;
var value = '';
if (field) {
- value = field.get_client(this.record(), this.factor);
+ value = field.get_client(this.record, this.factor);
}
this.input_text.val(value);
this.input_text.attr('maxlength', this.input.attr('maxlength'));
@@ -1740,8 +1740,8 @@
Sao.View.Form.Float = Sao.class_(Sao.View.Form.Integer, {
class_: 'form-float',
display: function() {
- var record = this.record();
- var field = this.field();
+ var record = this.record;
+ var field = this.field;
var step = 'any';
if (record) {
var digits = field.digits(record, this.factor);
@@ -1794,8 +1794,8 @@
});
},
display_update_selection: function() {
- var record = this.record();
- var field = this.field();
+ var record = this.record;
+ var field = this.field;
this.update_selection(record, field, function() {
if (!field) {
this.select.val('');
@@ -1839,7 +1839,7 @@
},
set_value: function() {
var value = this.value_get();
- this.field().set_client(this.record(), value);
+ this.field.set_client(this.record, value);
},
set_readonly: function(readonly) {
this.select.prop('disabled', readonly);
@@ -1867,7 +1867,7 @@
},
display: function() {
Sao.View.Form.Boolean._super.display.call(this);
- var record = this.record();
+ var record = this.record;
if (record) {
this.input.prop('checked', record.field_get(this.field_name));
} else {
@@ -1879,7 +1879,7 @@
},
set_value: function() {
var value = this.input.prop('checked');
- this.field().set_client(this.record(), value);
+ this.field.set_client(this.record, value);
},
set_readonly: function(readonly) {
this.input.prop('readonly', readonly);
@@ -1915,7 +1915,7 @@
},
display: function() {
Sao.View.Form.Text._super.display.call(this);
- var record = this.record();
+ var record = this.record;
if (record) {
var value = record.field_get_client(this.field_name);
this.input.val(value);
@@ -1933,7 +1933,7 @@
},
set_value: function() {
var value = this.input.val() || '';
- this.field().set_client(this.record(), value);
+ this.field.set_client(this.record, value);
},
set_readonly: function(readonly) {
this.input.prop('readonly', readonly);
@@ -2107,7 +2107,7 @@
display: function() {
Sao.View.Form.RichText._super.display.call(this);
var value = '';
- var record = this.record();
+ var record = this.record;
if (record) {
value = record.field_get_client(this.field_name);
if(this.attributes.spell) {
@@ -2125,13 +2125,13 @@
// avoid modification of not normalized value
this._normalize(this.input);
var value = this.input.html() || '';
- var previous = this.field().get_client(this.record());
+ var previous = this.field.get_client(this.record);
var previous_el = jQuery('<div/>').html(previous || '');
this._normalize(previous_el);
if (value == previous_el.html()) {
value = previous;
}
- this.field().set_client(this.record(), value);
+ this.field.set_client(this.record, value);
},
_normalize: function(el) {
// TODO order attributes
@@ -2234,8 +2234,8 @@
this._readonly = false;
},
get_screen: function() {
- var domain = this.field().get_domain(this.record());
- var context = this.field().get_context(this.record());
+ var domain = this.field.get_domain(this.record);
+ var context = this.field.get_context(this.record);
var view_ids = (this.attributes.view_ids || '').split(',');
if (!jQuery.isEmptyObject(view_ids)) {
// Remove the first tree view as mode is form only
@@ -2257,7 +2257,7 @@
this.entry.val(value);
},
get_text: function() {
- var record = this.record();
+ var record = this.record;
if (record) {
return record.field_get_client(this.field_name);
}
@@ -2273,16 +2273,16 @@
Sao.View.Form.Many2One._super.focus_out.call(this);
},
set_value: function() {
- var record = this.record();
- var field = this.field();
+ var record = this.record;
+ var field = this.field;
if (field.get_client(record) != this.entry.val()) {
field.set_client(record, this.value_from_id(null, ''));
this.entry.val('');
}
},
display: function() {
- var record = this.record();
- var field = this.field();
+ var record = this.record;
+ var field = this.field;
var text_value, value;
Sao.View.Form.Many2One._super.display.call(this);
@@ -2344,7 +2344,7 @@
},
_set_button_sensitive: function() {
this.entry.prop('readonly', this._readonly);
- this.but_primary.prop('disabled', !this.read_access());
+ this.but_primary.prop('disabled', !this.read_access);
this.but_secondary.prop('disabled', this._readonly);
},
get_access: function(type) {
@@ -2354,10 +2354,10 @@
}
return true;
},
- read_access: function() {
+ get read_access() {
return this.get_access('read');
},
- create_access: function() {
+ get create_access() {
return this.attributes.create && this.get_access('create');
},
id_from_value: function(value) {
@@ -2381,13 +2381,13 @@
return;
}
var win, callback;
- var record = this.record();
+ var record = this.record;
var value = record.field_get(this.field_name);
if ((evt && evt.data == 'secondary') &&
!this._readonly &&
this.has_target(value)) {
- this.record().field_set_client(this.field_name,
+ this.record.field_set_client(this.field_name,
this.value_from_id(null, ''));
this.entry.val('');
return;
@@ -2411,7 +2411,7 @@
rec_name_prm.done(function(name) {
var value = this.value_from_id(
screen.current_record.id, name);
- this.record().field_set_client(this.field_name,
+ this.record.field_set_client(this.field_name,
value, true);
}.bind(this));
}
@@ -2427,15 +2427,15 @@
}
if (model) {
var dom;
- var domain = this.field().get_domain(record);
- var context = this.field().get_search_context(record);
- var order = this.field().get_search_order(record);
+ var domain = this.field.get_domain(record);
+ var context = this.field.get_search_context(record);
+ var order = this.field.get_search_order(record);
var text = this.entry.val();
callback = function(result) {
if (!jQuery.isEmptyObject(result)) {
var value = this.value_from_id(result[0][0],
result[0][1]);
- this.record().field_set_client(this.field_name,
+ this.record.field_set_client(this.field_name,
value, true);
}
};
@@ -2449,7 +2449,7 @@
view_ids: (this.attributes.view_ids ||
'').split(','),
views_preload: (this.attributes.views || {}),
- new_: this.create_access(),
+ new_: this.create_access,
search_filter: parser.quote(text),
title: this.attributes.string
});
@@ -2468,7 +2468,7 @@
rec_name_prm.done(function(name) {
var value = this.value_from_id(
screen.current_record.id, name);
- this.record().field_set_client(this.field_name, value);
+ this.record.field_set_client(this.field_name, value);
}.bind(this));
}
};
@@ -2493,11 +2493,11 @@
if (event_.which == Sao.common.F3_KEYCODE &&
editable &&
- this.create_access()) {
+ this.create_access) {
this.new_();
event_.preventDefault();
} else if (event_.which == Sao.common.F2_KEYCODE &&
- this.read_access()) {
+ this.read_access) {
this.edit();
event_.preventDefault();
} else if (~activate_keys.indexOf(event_.which) && editable) {
@@ -2508,13 +2508,13 @@
}
}
this.activate();
- } else if (this.has_target(this.record().field_get(
+ } else if (this.has_target(this.record.field_get(
this.field_name)) && editable) {
var value = this.get_text();
if ((value != this.entry.val()) ||
~delete_keys.indexOf(event_.which)) {
this.entry.val('');
- this.record().field_set_client(this.field_name,
+ this.record.field_set_client(this.field_name,
this.value_from_id(null, ''));
}
}
@@ -2524,25 +2524,25 @@
if (!model || !Sao.common.MODELACCESS.get(model).read) {
return;
}
- var record = this.record();
+ var record = this.record;
var value = record.field_get(this.field_name);
var sao_model = new Sao.Model(model);
if (model && !this.has_target(value)) {
var text = this.entry.val();
if (!this._readonly && (text ||
- this.field().get_state_attrs(this.record())
+ this.field.get_state_attrs(this.record)
.required)) {
var dom;
- var domain = this.field().get_domain(record);
- var context = this.field().get_search_context(record);
- var order = this.field().get_search_order(record);
+ var domain = this.field.get_domain(record);
+ var context = this.field.get_search_context(record);
+ var order = this.field.get_search_order(record);
var callback = function(result) {
if (!jQuery.isEmptyObject(result)) {
var value = this.value_from_id(result[0][0],
result[0][1]);
- this.record().field_set_client(this.field_name,
+ this.record.field_set_client(this.field_name,
value, true);
} else {
this.entry.val('');
@@ -2559,7 +2559,7 @@
'').split(','),
views_preload: (this.attributes.views ||
{}),
- new_: this.create_access(),
+ new_: this.create_access,
search_filter: parser.quote(text),
title: this.attributes.string
});
@@ -2568,24 +2568,24 @@
},
_set_completion: function() {
var search = this.el.find('.action-search');
- if (this.read_access()) {
+ if (this.read_access) {
search.removeClass('disabled');
} else {
search.addClass('disabled');
}
var create = this.el.find('.action-create');
- if (this.create_access()) {
+ if (this.create_access) {
create.removeClass('disabled');
} else {
create.addClass('disabled');
}
},
_update_completion: function(text) {
- var record = this.record();
+ var record = this.record;
if (!record) {
return;
}
- var field = this.field();
+ var field = this.field;
var value = field.get(record);
if (this.has_target(value)) {
var id = this.id_from_value(value);
@@ -2599,7 +2599,7 @@
this.entry, record, field, model);
},
_completion_match_selected: function(value) {
- this.record().field_set_client(this.field_name,
+ this.record.field_set_client(this.field_name,
this.value_from_id(
value.id, value.rec_name), true);
},
@@ -2666,7 +2666,7 @@
return [this.get_model(), [id, str]];
},
get_text: function() {
- var record = this.record();
+ var record = this.record;
if (record) {
return record.field_get_client(this.field_name)[1];
}
@@ -2704,12 +2704,12 @@
} else {
value = ['', ''];
}
- this.record().field_set_client(this.field_name, value);
+ this.record.field_set_client(this.field_name, value);
},
set_value: function() {
var value;
- var record = this.record();
- var field = this.field();
+ var record = this.record;
+ var field = this.field;
if (!this.get_model()) {
value = this.entry.val();
if (jQuery.isEmptyObject(value)) {
@@ -2751,7 +2751,7 @@
}
},
display: function() {
- this.update_selection(this.record(), this.field(), function() {
+ this.update_selection(this.record, this.field, function() {
Sao.View.Form.Reference._super.display.call(this);
}.bind(this));
},
@@ -2938,7 +2938,7 @@
// TODO key_press
- this.but_switch.prop('disabled', this.screen.number_of_views() <=
0);
+ this.but_switch.prop('disabled', this.screen.number_of_views <= 0);
},
set_readonly: function(readonly) {
this._readonly = readonly;
@@ -2956,8 +2956,8 @@
_set_button_sensitive: function() {
var access = Sao.common.MODELACCESS.get(this.screen.model_name);
var size_limit, o2m_size;
- var record = this.record();
- var field = this.field();
+ var record = this.record;
+ var field = this.field;
if (record && field) {
var field_size = record.expr_eval(this.attributes.size);
o2m_size = field.get_eval(record).length;
@@ -3001,12 +3001,12 @@
this._set_button_sensitive();
this.prm.done(function() {
- var record = this.record();
- var field = this.field();
+ var record = this.record;
+ var field = this.field;
if (field === undefined) {
this.screen.new_group();
- this.screen.set_current_record(null);
+ this.screen.current_record = null;
this.screen.group.parent = null;
this.screen.display();
return;
@@ -3017,7 +3017,7 @@
this.screen.set_group(new_group);
if ((this.screen.current_view.view_type == 'tree') &&
this.screen.current_view.editable) {
- this.screen.set_current_record(null);
+ this.screen.current_record = null;
}
}
var domain = [];
@@ -3055,11 +3055,11 @@
return;
}
this.view.set_value();
- var domain = this.field().get_domain(this.record());
- var context = this.field().get_search_context(this.record());
+ var domain = this.field.get_domain(this.record);
+ var context = this.field.get_search_context(this.record);
domain = [domain,
- this.record().expr_eval(this.attributes.add_remove)];
- var removed_ids = this.field().get_removed_ids(this.record());
+ this.record.expr_eval(this.attributes.add_remove)];
+ var removed_ids = this.field.get_removed_ids(this.record);
domain = ['OR', domain, ['id', 'in', removed_ids]];
var text = this.wid_text.val();
@@ -3082,7 +3082,7 @@
this.wid_text.val('');
}.bind(this);
var parser = new Sao.common.DomainParser();
- var order = this.field().get_search_order(this.record());
+ var order = this.field.get_search_order(this.record);
var win = new Sao.Window.Search(this.attributes.relation,
callback, {
sel_multi: true,
@@ -3118,17 +3118,17 @@
},
new_single: function() {
var context = jQuery.extend({},
- this.field().get_context(this.record()));
+ this.field.get_context(this.record));
// TODO sequence
if (this.screen.current_view.type == 'form' ||
this.screen.current_view.editable) {
this.screen.new_();
this.screen.current_view.el.prop('disabled', false);
} else {
- var record = this.record();
+ var record = this.record;
var field_size = record.expr_eval(
this.attributes.size) || -1;
- field_size -= this.field().get_eval(record);
+ field_size -= this.field.get_eval(record);
var win = new Sao.Window.Form(this.screen, function() {}, {
new_: true,
many: field_size,
@@ -3383,8 +3383,8 @@
},
_set_button_sensitive: function() {
var size_limit = false,
- record = this.record(),
- field = this.field();
+ record = this.record,
+ field = this.field;
if (record && field) {
var field_size = record.expr_eval(this.attributes.size);
var m2m_size = field.get_eval(record).length;
@@ -3406,12 +3406,12 @@
Sao.View.Form.Many2Many._super.display.call(this);
this.prm.done(function() {
- var record = this.record();
- var field = this.field();
+ var record = this.record;
+ var field = this.field;
if (field === undefined) {
this.screen.new_group();
- this.screen.set_current_record(null);
+ this.screen.current_record = null;
this.screen.group.parent = null;
this.screen.display();
return;
@@ -3431,9 +3431,9 @@
},
add: function() {
var dom;
- var domain = this.field().get_domain(this.record());
- var context = this.field().get_search_context(this.record());
- var order = this.field().get_search_order(this.record());
+ var domain = this.field.get_domain(this.record);
+ var context = this.field.get_search_context(this.record);
+ var order = this.field.get_search_order(this.record);
var value = this.entry.val();
var callback = function(result) {
@@ -3483,13 +3483,13 @@
}
},
_get_screen_form: function() {
- var domain = this.field().get_domain(this.record());
- var add_remove = this.record().expr_eval(
+ var domain = this.field.get_domain(this.record);
+ var add_remove = this.record.expr_eval(
this.attributes.add_remove);
if (!jQuery.isEmptyObject(add_remove)) {
domain = [domain, add_remove];
}
- var context = this.field().get_context(this.record());
+ var context = this.field.get_context(this.record);
var view_ids = (this.attributes.view_ids || '').split(',');
if (!jQuery.isEmptyObject(view_ids)) {
// Remove the first tree view as mode is form only
@@ -3588,9 +3588,9 @@
return group;
},
- filename_field: function() {
+ get filename_field() {
if (this.filename) {
- var record = this.record();
+ var record = this.record;
if (record) {
return record.model.fields[this.filename];
}
@@ -3608,9 +3608,9 @@
}
},
select: function() {
- var record = this.record(),
- field = this.field(),
- filename_field = this.filename_field();
+ var record = this.record,
+ field = this.field,
+ filename_field = this.filename_field;
Sao.common.get_input_data(this.input_select, function(data,
filename) {
field.set_client(record, data);
@@ -3621,9 +3621,9 @@
},
open: function() {
var params = {};
- var filename_field = this.filename_field();
+ var filename_field = this.filename_field;
if (filename_field) {
- var filename = filename_field.get_client(this.record());
+ var filename = filename_field.get_client(this.record);
// Valid mimetype will make the browser directly open the file
params.mimetype = Sao.common.guess_mimetype(filename);
}
@@ -3631,8 +3631,8 @@
},
save_as: function(params) {
var mimetype = params.mimetype || 'application/octet-binary';
- var field = this.field();
- var record = this.record();
+ var field = this.field;
+ var record = this.record;
var prm;
if (field.get_data) {
prm = field.get_data(record);
@@ -3641,19 +3641,19 @@
}
prm.done(function(data) {
var name;
- var field = this.filename_field();
+ var field = this.filename_field;
if (field) {
- name = field.get(this.record());
+ name = field.get(this.record);
}
Sao.common.download_file(data, name);
}.bind(this));
},
clear: function() {
- var filename_field = this.filename_field();
+ var filename_field = this.filename_field;
if (filename_field) {
- filename_field.set_client(this.record(), null);
+ filename_field.set_client(this.record, null);
}
- this.field().set_client(this.record(), null);
+ this.field.set_client(this.record, null);
}
});
@@ -3703,7 +3703,7 @@
display: function() {
Sao.View.Form.Binary._super.display.call(this);
- var record = this.record(), field = this.field();
+ var record = this.record, field = this.field;
if (!field) {
if (this.text) {
this.text.val('');
@@ -3721,7 +3721,7 @@
this.size.val(Sao.common.humanize(size));
if (this.text) {
- this.text.val(this.filename_field().get(record) || '');
+ this.text.val(this.filename_field.get(record) || '');
if (size) {
this.but_open.parent().show();
} else {
@@ -3742,7 +3742,7 @@
},
set_value: function() {
if (this.text) {
- this.filename_field().set_client(this.record(),
+ this.filename_field.set_client(this.record,
this.text.val() || '');
}
},
@@ -3796,7 +3796,7 @@
} else {
value = [];
}
- this.field().set_client(this.record(), value);
+ this.field.set_client(this.record, value);
}
});
@@ -3835,7 +3835,7 @@
},
update_img: function() {
var value;
- var record = this.record();
+ var record = this.record;
if (record) {
value = record.field_get_client(this.field_name);
}
@@ -3884,8 +3884,8 @@
display: function() {
Sao.View.Form.URL._super.display.call(this);
var url = '';
- var record = this.record();
- var field = this.field();
+ var record = this.record;
+ var field = this.field;
if (record) {
url = record.field_get_client(this.field_name);
}
@@ -3964,8 +3964,8 @@
display: function() {
Sao.View.Form.ProgressBar._super.display.call(this);
var value, text;
- var record = this.record();
- var field = this.field();
+ var record = this.record;
+ var field = this.field;
if (!field) {
value = 0;
text = '';
@@ -4051,9 +4051,9 @@
return this.wid_text;
},
add: function() {
- var context = this.field().get_context(this.record());
+ var context = this.field.get_context(this.record);
var value = this.wid_text.val();
- var domain = this.field().get_domain(this.record());
+ var domain = this.field.get_domain(this.record);
var callback = function(result) {
if (!jQuery.isEmptyObject(result)) {
@@ -4077,8 +4077,8 @@
});
},
add_new_keys: function(ids) {
- var field = this.field();
- field.add_new_keys(ids, this.record())
+ var field = this.field;
+ field.add_new_keys(ids, this.record)
.then(function(new_names) {
var focus = false;
new_names.forEach(function(name) {
@@ -4100,11 +4100,11 @@
this.rows[key].remove();
delete this.rows[key];
if (modified) {
- this.set_value(this.record(), this.field());
+ this.set_value(this.record, this.field);
}
},
set_value: function() {
- this.field().set_client(this.record(), this.get_value());
+ this.field.set_client(this.record, this.get_value());
},
get_value: function() {
var value = {};
@@ -4140,7 +4140,7 @@
},
add_line: function(key) {
var field, row;
- var key_schema = this.field().keys[key];
+ var key_schema = this.field.keys[key];
this.fields[key] = field = new (
this.get_entries(key_schema.type_))(key, this);
this.rows[key] = row = jQuery('<div/>', {
@@ -4169,8 +4169,8 @@
display: function() {
Sao.View.Form.Dict._super.display.call(this);
- var record = this.record();
- var field = this.field();
+ var record = this.record;
+ var field = this.field;
if (!field) {
return;
}
@@ -4260,7 +4260,7 @@
class_: 'dict-char',
init: function(name, parent_widget) {
this.name = name;
- this.definition = parent_widget.field().keys[name];
+ this.definition = parent_widget.field.keys[name];
this.parent_widget = parent_widget;
this.create_widget();
},
@@ -4357,8 +4357,8 @@
Sao.View.Form.Dict.Float._super.create_widget.call(this);
this.input_text = integer_input(this.input);
},
- digits: function() {
- var record = this.parent_widget.record();
+ get digits() {
+ var record = this.parent_widget.record;
if (record) {
var digits = record.expr_eval(this.definition.digits);
if (!digits || !digits.every(function(e) {
@@ -4379,7 +4379,7 @@
set_value: function(value) {
var step = 'any',
options = {};
- var digits = this.digits();
+ var digits = this.digits;
if (digits) {
step = Math.pow(10, -digits[1]);
options.minimumFractionDigits = digits[1];
@@ -4531,8 +4531,8 @@
set_value: function() {
// avoid modification because different encoding
var value = this.get_encoded_value();
- var record = this.record();
- var field = this.field();
+ var record = this.record;
+ var field = this.field;
var previous = field.get_client(record);
if (previous && Sao.common.compare(
value, this.encoder.encode(this.decoder.decode(previous)))) {
diff -r 1c4f97a23a8f -r 584be2585d2a src/view/graph.js
--- a/src/view/graph.js Wed Feb 13 16:05:41 2019 +0100
+++ b/src/view/graph.js Thu Feb 14 16:31:31 2019 +0100
@@ -195,7 +195,7 @@
if ((type == 'date') || (type == 'datetime')) {
var format_func, date_format, time_format;
date_format = Sao.common.date_format(
- this.view.screen.context().date_format);
+ this.view.screen.context.date_format);
time_format = '%X';
if (type == 'datetime') {
format_func = function(dt) {
@@ -292,7 +292,7 @@
var type = this.xfield.type;
if ((type == 'date') || (type == 'datetime')) {
var date_format = Sao.common.date_format(
- this.view.screen.context().date_format);
+ this.view.screen.context.date_format);
var datetime_format = date_format + ' %X';
if (type == 'datetime') {
format_func = function(dt) {
@@ -322,7 +322,7 @@
var type = this.xfield.type;
if ((type == 'date') || (type == 'datetime')) {
var date_format = Sao.common.date_format(
- this.view.screen.context().date_format);
+ this.view.screen.context.date_format);
var datetime_format = date_format + ' %X';
if (type == 'datetime') {
key = Sao.common.format_datetime(datetime_format, key);
diff -r 1c4f97a23a8f -r 584be2585d2a src/view/tree.js
--- a/src/view/tree.js Wed Feb 13 16:05:41 2019 +0100
+++ b/src/view/tree.js Thu Feb 14 16:31:31 2019 +0100
@@ -415,7 +415,7 @@
}
var inversion = new Sao.common.DomainInversion();
domain = inversion.simplify(domain);
- var decoder = new Sao.PYSON.Decoder(this.screen.context());
+ var decoder = new Sao.PYSON.Decoder(this.screen.context);
this.columns.forEach(function(column) {
visible_columns += 1;
var name = column.attributes.name;
@@ -555,7 +555,7 @@
record = this.edited_row.record;
this.edited_row.set_selection(true);
}
- this.screen.set_current_record(record);
+ this.screen.current_record = record;
// TODO update_children
},
update_sum: function() {
@@ -564,7 +564,7 @@
continue;
}
- var selected_records = this.selected_records();
+ var selected_records = this.selected_records;
var aggregate = '-';
var sum_label = this.sum_widgets[name][0];
var sum_value = this.sum_widgets[name][1];
@@ -634,7 +634,7 @@
'title', sum_label.text() + ' ' + sum_value.text());
}
},
- selected_records: function() {
+ get selected_records() {
if (this.selection_mode == Sao.common.SELECTION_NONE) {
return [];
}
@@ -674,7 +674,7 @@
if (this.selection.prop('checked')) {
return;
}
- var selected_records = this.selected_records();
+ var selected_records = this.selected_records;
this.selection.prop('indeterminate', false);
if (jQuery.isEmptyObject(selected_records)) {
this.selection.prop('checked', false);
@@ -1077,7 +1077,7 @@
}
}.bind(this));
}
- if (this.record.deleted() || this.record.removed()) {
+ if (this.record.deleted || this.record.removed) {
this.el.css('text-decoration', 'line-through');
} else {
this.el.css('text-decoration', 'inherit');
@@ -1090,7 +1090,7 @@
this.collapse_children();
} else {
if (this.tree.n_children(this) > Sao.config.limit) {
- this.tree.screen.set_current_record(this.record);
+ this.tree.screen.current_record = this.record;
this.tree.screen.switch_view('form');
} else {
this.update_expander(true);
@@ -1194,7 +1194,7 @@
this.tree.select_changed(this.record);
} else {
this.tree.select_changed(
- this.tree.selected_records()[0] || null);
+ this.tree.selected_records[0] || null);
}
this.tree.update_selection();
},
diff -r 1c4f97a23a8f -r 584be2585d2a src/window.js
--- a/src/window.js Wed Feb 13 16:05:41 2019 +0100
+++ b/src/window.js Thu Feb 14 16:31:31 2019 +0100
@@ -72,7 +72,7 @@
}.bind(this));
var readonly = (this.screen.attributes.readonly ||
- this.screen.group.get_readonly());
+ this.screen.group.readonly);
this._initial_value = null;
if (view_type == 'form') {
@@ -242,7 +242,7 @@
record_label: function(data) {
var name = '_';
var access = Sao.common.MODELACCESS.get(this.screen.model_name);
- var readonly = this.screen.group.get_readonly();
+ var readonly = this.screen.group.readonly;
if (data[0] >= 1) {
name = data[0];
if (this.domain) {
@@ -319,7 +319,7 @@
response: function(response_id) {
var result;
this.screen.current_view.set_value();
- var readonly = this.screen.group.get_readonly();
+ var readonly = this.screen.group.readonly;
if (~['RESPONSE_OK', 'RESPONSE_ACCEPT'].indexOf(response_id) &&
!readonly &&
this.screen.current_record) {
@@ -460,7 +460,7 @@
add_uri: function(uri) {
var screen = this.screen;
this.switch_prm.then(function() {
- screen.set_current_record(null);
+ screen.current_record = null;
screen.switch_view('form').then(function() {
screen.new_().then(function(record) {
record.field_set_client('link', uri);
@@ -473,7 +473,7 @@
add_text: function(text) {
var screen = this.screen;
this.switch_prm.then(function() {
- screen.set_current_record(null);
+ screen.current_record = null;
screen.switch_view('form').then(function() {
screen.new_().then(function(record) {
record.field_set_client('description', text);
@@ -648,7 +648,7 @@
var records;
var value = [];
if (response_id == 'RESPONSE_OK') {
- records = this.screen.current_view.selected_records();
+ records = this.screen.current_view.selected_records;
} else if (response_id == 'RESPONSE_APPLY') {
this.screen.search_filter();
return;
@@ -722,7 +722,7 @@
});
// Reset readonly set automaticly by MODELACCESS
this.screen.attributes.readonly = false;
- this.screen.group.set_readonly(false);
+ this.screen.group.readonly = false;
this.screen.group.skip_model_access = true;
var set_view = function(view) {