FCLT#82645 Alleen lezen kenmerken niet tonen in multi-edit kenmerk

svn path=/Website/trunk/; revision=63899
This commit is contained in:
Erik Groener
2024-03-13 10:06:53 +00:00
parent 56c3ba015a
commit 7885349a17
3 changed files with 26 additions and 15 deletions

View File

@@ -47,22 +47,31 @@ var transitParam = buildTransitParam(["mld_key", "multi", "urole"]);
function allStdmKenmerk(stdm_key)
{
var flexkm = getFlexKenmerkBlockSql( {stdm_arr: [stdm_key], mld_key: -1} );
var srtkenmerk_list = [];
var kenmerk_list = [];
var lvlkenmerk_list = [];
var oRs = Oracle.Execute(flexkm.sql);
while (!oRs.eof)
{
srtkenmerk_list.push(oRs("srtkenmerk_key").Value);
kenmerk_list.push(oRs("kenmerk_key").Value);
lvlkenmerk_list.push( { km_key: oRs("kenmerk_key").Value
, srt_key: oRs("srtkenmerk_key").Value
, km_name: oRs("kenmerk_omschrijving").Value
} );
oRs.MoveNext();
}
oRs.Close();
return { srt_key: stdm_key
, srtkenmerk_list: srtkenmerk_list
, kenmerk_list: kenmerk_list
, lvlkenmerk_list: lvlkenmerk_list
};
}
function getCommonPropertiesList(obj, list, elm)
{
var elm_list = [];
for (var i=0; i<obj[list].length; i++)
{
elm_list.push(obj[list][i][elm]);
}
return elm_list;
}
// Van elke standaardmelding die bij de geselecteerde meldingen hoort de kenmerken ophalen.
var ingesloten_stdm = [];
@@ -136,7 +145,7 @@ ingesloten_stdm = getObjectsCommonProperties(ingesloten_stdm);
var buttons = [];
MODAL_BLOCK_START("multikenmerk", L("lcl_multiedit_kenmerk_common"), { icon: "fa-tag"});
if (ingesloten_stdm[0].kenmerk_list.length == 0)
if (ingesloten_stdm[0].lvlkenmerk_list.length == 0)
{
ROFIELD("fldoms", "", L("lcl_multiedit_kenmerk_warning"));
@@ -146,7 +155,7 @@ ingesloten_stdm = getObjectsCommonProperties(ingesloten_stdm);
buttons.push({title: L("lcl_submit"), icon: "fa-fclt-save", action: "mld_submit()", singlepress: true, id: "btn_kenmerk_submit", importance: 1});
var flexParams = { stdm_arr: [ingesloten_stdm[0].srt_key]
, mld_key: -1
, kenmerk_keys: ingesloten_stdm[0].kenmerk_list
, kenmerk_keys: getCommonPropertiesList(ingesloten_stdm[0], "lvlkenmerk_list", "km_key")
, multiEdit: true
};
generateFlexKenmerkBlock (flexParams);

View File

@@ -58,7 +58,8 @@ if (ingesloten.length > 0)
// In _saveFlexKenmerken() zijn de kenmerk keys nodig die bij de betreffende (std)melding horen.
// De functie flexkenmerken2jsondata() leest echter de referentie kenmerken. Met onderstaande query
// worden de kenmerken bepaald die horen bij de (std)melding.
var sql = "SELECT rk.mld_kenmerk_key ref_kenmerk_key"
var sql = "SELECT COALESCE(rk.mld_kenmerk_omschrijving, s.mld_srtkenmerk_omschrijving) ref_naam"
+ " , rk.mld_kenmerk_key ref_kenmerk_key"
+ " , k.mld_srtkenmerk_key"
+ " , k.mld_kenmerk_key"
+ " , k.mld_stdmelding_key"
@@ -74,6 +75,7 @@ if (ingesloten.length > 0)
+ " , mld_kenmerkmelding w"
+ " , mld_kenmerk rk"
+ " WHERE k.mld_srtkenmerk_key = s.mld_srtkenmerk_key"
+ " AND COALESCE(k.mld_kenmerk_omschrijving, s.mld_srtkenmerk_omschrijving) = COALESCE(rk.mld_kenmerk_omschrijving, s.mld_srtkenmerk_omschrijving)"
+ " AND k.mld_kenmerk_verwijder IS NULL"
+ " AND s.mld_srtkenmerk_verwijder IS NULL"
+ " AND m.mld_stdmelding_key = t.mld_stdmelding_key"

View File

@@ -3980,21 +3980,21 @@ function getObjectsCommonProperties(disc_arr)
{
var v_ref = disc_arr[0];
var v_std = disc_arr[m];
for (r=v_ref.srtkenmerk_list.length-1; r>=0; r--) // Ja, klopt: reverse loop. Elementen uit array moet je achteraan verwijderen ivm index.
for (r=v_ref.lvlkenmerk_list.length-1; r>=0; r--) // Ja, klopt: reverse loop. Elementen uit array moet je achteraan verwijderen ivm index.
{
var v_refknm = v_ref.lvlkenmerk_list[r];
var found = false;
for (var k=0; k<v_std.srtkenmerk_list.length; k++)
for (var k=0; k<v_std.lvlkenmerk_list.length; k++)
{
var v_knm = v_std.srtkenmerk_list[k];
if (v_knm == v_ref.srtkenmerk_list[r])
var v_stdknm = v_std.lvlkenmerk_list[k];
if (v_stdknm.srt_key == v_refknm.srt_key && v_stdknm.km_name == v_refknm.km_name)
{
found = true;
}
}
if (!found)
{
v_ref.srtkenmerk_list.splice(r,1);
v_ref.kenmerk_list.splice(r,1);
v_ref.lvlkenmerk_list.splice(r,1);
}
}
}