diff --git a/APPL/API2/api2.inc b/APPL/API2/api2.inc index 7de3e35d07..31c8ac62f7 100644 --- a/APPL/API2/api2.inc +++ b/APPL/API2/api2.inc @@ -25,6 +25,7 @@ api2 = { var val; if (formfields[i].frm) { + var fld = model.fields[formfields[i].name]; var typ = model.fields[formfields[i].name].typ; // Haal waarde uit de formparameters. @@ -47,7 +48,27 @@ api2 = { break; case "key": case "number": - val = getFParamInt(formfields[i].frm, null); + if (fld.bits) + { + val = 0; + for (var b=0; b < fld.bits.length; b++) + { + var bit = fld.bits[b]; + if (bit.typ == "check") + { + var invert = bit.invert; + val += ((Request.Form(bit.name).count==1)?(invert?0:bit.mask):(invert?bit.mask:0)); + } + else if (bit.typ == "LOV") + { + val += getFParamInt(bit.name, 0); + } + } + } + else + { + val = getFParamInt(formfields[i].frm, null); + } break; case "check": case "check0": diff --git a/APPL/SCF/scaffolding.inc b/APPL/SCF/scaffolding.inc index 36d903eca5..01526c0ec0 100644 --- a/APPL/SCF/scaffolding.inc +++ b/APPL/SCF/scaffolding.inc @@ -172,12 +172,30 @@ function scf_ROFIELDTR(model, fld, val, key, params) if (field.translate && key) params.translate = { fld: field.dbs, key: key } - if (field.typ == "check" || field.typ == "check0") + if (field.bits) + { + for (var i=0; i < field.bits.length; i++) + { + var bit = field.bits[i]; + if (bit.typ == "check") + { + var data = (val & bit.mask); + ROCHECKBOXTR("fldtxt", bit.label, data, params); + } + else if (bit.typ == "LOV") + { + var data = (val.id & bit.mask); + ROFIELDTR("fldtxt", bit.label, data, params); + } + } + } + else if (field.typ == "check" || field.typ == "check0") ROCHECKBOXTR("fldtxt", field.label, txt, params); else if (!field.hidden_fld) ROFIELDTR("fldtxt", field.label, txt, params); } + function scf_RWFIELDTR(model, fld, val, key, params) { var params = params || {}; @@ -330,6 +348,31 @@ function scf_RWFIELDTR(model, fld, val, key, params) }); } } + else if (field.bits) + { + var params_bits = params; + params_bits.hidden_fld = true; + RWFIELDTR(fld, "fld", field.label, val, params_bits); + for (var i=0; i < field.bits.length; i++) + { + var bit = field.bits[i]; + if (bit.typ == "check") + { + var data = (val & bit.mask); + RWCHECKBOXTR(bit.name, "fldcheck", bit.label, data); + } + else if (bit.typ == "LOV") + { + var data = (val & bit.mask); + var sql = api2.splitLOV2sql(bit.LOV); + FCLTselector(bit.name, + sql, + { label: bit.label, + initKey: params.search?"":data + }); + } + } + } else if (field.LOV) { if (field.required && field.LOV.split(";").length == 2 && val && val.id == field.LOV.split(";")[0])