FSN#41986 Kleine API2 optimalisatie

svn path=/Website/trunk/; revision=35422
This commit is contained in:
Jos Groot Lipman
2017-09-25 12:18:01 +00:00
parent d6a1499e30
commit 79fdd6f8a7

View File

@@ -907,6 +907,8 @@ api2 = {
}
},
// Geeft de GET terug van een enkel veld
// Onder bepaalde omstandigheden wordt deze functie *heel* veel aangroepen
// Houd hem daarom efficient.
sql2jsonval: function _sql2jsonval(oRs, fld, model)
{
var field = model.fields[fld];
@@ -914,26 +916,27 @@ api2 = {
if (field.val instanceof Function)
var val = field.val(oRs, field, model, sqlfieldname);
else if (field.dbs.indexOf(".") < 0)
{
var val = oRs(sqlfieldname).Value;
}
else
var val = oRs(field.dbs.split(".")[1]).Value;
if (field.typ == "check" || field.typ == "check0")
{
if (field.invert)
val = (val==1?0:1);
}
if (val === null)
return val;
if (field.typ == "date")
val = new Date(val);
if (field.typ == "datetime")
val = new Date(val);
if (field.typ == "time") // In de database ondersteunen we dit niet maar komt voor bij fac_report
val = new Date(val);
switch (field.typ)
{
case "check":
case "check0":
if (field.invert)
val = (val==1?0:1);
return val;
break;
case "date":
case "datetime":
case "time": // In de database ondersteunen we dit niet maar komt voor bij fac_report
return new Date(val);
break;
}
// Wat te doen met lege waarde
// action: null
// action: {key: null, name: null}
@@ -1097,6 +1100,8 @@ api2 = {
limit = params.filter.limit;
if (params.filter.nolimit || limit == -1)
limit = 99999999; // Excel/CSV alles tonen
while (!oRs.Eof)
{
if (data.length >= limit) // Alleen nog maar tellen
@@ -1115,6 +1120,7 @@ api2 = {
oRs.MoveNext();
continue;
}
var newrecord = true;
if (model.primary)
{
var key = oRs(model.primary).Value;
@@ -1134,6 +1140,8 @@ api2 = {
}
var record = {};
}
else
newrecord = false; // er komen nog wel include-records achteraan
}
// Complexe filtering die we niet voor elkaar kregen met een WHERE-clause
@@ -1148,21 +1156,24 @@ api2 = {
}
var fld;
for (fld in model.fields)
if (newrecord) // dan moeten de velden van het basis model eerst
{
if (fld.substring(0,1) == "_")
continue;
var field = model.fields[fld];
if (field.hidden)
continue;
if ("fields" in params.filter && !inArray(fld, params.filter.fields.split(",")))
continue;
for (fld in model.fields)
{
if (fld.substring(0,1) == "_")
continue;
var field = model.fields[fld];
if (field.hidden)
continue;
if ("fields" in params.filter && !inArray(fld, params.filter.fields.split(",")))
continue;
var val = api2.sql2jsonval(oRs, fld, model)
//waarom was dit aanwezig?
//if (field.readonly && !val.id)
// continue;
record[fld] = val;
var val = api2.sql2jsonval(oRs, fld, model)
//waarom was dit aanwezig?
//if (field.readonly && !val.id)
// continue;
record[fld] = val;
}
}
if (params.include && model.includes)
{