Compare commits
135 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| 887c41c38f | |||
|
|
32371c5a93 | ||
| 04e0121327 | |||
|
|
f12a590be7 | ||
|
|
311056fcd0 | ||
| 7e12d2e89d | |||
| 5e0830f3e7 | |||
| c202441bc3 | |||
|
|
9db37d0799 | ||
|
|
d755eafb4b | ||
| 619227db31 | |||
|
|
c782946ed5 | ||
|
|
0f60c05ebb | ||
|
|
101c57e6e7 | ||
| 3382bd328e | |||
|
|
5229137ddb | ||
| 71a720cd2a | |||
| 23d7714e9d | |||
|
|
4061b7ab8d | ||
| 63320e02c8 | |||
| e76cde3b6e | |||
| 7c83e1a95f | |||
| 63104cf64f | |||
|
|
b5ef510c2d | ||
| 6570d9c6f6 | |||
|
|
a278d55627 | ||
| c99f613ebb | |||
|
|
668c710225 | ||
|
|
a6151bc5fd | ||
|
|
a7e5c2b2c1 | ||
|
|
145dca9f93 | ||
|
|
f37c0f13a8 | ||
| a40265dea5 | |||
| 9c0d5b97b2 | |||
| 081ee768dd | |||
|
|
4002dd1925 | ||
| 289dd726be | |||
| 76fdcc3537 | |||
|
|
5b8146ed96 | ||
|
|
044f2cffac | ||
|
|
edc9f423ac | ||
|
|
788b38c2dd | ||
| ae70720f41 | |||
| 1953236e81 | |||
| 0f6f39f507 | |||
|
|
6f2655928f | ||
| 22001ff5df | |||
|
|
70f3634c2b | ||
| f56df8f653 | |||
| 33a85941c2 | |||
|
|
d1cb311e7d | ||
| 41a7cb7ce1 | |||
|
|
9e062322ea | ||
|
|
509bd7320a | ||
| 03b516835e | |||
| e9a2b60e51 | |||
| 8a8991dac6 | |||
| 8f0d445447 | |||
| 7326b26f7c | |||
| 7443481006 | |||
| 9035a8fcba | |||
| ab6674f815 | |||
| 38479e785b | |||
| d022a5249f | |||
| eeb3202f32 | |||
| 59d396a9fa | |||
| 6639d638e5 | |||
|
|
aa0ab997bf | ||
|
|
72c2f2dbdf | ||
| bd83804fcf | |||
|
|
221f5617fe | ||
|
|
841eeb2825 | ||
|
|
45916f3d08 | ||
|
|
bcd2d6d5b7 | ||
| 9800eb7f39 | |||
|
|
e8ba082fe6 | ||
|
|
c201ca184d | ||
|
|
a78b72b8d5 | ||
|
|
518ea45e0e | ||
|
|
dc02f88c4d | ||
| 9a696caa68 | |||
| 070d123a02 | |||
| f361dd3580 | |||
| 59c8524228 | |||
| 071f470043 | |||
|
|
216424c3ca | ||
|
|
46e916a73f | ||
|
|
3c9b207237 | ||
|
|
c74d95f7d5 | ||
| 4bb1f23f31 | |||
| e3e86a803b | |||
| 171b91f2aa | |||
| b611a6b79f | |||
|
|
5db0846e7a | ||
|
|
ce7954f7f5 | ||
|
|
ed4cfb8110 | ||
|
|
5db83be5c6 | ||
| f79d49f62a | |||
| 72c9bcb868 | |||
| d9f5ce53a4 | |||
| d260891ad9 | |||
|
|
e73a58dd83 | ||
|
|
4f9f02e341 | ||
| 62655cc71c | |||
|
|
a827317958 | ||
|
|
abb3a52712 | ||
|
|
ce8a257dfe | ||
|
|
393d2cad72 | ||
|
|
60682d4d60 | ||
|
|
803823985e | ||
|
|
0223634371 | ||
|
|
478b7e0100 | ||
|
|
f3451e6e8e | ||
| 3d08eec025 | |||
| 158feb546e | |||
| c6873f592a | |||
|
|
72a96dc99f | ||
|
|
8e6bf43766 | ||
|
|
51dd981e99 | ||
|
|
6caedf9d20 | ||
| fde97e77db | |||
|
|
9c16d3c64c | ||
|
|
0fde26b710 | ||
|
|
fbdf22ce2b | ||
|
|
fbdac726de | ||
|
|
f952796c90 | ||
|
|
59a1d7bc95 | ||
|
|
14fedd2362 | ||
|
|
9b402a03be | ||
| 1791f20605 | |||
| 5cbda984e1 | |||
|
|
5aca63408d | ||
| 8b46dbe160 | |||
| 639bd46c79 | |||
| e78b068354 |
@@ -216,7 +216,7 @@ function model_generic(table, autfunction)
|
||||
|
||||
var fld = oRs.Fields("column_name").Value;
|
||||
|
||||
if (fld == table.toLowerCase() + "_verwijder" || fld == 'ins_discipline_verwijder')
|
||||
if (fld == table.toLowerCase() + "_verwijder" || fld == 'ins_discipline_verwijder' || fld == 'res_srtartikel_og_verwijder' || fld == 'res_ruimte_opstel_verwijder')
|
||||
model.soft_delete = fld;
|
||||
|
||||
// Dan zien we hem ook nergens meer?
|
||||
|
||||
@@ -41,6 +41,7 @@ function model_alg_locatie()
|
||||
"mjb_score" : { dbs: "alg_locatie_mjb_score1" , typ: "number" , "label": L("lcl_alg_locatie_mjb_score1")},
|
||||
"coordinate_x" : { dbs: "alg_locatie_x" , typ: "number" , "label": L("lcl_geoxcoord")},
|
||||
"coordinate_y" : { dbs: "alg_locatie_y" , typ: "number" , "label": L("lcl_geoycoord")},
|
||||
"expires" : { dbs: "alg_locatie_vervaldatum" , typ: "date" , "label": L("lcl_alg_vervaldatum")},
|
||||
"externnr" : { dbs: "alg_locatie_externnr" , typ: "varchar" , "label": L("extern_nr"), "readonly": !(user.has("WEB_FACTAB") || user.has("WEB_FACXNR")) },
|
||||
"externsyncdate": { dbs: "alg_locatie_externsyncdate" , typ: "datetime" , "label": L("extern_syncdate"), "readonly": !(user.has("WEB_FACTAB") || user.has("WEB_FACXNR")) },
|
||||
"seqnr" : { dbs: "alg_locatie_volgnr" , typ: "number" , "label": L("lcl_alg_locatie_volgnr") },
|
||||
|
||||
@@ -37,7 +37,7 @@ function model_mld_discipline_discipline()
|
||||
"required": true,
|
||||
"insertonly": true,
|
||||
"foreign": {
|
||||
"tbl": "(SELECT ins_discipline_key, ins_discipline_omschrijving"
|
||||
"tbl": "(SELECT ins_discipline_key, isd.ins_srtdiscipline_omschrijving || ' - ' || ins_discipline_omschrijving AS ins_discipline_omschrijving"
|
||||
+ " FROM ins_srtdiscipline isd, ins_tab_discipline td, mld_disc_params dp"
|
||||
+ " WHERE isd.ins_srtdiscipline_key = td.ins_srtdiscipline_key"
|
||||
+ " AND td.ins_discipline_key = dp.mld_ins_discipline_key"
|
||||
@@ -54,7 +54,7 @@ function model_mld_discipline_discipline()
|
||||
"required": true,
|
||||
"insertonly": true,
|
||||
"foreign": {
|
||||
"tbl": "(SELECT ins_discipline_key, ins_discipline_omschrijving"
|
||||
"tbl": "(SELECT ins_discipline_key, ins_discipline_omschrijving || ' (' || ins_srtdiscipline_omschrijving || ')' AS ins_discipline_omschrijving"
|
||||
+ " FROM ins_srtdiscipline isd, ins_tab_discipline td, mld_disc_params dp"
|
||||
+ " WHERE isd.ins_srtdiscipline_key = td.ins_srtdiscipline_key"
|
||||
+ " AND td.ins_discipline_key = dp.mld_ins_discipline_key"
|
||||
|
||||
@@ -114,7 +114,8 @@ function model_mld_melding_tag()
|
||||
"active": {
|
||||
"dbs": "mld_melding_tag_actief",
|
||||
"label": L("mld_melding_tag_actief"),
|
||||
"typ": "check0"
|
||||
"typ": "check0",
|
||||
"defaultvalue": 1
|
||||
},
|
||||
"begindate": {
|
||||
"dbs": "mld_melding_tag_datum_van",
|
||||
|
||||
@@ -1918,6 +1918,7 @@
|
||||
voorraad_srtdeel: function _voorraad_srtdeel(pautfunction, params)
|
||||
{
|
||||
// Valid and supported parameters are:
|
||||
// params.catalogus_type: key
|
||||
// params.catalogus_key : key
|
||||
// params.besgroep_key :
|
||||
// params.item_key :
|
||||
@@ -1988,6 +1989,9 @@
|
||||
+ " AND g.ins_discipline_key = bd.ins_discipline_key"
|
||||
+ " AND bd.ins_discipline_key = dp.bes_ins_discipline_key"
|
||||
+ " AND sd.bes_srtdeel_verwijder IS NULL"
|
||||
+ (params.catalogus_type
|
||||
? " AND dp.bes_disc_params_bestelmode = " + params.catalogus_type
|
||||
: "")
|
||||
+ (params.catalogus_key
|
||||
? " AND dp.bes_ins_discipline_key_inkoop = " + params.catalogus_key
|
||||
+ " AND (sd.bes_srtdeel_vervaldatum IS NULL OR sd.bes_srtdeel_vervaldatum > SYSDATE)"
|
||||
@@ -2071,6 +2075,9 @@
|
||||
+ " AND g.ins_discipline_key = bd.ins_discipline_key"
|
||||
+ " AND bd.ins_discipline_key = dp.bes_ins_discipline_key"
|
||||
+ " AND sd.bes_srtdeel_verwijder IS NULL"
|
||||
+ (params.catalogus_type
|
||||
? " AND dp.bes_disc_params_bestelmode = " + params.catalogus_type
|
||||
: "")
|
||||
+ (params.catalogus_key
|
||||
? " AND dp.bes_ins_discipline_key_inkoop = " + params.catalogus_key
|
||||
+ " AND (sd.bes_srtdeel_vervaldatum IS NULL OR sd.bes_srtdeel_vervaldatum > SYSDATE)"
|
||||
@@ -2187,6 +2194,9 @@
|
||||
+ " AND bd1.ins_discipline_key = dp1.bes_ins_discipline_key"
|
||||
+ " AND sd1.bes_srtdeel_nr = sd.bes_srtdeel_nr" // Dezelfde omschrijving.
|
||||
+ " AND dp1.bes_ins_discipline_key_inkoop = bd.ins_discipline_key)" // Gekoppeld aan inkoopcatalogus.
|
||||
+ (params.catalogus_type
|
||||
? " AND dp.bes_disc_params_bestelmode = " + params.catalogus_type
|
||||
: "")
|
||||
+ (params.catalogus_key
|
||||
? " AND bd.ins_discipline_key = " + params.catalogus_key
|
||||
+ " AND (sd.bes_srtdeel_vervaldatum IS NULL OR sd.bes_srtdeel_vervaldatum > SYSDATE)"
|
||||
@@ -2283,6 +2293,9 @@
|
||||
+ " AND bd1.ins_discipline_key = dp1.bes_ins_discipline_key"
|
||||
+ " AND sd1.bes_srtdeel_nr = sd.bes_srtdeel_nr" // Dezelfde omschrijving.
|
||||
+ " AND dp1.bes_ins_discipline_key_inkoop = bd.ins_discipline_key)" // Gekoppeld aan inkoopcatalogus.
|
||||
+ (params.catalogus_type
|
||||
? " AND dp.bes_disc_params_bestelmode = " + params.catalogus_type
|
||||
: "")
|
||||
+ (params.catalogus_key
|
||||
? " AND bd.ins_discipline_key = " + params.catalogus_key
|
||||
+ " AND (sd.bes_srtdeel_vervaldatum IS NULL OR sd.bes_srtdeel_vervaldatum > SYSDATE)"
|
||||
@@ -2377,6 +2390,9 @@
|
||||
+ " AND bd1.ins_discipline_key = dp1.bes_ins_discipline_key"
|
||||
+ " AND sd1.bes_srtdeel_nr = sd.bes_srtdeel_nr" // Dezelfde omschrijving.
|
||||
+ " AND dp1.bes_ins_discipline_key_inkoop = bd.ins_discipline_key)" // Gekoppeld aan inkoopcatalogus.
|
||||
+ (params.catalogus_type
|
||||
? " AND dp.bes_disc_params_bestelmode = " + params.catalogus_type
|
||||
: "")
|
||||
+ (params.catalogus_key
|
||||
? " AND bd.ins_discipline_key = " + params.catalogus_key
|
||||
+ " AND (sd.bes_srtdeel_vervaldatum IS NULL OR sd.bes_srtdeel_vervaldatum > SYSDATE)"
|
||||
|
||||
@@ -47,12 +47,13 @@ function updateDisc(pautfunction, pdisc, psrtgroup, psrtdeel)
|
||||
$("#instock").closest("tr").show();
|
||||
}
|
||||
|
||||
var ldisctype = $('#disctype :selected').val();
|
||||
var ldisctype = $('#disctype :selected').val() || -1;
|
||||
$("#disc").load("../Shared/loadBESDisc.asp?" + serializeObj(
|
||||
{ autfunction: pautfunction,
|
||||
disctype: ldisctype,
|
||||
module: "bes",
|
||||
emptyOption: "",
|
||||
selectjustone: 1,
|
||||
disc_key_arr: (pdisc? pdisc : []) }),
|
||||
function ()
|
||||
{ // Selecteer eventueel de initi<74>le items die meegegeven kunnen worden
|
||||
@@ -68,6 +69,7 @@ function updateSrtGroup(pautfunction, psrtgroup, psrtdeel)
|
||||
disc_key_arr: ldis_key,
|
||||
module: "bes",
|
||||
emptyOption: "",
|
||||
selectjustone: 1,
|
||||
srtgroup: (psrtgroup? psrtgroup : []) }),
|
||||
function ()
|
||||
{ // Selecteer eventueel de initi<74>le items die meegegeven kunnen worden
|
||||
@@ -84,6 +86,7 @@ function updateSrtDeel(pautfunction, psrtdeel)
|
||||
srtgroup_key_arr: lsrtgroup,
|
||||
module: "bes",
|
||||
emptyOption: "",
|
||||
selectjustone: 1,
|
||||
srtdeel: (psrtdeel? psrtdeel : []),
|
||||
verwijderd: (maninfo ? 1 : ""),
|
||||
datefrom: (maninfo ? $('#date_from').val() : "")
|
||||
|
||||
@@ -25,6 +25,7 @@ function bes_voorraad_list (pautfunction, params)
|
||||
// params.urole : the usuals two-letter lowercase string
|
||||
// params.outputmode : print to 0 = screen, 1 = printer, 2 = excel, etc.
|
||||
// params.showall : boolean (true | false)
|
||||
// params.catalogus_type: key
|
||||
// params.catalogus_key : key
|
||||
// params.besgroep_key :
|
||||
// params.item_key :
|
||||
@@ -212,8 +213,8 @@ function bes_voorraad_list (pautfunction, params)
|
||||
rst.addColumn(new Column({caption: "Uit-maar nog in magazijn", content: "aantal_uitmaarnoginmagazijn", datatype: "number", total: true}));
|
||||
rst.addColumn(new Column({caption: L("lcl_bes_voorraad"), content: "voorraad", datatype: "number", total: true}));
|
||||
rst.addColumn(new Column({caption: L("lcl_bes_unity"), content: "eenheid_extern"}));
|
||||
rst.addColumn(new Column({caption: L("lcl_bes_voorraadmin"), content: "voorraadmin"}));
|
||||
rst.addColumn(new Column({caption: L("lcl_bes_voorraadmax"), content: "voorraadmax"}));
|
||||
rst.addColumn(new Column({caption: L("lcl_bes_voorraadmin"), content: "voorraadmin", datatype: "number"}));
|
||||
rst.addColumn(new Column({caption: L("lcl_bes_voorraadmax"), content: "voorraadmax", datatype: "number"}));
|
||||
rst.addColumn(new Column({caption: L("lcl_bes_lopend"), content: "aantal_open_order", datatype: "number", total: true}));
|
||||
rst.addColumn(new Column({caption: L("lcl_bes_bestellen"), content: fncolTeBestellen, datatype: "number", total: true}));
|
||||
}
|
||||
@@ -245,4 +246,3 @@ function bes_voorraad_list (pautfunction, params)
|
||||
<%
|
||||
}
|
||||
%>
|
||||
|
||||
|
||||
@@ -78,6 +78,16 @@ var authparams = user.checkAutorisation(autfunction);
|
||||
<input type="hidden" name="urole" value="<%=urole%>">
|
||||
<% // <!-- Catalogus type -->
|
||||
var sql = "SELECT SUM(CASE"
|
||||
+ " WHEN dp.bes_disc_params_bestelmode = 0"
|
||||
+ " THEN 1"
|
||||
+ " ELSE 0"
|
||||
+ " END) aantal_uitcat"
|
||||
+ " , SUM(CASE"
|
||||
+ " WHEN dp.bes_disc_params_bestelmode = 1"
|
||||
+ " THEN 1"
|
||||
+ " ELSE 0"
|
||||
+ " END) aantal_vrij"
|
||||
+ " , SUM(CASE"
|
||||
+ " WHEN dp.bes_disc_params_bestelmode = 2"
|
||||
+ " THEN 1"
|
||||
+ " ELSE 0"
|
||||
@@ -89,12 +99,29 @@ var authparams = user.checkAutorisation(autfunction);
|
||||
+ " END) aantal_actueel"
|
||||
+ " FROM bes_discipline bd"
|
||||
+ " , bes_disc_params dp"
|
||||
+ " WHERE bd.ins_discipline_key = dp.bes_ins_discipline_key";
|
||||
+ " WHERE bd.ins_discipline_key = dp.bes_ins_discipline_key"
|
||||
+ " AND bd.ins_discipline_verwijder IS NULL"
|
||||
+ " AND (bd.ins_discipline_key IN (SELECT dp.bes_ins_discipline_key_inkoop"
|
||||
+ " FROM bes_disc_params dp"
|
||||
+ " WHERE dp.bes_ins_discipline_key_inkoop IS NOT NULL)"
|
||||
+ " OR dp.bes_disc_params_bestelmode = 3)"
|
||||
+ " AND ins_discipline_key IN (SELECT ins_discipline_key"
|
||||
+ " FROM fac_v_webgebruiker g"
|
||||
+ " , fac_functie f"
|
||||
+ " WHERE g.prs_perslid_key = " + user_key
|
||||
+ " AND f.fac_functie_key = g.fac_functie_key "
|
||||
+ " AND f.fac_functie_code = " + safe.quoted_sql(autfunction) + ")";
|
||||
var oRs = Oracle.Execute(sql);
|
||||
var aantal_bestel = oRs("aantal_bestel").Value;
|
||||
var aantal_actueel = oRs("aantal_actueel").Value;
|
||||
var aantal_uitcat = oRs("aantal_uitcat").Value; // Uit catalogus(0).
|
||||
var aantal_vrij = oRs("aantal_vrij").Value; // Vrij aanmaken(1).
|
||||
var aantal_bestel = oRs("aantal_bestel").Value; // Bestellijst(2).
|
||||
var aantal_actueel = oRs("aantal_actueel").Value; // Actuele lijst(3).
|
||||
oRs.Close();
|
||||
var sql_arr = [];
|
||||
if (aantal_uitcat > 0)
|
||||
sql_arr.push("SELECT 0, " + safe.quoted_sql("Uit catalogus") + " FROM DUAL");
|
||||
if (aantal_vrij > 0)
|
||||
sql_arr.push("SELECT 1, " + safe.quoted_sql("Vrij aanmaken") + " FROM DUAL");
|
||||
if (aantal_bestel > 0)
|
||||
sql_arr.push("SELECT 2, " + safe.quoted_sql(L("lcl_bes_orderlist")) + " FROM DUAL");
|
||||
if (aantal_actueel > 0)
|
||||
@@ -107,6 +134,7 @@ var authparams = user.checkAutorisation(autfunction);
|
||||
onChange: 'updateDisc("' + autfunction + '");', // discChanged
|
||||
trclass: "primsearch",
|
||||
emptyOption: "",
|
||||
selectjustone: true, // required zorgt er eigenlijk ook al voor dat als er maar 1 waarde is, dat deze wordt geselecteerd.
|
||||
required: true
|
||||
});
|
||||
|
||||
@@ -114,10 +142,13 @@ var authparams = user.checkAutorisation(autfunction);
|
||||
var sql = "SELECT bd.ins_discipline_key"
|
||||
+ " , " + lcl.xsqla('bd.ins_discipline_omschrijving','bd.ins_discipline_key')
|
||||
+ " FROM bes_discipline bd"
|
||||
+ " WHERE bd.ins_discipline_verwijder IS NULL"
|
||||
+ " AND bd.ins_discipline_key IN (SELECT dp.bes_ins_discipline_key_inkoop"
|
||||
+ " FROM bes_disc_params dp"
|
||||
+ " WHERE dp.bes_ins_discipline_key_inkoop IS NOT NULL)"
|
||||
+ " , bes_disc_params dp"
|
||||
+ " WHERE bd.ins_discipline_key = dp.bes_ins_discipline_key"
|
||||
+ " AND bd.ins_discipline_verwijder IS NULL"
|
||||
+ " AND (bd.ins_discipline_key IN (SELECT dp.bes_ins_discipline_key_inkoop"
|
||||
+ " FROM bes_disc_params dp"
|
||||
+ " WHERE dp.bes_ins_discipline_key_inkoop IS NOT NULL)"
|
||||
+ " OR dp.bes_disc_params_bestelmode = 3)"
|
||||
+ " AND ins_discipline_key IN (SELECT ins_discipline_key"
|
||||
+ " FROM fac_v_webgebruiker g"
|
||||
+ " , fac_functie f"
|
||||
@@ -131,7 +162,8 @@ var authparams = user.checkAutorisation(autfunction);
|
||||
label: L("lcl_bes_Catalogus"),
|
||||
onChange: 'updateSrtGroup("' + autfunction + '");', // discChanged
|
||||
trclass:"primsearch",
|
||||
emptyOption: ""
|
||||
emptyOption: "",
|
||||
selectjustone: true
|
||||
});
|
||||
%>
|
||||
|
||||
@@ -142,7 +174,8 @@ var authparams = user.checkAutorisation(autfunction);
|
||||
label: L("lcl_bes_srtgroup"),
|
||||
onChange: 'updateSrtDeel("' + autfunction + '");', // srtgroupChanged
|
||||
trclass: "secsearch",
|
||||
emptyOption: ""
|
||||
emptyOption: "",
|
||||
selectjustone: true
|
||||
}); %>
|
||||
|
||||
<!-- Item select box -->
|
||||
@@ -151,14 +184,15 @@ var authparams = user.checkAutorisation(autfunction);
|
||||
{ initKey: srtdeel,
|
||||
label: L("lcl_bes_srtdeel"),
|
||||
trclass: "secsearch",
|
||||
emptyOption: ""
|
||||
emptyOption: "",
|
||||
selectjustone: true
|
||||
}); %>
|
||||
<script type="text/javascript">
|
||||
// Laad de groupen en de items
|
||||
// Selecteer eventueel de initi<74>le groepen en items die meegegeven kunnen worden
|
||||
$(function()
|
||||
{
|
||||
updateDisc("<%=autfunction%>", "<%=disc%>", "<%=srtgroup%>", "<%=srtdeel%>");
|
||||
updateDisc("<%=autfunction%>", "<%=disc%>", "<%=srtgroup%>", "<%=srtdeel%>");
|
||||
});
|
||||
</script>
|
||||
<% SEARCH_BLOCK_END();
|
||||
|
||||
@@ -70,6 +70,7 @@ else
|
||||
{ urole : urole,
|
||||
outputmode: outputmode,
|
||||
showall: showall,
|
||||
catalogus_type: (disctype != -1? disctype : null),
|
||||
catalogus_key: (disc != -1? disc : null),
|
||||
besgroep_key: (besgroep_key != -1? besgroep_key : null),
|
||||
item_key: (item_key != -1? item_key : null),
|
||||
|
||||
@@ -17,7 +17,8 @@ bez =
|
||||
// t.prs_afdeling_key (nog) niet
|
||||
|
||||
var sql_terr = "SELECT alg_terreinsector_key"
|
||||
+ " FROM alg_v_aanwezigterreinsector t WHERE 1=1";
|
||||
+ " FROM alg_v_aanwezigterreinsector t"
|
||||
+ " WHERE (t.alg_terreinsector_vervaldatum IS NULL OR t.alg_terreinsector_vervaldatum > TRUNC(SYSDATE))";
|
||||
var pafparams = user.checkAutorisation("WEB_BEZPAF", true);
|
||||
var autlevel = 9;
|
||||
if (pafparams)
|
||||
|
||||
@@ -322,7 +322,7 @@ function buildSymbols(cHandle, symbolProps)
|
||||
// Zoniet markeer hem dan met een *STAR er achter
|
||||
var rnr = cHandle.FindInContour(oRs("dwgX").Value, oRs("dwgY").Value);
|
||||
// Let op: Sinds 5.3.2 zit R:12345 in de dwf-contour-key
|
||||
if (!rnr || !rnr.match(/^R:/) || rnr.substr(2) != oRs("cadkey").Value)
|
||||
if ((!rnr || !rnr.match(/^R:/) || rnr.substr(2) != oRs("cadkey").Value) && user.has(["WEB_CADBOF", "WEB_CADFOF"]))
|
||||
{
|
||||
var symbol = cHandle.AddSymbol(oRs("dwgX").Value+scl*S("fg_dobbelDist")/2, oRs("dwgY").Value+scl*S("fg_dobbelDist")/2,"*STAR");
|
||||
symbol.Scale = scl*0.25;
|
||||
|
||||
@@ -109,6 +109,20 @@ if (geb_key == -1 && floor_key != -1) {
|
||||
geb_key = oRs("alg_gebouw_key").value;
|
||||
oRs.Close();
|
||||
}
|
||||
|
||||
var multi_tz = Session("time_zone") != S("fac_server_timezone"); // Hebben we te maken met een gebouw, gebruiker of server in een afwijkende tijdszone?
|
||||
if (!multi_tz) {
|
||||
var sql = "SELECT l.alg_locatie_timezone"
|
||||
+ " FROM alg_locatie l, alg_gebouw g"
|
||||
+ " WHERE g.alg_gebouw_key = " + geb_key
|
||||
+ " AND g.alg_locatie_key = l.alg_locatie_key";
|
||||
var oRs = Oracle.Execute(sql);
|
||||
var alg_tz = !oRs.EOF && oRs("alg_locatie_timezone").Value
|
||||
|| S("fac_server_timezone");
|
||||
oRs.Close();
|
||||
multi_tz = alg_tz != Session("time_zone");
|
||||
}
|
||||
|
||||
var hidenav = getQParamInt("hidenav", 0); // optie: toon geen floornavigator
|
||||
|
||||
var fac_usrrap_key = getQParamInt("fac_usrrap_key", S("fg_infobordreport_key")); // In de core is een default usrrap (res_v_rap_infobordframe) met key <12> gedefinieerd
|
||||
@@ -236,7 +250,7 @@ if (fac_usrrap_key > -1)
|
||||
} );
|
||||
}
|
||||
else
|
||||
MMap.Refresh();
|
||||
MMap.Refresh(false, true); // geen autozoom
|
||||
|
||||
|
||||
}
|
||||
@@ -404,7 +418,7 @@ var /*global*/ resizeTimerID=null;
|
||||
Response.Write("<h2 class='floorscreen'>" + safe.html(oRs("alg_gebouw_naam").value) + "</h2>");
|
||||
if (datumfilter)
|
||||
{
|
||||
Response.Write("<h2 class='infodatumfilter'>" + toDateString(datumfilter, false, true) + "</h2>");
|
||||
Response.Write("<h2 class='infodatumfilter'>" + toDateString(datumfilter, { pretty: !multi_tz }) + "</h2>");
|
||||
if (showmode == 0)
|
||||
{
|
||||
Response.Write("<button onclick='to2D()'>2D</button'><button onclick='to3D()'>3D</button>");
|
||||
|
||||
@@ -595,8 +595,8 @@ function myIMGProcessor(IMGHandle)
|
||||
// Vertaal dat zo mogelijk naar alg_ruimte_key dan wel ins_deel_key
|
||||
function myFindKeys(SlnkEvent)
|
||||
{
|
||||
if (SlnkEvent.TextLabel != "" && SlnkEvent.TextLayer == "SLNK Labels")
|
||||
{ // Precies op ruimte label geklikt negeren we
|
||||
if (SlnkEvent.TextLabel != "" && (SlnkEvent.TextLayer == "SLNK Labels" || SlnkEvent.TextLayer == "SLNK Symbols"))
|
||||
{ // Precies op ruimte of object label geklikt negeren we
|
||||
SlnkEvent.TextLabel = "";
|
||||
SlnkEvent.TextLayer = "";
|
||||
}
|
||||
|
||||
@@ -127,15 +127,20 @@ cnt = { setcontractstatus:
|
||||
// Tot welk bedrag is er al goedgekeurd.
|
||||
var sql = "SELECT cnt_contract_approved"
|
||||
+ " , cnt_contract_kosten"
|
||||
+ " , dp.cnt_disc_params_approve_new"
|
||||
+ " FROM cnt_contract c"
|
||||
+ " WHERE cnt_contract_key = " + cnt_key;
|
||||
+ " , cnt_disc_params dp"
|
||||
+ " WHERE cnt_contract_key = " + cnt_key
|
||||
+ " AND c.ins_discipline_key = dp.cnt_ins_discipline_key";
|
||||
var oRs = Oracle.Execute(sql);
|
||||
var kosten = oRs("cnt_contract_kosten").Value? oRs("cnt_contract_kosten").Value : 0;
|
||||
var approved = oRs("cnt_contract_approved").Value? oRs("cnt_contract_approved").Value : -1;
|
||||
var nieuwAltijdAccorderen = (oRs("cnt_disc_params_approve_new").Value == 1);
|
||||
oRs.Close();
|
||||
|
||||
var functie_code;
|
||||
if (kosten <= S("cnt_contract_limit1")) // Dit eerst testen i.v.m. Ter goedkeuring. Verder moet sowieso goedgekeurd worden.
|
||||
if (!kosten && nieuwAltijdAccorderen)
|
||||
functie_code = "WEB_CNTGO1";
|
||||
else if (kosten <= S("cnt_contract_limit1")) // Dit eerst testen i.v.m. Ter goedkeuring. Verder moet sowieso goedgekeurd worden.
|
||||
return []; // Het bedrag is lager als de eerste limiet. Het contract hoeft niet goed gekeurd te worden, dus een lege fiatteurs array teruggeven.
|
||||
else if ((S("cnt_approval_all") == 0 && approved <= S("cnt_contract_limit1")) || (S("cnt_approval_all") == 1 && kosten <= S("cnt_contract_limit2")))
|
||||
functie_code = "WEB_CNTGO1";
|
||||
@@ -1081,6 +1086,7 @@ cnt = { setcontractstatus:
|
||||
+ " , dp.cnt_disc_params_huurder"
|
||||
+ " , dp.cnt_disc_params_opties"
|
||||
+ " , dp.cnt_disc_params_ksverplicht"
|
||||
+ " , dp.cnt_disc_params_approve_new"
|
||||
+ " , cc.cnt_contract_mantel_key"
|
||||
+ " , mc.cnt_contract_nummer_intern mantelcontractnummer"
|
||||
+ " , mc.cnt_contract_omschrijving mantelomschrijving"
|
||||
@@ -1178,7 +1184,8 @@ cnt = { setcontractstatus:
|
||||
nnScope: oRs("nnScope").Value,
|
||||
isAbonnement: oRs("bes_disc_params_contract").Value == 1,
|
||||
magAutomatischVerlengen: oRs("cnt_disc_params_opties").Value == 1,
|
||||
openfinref: oRs("openfinref").Value > 0
|
||||
openfinref: oRs("openfinref").Value > 0,
|
||||
nieuwAltijdAccorderen: oRs("cnt_disc_params_approve_new").Value == 1
|
||||
};
|
||||
oRs.Close()
|
||||
|
||||
@@ -1248,7 +1255,8 @@ cnt = { setcontractstatus:
|
||||
|
||||
cresult.canGoedkeur1 = cresult.canWrite("WEB_CNTGO1") && // Heb ik de rechten om goed te keuren op dit niveau 1?
|
||||
terGoedkeuring && // Moet het contract gekeurd worden (juiste status)
|
||||
((S("cnt_approval_all") == 0 && cnt_info.kosten >= S("cnt_contract_limit1")) || // Zijn de kosten hoger als de limiet
|
||||
((!cnt_info.kosten && cnt_info.nieuwAltijdAccorderen) || // Zonder kosten toch accorderen?
|
||||
(S("cnt_approval_all") == 0 && cnt_info.kosten >= S("cnt_contract_limit1")) || // Zijn de kosten hoger als de limiet
|
||||
(S("cnt_approval_all") == 1 && cnt_info.kosten <= S("cnt_contract_limit2"))) && // Zijn de kosten onder mijn limiet om volledig goed te keuren
|
||||
cnt_info.approved <= S("cnt_contract_limit1"); // Welke goedkeur? 1, 2 of 3?
|
||||
cresult.canGoedkeur2 = cresult.canWrite("WEB_CNTGO2") &&
|
||||
|
||||
@@ -30,13 +30,11 @@ var isNew = (cnt_key < 0);
|
||||
|
||||
var sql = "SELECT cdp.cnt_srtcontract_type"
|
||||
+ " , cdp.cnt_disc_params_opties"
|
||||
+ " , cdp.cnt_disc_params_approve_new"
|
||||
+ " FROM cnt_disc_params cdp"
|
||||
+ " WHERE cdp.cnt_ins_discipline_key = " + cnt_disc_key;
|
||||
var oRs = Oracle.Execute(sql);
|
||||
var srtcontract_type = oRs("cnt_srtcontract_type").Value;
|
||||
var magAutomatischVerlengen = (oRs("cnt_disc_params_opties").Value & 1) == 1;
|
||||
var nieuwAltijdAccorderen = (oRs("cnt_disc_params_approve_new").Value == 1);
|
||||
var doapprove = S("cnt_contract_approval") == 1;
|
||||
oRs.Close();
|
||||
|
||||
@@ -71,14 +69,8 @@ else
|
||||
var authparams = user.checkAutorisation(autfunction);
|
||||
|
||||
// Als het approval mechanisme actief is dan altijd eerst naar status Nieuw(2),
|
||||
// Staat in het contractsoort dat een nieuw contract altijd geaccordeerd moet worden dan wordt de status "Ter goedkeuring" (3).
|
||||
// uitgezonderd de Mantel/Master contracten, die gaan altijd langs het goedkeuringsproces.
|
||||
var nieuw_cnt_status = 0;
|
||||
if (doapprove && srtcontract_type != 6)
|
||||
{
|
||||
nieuw_cnt_status = (nieuwAltijdAccorderen ? 3 : 2);
|
||||
}
|
||||
var cnt_info = { contract_status: nieuw_cnt_status };
|
||||
var cnt_info = { contract_status: (doapprove && srtcontract_type != 6? 2 : 0) }
|
||||
}
|
||||
|
||||
// Bestaat het contractnummer al?
|
||||
@@ -220,7 +212,6 @@ else
|
||||
}
|
||||
else
|
||||
// Zetten van de contact status. Indien het contract approval mechanisme actief is dan moet de contract status Nieuw(2) worden en anders Actief(0).
|
||||
// Staat in het contractsoort dat een nieuw contract altijd geaccordeerd moet worden dan wordt de status "Ter goedkeuring" (3).
|
||||
// Uitgezonderd de Mantel/Master contracten, die gaan altijd langs het goedkeuringsproces naar de status Actief(0).
|
||||
cnt.setcontractstatus(cnt_key, cnt_info.contract_status); // Zorgt ook voor tracking en daarmee notificatie.
|
||||
}
|
||||
|
||||
@@ -292,6 +292,7 @@ ANONYMOUS_Allowed = 1;
|
||||
var api_result = callAPI(obj_base27.info.actie, obj_base27);
|
||||
if (api_result.success)
|
||||
{
|
||||
result.success = true;
|
||||
if (obj_base27.info.actie == "incident")
|
||||
{
|
||||
if (api_result.status == 201)
|
||||
|
||||
@@ -179,7 +179,8 @@ ANONYMOUS_Allowed = 1;
|
||||
var status_ok = "200,201,204,206";
|
||||
if (status_ok.indexOf(status) == -1)
|
||||
{
|
||||
errmsg = "TOPdesk error. Status: " + http_request.status;
|
||||
errmsg = "TOPdesk error. Status: " + http_request.status + " " + http_request.statusText
|
||||
+ ":\n" + http_request.responseText;
|
||||
}
|
||||
else
|
||||
{
|
||||
|
||||
@@ -112,6 +112,32 @@ if (Session("interface") == "touch") { %>
|
||||
if (<%=(!device.test(device.isSupported) && S("checkBrowser") == 1 ? "true" : "false")%> || !(Modernizr.promises && Modernizr.strictmode && Modernizr.arrow)) {
|
||||
FcltMgr.alert(L("lcl_invalid_browser"));
|
||||
}
|
||||
|
||||
<% var xfunc = user.func_enabled2("PRS", { prs_key: user_key, isOptional: true });
|
||||
var prsWriteAny =
|
||||
xfunc.canWrite("WEB_PRSMAN") ||
|
||||
xfunc.canWrite("WEB_PRSUSE") ||
|
||||
xfunc.canWrite("WEB_PROFIL");
|
||||
if (prsWriteAny) { %>
|
||||
var userTimezone = "<%=safe.jsstring(user.timezone())%>";
|
||||
var clientTimezone = Intl?.DateTimeFormat()?.resolvedOptions()?.timeZone;
|
||||
if (userTimezone && clientTimezone && userTimezone != clientTimezone) {
|
||||
$(function () {
|
||||
FcltMgr.confirm(`Your system timezone is ${safe.html(clientTimezone)}, but your Facilitor profile is set to ${userTimezone}.\nDo you want me to update your profile and set your current timezone to ${safe.html(clientTimezone)}?`, function () {
|
||||
var data = {
|
||||
prs_tz: clientTimezone
|
||||
};
|
||||
<% protectRequest.dataToken("data"); %>
|
||||
$.post(
|
||||
"<%=rooturl%>/APPL/PRS/prs_edit_perslid_save.asp?prs_key=<%=user_key%>",
|
||||
data,
|
||||
FcltCallbackRefresh,
|
||||
"json"
|
||||
);
|
||||
});
|
||||
});
|
||||
}
|
||||
<% } %>
|
||||
});
|
||||
</script>
|
||||
<%
|
||||
|
||||
@@ -66,9 +66,17 @@ if (user_key > 0)
|
||||
+ " SET fac_notificatie_status = BITAND (fac_notificatie_status, 255-8)" // Verwerkte popup
|
||||
+ " WHERE fac_notificatie_key IN (" + resetnotis.join(",") + ")";
|
||||
Oracle.Execute(sql);
|
||||
|
||||
// En opruimen (als er niets voor Putorders over is)
|
||||
var sql2 = "DELETE fac_notificatie"
|
||||
+ " WHERE fac_notificatie_status IN (0, 16)" // STATUS_SUMMARY_XSL 16 is niet interessant
|
||||
+ " AND fac_notificatie_systeemadres IS NULL"
|
||||
+ " AND prs_bedrijfadres_key IS NULL"
|
||||
+ " AND fac_notificatie_key IN (" + resetnotis.join(",") + ")";
|
||||
Oracle.Execute(sql2);
|
||||
}
|
||||
}
|
||||
|
||||
Response.Write(JSON.stringify(result));
|
||||
%>
|
||||
<% ASPPAGE_END(); %>
|
||||
<% ASPPAGE_END(); %>
|
||||
|
||||
@@ -10,6 +10,7 @@
|
||||
|
||||
<!-- #include file="../Shared/common.inc" -->
|
||||
<!-- #include file="../Shared/iface.inc" -->
|
||||
<!-- #include file="../Shared/selector.inc" -->
|
||||
<!-- #include file="fac.inc" -->
|
||||
|
||||
<%
|
||||
@@ -17,25 +18,6 @@ FCLTHeader.Requires({ plugins:["jQuery"] })
|
||||
|
||||
var autfunction = "WEB_LAYOUT";
|
||||
var authparams = user.checkAutorisation(autfunction);
|
||||
|
||||
var export_template = S("csstemplate") || {};
|
||||
export_template.version = FCLTVersion;
|
||||
|
||||
function prettyJson(j)
|
||||
{
|
||||
try
|
||||
{
|
||||
var xx = JSON.stringify(JSON.parse(j), null, 2);
|
||||
if (xx == "null")
|
||||
return "";
|
||||
return xx;
|
||||
}
|
||||
catch (e)
|
||||
{
|
||||
return j;
|
||||
};
|
||||
};
|
||||
|
||||
%>
|
||||
|
||||
<html>
|
||||
@@ -45,65 +27,27 @@ function prettyJson(j)
|
||||
|
||||
$(function()
|
||||
{
|
||||
$("#main-color").on("change", _ => {
|
||||
$("#main-color-contrast").val(0);
|
||||
});
|
||||
$("#accent-color").on("change", _ => {
|
||||
$("#accent-color-contrast").val(0);
|
||||
});
|
||||
|
||||
$("#frameheader-bg-color").on("change", function (e) {
|
||||
var frameHeaderBackgroundColor = [
|
||||
"#F2F2F2",
|
||||
"color-mix(in srgb, var(--main-color) 10%, rgb(255, 255, 255))",
|
||||
"color-mix(in srgb, var(--main-color) 50%, rgb(255, 255, 255))",
|
||||
"color-mix(in srgb, var(--main-color) 90%, rgb(255, 255, 255))"
|
||||
][this.value];
|
||||
$(this).closest("td").next("td").find(".color-preview").css("color", frameHeaderBackgroundColor);
|
||||
})
|
||||
|
||||
$('textarea').autogrow();
|
||||
FcltMgr.startEdit(window);
|
||||
});
|
||||
|
||||
function isValidJsonString(text) {
|
||||
try {
|
||||
JSON.parse(text);
|
||||
} catch (e) {
|
||||
return false;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
function loadImportcss($dialog)
|
||||
{
|
||||
var defaultTemplate = JSON.parse("<%=safe.jsstring(JSON.stringify(FCLTHeader.defaultTemplate))%>");
|
||||
var jsonstring = $dialog.find("#cssimport").val() || '{}';
|
||||
if (!isValidJsonString(jsonstring))
|
||||
{
|
||||
FcltMgr.alert(L("lcl_obj_bad_value"));
|
||||
return;
|
||||
}
|
||||
var css = JSON.parse(jsonstring);
|
||||
for (name in defaultTemplate)
|
||||
{
|
||||
if (name in css)
|
||||
{
|
||||
$("td input[name="+name+"]").val(css[name]);
|
||||
if (name.slice(-5) === "image") {
|
||||
$("[type=button][aria-controls=" + name + "]").val(css[name]);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
$("td input[name="+name+"]").val('');
|
||||
}
|
||||
}
|
||||
}
|
||||
function doImportcss()
|
||||
{
|
||||
var params = { title: L("lcl_paste")
|
||||
, oktekst: L("lcl_ok")
|
||||
, ishtmlsafe: true
|
||||
, fncallback: loadImportcss
|
||||
, buttons: [{ text: L("lcl_cancel"), icon: "fal fa-fw fa-undo", class: "alertCancel" }]
|
||||
};
|
||||
|
||||
var page_content = '<textarea id="cssimport" class="fldtxt" rows="4" cols="50"></textarea>';
|
||||
FcltMgr.mydialog( page_content, params);
|
||||
}
|
||||
function doExportcss()
|
||||
{
|
||||
var params = { title: L("lcl_transport")
|
||||
, oktekst: L("lcl_ok")
|
||||
, ishtmlsafe: true
|
||||
};
|
||||
|
||||
var page_content = '<textarea class="fldtxt" rows="4" cols="50" onclick="this.select()" readonly><%=safe.jsstring(JSON.stringify(export_template))%></textarea>';
|
||||
FcltMgr.mydialog( page_content, params);
|
||||
}
|
||||
function doSubmit()
|
||||
{
|
||||
FcltMgr.confirm(L("lcl_fac_save_templateq"), function() {
|
||||
@@ -164,49 +108,115 @@ function prettyJson(j)
|
||||
<tr><th><%=L("lcl_fac_template_name")%></th>
|
||||
<th> </th>
|
||||
<th><%=L("lcl_fac_template_default")%></th>
|
||||
<th><%=L("lcl_fac_template_newval")%> <input type='button' class='button' value='<%=L("lcl_paste")%>' onclick='doImportcss()'></th>
|
||||
<th><%=L("lcl_fac_template_newval")%></th>
|
||||
<th> </th>
|
||||
<th><%=L("lcl_fac_template_curval")%> <input type='button' class='button' value='<%=L("lcl_transport")%>' onclick='doExportcss()'></th></tr>
|
||||
<th><%=L("lcl_fac_template_curval")%></th></tr>
|
||||
<%
|
||||
for (itm in FCLTHeader.defaultTemplate)
|
||||
for (item in FCLTHeader.defaultTemplate)
|
||||
{
|
||||
var act = "";
|
||||
if (itm in S("csstemplate"))
|
||||
act = S("csstemplate")[itm];
|
||||
var con = "";
|
||||
if (itm in S("csstemplate"))
|
||||
con = S("csstemplate")[itm];
|
||||
var defaultValue = FCLTHeader.defaultTemplate[item];
|
||||
var actualValue = "";
|
||||
if (item in S("csstemplate")) {
|
||||
actualValue = S("csstemplate")[item];
|
||||
}
|
||||
var isColor = function(s) { return (s).match(/^#(?!#)|^rgb/i); };
|
||||
var isImage = item.slice(-5) === "image";
|
||||
|
||||
// Voor kleurwaarden tonen we een kleurvoorbeeld, dat bepalen we aan de hand van onze defaultwaarde
|
||||
%><tr><td class='label'><label for='<%=safe.html(itm)%>'><%=safe.html(itm)%></label></td>
|
||||
<td style="text-align:right"><% =(FCLTHeader.defaultTemplate[itm]).match(/^#(?!#)|^rgb/i) ? '<div class="color-preview" style="color:'+safe.htmlattr(FCLTHeader.defaultTemplate[itm])+'">' + I("fa-square fa-2x", { fastyle: "fas" }) + '</div>' : '' %></td>
|
||||
<td><%=safe.html(FCLTHeader.defaultTemplate[itm])%></td>
|
||||
<% if (itm.slice(-5) === "image") {
|
||||
%><tr><td class='label'><label for='<%=safe.html(item)%>'><%=safe.html(item)%></label></td>
|
||||
<td style="text-align:right">
|
||||
<% if (isColor(defaultValue)) { %>
|
||||
<div class="color-preview" style="color:<%=safe.htmlattr(defaultValue)%>"><%=I("fa-square fa-2x", { fastyle: "fas" })%></div>
|
||||
<% } %>
|
||||
</td>
|
||||
<td><%=safe.html(defaultValue)%></td>
|
||||
<% if (isImage) {
|
||||
Response.Write(" <td class='filepicker'>"
|
||||
+ " <input type='hidden' id='" + safe.htmlattr(itm) + "' name='" + safe.htmlattr(itm) + "' value='" + safe.htmlattr(con) + "'>"
|
||||
+ " <input type='hidden' id='" + safe.htmlattr(item) + "' name='" + safe.htmlattr(item) + "' value='" + safe.htmlattr(actualValue) + "'>"
|
||||
+ " <span class='button-icon-wrapper file-picker'>"
|
||||
+ " <span class='starticon'>" + I("fa-file-image") + "</span>"
|
||||
+ " <input type='button' class='button symbol-upload' title='" + safe.htmlattr(itm) + "' value='" + safe.htmlattr(con || L("lcl_image")) + "'"
|
||||
+ " aria-controls='" + itm + "'"
|
||||
+ " data-default-title='" + safe.htmlattr(itm) + "'"
|
||||
+ " <input type='button' class='button symbol-upload' title='" + safe.htmlattr(item) + "' value='" + safe.htmlattr(actualValue || L("lcl_image")) + "'"
|
||||
+ " aria-controls='" + item + "'"
|
||||
+ " data-default-title='" + safe.htmlattr(item) + "'"
|
||||
+ " data-module='STYLE'"
|
||||
+ " data-upload-url='" + safe.htmlattr(protectQS.create("../shared/BijlagenForm.asp?module=STYLE")) + "'>"
|
||||
+ " </span>"
|
||||
+ " <span class='default-clickable-icon symbol-delete' aria-controls='" + safe.htmlattr(itm) + "'>"
|
||||
+ " <span class='default-clickable-icon symbol-delete' aria-controls='" + safe.htmlattr(item) + "'>"
|
||||
+ I("fa-trash-alt")
|
||||
+ " </span>"
|
||||
+ " </td>");
|
||||
} else { %>
|
||||
} else { %>
|
||||
<td><%
|
||||
RWFIELD(itm, "fld", "", con, { "datatype": "color" });
|
||||
%></td><%
|
||||
} %>
|
||||
<td style="text-align:right"><% =(act && (FCLTHeader.defaultTemplate[itm]).match(/^#(?!#)|^rgb/i) || act.match(/^#(?!#)|^rgb/i)) ? '<div class="color-preview" style="color:'+safe.htmlattr(act)+'">' + I("fa-square fa-2x", { fastyle: "fas" }) + '</div>' : '' %></td>
|
||||
<% if (itm.slice(-5) === "image" && act && act.match(/^## .* ##$/) === null) { %>
|
||||
<td><span class="details" onClick="iface.fullscreen_image('<%=safe.jsstring(safe.htmlattr(HTTP.urlzelfnoroot() + S("style_image_path") + act))%>');"><%=safe.html(act)%></span></td>
|
||||
RWFIELD(item, "fld", "", actualValue, { "datatype": "color" });
|
||||
%> </td><%
|
||||
} %>
|
||||
|
||||
<td style="text-align:right"><%=(actualValue && isColor(defaultValue) || isColor(actualValue) ? '<div class="color-preview" style="color:'+safe.htmlattr(actualValue)+'">' + I("fa-square fa-2x", { fastyle: "fas" }) + '</div>' : '')%></td>
|
||||
<% if (item.slice(-5) === "image" && actualValue && actualValue.match(/^## .* ##$/) === null) { %>
|
||||
<td><span class="details" onClick="iface.fullscreen_image('<%=safe.jsstring(safe.htmlattr(HTTP.urlzelfnoroot() + S("style_image_path") + actualValue))%>');"><%=safe.html(actualValue)%></span></td>
|
||||
<% } else { %>
|
||||
<td><%=safe.html(act)%></td>
|
||||
<td><%=safe.html(actualValue)%></td>
|
||||
<% } %>
|
||||
</tr><%
|
||||
|
||||
if (item == "main-color" || item == "accent-color") { %>
|
||||
<tr>
|
||||
<td class='label'><%=item%>-contrast</td>
|
||||
<td> </td>
|
||||
<td>Hoogste contrast</td>
|
||||
<td><%
|
||||
var sql = " SELECT 0, 'Hoogste contrast' FROM DUAL"
|
||||
+ " UNION ALL"
|
||||
+ " SELECT 1, 'Wit' FROM DUAL"
|
||||
+ " UNION ALL"
|
||||
+ " SELECT 2, 'Zwart' FROM DUAL"
|
||||
+ " UNION ALL"
|
||||
+ " SELECT 3, " + safe.quoted_sql(item == "main-color" ? "accent-color" : "main-color") + " FROM DUAL";
|
||||
var initKey = 0;
|
||||
if (item + "-contrast" in S("csstemplate")) {
|
||||
initKey = S("csstemplate")[item + "-contrast"];
|
||||
}
|
||||
FCLTselector(item + "-contrast", sql, {
|
||||
initKey: initKey,
|
||||
required: true
|
||||
});
|
||||
%> </td>
|
||||
<td style="text-align:right"><div class="color-preview" style="color:var(--<%=item%>-contrast);"><%=I("fa-square fa-2x", { fastyle: "fas" })%></div></td>
|
||||
<td>*Niet aanpassen om aan toegankelijkheidseisen te voldoen</td>
|
||||
</tr><%
|
||||
if (item == "accent-color") { // Na accent-color-contrast nog een pseudo-veld; frameheader-bg-color
|
||||
%> <tr>
|
||||
<td class='label'>frameheader-bg-color</td>
|
||||
<td style="text-align:right"><div class="color-preview" style="color: #F2F2F2"><%=I("fa-square fa-2x", { fastyle: "fas" })%></div></td>
|
||||
<td>#F2F2F2</td>
|
||||
<td><%
|
||||
var sql = " SELECT 0, 'Lichtgrijs (default)' FROM DUAL"
|
||||
+ " UNION ALL"
|
||||
+ " SELECT 1, '10% main-color' FROM DUAL"
|
||||
+ " UNION ALL"
|
||||
+ " SELECT 2, '50% main-color' FROM DUAL"
|
||||
+ " UNION ALL"
|
||||
+ " SELECT 3, '90% main-color' FROM DUAL";
|
||||
var initKey = 0;
|
||||
if ("frameheader-bg-color" in S("csstemplate")) {
|
||||
initKey = S("csstemplate")["frameheader-bg-color"];
|
||||
}
|
||||
var frameHeaderBackgroundColor = [
|
||||
"#F2F2F2",
|
||||
"color-mix(in srgb, var(--main-color) 10%, rgb(255, 255, 255))",
|
||||
"color-mix(in srgb, var(--main-color) 50%, rgb(255, 255, 255))",
|
||||
"color-mix(in srgb, var(--main-color) 90%, rgb(255, 255, 255))"
|
||||
][initKey];
|
||||
FCLTselector("frameheader-bg-color", sql, {
|
||||
initKey: initKey,
|
||||
required: true
|
||||
});
|
||||
%> </td>
|
||||
<td style="text-align:right"><div class="color-preview" style="color:<%=frameHeaderBackgroundColor%>;"><%=I("fa-square fa-2x", { fastyle: "fas" })%></div></td>
|
||||
<td></td>
|
||||
</tr>
|
||||
<% }
|
||||
}
|
||||
}
|
||||
%>
|
||||
<tr>
|
||||
@@ -219,7 +229,7 @@ function prettyJson(j)
|
||||
</tr>
|
||||
<% if (user.has("WEB_PRSSYS"))
|
||||
{
|
||||
%> <tr><td> </td></tr>
|
||||
%> <tr><td colspan="6"> </td></tr>
|
||||
<tr>
|
||||
<td><%=L("lcl_fac_csscust")%></td><td colspan="3"><textarea class="fldtxt" rows="3" id="csscust" name="csscust" maxlength="4000"><%=safe.textarea(S("csscust"))%></textarea></td>
|
||||
</tr>
|
||||
|
||||
@@ -34,14 +34,28 @@ var cssparams = { cssmode: previewmode };
|
||||
if (previewmode == 2)
|
||||
{
|
||||
cssparams.csstemplate = {};
|
||||
for (itm in FCLTHeader.defaultTemplate)
|
||||
for (item in FCLTHeader.defaultTemplate)
|
||||
{
|
||||
var conceptval = getFParam(itm);
|
||||
var conceptval = getFParam(item);
|
||||
if (conceptval != "")
|
||||
cssparams.csstemplate[itm] = conceptval;
|
||||
cssparams.csstemplate[item] = conceptval;
|
||||
else
|
||||
delete cssparams.csstemplate[itm];
|
||||
delete cssparams.csstemplate[item];
|
||||
}
|
||||
|
||||
var mainColorContrast = getFParamInt("main-color-contrast", 0);
|
||||
if (mainColorContrast) {
|
||||
cssparams.csstemplate["main-color-contrast"] = mainColorContrast;
|
||||
}
|
||||
var accentColorContrast = getFParamInt("accent-color-contrast", 0);
|
||||
if (accentColorContrast) {
|
||||
cssparams.csstemplate["accent-color-contrast"] = accentColorContrast;
|
||||
}
|
||||
var frameheaderBackgroundColor = getFParamInt("frameheader-bg-color", 0);
|
||||
if (frameheaderBackgroundColor) {
|
||||
cssparams.csstemplate["frameheader-bg-color"] = frameheaderBackgroundColor;
|
||||
}
|
||||
|
||||
if (submitting)
|
||||
{
|
||||
var fields = [ { dbs: "fac_setting_pvalue", typ: "varchar", val: JSON.stringify(cssparams.csstemplate) },
|
||||
|
||||
@@ -237,7 +237,7 @@ function fnrowClass(oRs)
|
||||
var bostatuskey = oRs.Fields("bo_status_key").Value;
|
||||
|
||||
// visuele hint voor de actualiteit
|
||||
if (lthisdate.toDateString() == lnow.toDateString())
|
||||
if (lthisdate.toDateString() == lnow.toDateString()) // Dit is een rare, voor reserveringen is dit een datum in de TZ van de locatie, voor de rest de TZ van de user ..
|
||||
lclass += " today";
|
||||
else if (xmlnode != "melding" && xmlnode != "bestelling") // die lopen gewoon, reserveringen en afspraken zijn voorbij of toekomstig, en delen, ach.
|
||||
{
|
||||
@@ -295,6 +295,24 @@ function fnrowClass(oRs)
|
||||
return lclass;
|
||||
}
|
||||
|
||||
function fnDatum (oRs) {
|
||||
var val = oRs("datum").Value;
|
||||
if (oRs("xmlnode").Value == "reservering") { // Deze zijn al in de lokale tijdszone
|
||||
return toDateTimeString(val, { isLocal: true });
|
||||
} else {
|
||||
return toDateTimeString(val, { pretty: true });
|
||||
}
|
||||
}
|
||||
|
||||
function fnDatumEind(oRs) {
|
||||
var val = oRs("datum_eind").Value;
|
||||
if (oRs("xmlnode").Value == "reservering") { // Deze zijn al in de lokale tijdszone
|
||||
return toDateTimeString(val, { isLocal: true });
|
||||
} else {
|
||||
return toDateTimeString(val, { pretty: true, noMidnight: true });
|
||||
}
|
||||
}
|
||||
|
||||
%>
|
||||
<html>
|
||||
<head>
|
||||
@@ -424,7 +442,7 @@ function fnrowClass(oRs)
|
||||
if ((faclist_columns & 2) == 2)
|
||||
rst.addColumn(new Column({caption: (outputmode == 0 ? I("fa-bell", { fastyle: "far" }) : L("lcl_mld_actiecode")), content: fnMark, align: "center", colName: "fnMark"}));
|
||||
if ((faclist_mode & 1) == 1)
|
||||
rst.addColumn(new Column({caption: L("lcl_myfacilities_date"), content: "datum", datatype: "datetime", prettydate: true }));
|
||||
rst.addColumn(new Column({caption: L("lcl_myfacilities_date"), content: fnDatum, datatype: "datetime" }));
|
||||
rst.addColumn(new Column({caption: L("lcl_faciliteit"), content: fncolType, colName: "fncolType"}));
|
||||
rst.addColumn(new Column({caption: L("lcl_descr"), content: "detail"}));
|
||||
if ((faclist_columns & 4) == 4)
|
||||
@@ -437,7 +455,7 @@ function fnrowClass(oRs)
|
||||
if (urole == "fo" || (urole == "fe" && S("fac_flags_visible_for_fe") == 1))
|
||||
rst.addColumn(new Column({caption: L("lcl_fac_extra1"), content: fnExtra1, colName: "fnExtra1"}));
|
||||
if ((faclist_columns & 16) == 16)
|
||||
rst.addColumn(new Column({caption: L("lcl_myfacilities_enddate"), content: "datum_eind", datatype: "datetime", prettydate: true, nomidnight: true}));
|
||||
rst.addColumn(new Column({caption: L("lcl_myfacilities_enddate"), content: fnDatumEind, datatype: "datetime" }));
|
||||
if ((faclist_columns & 32) == 32)
|
||||
rst.addColumn(new Column({caption: L("lcl_place"), content: "plaats"}));
|
||||
if (S("facilities_flike_past") >= 0)
|
||||
|
||||
@@ -218,6 +218,13 @@ function fac_list_query (params)
|
||||
|
||||
if (params.showreservering)
|
||||
{
|
||||
var S_fac_server_timezone = S("fac_server_timezone");
|
||||
function toLocalDate(expr) {
|
||||
return "CAST ("
|
||||
+ "FROM_TZ (CAST ( " + expr + " AS TIMESTAMP), " + safe.quoted_sql(S_fac_server_timezone) + ")"
|
||||
+ " AT TIME ZONE COALESCE (l.alg_locatie_timezone, " + safe.quoted_sql(S_fac_server_timezone) + ") AS DATE)";
|
||||
}
|
||||
|
||||
clausesArr.push(
|
||||
"SELECT rr.res_rsv_ruimte_host_key prs_perslid_key" // 1 Host ruimtereservering
|
||||
+ " , TO_CHAR (rr.res_reservering_key) || '/' || rr.res_rsv_ruimte_volgnr item"
|
||||
@@ -228,8 +235,8 @@ function fac_list_query (params)
|
||||
+ " , 'reservering' xmlnode"
|
||||
+ " , " + lcl.xsql("ra.res_activiteit_omschrijving", "ra.res_activiteit_key") + " subtype"
|
||||
+ " , '5' soort"
|
||||
+ " , rr.res_rsv_ruimte_van datum"
|
||||
+ " , rr.res_rsv_ruimte_tot datum_eind"
|
||||
+ " , " + toLocalDate("rr.res_rsv_ruimte_van") + " datum"
|
||||
+ " , " + toLocalDate("rr.res_rsv_ruimte_tot") + " datum_eind"
|
||||
+ " , rr.res_rsv_ruimte_omschrijving detail"
|
||||
+ " , COALESCE (rr.res_rsv_ruimte_omschrijving, (SELECT "+ lcl.xsql('ra.res_activiteit_omschrijving', 'ra.res_activiteit_key')
|
||||
+ " FROM res_activiteit ra "
|
||||
@@ -245,8 +252,20 @@ function fac_list_query (params)
|
||||
+ " , ra.res_activiteit_image image"
|
||||
+ sqlRecentdatum('rr.res_rsv_ruimte_key','reservering')
|
||||
+ " FROM res_v_aanwezigrsv_ruimte rr"
|
||||
+ " , res_activiteit ra "
|
||||
+ " , res_activiteit ra "
|
||||
+ " , res_ruimte_opstelling rro"
|
||||
+ " , res_alg_ruimte rar"
|
||||
+ " , alg_ruimte r"
|
||||
+ " , alg_verdieping v"
|
||||
+ " , alg_gebouw g"
|
||||
+ " , alg_locatie l"
|
||||
+ " WHERE ra.res_activiteit_key = rr.res_activiteit_key"
|
||||
+ " AND rro.res_ruimte_key = rar.res_ruimte_key"
|
||||
+ " AND rar.alg_ruimte_key = r.alg_ruimte_key"
|
||||
+ " AND r.alg_verdieping_key = v.alg_verdieping_key"
|
||||
+ " AND v.alg_gebouw_key = g.alg_gebouw_key"
|
||||
+ " AND g.alg_locatie_key = l.alg_locatie_key"
|
||||
+ " AND rr.res_ruimte_opstel_key = rro.res_ruimte_opstel_key"
|
||||
+ " AND rr.res_ruimte_opstel_key IS NOT NULL" // alleen reserveerbare ruimte
|
||||
+ " AND (rr.res_rsv_ruimte_tot > SYSDATE - " + S("facilitiespast_res") + " AND rr.res_rsv_ruimte_van < SYSDATE + " + S("facilitiesfuture") + ")"
|
||||
+ (params.specific_day
|
||||
@@ -265,8 +284,8 @@ function fac_list_query (params)
|
||||
+ " , 'reservering' xmlnode"
|
||||
+ " , " + lcl.xsql("ra.res_activiteit_omschrijving", "ra.res_activiteit_key") + " subtype"
|
||||
+ " , '7' soort"
|
||||
+ " , rr.res_rsv_ruimte_van datum"
|
||||
+ " , rr.res_rsv_ruimte_tot datum_eind"
|
||||
+ " , " + toLocalDate("rr.res_rsv_ruimte_van") + " datum"
|
||||
+ " , " + toLocalDate("rr.res_rsv_ruimte_tot") + " datum_eind"
|
||||
+ " , rr.res_rsv_ruimte_omschrijving oms"
|
||||
+ " , COALESCE (rr.res_rsv_ruimte_omschrijving, (SELECT "+ lcl.xsql('ra.res_activiteit_omschrijving', 'ra.res_activiteit_key')
|
||||
+ " FROM res_activiteit ra "
|
||||
@@ -282,17 +301,25 @@ function fac_list_query (params)
|
||||
+ " , ra.res_activiteit_image image"
|
||||
+ sqlRecentdatum('rr.res_rsv_ruimte_key','reservering')
|
||||
+ " FROM res_v_aanwezigrsv_ruimte rr"
|
||||
+ " , res_v_aanwezigrsv_deel dd"
|
||||
+ " , res_deel rd "
|
||||
+ " , res_activiteit ra "
|
||||
+ " , res_v_aanwezigrsv_deel dd"
|
||||
+ " , res_deel rd "
|
||||
+ " , res_activiteit ra "
|
||||
+ " , alg_ruimte r"
|
||||
+ " , alg_verdieping v"
|
||||
+ " , alg_gebouw g"
|
||||
+ " , alg_locatie l"
|
||||
+ " WHERE rr.res_status_bo_key IS NULL AND dd.res_rsv_ruimte_key = rr.res_rsv_ruimte_key"
|
||||
+ " AND r.alg_verdieping_key = v.alg_verdieping_key"
|
||||
+ " AND v.alg_gebouw_key = g.alg_gebouw_key"
|
||||
+ " AND g.alg_locatie_key = l.alg_locatie_key"
|
||||
+ " AND r.alg_ruimte_key = rr.alg_ruimte_key"
|
||||
+ " AND rr.alg_ruimte_key IS NOT NULL" // niet in reserveerbare ruimte
|
||||
+ " AND ra.res_activiteit_key = rr.res_activiteit_key"
|
||||
+ " AND rd.res_deel_key = dd.res_deel_key"
|
||||
+ " AND (rr.res_rsv_ruimte_tot > SYSDATE - " + S("facilitiespast_res") + " AND rr.res_rsv_ruimte_van < SYSDATE + " + S("facilitiesfuture") + ")"
|
||||
+ (params.specific_day // meerdaagse voorzieningen alleen op de start- en einddag, (is res_rsv_deel_van/tot niet beter?)
|
||||
? " AND (rr.res_rsv_ruimte_van = TRUNC(SYSDATE + 1 + " + params.days_in_the_future + ")"
|
||||
+ " OR rr.res_rsv_ruimte_tot = TRUNC(SYSDATE + " + params.days_in_the_future + "))"
|
||||
? " AND ( TRUNC(rr.res_rsv_ruimte_van) = TRUNC(SYSDATE + " + params.days_in_the_future + ")"
|
||||
+ " OR TRUNC(rr.res_rsv_ruimte_tot) = TRUNC(SYSDATE + " + params.days_in_the_future + "))"
|
||||
: "")
|
||||
+ " UNION ALL " // 5 Host cateringreservering dirtlevel van de onderliggenden bepalen?
|
||||
+ "SELECT rr.res_rsv_ruimte_host_key prs_perslid_key"
|
||||
@@ -303,8 +330,8 @@ function fac_list_query (params)
|
||||
+ " , 'reservering' xmlnode"
|
||||
+ " , " + lcl.xsql("ra.res_activiteit_omschrijving", "ra.res_activiteit_key") + " subtype"
|
||||
+ " , '9' soort"
|
||||
+ " , rr.res_rsv_ruimte_van datum"
|
||||
+ " , rr.res_rsv_ruimte_tot datum_eind"
|
||||
+ " , " + toLocalDate("rr.res_rsv_ruimte_van") + " datum"
|
||||
+ " , " + toLocalDate("rr.res_rsv_ruimte_tot") + " datum_eind"
|
||||
+ " , rr.res_rsv_ruimte_omschrijving oms"
|
||||
+ " , COALESCE (rr.res_rsv_ruimte_omschrijving, (SELECT "+ lcl.xsql('ra.res_activiteit_omschrijving', 'ra.res_activiteit_key')
|
||||
+ " FROM res_activiteit ra "
|
||||
@@ -319,10 +346,18 @@ function fac_list_query (params)
|
||||
+ " , (CASE WHEN res_rsv_artikel_approved = 1 THEN NULL ELSE res_rsv_artikel_approved END) mark" // 1 = alles akkoord: geen aanduiding
|
||||
+ " , ra.res_activiteit_image image"
|
||||
+ sqlRecentdatum('rr.res_rsv_ruimte_key','reservering')
|
||||
+ " FROM res_v_aanwezigrsv_ruimte rr"
|
||||
+ " FROM res_v_aanwezigrsv_ruimte rr"
|
||||
+ " , res_v_aanwezigrsv_artikel dd"
|
||||
+ " , res_activiteit ra "
|
||||
+ " , res_activiteit ra "
|
||||
+ " , alg_ruimte r"
|
||||
+ " , alg_verdieping v"
|
||||
+ " , alg_gebouw g"
|
||||
+ " , alg_locatie l"
|
||||
+ " WHERE rr.res_status_bo_key IS NULL AND dd.res_rsv_ruimte_key = rr.res_rsv_ruimte_key "
|
||||
+ " AND r.alg_verdieping_key = v.alg_verdieping_key"
|
||||
+ " AND v.alg_gebouw_key = g.alg_gebouw_key"
|
||||
+ " AND g.alg_locatie_key = l.alg_locatie_key"
|
||||
+ " AND r.alg_ruimte_key = rr.alg_ruimte_key"
|
||||
+ " AND rr.alg_ruimte_key IS NOT NULL" // niet in reserveerbare ruimte
|
||||
+ " AND ra.res_activiteit_key = rr.res_activiteit_key"
|
||||
+ " AND (rr.res_rsv_ruimte_tot > SYSDATE - " + S("facilitiespast_res") + " AND rr.res_rsv_ruimte_van < SYSDATE + " + S("facilitiesfuture") + ")"
|
||||
|
||||
@@ -24,7 +24,7 @@ var autfunction = "WEB_PRSSYS";
|
||||
var authparams = user.checkAutorisation(autfunction);
|
||||
|
||||
var submitting = getQParamInt("submit", 0) == 1;
|
||||
var lang = getQParamSafe("lang", "NL"); // TODO: popup als niet meegegeven
|
||||
var lang = getQParamSafe("lang", S("db_lang"));
|
||||
var dialect_key = getQParamInt("dialect_key");
|
||||
var dialect_id = getQParam("dialect_id");
|
||||
|
||||
|
||||
@@ -45,6 +45,7 @@ var showmore = getQParamInt("showmore", 0);
|
||||
var portal = getQParamInt("portal", 1);
|
||||
var widget = getQParamInt("asWidget", 0) == 1;
|
||||
var additionalNews = 0;
|
||||
var newsTitle = L("lcl_mynews");
|
||||
|
||||
var canEdit = !!user.has("WEB_MSGBOF");
|
||||
var msg_rights = msg.func_enabled(-1);
|
||||
@@ -360,6 +361,9 @@ sqln = "SELECT * FROM (" + sqln + ")"
|
||||
var nieuwsdatum = toDateString(oRs("fac_nieuws_van").Value, true, true);
|
||||
var detail_html_arr = [];
|
||||
if (oRs("fac_nieuws_groep_omschrijving").Value) {
|
||||
if (nieuwsgroep_key > 0) {
|
||||
newsTitle = oRs("fac_nieuws_groep_omschrijving").Value;
|
||||
}
|
||||
detail_html_arr.push('<span' + (useCarousel ? ' class="details" data-groep-key="' + nieuws_groep_key + '"' : '') +'>' + safe.html(oRs("fac_nieuws_groep_omschrijving").Value) + '</span>');
|
||||
}
|
||||
if (nieuwsdatum != "") {
|
||||
@@ -451,7 +455,7 @@ sqln = "SELECT * FROM (" + sqln + ")"
|
||||
reply_html += '<span class="note-wrapper' + (reply_author === user_key ? " note-type-self" : "") + '" data-key="' + reply_key + '">'
|
||||
+ ' <span class="note-container">'
|
||||
+ ' <span class="note-header">'
|
||||
+ (reply_author !== user_key ? '<span class="note-author">' + safe.html(author.naam()) + '</span>' : "")
|
||||
+ (reply_author > 0 && reply_author !== user_key ? '<span class="note-author">' + safe.html(author.naam()) + '</span>' : "")
|
||||
+ ' <span class="note-timestamp">' + toDateTimeString(reply_created, false, false, true, false) + '</span>'
|
||||
+ ' </span>'
|
||||
+ ' <span class="note-body">'
|
||||
@@ -528,11 +532,11 @@ sqln = "SELECT * FROM (" + sqln + ")"
|
||||
<header class="d-flex justify-content-between align-items-center">
|
||||
<div class="d-flex align-items-center gap-3">
|
||||
<% if (i > 0 || hasAddButton) { %>
|
||||
<h1><%=safe.html(L("lcl_mynews"))%></h1>
|
||||
<h1><%=safe.html(newsTitle)%></h1>
|
||||
<% }
|
||||
Response.Write('</div><div class="d-flex align-items-center gap-3">');
|
||||
if (i > 1) {
|
||||
%> <span class="fclt-news-counter" data-counter="<%=current%>"> van <%=i%></span><%
|
||||
if (useCarousel) {
|
||||
%> <span class="fclt-news-counter" data-counter="<%=current%>"> van <%=i%></span><% // TODO LCL
|
||||
}
|
||||
if (hasAddButton) {
|
||||
%> <span class="msg-add-button btn" title="<%=L("lcl_add")%>"><%=I("fa-plus fa-xl")%></span><%
|
||||
|
||||
@@ -6,7 +6,7 @@
|
||||
File: fac_roundtrip_exp.asp
|
||||
Description: Exporteer de gegevens van de view behorende bij de import naar een csv-bestand.
|
||||
Parameters: code: Een geldige fac_import_app_code.
|
||||
Note:
|
||||
Note:
|
||||
*/
|
||||
%>
|
||||
<!-- #include file="../Shared/common.inc" -->
|
||||
@@ -52,7 +52,7 @@ if (imp_params.success)
|
||||
var hiresTimer = new ActiveXObject("SLNKDWF.About");
|
||||
var tm_start = hiresTimer.usTimer;
|
||||
var sql = "SELECT * FROM " + viewname;
|
||||
var oRs = Oracle.RealConnection.Execute(sql);
|
||||
var oRs = Oracle.Execute(sql);
|
||||
create_export(oRs, filename);
|
||||
oRs.Close();
|
||||
}
|
||||
|
||||
@@ -171,7 +171,12 @@ oRs.Close();
|
||||
|
||||
result.applicationpoolstart = new Date(Application("SET_INSTANCE_TIME"));
|
||||
|
||||
var sql = "SELECT SYSDATE FROM DUAL";
|
||||
var oRs = Oracle.Execute(sql);
|
||||
result.sysdate = new Date(oRs(0).Value);
|
||||
oRs.Close();
|
||||
result.finished = new Date();
|
||||
|
||||
result.scanduration = result.finished.getTime() - result.started.getTime();
|
||||
Response.Write(JSON.stringify(result));
|
||||
Response.End;
|
||||
|
||||
@@ -209,6 +209,14 @@ var JSON_Result = true;
|
||||
}
|
||||
oRs.Close();
|
||||
|
||||
// Recente users telling vandaag
|
||||
var sql = "SELECT COUNT(*) aantal"
|
||||
+ " FROM prs_perslid d "
|
||||
+ " WHERE prs_perslid_login > TRUNC(SYSDATE)";
|
||||
var oRs = Oracle.Execute(sql);
|
||||
result.recentvandaag = oRs("aantal").Value;
|
||||
oRs.Close();
|
||||
|
||||
try
|
||||
{
|
||||
var WshShell = new ActiveXObject("WScript.Shell");
|
||||
|
||||
@@ -4,11 +4,9 @@
|
||||
$Id$
|
||||
|
||||
File: fac_settings_search.asp
|
||||
Status: 40%
|
||||
Description: Toont zoekvelden voor lijst van menuopties
|
||||
Parameters: ??
|
||||
Context: Via URL (alleen prssys)
|
||||
Note: For internal use only
|
||||
Parameters: module, autosearch
|
||||
Context: Vanuit menu (alleen prssys)
|
||||
|
||||
*/ %>
|
||||
<!-- #include file="../Shared/common.inc" -->
|
||||
@@ -53,54 +51,48 @@ var module = getQParam("module", "");
|
||||
</head>
|
||||
<body id="searchbody">
|
||||
<form name="u2" method="get" action="fac_settings_list.asp" target="workFrame" onsubmit='anysearch = true;'>
|
||||
<% SEARCH_PAGE_START({ header: L("lcl_filterblok") });
|
||||
<%
|
||||
SEARCH_PAGE_START({ header: L("lcl_filterblok") });
|
||||
SEARCH_BLOCK_START("searchtable", L("lcl_filterblok")); %>
|
||||
<!-- module -->
|
||||
<!-- module -->
|
||||
<%
|
||||
sql = "SELECT DISTINCT "
|
||||
+ " fac_setting_module fac_module,"
|
||||
+ " fac_setting_module fac_module "
|
||||
+ "FROM fac_setting "
|
||||
+ (module!="" ? " WHERE fac_setting_module = " + safe.quoted_sql(module) :"")
|
||||
+ "ORDER BY fac_setting_module";
|
||||
if (module == "")
|
||||
{
|
||||
FCLTselector("sModule",
|
||||
sql,
|
||||
{ label: L("lcl_fac_module")
|
||||
, trclass: "primsearch"
|
||||
, emptyOption: L("lcl_search_generic")
|
||||
})
|
||||
}
|
||||
else
|
||||
{ // Er is maar 1 optie, dus geen emptyOption.
|
||||
FCLTselector("sModule",
|
||||
sql,
|
||||
{ label: L("lcl_fac_module")
|
||||
, trclass: "primsearch"
|
||||
})
|
||||
}
|
||||
CHECKBOXTR(L("lcl_lcl_overruled"), "fldcheck", "is_overrule", false);
|
||||
// Niet elke setting-module heeft een officiele modulenaam..
|
||||
var sql = "SELECT DISTINCT "
|
||||
+ " fs.fac_setting_module fac_module"
|
||||
+ ", fs.fac_setting_module || ' - ' || lcl.l(fm.fac_module_remark) modulenaam"
|
||||
+ " FROM fac_setting fs, fac_module fm "
|
||||
+ " WHERE fs.fac_setting_module = fm.fac_module_name(+)"
|
||||
+ (module != ""
|
||||
? " AND fs.fac_setting_module = " + safe.quoted_sql(module)
|
||||
: "")
|
||||
+ " ORDER BY fac_setting_module";
|
||||
|
||||
FCLTselector("sModule", sql, { label: L("lcl_fac_module")
|
||||
, emptyOption: ((module == "") ? L("lcl_search_generic") : false)
|
||||
/* , readonly : (module != "") werkt niet */
|
||||
, required : (module != "")
|
||||
})
|
||||
CHECKBOXTR(L("lcl_lcl_overruled"), "fldcheck", "is_overrule", false);
|
||||
SEARCH_BLOCK_END();
|
||||
|
||||
SEARCH_BLOCK_START();
|
||||
%>
|
||||
|
||||
<!-- Zoektekst -->
|
||||
<tr class="primsearch">
|
||||
<td class="label">
|
||||
<label for="zoek"><%=L("lcl_lcl_search_fields")%></label>
|
||||
</td>
|
||||
<td>
|
||||
<input type="text" class="fld wildcard" name="zoek" id="zoek">
|
||||
</td>
|
||||
</tr>
|
||||
<!-- Zoektekst -->
|
||||
<tr class="primsearch">
|
||||
<td class="label">
|
||||
<label for="zoek"><%=L("lcl_lcl_search_fields")%></label>
|
||||
</td>
|
||||
<td>
|
||||
<input type="text" class="fld wildcard" name="zoek" id="zoek">
|
||||
</td>
|
||||
</tr>
|
||||
<% SEARCH_BLOCK_END();
|
||||
var buttons = [ {title: L("lcl_overview_list"), action: "doSubmit()", icon: "fa-clipboard-list" } ];
|
||||
SIMPLE_BLOCK_START();
|
||||
CreateButtons(buttons, { entersubmit: true, showIcons: true});
|
||||
SIMPLE_BLOCK_END();
|
||||
SEARCH_PAGE_END();
|
||||
|
||||
var buttons = [ {title: L("lcl_overview_list"), action: "doSubmit()", icon: "fa-clipboard-list" } ];
|
||||
SIMPLE_BLOCK_START();
|
||||
CreateButtons(buttons, { entersubmit: true, showIcons: true});
|
||||
SIMPLE_BLOCK_END();
|
||||
SEARCH_PAGE_END();
|
||||
%>
|
||||
</form>
|
||||
|
||||
|
||||
@@ -55,10 +55,12 @@ function findSHAinfo()
|
||||
{
|
||||
var regel = allsha[i];
|
||||
var spl = regel.split(" ");
|
||||
if (spl.length == 2)
|
||||
if (spl.length >= 2)
|
||||
{
|
||||
var sha_should = spl[0];
|
||||
var fname = spl[1].substring(1, spl[1].length);
|
||||
spl.shift();
|
||||
var namepart = spl.join(" "); // Bestandsnamen met spaties er in
|
||||
var fname = namepart.substring(1, namepart.length);
|
||||
fname = fname.replace(/\\/g,'/');
|
||||
allfiles[fname.toLowerCase()] = 1;
|
||||
var file = { fname: fname.replace(/^\.\.\//,"/") };
|
||||
|
||||
@@ -200,7 +200,7 @@ function prodsearch_queries(write_discs, filter)
|
||||
+ " AND r.res_discipline_key = d.ins_discipline_key"
|
||||
+ " AND ar.res_ruimte_key = r.res_ruimte_key"
|
||||
+ " AND (r.res_ruimte_startdatum IS NULL OR r.res_ruimte_startdatum <= SYSDATE)"
|
||||
+ " AND (r.res_ruimte_vervaldatum IS NULL OR r.res_ruimte_vervaldatum >= SYSDATE)"
|
||||
+ " AND (r.res_ruimte_vervaldatum IS NULL OR r.res_ruimte_vervaldatum > SYSDATE)"
|
||||
+ " AND r.alg_ruimte_key ="
|
||||
+ " (SELECT MIN (rar.alg_ruimte_key)"
|
||||
+ " FROM res_alg_ruimte rar"
|
||||
@@ -251,25 +251,10 @@ function prodsearch_queries(write_discs, filter)
|
||||
true); // forwrite
|
||||
|
||||
queries['resartikel'] =
|
||||
{ sql: "WITH all_onrgoed_loc_keys AS"
|
||||
+ " (SELECT alg_type"
|
||||
+ " , alg_onroerendgoed_keys"
|
||||
+ " , alg_locatie_key"
|
||||
+ " , alg_terreinsector_key"
|
||||
+ " , alg_gebouw_key"
|
||||
+ " , alg_verdieping_key"
|
||||
+ " , alg_ruimte_key"
|
||||
+ " FROM alg_v_allonroerendgoed"
|
||||
+ " UNION"
|
||||
+ " SELECT 'L'"
|
||||
+ " , alg_locatie_key"
|
||||
+ " , alg_locatie_key, NULL, NULL, NULL, NULL"
|
||||
+ " FROM alg_locatie"
|
||||
+ " )"
|
||||
+ " SELECT r.res_artikel_key product_key,"
|
||||
{ sql: "SELECT r.res_artikel_key product_key,"
|
||||
+ lcl.xsql('r.res_artikel_omschrijving','r.res_artikel_key')+" product,"
|
||||
+ " 'resartikel' soort,"
|
||||
+ " " + ranknr('resartikel') + " rang,"
|
||||
+ ranknr('resartikel') + " rang,"
|
||||
+ " r.res_artikel_prijs prijs,"
|
||||
+ " '' extra,"
|
||||
+ " NULL extra2,"
|
||||
@@ -281,28 +266,10 @@ function prodsearch_queries(write_discs, filter)
|
||||
+ " r.res_artikel_image foto,"
|
||||
+ " NULL ishtmlsafe_extra"
|
||||
+ " FROM res_v_aanwezigartikel r,"
|
||||
+ " res_v_aanwezigdiscipline d,"
|
||||
+ " res_srtartikel_onrgoed rsao"
|
||||
+ " res_v_aanwezigdiscipline d"
|
||||
+ " WHERE r.res_discipline_key = d.ins_discipline_key"
|
||||
+ " AND d.ins_discipline_key = rsao.res_discipline_key"
|
||||
+ " AND (rsao.alg_onrgoed_niveau, rsao.alg_onrgoed_key) IN"
|
||||
+ " (SELECT alg_type, alg_onroerendgoed_keys"
|
||||
+ " FROM all_onrgoed_loc_keys"
|
||||
+ " WHERE alg_locatie_key = " + "(select coalesce(s.alg_locatie_key, m.alg_locatie_key)" // Beperk tot verbruiksartikelen van mijn locatie.
|
||||
+ " from alg_v_my_location m"
|
||||
+ " , (select p.prs_perslid_key"
|
||||
+ " , o.alg_locatie_key"
|
||||
+ " from alg_v_allonroerendgoed o"
|
||||
+ " , prs_perslid p"
|
||||
+ " where p.alg_onroerendgoed_type = o.alg_type(+)"
|
||||
+ " and p.alg_onroerendgoed_keys = o.alg_onroerendgoed_keys(+)"
|
||||
+ " ) s"
|
||||
+ " where m.prs_perslid_key = s.prs_perslid_key"
|
||||
+ " and m.prs_perslid_key = " + user_key
|
||||
+ ")"
|
||||
+ " )"
|
||||
+ " AND COALESCE(rsao.res_srtartikel_og_ingangsdatum, r.res_artikel_ingangsdatum, SYSDATE) <= SYSDATE"
|
||||
+ " AND COALESCE(rsao.res_srtartikel_og_vervaldatum, r.res_artikel_vervaldatum, SYSDATE) >= SYSDATE"
|
||||
+ " AND (r.res_artikel_ingangsdatum IS NULL OR r.res_artikel_ingangsdatum <= SYSDATE)"
|
||||
+ " AND (r.res_artikel_vervaldatum IS NULL OR r.res_artikel_vervaldatum > SYSDATE)"
|
||||
+ " AND " + fac.createOrClause("UPPER("+lcl.xsql('d.ins_discipline_omschrijving','d.ins_discipline_key') +"||', '||"
|
||||
+lcl.xsql('res_artikel_omschrijving','res_artikel_key') +"||', '||"
|
||||
+lcl.xsql('res_artikel_opmerking','res_artikel_key')+")", supper)
|
||||
|
||||
@@ -3882,10 +3882,11 @@ ins = {checkAutLevel:
|
||||
+ " || ')'"
|
||||
+ " ELSE " + safe.quoted_sql(L("lcl_ins_unknown"))
|
||||
+ " END prs_bedrijf_naam"
|
||||
+ ( mobile && insFlexParams && insFlexParams.anyflex
|
||||
? insFlexParams.sql
|
||||
: ""
|
||||
)
|
||||
+ (mobile
|
||||
? (insFlexParams && insFlexParams.anyflex
|
||||
? insFlexParams.sql
|
||||
: ", NULL insflex")
|
||||
: "")
|
||||
: "")
|
||||
+ " FROM (" + sql + "{0}) XX";
|
||||
|
||||
@@ -6056,7 +6057,9 @@ ins = {checkAutLevel:
|
||||
+ " WHERE idsc2.ins_deel_key = xcp.ins_deel_key"
|
||||
+ " AND idsc2.ins_srtcontrole_key = xcp.ins_srtcontrole_key"
|
||||
+ " AND idsc2.ins_scenario_key = xcp.ins_scenario_key)"
|
||||
+ " AND idsc1.ins_deelsrtcontrole_status IN (2" + (finish? ", 3" : "") + "))");
|
||||
+ " AND idsc1.ins_deelsrtcontrole_status IN (2" + (finish? ", 3" : "") + ")"
|
||||
+ " AND EXTRACT(YEAR FROM idsc1.ins_deelsrtcontrole_freezedate) <= " + mjb_freeze_or_sys_year
|
||||
+ " )");
|
||||
|
||||
if (pricechange)
|
||||
mjblist_sql += " AND (xcp.ins_srtcontroledl_xcp_eind IS NULL OR xcp.ins_srtcontroledl_xcp_eind >= SYSDATE)"; // 1) Prijswijziging: Niet vervallen.
|
||||
@@ -6084,7 +6087,7 @@ ins = {checkAutLevel:
|
||||
|
||||
mjblist_sql += " AND xcp.ins_scenario_key = 1" // 6) Geen scenario.
|
||||
+ " AND xcp.ctr_ismjob = 1" // 7) ismjob.
|
||||
+ (freeze || unfreeze || finish
|
||||
+ (freeze
|
||||
? " AND result.\"" + mjb_freeze_or_sys_year + "\" IS NOT NULL" // 8) isFreezeYear, bedrag in mjb_freeze_year is niet NULL.
|
||||
: "");
|
||||
|
||||
@@ -6481,14 +6484,35 @@ ins = {checkAutLevel:
|
||||
+ " , " + lcl.xsql("sk.ins_srtkenmerk_omschrijving", "iskm.ins_srtkenmerk_key") + ") omschrijving"
|
||||
+ " FROM ins_kenmerk k"
|
||||
+ " , ins_srtkenmerk sk"
|
||||
+ (inspect
|
||||
? " , ins_deelsrtcontrole idsc"
|
||||
+ " , ins_srtcontrole i"
|
||||
+ " , ctr_discipline cd"
|
||||
: " , ins_deel d"
|
||||
+ " , ins_srtdeel s"
|
||||
+ " , ins_srtgroep g")
|
||||
+ " WHERE k.ins_srtkenmerk_key = sk.ins_srtkenmerk_key"
|
||||
+ " AND BITAND(k.ins_kenmerk_inlijst, " + (p_inlijst? p_inlijst : 1) + ") = " + (p_inlijst? p_inlijst : 1) // In overzicht tonen {1=Objectenbeheer overzicht, 2=MJOB Planningsconsole}.
|
||||
+ " AND k.ins_kenmerk_verwijder IS NULL"
|
||||
+ " AND sk.ins_srtkenmerk_verwijder IS NULL"
|
||||
+ " AND sk.ins_srtkenmerk_kenmerktype = 'M'"
|
||||
+ (inspect
|
||||
? " AND k.ins_kenmerk_niveau IN ('C', 'E', 'T')" // C=Periodiek taken, E=Taakcategorie, T=Alle taken.
|
||||
: " AND k.ins_kenmerk_niveau IN ('S', 'G', 'D')") // S=Objectsoort, G=Objectgroep, D=Discipline.
|
||||
? " AND k.ins_kenmerk_niveau IN ('C', 'E', 'T')" // C=Periodiek taken, E=Taakcategorie, T=Alle taken.
|
||||
+ " AND idsc.ins_srtcontrole_key = i.ins_srtcontrole_key"
|
||||
+ " AND i.ctr_discipline_key = cd.ins_discipline_key"
|
||||
+ " AND cd.ins_discipline_verwijder IS NULL"
|
||||
+ " AND idsc.ins_deelsrtcontrole_key = " + p_key // p_key is een ins_deelsrtcontrole_key.
|
||||
+ " AND ((k.ins_srtinstallatie_key = i.ins_srtcontrole_key AND k.ins_kenmerk_niveau = 'C')"
|
||||
+ " OR (k.ins_srtinstallatie_key = cd.ins_discipline_key AND k.ins_kenmerk_niveau = 'E')"
|
||||
+ " OR (k.ins_srtinstallatie_key IS NULL AND k.ins_kenmerk_niveau = 'T'))"
|
||||
: " AND k.ins_kenmerk_niveau IN ('S', 'G', 'D')" // S=Objectsoort, G=Objectgroep, D=Discipline.
|
||||
+ " AND d.ins_srtdeel_key = s.ins_srtdeel_key"
|
||||
+ " AND d.ins_discipline_key = g.ins_discipline_key"
|
||||
+ " AND g.ins_srtgroep_key = s.ins_srtgroep_key"
|
||||
+ " AND d.ins_deel_key = " + p_key // p_key is een ins_deel_key.
|
||||
+ " AND ((k.ins_srtinstallatie_key = s.ins_srtdeel_key AND k.ins_kenmerk_niveau = 'S')"
|
||||
+ " OR (k.ins_srtinstallatie_key = s.ins_srtgroep_key AND k.ins_kenmerk_niveau = 'G')"
|
||||
+ " OR (k.ins_srtinstallatie_key = g.ins_discipline_key AND k.ins_kenmerk_niveau = 'D'))")
|
||||
+ " AND k.ins_srtinstallatie_key NOT IN (" + S("sle_ins_srt_groep_key") + ", " + S("cil_ins_srt_groep_key") + ")";
|
||||
var oRs_k = Oracle.Execute(sql_k);
|
||||
while (!oRs_k.eof)
|
||||
|
||||
@@ -409,7 +409,8 @@ var canImport = (user.checkAutorisation("WEB_IMPORT", true) != null);
|
||||
? safe.html(flexval.replace(/\r/g, "\n")+ "\n")
|
||||
: ""
|
||||
);
|
||||
if (insFlexParams.bijlageflex)
|
||||
// Als er nog geen inspectierecord is (ins_deelsrtcontrole_key IS NULL), dan zijn er ook nog geen bijlage kenmerken.
|
||||
if (insFlexParams.bijlageflex && ins_deelsrtcontrole_key)
|
||||
{
|
||||
result += ins.ins_deel_flex_bijlagen(ins_deelsrtcontrole_key, 1, true); // 1=Objectebeheer overzicht.
|
||||
}
|
||||
|
||||
@@ -843,9 +843,9 @@ $(async function() {
|
||||
var allSuggests = [];
|
||||
if (typeof Suggest === "function") {
|
||||
for (var key in window) {
|
||||
if ((key, ["InstallTrigger","onmozfullscreenchange","onmozfullscreenerror"].includes(key)))
|
||||
if ((key, ["InstallTrigger","onmozfullscreenchange","onmozfullscreenerror", "fullScreen"].includes(key)))
|
||||
{
|
||||
continue; // die drie geven anders op Firefox een verwarrende warning in de console als je window[key] opvraagt
|
||||
continue; // die geven anders op Firefox een verwarrende warning in de console als je window[key] opvraagt
|
||||
}
|
||||
if (window[key] instanceof Suggest) { // Er kunnen meerdere afhankelijke suggest velden zijn.
|
||||
allSuggests.push(window[key].sgReadyState);
|
||||
|
||||
@@ -293,8 +293,7 @@ if (result)
|
||||
{
|
||||
if (!result.response)
|
||||
{
|
||||
__Log("Error in putorders.send_planrequest: " + result.errText); // Zie ook putorders logging voor de foutmelding
|
||||
API.error(result.errText);
|
||||
API.error("Error in putorders.send_planrequest: " + result.errtext); // Zie ook putorders logging voor de foutmelding
|
||||
}
|
||||
|
||||
var xmldoc = new ActiveXObject("Msxml2.DOMDocument.6.0");
|
||||
|
||||
@@ -85,7 +85,7 @@
|
||||
<xsl:if test="plandatum2/datum!=''"><xsl:value-of select="plandatum2/jaar"/>-<xsl:value-of select="plandatum2/maand"/>-<xsl:value-of select="plandatum2/dag"/>T<xsl:value-of select="plandatum2/tijd"/>:00</xsl:if>
|
||||
</mld_opdr_datum_plan2>
|
||||
<mld_opdr_einddatum><xsl:value-of select="einddatum/jaar"/>-<xsl:value-of select="einddatum/maand"/>-<xsl:value-of select="einddatum/dag"/>T<xsl:value-of select="einddatum/tijd"/>:00</mld_opdr_einddatum>
|
||||
<xsl:if test="count(uitvoerende/bedrijf/bedrijfadres[type='O']/flexfiles) = 0 or uitvoerende/bedrijf/bedrijfadres[type='O']/flexfiles = '0' or uitvoerende/bedrijf/bedrijfadres[type='O']/flexfiles = '1' or count(uitvoerende/bedrijf/bedrijfadres[type='O']/fixedattachment) = 1">
|
||||
<xsl:if test="count(/facilitor/notificatie/bedrijfadres/flexfiles) = 0 or /facilitor/notificatie/bedrijfadres/flexfiles = '0' or /facilitor/notificatie/bedrijfadres/flexfiles = '1' or count(/facilitor/notificatie/bedrijfadres/fixedattachment) = 1">
|
||||
<attachments>
|
||||
<xsl:for-each select="kenmerk[@type='M' and floor(@rolcode div 2) mod 2 = 1]">
|
||||
<xsl:sort select="@volgnummer" data-type="number"/>
|
||||
@@ -96,9 +96,9 @@
|
||||
<xsl:attribute name="encoding">base64</xsl:attribute>
|
||||
</xsl:element>
|
||||
</xsl:for-each>
|
||||
<xsl:if test="count(uitvoerende/bedrijf/bedrijfadres[type='O']/fixedattachment) = 1">
|
||||
<xsl:if test="count(/facilitor/notificatie/bedrijfadres/fixedattachment) = 1">
|
||||
<FCLTfixedattachment encoding='base64' nodename='TMP_Attachment'>
|
||||
<xsl:value-of select="uitvoerende/bedrijf/bedrijfadres[type='O']/fixedattachment"/>
|
||||
<xsl:value-of select="/facilitor/notificatie/bedrijfadres/fixedattachment"/>
|
||||
</FCLTfixedattachment>
|
||||
</xsl:if>
|
||||
</attachments>
|
||||
|
||||
@@ -73,14 +73,14 @@ scaffolding(this_model,
|
||||
"icon": "fa-euro-sign",
|
||||
"fields": [
|
||||
"financialdata",
|
||||
"approvenew",
|
||||
"costtype",
|
||||
"costtypemandatory",
|
||||
"percentage",
|
||||
"margin",
|
||||
"approve",
|
||||
"invoicelimit",
|
||||
"schedule",
|
||||
"approvenew"
|
||||
"schedule"
|
||||
]
|
||||
}
|
||||
]
|
||||
|
||||
@@ -136,6 +136,9 @@
|
||||
"ins_srtdeel_acadsymbol",
|
||||
"ins_srtgroep_key"]
|
||||
},
|
||||
"mld_kenmerk": {
|
||||
"fields": ["mld_srtkenmerk_key"]
|
||||
},
|
||||
"mld_melding_object": {
|
||||
"fields": ["ins_deel_key"]
|
||||
},
|
||||
|
||||
@@ -288,6 +288,19 @@ switch (req_info)
|
||||
|
||||
break;
|
||||
}
|
||||
case "show_after_reject":
|
||||
{
|
||||
protectQS.verify({ allowparams: ["req_info"]});
|
||||
var mld_key = getQParamInt("mld_key", -1);
|
||||
var mfe = mld.func_enabled_melding(mld_key);
|
||||
|
||||
result.show = mfe.canReadAny || mfe.canChangeKenmerkBlok;
|
||||
if (!mfe.canReadAny) {
|
||||
result.toaster = L("lcl_mld_is_mldrej");
|
||||
}
|
||||
|
||||
break;
|
||||
}
|
||||
case "show_after_fwd":
|
||||
{
|
||||
protectQS.verify({ allowparams: ["req_info"]});
|
||||
|
||||
@@ -6763,7 +6763,7 @@ mld = {
|
||||
? " AND ( mld_stdmeldinggroep_key = " + params.stdmeldinggroep_key
|
||||
+ " OR mld_stdmeldinggroep_key IS NULL)" // Deze mag natuurlijk ook
|
||||
: "") // Dan geldt alleen de vakgroeptype-scope
|
||||
+ " ORDER BY mld_melding_tag_datum_tot, mld_melding_tag_naam"; // denk ik?
|
||||
+ " ORDER BY mld_melding_tag_datum_tot DESC, mld_melding_tag_naam";
|
||||
var result =
|
||||
FCLTselector_HTML("tag_key",
|
||||
sql_tag,
|
||||
@@ -7118,7 +7118,10 @@ mld = {
|
||||
+ " " + (ruimtekey > 0 ? "OR (cp.cnt_alg_plaats_code = 'R' AND cp.cnt_alg_plaats_key = " + ruimtekey + ")" : "")
|
||||
+ " )";
|
||||
|
||||
var sql_o = " SELECT c.cnt_prs_bedrijf_key"
|
||||
var sql_o = "";
|
||||
if (obj_key_arr && obj_key_arr.length > 0)
|
||||
{
|
||||
sql_o = " SELECT c.cnt_prs_bedrijf_key"
|
||||
+ " , c.cnt_contract_key"
|
||||
+ " , CASE WHEN co.cnt_ins_deel_key IS NULL"
|
||||
+ " THEN 6"
|
||||
@@ -7146,19 +7149,22 @@ mld = {
|
||||
+ " )"
|
||||
+ " )"
|
||||
+ " )";
|
||||
}
|
||||
|
||||
var sql_c = "SELECT cnt_prs_bedrijf_key"
|
||||
+ " , cnt_contract_key"
|
||||
+ " , prio"
|
||||
+ " , COUNT(DISTINCT cnt_prs_bedrijf_key) aantal"
|
||||
+ " FROM (" + sql_p
|
||||
+ (obj_key_arr.length ? " UNION " + sql_o : "")
|
||||
+ " )"
|
||||
+ " GROUP BY cnt_prs_bedrijf_key, cnt_contract_key, prio"
|
||||
+ " ORDER BY prio DESC"
|
||||
+ " FETCH FIRST 1 ROW ONLY";
|
||||
var sql_c = "SELECT MIN(cnt_prs_bedrijf_key) cnt_prs_bedrijf_key"
|
||||
+ " , COUNT(*) aantal"
|
||||
+ " FROM (SELECT cnt_prs_bedrijf_key"
|
||||
+ " , cnt_contract_key"
|
||||
+ " , prio"
|
||||
+ " , COUNT(DISTINCT cnt_prs_bedrijf_key) aantal"
|
||||
+ " FROM (" + sql_p
|
||||
+ (obj_key_arr && obj_key_arr.length > 0 ? " UNION " + sql_o : "")
|
||||
+ " )"
|
||||
+ " GROUP BY cnt_prs_bedrijf_key, cnt_contract_key, prio"
|
||||
+ " ORDER BY prio DESC"
|
||||
+ " )";
|
||||
var oRs_c = Oracle.Execute(sql_c);
|
||||
if (!oRs_c.EOF && oRs_c("aantal").Value == 1)
|
||||
if (oRs_c("aantal").Value == 1)
|
||||
{
|
||||
prs_bedrijf_key = oRs_c("cnt_prs_bedrijf_key").Value;
|
||||
}
|
||||
|
||||
@@ -65,8 +65,13 @@ function doublecheckCallback(json, modalParams)
|
||||
}
|
||||
else
|
||||
{
|
||||
if (reloadmld)
|
||||
parent.location.href = "mld_melding.asp?urole=" + urole + "&mld_key=" + mld_key_arr + "&embedded=1";
|
||||
if (reloadmld) {
|
||||
if (json.reject) {
|
||||
mld_melding_rejected();
|
||||
} else {
|
||||
parent.location.href = "mld_melding.asp?urole=" + urole + "&mld_key=" + mld_key_arr + "&embedded=1";
|
||||
}
|
||||
}
|
||||
else
|
||||
FcltCallbackRefresh({success: true});
|
||||
}
|
||||
|
||||
@@ -605,6 +605,7 @@ if (useBronmelding)
|
||||
this_mld_info.behandel_key2 = bron_mld_info.behandel_key2;
|
||||
this_mld_info.mld_onderwerp = bron_mld_info.mld_onderwerp;
|
||||
this_mld_info.room_obj_arr = bron_mld_info.room_obj_arr;
|
||||
this_mld_info.primaire_behandelaar = bron_mld_info.primaire_behandelaar;
|
||||
if (isVervolgmelding && (this_stdm_info.canholdthirdparty == 1 || lAllThirdparty))
|
||||
{
|
||||
this_mld_info.naam_ext = bron_mld_info.naam_ext;
|
||||
@@ -1602,8 +1603,13 @@ SUBFRAME_START();
|
||||
{ urlParam: "disc_key", field: "disc", init: this_mld_info.disc_key }];
|
||||
if (this_mld_info.show_alg)
|
||||
urlAdd.push({ urlParam: "loc_key", field: "locatiekey", init: this_mld_info.loc_key });
|
||||
if (this_mld_info.primaire_behandelaar != 0)
|
||||
{
|
||||
if (
|
||||
this_mld_info.primaire_behandelaar != 0 &&
|
||||
(
|
||||
bron_mld_key == -1 ||
|
||||
this_mld_info.primaire_behandelaar
|
||||
)
|
||||
) {
|
||||
FCLTpersoonselector("sBehandel",
|
||||
"sgBehandelaar",
|
||||
{ perslidKey: this_mld_info.behandel_key,
|
||||
|
||||
@@ -157,10 +157,10 @@ function changeUurtarief()
|
||||
if (isNaN(uurtarief)) { // Bereken opdrachttarief
|
||||
if (data.uurtarief == null)
|
||||
$("#uurtarief").val("");
|
||||
var uren = parseFloat( $("#uren").val());
|
||||
var mat_kosten = parseFloat( $("#mat_kosten").val());
|
||||
var corr_kosten = parseFloat( $("#corr_kosten").val());
|
||||
var tot_kosten = parseFloat( $("#tot_kosten").val());
|
||||
var uren = parseFloat( $("#uren").val().replace(',', '.'));
|
||||
var mat_kosten = parseFloat( $("#mat_kosten").val().replace(',', '.'));
|
||||
var corr_kosten = parseFloat( $("#corr_kosten").val().replace(',', '.'));
|
||||
var tot_kosten = parseFloat( $("#tot_kosten").val().replace(',', '.'));
|
||||
|
||||
if (isNaN(mat_kosten))
|
||||
mat_kosten = 0;
|
||||
|
||||
@@ -67,9 +67,9 @@ if (locatiekey < 0 && mld_melding.deladdress_key > 0)
|
||||
|
||||
// Zijn er objecten aan de melding gekoppeld? Zet de ins_deel_keys in een array.
|
||||
var obj_key_arr = [];
|
||||
for (var i=0; i<mld_info.room_obj_arr.length; i++)
|
||||
for (var i=0; i<mld_melding.room_obj_arr.length; i++)
|
||||
{
|
||||
obj_key_arr.push(mld_info.room_obj_arr[i].ins_key);
|
||||
obj_key_arr.push(mld_melding.room_obj_arr[i].ins_key);
|
||||
}
|
||||
var prs_bedrijf_key = mld.dienst_controle(new_stdm, locatiekey, (mld_melding.bttype == "B"? mld_melding.bld_key : null), mld_melding.room_key, obj_key_arr, mld_melding.perslid_key_voor);
|
||||
|
||||
|
||||
@@ -60,6 +60,13 @@ function mld_melding_ingestemd() {
|
||||
mld_reload_or_close);
|
||||
}
|
||||
|
||||
function mld_melding_rejected() {
|
||||
var data = { req_info: "show_after_reject"};
|
||||
$.getJSON(protected_mld_info_ajax,
|
||||
data,
|
||||
mld_reload_or_close);
|
||||
}
|
||||
|
||||
function mld_reload_or_close(json, textStatus)
|
||||
{
|
||||
if (json)
|
||||
@@ -142,11 +149,7 @@ function mld_reject()
|
||||
url = "../mld/mld_reject.asp?urole=" + urole + "&mld_key=" + mld_key
|
||||
FcltMgr.openModalDetail(url,
|
||||
L("lcl_mld_complain") + ' ' + mldPrefix + mld_key,
|
||||
{callback: function()
|
||||
{
|
||||
FcltMgr.closeDetail(window, {close: true});
|
||||
mld_melding_reload(mld_key);
|
||||
}}
|
||||
{ callback: FcltCallbackAndThen(mld_melding_rejected) }
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -243,7 +243,7 @@ if (mld_key > 0)
|
||||
IFRAMER_HEADER(L("lcl_mld_behandeling"), buttons, { inhamburger: true });
|
||||
var safe_notes_title = safe.html(L("lcl_mld_frame_notes"));
|
||||
if (S("ai_enabled") & 4) {
|
||||
safe_notes_title += " <span class='default-clickable-icon' onclick='aiSummarize()'>" + I("fa-sparkles") + "</span>";
|
||||
safe_notes_title += " <span class='default-clickable-icon' onclick='aiSummarize()' title='" + safe.htmlattr(L("lcl_mld_summarize")) + "'>" + I("fa-sparkles") + "</span>";
|
||||
}
|
||||
BLOCK_START("mldHistorie", safe_notes_title, { detailToggle: true, wide: true, nopadding: true, icon: "fa-clipboard-list-check", ishtmlsafe: true });
|
||||
|
||||
|
||||
@@ -98,10 +98,11 @@ oRs.Close();
|
||||
<script type="text/javascript">
|
||||
var anyChange = false; // Voorkom te veel refreshes
|
||||
<% function getWeekString(datum) {
|
||||
var yearStart = new Date(datum.getFullYear(), 0, 1);
|
||||
var dayOfYear = (datum.getTime() - yearStart.getTime()) / oneDay + 1;
|
||||
var weekNr = Math.ceil(dayOfYear / 7);
|
||||
return datum.getFullYear() + "-" + weekNr;
|
||||
var sql = "SELECT TO_CHAR({0}, 'IYYY-IW') weeknr FROM DUAL".format(datum.toSQL());
|
||||
var oRs = Oracle.Execute(sql);
|
||||
var txt = oRs("weeknr").Value;
|
||||
oRs.Close()
|
||||
return txt;
|
||||
}
|
||||
%> FcltMgr.setTitle(L("lcl_mld_ord_weeklijst") + "<%=getWeekString(datefrom)%>");
|
||||
|
||||
|
||||
@@ -27,7 +27,7 @@ user.anything_todo_or_abort(this_opdr.canSetSent, L("lcl_shared_no_auth"));
|
||||
|
||||
sql = "BEGIN fac.markorderassent('opdracht', " + opdr_key + ", 2, '', " + user_key + "); END;"; // 2=nog onbekend of leverancier accepteert.
|
||||
Oracle.Execute(sql);
|
||||
mld.trackopdrachtupdate(opdr_key, L("lcl_mld_is_setsent"));
|
||||
mld.trackopdrachtupdate(opdr_key, L("lcl_mld_is_setsend")); // Todo; spelvaud uit de lcl-naam halen
|
||||
|
||||
result.success = true;
|
||||
|
||||
|
||||
@@ -97,14 +97,18 @@ if (nieuws_key === -1 && mld_key > 0) {
|
||||
var result = shared.promptAI(JSON.stringify(input), { "instructions": L("lcl_mld_publish_portal_message_instructions"), "response_format": "json_object" });
|
||||
if (result.success) {
|
||||
try {
|
||||
__Log(result.content);
|
||||
var content = JSON.parse(result.content);
|
||||
subject = content.onderwerp || null;
|
||||
fac_nieuws_groep_key = content.categorie || null;
|
||||
var fac_nieuws_groep_key = null;
|
||||
fac_nieuws_groep_key = parseInt(content.categorie, 10) || null; // In theorie kan AI nog steeds een ongeldige categorie_key teruggeven. Dat negeren we
|
||||
image = content.icon || null;
|
||||
mess_dsc = content.berichttekst || null;
|
||||
totdate = (content.periode_tot || null) === null ? null : new Date(content.periode_tot || null);
|
||||
} catch (e) {
|
||||
// Dan niet
|
||||
__DoLog("Prompt AI returned invalid JSON: " + e.description);
|
||||
__DoLog(result.content);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -163,8 +163,8 @@ var eindLevel;
|
||||
</td>
|
||||
</tr>
|
||||
<% }
|
||||
ROFIELDTR("datefrom", L("lcl_period_from"), toDateString(vandate, false, false, true), { suppressEmpty: true});
|
||||
ROFIELDTR("dateto", L("lcl_period_to"), toDateString(totdate, false, false, true), { suppressEmpty: true});
|
||||
ROFIELDTR("datefrom", L("lcl_period_from"), toDateString(vandate), { suppressEmpty: true});
|
||||
ROFIELDTR("dateto", L("lcl_period_to"), toDateString(totdate), { suppressEmpty: true});
|
||||
ROFIELDTR("fld", L("lcl_mes_send_date_time"), toDateTimeString(action_datum));
|
||||
BLOCK_END();
|
||||
BLOCK_START("msgPrs", L("lcl_msg_groep"), {icon: "fa-users"});
|
||||
|
||||
@@ -86,6 +86,11 @@ footer {
|
||||
transform: translate(-50%, 75%);
|
||||
white-space: nowrap;
|
||||
}
|
||||
header .otap-title {
|
||||
bottom: unset;
|
||||
top: 0;
|
||||
transform: translate(-50%, 120%);
|
||||
}
|
||||
|
||||
footer {
|
||||
height: var(--fclt-footer-height);
|
||||
@@ -360,7 +365,7 @@ header.page-banner {
|
||||
|
||||
.card-link { /* Directe child van een .card */
|
||||
border-radius: inherit;
|
||||
height: inherit;
|
||||
height: var(--fclt-card-inner-height);
|
||||
}
|
||||
|
||||
.card-title > * + * {
|
||||
@@ -669,6 +674,13 @@ footer.page-footer > * {
|
||||
background-color: inherit;
|
||||
}
|
||||
|
||||
/* sensorstates */
|
||||
.sensorstate span {
|
||||
padding-right: 6px;
|
||||
}
|
||||
.stateval {
|
||||
font-style: italic;
|
||||
}
|
||||
/* ---------------------------------------------------------------------------
|
||||
Icon-grid
|
||||
--------------------------------------------------------------------------- */
|
||||
|
||||
@@ -138,9 +138,9 @@ function fac_list(days_in_the_future)
|
||||
return "<div class='listbodykop'>"
|
||||
+ "<div>" + I("fa-clock") + " "
|
||||
+ (specific_day
|
||||
? toTimeString(oRs.Fields("datum").Value)
|
||||
: toDateTimeString(oRs.Fields("datum").Value, false, false, true))
|
||||
+ "-" + toTimeString(oRs.Fields("datum_eind").Value) + "</div>"
|
||||
? toTimeString(oRs.Fields("datum").Value, { isLocal: true })
|
||||
: toDateTimeString(oRs.Fields("datum").Value, { isLocal: true }))
|
||||
+ "-" + toTimeString(oRs.Fields("datum_eind").Value, { isLocal: true }) + "</div>"
|
||||
+ (oRs.Fields("plaats").Value ? "<div>" + I("fa-map-marker") + " " + oRs.Fields("plaats").Value + "</div>" : "")
|
||||
+ "</div>";
|
||||
},
|
||||
|
||||
@@ -73,6 +73,11 @@ var params = {betreft: (betreft.length? betreft : null),
|
||||
nurl = "../pda/reservering.asp?rsv_ruimte_key=" + oRs("request_key").Value;
|
||||
break;
|
||||
}
|
||||
case "MLDIN":
|
||||
{
|
||||
nurl = "../pda/melding.asp?mld_key=" + oRs("request_key").value;
|
||||
break;
|
||||
}
|
||||
default: INTERNAL_ERROR;
|
||||
}
|
||||
return nurl;
|
||||
@@ -91,6 +96,7 @@ var params = {betreft: (betreft.length? betreft : null),
|
||||
case "FIN":
|
||||
case "FIN2": soort = L("lcl_fin_factuur_type") + " " + safe.html(oRs("type").Value); break;
|
||||
case "RES": soort = L("lcl_res_reservation"); break;
|
||||
case "MLDIN": return L("lcl_mld_concept") + ": " + safe.html(oRs("type").Value); break;
|
||||
default: INTERNAL_ERROR;
|
||||
}
|
||||
|
||||
|
||||
@@ -177,6 +177,11 @@ function FOOTER(params)
|
||||
return;
|
||||
}
|
||||
|
||||
if (user.isGroupedUser() || Session("login_by_fallback"))
|
||||
{
|
||||
return; // Die hebben ook niets met die knoppen te maken
|
||||
}
|
||||
|
||||
var sql = "SELECT COUNT(*) berichten"
|
||||
+ " FROM web_user_messages"
|
||||
+ " WHERE prs_perslid_key_receiver = " + user_key
|
||||
@@ -287,9 +292,9 @@ function FOOTER(params)
|
||||
} %>
|
||||
|
||||
<footer class="fixed-bottom page-footer">
|
||||
<a href="Facilitor.asp" class="tappable"><%=I("fa-home fa-xl")%></a>
|
||||
<a href="fac_list.asp" class="tappable"><%=I("fa-ballot-check fa-xl")%></a>
|
||||
<a href="message_list.asp" class="tappable"<%=berichten ? ' data-badge="' + berichten + '"' : ''%>>
|
||||
<a href="<%=rooturl%>/appl/pda/Facilitor.asp" class="tappable"><%=I("fa-home fa-xl")%></a>
|
||||
<a href="<%=rooturl%>/appl/pda/fac_list.asp" class="tappable"><%=I("fa-ballot-check fa-xl")%></a>
|
||||
<a href="<%=rooturl%>/appl/pda/message_list.asp" class="tappable"<%=berichten ? ' data-badge="' + berichten + '"' : ''%>>
|
||||
<%=I("fa-bell fa-xl")%>
|
||||
<span class="fclt-noti-badge badge rounded-pill bg-danger"><%=berichten%></span>
|
||||
</a>
|
||||
@@ -313,7 +318,7 @@ function FOOTER(params)
|
||||
last_msg_oRs.Close();
|
||||
}
|
||||
oRs.Close();
|
||||
%> <a href="berichten.asp" class="tappable"<%=new_msg ? ' data-badge="!"' : ''%>><%=I("fa-circle-y fa-xl")%></a>
|
||||
%> <a href="<%=rooturl%>/appl/pda/berichten.asp" class="tappable"<%=new_msg ? ' data-badge="!"' : ''%>><%=I("fa-circle-y fa-xl")%></a>
|
||||
<% } %>
|
||||
<%=DROPDOWN(hamburger_actions)%>
|
||||
</footer>
|
||||
|
||||
@@ -260,7 +260,7 @@ else
|
||||
{ // ik mag niets zien, doorstarten
|
||||
if (user.checkAutorisation( "WEB_MLDUSE", true)) {
|
||||
// Dan laat maar een melding doen
|
||||
var theURL = "./melding.asp?mld_key=-1&ins_key=" + ins_key + (stdmkina > 0 ? "&stdm_key="+stdmkina + transitParam : "");
|
||||
var theURL = "./melding.asp?mld_key=-1&ins_key=" + ins_key + (stdmkina > 0 ? "&stdm_key="+stdmkina : "") + transitParam;
|
||||
Response.Redirect(theURL);
|
||||
}
|
||||
else {
|
||||
@@ -640,7 +640,7 @@ if (alg_typ == "R" || alg_typ == "W" || alg_typ == "T")
|
||||
RWFIELD("desc", L("lcl_obj_identification"), ins_info.ins_deel_omschrijving, { pclass: "required", readonly: !this_ins.canChangeAlg || !(ins_info.autonum & 2) });
|
||||
if (ins_info.ins_deel_state)
|
||||
{
|
||||
var sensorstatetext = ins_info.ins_deel_state + "<span class='statedate'>" + toDateTimeString(ins_info.ins_deel_statedate, true, false, true) + "</span>";
|
||||
var sensorstatetext = "<span class='statedate'>" + toDateTimeString(ins_info.ins_deel_statedate, true, true, true) + "</span><span class='stateval'>" + ins_info.ins_deel_state + "</span>";
|
||||
if (!ins_info.thresholdstate)
|
||||
var presentatie = "<span>" + I("fa-sensor") + "</span><span>" + sensorstatetext + "</span>";
|
||||
else
|
||||
|
||||
@@ -746,7 +746,7 @@ var canAdd = authparams.PRSwritelevel < 9 && authparams.ALGwritelevel < 9;
|
||||
+ " gebrekdatum"
|
||||
+ ( insFlexParams.anyflex
|
||||
? insFlexParams.sql
|
||||
: ""
|
||||
: ", NULL insflex"
|
||||
)
|
||||
+ " FROM ("
|
||||
+ sqlR
|
||||
|
||||
@@ -2604,7 +2604,7 @@ if (mld_key > -1 && this_mld.canReject && action != "forward")
|
||||
function mld_reject_callback(data)
|
||||
{
|
||||
// mobile kan slechts 1 melding per keer afwijzen
|
||||
if (data.reject_arr[0].inspect)
|
||||
if (data.reject_arr[0]?.inspect)
|
||||
{
|
||||
var insdata = data.reject_arr[0].inspect;
|
||||
protectRequest.dataToken(insdata);
|
||||
|
||||
@@ -32,7 +32,14 @@ var own = getQParamInt("own", 0) == 1;
|
||||
var klus = getQParamInt("klus", 0) == 1;
|
||||
var disc_type = getQParamInt("grpby", 1); // 1 = Vakgroep (default), 2 = Behandelteam
|
||||
var deelsrtcont_key = getQParamInt("deelsrtcont_key", -1); // nieuwe melding vanuit een controletaak
|
||||
var self = getQParamInt("self", -1);
|
||||
|
||||
/* Self;
|
||||
-2: Opdrachten zonder actieve behandelaar
|
||||
0/null: Alle opdrachten, ongeacht actieve behandelaar
|
||||
1: Opdrachten waarbij ik de actieve behandelaar ben
|
||||
2: -2 & 1 (Dus; Geen actieve behandelaar, of ik ben de actieve behandelaar)
|
||||
*/
|
||||
var self = getQParamInt("self", null);
|
||||
|
||||
function getDistrictKey()
|
||||
{
|
||||
@@ -150,8 +157,10 @@ if (!hasParamFlag)
|
||||
|
||||
// Op mobile een dag(en)overzicht tonen van opdrachten op basis van een from en een to datum, voor mij als contactpersoon van de uitvoerende.
|
||||
// Die datums zijn dan gebaseerd op de plandatum.
|
||||
var plandatefrom = getQParamDate("plandate_from", null);
|
||||
var plandateto = getQParamDate("plandate_to", null);
|
||||
var plandatefrom = getQParamDate("plandate_from", getQParamDate("plandate", null));
|
||||
var plandateto = getQParamDate("plandate_to", plandatefrom);
|
||||
plandatefrom = plandatefrom || plandateto;
|
||||
// Nu zijn ze altijd allebei wel of allebei niet gedefinieerd
|
||||
}
|
||||
else
|
||||
{ // b. heb ik dan opdrachtrechten binnen een scope, dat is ORDBOF of ORDBO2? Dan mag ik opdrachten binnen de scope zien.
|
||||
@@ -184,10 +193,10 @@ if (!hasParamFlag)
|
||||
|
||||
// Wel, afhankelijk van mijn bepaalde rol kan ik mijn overzicht anders willen,
|
||||
// toegespitster op mijn behoefte (listmode):
|
||||
// 1. alle opdrachten, met de naam van de contactpersoon erbij (ik of mijn collega, leeg als ik)
|
||||
// 2. alle opdrachten per uitvoerder, kan ik makkelijk afmelden
|
||||
// 3. al mijn opdrachten, mijn todolijst
|
||||
// 4. alle opdracht van de meegegeven melding
|
||||
// 1. Alle opdrachten, met de naam van de contactpersoon erbij (ik of mijn collega, leeg als ik)
|
||||
// 2. Alle opdrachten per uitvoerder, kan ik makkelijk afmelden
|
||||
// 3. Al mijn opdrachten, mijn todolijst
|
||||
// 4. Alle opdracht van de meegegeven melding
|
||||
|
||||
function grp_sel_listmode2(grp)
|
||||
{
|
||||
@@ -215,7 +224,7 @@ if (!hasParamFlag)
|
||||
+ " , o.mld_opdr_bedrijfopdr_volgnr"
|
||||
+ " , o.mld_statusopdr_key"
|
||||
+ " , (SELECT p.prs_perslid_naam_full FROM prs_v_perslid_fullnames_all p WHERE p.prs_perslid_key = o.prs_perslid_key) behandelaar"
|
||||
+ " , (SELECT " + S("prs_contactpers_string") + " FROM prs_contactpersoon cp WHERE cp.prs_contactpersoon_key = o.prs_contactpersoon_key) contactpersoon"
|
||||
+ " , " + S("prs_contactpers_string") + " contactpersoon"
|
||||
+ " , mu.naam"
|
||||
+ " , mu.type"
|
||||
+ " , mu.intern"
|
||||
@@ -276,11 +285,13 @@ if (!hasParamFlag)
|
||||
+ " , alg_locatie l"
|
||||
+ " , alg_district di"
|
||||
+ " , mld_v_uitvoerende mu"
|
||||
+ " , prs_contactpersoon cp"
|
||||
+ " WHERE o.mld_melding_key = m.mld_melding_key (+)"
|
||||
+ " AND m.mld_stdmelding_key = std.mld_stdmelding_key (+)"
|
||||
+ " AND std.mld_ins_discipline_key = d.ins_discipline_key (+)"
|
||||
+ " AND d.ins_srtdiscipline_key = sd.ins_srtdiscipline_key (+)"
|
||||
+ " AND o.mld_uitvoerende_keys = mu.mld_uitvoerende_key" // type b of p toch nog ergens doen@?
|
||||
+ " AND cp.prs_contactpersoon_key(+) = o.prs_contactpersoon_key"
|
||||
+ (grp_sel==""
|
||||
? ""
|
||||
: (listmode == 2
|
||||
@@ -325,56 +336,19 @@ if (!hasParamFlag)
|
||||
|
||||
if (listmode == 1)
|
||||
{
|
||||
var sql_plandate = "";
|
||||
var ora_date1;
|
||||
var ora_date2;
|
||||
var day_is_the_same = false;
|
||||
if (plandatefrom && plandateto)
|
||||
{
|
||||
ora_date1 = plandatefrom.beginToSQL();
|
||||
ora_date2 = plandateto.endToSQL();
|
||||
day_is_the_same = (plandatefrom.midnight().getTime() == plandateto.midnight().getTime())
|
||||
var plandate_where = "";
|
||||
var oneday = false;
|
||||
if (plandatefrom || plandateto) {
|
||||
var oneday = plandatefrom.midnight().getTime() == plandateto.midnight().getTime();
|
||||
plandate_where = " AND o.mld_opdr_plandatum BETWEEN " + plandatefrom.beginToSQL() + " AND " + plandateto.endToSQL();
|
||||
}
|
||||
else if (plandatefrom)
|
||||
{
|
||||
ora_date1 = plandatefrom.beginToSQL();
|
||||
ora_date2 = plandatefrom.endToSQL();
|
||||
day_is_the_same = true;
|
||||
}
|
||||
else if (plandateto)
|
||||
{
|
||||
ora_date1 = plandateto.beginToSQL();
|
||||
ora_date2 = plandateto.endToSQL();
|
||||
day_is_the_same = true;
|
||||
}
|
||||
|
||||
if (day_is_the_same)
|
||||
{ // ora_date1 en ora_date2 zijn op dezelfde dag.
|
||||
var sqld = "SELECT fac.datumtijdplusuitvoertijd (" + ora_date1 + ", 0, 'DAGEN') date1 FROM DUAL";
|
||||
var oRsd = Oracle.Execute(sqld);
|
||||
var ora_date1 = new Date(oRsd("date1").Value).beginToSQL();
|
||||
var ora_date2 = new Date(oRsd("date1").Value).endToSQL();
|
||||
oRsd.close();
|
||||
}
|
||||
|
||||
// Op mobile een dag(en)overzicht tonen van opdrachten op basis van een from en een to datum, voor mij als contactpersoon van de uitvoerende.
|
||||
// Die datums zijn dan gebaseerd op de plandatum en binnen die datums gesorteerd op tijd (van diezelfde plandatum).
|
||||
// Ook evt. opdrachten die aan geen contactpersoon zijn toegekend (dus leeg zijn), wil ik in dat dagoverzicht kunnen bekijken.
|
||||
if (ora_date1 && ora_date2)
|
||||
sql_plandate = " AND o.mld_opdr_plandatum BETWEEN " + ora_date1 + " AND " + ora_date2;
|
||||
+ " AND ((SELECT prs_contactpersoon_key"
|
||||
+ " FROM prs_contactpersoon"
|
||||
+ " WHERE prs_perslid_key = " + user_key
|
||||
+ " AND prs_contactpersoon_verwijder IS NULL"
|
||||
+ " AND prs_bedrijf_key = o.mld_uitvoerende_keys) = o.prs_contactpersoon_key"
|
||||
+ " OR o.prs_contactpersoon_key IS NULL)"
|
||||
|
||||
sql += " AND EXISTS (SELECT 'X' " // Ben ik contactpersoon van het uitvoerende externe bedrijf.
|
||||
+ " FROM prs_contactpersoon"
|
||||
+ " WHERE prs_perslid_key = " + user_key
|
||||
+ " AND prs_contactpersoon_verwijder is null "
|
||||
+ " AND prs_bedrijf_key = o.mld_uitvoerende_keys)"
|
||||
+ sql_plandate;
|
||||
+ plandate_where;
|
||||
}
|
||||
|
||||
if (listmode == 3)
|
||||
@@ -394,6 +368,27 @@ if (!hasParamFlag)
|
||||
+ " , prs_v_aanwezigafdeling a"
|
||||
+ " WHERE p.prs_afdeling_key = a.prs_afdeling_key"
|
||||
+ " AND p.prs_perslid_key = " + user_key + ")";
|
||||
if (self) {
|
||||
// Self heeft betrekking op de actieve behandelaar, dat kan zowel de contactpersoon als de behandelaar zijn
|
||||
// -2: Opdrachten zonder actieve behandelaar
|
||||
// 0/null: Alle opdrachten, ongeacht actieve behandelaar
|
||||
// 1: Opdrachten waarbij ik de actieve behandelaar ben
|
||||
// 2: -2 & 1 (Dus; Geen actieve behandelaar, of ik ben de actieve behandelaar)
|
||||
switch (self) {
|
||||
case -2:
|
||||
sql += " AND COALESCE(o.prs_contactpersoon_key, o.prs_perslid_key) IS NULL";
|
||||
break;
|
||||
case 1:
|
||||
sql += " AND ( cp.prs_perslid_key = " + user_key
|
||||
+ " OR o.prs_perslid_key = " + user_key + ")";
|
||||
break;
|
||||
case 2:
|
||||
sql += " AND ( COALESCE(o.prs_contactpersoon_key, o.prs_perslid_key) IS NULL"
|
||||
+ " OR cp.prs_perslid_key = " + user_key
|
||||
+ " OR o.prs_perslid_key = " + user_key + ")";
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
// Een afmelder (ORDBO2 of EXTORD) mag externe opdrachten zien/afmelden onder bepaalde voorwaarden:
|
||||
// EXTORD: Hij mag opdrachten zien/afmelden van externe bedrijven waar hij contactpersoon van is,
|
||||
@@ -455,8 +450,7 @@ if (!hasParamFlag)
|
||||
sql = "SELECT * FROM (" + sqlA + ") ORDER BY "
|
||||
+ ((grp_sel == "" && listmode == 2)
|
||||
? " naam, mld_opdr_datumbegin"
|
||||
: (listmode == 1 && ora_date1 && ora_date2? " mld_opdr_plandatum," : "") + " actief DESC, halted, einddatum, opdracht")
|
||||
|
||||
: (listmode == 1 && plandatefrom ? " mld_opdr_plandatum," : "") + " actief DESC, halted, einddatum, opdracht");
|
||||
|
||||
function fncolLink(oRs)
|
||||
{
|
||||
@@ -516,7 +510,7 @@ if (!hasParamFlag)
|
||||
+ (actiecode & 4 ? "<span class='ac'>" + I("fa-comment-smile fa-flip-horizontal", { fastyle: "far" }) + " " + L("lcl_mld_actiecodeUITV") + "</span><br>" : "")
|
||||
+ (oRs("plaatsmelding").Value? "" + I("fa-map-marker", { fastyle: "far" }) + " "+safe.html(oRs("plaatsmelding").Value) + "<br>" : "")
|
||||
+ (safeuitv != "" ? safeuitv + "<br>" : "")
|
||||
+ "" + I("fa-clock", { fastyle: "far" }) + " " + toDateTimeString(oRs("mld_opdr_einddatum").Value, false, false, true)
|
||||
+ "" + I("fa-clock", { fastyle: "far" }) + " " + toDateTimeString(oRs("einddatum").Value, false, false, true, true)
|
||||
+ (flagkey ? "<br> <span class='opdrflag"+flagkey+"'>" + I("fa-fclt-flag", { fastyle: "far" }) + "</span> " + L("lcl_opdr_flag" + flagkey) : "")
|
||||
+ "</div>"
|
||||
+ "<div class='listbodytext'>" + safe.html(shorttxt(oRs("mld_opdr_omschrijving").Value, S("rs_mobile_maxchar"))) + "</div>";
|
||||
@@ -527,11 +521,23 @@ if (!hasParamFlag)
|
||||
// Om wat explicieter te zijn in wat we zien specifieke titels per mode
|
||||
var listtitle = L("lcl_mobile_opdrachten");
|
||||
switch (listmode) {
|
||||
case 1: listtitle = L("lcl_mobile_opdrachten1"); break;
|
||||
case 1:
|
||||
if (plandatefrom) {
|
||||
var datefrom_str = toDateString(plandatefrom, true, true).toLowerCase();
|
||||
if (oneday) {
|
||||
listtitle = "Planning van {0}".format(datefrom_str);
|
||||
} else {
|
||||
listtitle = "Planning van {0} t/m {1}".format(datefrom_str, toDateString(plandateto, true, true).toLowerCase());
|
||||
}
|
||||
} else {
|
||||
listtitle = L("lcl_mobile_opdrachten1");
|
||||
}
|
||||
break;
|
||||
case 2: listtitle = L("lcl_mobile_opdrachten2") + " " + CurrentPositionMinus1; break; /* is niveau hoger */
|
||||
case 3: listtitle = L("lcl_mobile_opdrachten3") + " " + CurrentPositionMinus1; break; /* is niveau hoger */
|
||||
case 4: listtitle = L("lcl_mobile_opdrachten") + " " + L("lcl_mobile_objbijmelding") + " " + meldingNr; break;
|
||||
}
|
||||
|
||||
var addaction = (addAllowed? "../pda/order.asp?mld_key=" + mld_key : "");
|
||||
|
||||
PAGE_START({datacache:false});
|
||||
|
||||
@@ -105,7 +105,7 @@ imgurl += "&sizeY=" + (1*sizeY);
|
||||
<html>
|
||||
<head>
|
||||
<% FCLTMHeader.Generate({}); %>
|
||||
<script>
|
||||
<script>
|
||||
<% if (!readonly)
|
||||
{ %>
|
||||
// is er niet met bootstrap $(function() { $.mobile.zoom.enable(true); });
|
||||
@@ -164,82 +164,83 @@ imgurl += "&sizeY=" + (1*sizeY);
|
||||
}
|
||||
}
|
||||
<% } %>
|
||||
// Pinch-to-zoom and pan for the image (always enabled)
|
||||
(function() {
|
||||
var img = document.querySelector('#mobplan img');
|
||||
if (!img) return;
|
||||
var lastScale = 1, scale = 1, lastX = 0, lastY = 0, posX = 0, posY = 0, startX = 0, startY = 0, dragging = false;
|
||||
|
||||
function setTransform() {
|
||||
img.style.transform = "translate(" + posX + "px," + posY + "px) scale(" + scale + ")";
|
||||
}
|
||||
// Pinch-to-zoom and pan for the image (always enabled)
|
||||
$(function () {
|
||||
var img = document.querySelector('#mobplan img');
|
||||
if (!img) return;
|
||||
var lastScale = 1, scale = 1, lastX = 0, lastY = 0, posX = 0, posY = 0, startX = 0, startY = 0, dragging = false;
|
||||
|
||||
img.addEventListener('touchstart', function(e) {
|
||||
if (e.touches.length === 1) {
|
||||
dragging = true;
|
||||
startX = e.touches[0].clientX - lastX;
|
||||
startY = e.touches[0].clientY - lastY;
|
||||
function setTransform() {
|
||||
img.style.transform = "translate(" + posX + "px," + posY + "px) scale(" + scale + ")";
|
||||
}
|
||||
});
|
||||
|
||||
img.addEventListener('touchmove', function(e) {
|
||||
if (e.touches.length === 1 && dragging) {
|
||||
e.preventDefault();
|
||||
posX = e.touches[0].clientX - startX;
|
||||
posY = e.touches[0].clientY - startY;
|
||||
img.addEventListener('touchstart', function(e) {
|
||||
if (e.touches.length === 1) {
|
||||
dragging = true;
|
||||
startX = e.touches[0].clientX - lastX;
|
||||
startY = e.touches[0].clientY - lastY;
|
||||
}
|
||||
});
|
||||
|
||||
img.addEventListener('touchmove', function(e) {
|
||||
if (e.touches.length === 1 && dragging) {
|
||||
e.preventDefault();
|
||||
posX = e.touches[0].clientX - startX;
|
||||
posY = e.touches[0].clientY - startY;
|
||||
lastX = posX;
|
||||
lastY = posY;
|
||||
setTransform();
|
||||
} else if (e.touches.length === 2) {
|
||||
e.preventDefault();
|
||||
dragging = false;
|
||||
var dx = e.touches[0].clientX - e.touches[1].clientX;
|
||||
var dy = e.touches[0].clientY - e.touches[1].clientY;
|
||||
var dist = Math.sqrt(dx*dx + dy*dy);
|
||||
|
||||
if (!img._startDist) {
|
||||
img._startDist = dist;
|
||||
img._startScale = scale;
|
||||
} else {
|
||||
var newScale = img._startScale * (dist / img._startDist);
|
||||
scale = Math.max(1, Math.min(newScale, 5)); // Clamp zoom
|
||||
setTransform();
|
||||
}
|
||||
}
|
||||
}, { passive: false });
|
||||
|
||||
img.addEventListener('touchend', function(e) {
|
||||
dragging = false;
|
||||
img._startDist = null;
|
||||
img._startScale = scale;
|
||||
lastX = posX;
|
||||
lastY = posY;
|
||||
setTransform();
|
||||
} else if (e.touches.length === 2) {
|
||||
e.preventDefault();
|
||||
dragging = false;
|
||||
var dx = e.touches[0].clientX - e.touches[1].clientX;
|
||||
var dy = e.touches[0].clientY - e.touches[1].clientY;
|
||||
var dist = Math.sqrt(dx*dx + dy*dy);
|
||||
});
|
||||
|
||||
if (!img._startDist) {
|
||||
img._startDist = dist;
|
||||
img._startScale = scale;
|
||||
} else {
|
||||
var newScale = img._startScale * (dist / img._startDist);
|
||||
scale = Math.max(1, Math.min(newScale, 5)); // Clamp zoom
|
||||
// Optional: double tap to reset
|
||||
var lastTap = 0;
|
||||
img.addEventListener('touchend', function(e) {
|
||||
var now = new Date().getTime();
|
||||
if (e.touches.length === 0 && now - lastTap < 300) {
|
||||
scale = 1; posX = 0; posY = 0; lastX = 0; lastY = 0;
|
||||
setTransform();
|
||||
}
|
||||
}
|
||||
}, { passive: false });
|
||||
if (e.touches.length > 0) {
|
||||
lastTap = 0;
|
||||
} else {
|
||||
lastTap = now;
|
||||
}
|
||||
});
|
||||
|
||||
img.addEventListener('touchend', function(e) {
|
||||
dragging = false;
|
||||
img._startDist = null;
|
||||
img._startScale = scale;
|
||||
lastX = posX;
|
||||
lastY = posY;
|
||||
});
|
||||
|
||||
// Optional: double tap to reset
|
||||
var lastTap = 0;
|
||||
img.addEventListener('touchend', function(e) {
|
||||
var now = new Date().getTime();
|
||||
if (e.touches.length === 0 && now - lastTap < 300) {
|
||||
scale = 1; posX = 0; posY = 0; lastX = 0; lastY = 0;
|
||||
// Mouse wheel zoom (desktop)
|
||||
img.addEventListener('wheel', function(e) {
|
||||
e.preventDefault();
|
||||
var delta = e.deltaY < 0 ? 1.1 : 0.9;
|
||||
scale = Math.max(1, Math.min(scale * delta, 5));
|
||||
setTransform();
|
||||
}
|
||||
if (e.touches.length > 0) {
|
||||
lastTap = 0;
|
||||
} else {
|
||||
lastTap = now;
|
||||
}
|
||||
});
|
||||
});
|
||||
|
||||
// Mouse wheel zoom (desktop)
|
||||
img.addEventListener('wheel', function(e) {
|
||||
e.preventDefault();
|
||||
var delta = e.deltaY < 0 ? 1.1 : 0.9;
|
||||
scale = Math.max(1, Math.min(scale * delta, 5));
|
||||
setTransform();
|
||||
});
|
||||
})();
|
||||
</script>
|
||||
</script>
|
||||
</head>
|
||||
<body>
|
||||
<%
|
||||
|
||||
@@ -92,7 +92,7 @@ user.auth_required_or_abort(authparams.ALGwritelevel < 9 && authparams.PRSwritel
|
||||
function res_claimwp_callback(json, textStatus)
|
||||
{
|
||||
if (json.success)
|
||||
$("#spanclaimwp").text(L("lcl_flexplek") + " " + "<%=safe.html(res_deel)%>" + " " + L("lcl_flexplekclaimed") + " " + "<%=user.naam()%>" + " " + L("lcl_flexplekclaimfooter"));
|
||||
$("#spanclaimwp").text(L("lcl_flexplek") + " " + "<%=safe.jsstring(res_deel)%>" + " " + L("lcl_flexplekclaimed") + " " + "<%=safe.jsstring(user.naam())%>" + " " + L("lcl_flexplekclaimfooter"));
|
||||
}
|
||||
|
||||
function res_claimwp_submit()
|
||||
|
||||
@@ -101,6 +101,105 @@ imgurl += "&sizeY=" + (1*sizeY);
|
||||
$(this).parent().scrollLeft(($(this).width() - $(this).parent().width()) / 2);
|
||||
$(this).parent().scrollTop(($(this).height() - $(this).parent().height()) / 2);
|
||||
}) // JGL: Waarom? .load();
|
||||
|
||||
var img = document.getElementById('plattegrond-img');
|
||||
var container = document.getElementById('mobplan');
|
||||
var scale = 1, posX = 0, posY = 0, lastX = 0, lastY = 0, startX = 0, startY = 0, dragging = false;
|
||||
|
||||
function clamp(val, min, max) {
|
||||
return Math.max(min, Math.min(max, val));
|
||||
}
|
||||
|
||||
function setTransform() {
|
||||
var cw = container.clientWidth;
|
||||
var ch = container.clientHeight;
|
||||
|
||||
// Compute pan bounds based on container size & scale
|
||||
var minX = -(cw * scale - cw) / 2;
|
||||
var maxX = (cw * scale - cw) / 2;
|
||||
var minY = -(ch * scale - ch) / 2;
|
||||
var maxY = (ch * scale - ch) / 2;
|
||||
|
||||
posX = clamp(posX, minX, maxX);
|
||||
posY = clamp(posY, minY, maxY);
|
||||
|
||||
lastX = posX;
|
||||
lastY = posY;
|
||||
|
||||
img.style.transform = "translate(" + posX + "px," + posY + "px) scale(" + scale + ")";
|
||||
}
|
||||
|
||||
img.addEventListener('load', function() {
|
||||
scale = 1;
|
||||
posX = 0;
|
||||
posY = 0;
|
||||
lastX = 0;
|
||||
lastY = 0;
|
||||
setTransform();
|
||||
});
|
||||
|
||||
img.addEventListener('touchstart', function(e) {
|
||||
if (e.touches.length === 1) {
|
||||
dragging = true;
|
||||
startX = e.touches[0].clientX - lastX;
|
||||
startY = e.touches[0].clientY - lastY;
|
||||
}
|
||||
});
|
||||
|
||||
img.addEventListener('touchmove', function(e) {
|
||||
if (e.touches.length === 1 && dragging) {
|
||||
e.preventDefault();
|
||||
posX = e.touches[0].clientX - startX;
|
||||
posY = e.touches[0].clientY - startY;
|
||||
setTransform();
|
||||
} else if (e.touches.length === 2) {
|
||||
e.preventDefault();
|
||||
dragging = false;
|
||||
var dx = e.touches[0].clientX - e.touches[1].clientX;
|
||||
var dy = e.touches[0].clientY - e.touches[1].clientY;
|
||||
var dist = Math.sqrt(dx*dx + dy*dy);
|
||||
|
||||
if (!img._startDist) {
|
||||
img._startDist = dist;
|
||||
img._startScale = scale;
|
||||
} else {
|
||||
var newScale = img._startScale * (dist / img._startDist);
|
||||
scale = Math.max(1, Math.min(newScale, 5)); // Clamp zoom
|
||||
setTransform();
|
||||
}
|
||||
}
|
||||
}, { passive: false });
|
||||
|
||||
img.addEventListener('touchend', function(e) {
|
||||
dragging = false;
|
||||
img._startDist = null;
|
||||
img._startScale = scale;
|
||||
lastX = posX;
|
||||
lastY = posY;
|
||||
});
|
||||
|
||||
// Optional: double tap to reset
|
||||
var lastTap = 0;
|
||||
img.addEventListener('touchend', function(e) {
|
||||
var now = new Date().getTime();
|
||||
if (e.touches.length === 0 && now - lastTap < 300) {
|
||||
scale = 1; posX = 0; posY = 0; lastX = 0; lastY = 0;
|
||||
setTransform();
|
||||
}
|
||||
if (e.touches.length > 0) {
|
||||
lastTap = 0;
|
||||
} else {
|
||||
lastTap = now;
|
||||
}
|
||||
});
|
||||
|
||||
// Mouse wheel zoom (desktop)
|
||||
img.addEventListener('wheel', function(e) {
|
||||
e.preventDefault();
|
||||
var delta = e.deltaY < 0 ? 1.1 : 0.9;
|
||||
scale = Math.max(1, Math.min(scale * delta, 5));
|
||||
setTransform();
|
||||
});
|
||||
});
|
||||
function process_info(data)
|
||||
{
|
||||
@@ -131,7 +230,6 @@ imgurl += "&sizeY=" + (1*sizeY);
|
||||
<img alt="<%=L("lcl_room_cad")%>" style="height:auto;display:block;margin:0 auto;" src="<%=safe.htmlattr(imgurl)%>" id="plattegrond-img">
|
||||
</div>
|
||||
<%
|
||||
|
||||
// En nu nog de legenda
|
||||
if (thema_key != -1 || themaI_key != -1) {
|
||||
|
||||
@@ -245,7 +343,6 @@ imgurl += "&sizeY=" + (1*sizeY);
|
||||
oRs.Close();
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
CONTENT_END();
|
||||
FOOTER();
|
||||
@@ -253,106 +350,4 @@ imgurl += "&sizeY=" + (1*sizeY);
|
||||
PDA_PAGE_END(); %>
|
||||
</body>
|
||||
</html>
|
||||
<% ASPPAGE_END(); %>
|
||||
<script>
|
||||
(function() {
|
||||
var img = document.getElementById('plattegrond-img');
|
||||
var container = document.getElementById('mobplan');
|
||||
var scale = 1, posX = 0, posY = 0, lastX = 0, lastY = 0, startX = 0, startY = 0, dragging = false;
|
||||
|
||||
function clamp(val, min, max) {
|
||||
return Math.max(min, Math.min(max, val));
|
||||
}
|
||||
|
||||
function setTransform() {
|
||||
var cw = container.clientWidth;
|
||||
var ch = container.clientHeight;
|
||||
|
||||
// Compute pan bounds based on container size & scale
|
||||
var minX = -(cw * scale - cw) / 2;
|
||||
var maxX = (cw * scale - cw) / 2;
|
||||
var minY = -(ch * scale - ch) / 2;
|
||||
var maxY = (ch * scale - ch) / 2;
|
||||
|
||||
posX = clamp(posX, minX, maxX);
|
||||
posY = clamp(posY, minY, maxY);
|
||||
|
||||
lastX = posX;
|
||||
lastY = posY;
|
||||
|
||||
img.style.transform = "translate(" + posX + "px," + posY + "px) scale(" + scale + ")";
|
||||
}
|
||||
|
||||
img.addEventListener('load', function() {
|
||||
scale = 1;
|
||||
posX = 0;
|
||||
posY = 0;
|
||||
lastX = 0;
|
||||
lastY = 0;
|
||||
setTransform();
|
||||
});
|
||||
|
||||
img.addEventListener('touchstart', function(e) {
|
||||
if (e.touches.length === 1) {
|
||||
dragging = true;
|
||||
startX = e.touches[0].clientX - lastX;
|
||||
startY = e.touches[0].clientY - lastY;
|
||||
}
|
||||
});
|
||||
|
||||
img.addEventListener('touchmove', function(e) {
|
||||
if (e.touches.length === 1 && dragging) {
|
||||
e.preventDefault();
|
||||
posX = e.touches[0].clientX - startX;
|
||||
posY = e.touches[0].clientY - startY;
|
||||
setTransform();
|
||||
} else if (e.touches.length === 2) {
|
||||
e.preventDefault();
|
||||
dragging = false;
|
||||
var dx = e.touches[0].clientX - e.touches[1].clientX;
|
||||
var dy = e.touches[0].clientY - e.touches[1].clientY;
|
||||
var dist = Math.sqrt(dx*dx + dy*dy);
|
||||
|
||||
if (!img._startDist) {
|
||||
img._startDist = dist;
|
||||
img._startScale = scale;
|
||||
} else {
|
||||
var newScale = img._startScale * (dist / img._startDist);
|
||||
scale = Math.max(1, Math.min(newScale, 5)); // Clamp zoom
|
||||
setTransform();
|
||||
}
|
||||
}
|
||||
}, { passive: false });
|
||||
|
||||
img.addEventListener('touchend', function(e) {
|
||||
dragging = false;
|
||||
img._startDist = null;
|
||||
img._startScale = scale;
|
||||
lastX = posX;
|
||||
lastY = posY;
|
||||
});
|
||||
|
||||
// Optional: double tap to reset
|
||||
var lastTap = 0;
|
||||
img.addEventListener('touchend', function(e) {
|
||||
var now = new Date().getTime();
|
||||
if (e.touches.length === 0 && now - lastTap < 300) {
|
||||
scale = 1; posX = 0; posY = 0; lastX = 0; lastY = 0;
|
||||
setTransform();
|
||||
}
|
||||
if (e.touches.length > 0) {
|
||||
lastTap = 0;
|
||||
} else {
|
||||
lastTap = now;
|
||||
}
|
||||
});
|
||||
|
||||
// Mouse wheel zoom (desktop)
|
||||
img.addEventListener('wheel', function(e) {
|
||||
e.preventDefault();
|
||||
var delta = e.deltaY < 0 ? 1.1 : 0.9;
|
||||
scale = Math.max(1, Math.min(scale * delta, 5));
|
||||
setTransform();
|
||||
});
|
||||
})();
|
||||
</script>
|
||||
<% ASPPAGE_END(); %>
|
||||
@@ -55,9 +55,31 @@ if (rsv_ruimte_key > -1)
|
||||
// BESTAANDE DEELRESERVERING
|
||||
res.res_set_dialect(rsv_ruimte_key);
|
||||
var this_res = res.func_enabled(rsv_ruimte_key); // Wat heb ik zoal aan rechten op deze specifieke reservering
|
||||
var local_tz = res.getRsvTimezone(rsv_ruimte_key);
|
||||
if (this_res.canChange) {
|
||||
this_res.canChange = local_tz == S("fac_server_timezone");
|
||||
}
|
||||
user.auth_required_or_abort(this_res.canReadAny);
|
||||
|
||||
sql = "SELECT * FROM res_rsv_ruimte WHERE res_rsv_ruimte_key = " + rsv_ruimte_key;
|
||||
sql = "SELECT res_ruimte_opstel_key"
|
||||
+ " , prs_kostenplaats_key"
|
||||
+ " , res_rsv_ruimte_bezoekers"
|
||||
+ " , res_status_fo_key"
|
||||
+ " , res_rsv_ruimte_flag"
|
||||
+ " , res_activiteit_key"
|
||||
+ " , res_reservering_key"
|
||||
+ " , res_rsv_ruimte_volgnr"
|
||||
+ " , res_rsv_ruimte_van"
|
||||
+ " , res_rsv_ruimte_tot"
|
||||
+ " , " + convertToLocalTimeSQL("res_rsv_ruimte_van", local_tz) + " local_van"
|
||||
+ " , " + convertToLocalTimeSQL("res_rsv_ruimte_tot", local_tz) + " local_tot"
|
||||
+ " , res_rsv_ruimte_omschrijving"
|
||||
+ " , res_rsv_ruimte_opmerking"
|
||||
+ " , res_rsv_ruimte_externnr"
|
||||
+ " , res_rsv_ruimte_contact_key"
|
||||
+ " , res_rsv_ruimte_host_key"
|
||||
+ " , mld_opdr_key"
|
||||
+ " FROM res_rsv_ruimte"
|
||||
+ " WHERE res_rsv_ruimte_key = " + rsv_ruimte_key;
|
||||
var oRsR = Oracle.Execute(sql);
|
||||
var rsv = { opstel_key: oRsR("res_ruimte_opstel_key").Value
|
||||
, account: oRsR("prs_kostenplaats_key").Value || -1
|
||||
@@ -70,6 +92,8 @@ if (rsv_ruimte_key > -1)
|
||||
, ruimte_volgnr: oRsR("res_rsv_ruimte_volgnr").Value
|
||||
, ruimte_van: new Date(oRsR("res_rsv_ruimte_van").Value)
|
||||
, ruimte_tot: new Date(oRsR("res_rsv_ruimte_tot").Value)
|
||||
, local_van: new Date(oRsR("local_van").Value)
|
||||
, local_tot: new Date(oRsR("local_tot").Value)
|
||||
, omschrijving: oRsR("res_rsv_ruimte_omschrijving").Value
|
||||
, opmerking: oRsR("res_rsv_ruimte_opmerking").Value
|
||||
, extern_nr: oRsR("res_rsv_ruimte_externnr").Value
|
||||
@@ -982,8 +1006,8 @@ else
|
||||
|
||||
if (fe_lastminute || !this_res.canChange)
|
||||
{
|
||||
ROFIELD("fld", L("lcl_from") , toDateTimeString(rsv.ruimte_van), { });
|
||||
ROFIELD("fld", L("lcl_to") , toDateTimeString(rsv.ruimte_tot), {combine: true});
|
||||
ROFIELD("fld", L("lcl_from") , toDateTimeString(rsv.local_van, { isLocal: true }), { });
|
||||
ROFIELD("fld", L("lcl_to") , toDateTimeString(rsv.local_tot, { isLocal: true }), {combine: true});
|
||||
}
|
||||
else
|
||||
{
|
||||
|
||||
@@ -89,6 +89,12 @@ var zoom = getQParamFloat("zoom", 2);
|
||||
var geb_key = getQParamInt("geb_key", -1);
|
||||
var floor_key = getQParamInt("floor_key", -1);
|
||||
var werkpl_key = getQParamInt("wsp_key", -1);
|
||||
var local_tz = S("fac_server_timezone");
|
||||
if (geb_key > -1) {
|
||||
local_tz = res.getTimezoneBy(geb_key, "G");
|
||||
} else if (floor_key > -1) {
|
||||
local_tz = res.getTimezoneBy(floor_key, "V");
|
||||
}
|
||||
|
||||
var res_deel_key = getQParamInt("res_deel_key", -1); // unused. Zou ooit direct naar dag+intervalselectie kunnen
|
||||
var thema_key = getQParamInt("thema_key", 12);
|
||||
@@ -96,8 +102,10 @@ var themaI_key = getQParamInt("themaI_key", 13);
|
||||
var bordlabel_key= getQParamInt("bordlabel_key", 13);
|
||||
|
||||
var daylimit = getQParamInt("daylimit", 12); // na daylimit kun je voor de eerste dag niet meer reserveren, default 12:00, werkt niet icm offset
|
||||
var afternoon = new Date().getHours() >= daylimit;
|
||||
var dateoffset = getQParamInt("offset", afternoon?1:0); // 12:00 default morgen ipv vandaag
|
||||
var local_now = convertToLocalTime(new Date(), local_tz);
|
||||
var afternoon = local_now.getHours() >= daylimit;
|
||||
var dateoffset = getQParamInt("offset", afternoon ? 1 : 0);
|
||||
|
||||
var datelimit = getQParamInt("limit", 7); // aantal te kiezen dagen tov offset
|
||||
var floorselect = getQParamInt("floorselect", 0); // na gebouw ook de verdiepingen laten kiezen
|
||||
var mapselect = getQParamInt("mapselect", 1) == 1; // werkplek via plattegrond kiezen
|
||||
@@ -171,8 +179,11 @@ var qrc = getQParamInt("qrc", 0) != 0;
|
||||
}
|
||||
function fnFavWP_colSubHeader(oRs)
|
||||
{
|
||||
var result = oRs("alg_gebouw_naam").Value;
|
||||
result += (result ? ", " : "") + oRs("alg_locatie_plaats").Value;
|
||||
var result = oRs("alg_gebouw_naam").Value || "";
|
||||
var alg_locatie_plaats = oRs("alg_locatie_plaats").Value || "";
|
||||
if (alg_locatie_plaats) {
|
||||
result += (result ? ", " : "") + alg_locatie_plaats;
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
@@ -202,7 +213,7 @@ var qrc = getQParamInt("qrc", 0) != 0;
|
||||
}
|
||||
function fnDisciplinecapaciteit(oRs)
|
||||
{
|
||||
return oRs("aantal").Value+" "+oRs("ins_discipline_omschrijving").Value;
|
||||
return oRs("aantal").Value + " " + oRs("ins_discipline_omschrijving").Value;
|
||||
}
|
||||
function fnGebouwIcon(oRs)
|
||||
{
|
||||
@@ -256,6 +267,7 @@ var qrc = getQParamInt("qrc", 0) != 0;
|
||||
var gebouwcapaciteit = aantalitems * dagcapaciteit; // in uren
|
||||
|
||||
sql = rdpt.dagbezetting_resdelen_in_gebouw_sql(res_disc_key_arr, geb_key, -1, dateoffset, datelimit, null); // JGL: act_key
|
||||
|
||||
if (werkpl_key > -1 && resdate == null)
|
||||
{ // Is een eerder gekozen werkplek nog beschikbaar?
|
||||
var sql = "SELECT datum"
|
||||
@@ -307,7 +319,7 @@ var qrc = getQParamInt("qrc", 0) != 0;
|
||||
{ // Een eerder gekozen werkplek.
|
||||
var dt = new Date(oRs("datum").Value);
|
||||
var v_bloktijden = res.getBloktijdenDisc(res_disc_key_arr[0], dt, geb_key);
|
||||
var res_blok = rdpt.getIntervalString(werkpl_key, dt, v_bloktijden);
|
||||
var res_blok = rdpt.getIntervalString(werkpl_key, dt, v_bloktijden, geb_key);
|
||||
if (res_blok == "")
|
||||
txt = L("lcl_niet_beschikbaar");
|
||||
else
|
||||
@@ -417,7 +429,7 @@ var qrc = getQParamInt("qrc", 0) != 0;
|
||||
{
|
||||
var bcls= "";
|
||||
var sql2 = rdpt.dagbezetting_resdelen_in_gebouw_sql(res_disc_key_arr, geb_key, oRs("alg_verdieping_key").value, dateoffset, datelimit, resdate);
|
||||
oRs2 = Oracle.Execute(sql2)
|
||||
oRs2 = Oracle.Execute(sql2);
|
||||
bcls += rdpt.bezettings_class(oRs2("gevuld").value, calc_dagcapaciteit*oRs("aantal").value, minimumbeschikbaarheid*oRs("aantal").value);
|
||||
oRs2.close();
|
||||
return bcls; // te duur
|
||||
@@ -546,7 +558,7 @@ var qrc = getQParamInt("qrc", 0) != 0;
|
||||
|
||||
function fncolSubHeader(oRs)
|
||||
{
|
||||
var res_blok = rdpt.getIntervalString(oRs("res_deel_key").value, resdate, bloktijden);
|
||||
var res_blok = rdpt.getIntervalString(oRs("res_deel_key").value, resdate, bloktijden, geb_key);
|
||||
if (res_blok =="")
|
||||
res_blok = "";//L("lcl_niet_beschikbaar");
|
||||
else
|
||||
|
||||
@@ -57,11 +57,6 @@ FCLTHeader.Requires({ plugins: ["kenmerk"], css: [rooturl+"/appl/res/res.css"] }
|
||||
var isMobile = getQParamInt("ismobile", 0); // Wordt vanuit reservering_new_by_placetime.asp (mobile weergave) op 1 gezet. Vanuit desktop weergave word thet niet gezet.
|
||||
var res_noshowgrace = 5*60*1000 ; // hoeveel milliseconden na aanvang mag je een (lege) bezette ruimte afpakken?
|
||||
var adhoc_threshold = S("res_adhoc_threshold"); // Hoeveel minuten voor het aflopen van de huidige reservering mag je zelf alvast reserveren?
|
||||
// Gebruik de Oracle tijd als startpunt. Van een noshow is de eindtijd op de Oracle TRUNC(SYSDATE, 'MI')
|
||||
// gezet en je komt anders in de de problemen als Oracle een minuut voorloopt
|
||||
var oRs = Oracle.Execute("SELECT TRUNC(SYSDATE, 'MI') FROM DUAL");
|
||||
var now = new Date(oRs(0).Value);
|
||||
oRs.Close();
|
||||
|
||||
var ins_key = getQParamInt("ins_key", -1);
|
||||
var res_ruimte_key = -1;
|
||||
@@ -80,6 +75,9 @@ FCLTHeader.Requires({ plugins: ["kenmerk"], css: [rooturl+"/appl/res/res.css"] }
|
||||
res_van = new Date();
|
||||
}
|
||||
|
||||
var server_tz = S("fac_server_timezone");
|
||||
var local_tz = server_tz;
|
||||
|
||||
var link2res = getQParamInt("link2res", 1);
|
||||
|
||||
if (ins_key != -1 || res_deel_key != -1)
|
||||
@@ -111,9 +109,11 @@ FCLTHeader.Requires({ plugins: ["kenmerk"], css: [rooturl+"/appl/res/res.css"] }
|
||||
oRs = Oracle.Execute(sql);
|
||||
var alg_ruimte_key = oRs("ins_alg_ruimte_key").value;
|
||||
oRs.Close();
|
||||
local_tz = res.getTimezoneByRuimte(alg_ruimte_key, "ALG");
|
||||
}
|
||||
else if (ins_key != -1 /* <- Dit is nooit waar want dan zit je hierboven al in DeelMode */ || res_artikel_key != -1)
|
||||
else if (res_artikel_key != -1)
|
||||
{
|
||||
// UNSUPPORTED; local_tz = ?
|
||||
// ArtikelMode
|
||||
ArtikelMode = true;
|
||||
}
|
||||
@@ -125,9 +125,11 @@ FCLTHeader.Requires({ plugins: ["kenmerk"], css: [rooturl+"/appl/res/res.css"] }
|
||||
if (alg_ruimte_key == -1)
|
||||
{
|
||||
res_ruimte_key = getQParamInt("res_ruimte_key");
|
||||
local_tz = res.getTimezoneByRuimte(res_ruimte_key, "RES");
|
||||
}
|
||||
else
|
||||
{
|
||||
local_tz = res.getTimezoneByRuimte(alg_ruimte_key, "ALG");
|
||||
// Dit moet nog uitgebreid worden zodat het meerdere "enkele_ruimten" in verschillende catalogi kan handelen
|
||||
// voor nu MAX() om AiAi uit te voorkomen
|
||||
var enkele_ruimte = "(SELECT MAX(ra.res_ruimte_key)"
|
||||
@@ -159,6 +161,13 @@ FCLTHeader.Requires({ plugins: ["kenmerk"], css: [rooturl+"/appl/res/res.css"] }
|
||||
var submitting = getQParamInt("submit", 0) == 1;
|
||||
var qrc = getQParamInt("qrc", 0) != 0;
|
||||
|
||||
function toLocalDate(expr) {
|
||||
return convertToLocalTimeSQL(expr, local_tz);
|
||||
}
|
||||
function toServerDate(expr) {
|
||||
return convertToServerTimeSQL(expr, local_tz);
|
||||
}
|
||||
|
||||
var transitParam = buildTransitParam(["res_ruimte_key", "res_deel_key"]);
|
||||
|
||||
if (res_ruimte_key < 0 && res_deel_key < 0 && res_artikel_key < 0)
|
||||
@@ -520,12 +529,16 @@ FCLTHeader.Requires({ plugins: ["kenmerk"], css: [rooturl+"/appl/res/res.css"] }
|
||||
if (RuimteMode) // TODO: DIT HOUDT NOG GEEN REKENING MET KOPPELZALEN!
|
||||
{
|
||||
// Zoek alle bestaande reserveringen op deze ruimte die nog bezig zijn of komen
|
||||
var localResVanExpr = toLocalDate("rm.res_rsv_ruimte_van");
|
||||
var localResTotExpr = toLocalDate("rm.res_rsv_ruimte_tot");
|
||||
sql = "SELECT rm.res_reservering_key,"
|
||||
+ " rm.res_rsv_ruimte_volgnr,"
|
||||
+ " rm.res_rsv_ruimte_key,"
|
||||
+ " rm.res_rsv_ruimte_omschrijving,"
|
||||
+ " res_rsv_ruimte_van,"
|
||||
+ " res_rsv_ruimte_tot,"
|
||||
+ " rm.res_rsv_ruimte_van,"
|
||||
+ " rm.res_rsv_ruimte_tot,"
|
||||
+ " " + localResVanExpr + " AS local_van,"
|
||||
+ " " + localResTotExpr + " AS local_tot,"
|
||||
+ " res_disc_params_preposttime,"
|
||||
+ " (SELECT prs_perslid_naam_friendly FROM prs_v_perslid_fullnames pf WHERE pf.prs_perslid_key = rm.res_rsv_ruimte_host_key) host,"
|
||||
+ " rm.res_rsv_ruimte_host_key host_key,"
|
||||
@@ -535,16 +548,20 @@ FCLTHeader.Requires({ plugins: ["kenmerk"], css: [rooturl+"/appl/res/res.css"] }
|
||||
+ " res_rsv_ruimte rm,"
|
||||
+ " res_ruimte_opstelling ro,"
|
||||
+ " res_ruimte r";
|
||||
if (PlanMode) // wil ik alles van res_van weten
|
||||
{
|
||||
sql +=" WHERE res_rsv_ruimte_van < {0}".format(res_van.endToSQL())
|
||||
+ " AND res_rsv_ruimte_tot > {0}".format(res_van.beginToSQL());
|
||||
}
|
||||
else
|
||||
{
|
||||
sql +=" WHERE res_rsv_ruimte_van BETWEEN TRUNC (SYSDATE) AND TRUNC (SYSDATE) + 1" // Alleen vandaag
|
||||
+ " AND res_rsv_ruimte_tot BETWEEN SYSDATE AND TRUNC (SYSDATE) + 1"; // Alleen lopende en toekomstige reserveringen
|
||||
}
|
||||
if (PlanMode) // wil ik alles van res_van weten
|
||||
{
|
||||
// res_van is de lokale dag (geTRUNC'd dus)
|
||||
var serverResdateRangeStart = toServerDate(res_van.toSQL());
|
||||
var serverResdateRangeEnd = serverResdateRangeStart + " + 1 - (1 / 24 / 60 / 60)";
|
||||
sql += " WHERE rm.res_rsv_ruimte_van < " + serverResdateRangeEnd
|
||||
+ " AND rm.res_rsv_ruimte_tot > " + serverResdateRangeStart;
|
||||
}
|
||||
else // Ad-hoc
|
||||
{
|
||||
var serverResdateRangeEnd = toServerDate("TRUNC(" + toLocalDate("SYSDATE") + ") + 1 - (1 / 24 / 60 / 60)");
|
||||
sql += " WHERE rm.res_rsv_ruimte_van < " + serverResdateRangeEnd
|
||||
+ " AND rm.res_rsv_ruimte_tot > SYSDATE"; // Alleen vandaag en alleen lopende en toekomstige reserveringen
|
||||
}
|
||||
sql += " AND rm.res_ruimte_opstel_key = ro.res_ruimte_opstel_key"
|
||||
+ " AND ro.res_ruimte_key = r.res_ruimte_key"
|
||||
+ " AND r.res_ruimte_key = " + res_ruimte_key
|
||||
@@ -552,30 +569,38 @@ FCLTHeader.Requires({ plugins: ["kenmerk"], css: [rooturl+"/appl/res/res.css"] }
|
||||
+ " AND rm.res_rsv_ruimte_verwijder IS NULL"
|
||||
+ " AND (res_rsv_ruimte_bezoekers_shown IS NULL OR res_rsv_ruimte_bezoekers_shown > 0)" // NoShow?
|
||||
+ " AND rm.res_rsv_ruimte_dirtlevel = 0"
|
||||
+ " ORDER BY rm.res_rsv_ruimte_van"; // Eerste vooraan.
|
||||
+ " ORDER BY res_rsv_ruimte_van"; // Eerste vooraan.
|
||||
} else {
|
||||
var localResVanExpr = toLocalDate("rm.res_rsv_ruimte_van");
|
||||
var localResTotExpr = toLocalDate("rm.res_rsv_ruimte_tot");
|
||||
sql = "SELECT rm.res_reservering_key,"
|
||||
+ " rm.res_rsv_ruimte_volgnr,"
|
||||
+ " rm.res_rsv_ruimte_key,"
|
||||
+ " rm.res_rsv_ruimte_omschrijving,"
|
||||
+ " res_rsv_ruimte_van,"
|
||||
+ " res_rsv_ruimte_tot,"
|
||||
+ " rm.res_rsv_ruimte_van,"
|
||||
+ " rm.res_rsv_ruimte_tot,"
|
||||
+ " " + localResVanExpr + " AS local_van ,"
|
||||
+ " " + localResTotExpr + " AS local_tot ,"
|
||||
+ " 0 res_disc_params_preposttime,"
|
||||
+ " (SELECT prs_perslid_naam_friendly FROM prs_v_perslid_fullnames pf WHERE pf.prs_perslid_key = rm.res_rsv_ruimte_host_key) host,"
|
||||
+ " rm.res_rsv_ruimte_host_key host_key,"
|
||||
+ " rd.res_deel_key"
|
||||
+ " FROM res_rsv_ruimte rm,"
|
||||
+ " res_rsv_deel rd,"
|
||||
+ " res_deel d"
|
||||
+ " res_deel d";
|
||||
if (PlanMode) // wil ik alles van res_van weten
|
||||
{
|
||||
sql +=" WHERE res_rsv_ruimte_van < {0}".format(res_van.endToSQL())
|
||||
+ " AND res_rsv_ruimte_tot > {0}".format(res_van.beginToSQL())
|
||||
// res_van is de lokale dag (geTRUNC'd dus)
|
||||
var serverResdateRangeStart = toServerDate(res_van.toSQL());
|
||||
var serverResdateRangeEnd = serverResdateRangeStart + " + 1 - (1 / 24 / 60 / 60)";
|
||||
sql += " WHERE rm.res_rsv_ruimte_van < " + serverResdateRangeEnd
|
||||
+ " AND rm.res_rsv_ruimte_tot > " + serverResdateRangeStart;
|
||||
}
|
||||
else
|
||||
{
|
||||
sql +=" WHERE res_rsv_ruimte_van BETWEEN TRUNC (SYSDATE) AND TRUNC (SYSDATE) + 1" // Alleen vandaag
|
||||
+ " AND res_rsv_ruimte_tot BETWEEN SYSDATE AND TRUNC (SYSDATE) + 1" // Alleen lopende en toekomstige reserveringen
|
||||
var serverResdateRangeEnd = "SYSDATE + 1 - (1 / 24 / 60 / 60)";
|
||||
sql += " WHERE rm.res_rsv_ruimte_van < " + serverResdateRangeEnd
|
||||
+ " AND rm.res_rsv_ruimte_tot > SYSDATE"; // Alleen vandaag en alleen lopende en toekomstige reserveringen
|
||||
}
|
||||
// sql for check on existing workplace reservations
|
||||
var sql_pers = sql
|
||||
@@ -608,6 +633,11 @@ FCLTHeader.Requires({ plugins: ["kenmerk"], css: [rooturl+"/appl/res/res.css"] }
|
||||
for (var i in periods) // Het zijn altijd strings
|
||||
periods[i] = parseInt(periods[i]);
|
||||
|
||||
// Van een noshow is de eindtijd op de Oracle TRUNC(SYSDATE, 'MI') gezet en je komt anders in de de problemen als Oracle een minuut voorloopt
|
||||
var oRs = Oracle.Execute("SELECT " + toLocalDate("TRUNC(SYSDATE, 'MI')") + " FROM DUAL");
|
||||
var now = new Date(oRs(0).Value);
|
||||
oRs.Close();
|
||||
|
||||
var maxTime = now.setFloatHours(reindtijd);
|
||||
var minuten = now.getHours() * 60 + now.getMinutes();
|
||||
var blokstart = Math.ceil(minuten / (S("res_h")*60)) * S("res_h")*60; // omhoog afgerond op period[0]
|
||||
@@ -645,8 +675,10 @@ FCLTHeader.Requires({ plugins: ["kenmerk"], css: [rooturl+"/appl/res/res.css"] }
|
||||
var oRs = Oracle.Execute( sql );
|
||||
while (!oRs.Eof)
|
||||
{
|
||||
var van = new Date(oRs("res_rsv_ruimte_van").Value);
|
||||
var tot = new Date(oRs("res_rsv_ruimte_tot").Value);
|
||||
var server_van = new Date(oRs("res_rsv_ruimte_van").Value);
|
||||
var server_tot = new Date(oRs("res_rsv_ruimte_tot").Value);
|
||||
var local_van = new Date(oRs("local_van").Value);
|
||||
var local_tot = new Date(oRs("local_tot").Value);
|
||||
|
||||
// Let op: hier wordt voor elk gedefinieerd interval bekeken of deze reservering die bezet, om aan het einde te weten
|
||||
// welke intervallen er dus nog helemaal vrij zijn. Afhankelijk van de gedefinieerde intervallen kan een reservering
|
||||
@@ -654,17 +686,16 @@ FCLTHeader.Requires({ plugins: ["kenmerk"], css: [rooturl+"/appl/res/res.css"] }
|
||||
// dus niet per se iets over hoe lang je reservering duurt.
|
||||
// Ik denk dat ik daarom ook de echte onderliggende van en tot nodig heb, om dat later te kunnen vertellen
|
||||
// zonder weer opnieuw die reserveringen te moeten zoeken
|
||||
|
||||
for (var i = 0; i < bloktijden.length; i++)
|
||||
{
|
||||
if (van < bloktijden[i].einddatum && tot > bloktijden[i].startdatum)
|
||||
if (local_van < bloktijden[i].einddatum && local_tot > bloktijden[i].startdatum)
|
||||
{
|
||||
bloktijden[i].bezet = oRs("host").Value;
|
||||
bloktijden[i].bezet_key = oRs("host_key").Value;
|
||||
bloktijden[i].res_rsv_ruimte_key = oRs("res_rsv_ruimte_key").Value;
|
||||
bloktijden[i].res_reservering_nr = oRs("res_reservering_key").Value+"/"+oRs("res_rsv_ruimte_volgnr").Value;
|
||||
bloktijden[i].resvan = van;
|
||||
bloktijden[i].restot = tot;
|
||||
bloktijden[i].resvan = local_van;
|
||||
bloktijden[i].restot = local_tot;
|
||||
}
|
||||
}
|
||||
oRs.MoveNext();
|
||||
@@ -679,23 +710,25 @@ FCLTHeader.Requires({ plugins: ["kenmerk"], css: [rooturl+"/appl/res/res.css"] }
|
||||
var rsv_omschrijving = oRs("res_rsv_ruimte_omschrijving").Value;
|
||||
var rsv_host = oRs("host").Value;
|
||||
var rsv_ruimte_key = oRs("res_rsv_ruimte_key").Value;
|
||||
var van = new Date(oRs("res_rsv_ruimte_van").Value);
|
||||
var tot = new Date(oRs("res_rsv_ruimte_tot").Value);
|
||||
var server_van = new Date(oRs("res_rsv_ruimte_van").Value);
|
||||
var server_tot = new Date(oRs("res_rsv_ruimte_tot").Value);
|
||||
var local_van = new Date(oRs("local_van").Value);
|
||||
var local_tot = new Date(oRs("local_tot").Value);
|
||||
if (RuimteMode) {
|
||||
var bezoekers_expected = oRs("res_rsv_ruimte_bezoekers").Value;
|
||||
var bezoekers_shown = oRs("res_rsv_ruimte_bezoekers_shown").Value;
|
||||
}
|
||||
var prepost = oRs("res_disc_params_preposttime").Value || 0; // in uren
|
||||
var totMinusThreshold = new Date(tot).setMinutes(tot.getMinutes() - adhoc_threshold);
|
||||
var totMinusThreshold = new Date(local_tot).setMinutes(local_tot.getMinutes() - adhoc_threshold);
|
||||
if (totMinusThreshold <= now) { // Deze afspraak loopt nog, maar ik mag al wel vast boeken
|
||||
now = new Date(tot); // Nieuwe startdatum (niet 'now', maar straks dus)
|
||||
now = new Date(local_tot); // Nieuwe startdatum (niet 'now', maar straks dus)
|
||||
lopendeRes = true;
|
||||
oRs.moveNext(); // Kijk of de volgende afspraak niet blokkeert
|
||||
continue;
|
||||
}
|
||||
var schoonvan = new Date(van);
|
||||
var schoonvan = new Date(local_van);
|
||||
schoonvan.setMinutes(schoonvan.getMinutes() - prepost * 60);
|
||||
if (schoonvan < times[0] && tot > now) { // Bezig of begint binnen schoonmaaktijd
|
||||
if (schoonvan < times[0] && local_tot > now) { // Bezig of begint binnen schoonmaaktijd
|
||||
var nubezet = true;
|
||||
}
|
||||
oRs.moveNext();
|
||||
@@ -833,7 +866,7 @@ FCLTHeader.Requires({ plugins: ["kenmerk"], css: [rooturl+"/appl/res/res.css"] }
|
||||
id: "tot_" + tm,
|
||||
value: "",
|
||||
checked: !timeslotAvailable,
|
||||
label: L("lcl_pda_res_ruimtereserveer").format(toTimeString(times[tm])),
|
||||
label: L("lcl_pda_res_ruimtereserveer").format(toTimeString(times[tm], { isLocal: true })),
|
||||
data: {
|
||||
van: now.getTime(),
|
||||
tot: times[tm].getTime()
|
||||
@@ -850,8 +883,8 @@ FCLTHeader.Requires({ plugins: ["kenmerk"], css: [rooturl+"/appl/res/res.css"] }
|
||||
|
||||
var myres_rsv_ruimte_key = getQParamInt("res_rsv_ruimte_key", -1);
|
||||
if (myres_rsv_ruimte_key > 0) { // Altijd?
|
||||
sql_vt = "SELECT res_rsv_ruimte_van"
|
||||
+ " , res_rsv_ruimte_tot"
|
||||
sql_vt = "SELECT " + toLocalDate("res_rsv_ruimte_van") + " res_rsv_ruimte_van"
|
||||
+ " , " + toLocalDate("res_rsv_ruimte_tot") + " res_rsv_ruimte_tot"
|
||||
+ " , res_reservering_key"
|
||||
+ " , res_rsv_ruimte_volgnr"
|
||||
+ " FROM res_rsv_ruimte"
|
||||
@@ -867,9 +900,9 @@ FCLTHeader.Requires({ plugins: ["kenmerk"], css: [rooturl+"/appl/res/res.css"] }
|
||||
|
||||
if (myres) { // Als we niet zojuist hebben gereserveerd (!submitting), laat dan al je eigen reserveringen zien (if any)
|
||||
Response.write("<div class='modconfirm'>"+L("lcl_res_deel_planmode_confirm").format((RuimteMode ? safe.html(res_ruimte_nr) : safe.html(res_deel_omschrijving)),
|
||||
toDateString(res_van, true, false),
|
||||
toTimeString(mystart),
|
||||
toTimeString(myend),
|
||||
toDateString(res_van, { noDay: true, isLocal: true }),
|
||||
toTimeString(mystart, { isLocal: true }),
|
||||
toTimeString(myend, { isLocal: true }),
|
||||
myres_reservering_nrs.join(", "),
|
||||
rooturl + "/?u=reservering&k=" + myres_rsv_ruimte_key) + "</div>");
|
||||
}
|
||||
@@ -888,8 +921,10 @@ FCLTHeader.Requires({ plugins: ["kenmerk"], css: [rooturl+"/appl/res/res.css"] }
|
||||
var oRs_pers = Oracle.Execute( RuimteMode ? sql : sql_pers );
|
||||
while (!oRs_pers.Eof)
|
||||
{
|
||||
var van = new Date(oRs_pers("res_rsv_ruimte_van").Value);
|
||||
var tot = new Date(oRs_pers("res_rsv_ruimte_tot").Value);
|
||||
var server_van = new Date(oRs_pers("res_rsv_ruimte_van").Value);
|
||||
var server_tot = new Date(oRs_pers("res_rsv_ruimte_tot").Value);
|
||||
var local_van = new Date(oRs_pers("local_van").Value);
|
||||
var local_tot = new Date(oRs_pers("local_tot").Value);
|
||||
%>
|
||||
res_pers["<%=user_key%>"].push({
|
||||
bezet: "<%=safe.jsstring(oRs_pers("host").Value)%>",
|
||||
@@ -897,8 +932,8 @@ FCLTHeader.Requires({ plugins: ["kenmerk"], css: [rooturl+"/appl/res/res.css"] }
|
||||
res_deel_key: <%=(RuimteMode ? "null" : oRs_pers("res_deel_key").Value)%>,
|
||||
res_rsv_ruimte_key: <%=oRs_pers("res_rsv_ruimte_key").Value%>,
|
||||
res_reservering_nr: "<%=oRs_pers("res_reservering_key").Value + "/" + oRs_pers("res_rsv_ruimte_volgnr").Value%>",
|
||||
resvan: new Date(<%=van.getTime()%>),
|
||||
restot: new Date(<%=tot.getTime()%>)
|
||||
resvan_ms: <%=local_van.getTime()%>,
|
||||
restot_ms: <%=local_tot.getTime()%>
|
||||
});
|
||||
<%
|
||||
oRs_pers.MoveNext();
|
||||
@@ -918,20 +953,16 @@ FCLTHeader.Requires({ plugins: ["kenmerk"], css: [rooturl+"/appl/res/res.css"] }
|
||||
data,
|
||||
FcltCallbackAndThen((json) => {
|
||||
res_pers[prs_key] = json.rsv;
|
||||
res_pers[prs_key].resvan = new Date(res_pers[prs_key].resvan);
|
||||
res_pers[prs_key].restot = new Date(res_pers[prs_key].restot);
|
||||
}), "json");
|
||||
}
|
||||
|
||||
var _from = new Date(from);
|
||||
var _to = new Date(to);
|
||||
var return_doubles = [];
|
||||
var index = 0;
|
||||
if (!(prs_key in res_pers)) {
|
||||
return false;
|
||||
}
|
||||
for (index = 0; index < res_pers[prs_key].length; index++) {
|
||||
if ((_from >= res_pers[prs_key][index].restot || _to <= res_pers[prs_key][index].resvan) == false) {
|
||||
if (from < res_pers[prs_key][index].restot_ms && to > res_pers[prs_key][index].resvan_ms) {
|
||||
return_doubles.push(res_pers[prs_key][index]);
|
||||
}
|
||||
}
|
||||
@@ -953,11 +984,11 @@ FCLTHeader.Requires({ plugins: ["kenmerk"], css: [rooturl+"/appl/res/res.css"] }
|
||||
// Dit is eigenlijk niet relevant voor een normale gebruiker
|
||||
// maar voor een eventuele noshow wel!
|
||||
// KFNS#35010: ook tonen als het toch geen geheim is
|
||||
if (user.checkAutorisation( "WEB_RESNOS", true) || (planbordTooltipShowing(rsv_ruimte_key) == 0)) {
|
||||
if (user.checkAutorisation("WEB_RESNOS", true) || (planbordTooltipShowing(rsv_ruimte_key) == 0)) {
|
||||
if (!times.length) {
|
||||
Response.write("<span class='bezetinfo'>" + I("fa-ban fa-xl") + " " + L("lcl_mobile_none_beschik") + "</span>");
|
||||
} else if (van) {
|
||||
Response.write("<span class='bezetinfo'>"+toTimeString(van)+" - "+toTimeString(tot)+": "+ safe.html(rsv_omschrijving)+"/"+safe.html(rsv_host)+"</span>");
|
||||
} else if (local_van) {
|
||||
Response.write("<span class='bezetinfo'>"+toTimeString(local_van, { isLocal: true })+" - "+toTimeString(local_tot, { isLocal: true })+": "+ safe.html(rsv_omschrijving)+"/"+safe.html(rsv_host)+"</span>");
|
||||
}
|
||||
}
|
||||
%></div><%
|
||||
@@ -968,7 +999,7 @@ FCLTHeader.Requires({ plugins: ["kenmerk"], css: [rooturl+"/appl/res/res.css"] }
|
||||
%><div class="cvrij"><%
|
||||
Response.write("<div class='vrij'>"+safe.html(RuimteMode ? res_ruimte_nr : res_deel_omschrijving)+"</div>")
|
||||
%></div><%
|
||||
van = null; // er is geen eerstvolgende in de weg
|
||||
local_van = null; // er is geen eerstvolgende in de weg
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1001,7 +1032,7 @@ FCLTHeader.Requires({ plugins: ["kenmerk"], css: [rooturl+"/appl/res/res.css"] }
|
||||
if (!submitting && timeslot_radios.length)
|
||||
{
|
||||
if (timeslotAvailable) {
|
||||
Response.write("<div class='modhint text-center'>"+L("lcl_res_deel_planmode_hint" + (submitting ? "2" : "1")).format(toDateString(res_van, false, false).toLowerCase(), res_deel_opmerking||"")+"</div>");
|
||||
Response.write("<div class='modhint text-center'>"+L("lcl_res_deel_planmode_hint" + (submitting ? "2" : "1")).format(toDateString(res_van, { isLocal: true }).toLowerCase(), res_deel_opmerking||"")+"</div>");
|
||||
}
|
||||
CONTROLGROUP_START({ id: "bloktijden" });
|
||||
RADIO_GROUP("timeslots", timeslot_radios, { big: true });
|
||||
@@ -1017,7 +1048,7 @@ FCLTHeader.Requires({ plugins: ["kenmerk"], css: [rooturl+"/appl/res/res.css"] }
|
||||
CONTROLGROUP_END();
|
||||
}
|
||||
|
||||
if (nubezet && now - van > res_noshowgrace
|
||||
if (nubezet && now - local_van > res_noshowgrace
|
||||
&& res_noshowgrace > -1 /* EN minstens res_noshowgrace na aanvang */
|
||||
&& !DeelMode // ondersteunen we (nog) niet
|
||||
&& user.checkAutorisation( "WEB_RESNOS", true))
|
||||
@@ -1119,18 +1150,18 @@ FCLTHeader.Requires({ plugins: ["kenmerk"], css: [rooturl+"/appl/res/res.css"] }
|
||||
<div class="next-res-title"><%=L("lcl_mobile_rsv_next")%></div>
|
||||
<div class="next-res-descr"><%=L("lcl_none")%></div>
|
||||
<% } else {
|
||||
var van = schoonvan || van;
|
||||
var isToday = !PlanMode || new Date().midnight().getTime() === new Date(van).midnight().getTime();
|
||||
var van = isToday ? toTimeString(van, false, true) : toDateTimeString(van, false, true, false, true);
|
||||
var tot = isToday ? toTimeString(tot, false, true) : toDateTimeString(tot, false, true, false, true);
|
||||
var local_van = schoonvan || local_van;
|
||||
var isToday = !PlanMode || new Date().midnight().getTime() === new Date(local_van).midnight().getTime();
|
||||
var local_van = isToday ? toTimeString(local_van, { isLocal: true }) : toDateTimeString(local_van, { noDay: true, noMidnight: true, isLocal: true });
|
||||
var local_tot = isToday ? toTimeString(local_tot, { isLocal: true }) : toDateTimeString(local_tot, { noDay: true, noMidnight: true, isLocal: true });
|
||||
if (nubezet || lopendeRes) {
|
||||
if (lopendeRes) { %>
|
||||
<div class="next-res-title"><%=I("fa-exclamation-triangle")%></div>
|
||||
<% } %>
|
||||
<div class="next-res-descr"><%=L("lcl_mobile_ruimtebezet").format(tot)%></div>
|
||||
<div class="next-res-descr"><%=L("lcl_mobile_ruimtebezet").format(local_tot)%></div>
|
||||
<% } else if (!myres) { %>
|
||||
<div class="next-res-title"><%=L("lcl_mobile_rsv_next")%></div>
|
||||
<div class="next-res-descr"><%=van%> tot <%=tot%></div>
|
||||
<div class="next-res-descr"><%=local_van%> tot <%=local_tot%></div>
|
||||
<% }
|
||||
}
|
||||
}
|
||||
|
||||
@@ -204,8 +204,8 @@ oRs.Close();
|
||||
toRs = Oracle.Execute(tsql);
|
||||
if (toRs(0).value == 1) { // eentje slechts, dan naar de details; max is vanzelfsprekend die ene
|
||||
BUTTON(L("lcl_mobile_objecten")+" (1)", {linkid: "./ins_deel.asp?ins_key="+toRs(1).value + transitParam, icon: "fa-info" });
|
||||
} else if (toRs(0).value > 0) { // meerdere, dan naar lijst
|
||||
BUTTON(L("lcl_mobile_objecten")+" ("+toRs(0).value+")", {linkid: "./ins_list.asp?ruimte_key="+ruimte_key +"&plaatsfilter=0" + transitParam, icon: "fa-info"});
|
||||
} else if (toRs(0).value > 0) { // meerdere, dan naar lijst, en onderdruk persoons-afdelings-terrein objecten.
|
||||
BUTTON(L("lcl_mobile_objecten")+" ("+toRs(0).value+")", {linkid: "./ins_list.asp?ruimte_key="+ruimte_key +"&plaatsfilter=0&p=0&a=0&t=0" + transitParam, icon: "fa-info"});
|
||||
}
|
||||
toRs.Close();
|
||||
}
|
||||
|
||||
@@ -376,7 +376,6 @@ if (!submitting)
|
||||
FCLTselector( "wplx"
|
||||
, similarWP_sql
|
||||
, { label: L("lcl_workplace")
|
||||
, emptyOption: L("lcl_select_werkplek")
|
||||
, required: true
|
||||
, mobile: true
|
||||
}
|
||||
|
||||
@@ -301,7 +301,9 @@ BLOCK_START("prsPerslid", L("lcl_prs_basisblok"), {buttons: btns, icon: "fa-id-c
|
||||
RWFIELDTR("prs_oslog2", "fld", L("lcl_prs_person_login2"), prs_oslog2, {maxlength: 256});
|
||||
}
|
||||
}
|
||||
ROFIELDTR("fld", L("prs_perslid_inactief"), toDateTimeString(prs_inactief_datum), {suppressEmpty: true});
|
||||
if (prs_key > -1) {
|
||||
ROFIELDTR("fld", L("prs_perslid_inactief"), toDateTimeString(prs_inactief_datum), {suppressEmpty: true});
|
||||
}
|
||||
if (prsauthparams.writesys)
|
||||
RWTEXTAREATR("prs_opm", "fldtxt", L("lcl_prs_person_opmerking"), prs_opm, {maxlength: 320});
|
||||
else
|
||||
|
||||
@@ -25,16 +25,32 @@ user.auth_required_or_abort(prsauthparams.writeman || prsauthparams.writeuse ||
|
||||
var prs_user = new Perslid(prs_key);
|
||||
user.auth_required_or_abort(!prs_user.has("WEB_FACFAC") || user.has("WEB_FACFAC")); // WEB_FACFAC alleen als je het zelf ook hebt
|
||||
|
||||
var result = {};
|
||||
|
||||
var prs_tz = getFParam("prs_tz", "");
|
||||
|
||||
if (prs_tz != "")
|
||||
{
|
||||
var sql = "SELECT '' FROM V$TIMEZONE_NAMES"
|
||||
+ " WHERE tzname = " + safe.quoted_sql(prs_tz); // Case-sensitive
|
||||
+ " WHERE tzname = " + safe.quoted_sql(prs_tz) // Case-sensitive
|
||||
+ " AND tzname NOT LIKE '%GMT%'" // Conform timezoneselector.inc
|
||||
+ " AND ("
|
||||
+ " tzname LIKE 'Europe/%' OR"
|
||||
+ " tzname LIKE 'America/%' OR"
|
||||
+ " tzname LIKE 'Asia/%' OR"
|
||||
+ " tzname LIKE 'Australia/%' OR"
|
||||
+ " tzname LIKE 'Africa/%' OR"
|
||||
+ " tzname LIKE 'Pacific/%'"
|
||||
+ " )";
|
||||
|
||||
var oRs = Oracle.Execute(sql);
|
||||
if (oRs.EoF)
|
||||
shared.internal_error("timezone (" + safe.html(prs_tz) + ") not found.");
|
||||
if (oRs.EoF) {
|
||||
result.success = false;
|
||||
result.warning = "Could not recognize timezone " + safe.html(prs_tz);
|
||||
Response.Write(JSON.stringify(result));
|
||||
ASPPAGE_END();
|
||||
Response.End;
|
||||
}
|
||||
oRs.Close();
|
||||
}
|
||||
|
||||
@@ -251,10 +267,10 @@ if (!custfunc.prs_postsave(prs_key, pResult))
|
||||
abort_with_warning(pResult.errmsg);
|
||||
}
|
||||
|
||||
|
||||
result = { success: true
|
||||
, prs_key: prs_key
|
||||
};
|
||||
result = {
|
||||
success: true,
|
||||
prs_key: prs_key
|
||||
};
|
||||
Response.Write(JSON.stringify(result));
|
||||
ASPPAGE_END();
|
||||
%>
|
||||
<% ASPPAGE_END(); %>
|
||||
|
||||
@@ -213,7 +213,7 @@ function perslid_list(pautfunction, params)
|
||||
+ " FROM prs_kostenplaats kp"
|
||||
+ " WHERE kp.prs_kostenplaats_key = COALESCE(p.prs_kostenplaats_key, d.prs_kostenplaats_key)"
|
||||
+ " ) prs_kostenplaats_nr"
|
||||
+ " , (SELECT prs_perslid_naam_friendly FROM prs_v_perslid_fullnames_all pf WHERE pf.prs_perslid_key = d.prs_perslid_key_verantw) prs_perslid_verantw"
|
||||
+ " , (SELECT prs_perslid_naam_friendly FROM prs_v_perslid_fullnames_all pf WHERE pf.prs_perslid_key = p.prs_perslid_key_verantw) prs_perslid_verantw"
|
||||
+ (anyflex
|
||||
? ", (SELECT LISTAGG("
|
||||
+ (multiflex ? lcl.xsql("k.prs_kenmerk_omschrijving", "k.prs_kenmerk_key")
|
||||
|
||||
@@ -458,6 +458,11 @@ var met_foto = getQParam("pb_photo","off")=="on";
|
||||
switch (mode)
|
||||
{
|
||||
case 1: // personen
|
||||
if (S("prs_phonebook_maxresults") > 0)
|
||||
{
|
||||
settings.overrule_setting("qp_maxrows", S("prs_phonebook_maxresults"))
|
||||
settings.overrule_setting("qp_maxrows2", S("prs_phonebook_maxresults"))
|
||||
}
|
||||
var canBookmarkf = user.func_enabled("FAC", null, null, null, null, true); // laatste true: isOptional
|
||||
var canBookmark = canBookmarkf && canBookmarkf.canRead("WEB_HLPADM");
|
||||
var rst = new ResultsetTable({ keyColumn: "prs_perslid_key",
|
||||
@@ -472,7 +477,8 @@ var met_foto = getQParam("pb_photo","off")=="on";
|
||||
title: L("lcl_search_pers"),
|
||||
showAll: showall,
|
||||
canBookmark: canBookmark,
|
||||
auditcount: 1
|
||||
noExcel: S("prs_phonebook_maxresults") > 0, // dan ook geen Excel
|
||||
auditcount: S("prs_phonebook_audit_floor") // default auditen we als meer dan 10 resultaten
|
||||
});
|
||||
|
||||
var dofotos = met_foto && outputmode==0 && !showall;
|
||||
|
||||
@@ -329,6 +329,45 @@ res = {
|
||||
return alg_tz;
|
||||
},
|
||||
|
||||
getTimezoneBy: function _getTimezoneBy(alg_key, level) {
|
||||
// level ? ["R", "V", "G", "L"]
|
||||
var sql;
|
||||
switch (level) {
|
||||
case "L":
|
||||
sql = "SELECT l.alg_locatie_timezone"
|
||||
+ " FROM alg_locatie l"
|
||||
+ " WHERE l.alg_locatie_key = " + alg_key;
|
||||
break;
|
||||
|
||||
case "G":
|
||||
sql = "SELECT l.alg_locatie_timezone"
|
||||
+ " FROM alg_locatie l, alg_gebouw g"
|
||||
+ " WHERE g.alg_gebouw_key = " + alg_key
|
||||
+ " AND g.alg_locatie_key = l.alg_locatie_key";
|
||||
break;
|
||||
|
||||
case "V":
|
||||
sql = "SELECT l.alg_locatie_timezone"
|
||||
+ " FROM alg_locatie l, alg_gebouw g, alg_verdieping v"
|
||||
+ " WHERE v.alg_verdieping_key = " + alg_key
|
||||
+ " AND v.alg_gebouw_key = g.alg_gebouw_key"
|
||||
+ " AND g.alg_locatie_key = l.alg_locatie_key";
|
||||
break;
|
||||
|
||||
case "R":
|
||||
return res.getTimezoneByRuimte(alg_key, "ALG");
|
||||
|
||||
default:
|
||||
throw new Error("Invalid level: " + level);
|
||||
}
|
||||
|
||||
var oRs = Oracle.Execute(sql);
|
||||
var alg_tz = !oRs.EOF && oRs("alg_locatie_timezone").Value
|
||||
|| S("fac_server_timezone");
|
||||
oRs.Close();
|
||||
return alg_tz;
|
||||
},
|
||||
|
||||
res_ruimte_info: function _res_ruimte(res_ruimte_key)
|
||||
{
|
||||
var result = { res_ruimte_key: res_ruimte_key,
|
||||
@@ -1192,6 +1231,7 @@ res = {
|
||||
}
|
||||
);
|
||||
roRs.Close();
|
||||
|
||||
// earliest_expire_change en earliest_expire_cancel hebben zeker een goede waarde van de ruimte discipline (startdatum 1/1/1000 is vervangen).
|
||||
rresult.earliest_expire_change = earliest_expire_change;
|
||||
rresult.earliest_expire_cancel = earliest_expire_cancel;
|
||||
@@ -1837,6 +1877,7 @@ res = {
|
||||
+ " AND rdp.res_ins_discipline_key = rg.res_discipline_key "
|
||||
+ " AND (fr.res_ruimte_startdatum IS NULL OR fr.res_ruimte_startdatum <= " + ora_date2 + ")"
|
||||
+ " AND (fr.res_ruimte_vervaldatum IS NULL OR fr.res_ruimte_vervaldatum > " + ora_date1 + ")"
|
||||
+ " AND COALESCE(l.alg_locatie_timezone, " + safe.quoted_sql(S("fac_server_timezone")) + ") = " + safe.quoted_sql(S("fac_server_timezone"))
|
||||
+ sql_loc_where
|
||||
+ (params.max_rooms ? " AND ROWNUM <= " + params.max_rooms : "");
|
||||
|
||||
@@ -2542,8 +2583,7 @@ res = {
|
||||
getBloktijden: function(p_act_key, p_res_disc_key, p_resdate, p_geb_key)
|
||||
{
|
||||
var bloktijden = ((p_act_key && p_act_key > -1) ? res.getBloktijdenAct(p_act_key, p_resdate, p_geb_key) : []);
|
||||
if (bloktijden.length == 0)
|
||||
{
|
||||
if (bloktijden.length == 0) {
|
||||
bloktijden = res.getBloktijdenDisc(p_res_disc_key, p_resdate, p_geb_key);
|
||||
}
|
||||
return bloktijden;
|
||||
@@ -2564,7 +2604,7 @@ res = {
|
||||
bloktijden = JSON.parse(oRs("res_disc_params_intervals").Value);
|
||||
oRs.close();
|
||||
|
||||
bloktijden = res.set_bloktijdenopdatum(bloktijden, p_resdate, p_geb_key)
|
||||
bloktijden = res.set_bloktijdenopdatum(bloktijden, p_resdate, p_geb_key);
|
||||
|
||||
return bloktijden;
|
||||
},
|
||||
|
||||
@@ -103,6 +103,8 @@ if (!local_date_from)
|
||||
server_date_to = new Date(oRs("res_rsv_ruimte_tot").Value);
|
||||
local_tz = res.getRsvTimezone(rsv_ruimte_key);
|
||||
oRs.Close();
|
||||
local_date_from = convertToLocalTime(server_date_from, local_tz);
|
||||
local_date_to = convertToLocalTime(server_date_to, local_tz);
|
||||
}
|
||||
else
|
||||
{
|
||||
@@ -522,8 +524,8 @@ if (master_act_key > 0) // we zouden kunnen controleren of master_key wijst naar
|
||||
|
||||
if (!rsv_ruimte_externnr || (S("msgraph_sync_level") & 6)) // Begin- en enddatum van reserveringen die extern (via Exchange) zijn gemaakt niet aanpassen, tenzij ReadWrite koppeling
|
||||
{
|
||||
fields.push({ dbs: "res_rsv_ruimte_van", typ: "datetime", val: server_date_from, track: (restype=="CV"? L("lcl_res_starttime_CV") : L("lcl_res_starttime")) });
|
||||
fields.push({ dbs: "res_rsv_ruimte_tot", typ: "datetime", val: server_date_to, track: (restype=="CV"? L("lcl_res_endtime_CV") : L("lcl_res_endtime")) });
|
||||
fields.push({ dbs: "res_rsv_ruimte_van", typ: "datetime", val: server_date_from, track: (restype=="CV"? L("lcl_res_starttime_CV") : L("lcl_res_starttime")), track_in_tz: local_tz });
|
||||
fields.push({ dbs: "res_rsv_ruimte_tot", typ: "datetime", val: server_date_to, track: (restype=="CV"? L("lcl_res_endtime_CV") : L("lcl_res_endtime")), track_in_tz: local_tz });
|
||||
fields.push({ dbs: "res_rsv_ruimte_omschrijving", typ: "varchar", frm: "descript", track: L("lcl_descr") });
|
||||
fields.push({ dbs: "res_rsv_ruimte_opmerking", typ: "varchar", frm: "opmerk", track: L("lcl_remark"), len: 2000 });
|
||||
}
|
||||
|
||||
@@ -194,6 +194,14 @@ function res_list (pautfunction, params)
|
||||
}
|
||||
}
|
||||
|
||||
var sql_tz = "SELECT ''"
|
||||
+ " FROM alg_locatie"
|
||||
+ " WHERE alg_locatie_timezone IS NOT NULL"
|
||||
+ " AND alg_locatie_timezone <> " + safe.quoted_sql(S("fac_server_timezone"));
|
||||
var oRs_tz = Oracle.Execute(sql_tz);
|
||||
var any_tz = !oRs_tz.EOF;
|
||||
oRs_tz.Close();
|
||||
|
||||
// Berekenen is duur en niet altijd nodig
|
||||
var withprices = (groupres == 4
|
||||
|| groupres == 5
|
||||
@@ -771,6 +779,12 @@ function res_list (pautfunction, params)
|
||||
+ ", NULL ins_discipline_key"
|
||||
: " , res_geg.ins_srtdeel_uitleenbaar"
|
||||
+ ", res_geg.ins_discipline_key");
|
||||
if (any_tz) {
|
||||
sql_select += ", DECODE(l.alg_locatie_timezone"
|
||||
+ " , " + safe.quoted_sql(S("fac_server_timezone")) + ", NULL"
|
||||
+ " , NULL, NULL"
|
||||
+ " , l.alg_locatie_timezone) alg_locatie_timezone";
|
||||
}
|
||||
|
||||
var sql_select_obj_restype_O = sql_select
|
||||
+ ", NULL alg_district_key"
|
||||
|
||||
@@ -952,8 +952,9 @@ function make_plan_obj(disc_key, res_van, res_tot, params)
|
||||
{
|
||||
return $("div.grid > div.body div.labelgrid[data-disc=<%=disc_key%>].res_nofit").filter(":" + (visible ? "visible":"hidden")).each(function() {
|
||||
var $this = $(this);
|
||||
var show = $this.is(":visible") == false;
|
||||
$("div[data-row=" + $this.attr("data-row") + "]").toggle(show);
|
||||
var show = $this.is(":visible") == false;
|
||||
var rowNr = $this.data("row");
|
||||
$this.closest(".grid").find("div[data-row=" + rowNr + "]").toggle(show);
|
||||
});
|
||||
}
|
||||
toggleNoFit<%=disc_key%>(true);
|
||||
|
||||
@@ -757,7 +757,14 @@ if (options.length > 1) {
|
||||
}
|
||||
|
||||
var buttons = [];
|
||||
if (this_res.couldCreate)
|
||||
|
||||
var multi_tz = Session("time_zone") != S("fac_server_timezone"); // Hebben we te maken met een ruimte, gebruiker of server in een afwijkende tijdszone?
|
||||
if (!multi_tz) {
|
||||
var rsv_timezone = res.getRsvTimezone(rsv_ruimte_key);
|
||||
multi_tz = rsv_timezone != Session("time_zone");
|
||||
}
|
||||
|
||||
if (!multi_tz && this_res.couldCreate)
|
||||
{
|
||||
buttons.push( {id: "repeatbutton", title: L("lcl_res_add_deelres"), icon: "fa-clone", action: "makeMulti()" } );
|
||||
if (restype == "R")
|
||||
@@ -765,7 +772,7 @@ if (options.length > 1) {
|
||||
if (restype == "CV") // en O??
|
||||
buttons.push( {id: "addpartresbutton", title: L("lcl_res_add_deelresreservering"), icon: "fa-layer-plus", action: "ruimteErbij('" + restype + "')" } );
|
||||
}
|
||||
if (multiDeel && this_res.couldCreate)
|
||||
if (!multi_tz && multiDeel && this_res.couldCreate)
|
||||
{
|
||||
buttons.push({ title: L("lcl_res_multiple_save"), icon: "fa-copy", action: "MultiSave()" });
|
||||
buttons.push({ icon: "fa-print", title: L("lcl_print"), action: "res_print()" });
|
||||
|
||||
@@ -117,8 +117,15 @@ for (var func in xfunc._funcodes) {
|
||||
}
|
||||
}
|
||||
|
||||
var geb_key = getQParamInt("geb_key", -1);
|
||||
var floor_key = getQParamInt("floor_key", -1);
|
||||
var geb_key = getQParamInt("geb_key", -1);
|
||||
var floor_key = getQParamInt("floor_key", -1);
|
||||
var local_tz = S("fac_server_timezone");
|
||||
if (geb_key > -1) {
|
||||
local_tz = res.getTimezoneBy(geb_key, "G");
|
||||
} else if (floor_key > -1) {
|
||||
local_tz = res.getTimezoneBy(floor_key, "V");
|
||||
}
|
||||
|
||||
var avail_flrs = getQParamIntArray("avail_flrs", []);
|
||||
var res_deel_key = getQParamInt("wsp_key", -1);
|
||||
var showAll = getQParamInt("showall", 0) == 1;
|
||||
@@ -126,8 +133,10 @@ var showAll = getQParamInt("showall", 0) == 1;
|
||||
var fac_usrrap_key = getQParamInt("usrrap_key", -1); // wordt doorgegeven naar het infobord
|
||||
|
||||
var daylimit = getQParamInt("daylimit", 12); // na daylimit kun je voor de eerste dag niet meer reserveren, default 12:00, werkt niet icm offset
|
||||
var afternoon = new Date().getHours() >= daylimit;
|
||||
var dateoffset = getQParamInt("offset", afternoon?1:0); //
|
||||
var local_now = convertToLocalTime(new Date(), local_tz);
|
||||
var afternoon = local_now.getHours() >= daylimit;
|
||||
var dateoffset = getQParamInt("offset", afternoon ? 1 : 0);
|
||||
|
||||
var datelimit = getQParamInt("limit", 7); // aantal te kiezen dagen tov offset
|
||||
var selectmode = getQParamInt("selectmode", 0); // kiezen van het item: 0=automatisch bepalen (tekening anders lijst), 1=lijst, 2=2dtekening indien aanwezig, 3=3dtekening indien aanwezig
|
||||
var fotos = getQParamInt("fotos", 1); // for selectmode 1: show photo or not
|
||||
@@ -377,7 +386,7 @@ transitParam2 += "&startpage=" + startpage;
|
||||
break;
|
||||
case "day": titel = L("lcl_beschikbaarheid_by_day").format(safe.html(params.bld),safe.html(params.disc));
|
||||
break;
|
||||
case "flr": titel = L("lcl_beschikbaarheid_by_flr").format(safe.html(params.disc),safe.html(params.bld),toDateString(params.resdate).toLowerCase());
|
||||
case "flr": titel = L("lcl_beschikbaarheid_by_flr").format(safe.html(params.disc),safe.html(params.bld),toDateString(params.resdate, { isLocal: true }).toLowerCase());
|
||||
break;
|
||||
}
|
||||
Response.write("<h3><a>" + titel + "</a></h3/>");
|
||||
@@ -516,15 +525,16 @@ transitParam2 += "&startpage=" + startpage;
|
||||
%>
|
||||
<div id='accordion'>
|
||||
<%
|
||||
sql = "SELECT g.alg_gebouw_werkdagen, alg_gebouw_naam "
|
||||
+ " FROM alg_gebouw g"
|
||||
+ " WHERE g.alg_gebouw_key = " + geb_key;
|
||||
sql = "SELECT g.alg_gebouw_werkdagen, "
|
||||
+ " g.alg_gebouw_naam"
|
||||
+ " FROM alg_gebouw g "
|
||||
+ " WHERE g.alg_gebouw_key = " + geb_key;
|
||||
oRs = Oracle.Execute(sql)
|
||||
var werkdagen = oRs("alg_gebouw_werkdagen").Value;
|
||||
var gebouw_naam = oRs("alg_gebouw_naam").Value; // theoretisch kunnen dit er meerdere zijn, dan nog aanpassen
|
||||
oRs.close();
|
||||
|
||||
sql = rdpt.dagbezetting_resdelen_in_aanweziggebouw_sql(res_disc_key_arr, res_deel_key, geb_key, -1, dateoffset, datelimit, null, act_key);
|
||||
sql = rdpt.dagbezetting_resdelen_in_aanweziggebouw_sql(res_disc_key_arr, res_deel_key, geb_key, dateoffset, datelimit, act_key);
|
||||
|
||||
var oRs = Oracle.Execute(sql)
|
||||
var pos = 0;
|
||||
@@ -553,7 +563,7 @@ transitParam2 += "&startpage=" + startpage;
|
||||
var calc_dagcapaciteit = rdpt.dagcapaciteitCalc(new Date(oRs("datum").Value), dagcapaciteit, act_key, res_disc_key_arr, geb_key);
|
||||
if (!calc_dagcapaciteit)
|
||||
{
|
||||
__Log("No capacity on " + toDateString(oRs("datum").Value));
|
||||
__Log("No capacity on " + toDateString(oRs("datum").Value, { isLocal: true }));
|
||||
oRs.MoveNext();
|
||||
continue;
|
||||
}
|
||||
@@ -588,12 +598,12 @@ transitParam2 += "&startpage=" + startpage;
|
||||
}
|
||||
}
|
||||
var clickaction = (reserveerbaredag && (!(res_deel_key > 0) || beschikbaarheid > 0) ? "onclick='continue_with_date_bld(new Date("+ new Date(oRs("datum").Value).getTime()+"), "+oRs("ins_discipline_key").Value+");'" : "");
|
||||
|
||||
var noTimezoneDifferences = Session("time_zone") == S("fac_server_timezone") && local_tz == S("fac_server_timezone");
|
||||
%>
|
||||
<div class='iconmenu<%=clickaction ? "" : " no-action"%>'
|
||||
style='width:14%; height: 12vw;' <%=clickaction%>>
|
||||
<div class="iconitem">
|
||||
<div class="icondate iconimg <%=bcls%>"><%=toDateString(oRs("datum").Value, false, true) %></div>
|
||||
<div class="icondate iconimg <%=bcls%>"><%=toDateString(oRs("datum").Value, { pretty: noTimezoneDifferences, isLocal: true }) %></div>
|
||||
<div class="res-iconlabel"><%=licon%><%=aantalitems+" "+safe.html(oRs("ins_discipline_omschrijving").Value).toLowerCase()%>
|
||||
<br><%=L("lcl_mobile_resbeschikbaar")+" " +(ischild?(beschikbaarheid+ "/" + blok_per_dag):beschikbaarheid +"%") %>
|
||||
</div>
|
||||
@@ -613,9 +623,9 @@ transitParam2 += "&startpage=" + startpage;
|
||||
// 3. KIES VERDIEPING INDIEN GEWENST EN NOG NIET BEKEND
|
||||
if (resdate && floorselect == 1 && geb_key > -1 && floor_key == -1)
|
||||
{
|
||||
%>
|
||||
%>
|
||||
<div id='accordion'>
|
||||
<%
|
||||
<%
|
||||
var sql = rdpt.mijn_verdiepingen_met_resdelen_sql(res_disc_key_arr, geb_key, ALGwritelevel, dateoffset, resdate);
|
||||
var oRs = Oracle.Execute(sql)
|
||||
var pos = 0;
|
||||
@@ -641,7 +651,8 @@ transitParam2 += "&startpage=" + startpage;
|
||||
var flr_icon = '<div class="flooravatar">'+safe.html(oRs("alg_verdieping_code").Value)+'</div>';
|
||||
|
||||
var sql2 = rdpt.dagbezetting_resdelen_in_gebouw_sql(res_disc_key_arr, gebkey, flrkey, dateoffset, datelimit, resdate);
|
||||
var oRs2 = Oracle.Execute(sql2)
|
||||
var oRs2 = Oracle.Execute(sql2);
|
||||
|
||||
var beschikbaarheid = ((1 - (oRs2("gevuld").Value/(dagcapaciteit*aantalitems)))*100); // 0..100
|
||||
var fcls = rdpt.bezettings_class(oRs2("gevuld").Value, dagcapaciteit*aantalitems, minimumbeschikbaarheid*aantalitems);
|
||||
|
||||
@@ -802,7 +813,7 @@ transitParam2 += "&startpage=" + startpage;
|
||||
|
||||
function fnIntervallen(oRs)
|
||||
{
|
||||
var res = rdpt.getIntervalString(oRs("res_deel_key").Value, resdate, bloktijden);
|
||||
var res = rdpt.getIntervalString(oRs("res_deel_key").Value, resdate, bloktijden, geb_key);
|
||||
if (res =="") res = L("lcl_res_intervalbezet");
|
||||
return res;
|
||||
}
|
||||
@@ -840,7 +851,7 @@ transitParam2 += "&startpage=" + startpage;
|
||||
var rst = new ResultsetTable({ keyColumn: "res_deel_key",
|
||||
ID: "resdltable",
|
||||
sql: sql,
|
||||
title: L("lcl_resdeel_beschikbaar_op").format(gebouw_naam, toDateString(resdate)),
|
||||
title: L("lcl_resdeel_beschikbaar_op").format(gebouw_naam, toDateString(resdate, { isLocal: true })),
|
||||
buttons: buttons,
|
||||
emptySetString: L("lcl_res_niets_beschikbaar"),
|
||||
showAll: showAll,
|
||||
|
||||
@@ -9,6 +9,7 @@
|
||||
|
||||
rdpt = {
|
||||
|
||||
// Levert de 3 meest recent geboekte werkplekken op voor de gegeven catalogi
|
||||
mijn_verdiepingen_met_resdelen_hist_sql: function(p_res_disc_key_arr, p_alglevel)
|
||||
{
|
||||
var hsql = " SELECT l.alg_locatie_plaats"
|
||||
@@ -46,8 +47,8 @@ rdpt = {
|
||||
+ " AND rdis.ins_discipline_verwijder IS NULL"
|
||||
+ " AND w.res_discipline_key IN (" + p_res_disc_key_arr.join(",") + ")";
|
||||
|
||||
if (p_alglevel > -1 )
|
||||
{ // Er is een scope-beperking van kracht
|
||||
if (p_alglevel > -1)
|
||||
{ // Er is een scope-beperking van kracht
|
||||
hsql += " AND v.alg_verdieping_key IN"
|
||||
+ " (SELECT alg_verdieping_key"
|
||||
+ " FROM fac_v_my_floors"
|
||||
@@ -70,14 +71,13 @@ rdpt = {
|
||||
+ " , rdis.ins_discipline_omschrijving"
|
||||
+ " ORDER BY res_rsv_ruimte_van DESC";
|
||||
|
||||
return "SELECT * FROM (" + hsql + ") WHERE ROWNUM < 4";
|
||||
return "SELECT * FROM (" + hsql + ") WHERE ROWNUM <= 3";
|
||||
},
|
||||
|
||||
// Selecteer gebouwen of verdiepingen waarop res_delen van deze disciplines voorkomen, met wat gegevens
|
||||
// Als gebouw_key -1 is worden gebouwen geselecteerd, als er een gebouw_key gegeven is, dan de verdiepingen
|
||||
mijn_verdiepingen_met_resdelen_sql: function(p_res_disc_key_arr, p_gebouw_key, p_alglevel, p_dateoffset, p_resdate)
|
||||
{
|
||||
|
||||
var lsql = " SELECT l.alg_locatie_plaats"
|
||||
+ " , l.alg_locatie_code"
|
||||
+ " , g.alg_gebouw_naam"
|
||||
@@ -96,7 +96,7 @@ rdpt = {
|
||||
+ " , alg_v_aanweziggebouw g"
|
||||
+ " , alg_v_aanwezigverdieping v"
|
||||
+ " , alg_locatie l"
|
||||
+ " , alg_district di"
|
||||
+ " , alg_district di"
|
||||
+ " WHERE di.alg_district_key = l.alg_district_key "
|
||||
+ " AND g.alg_locatie_key = l.alg_locatie_key "
|
||||
+ " AND plts.alg_verdieping_key = v.alg_verdieping_key"
|
||||
@@ -105,8 +105,8 @@ rdpt = {
|
||||
+ " AND id.ins_alg_ruimte_key = plts.alg_onroerendgoed_keys "
|
||||
+ " AND id.ins_alg_ruimte_type = plts.alg_type "
|
||||
+ " AND rd.res_ins_deel_key = id.ins_deel_key "
|
||||
+ " AND (rd.res_deel_vervaldatum IS NULL OR rd.res_deel_vervaldatum > "
|
||||
+ (p_resdate ? p_resdate.toSQL() : "SYSDATE+"+(p_dateoffset||0) ) + ")"
|
||||
+ " AND ( rd.res_deel_vervaldatum IS NULL"
|
||||
+ " OR rd.res_deel_vervaldatum > " + (p_resdate ? p_resdate.toSQL() : "SYSDATE + " + (p_dateoffset || 0)) + ")"
|
||||
+ " AND rd.res_discipline_key = rdis.ins_discipline_key"
|
||||
+ " AND rdis.ins_discipline_verwijder IS NULL"
|
||||
+ " AND rd.res_discipline_key IN (" + p_res_disc_key_arr.join(",") + ")";
|
||||
@@ -114,8 +114,8 @@ rdpt = {
|
||||
if (p_alglevel > -1 )
|
||||
{ // Er is een scope-beperking van kracht
|
||||
lsql += " AND v.alg_verdieping_key IN (SELECT alg_verdieping_key FROM fac_v_my_floors "
|
||||
+ " WHERE prs_perslid_key = " + user_key
|
||||
+ " AND niveau = " + p_alglevel + ")";
|
||||
+ " WHERE prs_perslid_key = " + user_key
|
||||
+ " AND niveau = " + p_alglevel + ")";
|
||||
}
|
||||
lsql += " GROUP BY l.alg_locatie_plaats"
|
||||
+ " , l.alg_locatie_code"
|
||||
@@ -128,7 +128,7 @@ rdpt = {
|
||||
+ " , v.alg_verdieping_code"
|
||||
+ " , rdis.ins_discipline_key"
|
||||
+ " , rdis.ins_discipline_omschrijving"
|
||||
+ " ORDER BY alg_locatie_plaats, alg_gebouw_naam, ins_discipline_omschrijving, alg_verdieping_volgnr, alg_verdieping_code" ;
|
||||
+ " ORDER BY alg_locatie_plaats, alg_gebouw_naam, ins_discipline_omschrijving, alg_verdieping_volgnr, alg_verdieping_code";
|
||||
|
||||
if (p_gebouw_key == -1)
|
||||
{
|
||||
@@ -155,20 +155,17 @@ rdpt = {
|
||||
},
|
||||
|
||||
// telt het aantal reserveerbare delen van de discipline in het gebouw of de verdieping
|
||||
aantal_resdelen_in_gebouw_sql: function(p_res_disc_key_arr, p_geb_key, p_flr_key, p_resdate)
|
||||
aantal_resdelen_in_gebouw_sql: function(p_res_disc_key_arr, p_geb_key)
|
||||
{
|
||||
// Bepaal het aantal items in dit gebouw
|
||||
var lsql = "SELECT COUNT (*) aantal "
|
||||
+ " FROM res_v_aanwezigdeel rd, ins_v_aanwezigdeel id, alg_v_allonroerendgoed plts "
|
||||
+ " WHERE id.ins_alg_ruimte_key = plts.alg_onroerendgoed_keys "
|
||||
+ " AND id.ins_alg_ruimte_type = plts.alg_type "
|
||||
+ " AND rd.res_ins_deel_key = id.ins_deel_key "
|
||||
+ (p_flr_key > -1 ? " AND plts.alg_verdieping_key = " + p_flr_key
|
||||
: " AND plts.alg_gebouw_key = " + p_geb_key
|
||||
)
|
||||
+ " AND rd.res_discipline_key IN (" + p_res_disc_key_arr.join(",") + ")"
|
||||
+ " AND (rd.res_deel_vervaldatum IS NULL OR rd.res_deel_vervaldatum > "
|
||||
+ (p_resdate ? p_resdate.toSQL() : "SYSDATE") + ")";
|
||||
+ " FROM res_v_aanwezigdeel rd, ins_v_aanwezigdeel id, alg_v_allonroerendgoed plts "
|
||||
+ " WHERE id.ins_alg_ruimte_key = plts.alg_onroerendgoed_keys "
|
||||
+ " AND id.ins_alg_ruimte_type = plts.alg_type "
|
||||
+ " AND rd.res_ins_deel_key = id.ins_deel_key "
|
||||
+ " AND plts.alg_gebouw_key = " + p_geb_key
|
||||
+ " AND rd.res_discipline_key IN (" + p_res_disc_key_arr.join(",") + ")"
|
||||
+ " AND (rd.res_deel_vervaldatum IS NULL OR rd.res_deel_vervaldatum > SYSDATE)";
|
||||
return lsql;
|
||||
},
|
||||
|
||||
@@ -176,56 +173,83 @@ rdpt = {
|
||||
// Als p_resdate is gegeven, dan wordt uiteindelijk alleen het record voor die dag daaruit geselecteerd.
|
||||
// Als p_act_key is meegegeven en het is een child-activiteit dan worden alleen dagen meegenomen waar
|
||||
// de master een reservering heeft
|
||||
dagbezetting_resdelen_in_gebouw_sql: function (p_res_disc_key_arr, p_geb_key, p_flr_key, p_dateoffset, p_datelimit, p_resdate, p_act_key)
|
||||
dagbezetting_resdelen_in_gebouw_sql: function (p_res_disc_key_arr, p_geb_key, p_flr_key, p_dateoffset, p_datelimit, p_local_resdate, p_act_key)
|
||||
{
|
||||
var lsql = "SELECT datum, SUM (gevuld) gevuld, MAX (aantal) aantal, MAX (vrijedag) vrijedag, MAX (weekdag) weekdag "
|
||||
+ "FROM ("
|
||||
+ " SELECT TRUNC (rrd.res_rsv_deel_van) datum,"
|
||||
+ " SUM(rrd.res_rsv_deel_tot-rrd.res_rsv_deel_van)*24 gevuld,"
|
||||
+ " vrij.mld_vrije_dagen_key vrijedag, " // >0 is vrijedag
|
||||
+ " fac.getweekdaynum (res_rsv_deel_van) weekdag, " // 7 en 1 zijn weekend
|
||||
+ " COUNT (*) aantal "
|
||||
+ " FROM res_v_aanwezigrsv_deel rrd, "
|
||||
+ " res_v_aanwezigdeel rd, "
|
||||
+ " ins_v_aanwezigdeel id, "
|
||||
+ " alg_v_allonroerendgoed plts, "
|
||||
+ " alg_gebouw g,"
|
||||
+ " mld_vrije_dagen vrij "
|
||||
+ " WHERE rrd.res_deel_key = rd.res_deel_key "
|
||||
+ " AND id.ins_alg_ruimte_key = plts.alg_onroerendgoed_keys "
|
||||
+ " AND id.ins_alg_ruimte_type = plts.alg_type "
|
||||
+ " AND vrij.mld_vrije_dagen_datum(+) = TRUNC (rrd.res_rsv_deel_van) "
|
||||
+ " AND rd.res_ins_deel_key = id.ins_deel_key "
|
||||
+ " AND rrd.res_rsv_deel_dirtlevel = 0" // nodig?
|
||||
+ (p_flr_key > -1 ? " AND plts.alg_verdieping_key = " + p_flr_key
|
||||
: " AND plts.alg_gebouw_key = " + p_geb_key)
|
||||
+ " AND g.alg_gebouw_key = plts.alg_gebouw_key"
|
||||
+ " AND vrij.mld_vrije_dagen_id(+) = COALESCE(g.mld_vrije_dagen_id, 'Default')"
|
||||
+ " AND rd.res_discipline_key IN (" + p_res_disc_key_arr.join(",") + ")"
|
||||
+ (p_resdate ? " AND TRUNC (rrd.res_rsv_deel_van) = " + p_resdate.toSQL()
|
||||
: " AND TRUNC (rrd.res_rsv_deel_van) BETWEEN TRUNC (SYSDATE +"+(p_dateoffset||0)+") AND TRUNC (SYSDATE-1+"+(p_dateoffset||0)+"+"+p_datelimit+") "
|
||||
)
|
||||
+ " GROUP BY vrij.mld_vrije_dagen_key, TRUNC (rrd.res_rsv_deel_van), res_rsv_deel_van "
|
||||
+ " UNION ALL" // de dagen zonder reserveringen
|
||||
+ " SELECT TRUNC (SYSDATE + "+p_dateoffset+"+ (LEVEL - 1)) dag, 0, 0, fac.getweekdaynum (SYSDATE + "+p_dateoffset+"+(LEVEL - 1)), 0 "
|
||||
+ " FROM DUAL"
|
||||
+ " CONNECT BY LEVEL <= "+p_datelimit
|
||||
+ " UNION ALL" // de vrije dagen daarvan
|
||||
+ " SELECT mld_vrije_dagen_datum, 0, 1, 0, 0 "
|
||||
+ " FROM mld_vrije_dagen vrij"
|
||||
+ " , alg_gebouw g"
|
||||
+ (p_flr_key > -1 ? " , alg_verdieping v" : "")
|
||||
+ " WHERE vrij.mld_vrije_dagen_datum BETWEEN TRUNC (SYSDATE +"+(p_dateoffset||0)+") AND TRUNC (SYSDATE-1+"+(p_dateoffset||0)+"+"+p_datelimit+") "
|
||||
+ (p_flr_key > -1 ? " AND v.alg_verdieping_key = " + p_flr_key
|
||||
+ " AND v.alg_gebouw_key = g.alg_gebouw_key"
|
||||
: " AND g.alg_gebouw_key = " + p_geb_key)
|
||||
+ " AND vrij.mld_vrije_dagen_id = COALESCE(g.mld_vrije_dagen_id, 'Default')"
|
||||
+ ")"
|
||||
+ "GROUP BY datum ";
|
||||
var local_tz;
|
||||
if (p_flr_key > -1) {
|
||||
local_tz = res.getTimezoneBy(p_flr_key, "V");
|
||||
} else {
|
||||
local_tz = res.getTimezoneBy(p_geb_key, "G");
|
||||
}
|
||||
|
||||
if (p_resdate)
|
||||
{
|
||||
lsql = "SELECT * FROM (" + lsql + ") WHERE datum = " + p_resdate.toSQL();
|
||||
function toLocalDate(expr) {
|
||||
return convertToLocalTimeSQL(expr, local_tz);
|
||||
}
|
||||
|
||||
var offsetExpr = (p_dateoffset || 0);
|
||||
|
||||
var localRsvDate = toLocalDate("rrd.res_rsv_deel_van");
|
||||
var localResWeekday = "fac.getweekdaynum(" + localRsvDate + ")";
|
||||
|
||||
var localToday = "TRUNC(" + toLocalDate("SYSDATE") + ")";
|
||||
var localRangeStart = localToday + " + " + offsetExpr;
|
||||
var localRangeEnd = localToday + " + " + (offsetExpr + p_datelimit - 1);
|
||||
|
||||
var localResdateFilter, localVrijeDagFilter;
|
||||
if (p_local_resdate) {
|
||||
localResdateFilter = " AND TRUNC(" + localRsvDate + ") = " + p_local_resdate.toSQL();
|
||||
localVrijeDagFilter = " vrij.mld_vrije_dagen_datum = " + p_local_resdate.toSQL();
|
||||
} else {
|
||||
localResdateFilter = " AND TRUNC(" + localRsvDate + ") BETWEEN " + localRangeStart + " AND " + localRangeEnd;
|
||||
localVrijeDagFilter = " vrij.mld_vrije_dagen_datum BETWEEN " + localRangeStart + " AND " + localRangeEnd;
|
||||
}
|
||||
var localDayByLevel = localRangeStart + " + (LEVEL - 1)";
|
||||
|
||||
var lsql = "SELECT datum, SUM (gevuld) gevuld, MAX (aantal) aantal, MAX (vrijedag) vrijedag, MAX (weekdag) weekdag "
|
||||
+ " FROM ("
|
||||
+ " SELECT TRUNC(" + localRsvDate + ") datum,"
|
||||
+ " SUM(rrd.res_rsv_deel_tot-rrd.res_rsv_deel_van)*24 gevuld,"
|
||||
+ " vrij.mld_vrije_dagen_key vrijedag, "
|
||||
+ " " + localResWeekday + " weekdag, "
|
||||
+ " COUNT (*) aantal "
|
||||
+ " FROM res_v_aanwezigrsv_deel rrd, "
|
||||
+ " res_v_aanwezigdeel rd, "
|
||||
+ " ins_v_aanwezigdeel id, "
|
||||
+ " alg_v_allonroerendgoed plts, "
|
||||
+ " alg_gebouw g,"
|
||||
+ " mld_vrije_dagen vrij "
|
||||
+ " WHERE rrd.res_deel_key = rd.res_deel_key "
|
||||
+ " AND id.ins_alg_ruimte_key = plts.alg_onroerendgoed_keys "
|
||||
+ " AND id.ins_alg_ruimte_type = plts.alg_type "
|
||||
+ " AND vrij.mld_vrije_dagen_datum(+) = TRUNC(" + localRsvDate + ")"
|
||||
+ " AND rd.res_ins_deel_key = id.ins_deel_key "
|
||||
+ " AND rrd.res_rsv_deel_dirtlevel = 0"
|
||||
+ (p_flr_key > -1 ? " AND plts.alg_verdieping_key = " + p_flr_key
|
||||
: " AND plts.alg_gebouw_key = " + p_geb_key)
|
||||
+ " AND g.alg_gebouw_key = plts.alg_gebouw_key"
|
||||
+ " AND vrij.mld_vrije_dagen_id(+) = COALESCE(g.mld_vrije_dagen_id, 'Default')"
|
||||
+ " AND rd.res_discipline_key IN (" + p_res_disc_key_arr.join(",") + ")"
|
||||
+ localResdateFilter
|
||||
+ " GROUP BY vrij.mld_vrije_dagen_key, TRUNC(" + localRsvDate + "), res_rsv_deel_van "
|
||||
+ " UNION ALL"
|
||||
+ " SELECT TRUNC(" + localDayByLevel + ") dag, 0, 0, fac.getweekdaynum(" + localDayByLevel + "), 0 "
|
||||
+ " FROM DUAL"
|
||||
+ " CONNECT BY LEVEL <= " + p_datelimit
|
||||
+ " UNION ALL"
|
||||
+ " SELECT vrij.mld_vrije_dagen_datum, 0, 1, 0, 0 "
|
||||
+ " FROM mld_vrije_dagen vrij"
|
||||
+ " , alg_gebouw g"
|
||||
+ (p_flr_key > -1 ? " , alg_verdieping v" : "")
|
||||
+ " WHERE " + localVrijeDagFilter
|
||||
+ (p_flr_key > -1 ? " AND v.alg_verdieping_key = " + p_flr_key
|
||||
+ " AND v.alg_gebouw_key = g.alg_gebouw_key"
|
||||
: " AND g.alg_gebouw_key = " + p_geb_key)
|
||||
+ " AND vrij.mld_vrije_dagen_id = COALESCE(g.mld_vrije_dagen_id, 'Default')"
|
||||
+ ")"
|
||||
+ " GROUP BY datum ";
|
||||
|
||||
if (p_local_resdate) {
|
||||
lsql = "SELECT * FROM (" + lsql + ") WHERE datum = " + p_local_resdate.toSQL(); // Deze is al TRUNC'ed
|
||||
}
|
||||
|
||||
if (p_act_key > 0)
|
||||
@@ -248,13 +272,39 @@ rdpt = {
|
||||
+ " )";
|
||||
}
|
||||
}
|
||||
lsql = lsql + "ORDER BY 1";
|
||||
lsql = lsql + " ORDER BY 1";
|
||||
|
||||
return lsql;
|
||||
},
|
||||
|
||||
dagbezetting_resdelen_in_aanweziggebouw_sql: function (p_res_disc_key_arr, p_res_deel_key, p_geb_key, p_flr_key, p_dateoffset, p_datelimit, p_resdate, p_act_key)
|
||||
dagbezetting_resdelen_in_aanweziggebouw_sql: function (p_res_disc_key_arr, p_res_deel_key, p_geb_key, p_dateoffset, p_datelimit, p_act_key)
|
||||
{
|
||||
var server_tz = S("fac_server_timezone");
|
||||
var local_tz = res.getTimezoneBy(p_geb_key, "G") || server_tz;
|
||||
|
||||
function toServerDate(expr) {
|
||||
return convertToServerTimeSQL(expr, local_tz);
|
||||
}
|
||||
function toLocalDate(expr) {
|
||||
return convertToLocalTimeSQL(expr, local_tz);
|
||||
}
|
||||
// Deze functie converteert de gegeven expressie naar locale tijd, trunct die dan op locale dag, en converteert die naar server-tijd
|
||||
function localizedTrunc(expr) {
|
||||
return toServerDate("TRUNC(" + toLocalDate(expr) + ")");
|
||||
}
|
||||
var offsetExpr = (p_dateoffset || 0);
|
||||
|
||||
var localRsvDate = toLocalDate("rrd.res_rsv_deel_van");
|
||||
var localRsvDateTrunced = "TRUNC(" + localRsvDate + ")";
|
||||
|
||||
var localResWeekday = "fac.getweekdaynum(" + toLocalDate("rrd.res_rsv_deel_van") + ")";
|
||||
var localVervalDate = "TRUNC(" + toLocalDate("rd.res_deel_vervaldatum") + ")";
|
||||
|
||||
var serverFromLocalRangeStart = localizedTrunc("SYSDATE") + " + " + offsetExpr;
|
||||
var serverFromLocalRangeEnd = localizedTrunc("SYSDATE") + " - 1 + " + offsetExpr + " + " + p_datelimit;
|
||||
|
||||
var serverDateFilter = " AND rrd.res_rsv_deel_van BETWEEN " + serverFromLocalRangeStart + " AND " + serverFromLocalRangeEnd;
|
||||
|
||||
var lsql = "SELECT datum"
|
||||
+ " , ins_discipline_key"
|
||||
+ " , ins_discipline_omschrijving"
|
||||
@@ -265,13 +315,13 @@ rdpt = {
|
||||
+ " , MAX(weekdag) weekdag"
|
||||
+ " , MAX(aantal_delen) delen"
|
||||
+ " FROM ("
|
||||
+ " SELECT TRUNC(rrd.res_rsv_deel_van) datum"
|
||||
+ " SELECT " + localRsvDateTrunced + " datum"
|
||||
+ " , rdis.ins_discipline_key"
|
||||
+ " , " + lcl.xsqla("rdis.ins_discipline_omschrijving", "rdis.ins_discipline_key")
|
||||
+ " , rdis.ins_discipline_image"
|
||||
+ " , SUM(rrd.res_rsv_deel_tot-rrd.res_rsv_deel_van)*24 gevuld"
|
||||
+ " , vrij.mld_vrije_dagen_key vrijedag" // >0 is vrijedag
|
||||
+ " , fac.getweekdaynum(res_rsv_deel_van) weekdag" // 7 en 1 zijn weekend
|
||||
+ " , vrij.mld_vrije_dagen_key vrijedag"
|
||||
+ " , " + localResWeekday + " weekdag"
|
||||
+ " , COUNT(*) aantal"
|
||||
+ " , 0 aantal_delen"
|
||||
+ " FROM res_v_aanwezigrsv_deel rrd"
|
||||
@@ -285,46 +335,44 @@ rdpt = {
|
||||
+ (p_res_deel_key > -1 ? " AND rd.res_deel_key = " + p_res_deel_key : "")
|
||||
+ " AND id.ins_alg_ruimte_key = plts.alg_onroerendgoed_keys"
|
||||
+ " AND id.ins_alg_ruimte_type = plts.alg_type"
|
||||
+ " AND vrij.mld_vrije_dagen_datum(+) = TRUNC (rrd.res_rsv_deel_van)"
|
||||
+ " AND vrij.mld_vrije_dagen_datum(+) = " + localRsvDateTrunced
|
||||
+ " AND rd.res_ins_deel_key = id.ins_deel_key"
|
||||
+ " AND rrd.res_rsv_deel_dirtlevel = 0" // nodig?
|
||||
+ " AND rrd.res_rsv_deel_dirtlevel = 0"
|
||||
+ " AND rd.res_discipline_key = rdis.ins_discipline_key"
|
||||
+ " AND rd.res_discipline_key IN (" + p_res_disc_key_arr.join(",") + ")"
|
||||
+ (p_flr_key > -1 ? " AND plts.alg_verdieping_key = " + p_flr_key
|
||||
: " AND plts.alg_gebouw_key = " + p_geb_key)
|
||||
+ " AND plts.alg_gebouw_key = " + p_geb_key
|
||||
+ " AND g.alg_gebouw_key = plts.alg_gebouw_key"
|
||||
+ " AND vrij.mld_vrije_dagen_id(+) = COALESCE(g.mld_vrije_dagen_id, 'Default')"
|
||||
+ (p_resdate ? " AND TRUNC(rrd.res_rsv_deel_van) = " + p_resdate.toSQL()
|
||||
: " AND TRUNC(rrd.res_rsv_deel_van) BETWEEN TRUNC(SYSDATE +"+(p_dateoffset||0)+") AND TRUNC(SYSDATE-1+"+(p_dateoffset||0)+"+"+p_datelimit+")"
|
||||
)
|
||||
+ serverDateFilter
|
||||
+ " AND ( rd.res_deel_vervaldatum IS NULL"
|
||||
+ " OR rd.res_deel_vervaldatum > TRUNC(rrd.res_rsv_deel_van)"
|
||||
+ " OR rd.res_deel_vervaldatum > rrd.res_rsv_deel_van"
|
||||
+ " )"
|
||||
+ " GROUP BY vrij.mld_vrije_dagen_key"
|
||||
+ " , TRUNC(rrd.res_rsv_deel_van)"
|
||||
+ " , " + localRsvDateTrunced
|
||||
+ " , res_rsv_deel_van"
|
||||
+ " , rdis.ins_discipline_key"
|
||||
+ " , ins_discipline_omschrijving"
|
||||
+ " , ins_discipline_image"
|
||||
+ " UNION ALL" // de dagen zonder reserveringen + aantal reserveerbare eenheden
|
||||
+ " UNION ALL"
|
||||
+ " SELECT d.dag"
|
||||
+ " , rdis.ins_discipline_key"
|
||||
+ " , " + lcl.xsqla("rdis.ins_discipline_omschrijving", "rdis.ins_discipline_key")
|
||||
+ " , rdis.ins_discipline_image"
|
||||
+ " , 0"
|
||||
+ " , 0"
|
||||
+ " , d.dagnr"
|
||||
+ " , fac.getweekdaynum(d.dag) dagnr"
|
||||
+ " , 0"
|
||||
+ " , COUNT(*)"
|
||||
+ " FROM res_v_aanwezigdeel rd"
|
||||
+ " , res_discipline rdis"
|
||||
+ " , ins_v_aanwezigdeel id"
|
||||
+ " , alg_v_allonroerendgoed plts"
|
||||
+ ", (SELECT TRUNC(SYSDATE + " + p_dateoffset + "+ (LEVEL - 1)) dag"
|
||||
+ " , fac.getweekdaynum(SYSDATE + "+p_dateoffset+"+(LEVEL - 1)) dagnr"
|
||||
+ " FROM DUAL"
|
||||
+ " CONNECT BY LEVEL <= " + p_datelimit
|
||||
+ " ) d"
|
||||
+ " , alg_gebouw g"
|
||||
+ " , (SELECT TRUNC(" + toLocalDate("SYSDATE + " + p_dateoffset + " + (LEVEL - 1)") + ") dag"
|
||||
+ " , fac.getweekdaynum(" + toLocalDate("SYSDATE + " + p_dateoffset + " + (LEVEL - 1)") + ") dagnr"
|
||||
+ " FROM DUAL"
|
||||
+ " CONNECT BY LEVEL <= " + p_datelimit
|
||||
+ " ) d"
|
||||
+ " WHERE id.ins_alg_ruimte_key = plts.alg_onroerendgoed_keys "
|
||||
+ " AND id.ins_alg_ruimte_type = plts.alg_type"
|
||||
+ " AND rd.res_ins_deel_key = id.ins_deel_key"
|
||||
@@ -333,19 +381,17 @@ rdpt = {
|
||||
)
|
||||
+ " AND rd.res_discipline_key = rdis.ins_discipline_key"
|
||||
+ " AND rd.res_discipline_key IN (" + p_res_disc_key_arr.join(",") +")"
|
||||
+ (p_flr_key > -1 ? " AND plts.alg_verdieping_key = " + p_flr_key
|
||||
: " AND plts.alg_gebouw_key = " + p_geb_key
|
||||
)
|
||||
+ " AND plts.alg_gebouw_key = " + p_geb_key
|
||||
+ " AND g.alg_gebouw_key = plts.alg_gebouw_key"
|
||||
+ " AND ( rd.res_deel_vervaldatum IS NULL"
|
||||
+ " OR rd.res_deel_vervaldatum > d.dag"
|
||||
+ " OR " + localVervalDate + " > d.dag"
|
||||
+ " )"
|
||||
+ " GROUP BY d.dag"
|
||||
+ " , d.dagnr"
|
||||
+ " , rdis.ins_discipline_key"
|
||||
+ " , ins_discipline_omschrijving"
|
||||
+ " , ins_discipline_image"
|
||||
+ " UNION ALL" // de vrije dagen daarvan
|
||||
+ " SELECT mld_vrije_dagen_datum"
|
||||
+ " UNION ALL"
|
||||
+ " SELECT vrij.mld_vrije_dagen_datum"
|
||||
+ " , rdis.ins_discipline_key"
|
||||
+ " , " + lcl.xsqla("rdis.ins_discipline_omschrijving", "rdis.ins_discipline_key")
|
||||
+ " , rdis.ins_discipline_image"
|
||||
@@ -357,17 +403,13 @@ rdpt = {
|
||||
+ " FROM mld_vrije_dagen vrij"
|
||||
+ " , res_discipline rdis"
|
||||
+ " , alg_gebouw g"
|
||||
+ (p_flr_key > -1 ? " , alg_verdieping v" : "")
|
||||
+ " WHERE vrij.mld_vrije_dagen_datum BETWEEN TRUNC(SYSDATE +"+(p_dateoffset||0)+") AND TRUNC(SYSDATE-1+"+(p_dateoffset||0)+"+"+p_datelimit+")"
|
||||
+ " AND rdis.ins_discipline_key IN (" + p_res_disc_key_arr.join(",") +")" // voor elke discipline die meedoet
|
||||
+ (p_flr_key > -1 ? " AND v.alg_verdieping_key = " + p_flr_key
|
||||
+ " AND v.alg_gebouw_key = g.alg_gebouw_key"
|
||||
: " AND g.alg_gebouw_key = " + p_geb_key)
|
||||
+ " WHERE vrij.mld_vrije_dagen_datum BETWEEN " + serverFromLocalRangeStart + " AND " + serverFromLocalRangeEnd
|
||||
+ " AND rdis.ins_discipline_key IN (" + p_res_disc_key_arr.join(",") +")"
|
||||
+ " AND g.alg_gebouw_key = " + p_geb_key
|
||||
+ " AND vrij.mld_vrije_dagen_id = COALESCE(g.mld_vrije_dagen_id, 'Default')"
|
||||
+ ")"
|
||||
+ " GROUP BY ins_discipline_key, ins_discipline_omschrijving, ins_discipline_image, datum";
|
||||
|
||||
|
||||
if (p_act_key > 0)
|
||||
{
|
||||
var sql = "SELECT res_activiteit_master_key"
|
||||
@@ -381,23 +423,18 @@ rdpt = {
|
||||
res_activiteit_duur = oRs("res_activiteit_duur").Value;
|
||||
}
|
||||
oRs.close();
|
||||
if (master_act_key > 0)
|
||||
{
|
||||
if (master_act_key > 0) {
|
||||
lsql = "SELECT * FROM (" + lsql + ")"
|
||||
+ " WHERE EXISTS (SELECT 1 FROM res_rsv_ruimte"
|
||||
+ " WHERE res_rsv_ruimte_verwijder IS NULL"
|
||||
+ " AND res_activiteit_key = " + master_act_key
|
||||
+ " AND TRUNC(res_rsv_ruimte_van) = datum"
|
||||
+ " AND TRUNC(" + toLocalDate("res_rsv_ruimte_van") + ") = datum"
|
||||
+ " )";
|
||||
}
|
||||
}
|
||||
|
||||
if (p_resdate)
|
||||
{
|
||||
lsql = "SELECT * FROM (" + lsql + ") WHERE datum = " + p_resdate.toSQL();
|
||||
}
|
||||
|
||||
lsql += " ORDER BY ins_discipline_omschrijving, datum";
|
||||
|
||||
return lsql;
|
||||
},
|
||||
|
||||
@@ -406,7 +443,26 @@ rdpt = {
|
||||
// Zo kun je dus bezette plekken uitsluiten
|
||||
res_deel_bezetting_op_dag_sql: function (p_res_disc_key_arr, p_geb_key, p_flr_key, p_resdate, p_maxbezet)
|
||||
{
|
||||
var lsql = "SELECT plaan.alg_plaatsaanduiding plaats, "
|
||||
var server_tz = S("fac_server_timezone");
|
||||
var local_tz = server_tz;
|
||||
if (p_flr_key > -1) {
|
||||
local_tz = res.getTimezoneBy(p_flr_key, "V");
|
||||
} else {
|
||||
local_tz = res.getTimezoneBy(p_geb_key, "G");
|
||||
}
|
||||
|
||||
function toLocalDate(expr) {
|
||||
return convertToLocalTimeSQL(expr, local_tz);
|
||||
}
|
||||
|
||||
var localRsvDate = toLocalDate("rrd.res_rsv_deel_van");
|
||||
var localRsvDateTrunced = "TRUNC(" + localRsvDate + ")";
|
||||
|
||||
// p_resdate is hier al de juiste (lokale) dag, TRUNC'ed
|
||||
|
||||
var localVervalDate = toLocalDate("rd.res_deel_vervaldatum");
|
||||
|
||||
var lsql = "SELECT plaan.alg_plaatsaanduiding plaats, "
|
||||
+ lcl.xsql("rd.res_deel_omschrijving", "rd.res_deel_key") + " res_deel_omschrijving, "
|
||||
+ " COALESCE(SUM (rrd.res_rsv_deel_tot - rrd.res_rsv_deel_van) * 24, 0) bezet, "
|
||||
+ " rd.res_deel_key, "
|
||||
@@ -428,13 +484,13 @@ rdpt = {
|
||||
+ " AND plts.alg_onroerendgoed_keys = plaan.alg_onroerendgoed_keys "
|
||||
+ " AND plts.alg_type = plaan.alg_type "
|
||||
+ " AND rd.res_ins_deel_key = id.ins_deel_key "
|
||||
+ " AND (rd.res_deel_vervaldatum IS NULL OR rd.res_deel_vervaldatum > "+p_resdate.toSQL()+")"
|
||||
+ " AND (rd.res_deel_vervaldatum IS NULL OR " + localVervalDate + " > " + p_resdate.toSQL() + ")"
|
||||
+ (p_flr_key>-1 ? " AND plts.alg_verdieping_key = " + p_flr_key
|
||||
: " AND plts.alg_gebouw_key = " + p_geb_key
|
||||
)
|
||||
)
|
||||
+ " AND rd.res_discipline_key = rdis.ins_discipline_key"
|
||||
+ " AND rd.res_discipline_key IN (" + p_res_disc_key_arr.join(",") + ")"
|
||||
+ " AND TRUNC (rrd.res_rsv_deel_van) = " + p_resdate.toSQL()
|
||||
+ " AND " + localRsvDateTrunced + " = " + p_resdate.toSQL()
|
||||
+ " GROUP BY plaan.alg_plaatsaanduiding, "
|
||||
+ " rd.res_deel_omschrijving, "
|
||||
+ " rd.res_deel_key, "
|
||||
@@ -468,16 +524,16 @@ rdpt = {
|
||||
+ " AND plts.alg_type = plaan.alg_type "
|
||||
+ " AND rd.res_ins_deel_key = id.ins_deel_key "
|
||||
+ " AND rd.res_discipline_key = rdis.ins_discipline_key"
|
||||
+ " AND (rd.res_deel_vervaldatum IS NULL OR rd.res_deel_vervaldatum > "+p_resdate.toSQL()+")"
|
||||
+ " AND (rd.res_deel_vervaldatum IS NULL OR " + localVervalDate + " > " + p_resdate.toSQL() + ")"
|
||||
+ (p_flr_key>-1 ? " AND plts.alg_verdieping_key = " + p_flr_key
|
||||
: " AND plts.alg_gebouw_key = " + p_geb_key
|
||||
)
|
||||
)
|
||||
+ " AND rd.res_discipline_key IN (" + p_res_disc_key_arr.join(",") + ")"
|
||||
+ " AND NOT EXISTS "
|
||||
+ " (SELECT '' "
|
||||
+ " FROM res_v_aanwezigrsv_deel rrd "
|
||||
+ " WHERE rrd.res_deel_key = rd.res_deel_key "
|
||||
+ " AND TRUNC (rrd.res_rsv_deel_van) = " + p_resdate.toSQL() +") "
|
||||
+ " AND " + localRsvDateTrunced + " = " + p_resdate.toSQL() + ") "
|
||||
+ " GROUP BY plaan.alg_plaatsaanduiding, "
|
||||
+ " rd.res_deel_omschrijving, "
|
||||
+ " rd.res_deel_key, "
|
||||
@@ -488,7 +544,7 @@ rdpt = {
|
||||
+ " ins_discipline_image, "
|
||||
+ " rdis.ins_discipline_key, "
|
||||
+ " ins_discipline_omschrijving "
|
||||
+ " ORDER BY alg_verdieping_code,1,2 " ;
|
||||
+ " ORDER BY alg_verdieping_code,1,2 ";
|
||||
return lsql;
|
||||
},
|
||||
|
||||
@@ -509,59 +565,92 @@ rdpt = {
|
||||
// Geef de beschikbare intervallen uit p_bloktijden op p_resdate van p_res_deel_key, "" indien onbeschikbaar
|
||||
getIntervalString: function (p_res_deel_key, p_resdate, p_bloktijden)
|
||||
{
|
||||
var lres="";
|
||||
var server_tz = S("fac_server_timezone") || "";
|
||||
var local_tz = server_tz;
|
||||
|
||||
if (p_res_deel_key > 0) {
|
||||
var tzSql = "SELECT MIN(l.alg_locatie_timezone) alg_tz"
|
||||
+ " FROM res_v_aanwezigdeel rd"
|
||||
+ " , ins_v_aanwezigdeel id"
|
||||
+ " , alg_v_allonroerendgoed plts"
|
||||
+ " , alg_gebouw g"
|
||||
+ " , alg_locatie l"
|
||||
+ " WHERE rd.res_ins_deel_key = id.ins_deel_key"
|
||||
+ " AND id.ins_alg_ruimte_key = plts.alg_onroerendgoed_keys"
|
||||
+ " AND id.ins_alg_ruimte_type = plts.alg_type"
|
||||
+ " AND plts.alg_gebouw_key = g.alg_gebouw_key"
|
||||
+ " AND g.alg_locatie_key = l.alg_locatie_key"
|
||||
+ " AND rd.res_deel_key = " + p_res_deel_key;
|
||||
var tzRs = Oracle.Execute(tzSql);
|
||||
var alg_tz = tzRs("alg_tz").Value;
|
||||
tzRs.Close();
|
||||
if (alg_tz) {
|
||||
local_tz = alg_tz;
|
||||
}
|
||||
}
|
||||
|
||||
function toLocalDate(expr) {
|
||||
return convertToLocalTimeSQL(expr, local_tz);
|
||||
}
|
||||
function toServerDate(expr) {
|
||||
return convertToServerTimeSQL(expr, local_tz);
|
||||
}
|
||||
|
||||
var lres = "";
|
||||
var l_bloktijden = p_bloktijden.slice(0);
|
||||
// bloktijden eerst resetten (snap niet waarom, ik heb toch een kopie?) JGL?
|
||||
for (var i = 0; i < l_bloktijden.length; i++)
|
||||
{
|
||||
for (var i = 0; i < l_bloktijden.length; i++) {
|
||||
l_bloktijden[i].bezet = false;
|
||||
}
|
||||
|
||||
var localResVanExpr = toLocalDate("rm.res_rsv_ruimte_van");
|
||||
var localResTotExpr = toLocalDate("rm.res_rsv_ruimte_tot");
|
||||
|
||||
// p_resdate is de lokale _dag_ (ge-TRUNCed dus)
|
||||
var serverResdateRangeStart = toServerDate(p_resdate.toSQL());
|
||||
var serverResdateRangeEnd = serverResdateRangeStart + " + 1";
|
||||
|
||||
var lsql = "SELECT rm.res_reservering_key,"
|
||||
+ " rm.res_rsv_ruimte_volgnr,"
|
||||
+ " rm.res_rsv_ruimte_key,"
|
||||
+ " rm.res_rsv_ruimte_omschrijving,"
|
||||
+ " res_rsv_ruimte_van,"
|
||||
+ " res_rsv_ruimte_tot,"
|
||||
+ " " + localResVanExpr + " AS res_rsv_ruimte_van,"
|
||||
+ " " + localResTotExpr + " AS res_rsv_ruimte_tot,"
|
||||
+ " 0 res_disc_params_preposttime"
|
||||
+ " FROM res_rsv_ruimte rm,"
|
||||
+ " res_rsv_deel rd"
|
||||
+ " WHERE res_rsv_ruimte_van < {0}".format(p_resdate.endToSQL())
|
||||
+ " AND res_rsv_ruimte_tot > {0}".format(p_resdate.beginToSQL())
|
||||
+ " WHERE res_rsv_ruimte_van < " + serverResdateRangeEnd
|
||||
+ " AND res_rsv_ruimte_tot > " + serverResdateRangeStart
|
||||
+ " AND rd.res_rsv_ruimte_key = rm.res_rsv_ruimte_key"
|
||||
+ " AND rd.res_deel_key = " + p_res_deel_key
|
||||
+ " AND rm.res_rsv_ruimte_verwijder IS NULL"
|
||||
+ " AND rd.res_rsv_deel_verwijder IS NULL"
|
||||
+ " AND rd.res_rsv_deel_dirtlevel = 0"
|
||||
+ " ORDER BY rm.res_rsv_ruimte_van"; // Eerste vooraan.
|
||||
+ " ORDER BY res_rsv_ruimte_van";
|
||||
|
||||
// Bekijk voor dit object voor deze dag welke van de intervallen al bezet zijn
|
||||
// en welke dus nog niet
|
||||
|
||||
var loRs = Oracle.Execute( lsql );
|
||||
while (!loRs.Eof)
|
||||
{
|
||||
var loRs = Oracle.Execute(lsql);
|
||||
while (!loRs.Eof) {
|
||||
var van = new Date(loRs("res_rsv_ruimte_van").Value);
|
||||
var tot = new Date(loRs("res_rsv_ruimte_tot").Value);
|
||||
for (var i = 0; i < l_bloktijden.length; i++)
|
||||
{
|
||||
if (van < l_bloktijden[i].einddatum && tot > l_bloktijden[i].startdatum)
|
||||
{
|
||||
l_bloktijden[i].bezet = true;
|
||||
for (var j = 0; j < l_bloktijden.length; j++) {
|
||||
if (van < l_bloktijden[j].einddatum && tot > l_bloktijden[j].startdatum) {
|
||||
l_bloktijden[j].bezet = true;
|
||||
}
|
||||
}
|
||||
loRs.MoveNext();
|
||||
}
|
||||
loRs.Close();
|
||||
|
||||
for (var i = 0; i < l_bloktijden.length; i++)
|
||||
{
|
||||
if (!l_bloktijden[i].bezet)
|
||||
lres += l_bloktijden[i].name +" | ";
|
||||
for (var k = 0; k < l_bloktijden.length; k++) {
|
||||
if (!l_bloktijden[k].bezet) {
|
||||
lres += l_bloktijden[k].name + " | ";
|
||||
}
|
||||
}
|
||||
if (lres.substr(lres.length-3, 3) == " | ")
|
||||
lres = lres.substr(0, lres.length-3);
|
||||
else
|
||||
|
||||
if (lres.substr(lres.length - 3, 3) === " | ") {
|
||||
lres = lres.substr(0, lres.length - 3);
|
||||
} else {
|
||||
lres = "";
|
||||
}
|
||||
|
||||
return lres;
|
||||
},
|
||||
@@ -572,8 +661,10 @@ rdpt = {
|
||||
// Als act_key een subreservering is wordt zelfs gekeken of er op date een master-reservering is
|
||||
dagcapaciteitCalc: function _dagcapaciteitCalc(date, dagcapaciteit, act_key, res_disc_key_arr, geb_key)
|
||||
{
|
||||
var begintijd = new Date(0, 0, 0, 23, 59, 0);
|
||||
var eindtijd = new Date(0, 0, 0, 0, 0, 0);
|
||||
var begintijd = new Date();
|
||||
begintijd.setHours(23, 59, 0);
|
||||
var eindtijd = new Date();
|
||||
eindtijd.setHours(0, 0, 0);
|
||||
var btBegintijd;
|
||||
var btEindtijd;
|
||||
var btArr;
|
||||
@@ -586,13 +677,15 @@ rdpt = {
|
||||
for (index = 0; index < bt.length; index++)
|
||||
{
|
||||
btArr = bt[index].begin.split(":");
|
||||
btBegintijd = new Date(0, 0, 0, btArr[0], btArr[1], 0);
|
||||
btBegintijd = new Date();
|
||||
btBegintijd.setHours(btArr[0], btArr[1]);
|
||||
if (btBegintijd.getTime() < begintijd.getTime())
|
||||
{
|
||||
begintijd = btBegintijd;
|
||||
}
|
||||
btArr = bt[index].end.split(":");
|
||||
btEindtijd = new Date(0, 0, 0, btArr[0], btArr[1], 0);
|
||||
btEindtijd = new Date();
|
||||
btEindtijd.setHours(btArr[0], btArr[1]);
|
||||
if (btEindtijd.getTime() > eindtijd.getTime())
|
||||
{
|
||||
eindtijd = btEindtijd;
|
||||
|
||||
@@ -106,16 +106,23 @@ for (var func in xfunc._funcodes) {
|
||||
}
|
||||
}
|
||||
|
||||
var disc_keys = getQParamIntArray("discs", []);
|
||||
var geb_key = getQParamInt("geb_key", -1);
|
||||
var floor_key = getQParamInt("floor_key", -1);
|
||||
var disc_keys = getQParamIntArray("discs", []);
|
||||
var geb_key = getQParamInt("geb_key", -1);
|
||||
var floor_key = getQParamInt("floor_key", -1);
|
||||
var local_tz = S("fac_server_timezone");
|
||||
if (geb_key > -1) {
|
||||
local_tz = res.getTimezoneBy(geb_key, "G");
|
||||
} else if (floor_key > -1) {
|
||||
local_tz = res.getTimezoneBy(floor_key, "V");
|
||||
}
|
||||
|
||||
var fac_usrrap_key = getQParamInt("usrrap_key", -1); // wordt doorgegeven naar het infobord
|
||||
|
||||
var startpage = getQParam("startpage", "");
|
||||
var daylimit = getQParamInt("daylimit", 17); // na daylimit kun je voor de eerste dag niet meer reserveren, default 12:00, werkt niet icm offset
|
||||
var afternoon = new Date().getHours() >= daylimit;
|
||||
var dateoffset = getQParamInt("offset", afternoon?1:0); //
|
||||
var local_now = convertToLocalTime(new Date(), local_tz);
|
||||
var afternoon = local_now.getHours() >= daylimit;
|
||||
var dateoffset = getQParamInt("offset", afternoon ? 1 : 0);
|
||||
var datelimit = getQParamInt("limit", 7); // aantal te kiezen dagen tov offset
|
||||
var selectmode = getQParamInt("selectmode", 0); // kiezen van het item: 0=automatisch bepalen (tekening anders lijst), 1=lijst, 2=2dtekening indien aanwezig, 3=3dtekening indien aanwezig
|
||||
var fotos = getQParamInt("fotos", 1); // for selectmode 1: show photo or not
|
||||
|
||||
@@ -110,14 +110,19 @@ var sql = "SELECT sa.res_srtactiviteit_prefix"
|
||||
+ " AND rrr.res_ruimte_opstel_key = ro.res_ruimte_opstel_key (+)"
|
||||
+ " AND rrr.res_rsv_ruimte_key = " + rsv_ruimte_key;
|
||||
var oRs = Oracle.Execute(sql);
|
||||
var res_van = new Date(oRs("res_rsv_ruimte_van").Value);
|
||||
var res_tot = new Date(oRs("res_rsv_ruimte_tot").Value);
|
||||
var server_res_van = new Date(oRs("res_rsv_ruimte_van").Value);
|
||||
var server_res_tot = new Date(oRs("res_rsv_ruimte_tot").Value);
|
||||
var res_ruimte_key = oRs("res_ruimte_key").Value;
|
||||
var resnrtxt = oRs("resnrtxt").Value;
|
||||
var hasFiat = oRs("res_rsv_ruimte_cat_appr").Value == 1;
|
||||
var isCV = oRs("res_srtactiviteit_soort").Value == 1;
|
||||
oRs.Close();
|
||||
|
||||
var local_tz = res.getRsvTimezone(rsv_ruimte_key);
|
||||
function toLocalDate(expr) {
|
||||
return convertToLocalTimeSQL(expr, local_tz);
|
||||
}
|
||||
|
||||
%>
|
||||
<html>
|
||||
<head>
|
||||
@@ -198,7 +203,8 @@ oRs.Close();
|
||||
|
||||
<body class="listmode">
|
||||
<% var buttons = [];
|
||||
if (this_res.canChangeCV)
|
||||
var multi_tz = local_tz != S("fac_server_timezone") || local_tz != Session("time_zone"); // Hebben we te maken met een ruimte, gebruiker of server in een afwijkende tijdszone?
|
||||
if (!multi_tz && this_res.canChangeCV)
|
||||
buttons.push( { title: (this_res.hasCV ? L("lcl_change") : L("lcl_add")), icon: (this_res.hasCV ? "fa-fclt-edit" : "fa-plus"), action: "res_change()"});
|
||||
if (this_res.canFiatteren)
|
||||
buttons.push( {title: L("lcl_approve"), icon: "fa-check", action: "res_fiatteren()"});
|
||||
@@ -273,20 +279,32 @@ oRs.Close();
|
||||
|
||||
function fnVantijd(oRs)
|
||||
{
|
||||
// Als Van en Tot verschillen tonen we de datum erbij, anders alleen de tijd
|
||||
var vanDateString = (new Date(oRs("res_rsv_deel_tot").value).midnight().getTime() != new Date(oRs("res_rsv_deel_van").value).midnight().getTime() ? toDateTimeString(new Date(oRs("res_rsv_deel_van").value)) : toTimeString(new Date(oRs("res_rsv_deel_van").value)))
|
||||
if (oRs("vanbinnentijd").value == 0)
|
||||
var res_rsv_deel_van = oRs("local_res_rsv_deel_van").Value;
|
||||
var res_rsv_deel_tot = oRs("local_res_rsv_deel_tot").Value;
|
||||
|
||||
// Als Van en Tot verschillen tonen we de datum erbij, anders alleen de tijd
|
||||
var vanDateString = (new Date(res_rsv_deel_tot).midnight().getTime() != new Date(res_rsv_deel_van).midnight().getTime()
|
||||
? toDateTimeString(res_rsv_deel_van, undefined, undefined, undefined, undefined, true)
|
||||
: toTimeString(res_rsv_deel_van, undefined, true));
|
||||
if (oRs("vanbinnentijd").value == 0) {
|
||||
vanDateString = "<span class='outofbounds'>" + vanDateString + "</span>";
|
||||
return vanDateString;
|
||||
}
|
||||
return vanDateString;
|
||||
}
|
||||
|
||||
function fnTottijd(oRs)
|
||||
{
|
||||
// Als Van en Tot verschillen tonen we de datum erbij, anders alleen de tijd
|
||||
var totDateString = (new Date(oRs("res_rsv_deel_tot").value).midnight().getTime() != new Date(oRs("res_rsv_deel_van").value).midnight().getTime() ? toDateTimeString(new Date(oRs("res_rsv_deel_tot").value)) : toTimeString(new Date(oRs("res_rsv_deel_tot").value)))
|
||||
if (oRs("totbinnentijd").value == 0)
|
||||
var res_rsv_deel_van = oRs("local_res_rsv_deel_van").Value;
|
||||
var res_rsv_deel_tot = oRs("local_res_rsv_deel_tot").Value;
|
||||
|
||||
// Als Van en Tot verschillen tonen we de datum erbij, anders alleen de tijd
|
||||
var totDateString = (new Date(res_rsv_deel_tot).midnight().getTime() != new Date(res_rsv_deel_van).midnight().getTime()
|
||||
? toDateTimeString(res_rsv_deel_tot, undefined, undefined, undefined, undefined, true)
|
||||
: toTimeString(res_rsv_deel_tot, undefined, true));
|
||||
if (oRs("totbinnentijd").value == 0) {
|
||||
totDateString = "<span class='outofbounds'>" + totDateString + "</span>";
|
||||
return totDateString;
|
||||
}
|
||||
return totDateString;
|
||||
}
|
||||
|
||||
function fnTijd(oRs)
|
||||
@@ -375,6 +393,8 @@ var nonBulkFields = lcl.xsqla('rd.res_deel_omschrijving', 'rd.res_deel_key')
|
||||
+ " , res.getdeelprijs(rrd.res_rsv_deel_key) res_rsv_deel_prijs" // zou je achterwege kunnen laten als !anydeelprijs
|
||||
+ " , rrd.res_rsv_deel_van"
|
||||
+ " , rrd.res_rsv_deel_tot"
|
||||
+ " , " + toLocalDate("rrd.res_rsv_deel_van") + " local_res_rsv_deel_van"
|
||||
+ " , " + toLocalDate("rrd.res_rsv_deel_tot") + " local_res_rsv_deel_tot"
|
||||
+ " , rrd.res_rsv_deel_dirtlevel"
|
||||
+ " , CASE WHEN k.km900 > 0 THEN 1 ELSE 0 END bewerkbaar"
|
||||
+ " , rrd.res_rsv_deel_verwijder ddVerwijder"
|
||||
@@ -426,6 +446,8 @@ var bulkFields = " distinct "
|
||||
+ " , sel.selected * res.getdeelprijs(rrd.res_rsv_deel_key) res_rsv_deel_prijs" // zou je achterwege kunnen laten als !anydeelprijs
|
||||
+ " , rrd.res_rsv_deel_van"
|
||||
+ " , rrd.res_rsv_deel_tot"
|
||||
+ " , " + toLocalDate("rrd.res_rsv_deel_van") + " local_res_rsv_deel_van"
|
||||
+ " , " + toLocalDate("rrd.res_rsv_deel_tot") + " local_res_rsv_deel_tot"
|
||||
+ " , rrd.res_rsv_deel_dirtlevel"
|
||||
+ " , CASE WHEN k.km900 > 0 THEN 1 ELSE 0 END bewerkbaar"
|
||||
+ " , rrd.res_rsv_deel_verwijder ddVerwijder"
|
||||
@@ -527,10 +549,10 @@ var bulkFields = " distinct "
|
||||
+ " AND r1.res_deel_key NOT IN ("
|
||||
+ " SELECT distinct rrd.res_deel_key"
|
||||
+ " FROM res_rsv_ruimte rrr, res_rsv_deel rrd, res_deel rd"
|
||||
+ " WHERE ( rrr.RES_RSV_RUIMTE_VAN BETWEEN TO_DATE (" + res_van.toSQL(true) + ")"
|
||||
+ " AND TO_DATE (" + res_tot.toSQL(true) + ")"
|
||||
+ " OR rrr.RES_RSV_RUIMTE_TOT BETWEEN TO_DATE (" + res_van.toSQL(true) + ")"
|
||||
+ " AND TO_DATE (" + res_tot.toSQL(true) + "))"
|
||||
+ " WHERE ( rrr.res_rsv_ruimte_van BETWEEN TO_DATE (" + server_res_van.toSQL(true) + ")"
|
||||
+ " AND TO_DATE (" + server_res_tot.toSQL(true) + ")"
|
||||
+ " OR rrr.res_rsv_ruimte_tot BETWEEN TO_DATE (" + server_res_van.toSQL(true) + ")"
|
||||
+ " AND TO_DATE (" + server_res_tot.toSQL(true) + "))"
|
||||
+ " AND rrr.res_rsv_ruimte_key <> " + rsv_ruimte_key
|
||||
+ " AND rrd.res_rsv_ruimte_key = rrr.res_rsv_ruimte_key"
|
||||
+ " AND rrd.res_deel_key = rd.res_deel_key"
|
||||
@@ -731,10 +753,11 @@ var bulkFields = " distinct "
|
||||
+ " , ra.res_rsv_artikel_levering"
|
||||
+ " , ra.res_rsv_artikel_afhalen"
|
||||
+ " , rr.res_rsv_ruimte_tot"
|
||||
+ " , " + toLocalDate("rr.res_rsv_ruimte_tot") + " local_res_rsv_ruimte_tot"
|
||||
+ " , ra.res_rsv_artikel_verwijder ddVerwijder"
|
||||
+ " , CASE "
|
||||
+ " WHEN (ra.res_rsv_artikel_levering BETWEEN res_rsv_ruimte_van "
|
||||
+ " AND res_rsv_ruimte_tot) "
|
||||
+ " WHEN (ra.res_rsv_artikel_levering BETWEEN rr.res_rsv_ruimte_van "
|
||||
+ " AND rr.res_rsv_ruimte_tot) "
|
||||
+ " THEN 1 "
|
||||
+ " ELSE 0 "
|
||||
+ " END levbinnentijd"
|
||||
@@ -799,7 +822,7 @@ var bulkFields = " distinct "
|
||||
rst2.addColumn(new Column({caption: L("lcl_time"), content: fnTijd, datatype: "time", align:"center"}));
|
||||
rst2.addColumn(new Column({caption: L("lcl_res_ophalen"), content: fnAfhaaltijd, datatype: "time", align:"center"}));
|
||||
if (this_res.res_has_visitors)
|
||||
rst2.addColumn(new Column({caption: L("lcl_to"), content: "res_rsv_ruimte_tot", datatype: "time", align:"center"}));
|
||||
rst2.addColumn(new Column({caption: L("lcl_to"), content: "local_res_rsv_ruimte_tot", datatype: "time", align:"center"}));
|
||||
if (anyartikelprijs)
|
||||
rst2.addColumn(new Column({caption: L("lcl_r_price7"), content: "res_rsv_artikel_prijs", datatype: "currency"}));
|
||||
if (resdeleted)
|
||||
|
||||
@@ -209,6 +209,7 @@ FCLTHeader.Requires({plugins: ["jQuery"]})
|
||||
}
|
||||
else if (restype == "O") // zal rrr.mld_opdr_key gevuld zijn
|
||||
{
|
||||
// UNSUPPORTED; local_tz = ?
|
||||
}
|
||||
else
|
||||
{ // CV
|
||||
@@ -243,10 +244,9 @@ FCLTHeader.Requires({plugins: ["jQuery"]})
|
||||
oRs.Close();
|
||||
}
|
||||
|
||||
if (local_tz != S("fac_server_timezone")) {
|
||||
rrr.rsv_ruimte_van = convertToLocalTime(rrr.rsv_ruimte_van, local_tz);
|
||||
rrr.rsv_ruimte_tot = convertToLocalTime(rrr.rsv_ruimte_tot, local_tz);
|
||||
}
|
||||
// Local, zonder prefix, want we hebben de server-tijd niet nodig in dit bestand
|
||||
rrr.rsv_ruimte_van = convertToLocalTime(rrr.rsv_ruimte_van, local_tz);
|
||||
rrr.rsv_ruimte_tot = convertToLocalTime(rrr.rsv_ruimte_tot, local_tz);
|
||||
}
|
||||
%>
|
||||
<script type="text/javascript">
|
||||
@@ -426,8 +426,8 @@ FCLTHeader.Requires({plugins: ["jQuery"]})
|
||||
var buttons = [];
|
||||
if (rrr.rsv_ruimte_verwijder == null) // Anders mag je niets meer
|
||||
{
|
||||
|
||||
if (this_res.canChange || this_res.canChangeFEExtended)
|
||||
var multi_tz = local_tz != S("fac_server_timezone") || local_tz != Session("time_zone"); // Hebben we te maken met een ruimte, gebruiker of server in een afwijkende tijdszone?
|
||||
if (!multi_tz && (this_res.canChange || this_res.canChangeFEExtended))
|
||||
buttons.push( {title: L("lcl_change"), icon: "fa-fclt-edit", action: "res_change()"});
|
||||
else if (this_res.canWriteNoShow)
|
||||
buttons.push({action: "resNoShow()", title: L("lcl_res_no_show"), icon: "fa-frown"});
|
||||
@@ -507,14 +507,14 @@ FCLTHeader.Requires({plugins: ["jQuery"]})
|
||||
}
|
||||
if (rrr.rsv_ruimte_tot.midnight().getTime() == rrr.rsv_ruimte_van.midnight().getTime())
|
||||
{
|
||||
ROFIELDTR("fldDateTime", L("lcl_date"), toDateString(rrr.rsv_ruimte_van, undefined, undefined, true), params);
|
||||
var v_tot = (rrr.met_eindtijd ? " "+ L("lcl_tot") + " " + toTimeString(rrr.rsv_ruimte_tot, undefined, true) : "");
|
||||
ROFIELDTR("fldDateTime", L("lcl_time"), toTimeString(rrr.rsv_ruimte_van, undefined, true) + v_tot, params);
|
||||
ROFIELDTR("fldDateTime", L("lcl_date"), toDateString(rrr.rsv_ruimte_van, { isLocal: true }), params);
|
||||
var v_tot = (rrr.met_eindtijd ? " "+ L("lcl_tot") + " " + toTimeString(rrr.rsv_ruimte_tot, { isLocal: true }) : "");
|
||||
ROFIELDTR("fldDateTime", L("lcl_time"), toTimeString(rrr.rsv_ruimte_van, { isLocal: true }) + v_tot, params);
|
||||
}
|
||||
else // meerdaags
|
||||
{
|
||||
ROFIELDTR("fldDateTime", L("lcl_date"), toDateTimeString(rrr.rsv_ruimte_van, undefined, undefined, undefined, true), params);
|
||||
ROFIELDTR("fldDateTime", L("lcl_res_endtime"), toDateTimeString(rrr.rsv_ruimte_tot, undefined, undefined, undefined, true), params);
|
||||
ROFIELDTR("fldDateTime", L("lcl_date"), toDateTimeString(rrr.rsv_ruimte_van, { noMidnight: true, isLocal: true }), params);
|
||||
ROFIELDTR("fldDateTime", L("lcl_res_endtime"), toDateTimeString(rrr.rsv_ruimte_tot, { noMidnight: true, isLocal: true }), params);
|
||||
}
|
||||
|
||||
// if this_res.canReadNoShow??
|
||||
|
||||
@@ -580,7 +580,7 @@ function scf_RWFIELDTR(model, fld, val, key, params)
|
||||
"sg" + fld,
|
||||
{ label: field.label,
|
||||
srtcontrole_key: val? val.id : null,
|
||||
filtercode: "foreignfiltercode" in field? field.foreignfiltercode : "",
|
||||
filtercode: "foreignfiltercode" in field? field.foreignfiltercode : "PI",
|
||||
urlAdd: field.urlAdd
|
||||
});
|
||||
}
|
||||
|
||||
@@ -676,6 +676,11 @@ var shared = {
|
||||
promptAI: function (msg, params)
|
||||
{
|
||||
params = params || {};
|
||||
|
||||
// Tijdelijk voor 2025.3 Gold A tot 2026.1
|
||||
settings.overrule_setting("ai_endpoint", "https://general-foundry-prod.cognitiveservices.azure.com/openai/deployments/general-gpt4o/chat/completions?api-version=2025-01-01-preview");
|
||||
settings.overrule_setting("ai_apikey", "3XUVnWTMwxOhKEj4Jnu4hj0Ifr8B9lt0PLCdhjAVxb2krGD99wpiJQQJ99BJACfhMk5XJ3w3AAAAACOGEWSl");
|
||||
|
||||
var result = {};
|
||||
var apikey = S("ai_apikey");
|
||||
if (!apikey) {
|
||||
@@ -1033,8 +1038,9 @@ function _get_ParamDate(pColl, pName, defVal)
|
||||
return val;
|
||||
}
|
||||
var val = _get_ParamInt(pColl, pName, -1);
|
||||
if (val>0 && val<=8640000000000000)
|
||||
if (val>0 && val<=8640000000000000) {
|
||||
return new Date(val);
|
||||
}
|
||||
|
||||
if (defVal instanceof Date)
|
||||
return defVal;
|
||||
@@ -1434,48 +1440,75 @@ function getUserHour(h)
|
||||
// User time-zone = Session("time_zone")
|
||||
// Server time-zone = S("fac_server_timezone")
|
||||
|
||||
// Lever de SQL op die de Datetime omzet naar de server tijdszone
|
||||
function convertToServerTimeSQL(userDateTimeExpr, localTimezone) {
|
||||
return convertToServerTime(userDateTimeExpr, localTimezone, true);
|
||||
}
|
||||
|
||||
// Lever de SQL op die de Datetime omzet naar de localized tijdszone
|
||||
function convertToLocalTimeSQL(serverDateTimeExpr, localTimezone) {
|
||||
return convertToLocalTime(serverDateTimeExpr, localTimezone, true);
|
||||
}
|
||||
|
||||
// Datetime van alg_locatie of user-tijdszone omzetten naar de server tijdszone
|
||||
function convertToServerTime(userDateTime, localTimezone) {
|
||||
function convertToServerTime(userDateTime, localTimezone, sqlOnly) {
|
||||
if (!localTimezone) {
|
||||
localTimezone = Session("time_zone"); // 'Local' = user timezone by default (= indien leeg)
|
||||
}
|
||||
return convertTimeZone(userDateTime, localTimezone, S("fac_server_timezone"));
|
||||
return convertTimeZone(userDateTime, localTimezone, S("fac_server_timezone"), sqlOnly);
|
||||
}
|
||||
|
||||
// Datetime van server tijdszone omzetten naar de alg_locatie of user-tijdszone
|
||||
function convertToLocalTime(serverDateTime, localTimezone) {
|
||||
function convertToLocalTime(serverDateTime, localTimezone, sqlOnly) {
|
||||
if (!localTimezone) {
|
||||
localTimezone = Session("time_zone"); // 'Local' = user timezone by default (= indien leeg)
|
||||
}
|
||||
return convertTimeZone(serverDateTime, S("fac_server_timezone"), localTimezone);
|
||||
return convertTimeZone(serverDateTime, S("fac_server_timezone"), localTimezone, sqlOnly);
|
||||
}
|
||||
|
||||
function convertTimeZone(thisDate, fromTZ, toTZ)
|
||||
function convertTimeZone(thisDate, fromTZ, toTZ, sqlOnly)
|
||||
{
|
||||
|
||||
if (!fromTZ || !toTZ || fromTZ.toUpperCase() == toTZ.toUpperCase())
|
||||
return thisDate;
|
||||
|
||||
var sql = "SELECT CAST ("
|
||||
+ "FROM_TZ (CAST ( "+thisDate.toSQL(true)+" AS TIMESTAMP), "+safe.quoted_sql(fromTZ)+")"
|
||||
+ " AT TIME ZONE "+safe.quoted_sql(toTZ)+" AS DATE)"
|
||||
var dateSQL = sqlOnly ? thisDate : thisDate.toSQL(true); // Bij sqlOnly wordt hier een veilige expressie verwacht
|
||||
var sql = "CAST ("
|
||||
+ "FROM_TZ (CAST ( " + dateSQL + " AS TIMESTAMP), " + safe.quoted_sql(fromTZ) + ")"
|
||||
+ " AT TIME ZONE " + safe.quoted_sql(toTZ) + " AS DATE)";
|
||||
|
||||
if (sqlOnly) {
|
||||
return sql;
|
||||
} else {
|
||||
sql = "SELECT " + sql
|
||||
+ " AS newDate"
|
||||
+ " FROM DUAL";
|
||||
}
|
||||
|
||||
var oRs = Oracle.Execute(sql);
|
||||
thisDate = new Date(oRs("newDate").value);
|
||||
oRs.close();
|
||||
|
||||
return thisDate;
|
||||
|
||||
}
|
||||
|
||||
// This function should only be used to format display,
|
||||
// <20> never as part of a computation.
|
||||
// Als de jsDate van de user(client) afkomstig is, hoeft er geen conversie naar de user-time-zone plaats te vinden
|
||||
function toTimeString(jsDate, bWithSeconds, isLocalTime)
|
||||
function toTimeString(jsDate, arg2 /* bWithSeconds */, arg3 /* isLocal */)
|
||||
{
|
||||
if (jsDate===null)
|
||||
var params = {};
|
||||
if (arg2 && typeof arg2 === "object") {
|
||||
// New style: toTimeString(jsDate, params)
|
||||
params = arg2;
|
||||
} else {
|
||||
// Old style: toTimeString(jsDate, bWithSeconds, isLocal)
|
||||
params = {
|
||||
withSeconds: arg2,
|
||||
isLocal: arg3
|
||||
};
|
||||
}
|
||||
|
||||
if (jsDate == null)
|
||||
return "";
|
||||
|
||||
if (typeof jsDate == "object" && jsDate.type == 135/*adDBTimeStamp, oRs("datum")*/)
|
||||
@@ -1495,16 +1528,29 @@ function toTimeString(jsDate, bWithSeconds, isLocalTime)
|
||||
if (!jsDate)
|
||||
return "";
|
||||
|
||||
if (!isLocalTime)
|
||||
if (!params.isLocal)
|
||||
jsDate = convertToLocalTime(jsDate);
|
||||
|
||||
ret = padout(jsDate.getHours()) + ":" + padout(jsDate.getMinutes());
|
||||
if (bWithSeconds) ret += ":" + padout(jsDate.getSeconds());
|
||||
if (params.withSeconds) ret += ":" + padout(jsDate.getSeconds());
|
||||
return ret;
|
||||
}
|
||||
// Als de jsDate van de user(client) afkomstig is, hoeft er geen conversie naar de user-time-zone plaats te vinden
|
||||
function toDateString(jsDate, noDay, pretty, isLocalDate)
|
||||
function toDateString(jsDate, arg2 /* noDay */, arg3 /* pretty */, arg4 /* isLocal */)
|
||||
{
|
||||
var params = {};
|
||||
if (arg2 && typeof arg2 === "object") {
|
||||
// New style: toDateString(jsDate, params)
|
||||
params = arg2;
|
||||
} else {
|
||||
// Old style: toDateString(jsDate, noDay, pretty, isLocal)
|
||||
params = {
|
||||
noDay: arg2,
|
||||
pretty: arg3,
|
||||
isLocal: arg4
|
||||
};
|
||||
}
|
||||
|
||||
var resstr = "";
|
||||
var today = new Date().midnight();
|
||||
var yesterday = (new Date(today))
|
||||
@@ -1512,7 +1558,7 @@ function toDateString(jsDate, noDay, pretty, isLocalDate)
|
||||
var tomorrow = (new Date(today));
|
||||
tomorrow.setDate(today.getDate()+1);
|
||||
|
||||
if (jsDate===null)
|
||||
if (jsDate == null)
|
||||
return "";
|
||||
|
||||
if (typeof jsDate == "object" && jsDate.type == 135/*adDBTimeStamp, oRs("datum")*/)
|
||||
@@ -1524,28 +1570,51 @@ function toDateString(jsDate, noDay, pretty, isLocalDate)
|
||||
if (!jsDate)
|
||||
return "";
|
||||
|
||||
if (!isLocalDate)
|
||||
if (!params.isLocal)
|
||||
jsDate = convertToLocalTime(jsDate);
|
||||
|
||||
if (
|
||||
params.pretty &&
|
||||
!params.isLocal && // Bij params.isLocal bepalen we op de plek zelf of we data 'pretty' willen tonen
|
||||
Session("time_zone") != S("fac_server_timezone") // Geen pretty-dagnamen als we data uit een andere tijdszone weergeven
|
||||
) {
|
||||
params.pretty = false;
|
||||
}
|
||||
|
||||
// Ik wil graag, alleen als parameter friendly?, voor de datums gisteren, vandaag en morgen de tekst Gisteren, Vandaag en Morgen opleveren
|
||||
// Voor lijsten/sortering is dat vaak niet handig, maar soms is het veel begrijpelijker. Als de mogelijkheid er is, kunnen we
|
||||
// geleidelijk de toepassing uitbreiden. In Lopende zaken op de portal om mee te beginnen.
|
||||
|
||||
if (pretty && jsDate.midnight().getTime() == today.getTime())
|
||||
if (params.pretty && jsDate.midnight().getTime() == today.getTime())
|
||||
resstr = L("lcl_date_today");
|
||||
else if (pretty && jsDate.midnight().getTime() == yesterday.getTime())
|
||||
else if (params.pretty && jsDate.midnight().getTime() == yesterday.getTime())
|
||||
resstr = L("lcl_date_yesterday");
|
||||
else if (pretty && jsDate.midnight().getTime() == tomorrow.getTime())
|
||||
else if (params.pretty && jsDate.midnight().getTime() == tomorrow.getTime())
|
||||
resstr = L("lcl_date_tomorrow");
|
||||
else
|
||||
resstr = (noDay?"":calendar_names.daysMin[jsDate.getDay()] + " ") +
|
||||
resstr = (params.noDay?"":calendar_names.daysMin[jsDate.getDay()] + " ") +
|
||||
padout(jsDate.getDate()) + "-" + padout(jsDate.getMonth() + 1) + "-" + padout(jsDate.getFullYear());
|
||||
|
||||
return resstr;
|
||||
}
|
||||
function toDateTimeString(jsDate, bWithSeconds, noDay, prettyday, noMidnight, isLocalDate)
|
||||
function toDateTimeString(jsDate, arg2 /* bWithSeconds */, arg3 /* noDay */, arg4 /* prettyday */, arg5 /* noMidnight */, arg6 /* isLocalDate */)
|
||||
{
|
||||
if (jsDate===null)
|
||||
var params = {};
|
||||
if (arg2 && typeof arg2 === "object") {
|
||||
// New style: toDateTimeString(jsDate, params)
|
||||
params = arg2;
|
||||
} else {
|
||||
// Old style: toDateTimeString(jsDate, bWithSeconds, noDay, prettyday, noMidnight, isLocalDate)
|
||||
params = {
|
||||
withSeconds: arg2,
|
||||
noDay: arg3,
|
||||
prettyday: arg4,
|
||||
noMidnight: arg5,
|
||||
isLocal: arg6
|
||||
};
|
||||
}
|
||||
|
||||
if (jsDate == null)
|
||||
return "";
|
||||
|
||||
if (typeof jsDate == "object" && jsDate.type == 135/*adDBTimeStamp, oRs("datum")*/)
|
||||
@@ -1554,14 +1623,15 @@ function toDateTimeString(jsDate, bWithSeconds, noDay, prettyday, noMidnight, is
|
||||
if (typeof jsDate == "date") // een oRs("datum").value
|
||||
jsDate = new Date(jsDate);
|
||||
|
||||
if (!isLocalDate) {
|
||||
if (!params.isLocal) {
|
||||
jsDate = convertToLocalTime(jsDate);
|
||||
params.isLocal = true; // Nu wel
|
||||
}
|
||||
|
||||
if (noMidnight && jsDate.getTime() == jsDate.midnight().getTime())
|
||||
return toDateString(jsDate, noDay, prettyday, true)
|
||||
if (params.noMidnight && jsDate.getTime() == jsDate.midnight().getTime())
|
||||
return toDateString(jsDate, params)
|
||||
else
|
||||
return toDateString(jsDate, noDay, prettyday, true) + " " + toTimeString(jsDate, bWithSeconds, true)
|
||||
return toDateString(jsDate, params) + " " + toTimeString(jsDate, params)
|
||||
}
|
||||
|
||||
function defaultDate(code)
|
||||
|
||||
@@ -33,23 +33,23 @@ var sql = "SELECT mld_melding_tag_key"
|
||||
+ " , TO_CHAR(mld_melding_tag_datum_tot, 'DD-MM-YYYY') mld_melding_tag_datum"
|
||||
+ " FROM mld_melding_tag"
|
||||
+ " WHERE mld_melding_tag_verwijder IS NULL"
|
||||
+ " AND (UPPER(mld_melding_tag_naam) LIKE " + safe.quoted_sql_wild2(chars)
|
||||
+ " AND (UPPER(mld_melding_tag_naam) LIKE " + safe.quoted_sql_wild2(chars)
|
||||
+ " OR TO_CHAR(mld_melding_tag_datum_tot, 'DD-MM-YYYY') LIKE " + safe.quoted_sql_wild2(chars) + ")"
|
||||
+ (srtdisc_key > -1 ? " AND ins_srtdiscipline_key = " + srtdisc_key : "")
|
||||
+ (filtcode == "A" ? " AND mld_melding_tag_actief = 1" : "")
|
||||
+ " AND ins_srtdiscipline_key IN"
|
||||
+ " (SELECT di.ins_srtdiscipline_key FROM fac_v_webgebruiker fw, mld_discipline di"
|
||||
+ " WHERE fac_gebruiker_alg_level_read < 9"
|
||||
+ " WHERE fac_gebruiker_alg_level_read < 9"
|
||||
+ " AND fac_gebruiker_prs_level_read < 9"
|
||||
+ " AND fac_functie_key IN (SELECT fac_functie_key FROM fac_functie WHERE fac_functie_code IN ('WEB_MLDFOF', 'WEB_MLDBOF', 'WEB_MLDBAC'))"
|
||||
+ " AND di.ins_discipline_module = 'MLD'"
|
||||
+ " AND prs_perslid_key = " + user_key
|
||||
+ " AND di.ins_discipline_key = fw.ins_discipline_key)"
|
||||
+ "ORDER BY mld_melding_tag_datum_tot, mld_melding_tag_naam";
|
||||
+ "ORDER BY mld_melding_tag_datum_tot DESC, mld_melding_tag_naam";
|
||||
|
||||
WriteResult2(sql, { bAll: bAll,
|
||||
fldName: "mld_melding_tag_naam",
|
||||
fldName: "mld_melding_tag_naam",
|
||||
fldKey : "mld_melding_tag_key",
|
||||
fldDesc: "mld_melding_tag_datum"} );
|
||||
%>
|
||||
<% ASPPAGE_END(); %>
|
||||
<% ASPPAGE_END(); %>
|
||||
|
||||
@@ -119,7 +119,7 @@ var zoeksqlstring = (verkey > 0
|
||||
sql = "SELECT r.alg_ruimte_key"
|
||||
+ " , " + zoeksqlstring + " naam"
|
||||
+ " , r.alg_ruimte_nr"
|
||||
+ " , sr.alg_srtruimte_omschrijving"
|
||||
+ " , " + lcl.xsqla("sr.alg_srtruimte_omschrijving", "sr.alg_srtruimte_key")
|
||||
+ " FROM alg_v_aanwezigruimte r"
|
||||
+ " , alg_srtruimte sr"
|
||||
+ " , alg_verdieping v"
|
||||
@@ -130,7 +130,7 @@ sql = "SELECT r.alg_ruimte_key"
|
||||
+ " AND v.alg_gebouw_key = g.alg_gebouw_key"
|
||||
if (chars != "%")
|
||||
sql += " AND (UPPER("+zoeksqlstring+") LIKE " + safe.quoted_sql_wild2(chars)
|
||||
+ " OR UPPER(sr.alg_srtruimte_omschrijving) LIKE " + safe.quoted_sql_wild2(chars) + ")";
|
||||
+ " OR UPPER(" + lcl.xsql("sr.alg_srtruimte_omschrijving", "sr.alg_srtruimte_key") + ") LIKE " + safe.quoted_sql_wild2(chars) + ")";
|
||||
sql += filtClause.where
|
||||
+ " ORDER BY g.alg_gebouw_code, v.alg_verdieping_volgnr, 2";
|
||||
|
||||
|
||||
@@ -1024,11 +1024,8 @@ async function _Suggest(inParams) {
|
||||
}
|
||||
}
|
||||
|
||||
if (isMobile) {
|
||||
xDiv.ontouchstart = function() { highlight(this.sgIndex); };
|
||||
} else {
|
||||
xDiv.onmouseover = function() { highlight(this.sgIndex); };
|
||||
}
|
||||
xDiv.ontouchstart = function() { highlight(this.sgIndex); };
|
||||
xDiv.onmouseover = function() { highlight(this.sgIndex); };
|
||||
|
||||
xDiv.onmousedown = function() {
|
||||
setValues(true);
|
||||
|
||||
@@ -155,18 +155,18 @@ function _FCLTcalendar (fieldID, params)
|
||||
if (params.initTimeEmpty == 1)
|
||||
var iniTime = "";
|
||||
else
|
||||
var iniTime = toTimeString(initDate, false, params.noConvert);
|
||||
var iniTime = toTimeString(initDate, { isLocal: params.noConvert });
|
||||
}
|
||||
else
|
||||
{
|
||||
var iniTextDate = toDateString(initDate, false, false, params.noConvert);
|
||||
var iniTextDate = toDateString(initDate, { isLocal: params.noConvert });
|
||||
// Input type=date verwacht het formaat [YYYY-MM-DD]
|
||||
var iniDateDate = new Date(initDate.getTime()-(initDate.getTimezoneOffset()*60000)).toISOString().substr(0,10);
|
||||
var iniDateVal = initDate.valueOf();
|
||||
if (params.initTimeEmpty == 1)
|
||||
var iniTime = "";
|
||||
else
|
||||
var iniTime = toTimeString(initDate, false, params.noConvert);
|
||||
var iniTime = toTimeString(initDate, { isLocal: params.noConvert });
|
||||
}
|
||||
var hiddentag = params.hidden? " style='display:none'" : ""; // Alleen op de calender, niet de tijd
|
||||
if (params.readonly)
|
||||
@@ -480,7 +480,11 @@ function _FCLTcalendar (fieldID, params)
|
||||
}
|
||||
else
|
||||
{ // Native activeren
|
||||
$("#time_from_<%=fieldID%>").attr("type", "time")
|
||||
$("#time_from_<%=fieldID%>")
|
||||
.attr("type", "time")
|
||||
.on("change", function() {
|
||||
$(this).trigger("focusout");
|
||||
});
|
||||
}
|
||||
|
||||
$("#time_from_<%=fieldID%>").focusout(function () { time_show_onChange('time_from_<%=fieldID%>',
|
||||
|
||||
@@ -117,6 +117,9 @@ section#searchbody td /* voor de styling-preview */
|
||||
--fclt-input-border-y: 1px;
|
||||
line-height: calc(var(--fclt-td-line-height) - 2 * var(--fclt-input-padding-y) - 2 * var(--fclt-input-border-y));
|
||||
}
|
||||
&.flexlabel {
|
||||
line-height: calc(0.8 * var(--fclt-td-line-height)); /* Ik wil eigenlijk 12px font-size en dan 1.8em => 21.6px net zoals show-mode */
|
||||
}
|
||||
}
|
||||
|
||||
/* heel algemene styles */
|
||||
@@ -486,9 +489,7 @@ div.modules > div.module {
|
||||
font-weight: 300;
|
||||
line-height: normal;
|
||||
margin: 5px;
|
||||
background: var(--menuiconcolor-gradient);
|
||||
background-clip: text;
|
||||
-webkit-text-fill-color: transparent;
|
||||
color: var(--menuiconcolor);
|
||||
transition: transform var(--fclt-animation-duration-s) ease;
|
||||
}
|
||||
div#useroptions > div:hover, div.test,
|
||||
@@ -1384,13 +1385,23 @@ td.listid
|
||||
padding: 0.35em 0.65em; /* var(--bs-badge-padding-y) var(--bs-badge-padding-x); */
|
||||
border-radius: var(--fclt-border-radius-lg);
|
||||
}
|
||||
.mldshowactie.fclt-info {
|
||||
.mldshowactie:is(.fclt-info, .fclt-warning) {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
width: 100%;
|
||||
padding: 0.75rem;
|
||||
gap: 0.75rem;
|
||||
line-height: normal;
|
||||
}
|
||||
:is(.fclt-info, .fclt-warning)::before {
|
||||
font-size: 1.5rem;
|
||||
font-family: "Font Awesome 6 Pro";
|
||||
}
|
||||
.fclt-info::before {
|
||||
content: "\f05a";
|
||||
font-family: 'Font Awesome 6 Pro';
|
||||
margin-right: .25em;
|
||||
}
|
||||
.fclt-warning::before {
|
||||
content: "\f071";
|
||||
}
|
||||
/* blockstyles */
|
||||
|
||||
@@ -1646,6 +1657,9 @@ div.filtermenukop {
|
||||
/* bedoeld voor de tabs */
|
||||
.ui-tab.ui-state-default {
|
||||
background: var(--inactivetabbackgroundcolor);
|
||||
#menutabs & {
|
||||
background: #DDDDDD;
|
||||
}
|
||||
a,
|
||||
.tabclose,
|
||||
.tabpinned {
|
||||
@@ -1654,11 +1668,17 @@ div.filtermenukop {
|
||||
}
|
||||
.ui-tab.ui-state-hover,
|
||||
.ui-tab.ui-state-focus {
|
||||
background-color: var(--buttonhoverbackgroundcolor);
|
||||
color: var(--buttonhovercolor);
|
||||
#menutabs &, & {
|
||||
background-color: var(--buttonhoverbackgroundcolor);
|
||||
color: var(--buttonhovercolor);
|
||||
}
|
||||
}
|
||||
.ui-tab.ui-state-hover a {
|
||||
color: var(--buttonhovercolor);
|
||||
.ui-tab.ui-state-hover {
|
||||
a,
|
||||
.tabclose,
|
||||
.tabpinned {
|
||||
color: var(--buttonhovercolor);
|
||||
}
|
||||
}
|
||||
.ui-tab.ui-state-active {
|
||||
border: 1px solid #aaa;
|
||||
@@ -2454,8 +2474,8 @@ div.wbackground {
|
||||
overflow: hidden;
|
||||
text-overflow: ellipsis;
|
||||
display: -webkit-box;
|
||||
-webkit-line-clamp: 5;
|
||||
line-clamp: 5;
|
||||
-webkit-line-clamp: 6;
|
||||
line-clamp: 6;
|
||||
-webkit-box-orient: vertical;
|
||||
}
|
||||
}
|
||||
@@ -2484,6 +2504,9 @@ div.wbackground {
|
||||
right: -4rem;
|
||||
}
|
||||
}
|
||||
.fclt-news-content {
|
||||
line-height: calc(1rem + 1px);
|
||||
}
|
||||
#mynewscontainer {
|
||||
display: inline;
|
||||
}
|
||||
@@ -2957,16 +2980,18 @@ i + .dialogtext {
|
||||
&:hover {
|
||||
color: var(--buttonhovercolor);
|
||||
text-decoration: none;
|
||||
background: var(--buttonhoverbackgroundcolor) radial-gradient(circle, transparent 1%, var(--buttonhoverbackgroundcolor) 1%) center/15000%;
|
||||
background: var(--buttonhoverbackgroundcolor) radial-gradient(circle, transparent 1%, var(--buttonhoverbackgroundcolor) 1%) center/15000%;
|
||||
}
|
||||
}
|
||||
|
||||
#buttons ul li.emphasishigh:active,
|
||||
#linkOk:active, #besfavbtnall:active,
|
||||
#buttons ul li.emphasismedium:active {
|
||||
background-color: var(--buttonhovercolor);
|
||||
color: var(--buttonhoverbackgroundcolor);
|
||||
background-size: 100%;
|
||||
#buttons ul li.emphasishigh,
|
||||
#linkOk,
|
||||
#besfavbtnall,
|
||||
#buttons ul li.emphasismedium {
|
||||
&:active {
|
||||
background-color: var(--buttonhovercolor);
|
||||
background-size: 100%;
|
||||
}
|
||||
}
|
||||
|
||||
#buttons ul li.emphasislow:active {
|
||||
@@ -3597,10 +3622,15 @@ div.mldhandlinghead {
|
||||
{
|
||||
color: var(--tableheadercolor);
|
||||
background-color: var(--tableheaderbackgroundcolor);
|
||||
font-weight: normal;
|
||||
border-top: 1px solid var(--fclt-color-grey-50);
|
||||
border-right: 1px ridge #ccc;
|
||||
border-bottom: 1px solid var(--fclt-color-grey-50);
|
||||
white-space: nowrap;
|
||||
padding: 2px 3px 2px 3px; /* want tfoot td = th */
|
||||
font-weight: normal;
|
||||
&:is(th) {
|
||||
font-weight: 600;
|
||||
}
|
||||
}
|
||||
.rstable :is(thead th,
|
||||
tfoot td):first-child {
|
||||
@@ -5150,7 +5180,6 @@ li.mk:hover {
|
||||
background-color: var(--menukophoverbackgroundcolor)!important;
|
||||
}
|
||||
li.mk:hover span.menukop,
|
||||
li.mk:hover span.micon i,
|
||||
.withaction:hover i {
|
||||
color: var(--menukophovercolor)!important;
|
||||
}
|
||||
@@ -5524,16 +5553,19 @@ td.bessrtdeelfoto {
|
||||
}
|
||||
:is(#portalmenu, .widget-type-mk, .widget-type-mi) :is(.widget-menu-image, .menuimg) i {
|
||||
font-size: 4em;
|
||||
background: var(--menuiconcolor-gradient);
|
||||
background-clip: text; /* Gradient op tekst toepassen */
|
||||
-webkit-text-fill-color: transparent; /* Tekstkleur transparant maken zodat gradient zichtbaar is */
|
||||
}
|
||||
#menutabs .micon i {
|
||||
color: var(--menuiconcolor);
|
||||
}
|
||||
:is(#portalmenu, .widget-type-mk, .widget-type-mi) :is(.widget-menu-image, .menuimg) i,
|
||||
#menutabs .micon i {
|
||||
display: inline-block; /* Zorgt dat de icons inline met tekst blijven */
|
||||
line-height: 1.2; /* Verticale uitlijning binnen icon */
|
||||
padding-top: 2px; /* Ruimte boven icon */
|
||||
background: var(--menuiconcolor-gradient);
|
||||
background-clip: text; /* Gradient op tekst toepassen */
|
||||
-webkit-text-fill-color: transparent; /* Tekstkleur transparant maken zodat gradient zichtbaar is */
|
||||
transition: transform var(--fclt-animation-duration-s) ease; /* Gestandaardiseerd (fclt-card) */
|
||||
transition: transform var(--fclt-animation-duration-s) ease-in-out; /* Gestandaardiseerd (fclt-card) */
|
||||
}
|
||||
|
||||
/* ---------------------------------------------------
|
||||
@@ -7163,8 +7195,8 @@ iframe.inactive {
|
||||
display: flex;
|
||||
justify-content: center;
|
||||
align-items: center;
|
||||
background-color: var(--frameheaderbackgroundcolor);
|
||||
color: var(--frameheadercolor);
|
||||
background-color: var(--tableheaderbackgroundcolor);
|
||||
color: var(--tableheadercolor);
|
||||
margin: 0.5rem;
|
||||
padding: 0.5rem 1rem;
|
||||
border-radius: var(--fclt-border-radius);
|
||||
@@ -7443,13 +7475,24 @@ figure img {
|
||||
}
|
||||
|
||||
section.edit-note,
|
||||
.mldshowactie.fclt-info {
|
||||
background-color: rgba(255, 255, 255, 0.5);
|
||||
.mldshowactie:is(.fclt-info, .fclt-warning) {
|
||||
border: 1px solid var(--notesbackgroundcolor);
|
||||
border-radius: 0 0 var(--fclt-border-radius-lg) var(--fclt-border-radius-lg);
|
||||
transition: filter 150ms ease;
|
||||
}
|
||||
.noti-info + .mldshowactie.fclt-info {
|
||||
|
||||
section.edit-note {
|
||||
background-color: rgba(255, 255, 255, 0.5);
|
||||
}
|
||||
.mldshowactie.fclt-info {
|
||||
background-color: var(--fclt-color-neutral-contrast);
|
||||
color: var(--fclt-color-neutral);
|
||||
}
|
||||
.mldshowactie.fclt-warning {
|
||||
background-color: var(--fclt-color-bad-contrast);
|
||||
color: var(--fclt-color-bad);
|
||||
}
|
||||
.noti-info + .mldshowactie:is(.fclt-info, .fclt-warning) {
|
||||
border-radius: var(--fclt-border-radius-lg);
|
||||
}
|
||||
|
||||
@@ -7570,8 +7613,8 @@ section.edit-note.dragon {
|
||||
|
||||
.note-icon {
|
||||
font-size: 16px;
|
||||
color: var(--notesbackgroundcolor);
|
||||
outline-color: var(--notesbackgroundcolor); /* Als je er naar tab't */
|
||||
color: var(--textcolor);
|
||||
outline-color: var(--textcolor); /* Als je er naar tab't */
|
||||
margin: auto 0 auto 0.25em;
|
||||
}
|
||||
.note-submit-wrapper {
|
||||
@@ -8201,7 +8244,7 @@ label[data-toggle-type] + input[type=checkbox] {
|
||||
.notes-wrapper .note-top-button:hover {
|
||||
opacity: 1;
|
||||
color: #fff;
|
||||
background: var(--notesbackgroundcolor) radial-gradient(circle, transparent 1%, var(--notesbackgroundcolor) 1%) center/15000%;
|
||||
background: var(--notesbackgroundcolor) radial-gradient(circle, transparent 1%, var(--notesbackgroundcolor) 1%) center/15000%;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -8,7 +8,7 @@
|
||||
Context: Vanuit ELK asp bestand
|
||||
*/
|
||||
|
||||
var FCLTVersion="2025.3RC1";
|
||||
var FCLTVersion="2025.4";
|
||||
var FCLTMinDatabaseSchema="52"; // Alleen de cijfers
|
||||
|
||||
var custpath = rooturl + "/cust/" + customerId; // path to customer files
|
||||
|
||||
@@ -150,7 +150,7 @@
|
||||
|
||||
var waarde = nodelist.nextNode().text;
|
||||
|
||||
var safepairs = "h1,h2,h3,h4,h5,h6,b,i,u,em,strong,small,big,th,td,tr,table,pre,code".split(",");
|
||||
var safepairs = "h1,h2,h3,h4,h5,h6,b,i,u,s,em,strong,small,big,th,td,tr,table,pre,code".split(",");
|
||||
var safehtml = safe.html(waarde); // Let op: vervangt *alle* \n door <br>. Dat gaan we deels later nog terugdraaien
|
||||
// We hebben het wel *nodig* omdat .* niet over meerdere regels werkt (hoewel dat
|
||||
// weer oplosbaar schijnt te zijn met [\s\S])
|
||||
@@ -218,7 +218,8 @@
|
||||
var groups = matched[i].match(new RegExp(strre, "i")); // Zonder 'g'lobal-flag
|
||||
if (groups) {
|
||||
if (module && key) {
|
||||
var frc = '<img frc="M=' + module + ':K=' + key + '"/>';
|
||||
var filename = groups[1];
|
||||
var frc = '<img frc="M=' + module + ':K=' + key + ':F=' + encodeURIComponent(filename) + '"/>';
|
||||
safehtml = safehtml.replace(matched[i], frc);
|
||||
} else { // Dan maar strippen
|
||||
safehtml = safehtml.replace(matched[i], "[Image]");
|
||||
@@ -3339,7 +3340,8 @@ END:VCALENDAR
|
||||
.stat-1 { background-color: #003366; color:white;}
|
||||
.stat-1b { background-color: #FFC7CE; color: #CC0000;}
|
||||
.stat0 { background-color: #FFA500;}
|
||||
.stat2 { background-color: #FFFF00;}
|
||||
.stat2 { background-color: #B9D7FF;}
|
||||
.stat3 { background-color: #FFFFC8;}
|
||||
.statc1 { background-color: #339933; color:white;}
|
||||
.statc0 { background-color: #990000; color:white;}
|
||||
</style>
|
||||
@@ -3366,7 +3368,9 @@ END:VCALENDAR
|
||||
if (pstatus == 0) td.innerHTML = "P"; // ingepland
|
||||
if (pstatus == 0) td.style.backgroundColor = "#FFA500";
|
||||
if (pstatus == 2) td.innerHTML = "S"; // gestart
|
||||
if (pstatus == 2) td.style.backgroundColor = "#FFFF00";
|
||||
if (pstatus == 2) td.style.backgroundColor = "#B9D7FF";
|
||||
if (pstatus == 3) td.innerHTML = "U"; // in uitvoering
|
||||
if (pstatus == 3) td.style.backgroundColor = "#FFFFC8";
|
||||
if (ctrmodesuccess == 1) td.innerHTML = "G"; // succesvol
|
||||
if (ctrmodesuccess == 1) td.style.backgroundColor = "#339933";
|
||||
if (ctrmodesuccess == 1) td.style.color = "#FFFFFF";
|
||||
@@ -3676,6 +3680,7 @@ END:VCALENDAR
|
||||
<span class="stat-1b">T</span><span>Te laat</span>
|
||||
<span class="stat0">P</span><span >Gepland</span>
|
||||
<span class="stat2">S</span><span>Gestart</span>
|
||||
<span class="stat3">U</span><span>In uitvoering</span>
|
||||
<span class="statc1">G</span><span>Succesvol uitgevoerd</span>
|
||||
<span class="statc0">F</span><span>Onsuccesvol uitgevoerd</span>
|
||||
</div>
|
||||
|
||||
@@ -457,39 +457,40 @@ FCLTHeader =
|
||||
}
|
||||
}
|
||||
|
||||
// Contrast ratio between two colors
|
||||
function contrast(hex1, hex2) {
|
||||
var L1 = luminance(hex1);
|
||||
var L2 = luminance(hex2);
|
||||
if (L1 < L2) {
|
||||
var t = L1; L1 = L2; L2 = t;
|
||||
}
|
||||
return (L1 + 0.05) / (L2 + 0.05);
|
||||
}
|
||||
|
||||
// Compute WCAG relative luminance
|
||||
function luminance(hex) {
|
||||
var c = hexToRgb(hex);
|
||||
var r = c.r / 255, g = c.g / 255, b = c.b / 255;
|
||||
|
||||
r = r <= 0.03928 ? r / 12.92 : Math.pow((r + 0.055) / 1.055, 2.4);
|
||||
g = g <= 0.03928 ? g / 12.92 : Math.pow((g + 0.055) / 1.055, 2.4);
|
||||
b = b <= 0.03928 ? b / 12.92 : Math.pow((b + 0.055) / 1.055, 2.4);
|
||||
|
||||
return 0.2126 * r + 0.7152 * g + 0.0722 * b;
|
||||
}
|
||||
|
||||
// Convert #RRGGBB to {r,g,b} (0<>255)
|
||||
function hexToRgb(hex) {
|
||||
var value = parseInt(hex.substring(1), 16);
|
||||
return {
|
||||
r: (value >> 16) & 255,
|
||||
g: (value >> 8) & 255,
|
||||
b: value & 255
|
||||
};
|
||||
}
|
||||
|
||||
// Chooses one of two colors (colorA or colorB) based on which has better contrast with a given base color
|
||||
function _pickContrastColor(baseColor, colorList) {
|
||||
// Convert #RRGGBB to {r,g,b} (0<>255)
|
||||
function hexToRgb(hex) {
|
||||
var value = parseInt(hex.substring(1), 16);
|
||||
return {
|
||||
r: (value >> 16) & 255,
|
||||
g: (value >> 8) & 255,
|
||||
b: value & 255
|
||||
};
|
||||
}
|
||||
|
||||
// Compute WCAG relative luminance
|
||||
function luminance(hex) {
|
||||
var c = hexToRgb(hex);
|
||||
var r = c.r / 255, g = c.g / 255, b = c.b / 255;
|
||||
|
||||
r = r <= 0.03928 ? r / 12.92 : Math.pow((r + 0.055) / 1.055, 2.4);
|
||||
g = g <= 0.03928 ? g / 12.92 : Math.pow((g + 0.055) / 1.055, 2.4);
|
||||
b = b <= 0.03928 ? b / 12.92 : Math.pow((b + 0.055) / 1.055, 2.4);
|
||||
|
||||
return 0.2126 * r + 0.7152 * g + 0.0722 * b;
|
||||
}
|
||||
|
||||
// Contrast ratio between two colors
|
||||
function contrast(hex1, hex2) {
|
||||
var L1 = luminance(hex1);
|
||||
var L2 = luminance(hex2);
|
||||
if (L1 < L2) {
|
||||
var t = L1; L1 = L2; L2 = t;
|
||||
}
|
||||
return (L1 + 0.05) / (L2 + 0.05);
|
||||
}
|
||||
|
||||
// Iterate through all colors and find the one with the highest contrast
|
||||
var bestColor = null;
|
||||
@@ -562,16 +563,62 @@ FCLTHeader =
|
||||
}
|
||||
}
|
||||
|
||||
var white = "#FFFFFF"
|
||||
var aareonBlack = "#081326";
|
||||
var mainColor = custtemplate["main-color"] || this.defaultTemplate["main-color"];
|
||||
var accentColor = custtemplate["accent-color"] || this.defaultTemplate["accent-color"];
|
||||
|
||||
var mainColorContrast = _pickContrastColor(mainColor, ["#FFFFFF", aareonBlack, accentColor]);
|
||||
var accentColorContrast = _pickContrastColor(accentColor, ["#FFFFFF", aareonBlack, mainColor]);
|
||||
var mainColorContrastOptions = [white, aareonBlack, accentColor];
|
||||
var mainColorContrastIndex = custtemplate["main-color-contrast"] || 0;
|
||||
var mainColorContrast;
|
||||
if (mainColorContrastIndex) {
|
||||
mainColorContrast = mainColorContrastOptions[mainColorContrastIndex - 1];
|
||||
} else {
|
||||
mainColorContrast = _pickContrastColor(mainColor, mainColorContrastOptions);
|
||||
}
|
||||
|
||||
var accentColorContrastOptions = [white, aareonBlack, mainColor];
|
||||
var accentColorContrastIndex = custtemplate["accent-color-contrast"] || 0;
|
||||
var accentColorContrast;
|
||||
if (accentColorContrastIndex) {
|
||||
accentColorContrast = accentColorContrastOptions[accentColorContrastIndex - 1];
|
||||
} else {
|
||||
accentColorContrast = _pickContrastColor(accentColor, accentColorContrastOptions);
|
||||
}
|
||||
|
||||
inCss += "--main-color-contrast: " + mainColorContrast + ";\n";
|
||||
inCss += "--accent-color-contrast: " + accentColorContrast + ";\n";
|
||||
|
||||
var frameHeaderBackgroundColorOptions = [
|
||||
"#F2F2F2",
|
||||
"color-mix(in srgb, var(--main-color) 10%, rgb(255, 255, 255))",
|
||||
"color-mix(in srgb, var(--main-color) 50%, rgb(255, 255, 255))",
|
||||
"color-mix(in srgb, var(--main-color) 90%, rgb(255, 255, 255))"
|
||||
];
|
||||
var frameHeaderBackgroundColorIndex = custtemplate["frameheader-bg-color"] || 0;
|
||||
var frameHeaderBackgroundColor = frameHeaderBackgroundColorOptions[frameHeaderBackgroundColorIndex];
|
||||
|
||||
var frameHeaderColorOptions = [
|
||||
"var(--headertextcolor)",
|
||||
"var(--headertextcolor)",
|
||||
"var(--headertextcolor)",
|
||||
"var(--main-color-contrast)"
|
||||
];
|
||||
var frameHeaderColor = frameHeaderColorOptions[frameHeaderBackgroundColorIndex];
|
||||
|
||||
inCss += "--frameheaderbackgroundcolor: " + frameHeaderBackgroundColor + ";\n";
|
||||
inCss += "--frameheadercolor: " + frameHeaderColor + ";\n";
|
||||
|
||||
var menuBackgroundColor = "#F2F2F2"; // Zie ook: variables.css
|
||||
var menuiconColor = mainColor;
|
||||
if (contrast(menuBackgroundColor, menuiconColor) < 3) { // Voldoet dit wel aan de WCAG? (>= 3.0)
|
||||
menuiconColor = accentColor;
|
||||
}
|
||||
if (contrast(menuBackgroundColor, menuiconColor) < 3) { // Nu dan?
|
||||
menuiconColor = aareonBlack;
|
||||
}
|
||||
inCss += "--menuiconcolor: " + menuiconColor + ";\n";
|
||||
|
||||
inCss += "}";
|
||||
|
||||
var outFile = _getFileByFilename.call(this, outfname);
|
||||
@@ -633,7 +680,7 @@ FCLTHeader =
|
||||
+ " JOIN fac_setting fs ON fs.fac_setting_key = fa.fac_audit_tabelkey"
|
||||
+ " WHERE fa.fac_audit_tabelnaam = 'fac_setting'"
|
||||
+ " AND fa.fac_audit_veldnaam = 'fac_setting_pvalue'"
|
||||
+ " AND fs.fac_setting_name IN ('csstemplate', 'custcss')";
|
||||
+ " AND fs.fac_setting_name IN ('csstemplate', 'csscust')";
|
||||
var oRs = Oracle.Execute(sql);
|
||||
var lastChanged = oRs("last_changed").Value;
|
||||
if (lastChanged === null) {
|
||||
|
||||
@@ -19,6 +19,7 @@ var autfunction_arr = getQParamArray("autfunction", []); // Check of user recht
|
||||
var disctype = getQParamInt("disctype", -1); // Vakgroeptype.
|
||||
var disc_key_arr = getQParamIntArray("disc_key_str", []); // Vakgroep Array.
|
||||
var offerte = getQParamInt("offerte", -1);
|
||||
var selectjustone = getQParamInt("selectjustone", 0) == 1;
|
||||
|
||||
var discsql_aut = "SELECT ins_discipline_key"
|
||||
+ " FROM fac_v_webgebruiker g"
|
||||
@@ -32,13 +33,13 @@ var discsql = "SELECT bd.ins_discipline_key"
|
||||
+ " , " + lcl.xsqla('bd.ins_discipline_omschrijving','bd.ins_discipline_key')
|
||||
+ " FROM bes_discipline bd"
|
||||
+ " WHERE bd.ins_discipline_verwijder IS NULL"
|
||||
+(disctype == 2
|
||||
+(disctype <= 2
|
||||
? " AND bd.ins_discipline_key IN (SELECT dp.bes_ins_discipline_key_inkoop"
|
||||
+ " FROM bes_disc_params dp"
|
||||
+ " WHERE dp.bes_ins_discipline_key_inkoop IS NOT NULL)"
|
||||
: "")
|
||||
+ " AND bd.ins_discipline_key IN (" + discsql_aut + ")"
|
||||
+ (disctype > 0
|
||||
+ (disctype >= 0
|
||||
? " AND bd.ins_discipline_key IN (SELECT bes_ins_discipline_key"
|
||||
+ " FROM bes_disc_params"
|
||||
+ " WHERE bes_disc_params_bestelmode = " + disctype + ")"
|
||||
@@ -51,7 +52,8 @@ var discsql = "SELECT bd.ins_discipline_key"
|
||||
FCLTselectorOptions(discsql,
|
||||
{ initKey: disc_key_arr.join(","),
|
||||
onChange: 'updateSrtGroup("' + autfunction_arr.join(",") + '");',
|
||||
emptyOption: (disc_key_arr.length == 0 ? L("lcl_search_generic") : null) // Als een disc_key_arr is meegegeven dan geen lege optie
|
||||
emptyOption: (disc_key_arr.length == 0 ? L("lcl_search_generic") : null), // Als een disc_key_arr is meegegeven dan geen lege optie
|
||||
selectjustone: selectjustone? true : false
|
||||
});
|
||||
%>
|
||||
mo
|
||||
|
||||
@@ -20,6 +20,7 @@ var module = getQParam("module", ""); // Module die de ins_srtgroep-en opvraagt
|
||||
var multi = (getQParamInt("multi", 0) == 1);
|
||||
var size = getQParamInt("size", 4);
|
||||
var emptyOption = getQParam("emptyOption", null);
|
||||
var selectjustone = getQParamInt("selectjustone", 0) == 1;
|
||||
var selectfirstone = (getQParamInt("selectfirstone", 0) == 1);
|
||||
var onChange = getQParam("onChange", "");
|
||||
var required = (getQParamInt("required", 0) == 1);
|
||||
@@ -56,10 +57,12 @@ var params = { initKey: srtgroup_arr.join(","),
|
||||
|
||||
if (emptyOption != null)
|
||||
params.emptyOption = emptyOption;
|
||||
if (selectjustone)
|
||||
params.selectjustone = selectjustone;
|
||||
if (selectfirstone)
|
||||
params.selectfirstone = selectfirstone;
|
||||
|
||||
FCLTselectorOptions(sql,
|
||||
params);
|
||||
%>
|
||||
<% ASPPAGE_END(); %>
|
||||
<% ASPPAGE_END(); %>
|
||||
|
||||
@@ -23,6 +23,7 @@ var module = getQParam("module", ""); // Module die de ins_srtgroep-en opvraagt
|
||||
var multi = (getQParamInt("multi", 0) == 1);
|
||||
var size = getQParamInt("size", 4);
|
||||
var emptyOption = getQParam("emptyOption", null);
|
||||
var selectjustone = getQParamInt("selectjustone", 0) == 1;
|
||||
var selectfirstone = (getQParamInt("selectfirstone", 0) == 1);
|
||||
var extraParamValue = getQParam("extraParamValue", "");
|
||||
var required = (getQParamInt("required", 0) == 1);
|
||||
@@ -92,6 +93,8 @@ if (extraParamValue != "")
|
||||
params.extraParamValue = extraParamValue;
|
||||
if (emptyOption != null)
|
||||
params.emptyOption = emptyOption;
|
||||
if (selectjustone)
|
||||
params.selectjustone = selectjustone;
|
||||
if (selectfirstone)
|
||||
params.selectfirstone = selectfirstone;
|
||||
|
||||
|
||||
@@ -220,7 +220,7 @@ notes =
|
||||
if (_hasUitv(u.uitv_key, i)) { // Hebben we 2 opdrachten met dezelfde uitvoerder -> dan prefixen met opdracht_nr
|
||||
u.uitv_naam = L("lcl_shared_order") + " " + u.opdr_volgnr + ": " + u.uitv_naam;
|
||||
}
|
||||
Response.Write(_fnTogglesHtml({ to: BITROLE["UITV"], to_name: u.uitv_naam, opdr_key: u.opdr_key, uid: u.opdr_volgnr, has: 8, val: (openVraagRequired && i == 0 ? 8 : 0) }));
|
||||
Response.Write(_fnTogglesHtml({ to: BITROLE["UITV"], to_name: u.uitv_naam, opdr_key: u.opdr_key, uid: u.opdr_volgnr, has: 8, val: (i == 0 ? 8 : 0) }));
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -744,7 +744,7 @@ notes =
|
||||
// Melding afgemeld en attentie bij de melder.
|
||||
ROFIELDTR("mldshowactie fclt-info", "", L("lcl_mld_actiecodeATTFE"), {ishtmlsafe: true, suppressEmpty: true});
|
||||
else
|
||||
Response.Write("<div class='mldshowactie fclt-info'> " + L("lcl_" + pmodule.toLowerCase() + "_edit_note_completed") + "</div>");
|
||||
Response.Write("<div class='mldshowactie fclt-warning'> " + L("lcl_" + pmodule.toLowerCase() + "_edit_note_completed") + "</div>");
|
||||
}
|
||||
var form_action = pmodule.toLowerCase() + "_edit_note_save.asp"
|
||||
+ "?" + pmodule.toLowerCase() + "_key=" + pkey
|
||||
|
||||
@@ -290,7 +290,8 @@ ResultsetTable.prototype.ProcessAsXMLXSL = function()
|
||||
var theSqlFlex = "";
|
||||
if (this.printFlex)
|
||||
theSqlFlex = getSqlFlex(flexModule.toUpperCase(), flexId, this.myRs(flexParams, oRs));
|
||||
for (var cnt = 0; !oRs.EOF; cnt++)
|
||||
// nooit meer dan qp_maxrows2
|
||||
for (var cnt = 0; !oRs.EOF && cnt < S("qp_maxrows2"); cnt++)
|
||||
{
|
||||
// Vooralsnog geen flex
|
||||
var elementRecord = xmlDoc.createElement("data_row");
|
||||
@@ -1554,7 +1555,7 @@ function __rsProcessResultset(processParams) // processParams wordt blind aan al
|
||||
|
||||
// Op regel klikken om de overige regels op te halen, boven de tabel
|
||||
html = "<div id='rsMaxHistoryB'><span id='rsMaxHistoryInfoB'>"
|
||||
+ (cnt <= S("qp_maxrows") + nrOutOfFilter
|
||||
+ (cnt <= S("qp_maxrows") + nrOutOfFilter && S("qp_maxrows") != S("qp_maxrows2")
|
||||
? a_element.replace(/&collapsed=1/gi, "") // Als er op deze regel wordt geklikt moet IFRAMER niet meer dichtgeklapt worden, dus &collapsed=1 verwijderen uit de link.
|
||||
: L("lcl_qp_maxrows2").format(S("qp_maxrows2"))
|
||||
)
|
||||
@@ -1659,7 +1660,7 @@ function __rsProcessResultset(processParams) // processParams wordt blind aan al
|
||||
|
||||
// Op regel klikken om de overige regels op te halen, onder de tabel
|
||||
html = "\n<div id='rsMaxHistoryE'><span id='rsMaxHistoryInfoE'>"
|
||||
+ (cnt <= S("qp_maxrows") + nrOutOfFilter
|
||||
+ (cnt <= S("qp_maxrows") + nrOutOfFilter && S("qp_maxrows") != S("qp_maxrows2")
|
||||
? a_element
|
||||
: L("lcl_qp_maxrows2").format(S("qp_maxrows2"))
|
||||
)
|
||||
|
||||
@@ -205,24 +205,33 @@ function buildTrackText(typ, oldjsval, newjsval, params)
|
||||
}
|
||||
else
|
||||
{
|
||||
var stringifyParams = {};
|
||||
if (typ == "datetime" || typ == "date" || typ == "time") {
|
||||
if (params.track_in_tz) {
|
||||
oldjsval = convertToLocalTime(oldjsval, params.track_in_tz);
|
||||
newjsval = convertToLocalTime(newjsval, params.track_in_tz);
|
||||
stringifyParams.isLocal = true;
|
||||
}
|
||||
}
|
||||
|
||||
switch (typ)
|
||||
{
|
||||
case "datetime":
|
||||
{
|
||||
var oldtxt = toDateTimeString(oldjsval);
|
||||
var newtxt = toDateTimeString(newjsval);
|
||||
var oldtxt = toDateTimeString(oldjsval, stringifyParams);
|
||||
var newtxt = toDateTimeString(newjsval, stringifyParams);
|
||||
break;
|
||||
}
|
||||
case "date":
|
||||
{
|
||||
var oldtxt = toDateString(oldjsval);
|
||||
var newtxt = toDateString(newjsval);
|
||||
var oldtxt = toDateString(oldjsval, stringifyParams);
|
||||
var newtxt = toDateString(newjsval, stringifyParams);
|
||||
break;
|
||||
}
|
||||
case "time":
|
||||
{
|
||||
var oldtxt = toTimeString(oldjsval);
|
||||
var newtxt = toTimeString(newjsval);
|
||||
var oldtxt = toTimeString(oldjsval, stringifyParams);
|
||||
var newtxt = toTimeString(newjsval, stringifyParams);
|
||||
break;
|
||||
}
|
||||
case "key": // hash foreign moet ook gedefinieerd zijn
|
||||
@@ -525,10 +534,14 @@ function buildTrackingUpdate(tabel, where, xfields, params)
|
||||
var lbl = tupel.field.track;
|
||||
// if (params.dialect_key)
|
||||
// lbl = lcl.x(tupel.field.track, params.dialect_key);
|
||||
var trackParams = { foreign: tupel.field.foreign, oldjsvals: oldjsvals };
|
||||
if ("track_in_tz" in tupel.field) {
|
||||
trackParams.track_in_tz = tupel.field.track_in_tz;
|
||||
}
|
||||
if (tupel.field.buildTrackText)
|
||||
var tracktxt = tupel.field.buildTrackText(tupel.field.typ, oldjsval, tupel.jsval, { foreign: tupel.field.foreign, oldjsvals: oldjsvals } );
|
||||
var tracktxt = tupel.field.buildTrackText(tupel.field.typ, oldjsval, tupel.jsval, trackParams);
|
||||
else
|
||||
var tracktxt = lbl + ": " + buildTrackText(tupel.field.typ, oldjsval, tupel.jsval, { foreign: tupel.field.foreign, oldjsvals: oldjsvals } );
|
||||
var tracktxt = lbl + ": " + buildTrackText(tupel.field.typ, oldjsval, tupel.jsval, trackParams);
|
||||
trackarray.push( (params.includeName ? params.includeName + "; " : "") + tracktxt);
|
||||
}
|
||||
oldjsvals[tupel.field.dbs] = oldjsval;
|
||||
|
||||
@@ -19,25 +19,24 @@ function FCLTtimezoneselector(fieldName, params)
|
||||
if (typeof params == "undefined") params = {};
|
||||
|
||||
// Wat we opslaan is een IANA string. Door readonly hier te ondersteunen regelen we de presentatie centraal
|
||||
var sql = "SELECT DISTINCT tzname,"
|
||||
var sql = "SELECT tzname,"
|
||||
+ " '(UTC ' || RTRIM(TZ_OFFSET(tzname), CHR(0)) || ') ' || tzname AS label"
|
||||
+ " FROM V$TIMEZONE_NAMES"
|
||||
+ ((params.readonly && params.initVal != "") // als die NULL is, levert dit -terecht- ook niks op, gewenst sideeffect
|
||||
? " WHERE tzname = " + safe.quoted_sql(params.initVal) // alleen de initVal tonen, dit is geen key
|
||||
: " WHERE tzname LIKE '%/%'" // alleen continent/stad-format
|
||||
+ " AND NOT tzname LIKE '%GMT%'" // filter aliassen
|
||||
+ "AND ("
|
||||
+ " tzname LIKE 'Europe/%' OR"
|
||||
+ " tzname LIKE 'America/%' OR"
|
||||
+ " tzname LIKE 'Asia/%' OR"
|
||||
+ " tzname LIKE 'Australia/%' OR"
|
||||
+ " tzname LIKE 'Africa/%' OR"
|
||||
+ " tzname LIKE 'Pacific/%'"
|
||||
+ ")"
|
||||
+ "GROUP BY tzname, TZ_OFFSET(tzname)"
|
||||
+ "ORDER BY TO_NUMBER(SUBSTR(TZ_OFFSET(tzname), 1, 3)"
|
||||
+ " || SUBSTR(TZ_OFFSET(tzname), 5, 2)) ASC,"
|
||||
+ " tzname"
|
||||
: " WHERE NOT tzname LIKE '%GMT%'" // filter aliassen
|
||||
+ " AND ("
|
||||
+ " tzname LIKE 'Europe/%' OR"
|
||||
+ " tzname LIKE 'America/%' OR"
|
||||
+ " tzname LIKE 'Asia/%' OR"
|
||||
+ " tzname LIKE 'Australia/%' OR"
|
||||
+ " tzname LIKE 'Africa/%' OR"
|
||||
+ " tzname LIKE 'Pacific/%'" // En deze dan; [Antarctica, Atlantic, Arctic, Brazil, Canada, Chile, Indian, Mexico, US] ?
|
||||
+ " )"
|
||||
+ " GROUP BY tzname, TZ_OFFSET(tzname)"
|
||||
+ " ORDER BY TO_NUMBER(SUBSTR(TZ_OFFSET(tzname), 1, 3)"
|
||||
+ " || SUBSTR(TZ_OFFSET(tzname), 5, 2)) ASC,"
|
||||
+ " tzname"
|
||||
);
|
||||
|
||||
// de FCLTselector doet het niet lekker met initVal, readonly en suppressEmpty
|
||||
|
||||
@@ -86,11 +86,13 @@
|
||||
--fclt-color-grey-40: color-mix(in srgb, var(--aareon-urban-grey) 40%, transparent);
|
||||
|
||||
/* General */
|
||||
--fclt-color-grey: rgb(128, 128, 128);
|
||||
--fclt-color-grey-50: rgba(128, 128, 128, 0.5);
|
||||
--fclt-color-bad: rgb(156, 0, 6);
|
||||
--fclt-color-bad-contrast: rgb(255, 199, 206);
|
||||
--fclt-color-good: rgb(0, 97, 0);
|
||||
--fclt-color-good-contrast: rgb(198, 239, 206);
|
||||
--fclt-color-neutral: rgb(94, 61, 0);;
|
||||
--fclt-color-neutral: rgb(94, 61, 0);
|
||||
--fclt-color-neutral-contrast: rgb(255, 235, 156);
|
||||
|
||||
--fclt-color-red: rgb(236, 24, 24);
|
||||
@@ -155,7 +157,7 @@
|
||||
--portalkopcolor: var(--textcolor);
|
||||
--headercolor: var(--headertextcolor);
|
||||
|
||||
--activetabbackgroundcolor: #FEFEFE; /* 99.5% wit, 0.5% zwart */
|
||||
--activetabbackgroundcolor: #FCFCFC; /* 99% wit, 1% zwart */
|
||||
--activetabcolor: var(--headertextcolor);
|
||||
--inactivetabbackgroundcolor: #E6E6E6; /* 90% wit, 10% zwart */;
|
||||
--inactivetabcolor: var(--textcolor);
|
||||
@@ -167,13 +169,13 @@
|
||||
--buttonbackgroundcolormediumlow: #F2F2F2; /* 95% wit, 5% zwart */;
|
||||
--buttoncolormediumlow: var(--headertextcolor);
|
||||
|
||||
--frameheaderbackgroundcolor: #F2F2F2; /* 95% wit, 5% zwart */;
|
||||
--frameheadercolor: var(--headertextcolor); /* accent-light is licht genoeg om hoog contrast te garanderen */
|
||||
/* berekend; --frameheaderbackgroundcolor: #F2F2F2; /* 95% wit, 5% zwart */;
|
||||
/* berekend; --frameheadercolor: var(--headertextcolor); /* accent-light is licht genoeg om hoog contrast te garanderen */
|
||||
|
||||
--inlineactionbackgroundcolor: var(--main-color-contrast);
|
||||
--inlineactioncolor: var(--main-color);
|
||||
|
||||
--menubackgroundcolor: #F2F2F2; /* 95% wit, 5% zwart */;
|
||||
--menubackgroundcolor: #F2F2F2; /* 95% wit, 5% zwart, zie ook; header.inc (!) */;
|
||||
--menucolor: var(--headertextcolor);
|
||||
--menukophoverbackgroundcolor: #E6E6E6; /* 90% wit, 10% zwart */;
|
||||
--menukophovercolor: var(--headertextcolor);
|
||||
|
||||
@@ -199,17 +199,34 @@ function STR2Stream(xmlstr, xslfile, Stream, params)
|
||||
}
|
||||
else
|
||||
{
|
||||
var filedata = props.files[0];
|
||||
var fileIndex = 0;
|
||||
if (props.files.length > 1) {
|
||||
var codes = flexcode.split(":");
|
||||
for (var i = 0; i < codes.length && !fileIndex; i++) {
|
||||
var code = codes[i].substr(0,1);
|
||||
var data = codes[i].substr(2);
|
||||
if (code == "F") { // Dan is; data = filename
|
||||
for (var j = 0; j < props.files.length; j++) {
|
||||
if (props.files[j].name == data) {
|
||||
fileIndex = j;
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
var filedata = props.files[fileIndex];
|
||||
if (filedata.resized)
|
||||
var file = filedata.resized;
|
||||
else
|
||||
var file = props.AttachPath + props.files[0].name;
|
||||
var file = props.AttachPath + filedata.name;
|
||||
|
||||
|
||||
if (!fso.FileExists(file))
|
||||
{
|
||||
__DoLog("Flexcode {0}, file {1} not found".format(flexcode, file));
|
||||
var newbody = p_bodyhtml.substr(0, imgstart) + "<img src=\"MISSING_" + safe.htmlattr(props.files[0].name) + "\">" + p_bodyhtml.substr(imgend + 1);
|
||||
var newbody = p_bodyhtml.substr(0, imgstart) + "<img src=\"MISSING_" + safe.htmlattr(filedata.name) + "\">" + p_bodyhtml.substr(imgend + 1);
|
||||
p_bodyhtml = newbody;
|
||||
}
|
||||
else
|
||||
|
||||
@@ -597,6 +597,7 @@ function SLNKDWF (myProps)
|
||||
Session("lastTempW2D") = TempW2D;
|
||||
}
|
||||
myProps.tmRender = ((oSLNKDWF.usTimer - myProps.timerStart)/1000 - myProps.tmBuild).toFixed(0);
|
||||
__Log("SlnkDWF Build="+myProps.tmBuild+"ms"+ (myProps.cached?" (was cached)":"") + "; Render="+myProps.tmRender + "ms" + (mustEnd?" (mustEnd)":""));
|
||||
Response.AddHeader("SlnkDWF","B="+myProps.tmBuild+";R="+myProps.tmRender + (myProps.cached?";C=1":"") + (mustEnd?";E=1":""));
|
||||
if (mustEnd)
|
||||
Response.End; // We doen alles via 304
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user