Use default function parameters

issue8183
review386321002
This commit is contained in:
Cédric Krier
2022-04-10 19:25:17 +02:00
parent 124e917eb4
commit ab0924fdac
12 changed files with 81 additions and 245 deletions
+2 -9
View File
@@ -145,15 +145,8 @@
}
};
Sao.Action.exec_keyword = function(keyword, data, context, warning,
alwaysask)
{
if (warning === undefined) {
warning = true;
}
if (alwaysask === undefined) {
alwaysask = false;
}
Sao.Action.exec_keyword = function(
keyword, data, context, warning=true, alwaysask=false) {
var actions = [];
var model_id = data.id;
var args = {
+8 -34
View File
@@ -121,10 +121,7 @@
return result;
};
Sao.common.selection = function(title, values, alwaysask) {
if (alwaysask === undefined) {
alwaysask = false;
}
Sao.common.selection = function(title, values, alwaysask=false) {
var prm = jQuery.Deferred();
if (jQuery.isEmptyObject(values)) {
prm.reject();
@@ -625,9 +622,7 @@
}
};
Sao.common.EvalEnvironment = function(parent_, eval_type) {
if (eval_type === undefined)
eval_type = 'eval';
Sao.common.EvalEnvironment = function(parent_, eval_type='eval') {
var environment;
if (eval_type == 'eval') {
environment = parent_.get_eval();
@@ -947,10 +942,7 @@
this.stream = stream.split('');
this.i = 0;
},
read: function(length) {
if (length === undefined) {
length = 1;
}
read: function(length=1) {
if (this.i >= this.stream.length) {
return null;
}
@@ -1435,10 +1427,7 @@
is_leaf: function(element) {
return ((element instanceof Array) && element.clause);
},
ending_clause: function(domain, depth) {
if (depth === undefined) {
depth = 0;
}
ending_clause: function(domain, depth=0) {
if (domain.length === 0) {
return [null, depth];
}
@@ -2075,13 +2064,7 @@
return value;
}
},
format_value: function(field, value, target, context) {
if (target === undefined) {
target = null;
}
if (!context) {
context = {};
}
format_value: function(field, value, target=null, context={}) {
var format_float = function() {
if (!value && value !== 0 && value !== new Sao.Decimal(0)) {
return '';
@@ -2266,10 +2249,7 @@
'child_of': function() {return true;},
'not child_of': function() {return true;}
},
locale_part: function(expression, field_name, locale_name) {
if (locale_name === undefined) {
locale_name = 'id';
}
locale_part: function(expression, field_name, locale_name='id') {
if (expression === field_name) {
return locale_name;
}
@@ -2716,10 +2696,7 @@
return new And(domain.slice(begin));
}
},
domain_inversion: function(domain, symbol, context) {
if (context === undefined) {
context = {};
}
domain_inversion: function(domain, symbol, context={}) {
var expression = this.parse(domain);
if (!~expression.variables.indexOf(symbol)) {
return true;
@@ -4084,10 +4061,7 @@
else if (i == 5) return [v, p, q];
};
Sao.common.generateColorscheme = function(masterColor, keys, light) {
if (light === undefined) {
light = 0.1;
}
Sao.common.generateColorscheme = function(masterColor, keys, light=0.1) {
var rgb = Sao.common.hex2rgb(
Sao.common.COLOR_SCHEMES[masterColor] || masterColor);
var hsv = Sao.common.rgb2hsv(rgb);
+20 -64
View File
@@ -24,10 +24,7 @@
}
return added;
},
execute: function(method, params, context, async) {
if (context === undefined) {
context = {};
}
execute: function(method, params, context={}, async=true) {
var args = {
'method': 'model.' + this.name + '.' + method,
'params': params.concat(context)
@@ -79,8 +76,8 @@
this.__readonly = value;
}
});
array.load = function(ids, modified, position) {
if ((position === undefined) || (position == -1)) {
array.load = function(ids, modified=false, position=-1) {
if (position == -1) {
position = this.length;
}
var new_records = [];
@@ -138,14 +135,11 @@
}
return record;
};
array.add = function(record, position, changed) {
if ((position === undefined) || (position == -1)) {
array.add = function(record, position=-1, changed=true) {
if (position == -1) {
position = this.length;
}
position = Math.min(position, this.length);
if (changed === undefined) {
changed = true;
}
if (record.group != this) {
record.group = this;
}
@@ -181,13 +175,8 @@
}
return record;
};
array.remove = function(record, remove, modified, force_remove, signal) {
if (modified === undefined) {
modified = true;
}
if (signal === undefined) {
signal = true;
}
array.remove = function(
record, remove, modified=true, force_remove=false, signal=true) {
var idx = this.indexOf(record);
if (record.id >= 0) {
if (remove) {
@@ -546,10 +535,10 @@
Sao.Record = Sao.class_(Object, {
id_counter: -1,
init: function(model, id) {
init: function(model, id=null) {
this.model = model;
this.group = Sao.Group(model, {}, []);
if ((id === undefined) || (id === null)) {
if (id === null) {
this.id = Sao.Record.prototype.id_counter;
} else {
this.id = id;
@@ -582,10 +571,7 @@
return false;
}
},
save: function(force_reload) {
if (force_reload === undefined) {
force_reload = false;
}
save: function(force_reload=false) {
var context = this.get_context();
var prm = jQuery.when();
if ((this.id < 0) || this.modified) {
@@ -647,12 +633,9 @@
is_loaded: function(name) {
return ((this.id < 0) || (name in this._loaded));
},
load: function(name, async) {
load: function(name, async=true) {
var fname;
var prm;
if (async === undefined) {
async = true;
}
if (this.destroyed || this.is_loaded(name)) {
if (async) {
return jQuery.when();
@@ -790,8 +773,7 @@
var result = this.model.execute('read', [Object.keys(id2record).map(
function (e) { return parseInt(e, 10); }),
fnames_to_fetch], context, async);
var succeed = function(values, exception) {
if (exception === undefined) exception = false;
var succeed = function(values, exception=false) {
var id2value = {};
values.forEach(function(e, i, a) {
id2value[e.id] = e;
@@ -846,10 +828,7 @@
}
}
},
set: function(values, validate) {
if (validate === undefined) {
validate = true;
}
set: function(values, validate=true) {
var name, value;
var rec_named_fields = ['many2one', 'one2one', 'reference'];
var later = {};
@@ -979,13 +958,7 @@
}
return jQuery.when();
},
set_default: function(values, validate, display) {
if (validate === undefined) {
validate = true;
}
if (display === undefined) {
display = true;
}
set_default: function(values, validate=true, display=true) {
var promises = [];
var fieldnames = [];
for (var fname in values) {
@@ -1644,10 +1617,8 @@
get_on_change_value: function(record) {
return this.get_eval(record);
},
set_state: function(record, states) {
if (states === undefined) {
states = ['readonly', 'required', 'invisible'];
}
set_state: function(
record, states=['readonly', 'required', 'invisible']) {
var state_changes = record.expr_eval(
this.description.states || {});
states.forEach(function(state) {
@@ -1887,10 +1858,7 @@
Sao.field.Float = Sao.class_(Sao.field.Field, {
_default: null,
digits: function(record, factor) {
if (factor === undefined) {
factor = 1;
}
digits: function(record, factor=1) {
var digits = record.expr_eval(this.description.digits);
if (typeof(digits) == 'string') {
if (!(digits in record.model.fields)) {
@@ -1983,21 +1951,12 @@
}
return value;
},
set_client: function(record, value, force_change, factor) {
if (factor === undefined) {
factor = 1;
}
set_client: function(record, value, force_change, factor=1) {
value = this.apply_factor(record, this.convert(value), factor);
Sao.field.Float._super.set_client.call(this, record, value,
force_change);
},
get_client: function(record, factor, grouping) {
if (factor === undefined) {
factor = 1;
}
if (grouping === undefined) {
grouping = true;
}
get_client: function(record, factor=1, grouping=true) {
var value = this.get(record);
if (value !== null) {
var options = {
@@ -2218,10 +2177,7 @@
});
}
},
set: function(record, value, _default) {
if (_default === undefined) {
_default = false;
}
set: function(record, value, _default=false) {
var group = record._values[this.name];
var model;
if (group !== undefined) {
+15 -47
View File
@@ -32,10 +32,7 @@
types: function() {
throw 'NotImplementedError';
},
get: function(k, d) {
if (d === undefined) {
d = '';
}
get: function(k, d='') {
return Sao.PYSON.Get(this, k, d);
},
in_: function(obj) {
@@ -144,10 +141,7 @@
return new Sao.PYSON.Eval(value, default_);
};
Sao.PYSON.Eval = Sao.class_(Sao.PYSON.PYSON, {
init: function(value, default_) {
if (default_ === undefined) {
default_ = '';
}
init: function(value, default_='') {
Sao.PYSON.Eval._super.init.call(this);
this._value = value;
this._default = default_;
@@ -409,7 +403,7 @@
return new Sao.PYSON.Greater(statement1, statement2, equal);
};
Sao.PYSON.Greater = Sao.class_(Sao.PYSON.PYSON, {
init: function(statement1, statement2, equal) {
init: function(statement1, statement2, equal=false) {
Sao.PYSON.Greater._super.init.call(this);
var statements = [statement1, statement2];
for (var i = 0; i < 2; i++) {
@@ -428,9 +422,6 @@
}
}
}
if (equal === undefined) {
equal = false;
}
if (equal instanceof Sao.PYSON.PYSON) {
if (jQuery(equal.types()).not(['boolean']).length ||
jQuery(['boolean']).not(equal.types()).length) {
@@ -522,7 +513,7 @@
return new Sao.PYSON.If(condition, then_statement, else_statement);
};
Sao.PYSON.If = Sao.class_(Sao.PYSON.PYSON, {
init: function(condition, then_statement, else_statement) {
init: function(condition, then_statement, else_statement=null) {
Sao.PYSON.If._super.init.call(this);
if (condition instanceof Sao.PYSON.PYSON) {
if (jQuery(condition.types()).not(['boolean']).length ||
@@ -538,9 +529,6 @@
} else {
then_types = [typeof then_statement];
}
if (else_statement === undefined) {
else_statement = null;
}
if (else_statement instanceof Sao.PYSON.PYSON) {
else_types = else_statement.types();
} else {
@@ -590,11 +578,8 @@
return new Sao.PYSON.Get(obj, key, default_);
};
Sao.PYSON.Get = Sao.class_(Sao.PYSON.PYSON, {
init: function(obj, key, default_) {
init: function(obj, key, default_=null) {
Sao.PYSON.Get._super.init.call(this);
if (default_ === undefined) {
default_ = null;
}
if (obj instanceof Sao.PYSON.PYSON) {
if (jQuery(obj.types()).not(['object']).length ||
jQuery(['object']).not(obj.types()).length) {
@@ -714,16 +699,9 @@
};
Sao.PYSON.Date = Sao.class_(Sao.PYSON.PYSON, {
init: function(
year, month, day, delta_years, delta_months, delta_days, start)
{
year=null, month=null, day=null,
delta_years=0, delta_months=0, delta_days=0, start=null) {
Sao.PYSON.Date._super.init.call(this);
if (year === undefined) year = null;
if (month === undefined) month = null;
if (day === undefined) day = null;
if (delta_years === undefined) delta_years = 0;
if (delta_months === undefined) delta_months = 0;
if (delta_days === undefined) delta_days = 0;
this._test(year, 'year');
this._test(month, 'month');
this._test(day, 'day');
@@ -737,7 +715,7 @@
this._delta_years = delta_years;
this._delta_months = delta_months;
this._delta_days = delta_days;
this._start = start || null;
this._start = start;
},
pyson: function() {
return {
@@ -801,20 +779,14 @@
delta_minutes, delta_seconds, delta_microseconds);
};
Sao.PYSON.DateTime = Sao.class_(Sao.PYSON.Date, {
init: function(year, month, day, hour, minute, second, microsecond,
delta_years, delta_months, delta_days, delta_hours,
delta_minutes, delta_seconds, delta_microseconds, start) {
init: function(
year=null, month=null, day=null,
hour=null, minute=null, second=null, microsecond=null,
delta_years=0, delta_months=0, delta_days=0,
delta_hours=0, delta_minutes=0, delta_seconds=0,
delta_microseconds=0, start=null) {
Sao.PYSON.DateTime._super.init.call(this, year, month, day,
delta_years, delta_months, delta_days, start);
if (hour === undefined) hour = null;
if (minute === undefined) minute = null;
if (second === undefined) second = null;
if (microsecond === undefined) microsecond = null;
if (delta_hours === undefined) delta_hours = 0;
if (delta_minutes === undefined) delta_minutes = 0;
if (delta_seconds === undefined) delta_seconds = 0;
if (delta_microseconds === undefined) delta_microseconds = 0;
this._test(hour, 'hour');
this._test(minute, 'minute');
this._test(second, 'second');
@@ -891,12 +863,8 @@
return new Sao.PYSON.TimeDelta(days, seconds, microseconds);
};
Sao.PYSON.TimeDelta = Sao.class_(Sao.PYSON.PYSON, {
init: function(days, seconds, microseconds) {
init: function(days=0, seconds=0, microseconds=0) {
Sao.PYSON.TimeDelta._super.init.call(this);
if (days === undefined) days = 0;
if (seconds === undefined) seconds = 0;
if (microseconds === undefined) microseconds = 0;
function test(value, name) {
if (value instanceof Sao.PYSON.TimeDelta) {
if (jQuery(value.types()).not(['number']).length)
+1 -4
View File
@@ -3,15 +3,12 @@
(function() {
'use strict';
Sao.rpc = function(args, session, async) {
Sao.rpc = function(args, session=null, async=true) {
var dfd = jQuery.Deferred(),
result;
if (!session) {
session = new Sao.Session();
}
if (async === undefined) {
async = true;
}
var params = jQuery.extend([], args.params);
params.push(jQuery.extend({}, session.context, params.pop()));
+4 -19
View File
@@ -264,26 +264,15 @@ var Sao = {};
Sao.Date.max.set({hour: 0, minute: 0, second: 0, millisecond: 0});
Sao.Date.max.isDate = true;
Sao.DateTime = function(year, month, day, hour, minute, second,
millisecond, utc) {
Sao.DateTime = function(
year, month, day,
hour=0, minute=0, second=0, millisecond=0, utc=false) {
var datetime;
if (month === undefined) {
datetime = moment(year);
year = undefined;
}
else {
if (hour === undefined) {
hour = 0;
}
if (minute === undefined) {
minute = 0;
}
if (second === undefined) {
second = 0;
}
if (millisecond === undefined) {
millisecond = 0;
}
datetime = moment();
}
if (utc) {
@@ -890,11 +879,7 @@ var Sao = {};
});
Sao.Dialog = Sao.class_(Object, {
init: function(title, class_, size, keyboard) {
size = size || 'sm';
if (keyboard === undefined) {
keyboard = true;
}
init: function(title, class_, size='sm', keyboard=true) {
this.modal = jQuery('<div/>', {
'class': class_ + ' modal fade',
'role': 'dialog',
+17 -30
View File
@@ -360,11 +360,11 @@
}
return this.tab_domain[idx][1];
},
set_tab_counter: function(count, idx) {
set_tab_counter: function(count, idx=null) {
if (jQuery.isEmptyObject(this.tab_counter) || !this.tab) {
return;
}
if ((idx === undefined) || (idx === null)) {
if (idx === null) {
idx = this.tab.find('li').index(this.tab.find('li.active'));
}
if (idx < 0) {
@@ -943,12 +943,10 @@
get number_of_views() {
return this.views.length + this.view_to_load.length;
},
switch_view: function(view_type, view_id, creatable, display) {
display = display === undefined ? true : display;
if ((view_id !== undefined) && (view_id !== null)) {
switch_view: function(
view_type=null, view_id=null, creatable=null, display=true) {
if (view_id !== null) {
view_id = Number(view_id);
} else {
view_id = null;
}
if (this.current_view) {
this.current_view.set_value();
@@ -972,13 +970,13 @@
return false;
}
var result = true;
if ((view_type !== undefined) && (view_type !== null)) {
if (view_type !== null) {
result &= this.current_view.view_type == view_type;
}
if ((view_id !== undefined) && (view_id !== null)) {
if (view_id !== null) {
result &= this.current_view.view_id == view_id;
}
if ((creatable !== undefined) && (creatable !== null)) {
if (creatable !== null) {
result &= this.current_view.creatable == creatable;
}
return result;
@@ -1110,15 +1108,14 @@
}.bind(this));
}.bind(this));
},
search_domain: function(search_string, set_text, with_tab) {
search_domain: function(search_string=null, set_text=false, with_tab=true) {
set_text = set_text || false;
with_tab = with_tab === undefined ? true : with_tab;
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 (search_string || search_string === '') {
if (search_string !== null) {
domain = domain_parser.parse(search_string);
} else {
domain = this.attributes.search_value;
@@ -1169,10 +1166,7 @@
}
return domain;
},
count_tab_domain: function(current) {
if (current === undefined) {
current = false;
}
count_tab_domain: function(current=false) {
var screen_domain = this.search_domain(
this.screen_container.get_text(), false, false);
var index = this.screen_container.get_tab_index();
@@ -1255,13 +1249,13 @@
group.readonly = this.attributes.readonly;
this.set_group(group);
},
record_modified: function(display) {
record_modified: function(display=true) {
this.windows.forEach(function(window_) {
if (window_.record_modified) {
window_.record_modified();
}
});
if (display || display === undefined) {
if (display) {
return this.display();
}
},
@@ -1322,11 +1316,8 @@
}
}
},
load: function(ids, set_cursor, modified) {
if (set_cursor === undefined) {
set_cursor = true;
}
this.group.load(ids, modified);
load: function(ids, set_cursor=true, modified=false, position=-1) {
this.group.load(ids, modified, position);
this.current_view.reset();
if (ids.length && this.current_view.view_type != 'calendar') {
this.current_record = this.group.get(ids[0]);
@@ -1483,11 +1474,8 @@
return this.current_record.id;
}
},
new_: function(default_, rec_name) {
new_: function(default_=true, rec_name=null) {
var previous_view = this.current_view;
if (default_ === undefined) {
default_ = true;
}
var prm = jQuery.when();
if (this.current_view.view_type == 'calendar') {
var selected_date = this.current_view.get_selected_date();
@@ -2131,10 +2119,9 @@
}
return path;
},
save_tree_state: function(store) {
save_tree_state: function(store=true) {
var prms = [];
var prm;
store = (store === undefined) ? true : store;
var i, len, view, widgets, wi, wlen;
var parent_ = this.group.parent ? this.group.parent.id : null;
var clear_cache = function() {
+1 -4
View File
@@ -324,10 +324,7 @@
this.func = func;
this.session = session || Sao.Session.current_session;
},
run: function(parameters) {
if (parameters === undefined) {
parameters = {};
}
run: function(parameters={}) {
var dfd = jQuery.Deferred();
var timeoutID = Sao.common.processing.show();
var data = this.func(parameters);
+1 -4
View File
@@ -849,10 +849,7 @@
return this.screen.switch_view();
}.bind(this));
},
reload: function(test_modified) {
if (test_modified === undefined) {
test_modified = true;
}
reload: function(test_modified=true) {
var reload = function() {
return this.screen.cancel_current().then(function() {
var set_cursor = false;
+7 -14
View File
@@ -492,8 +492,7 @@ function eval_pyson(value){
});
Sao.View.Form.Container = Sao.class_(Object, {
init: function(col) {
if (col === undefined) col = 4;
init: function(col=4) {
if (col < 0) col = 0;
this.col = col;
this.el = jQuery('<table/>', {
@@ -849,9 +848,9 @@ function eval_pyson(value){
}
return page;
},
set_current_page: function(page_index) {
set_current_page: function(page_index=null) {
var selector;
if (page_index === undefined) {
if (page_index === null) {
selector = ':visible:first';
} else {
selector = ':eq(' + page_index + '):visible';
@@ -2602,17 +2601,14 @@ function eval_pyson(value){
id_from_value: function(value) {
return value;
},
value_from_id: function(id, str) {
if (str === undefined) {
str = '';
}
value_from_id: function(id, str='') {
return [id, str];
},
get_model: function() {
return this.attributes.relation;
},
has_target: function(value) {
return value !== undefined && value !== null;
has_target: function(value=null) {
return value !== null;
},
edit: function(evt) {
var model = this.get_model();
@@ -4724,10 +4720,7 @@ function eval_pyson(value){
}.bind(this));
}.bind(this));
},
remove: function(key, modified) {
if (modified === undefined) {
modified = true;
}
remove: function(key, modified=true) {
delete this.fields[key];
this.rows[key].remove();
delete this.rows[key];
+3 -9
View File
@@ -339,8 +339,7 @@
.append(' ' + optional.attributes.string))));
});
},
save_optional: function(store) {
store = (store === undefined) ? true : store;
save_optional: function(store=true) {
var fields = {};
this.optionals.forEach(function(column) {
fields[column.attributes.name] = !column.get_visible();
@@ -1224,14 +1223,9 @@
get_selected(this, []);
return selected_paths;
},
get_expanded_paths: function(starting_path, starting_id_path) {
get_expanded_paths: function(
starting_path=[], starting_id_path=[]) {
var id_path, id_paths, row, children_rows, path;
if (starting_path === undefined) {
starting_path = [];
}
if (starting_id_path === undefined) {
starting_id_path = [];
}
id_paths = [];
row = this.find_row(starting_path);
children_rows = row ? row.rows : this.rows;
+2 -7
View File
@@ -2090,13 +2090,8 @@
},
});
Sao.Window.Export.format_row = function(line, indent, locale_format) {
if (indent === undefined) {
indent = 0;
}
if (locale_format === undefined) {
locale_format = true;
}
Sao.Window.Export.format_row = function(
line, indent=0, locale_format=true) {
var row = [];
line.forEach(function(val, i) {
if (locale_format) {