diff --git a/APPL/API2/api2.inc b/APPL/API2/api2.inc index 23b85aa9a8..6e65d8a226 100644 --- a/APPL/API2/api2.inc +++ b/APPL/API2/api2.inc @@ -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) {