Compare commits
80 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| d7a2fb5494 | |||
|
|
a6d4e9ad91 | ||
|
|
371daa147c | ||
|
|
18eac1490c | ||
| 374c844127 | |||
|
|
1c4f2b313b | ||
|
|
9517935e17 | ||
|
|
6ffd381e67 | ||
|
|
7179a7d07b | ||
|
|
0afeb680ca | ||
|
|
591fa3f970 | ||
|
|
292eba1e10 | ||
|
|
2154db4a27 | ||
|
|
4790ab0360 | ||
|
|
43bfa187fc | ||
|
|
e7f0a9a897 | ||
|
|
86361747ef | ||
|
|
646d29e229 | ||
|
|
f356b4b9fb | ||
|
|
7fa36d7df3 | ||
|
|
139b7ded01 | ||
|
|
9c10b5fb40 | ||
|
|
8a44183852 | ||
| 3d6b0d3462 | |||
|
|
3b213b9f5b | ||
| 9b731c4642 | |||
| ecc0218c43 | |||
|
|
41ae4148cc | ||
|
|
449060b413 | ||
|
|
2c47223b45 | ||
|
|
18f0517d99 | ||
|
|
05748d1de7 | ||
|
|
9ab731bd1f | ||
| d1767e8d6c | |||
| 59c9e6e337 | |||
|
|
a51b813142 | ||
|
|
ed0e0728f9 | ||
| 2c0b703192 | |||
|
|
38924f71c9 | ||
|
|
819119b93c | ||
|
|
6d72043bfa | ||
| 5abf1bbc8d | |||
|
|
094169cb2f | ||
|
|
e2988163dc | ||
|
|
637303608d | ||
|
|
0980028b25 | ||
|
|
6cb10bb818 | ||
|
|
c3c49895ca | ||
|
|
e78a3c30ef | ||
|
|
2375767e8c | ||
|
|
e295ec02ad | ||
|
|
8570b05fbc | ||
|
|
b5b54a5b22 | ||
|
|
73a048d788 | ||
| 2576f8265d | |||
|
|
6bbc95a5e3 | ||
|
|
a9f774e998 | ||
|
|
2a159ae719 | ||
|
|
e92477f83c | ||
|
|
8fa296251d | ||
|
|
a2ac4198b1 | ||
| 73d13809b4 | |||
|
|
855ec8f776 | ||
|
|
3be7a38080 | ||
|
|
9b32ad0951 | ||
|
|
4a740c5fa7 | ||
|
|
db76d3be03 | ||
|
|
821a7873b3 | ||
| 8138788fa7 | |||
|
|
e93fa23f21 | ||
|
|
619c2ef05a | ||
|
|
482f217959 | ||
|
|
93168d4d5e | ||
|
|
a0e992b46b | ||
|
|
de91a5f4c3 | ||
|
|
226c01effa | ||
|
|
e89ce3ce7f | ||
|
|
cebc4e2ae3 | ||
| 61376ed460 | |||
|
|
7cd47cccf7 |
@@ -47,7 +47,7 @@ FCLTHeader.Requires({ plugins:["jQuery"] });
|
||||
var data = { key: disKeyString,
|
||||
level: "D"
|
||||
};
|
||||
<% protectRequest.dataToken("data"); %>+
|
||||
<% protectRequest.dataToken("data"); %>
|
||||
$.post("alg_delete.asp", data, FcltCallbackRefresh, "json");
|
||||
}
|
||||
);
|
||||
|
||||
@@ -54,6 +54,7 @@ if (ter_key > 0)
|
||||
+ ", prs_afdeling_key"
|
||||
+ ", prs_perslid_key_verantw"
|
||||
+ ", prs_perslid_key_verantw2"
|
||||
+ ", mld_dienstniveau_key"
|
||||
+ " FROM alg_terreinsector "
|
||||
+ " WHERE alg_terreinsector_key = " + ter_key;
|
||||
|
||||
@@ -77,6 +78,7 @@ if (ter_key > 0)
|
||||
var toon_email = oRs("alg_terreinsector_toon_email").Value;
|
||||
var toon_kenteken = oRs("alg_terreinsector_toon_kentk").Value;
|
||||
var vervaldatum = oRs("alg_terreinsector_vervaldatum").Value != null ? new Date(oRs("ALG_TERREINSECTOR_VERVALDATUM").Value) : null;
|
||||
var dienstniveau = oRs("mld_dienstniveau_key").Value;
|
||||
|
||||
oRs.Close();
|
||||
}
|
||||
@@ -213,6 +215,20 @@ BLOCK_START("algter3", L("lcl_alg_gebouw_administr"), {icon: "fa-clipboard"});
|
||||
FILEPICKERTR("ter_image", L("lcl_alg_terreinsector_image"), ter_image, { "key": ter_key, "module": "ALGPHT", "readonly": !this_alg.writeman });
|
||||
BLOCK_END();
|
||||
|
||||
BLOCK_START("algter4", L("lcl_alg_gebouw_facilitair"), {icon: "fa-users-cog"});
|
||||
sql = "SELECT mld_dienstniveau_key"
|
||||
+ " , " + lcl.xsqla("mld_dienstniveau_omschr", "mld_dienstniveau_key")
|
||||
+ " FROM mld_dienstniveau"
|
||||
+ " ORDER BY UPPER(" + lcl.xsql("mld_dienstniveau_omschr", "mld_dienstniveau_key") + ")";
|
||||
FCLTselector("dienstniveau",
|
||||
sql,
|
||||
{ label: L("lcl_mld_dienst_niveau"),
|
||||
initKey: dienstniveau,
|
||||
emptyOption: "",
|
||||
readonly: !this_alg.writeman
|
||||
});
|
||||
BLOCK_END();
|
||||
|
||||
BLOCK_START("algter4", L("lcl_alg_gebouw_fysiek"), {icon: "fa-ruler-combined"});
|
||||
|
||||
RWFIELDTR("ter_opp", "fldshort", L("lcl_estate_terreinsector_man_oppervlak"), ter_opp, {maxlength: 15});
|
||||
|
||||
@@ -145,6 +145,17 @@ user.auth_required_or_abort(tobeedited > 0); // We klagen niet over enkele wel e
|
||||
emptyOption: "",
|
||||
initEmpty: true
|
||||
});
|
||||
sql = "SELECT mld_dienstniveau_key"
|
||||
+ " , " + lcl.xsqla("mld_dienstniveau_omschr", "mld_dienstniveau_key")
|
||||
+ " FROM mld_dienstniveau"
|
||||
+ " ORDER BY UPPER(" + lcl.xsql("mld_dienstniveau_omschr", "mld_dienstniveau_key") + ")";
|
||||
FCLTselector("dienstniveau",
|
||||
sql,
|
||||
{ label: L("lcl_mld_dienst_niveau"),
|
||||
emptyOption: "",
|
||||
initEmpty: true,
|
||||
readonly: !this_alg.writeuse
|
||||
});
|
||||
MODAL_BLOCK_END();
|
||||
|
||||
|
||||
|
||||
@@ -49,6 +49,8 @@ if (Request.Form("toon_kenteken").Count == 1 && getFParam("check_toon_kenteken",
|
||||
{ var toon_k = (getFParam("toon_kenteken") ? getFParam("toon_kenteken") : 0);
|
||||
fields.push({ dbs: "alg_terreinsector_toon_kentk", typ: "number", val: toon_k, track: L("lcl_estate_gebouw_toon_kenteken")});
|
||||
}
|
||||
if (Request.Form("dienstniveau").Count == 1 && getFParam("check_dienstniveau", "off") == "on")
|
||||
fields.push({ dbs: "mld_dienstniveau_key", typ: "key", frm: "dienstniveau", track: L("lcl_mld_dienst_niveau"), foreign: "mld_dienstniveau" });
|
||||
|
||||
|
||||
for (var i = 0; i < ter_key_arr.length; i++)
|
||||
|
||||
@@ -37,7 +37,8 @@ var fields = [{ dbs: "alg_terreinsector_omschrijving", typ: "varchar", frm: "ter
|
||||
{ dbs: "prs_kostenplaats_key", typ: "key", frm: "prs_kstn", track: L("lcl_prs_dept_kosten"), foreign: "PRS_KOSTENPLAATS" },
|
||||
{ dbs: "prs_afdeling_key", typ: "key", frm: "prs_afd", track: L("lcl_dep_name_level2"), foreign: "PRS_AFDELING" },
|
||||
{ dbs: "prs_perslid_key_verantw", typ: "key", frm: "verantw", track: L("lcl_alg_verantw"), foreign: "PRS_PERSLID" },
|
||||
{ dbs: "prs_perslid_key_verantw2", typ: "key", frm: "verantw2", track: L("lcl_alg_verantw2"), foreign: "PRS_PERSLID" }];
|
||||
{ dbs: "prs_perslid_key_verantw2", typ: "key", frm: "verantw2", track: L("lcl_alg_verantw2"), foreign: "PRS_PERSLID" },
|
||||
{ dbs: "mld_dienstniveau_key", typ: "key", frm: "dienstniveau", track: L("lcl_mld_dienst_niveau"), foreign: "MLD_DIENSTNIVEAU" }];
|
||||
|
||||
if (this_alg.writeman)
|
||||
{
|
||||
|
||||
@@ -125,7 +125,7 @@ sql0 = "SELECT {0} id, " // 1 query voor beide
|
||||
+ " '{2}' lbl, "
|
||||
+ " COUNT (*) val, "
|
||||
+ " '' det "
|
||||
+ " FROM ins_deel i, ins_srtdeel sd "
|
||||
+ " FROM ins_v_deelenonderdeel i, ins_srtdeel sd "
|
||||
+ " WHERE i.ins_deel_verwijder IS NULL "
|
||||
+ " AND i.ins_srtdeel_key = sd.ins_srtdeel_key"
|
||||
+ " AND sd.ins_srtdeel_verwijder IS NULL "
|
||||
@@ -139,7 +139,7 @@ sql0 = "SELECT {0} id, " // 1 query voor beide
|
||||
+ " AND r.res_ins_deel_key = i.ins_deel_key) ";
|
||||
|
||||
sql1 = "SELECT {0} id, '> ' || ins_discipline_omschrijving lbl, COUNT (*) val, '' det "
|
||||
+ " FROM ins_deel i, ins_discipline rd, ins_srtdeel sd "
|
||||
+ " FROM ins_v_deelenonderdeel i, ins_discipline rd, ins_srtdeel sd "
|
||||
+ " WHERE i.ins_discipline_key = rd.ins_discipline_key "
|
||||
+ " AND i.ins_deel_verwijder IS NULL "
|
||||
+ " AND sd.ins_srtdeel_verwijder IS NULL "
|
||||
|
||||
@@ -5,7 +5,7 @@
|
||||
|
||||
File: alg_show_regio.asp
|
||||
Status:
|
||||
Description:
|
||||
Description:
|
||||
Parameters: regio_key
|
||||
|
||||
*/ %>
|
||||
@@ -49,11 +49,8 @@ var regio_deleted = regio_exists && !!regio_data.deleted;
|
||||
function reg_delete()
|
||||
{
|
||||
FcltMgr.confirm(L("lcl_alg_del_txt_regio"), function() {
|
||||
var data = {
|
||||
action: "D"
|
||||
};
|
||||
<% protectRequest.dataToken("data"); %>
|
||||
$.post($("form[name=u2]")[0].action,
|
||||
var data = $("[name=u2]").serialize();
|
||||
$.post("alg_edit_regio_save.asp?regio_key=<%=regio_data.id%>&action=D",
|
||||
data,
|
||||
FcltCallbackClose,
|
||||
"json");
|
||||
@@ -63,8 +60,8 @@ var regio_deleted = regio_exists && !!regio_data.deleted;
|
||||
</head>
|
||||
|
||||
<body class="showmode">
|
||||
<%
|
||||
SUBFRAME_START();
|
||||
<%
|
||||
SUBFRAME_START();
|
||||
var buttons = [];
|
||||
if (!regio_deleted)
|
||||
{
|
||||
@@ -93,9 +90,9 @@ var regio_deleted = regio_exists && !!regio_data.deleted;
|
||||
onrgoed_niveau : onrgoedlvl,
|
||||
reado : true,
|
||||
this_alg : this_alg });
|
||||
%>
|
||||
</form>
|
||||
<% SUBFRAME_END(); %>
|
||||
IFACE.FORM_END();
|
||||
%> </form><%
|
||||
SUBFRAME_END(); %>
|
||||
</body>
|
||||
</html>
|
||||
<% ASPPAGE_END(); %>
|
||||
<% ASPPAGE_END(); %>
|
||||
|
||||
@@ -41,7 +41,6 @@ var sql = "SELECT ts.alg_locatie_key"
|
||||
+ " , ts.alg_terreinsector_oppervlak"
|
||||
+ " , ts.alg_terreinsector_omtrek"
|
||||
+ " , ts.alg_terreinsector_aanmaak"
|
||||
+ " , ts.alg_terreinsector_omschrijving"
|
||||
+ " , ts.alg_terreinsector_ordernr"
|
||||
+ " , ts.alg_terreinsector_image"
|
||||
+ " , ts.alg_terreinsector_toon_telef"
|
||||
@@ -59,6 +58,7 @@ var sql = "SELECT ts.alg_locatie_key"
|
||||
+ " , prs_perslid_key_verantw2"
|
||||
+ " , ts.alg_terreinsector_vervaldatum"
|
||||
+ " , ts.alg_terreinsector_verwijder"
|
||||
+ " , ts.mld_dienstniveau_key"
|
||||
+ " FROM alg_terreinsector ts"
|
||||
+ " WHERE ts.alg_terreinsector_key = " + ter_key;
|
||||
var oRs = Oracle.Execute(sql);
|
||||
@@ -71,7 +71,6 @@ var ter_sroms = oRs("srtterreinsector_oms").Value;
|
||||
var ter_opp = oRs("alg_terreinsector_oppervlak").Value;
|
||||
var ter_omt = oRs("alg_terreinsector_omtrek").Value;
|
||||
var ter_aanmk = oRs("alg_terreinsector_aanmaak").Value;
|
||||
var ter_oms = oRs("alg_terreinsector_omschrijving").Value;
|
||||
var ter_ordnr = oRs("alg_terreinsector_ordernr").Value;
|
||||
var ter_image = oRs("alg_terreinsector_image").Value;
|
||||
var toon_telefoon = oRs("alg_terreinsector_toon_telef").Value;
|
||||
@@ -85,6 +84,7 @@ var verantw_key = oRs("prs_perslid_key_verantw").Value;
|
||||
var verantw2_key = oRs("prs_perslid_key_verantw2").Value;
|
||||
var ter_deleted = oRs("alg_terreinsector_verwijder").Value != null;
|
||||
var vervaldatum = oRs("alg_terreinsector_vervaldatum").Value;
|
||||
var dienstniveau_key = oRs("mld_dienstniveau_key").Value;
|
||||
oRs.Close();
|
||||
%>
|
||||
|
||||
@@ -215,6 +215,20 @@ oRs.Close();
|
||||
FILEPICKERTR("ter_image", L("lcl_alg_terreinsector_image"), ter_image, { "key": ter_key, "module": "ALGPHT", "readonly": true });
|
||||
BLOCK_END();
|
||||
|
||||
|
||||
BLOCK_START("algter4", L("lcl_alg_gebouw_facilitair"), {icon: "fa-users-cog"});
|
||||
if (dienstniveau_key)
|
||||
{
|
||||
sql = "SELECT mld_dienstniveau_key"
|
||||
+ " , " + lcl.xsqla("mld_dienstniveau_omschr", "mld_dienstniveau_key")
|
||||
+ " FROM mld_dienstniveau"
|
||||
+ " WHERE mld_dienstniveau_key = " + dienstniveau_key;
|
||||
oRs = Oracle.Execute(sql);
|
||||
ROFIELDTR("fld", L("lcl_mld_dienst_niveau"), oRs("mld_dienstniveau_omschr").value);
|
||||
oRs.Close();
|
||||
}
|
||||
BLOCK_END();
|
||||
|
||||
if (!(ter_opp == null && ter_omt == null && vervaldatum == null))
|
||||
{
|
||||
BLOCK_START("algter4", L("lcl_alg_gebouw_fysiek"), {icon: "fa-ruler-combined"});
|
||||
|
||||
@@ -31,7 +31,7 @@ if (ter_key > 0)
|
||||
|
||||
var loc_code = oRs("alg_locatie_code").value;
|
||||
var ter_code = oRs("alg_terreinsector_code").value;
|
||||
|
||||
oRs.Close();
|
||||
var ter_naam = " " + loc_code + "-" + ter_code;
|
||||
}
|
||||
else
|
||||
|
||||
@@ -121,6 +121,7 @@ for (var i = 0; i < opdrachten.length; i++)
|
||||
var onderwerp = XMLval(opdrachten[i], "onderwerp"); // NEW
|
||||
var opdr_kpn = XMLval(opdrachten[i], "kostenplaats");
|
||||
var flag = parseInt(XMLval(opdrachten[i], "flag"), 10);
|
||||
var actiecode = parseInt(XMLval(opdrachten[i], "actiecode"), 10);
|
||||
|
||||
var txt_mut_datum = XMLval(opdrachten[i], "mut_datum"); // UPD
|
||||
var opdrstatus = XMLval(opdrachten[i], "status"); // UPD
|
||||
@@ -922,17 +923,48 @@ for (var i = 0; i < opdrachten.length; i++)
|
||||
|
||||
if (resultcode == -1) // Nog steeds geen fouten.
|
||||
{
|
||||
|
||||
var tracking_key = coalesce(coalesce(status_tracking_key, datum_tracking_key), update_tracking_key); // volgorde van belangrijkheid
|
||||
add_note(tracking_key); // voor als nog niet eerder gebeurd
|
||||
|
||||
// Alleen als er een notitie is aangemaakt mag ik de actiecode ook aanpassen.
|
||||
if (note_key > 0)
|
||||
{ // Er is een notitie aangemaakt.
|
||||
// Actie bij +1=FOBO behandelaar, +2=melder, +4=uitvoerende, +128=attentie FOBO, +512=attentie uitvoerende.
|
||||
if (resultcode == -1 && !isNaN(actiecode) && actiecode >= 0)
|
||||
{ // Actie code.
|
||||
var newActiecode = 0;
|
||||
|
||||
if ((actiecode & 128) == 128)
|
||||
{
|
||||
newActiecode += 128; // BO attentie
|
||||
}
|
||||
|
||||
var BOactie = false;
|
||||
if (S("mld_opdr_actiecode") > 0 && ((actiecode & 1) == 1))
|
||||
{
|
||||
newActiecode += 1; // + BO actie
|
||||
BOactie = true;
|
||||
}
|
||||
|
||||
var sql = "UPDATE mld_opdr"
|
||||
+ " SET mld_opdr_actiecode = mld_opdr_actiecode" // Bestaande bitjes zoals 512 mag niet verloren gaan.
|
||||
+ " + " + newActiecode
|
||||
+ " - BITAND(mld_opdr_actiecode, " + newActiecode + ")" // Als het bitje 1 of 128 al gezet was dan deze waarde weer in minderinig brengen.
|
||||
+ (BOactie
|
||||
? " - BITAND(mld_opdr_actiecode, 6)" // Van de bitjes 1+2+4 (=7) moet er altijd 1 aan staan. Als we bitje 1 zetten, dan moeten we bitjes 2 of 4 wissen.
|
||||
: "") // Bitje 1 is niet gezet. Bitjes 2 en 4 ongemoeit laten.
|
||||
+ " WHERE mld_opdr_key = " + mld_opdr.opdr_key;
|
||||
Oracle.Execute(sql);
|
||||
}
|
||||
}
|
||||
|
||||
resultcode = 0; // Ik heb gedaan wat ik moest en mocht doen voor deze opdracht.
|
||||
}
|
||||
else if (resultcode > 0)
|
||||
{
|
||||
var logtxt = "api_opdrsoap fail.\nResultcode: {0}\nReturntekst: {1}\nOpdracht: {2}\nOldstatus: {3}".format(resultcode, resulttekst, opdrid, oldstatus);
|
||||
if (resulttekst.match(/^Not authorized/)) // Dit komt heel vaak voor door updates op gesloten opdrachten.
|
||||
__Log(logtxt); // Het vervuilt de logfile veel te veel
|
||||
__Log(logtxt); // Het vervuilt de logfile veel te veel
|
||||
else
|
||||
__DoLog(logtxt, "#00FF00");
|
||||
}
|
||||
|
||||
@@ -91,10 +91,10 @@ function L(p_lcl)
|
||||
toonFoto: true,
|
||||
detailurl: "appl/fac/fac_user_info.asp",
|
||||
deeplinkurl: "<%=safe.jsstring(site)%>/?nomenu=1&noheader=1&ihatetabs=1&JumpTo=",
|
||||
fields: [ { lbl: "<%=L("lcl_prs_email")%>", val: "prs_perslid_email" },
|
||||
{ lbl: "<%=L("lcl_pb_phone")%>", val: "prs_perslid_telefoonnr" },
|
||||
{ lbl: "<%=L("lcl_pb_mobile")%>", val: "prs_perslid_mobiel" },
|
||||
{ lbl: "<%=L("lcl_pb_afdeling")%>", val: "afdeling" }
|
||||
fields: [ { lbl: L("lcl_prs_email"), val: "prs_perslid_email" },
|
||||
{ lbl: L("lcl_pb_phone"), val: "prs_perslid_telefoonnr" },
|
||||
{ lbl: L("lcl_pb_mobile"), val: "prs_perslid_mobiel" },
|
||||
{ lbl: L("lcl_pb_afdeling"), val: "afdeling" }
|
||||
]
|
||||
};
|
||||
<%
|
||||
@@ -110,7 +110,7 @@ function L(p_lcl)
|
||||
window.facilitor.show_phonebook = function(data, textStatus)
|
||||
{
|
||||
// Alle styling moet nog via classes
|
||||
var closer = "<span onclick='$(\"#phonebookdetails\").hide()' style='float: right; cursor: pointer' title='<%=L("lcl_close_window")%>'>x</span>"
|
||||
var closer = "<span onclick='$(\"#phonebookdetails\").hide()' style='float: right; cursor: pointer' title='<%=safe.htmlattr(L("lcl_close_window"))%>'>x</span>"
|
||||
if (window.facilitor.phonebook_options.detailurl)
|
||||
{
|
||||
var jumpto = window.facilitor.phonebook_options.detailurl;
|
||||
|
||||
@@ -1,201 +0,0 @@
|
||||
<%@language = "javascript" %>
|
||||
<% /*
|
||||
$Revision$
|
||||
$Id$
|
||||
|
||||
File: phonebook_js.asp
|
||||
Description: Phonebook API
|
||||
Levert een JavaScript bestand op.
|
||||
Parameters:
|
||||
Context:
|
||||
Note:
|
||||
*/
|
||||
|
||||
DOCTYPE_Disable = 1;
|
||||
FCLTEXPIRES = 8*60; // geen database interactie tenslotte
|
||||
THIS_FILE = "appl/api/phonebook_js.asp";
|
||||
var EXPIRED_PASSWORD_OK = true; // performance
|
||||
%>
|
||||
<!-- #include file="../Shared/common.inc"-->
|
||||
<!-- #include file="../api/api.inc" -->
|
||||
|
||||
<%
|
||||
var API = new API_func();
|
||||
|
||||
var nojQuery = getQParam("nojQuery", 0)==1;
|
||||
var suggesticon = getQParam("suggesticon", "");
|
||||
|
||||
var transitParam = "&fac_id="+Session("customerId") + buildTransitParam(["API", "APIKEY", "charset"]);
|
||||
|
||||
var proto = (Request.ServerVariables("SERVER_PORT") == "443")?"https":"http";
|
||||
var sitenoroot = proto + "://" + Request.ServerVariables("SERVER_NAME");
|
||||
var site = sitenoroot + rooturl;
|
||||
|
||||
Response.ContentType = "application/javascript";
|
||||
//lcl.buildClientLCL();
|
||||
// LET OP: Geen FcltMgr.js en dus niet (clientside) zelflerend
|
||||
%>
|
||||
window.facilitor = window.facilitor || {};
|
||||
|
||||
window.facilitor.LCL = {};
|
||||
window.facilitor.LCL["lcl_shared_suggest_hint"] = "<%=safe.jsstring(L("lcl_shared_suggest_hint"))%>";
|
||||
window.facilitor.LCL["lcl_shared_suggest_huidig"] = "<%=safe.jsstring(L("lcl_shared_suggest_huidig"))%>";
|
||||
|
||||
facilitor.phonebook = facilitor.phonebook || {};
|
||||
function L(p_lcl)
|
||||
{
|
||||
if (p_lcl in window.facilitor.LCL)
|
||||
return window.facilitor.LCL[p_lcl];
|
||||
return "??" + p_lcl + "??";
|
||||
}
|
||||
(function() {
|
||||
|
||||
function getScript(src) {
|
||||
document.write('<' + 'script src="<%=site%>/' + src + '"' +
|
||||
' type="text/javascript"><' + '/script>');
|
||||
}
|
||||
|
||||
function getCSS(src) {
|
||||
document.write('<' + 'link rel="stylesheet" href="<%=site%>/' + src + '"' +
|
||||
' type="text/css">');
|
||||
}
|
||||
|
||||
var loadScriptTime = (new Date).getTime();
|
||||
getCSS("appl/shared/suggest/suggest.css");
|
||||
getCSS("appl/api/api.css");
|
||||
|
||||
<% if (!nojQuery) { /* kan conflicteren */ %>
|
||||
getScript("appl/localscripts/jquery.min.js");
|
||||
<% } %>
|
||||
getScript("appl/shared/suggest/suggest_IE11.js?v=<%=safe.url(FCLTVersion)%>"); // FCLTVersion voor anti-caching. Timestamp is me te veel werk
|
||||
|
||||
<% if (API.apidata.cust_js) { %>
|
||||
getScript("<%=API.apidata.cust_js%>");
|
||||
<% } %>
|
||||
|
||||
window.facilitor.open_phonebook = function(key, naam)
|
||||
{
|
||||
if (key > 0)
|
||||
jQuery.ajax({ type: "GET",
|
||||
url: "<%=safe.jsstring(site)%>/appl/api/get_phonebook_info.asp?req_info=prs_perslid&prs_perslid_key=" + key + "<%=transitParam%>",
|
||||
dataType: "jsonp",
|
||||
success: window.facilitor.show_phonebook
|
||||
});
|
||||
else
|
||||
$("#phonebookdetails").hide()
|
||||
}
|
||||
|
||||
// De default waarden, werkt nog niet TODO
|
||||
window.facilitor.phonebook_options =
|
||||
{ detailWidth : 450,
|
||||
toonFoto: true,
|
||||
detailurl: "appl/fac/fac_user_info.asp",
|
||||
deeplinkurl: "<%=safe.jsstring(site)%>/?nomenu=1&noheader=1&ihatetabs=1&JumpTo=",
|
||||
fields: [ { lbl: "<%=L("lcl_prs_email")%>", val: "prs_perslid_email" },
|
||||
{ lbl: "<%=L("lcl_pb_phone")%>", val: "prs_perslid_telefoonnr" },
|
||||
{ lbl: "<%=L("lcl_pb_mobile")%>", val: "prs_perslid_mobiel" },
|
||||
{ lbl: "<%=L("lcl_pb_afdeling")%>", val: "afdeling" }
|
||||
]
|
||||
};
|
||||
<%
|
||||
// kopieer de serverside overrules naar clientside
|
||||
for (opt in API.apidata.options)
|
||||
{
|
||||
Response.Write("\nwindow.facilitor.phonebook_options['"+opt+"'] = "
|
||||
+ "JSON.parse('"+ safe.jsstring(JSON.stringify(API.apidata.options[opt])) +"')");
|
||||
|
||||
}
|
||||
%>
|
||||
|
||||
window.facilitor.show_phonebook = function(data, textStatus)
|
||||
{
|
||||
// Alle styling moet nog via classes
|
||||
var closer = "<span onclick='$(\"#phonebookdetails\").hide()' style='float: right; cursor: pointer' title='<%=L("lcl_close_window")%>'>x</span>"
|
||||
if (window.facilitor.phonebook_options.detailurl)
|
||||
{
|
||||
var jumpto = window.facilitor.phonebook_options.detailurl;
|
||||
jumpto += (jumpto.indexOf("?")>=0)?"&":"?";
|
||||
jumpto += "prs_key="+data.prs_perslid_key;
|
||||
var link = window.facilitor.phonebook_options.deeplinkurl + escape(jumpto) + "&fac_id=<%=Session("customerId")%>";
|
||||
var ahref = "<a href='"+link+"' target='_new'>"+data.naam+"</a>"
|
||||
}
|
||||
else
|
||||
ahref=date.naam;
|
||||
|
||||
var trh = "<tr><td></td><th colspan='2' class='title'>"+ahref+"</a></th><th></th></tr>"
|
||||
|
||||
var trs = "";
|
||||
if (window.facilitor.phonebook_options.toonFoto && data.photopath)
|
||||
{
|
||||
trs += "<tr><td></td><td></td><td rowspan='50'><img alt='<%=safe.htmlattr(L("lcl_menu_prs_phonebook"))%>' src='<%=safe.jsstring(sitenoroot)%>" + data.photopaththumb.replace(/\'/g,''').replace(/\"/g,'"') +"'></td></tr>";
|
||||
}
|
||||
var fld;
|
||||
for (fld in window.facilitor.phonebook_options.fields)
|
||||
{
|
||||
var field = window.facilitor.phonebook_options.fields[fld];
|
||||
if (field.val && data[field.val])
|
||||
{
|
||||
trs += "<tr><td class='label'>"+field.lbl+"</td>";
|
||||
trs += " <td>"+data[field.val]+"</td></tr>";
|
||||
}
|
||||
if (field.fun)
|
||||
trs += eval(field.fun + "(data)");
|
||||
}
|
||||
|
||||
if (!document.getElementById("phonebookdetails"))
|
||||
{
|
||||
// Alle esthetische styling verloopt via de css
|
||||
var dd = document.createElement('div');
|
||||
dd.id = "phonebookdetails";
|
||||
dd.style.position = "absolute";
|
||||
dd.style.top = $("#sName_key_show").position().top+20 + "px";
|
||||
dd.style.width = window.facilitor.phonebook_options.detailWidth + "px";
|
||||
|
||||
var newLeft = $("#sName_key_show").position().left;
|
||||
if (newLeft + window.facilitor.phonebook_options.detailWidth > document.body.offsetWidth)
|
||||
{ // Wel in beeld houden
|
||||
newLeft = document.body.offsetWidth - window.facilitor.phonebook_options.detailWidth
|
||||
}
|
||||
dd.style.left = newLeft + "px";
|
||||
document.body.appendChild(dd);
|
||||
if (0)$("body").click // even niet, hij is te agressief
|
||||
(
|
||||
function(e)
|
||||
{
|
||||
if($(e.target).closest("#phonebookdetails").length==0)
|
||||
{
|
||||
$("#phonebookdetails").hide();
|
||||
}
|
||||
}
|
||||
);
|
||||
}
|
||||
var dd = document.getElementById("phonebookdetails");
|
||||
dd.innerHTML = ""+closer+"<table width='100%'>"+trh + trs+"</table>";
|
||||
dd.style.display = "block";
|
||||
|
||||
}
|
||||
|
||||
window.facilitor.phonebook = function (elm, options)
|
||||
{
|
||||
var opt;
|
||||
for (opt in options)
|
||||
{
|
||||
window.facilitor.phonebook_options[opt] = options[opt];
|
||||
}
|
||||
$(elm).append('<input id="sName_key_show" sgonChange="window.facilitor.open_phonebook" class="fldpers" value="">')
|
||||
$(elm).append('<input type="hidden" id="sName_key" name="sName_key" value="-1">');
|
||||
|
||||
sgPerson = new Suggest({ objectName: "sgPerson",
|
||||
queryField: $("#sName_key_show")[0],
|
||||
queryUrl: "<%=safe.jsstring(site)%>/appl/shared/suggest/SuggestPerslid.asp?filtcode=PHB<%=transitParam%>",
|
||||
initKey: -1,
|
||||
noJustOne: true,
|
||||
keyField: $("#sName_key")[0],
|
||||
JSONP: true,
|
||||
embedded: true,
|
||||
suggesticon: "<%=safe.jsstring(suggesticon)%>",
|
||||
site: "<%=safe.jsstring(site)%>"
|
||||
});
|
||||
};
|
||||
})();
|
||||
<% ASPPAGE_END(); %>
|
||||
@@ -72,6 +72,12 @@ model_cnt_disc_params =
|
||||
"label": L("cnt_discipline_factuurappr"),
|
||||
"typ": "check0"
|
||||
},
|
||||
"bookinvoice": {
|
||||
"dbs": "cnt_disc_params_factuurboeken",
|
||||
"label": L("cnt_discipline_factuurboeken"),
|
||||
"typ": "check0",
|
||||
"defaultvalue": 1
|
||||
},
|
||||
"invoicelimit": { // "limit" is een reserved naam in API2
|
||||
"dbs": "cnt_disc_params_factuurgrens",
|
||||
"label": L("cnt_discipline_factuurgrens"),
|
||||
|
||||
@@ -263,12 +263,34 @@ function model_custom_fields(formodel, flexModel, flexParams)
|
||||
attachment.content_base64 || attachment.content_hex,
|
||||
fileencoding);
|
||||
}
|
||||
|
||||
// resizen van bijlagen
|
||||
var oCrypto = new ActiveXObject("SLNKDWF.Crypto");
|
||||
var fso = Server.CreateObject("Scripting.FileSystemObject")
|
||||
var orgFile = flexparams.AttachPath + safefilename;
|
||||
if (flexparams.regexp)
|
||||
{
|
||||
var resize_params = { resizecode: flexparams.regexp // "R800x600"
|
||||
, attachpath: flexparams.AttachPath
|
||||
, filename: safefilename
|
||||
, safename: safefilename
|
||||
, digest: oCrypto.hex_sha1_file(orgFile)
|
||||
, isupload: false
|
||||
, module: this.module
|
||||
};
|
||||
var resize_result = resizePicture(resize_params);
|
||||
if (resize_result.newsize && (resize_result.newsize > 0))
|
||||
{
|
||||
tmpFile = resize_result.file_resized;
|
||||
fso.DeleteFile(orgFile);
|
||||
fso.MoveFile(tmpFile, orgFile);
|
||||
}
|
||||
}
|
||||
|
||||
// Toevoegen bijlage/bestand tracken.
|
||||
trackBijlagen(this.module, parent_key, flexparams, {safefilename: [safefilename]}, "upload");
|
||||
if (flexparams.fac_bijlagen)
|
||||
{
|
||||
var oCrypto = new ActiveXObject("SLNKDWF.Crypto");
|
||||
var fso = Server.CreateObject("Scripting.FileSystemObject")
|
||||
var sql = "BEGIN "
|
||||
+ " flx.setflexbijlage"
|
||||
+ "(" + safe.quoted_sql(this.module) // MLD | RES | ....
|
||||
@@ -277,9 +299,9 @@ function model_custom_fields(formodel, flexModel, flexParams)
|
||||
+ ", " + safe.quoted_sql(flexparams.AttachSubPath)
|
||||
+ ", " + "NULL" // diskfilename
|
||||
+ ", " + safe.quoted_sql(safefilename)
|
||||
+ ", " + fso.GetFile(flexparams.AttachPath + safefilename).Size
|
||||
+ ", " + fso.GetFile(orgFile).Size
|
||||
+ ", " + "SYSDATE"
|
||||
+ ", " + safe.quoted_sql(oCrypto.hex_sha1_file(flexparams.AttachPath + safefilename))
|
||||
+ ", " + safe.quoted_sql(oCrypto.hex_sha1_file(orgFile))
|
||||
+ ");"
|
||||
+ " END;";
|
||||
Oracle.Execute(sql);
|
||||
|
||||
@@ -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",
|
||||
|
||||
@@ -265,6 +265,12 @@ function model_mld_typeopdr()
|
||||
"label": L("lcl_mld_code"),
|
||||
"typ": "varchar",
|
||||
"readonly": !user.has("WEB_FACTAB")
|
||||
},
|
||||
"complete": {
|
||||
"dbs": "mld_typeopdr_afronden",
|
||||
"label": L("mld_typeopdr_complete"),
|
||||
"typ": "check0",
|
||||
"defaultvalue": 1
|
||||
}
|
||||
};
|
||||
|
||||
|
||||
@@ -100,47 +100,47 @@ function model_objects(ins_key, params)
|
||||
};
|
||||
|
||||
|
||||
var module = "INS"; // INS of SLE.
|
||||
function _check_authorization(params, method)
|
||||
{
|
||||
var urole = "fe"; // TODO: Moet echt niet ter zake doen
|
||||
var autfunction = urole == "fe"? "WEB_INSUSE" : "WEB_INSMAN";
|
||||
params.authparams = user.checkAutorisation(autfunction, null, null, true); // pessimistisch
|
||||
var ins_key = params.filter.id || -1;
|
||||
var urole = params.filter.scope || "fe";
|
||||
params.message = "";
|
||||
|
||||
params.message = "";
|
||||
params.filter.scope = params.filter.scope || "fe";
|
||||
var module = "INS";
|
||||
var ins_key = params.filter.id || -1;
|
||||
var srtdeel_key = -1;
|
||||
var srtgroep_key = -1;
|
||||
var autfunction = ( params.filter.scope == "fe"
|
||||
? "WEB_INSUSE"
|
||||
: ( params.filter.scope == "fo"
|
||||
? "WEB_INSFOF"
|
||||
: "WEB_INSMAN"
|
||||
));
|
||||
// Voor sleutels/cilinders:
|
||||
if ( (ins_key > 0 && ins.isSleCil(ins_key))
|
||||
|| (srtdeel_key > 0 && ins.isSleCil(srtdeel_key, "S"))
|
||||
|| (srtgroep_key > 0 && ins.isSleCil(srtgroep_key, "G"))
|
||||
)
|
||||
{
|
||||
autfunction = "WEB_SLEBOF";
|
||||
module = "SLE";
|
||||
}
|
||||
var srtdeel_key = -1;
|
||||
var srtgroep_key = -1;
|
||||
// Heb ik rechten voor 1 van de INS autorisaties. Onafhankelijk van de urole.
|
||||
var autfunction = ["WEB_INSUSE", "WEB_INSFOF", "WEB_INSMAN"];
|
||||
// Voor sleutels/cilinders:
|
||||
if ( (ins_key > 0 && ins.isSleCil(ins_key))
|
||||
|| (srtdeel_key > 0 && ins.isSleCil(srtdeel_key, "S"))
|
||||
|| (srtgroep_key > 0 && ins.isSleCil(srtgroep_key, "G"))
|
||||
)
|
||||
{
|
||||
autfunction = "WEB_SLEBOF";
|
||||
module = "SLE";
|
||||
}
|
||||
|
||||
if (ins_key > 0)
|
||||
{
|
||||
var this_ins = ins.func_enabled_deel(ins_key, {urole: params.filter.scope});
|
||||
user.auth_required_or_abort(this_ins.canChange || this_ins.canChangeOwn); // dat is toch wel het minste
|
||||
params.authparams = this_ins.authparams(autfunction);
|
||||
}
|
||||
else
|
||||
{
|
||||
params.authparams = user.checkAutorisation(autfunction); // , null, null, true); // pessimistisch
|
||||
var this_ins = { canChangeAlg: true };
|
||||
}
|
||||
switch (method)
|
||||
{
|
||||
case "GET": if (ins_key > 0)
|
||||
{
|
||||
var this_ins = ins.func_enabled_deel(ins_key, {urole: urole});
|
||||
user.auth_required_or_abort(this_ins.canReadAny); // dat is toch wel het minste
|
||||
}
|
||||
else
|
||||
{
|
||||
var this_ins = { canChangeAlg: true };
|
||||
params.authparams = user.checkAutorisation(autfunction, null, null, true); // pessimistisch
|
||||
}
|
||||
break;
|
||||
case "PUT":
|
||||
case "POST": var this_ins = ins.func_enabled_deel(ins_key, {urole: urole});
|
||||
user.auth_required_or_abort(this_ins.canChange || this_ins.canChangeOwn); // dat is toch wel het minste
|
||||
break;
|
||||
}
|
||||
|
||||
params.func_enabled = this_ins || {};
|
||||
params.func_enabled = this_ins || {};
|
||||
};
|
||||
|
||||
function _pre_analyze_fields(params, jsondata, method)
|
||||
@@ -307,7 +307,7 @@ function model_objects(ins_key, params)
|
||||
}
|
||||
if (bindingBits & BIND_RUIMTE)
|
||||
{
|
||||
if(jsondata.room && jsondata.room > 0 )
|
||||
if (jsondata.room && jsondata.room > 0 )
|
||||
{
|
||||
placeholder.status = true;
|
||||
placeholder.ruimte_type = "R";
|
||||
@@ -420,7 +420,9 @@ function model_objects(ins_key, params)
|
||||
query.wheres.push(" ins_v_deelenonderdeel.ins_discipline_key IN"
|
||||
+ " (SELECT ins_discipline_key"
|
||||
+ " FROM fac_v_webgebruiker"
|
||||
+ " WHERE fac_functie_key = " + params.authparams.autfunctionkey
|
||||
+ (module == "INS"
|
||||
? " WHERE fac_functie_key IN ({0}, {1}, {2})".format(F('WEB_INSUSE'), F('WEB_INSFOF'), F('WEB_INSMAN'))
|
||||
: " WHERE fac_functie_key = " + F("WEB_SLEBOF"))
|
||||
+ " AND prs_perslid_key = " + user_key
|
||||
+ " AND fac_gebruiker_prs_level_read < 9"
|
||||
+ " AND fac_gebruiker_alg_level_read < 9)");
|
||||
|
||||
@@ -1243,8 +1243,6 @@ function model_orders(opdr_key, params)
|
||||
{ // Bij ORDNEW tracking wordt er niet genotificeerd. Dat moet als je mld_opdr_teverzenden op 1 zet nog gebeuren.
|
||||
Oracle.Execute("BEGIN fac.notifytrackingbedrijven ('ORDNEW', " + opdr_key + "); END;");
|
||||
}
|
||||
|
||||
var puo_result = putorders.sendMLDorders(opdr_key);
|
||||
}
|
||||
else if (params.mld_opdr.mld_typeopdr_confirm_for_send == 1)
|
||||
{ // Gaat straks vragen: "Zal ik electronisch versturen?"
|
||||
|
||||
@@ -55,7 +55,7 @@ checkUserAgent(); // heeft device capability bits gezet
|
||||
<%
|
||||
}
|
||||
%>
|
||||
window.parent.document.title = "<%=L("lcl_facilitor_ie_title")%>";
|
||||
window.parent.document.title = L("lcl_facilitor_ie_title");
|
||||
function login_callback(json)
|
||||
{
|
||||
if (json.success && json.otp_prompt)
|
||||
@@ -231,7 +231,7 @@ checkUserAgent(); // heeft device capability bits gezet
|
||||
%></div>
|
||||
<% } %>
|
||||
<div class="form-floating loginname">
|
||||
<input class="form-control required" type="text" maxlength="256" id="visname" name="vis_name" autocomplete="off" value="<%=safe.jsstring(prs_email)%>" placeholder="<%=L("lcl_vis_log_name")%>">
|
||||
<input class="form-control required" type="text" maxlength="256" id="visname" name="vis_name" autocomplete="off" value="<%=safe.jsstring(prs_email)%>" placeholder="<%=safe.htmlattr(L("lcl_vis_log_name"))%>">
|
||||
<label for="visname"><%=L("lcl_vis_log_name")%></label>
|
||||
</div>
|
||||
|
||||
|
||||
@@ -55,7 +55,7 @@ checkUserAgent(); // heeft device capability bits gezet
|
||||
<%
|
||||
}
|
||||
%>
|
||||
window.parent.document.title = "<%=L("lcl_facilitor_ie_title")%>";
|
||||
window.parent.document.title = L("lcl_facilitor_ie_title");
|
||||
function login_callback(json)
|
||||
{
|
||||
if (json.success)
|
||||
|
||||
@@ -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)"
|
||||
|
||||
@@ -147,7 +147,7 @@ transitParam = buildTransitParam(["punch", "voorraad", "mld_key", "artikel_key",
|
||||
%>
|
||||
<script type="text/javascript" >
|
||||
var disc_url = "../bes/bes_select_discipline.asp" + ("<%=correctie%>" == "1" ? "?intern=1" : "");
|
||||
FcltMgr.openModalDetail(disc_url, "<%=L("lcl_bes_fac_select_cat")%>",
|
||||
FcltMgr.openModalDetail(disc_url, L("lcl_bes_fac_select_cat"),
|
||||
{ nomessage: true,
|
||||
callback: function (data)
|
||||
{
|
||||
|
||||
@@ -542,7 +542,7 @@ oRs.Close();
|
||||
return false;
|
||||
|
||||
url = "../bes/sel_favourites.asp?disc_key=<%=bes_bestelling.dis_key%>";
|
||||
FcltMgr.openModalDetail(url, "<%=L("lcl_bes_favour_title")%>",
|
||||
FcltMgr.openModalDetail(url, L("lcl_bes_favour_title"),
|
||||
{
|
||||
callback: async function (data)
|
||||
{
|
||||
@@ -599,7 +599,7 @@ oRs.Close();
|
||||
|
||||
url = "../bes/addFavourites.asp" + "?srtdeel_key=" + bes_item_info.srtdeel_key
|
||||
+ "&disc_key=<%=bes_bestelling.dis_key%>";
|
||||
FcltMgr.openModalDetail(url, '<%=L("lcl_bes_favour_list")%>');
|
||||
FcltMgr.openModalDetail(url, L("lcl_bes_favour_list"));
|
||||
}
|
||||
</script>
|
||||
|
||||
@@ -1028,7 +1028,7 @@ oRs.Close();
|
||||
</td>
|
||||
<td class="besdetailtd">
|
||||
<table class="besdetailtable">
|
||||
<tr><td colspan="2" class="iteminfo2" title="<%= L("lcl_bes_srtgroup") %>" id="srtgroep_text"></td></tr>
|
||||
<tr><td colspan="2" class="iteminfo2" title="<%=L("lcl_bes_srtgroup")%>" id="srtgroep_text"></td></tr>
|
||||
<tr><td colspan="2" class="iteminfo1" title="<%=L("lcl_bes_srtdeel_full")%>" id="srtdeel_omschrijving"></td></tr>
|
||||
|
||||
<tr id="opmerking_tr" style="display:none">
|
||||
|
||||
@@ -250,7 +250,7 @@ user.auth_required_or_abort(this_bes.canRetourBES);
|
||||
}
|
||||
%>
|
||||
<script type="text/javascript">
|
||||
FcltMgr.closeDetail(window, {success: true, warning: "<%=L("lcl_bes_registered_nr") + " " + new_bes_key%>"});
|
||||
FcltMgr.closeDetail(window, {success: true, warning: L("lcl_bes_registered_nr") + " <%=new_bes_key%>"});
|
||||
</script>
|
||||
<%
|
||||
Response.End;
|
||||
|
||||
@@ -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,28 @@ 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)"
|
||||
+ " 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(L("lcl_bes_fromcatalog")) + " FROM DUAL");
|
||||
if (aantal_vrij > 0)
|
||||
sql_arr.push("SELECT 1, " + safe.quoted_sql(L("lcl_bes_createfreely")) + " 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 +133,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
|
||||
});
|
||||
|
||||
@@ -131,7 +158,8 @@ var authparams = user.checkAutorisation(autfunction);
|
||||
label: L("lcl_bes_Catalogus"),
|
||||
onChange: 'updateSrtGroup("' + autfunction + '");', // discChanged
|
||||
trclass:"primsearch",
|
||||
emptyOption: ""
|
||||
emptyOption: "",
|
||||
selectjustone: true
|
||||
});
|
||||
%>
|
||||
|
||||
@@ -142,7 +170,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 +180,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)
|
||||
|
||||
@@ -70,11 +70,11 @@ function bez_edit_bezoekers(afspraak_key, afspraak_begin, afspraak_eind, loc_key
|
||||
{ %>
|
||||
<th><!--contact--></th>
|
||||
<% } %>
|
||||
<th><%=L("lcl_vis_name")%></th>
|
||||
<th><%=L("lcl_vis_company")%><%=S("bez_sel_internpersoon") == 1? "/" + L("lcl_department") : ""%></th>
|
||||
<th><%=safe.html(L("lcl_vis_name"))%></th>
|
||||
<th><%=safe.html(L("lcl_vis_company"))%><%=S("bez_sel_internpersoon") == 1? "/" + safe.html(L("lcl_department")) : ""%></th>
|
||||
<% if (S("vis_remark") == 1 || S("vis_remark") == 2)
|
||||
{ %>
|
||||
<th><%=L("lcl_vis_remark")%></th>
|
||||
<th><%=safe.html(L("lcl_vis_remark"))%></th>
|
||||
<% } %>
|
||||
<th>
|
||||
<% if (S("vis_parking_key") != -1 && this_bez_bez.canWritePrk)
|
||||
@@ -184,7 +184,7 @@ function bez_edit_bezoekers(afspraak_key, afspraak_begin, afspraak_eind, loc_key
|
||||
<td align="center">
|
||||
<% if (oRs("bez_bezoekers_done").Value == null)
|
||||
{ %>
|
||||
<span onclick="deleteVisit(<%=next_vis%>)" title="<%=L("lcl_delete")%>"><%=I("fa-trash-alt")%></span>
|
||||
<span onclick="deleteVisit(<%=next_vis%>)" title="<%=safe.htmlattr(L("lcl_delete"))%>"><%=I("fa-trash-alt")%></span>
|
||||
<%
|
||||
} else {
|
||||
anydone = true;
|
||||
|
||||
@@ -235,6 +235,7 @@ function bez_list(pautfunction, params)
|
||||
: " , a.bez_afspraak_datum bez_afspraak_datum"
|
||||
+ " , a.bez_afspraak_eind bez_afspraak_eind")
|
||||
+ " , " + S("prs_pers_string") + " pers_naam"
|
||||
+ " , p.prs_perslid_email contact_email"
|
||||
+ " , a.bez_afspraak_gastheer gastheer"
|
||||
+ " , p2.prs_perslid_email gastheer_email"
|
||||
+ " , COALESCE(a.bez_afspraak_telefoonnr, p2.prs_perslid_telefoonnr, p2.prs_perslid_mobiel) gastheer_telf_nr"
|
||||
@@ -259,7 +260,7 @@ function bez_list(pautfunction, params)
|
||||
+ " FROM (SELECT i.ins_deel_key"
|
||||
+ " , i.ins_alg_ruimte_key"
|
||||
+ " , i.ins_alg_ruimte_type"
|
||||
+ " FROM ins_deel i"
|
||||
+ " FROM ins_v_deelenonderdeel i"
|
||||
+ " , ins_srtdeel s"
|
||||
+ " WHERE s.ins_srtdeel_key = i.ins_srtdeel_key"
|
||||
+ " AND i.ins_deel_verwijder IS NULL"
|
||||
@@ -272,7 +273,7 @@ function bez_list(pautfunction, params)
|
||||
+ " SELECT i.ins_deel_key"
|
||||
+ " , i.ins_alg_ruimte_key"
|
||||
+ " , i.ins_alg_ruimte_type"
|
||||
+ " FROM ins_deel i"
|
||||
+ " FROM ins_v_deelenonderdeel i"
|
||||
+ " , ins_srtdeel s"
|
||||
+ " WHERE s.ins_srtdeel_key = i.ins_srtdeel_key"
|
||||
+ " AND i.ins_deel_verwijder IS NULL"
|
||||
@@ -1132,17 +1133,19 @@ function bez_list(pautfunction, params)
|
||||
var safe_content = "";
|
||||
var chatHostMail = oRs("gastheer_email").Value;
|
||||
var chatHostName = oRs("gastheer").Value || "";
|
||||
var chatContactMail = oRs("contact_email").Value;
|
||||
var chatContactName = oRs("pers_naam").Value || "";
|
||||
var bez_naam = oRs("bez_afspraak_naam").Value || "";
|
||||
var bez_bedrijf = oRs("bez_bedrijf").Value || "";
|
||||
var locatie = oRs("loc_omschr").Value || "";
|
||||
var defaultMessage = L("lcl_bezchat_message").format(bez_naam, bez_bedrijf, locatie).replace("()", "");
|
||||
if (outputmode == 0 && oRs("authorized").Value == 1 && chatHostMail && ((oRs("bez_actie_flags").Value & 4)==4))
|
||||
{
|
||||
var chatUrl = S("bez_chat_message").format(chatHostMail, Server.URLencode(defaultMessage));
|
||||
var chatUrl = S("bez_chat_message").format(chatHostMail, Server.URLencode(defaultMessage), chatContactMail);
|
||||
safe_content = '<span id="chatIN' + oRs("bez_key").Value + '"'
|
||||
+ ' class="ilbutton"'
|
||||
+ ' OnClick="doLaunchChat(event, \'' + safe.jsstring(chatUrl) + '\');"'
|
||||
+ ' title="' + safe.htmlattr(L("lcl_bezchat_launch").format(chatHostName)) + '"'
|
||||
+ ' title="' + safe.htmlattr(L("lcl_bezchat_launch").format(chatHostName, chatContactName)) + '"'
|
||||
+ '>' + I("fa-comment-exclamation") + '</span>';
|
||||
safe_content = "<div id='chatlink" + oRs("bez_key").Value + "'"
|
||||
+ (oRs("bez_bezoekers_done").value === null ? " class='hidden'" : "")
|
||||
|
||||
@@ -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>");
|
||||
@@ -425,7 +439,7 @@ if (thema_key > 0)
|
||||
if (disc_key > 0)
|
||||
{
|
||||
var sqlMaxKleur = "SELECT ar.alg_verdieping_key, MAX(thema.waarde) waarde, ti.cad_legendawaarde_rgb, count(*) aantal "
|
||||
+ " FROM ins_deel id, "
|
||||
+ " FROM ins_v_deelenonderdeel id, "
|
||||
+ " ins_srtdeel isd, "
|
||||
+ " alg_ruimte ar, "
|
||||
+ " ( "+ thema_view + ") THEMA, "
|
||||
|
||||
@@ -36,7 +36,7 @@ if (inoutMode == MODE_IN && scenario_key > 0)
|
||||
}
|
||||
else if (inoutMode == MODE_IN)
|
||||
{
|
||||
deelTable = "ins_deel";
|
||||
deelTable = "ins_v_deelenonderdeel";
|
||||
deelParent = "ins_alg_ruimte_key";
|
||||
dbTable = "alg_ruimte";
|
||||
dbLabel = "alg_ruimte_nr";
|
||||
@@ -46,7 +46,7 @@ else if (inoutMode == MODE_IN)
|
||||
}
|
||||
else
|
||||
{
|
||||
deelTable = "ins_deel";
|
||||
deelTable = "ins_v_deelenonderdeel";
|
||||
deelParent = "ins_alg_ruimte_key";
|
||||
dbTable = "alg_terreinsector";
|
||||
dbLabel = "alg_terreinsector_code";
|
||||
|
||||
@@ -261,7 +261,7 @@ function addObjecten(cHandle, highlight_ins_deel_key)
|
||||
// Dat aantal moeten we van te voren weten om linksboven de dobbel te
|
||||
// kunnen beginnen
|
||||
sql = "SELECT ins_alg_ruimte_key alg_ruimte_key, count(*) aantal"
|
||||
+ " FROM ins_deel id, ins_srtdeel isd, ins_srtgroep isg, " + dbTable + " SYNC"
|
||||
+ " FROM ins_v_deelenonderdeel id, ins_srtdeel isd, ins_srtgroep isg, " + dbTable + " SYNC"
|
||||
+ " WHERE id.ins_alg_ruimte_key = SYNC." + colKey
|
||||
// + " AND id.ins_alg_ruimte_type = 'R'"
|
||||
+ " AND id.ins_srtdeel_key = isd.ins_srtdeel_key"
|
||||
@@ -296,7 +296,7 @@ function addObjecten(cHandle, highlight_ins_deel_key)
|
||||
sql : "SELECT 'I:'||ins_deel_key key, ins_deel_omschrijving oms,"
|
||||
+ " ins_srtdeel_acadsymbol symbolname, ins_disc_params_type,"
|
||||
+ " ins_srtdeel_acadsymbol_dwgx orgx, ins_srtdeel_acadsymbol_dwgy orgy, di.ins_discipline_color color"
|
||||
+ " FROM ins_deel id, ins_srtdeel isd, ins_srtgroep isg,"
|
||||
+ " FROM ins_v_deelenonderdeel id, ins_srtdeel isd, ins_srtgroep isg,"
|
||||
+ " ins_disc_params isdp, ins_tab_discipline di"
|
||||
+ " WHERE id.ins_alg_ruimte_key = " + oRsRuimte("alg_ruimte_key").Value
|
||||
+ " AND id.ins_srtdeel_key = isd.ins_srtdeel_key"
|
||||
@@ -335,7 +335,7 @@ function addObjecten(cHandle, highlight_ins_deel_key)
|
||||
+ " ins_srtdeel_acadsymbol_dwgx orgx, ins_srtdeel_acadsymbol_dwgy orgy,"
|
||||
+ " ins_srtdeel_acadlabelpos lpos, ins_srtdeel_acadlabelsize lsize,"
|
||||
+ " id.ins_alg_ruimte_key cadkey, ins_disc_params_type, di.ins_discipline_color color"
|
||||
+ " FROM ins_deel id, ins_srtdeel isd, ins_srtgroep isg, "+dbTable+" SYNC,"
|
||||
+ " FROM ins_v_deelenonderdeel id, ins_srtdeel isd, ins_srtgroep isg, "+dbTable+" SYNC,"
|
||||
+ " ins_disc_params isdp, ins_tab_discipline di"
|
||||
+ " WHERE id.ins_alg_ruimte_key = SYNC."+colKey
|
||||
+ " AND id.ins_srtdeel_key = isd.ins_srtdeel_key"
|
||||
@@ -383,7 +383,7 @@ function addObjecten(cHandle, highlight_ins_deel_key)
|
||||
fnSql: function (viewName)
|
||||
{
|
||||
return "SELECT 'I:'||id.ins_deel_key key, thema.*"
|
||||
+ " FROM ins_deel id, ins_srtdeel isd, ins_srtgroep isg, "+dbTable+" SYNC, " + viewName + " THEMA"
|
||||
+ " FROM ins_v_deelenonderdeel id, ins_srtdeel isd, ins_srtgroep isg, "+dbTable+" SYNC, " + viewName + " THEMA"
|
||||
+ " WHERE id.ins_alg_ruimte_key = SYNC."+colKey
|
||||
+ " AND id.ins_srtdeel_key = isd.ins_srtdeel_key"
|
||||
+ " AND "+syncParent+" = " + pvKey
|
||||
@@ -441,7 +441,7 @@ function addWerkplekObjecten(cHandle)
|
||||
+ " isd.ins_srtdeel_key, ins_srtdeel_acadsymbol, " + dbLabel + " dblabel,"
|
||||
+ " ins_srtdeel_acadsymbol_dwgx orgx, ins_srtdeel_acadsymbol_dwgy orgy,"
|
||||
+ " '#000000' color" //zwart?
|
||||
+ " FROM ins_deel id, ins_srtdeel isd, ins_srtgroep isg, alg_ruimte ar,"
|
||||
+ " FROM ins_v_deelenonderdeel id, ins_srtdeel isd, ins_srtgroep isg, alg_ruimte ar,"
|
||||
+ " prs_werkplek pw"
|
||||
+ " WHERE pw.prs_alg_ruimte_key = ar.alg_ruimte_key"
|
||||
+ " AND id.ins_alg_ruimte_key = pw.prs_werkplek_key"
|
||||
@@ -503,7 +503,7 @@ function addWerkplekObjecten(cHandle)
|
||||
fnSql: function (viewName)
|
||||
{
|
||||
return "SELECT 'IW:'||id.ins_deel_key key, waarde"
|
||||
+ " FROM ins_deel id, ins_srtdeel isd, ins_srtgroep isg, "
|
||||
+ " FROM ins_v_deelenonderdeel id, ins_srtdeel isd, ins_srtgroep isg, "
|
||||
+ " alg_ruimte SYNC, " + viewName + " THEMA,"
|
||||
+ " prs_werkplek pw"
|
||||
+ " WHERE pw.prs_alg_ruimte_key = SYNC.alg_ruimte_key"
|
||||
|
||||
@@ -264,7 +264,7 @@ var datumfilter = getQParamDate("datumfilter", null);
|
||||
+ " , o.alg_verdieping_omschrijving"
|
||||
+ " , o.alg_ruimte_key"
|
||||
+ " , l.alg_district_key"
|
||||
+ " FROM ins_deel g, alg_ruimte ar,"
|
||||
+ " FROM ins_v_deelenonderdeel g, alg_ruimte ar,"
|
||||
+ " ins_v_alg_overzicht o,"
|
||||
+ " ins_srtdeel s, alg_locatie l, alg_district di " // I added this for alg_district_key (FSN#1082)
|
||||
+ " WHERE g.ins_deel_verwijder IS NULL"
|
||||
|
||||
@@ -1749,7 +1749,7 @@ if (scenario_key != 0)
|
||||
%>
|
||||
</table>
|
||||
</div>
|
||||
<div id="fgmenutoggler" class='toggler' onClick="toggleLayout(this)" title='<%=L("lcl_toggler")%>'>
|
||||
<div id="fgmenutoggler" class='toggler' onClick="toggleLayout(this)" title='<%=safe.htmlattr(L("lcl_toggler"))%>'>
|
||||
</div>
|
||||
|
||||
|
||||
@@ -1794,7 +1794,7 @@ if (scenario_key != 0)
|
||||
</iframe>
|
||||
<% } %>
|
||||
</div>
|
||||
<div id="fgtabtoggler" class='toggler' onClick="toggleTabLayout(this)" title='<%=L("lcl_toggler")%>'><%=I("fa-caret-down", { fastyle: "fas" })%></div>
|
||||
<div id="fgtabtoggler" class='toggler' onClick="toggleTabLayout(this)" title='<%=safe.htmlattr(L("lcl_toggler"))%>'><%=I("fa-caret-down", { fastyle: "fas" })%></div>
|
||||
|
||||
<%
|
||||
if (scenario_key > 0)
|
||||
|
||||
@@ -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 = "";
|
||||
}
|
||||
|
||||
@@ -256,7 +256,7 @@ var /*global*/ resizeTimerID=null;
|
||||
if (disc_key > 0)
|
||||
{
|
||||
var sqlMaxKleur = "SELECT ar.alg_verdieping_key, MAX(thema.waarde) waarde, ti.cad_legendawaarde_rgb, count(*) aantal "
|
||||
+ " FROM ins_deel id, "
|
||||
+ " FROM ins_v_deelenonderdeel id, "
|
||||
+ " ins_srtdeel isd, "
|
||||
+ " alg_ruimte ar, "
|
||||
+ " ( "+ thema_view + ") THEMA, "
|
||||
|
||||
@@ -129,14 +129,14 @@
|
||||
// session ended due to inactivity
|
||||
if (data.end == 1)
|
||||
{
|
||||
add2chat([{safe_message: "<%=L('lcl_chat_inactive_ended')%>", sincetime: toTimeString(new Date(), true), fromname: "<%=L('lcl_chat_system')%>", inactive: true, mine: false}]);
|
||||
add2chat([{safe_message: L('lcl_chat_inactive_ended'), sincetime: toTimeString(new Date(), true), fromname: L('lcl_chat_system'), inactive: true, mine: false}]);
|
||||
$("#chat, span.sendbutton").attr('readonly', true);
|
||||
return false; // stop polling notify
|
||||
}
|
||||
// session aborted by user
|
||||
else if (data.end == 2)
|
||||
{
|
||||
add2chat([{safe_message: "<%=L('lcl_chat_user_ended')%>", sincetime: toTimeString(new Date(), true), fromname: "<%=L('lcl_chat_system')%>", aborted: true, mine: false}]);
|
||||
add2chat([{safe_message: L('lcl_chat_user_ended'), sincetime: toTimeString(new Date(), true), fromname: L('lcl_chat_system'), aborted: true, mine: false}]);
|
||||
$("#chat, span.sendbutton").attr('readonly', true);
|
||||
return false; // stop polling notify
|
||||
}
|
||||
@@ -152,18 +152,18 @@
|
||||
ago15.setMinutes(ago15.getMinutes() - 15);
|
||||
if (!ended && last_alive < ago15.getTime())
|
||||
{
|
||||
add2chat([{safe_message: "<%=L("lcl_chat_ended")%>", sincetime: toTimeString(new Date(), true), fromname: "<%=L('lcl_chat_system')%>", inactive: true, system: true, mine: false}]);
|
||||
add2chat([{safe_message: L("lcl_chat_ended"), sincetime: toTimeString(new Date(), true), fromname: L('lcl_chat_system'), inactive: true, system: true, mine: false}]);
|
||||
$("#chat, span.sendbutton").attr('readonly', true);
|
||||
notify.end(chatSendchannelId, chatReadchannelId, 1); // session ended due to inactivity
|
||||
ended = true;
|
||||
return false;
|
||||
} else if (!warning_2 && last_alive < ago14.getTime())
|
||||
{
|
||||
add2chat([{safe_message: "<%=L("lcl_chat_inactive_warning_2")%>", sincetime: toTimeString(new Date(), true), fromname: "<%=L('lcl_chat_system')%>", system: true, mine: false}]);
|
||||
add2chat([{safe_message: L("lcl_chat_inactive_warning_2"), sincetime: toTimeString(new Date(), true), fromname: L('lcl_chat_system'), system: true, mine: false}]);
|
||||
warning_2 = true;
|
||||
} else if (!warning_1 && last_alive < ago10.getTime())
|
||||
{
|
||||
add2chat([{safe_message: "<%=L("lcl_chat_inactive_warning_1")%>", sincetime: toTimeString(new Date(), true), fromname: "<%=L('lcl_chat_system')%>", system: true, mine: false}]);
|
||||
add2chat([{safe_message: L("lcl_chat_inactive_warning_1"), sincetime: toTimeString(new Date(), true), fromname: L('lcl_chat_system'), system: true, mine: false}]);
|
||||
warning_1 = true;
|
||||
}
|
||||
}
|
||||
@@ -194,7 +194,7 @@
|
||||
fcltlinks: 1,
|
||||
input: msg
|
||||
}, function (json) {
|
||||
add2chat([{ safe_message: json.fclthtml, sincetime: toTimeString(new Date(), true), fromname: "<%=L('lcl_chat_selfname')%>", mine: true }]);
|
||||
add2chat([{ safe_message: json.fclthtml, sincetime: toTimeString(new Date(), true), fromname: L('lcl_chat_selfname'), mine: true }]);
|
||||
chat_dosend(msg);
|
||||
});
|
||||
}
|
||||
|
||||
@@ -114,7 +114,7 @@ Application.UnLock();
|
||||
.data("wantid", wantId)
|
||||
.data("prs_key", wanting.prs_key)
|
||||
.data("prs_naam", wanting.naam)
|
||||
.attr("title", "<%=L('lcl_chat_accept_action')%>")
|
||||
.attr("title", "<%=safe.htmlattr(L('lcl_chat_accept_action'))%>")
|
||||
.click(accept_chat);
|
||||
html_queue.append(html_row);
|
||||
}
|
||||
|
||||
@@ -149,18 +149,18 @@ Application.UnLock();
|
||||
{
|
||||
if (init)
|
||||
{
|
||||
$("#chatmsg").text("<%=L("lcl_chat_initialmsg")%>");
|
||||
$("#chatmsg").text(L("lcl_chat_initialmsg"));
|
||||
$("span.spinnerbutton, span.cancelbutton").hide();
|
||||
$("#initialmsg").autogrow().focus().on("keydown", handleEnter);
|
||||
}
|
||||
else
|
||||
{
|
||||
$("#chatmsg").text("<%=L("lcl_chat_waiting")%>");
|
||||
$("#chatmsg").text(L("lcl_chat_waiting"));
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
$("#chatmsg").text("<%=L("lcl_chat_no_listeners")%>");
|
||||
$("#chatmsg").text(L("lcl_chat_no_listeners"));
|
||||
$("div.text-wrapper").hide();
|
||||
}
|
||||
FcltMgr.resized();
|
||||
@@ -181,13 +181,13 @@ Application.UnLock();
|
||||
<div class="chatinitialmsg" id="chatmsg"></div>
|
||||
<div class="text-wrapper">
|
||||
<textarea id="initialmsg" class="fldtxt" placeholder='<%=L("lcl_chat_initialmessage")%>'></textarea>
|
||||
<span class="sendbutton" onclick="chat_ask()" title="<%=L("lcl_chat_waiting").format(wantchannelId)%>">
|
||||
<span class="sendbutton" onclick="chat_ask()" title="<%=safe.htmlattr(L("lcl_chat_waiting")).format(wantchannelId)%>">
|
||||
<%=I("fa-paper-plane fa-lg")%>
|
||||
</span>
|
||||
<span class="spinnerbutton" title="<%=L("lcl_chat_waiting").format(wantchannelId)%>">
|
||||
<span class="spinnerbutton" title="<%=safe.htmlattr(L("lcl_chat_waiting")).format(wantchannelId)%>">
|
||||
<%=I("fa-fclt-spinner fa-lg fas")%>
|
||||
</span>
|
||||
<span class="cancelbutton" onclick="chat_remove()" title="<%=L("lcl_chat_waiting").format(wantchannelId)%>">
|
||||
<span class="cancelbutton" onclick="chat_remove()" title="<%=safe.htmlattr(L("lcl_chat_waiting")).format(wantchannelId)%>">
|
||||
<%=I("fa-times fa-lg")%>
|
||||
</span>
|
||||
</div>
|
||||
|
||||
@@ -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") &&
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
$Revision$
|
||||
$Id$
|
||||
|
||||
File: CNT/cnt_show_contract.asp
|
||||
File: CNT/cnt_contract.asp
|
||||
Description: Functie bestaand contractrecord toont of nieuwe laat editen
|
||||
Parameters: cnt_key Contract key
|
||||
Context:
|
||||
@@ -60,9 +60,16 @@ var pageTitle = L('lcl_contract');
|
||||
var pageIcon = "fa-file-certificate"; // default
|
||||
if (cnt_key > 0)
|
||||
{
|
||||
sql = "SELECT cnt_contract_nummer_intern, cnt_contract_versie, cnt_disc_params_factuurschema, cnt_contract_omschrijving, cs.ins_discipline_image"
|
||||
sql = "SELECT cnt_contract_nummer_intern"
|
||||
+ " , cnt_contract_versie"
|
||||
+ " , cnt_disc_params_factuurschema"
|
||||
+ " , cnt_contract_omschrijving"
|
||||
+ " , dp.cnt_srtcontract_type"
|
||||
+ " , cs.ins_discipline_image"
|
||||
+ " , "+ lcl.xsqla('cs.ins_discipline_omschrijving','cs.ins_discipline_key')
|
||||
+ " FROM cnt_contract c, cnt_disc_params dp, cnt_discipline cs"
|
||||
+ " FROM cnt_contract c"
|
||||
+ " , cnt_disc_params dp"
|
||||
+ " , cnt_discipline cs"
|
||||
+ " WHERE cnt_contract_key = " + cnt_key
|
||||
+ " AND c.ins_discipline_key = cs.ins_discipline_key"
|
||||
+ " AND c.ins_discipline_key = dp.cnt_ins_discipline_key";
|
||||
@@ -70,6 +77,7 @@ if (cnt_key > 0)
|
||||
if (oRs.eof)
|
||||
shared.record_not_found();
|
||||
hasFactuurschema = (oRs("cnt_disc_params_factuurschema").Value == 1);
|
||||
var srtcontract_type = oRs("cnt_srtcontract_type").Value;
|
||||
var cnt_contract_versie = oRs("cnt_contract_versie").Value;
|
||||
if (copy)
|
||||
tabtitle = L("lcl_cnt_copy") + " " + tabtitle.toLowerCase();
|
||||
@@ -87,10 +95,25 @@ if (cnt_key > 0)
|
||||
%>
|
||||
<script type="text/javascript">
|
||||
|
||||
var cnt_key = <%=cnt_key%>;
|
||||
var copy = (<%=(copy?1:0)%>)==1;
|
||||
var verynew = (<%=(verynew?1:0)%>)==1;
|
||||
var hasScope = (<%=((srtcontract_type != 4 && srtcontract_type != 6) ? 1 : 0)%>) == 1;
|
||||
$(function ()
|
||||
{
|
||||
FcltMgr.setTitle("<%=safe.jsstring(tabtitle)%>", {hot: false});
|
||||
<% if (cnt_key == -1) { %>FcltMgr.startEdit(window);<% } %>
|
||||
|
||||
if (cnt_key == -1)
|
||||
{
|
||||
FcltMgr.startEdit(window);
|
||||
}
|
||||
else
|
||||
{
|
||||
if (verynew && hasScope)
|
||||
{ // Direct naar tab scope.
|
||||
$("#frametabs").tabs({ "active": 1 }); // Open direct het scope subframe (2de frame/subtab, dus index == 1)
|
||||
}
|
||||
}
|
||||
})
|
||||
|
||||
function contractClose(params)
|
||||
@@ -98,12 +121,12 @@ if (cnt_key > 0)
|
||||
if (params.close)
|
||||
{
|
||||
FcltMgr.closeDetail(window, { cancel: true } );
|
||||
return true;;
|
||||
return true;
|
||||
}
|
||||
if (params.keepForm)
|
||||
return;
|
||||
<% if (cnt_key == -1 || copy)
|
||||
{ %>
|
||||
if (cnt_key == -1 || copy)
|
||||
{
|
||||
if (params.cancel)
|
||||
{
|
||||
FcltMgr.closeDetail(window, params );
|
||||
@@ -111,16 +134,14 @@ if (cnt_key > 0)
|
||||
}
|
||||
|
||||
FcltMgr.setTitle(L("lcl_contract") + " " + params.cnt_key, {hot:false});
|
||||
// TODO geleend van MLD. Is dit hier nodig? Ook is cnt_key niet de juiste tabtekst, maar zien we die?
|
||||
// nieuw contract, ga verder in 'verynew' modus
|
||||
// Nieuw contract, ga verder in 'verynew' modus
|
||||
// Altijd complete reload, we hebben nu een cnt_key namelijk
|
||||
window.location.href = "cnt_contract.asp?verynew=1&cnt_key=" + params.cnt_key;
|
||||
<% }
|
||||
}
|
||||
else
|
||||
{ // Bestaand contract bewerkt, switch naar show-mode
|
||||
%>
|
||||
$("#cntframe")[0].src = "cnt_show_contract.asp?cnt_key=<%=cnt_key%>";
|
||||
<% } %>
|
||||
$("#cntframe")[0].src = "cnt_show_contract.asp?cnt_key=" + cnt_key;
|
||||
}
|
||||
}
|
||||
|
||||
function scopeClose(params)
|
||||
@@ -257,6 +278,9 @@ if (cnt_key > 0)
|
||||
oRs.close();
|
||||
if (cnt_typecontract != 4 && cnt_typecontract != 6) {
|
||||
page = "cnt_show_scope.asp?cnt_key=" + cnt_key;
|
||||
if (verynew) { // Open cnt_edit_scope door in cnt_show_scope gelijk de wijzig-button te activeren.
|
||||
page += "&verynew=1";
|
||||
}
|
||||
IFRAMER("scopeframe", page, { icon: "fa-list", FcltClose: "scopeClose" } );
|
||||
}
|
||||
|
||||
|
||||
@@ -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.
|
||||
}
|
||||
|
||||
@@ -29,6 +29,7 @@ user.auth_required_or_abort(this_cnt.canReadAny);
|
||||
|
||||
var showall = getQParamInt("showall", 0) == 1;
|
||||
var outputmode = getQParamInt("outputmode", 0);
|
||||
var verynew = getQParamInt("verynew", 0);
|
||||
%>
|
||||
<html>
|
||||
<head>
|
||||
@@ -57,6 +58,14 @@ var outputmode = getQParamInt("outputmode", 0);
|
||||
}
|
||||
FcltMgr.openDetail(url, "");
|
||||
}
|
||||
|
||||
$(function () {
|
||||
var scopeRequired = (<%=verynew%>==1); // Voor een nieuw contract waarbij de scope moet worden ingevuld
|
||||
if (scopeRequired) { // gelijk doorsturen naar cnt_edit-scope.
|
||||
cnt_scopechange();
|
||||
}
|
||||
});
|
||||
|
||||
</script>
|
||||
</head>
|
||||
<body id="listbody">
|
||||
|
||||
@@ -1,309 +0,0 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
|
||||
<head>
|
||||
<title>Facilitor Consoles 2022 Preview</title>
|
||||
<meta charset="utf-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1">
|
||||
|
||||
<!-- Custom fonts for this template -->
|
||||
<link href="../FontAwesome/css/fontawesome.min.css" rel="stylesheet" type="text/css">
|
||||
<link href="../FontAwesome/css/solid.min.css" rel="stylesheet" type="text/css">
|
||||
<link
|
||||
href="https://fonts.googleapis.com/css?family=Nunito:200,200i,300,300i,400,400i,600,600i,700,700i,800,800i,900,900i"
|
||||
rel="stylesheet">
|
||||
|
||||
<!-- Custom styles for this template -->
|
||||
<link href="css/sb-admin-2.min.css" rel="stylesheet">
|
||||
|
||||
<!-- Custom styles for this page -->
|
||||
<link href="vendor/datatables/dataTables.bootstrap4.min.css" rel="stylesheet">
|
||||
|
||||
<!-- Dark mode -->
|
||||
<link rel="stylesheet" href="dark-mode.css">
|
||||
|
||||
<!-- Facilitor style overrules for this page -->
|
||||
<link rel="stylesheet" href="consoles.css">
|
||||
|
||||
</head>
|
||||
|
||||
<body id="page-top" class="h-100 bg-white">
|
||||
<div id="wrapper">
|
||||
<div id="content-wrapper" class="bg-cornsilk d-flex flex-column">
|
||||
<div class="jumbotron text-center bg-linen shadow">
|
||||
<h1><i class="fa fa-heartbeat fa-2x" aria-hidden="true"></i> Facilitor Consoles <i class="fa fa-eye" aria-hidden="true"></i><i>preview</i></h1>
|
||||
<p>Gebouwenconsole</p>
|
||||
</div>
|
||||
|
||||
<header class="mb-auto bg-transparent">
|
||||
<nav class="nav justify-content-center float-right">
|
||||
<div class="nav-link">
|
||||
<div class="custom-control custom-switch">
|
||||
<input type="checkbox" class="custom-control-input" id="fluidSwitch">
|
||||
<label class="custom-control-label" for="fluidSwitch">Fluid mode</label>
|
||||
</div>
|
||||
</div>
|
||||
<div class="nav-link">
|
||||
<div class="custom-control custom-switch">
|
||||
<input type="checkbox" class="custom-control-input" id="darkSwitch">
|
||||
<label class="custom-control-label" for="darkSwitch">Dark Mode</label>
|
||||
</div>
|
||||
</div>
|
||||
</nav>
|
||||
</header>
|
||||
|
||||
<div class="container mb-3">
|
||||
<div class="row">
|
||||
<div class="col-xl-7">
|
||||
<div class="card shadow bg-light" style="min-height: 500px;">
|
||||
<div class="card-body">
|
||||
<div id="list-locations" class="table-responsive">
|
||||
<h2>Locaties</h2>
|
||||
<p>Loading..</p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-xl-5">
|
||||
<div class="" style="min-height: 500px; overflow: hidden;">
|
||||
<div class="row h-100" hidden>
|
||||
<div class="card col-xl-12 p-0 bg-light">
|
||||
<div class="card-body p-0 col-xl-12">
|
||||
<div id="building-map" class="h-50">
|
||||
</div>
|
||||
<div id="building-view" class="h-50">
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="container mb-3">
|
||||
<div class="row">
|
||||
<div class="col-xl-7">
|
||||
<div class="card shadow bg-light">
|
||||
<div class="card-body">
|
||||
<div id="list-buildings" class="table-responsive" style="min-height: 500px;">
|
||||
<h2>Gebouwen</h2>
|
||||
<p>Loading..</p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-xl-5">
|
||||
<div class="card shadow bg-light overflow-auto" style="min-height: 500px;">
|
||||
<div class="card-body">
|
||||
<div id="show-location " hidden>
|
||||
<h2>Details</h2>
|
||||
<p>-</p>
|
||||
</div>
|
||||
<div id="show-building" hidden>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="row" hidden>
|
||||
<div class="col-xl-12">
|
||||
<div class="card shadow bg-light" style="min-height: 500px;">
|
||||
<div class="card-body">
|
||||
<div id="show-floors">
|
||||
<div id="filter-floors">
|
||||
</div>
|
||||
<div>
|
||||
<figure class="figure">
|
||||
<img class="figure-img img-fluid rounded" alt="plan" hidden>
|
||||
</figure>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="container">
|
||||
<div class="row">
|
||||
<div class="col-xl-7">
|
||||
<div class="card shadow col-xl-12 bg-light" style="min-height: 175px;">
|
||||
<div class="card-body">
|
||||
<div id="filter-disciplinetypes" class="table-responsive">
|
||||
<h2>Vakgroeptypen</h2>
|
||||
<p>Filter meldingen op vakgroeptype</p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="card shadow col-xl-12 bg-light" style="min-height: 325px;">
|
||||
<div class="card-body">
|
||||
<div id="filter-issuedisciplines" class="table-responsive">
|
||||
<h2>Vakgroepen</h2>
|
||||
<p>Filter meldingen op Vakgroep</p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="card shadow col-xl-12 bg-light" hidden>
|
||||
<div class="card-body">
|
||||
<div id="filter-issuetypes" class="table-responsive">
|
||||
<h2>Standaardmeldingen</h2>
|
||||
<p>Filter meldingen op type melding</p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-xl-5">
|
||||
<div class="card shadow col-xl-12 h-100 bg-light" style="min-height: 500px; height: 100%;">
|
||||
<div class="card-body">
|
||||
<div id="show-reportx">
|
||||
</div>
|
||||
<div class="chart-area">
|
||||
<canvas id="show-report"></canvas>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="row" hidden>
|
||||
<div class="col-xl-7">
|
||||
<div class="card mb-3 shadow bg-light" style="min-height: 500px;">
|
||||
<div class="card-body">
|
||||
<div id="list-issues" class="table-responsive">
|
||||
<h2>Meldingen</h2>
|
||||
<p>Kies hierboven een gebouw</p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-xl-5">
|
||||
<div class="card mb-3 shadow bg-light overflow-auto" style="min-height: 500px;">
|
||||
<div class="card-body">
|
||||
<div id="show-issue" hidden>
|
||||
<h2>Details</h2>
|
||||
<p>-</p>
|
||||
</div>
|
||||
<div id="show-issue-object" hidden>
|
||||
<h2>Object</h2>
|
||||
<p>-</p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="container">
|
||||
<div class="row" hidden>
|
||||
<div class="col-xl-7">
|
||||
<div class="card mb-3 bg-light" style="min-height: 500px;">
|
||||
<div class="card-body">
|
||||
<div id="list-issue-orders">
|
||||
<h2>Opdrachten</h2>
|
||||
<p>-</p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-xl-5">
|
||||
<div class="card mb-3 shadow bg-light overflow-auto" style="min-height: 500px;">
|
||||
<div class="card-body">
|
||||
<div id="show-order" hidden>
|
||||
<h2>Details</h2>
|
||||
<p>-</p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="container">
|
||||
<div class="row" hidden>
|
||||
<div class="col-xl-7">
|
||||
<div class="card mb-3 shadow bg-light" style="min-height: 500px;">
|
||||
<div class="card-body">
|
||||
<div id="list-contracts" class="table-responsive">
|
||||
<h2>Contracten</h2>
|
||||
<p>Loading..</p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-xl-5">
|
||||
<div class="card mb-3 shadow bg-light overflow-auto">
|
||||
<div class="card-body">
|
||||
<div id="show-contract" hidden>
|
||||
<h2>Details</h2>
|
||||
<p>-</p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="container mb3">
|
||||
<div class="row">
|
||||
<div class="col-xl-7">
|
||||
<div class="card shadow bg-light">
|
||||
<div class="card-body">
|
||||
<div id="show-about">
|
||||
<h2>About</h2>
|
||||
<p>Loading..</p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-xl-5">
|
||||
<div class="card shadow bg-light">
|
||||
<div class="card-body">
|
||||
<div id="show-user">
|
||||
<h2>User</h2>
|
||||
<p>Loading..</p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<footer class="sticky-footer bg-linen shadow">
|
||||
<div class="container my-auto">
|
||||
<div class="copyright text-center my-auto">
|
||||
<span>Copyright © Facilitor 2020</span>
|
||||
</div>
|
||||
</div>
|
||||
</footer>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- Bootstrap core JavaScript-->
|
||||
<script src="../Localscripts/jquery.min.js"></script>
|
||||
<script src="vendor/bootstrap/js/bootstrap.bundle.min.js"></script>
|
||||
|
||||
<!-- Core plugin JavaScript-->
|
||||
<script src="vendor/jquery-easing/jquery.easing.min.js"></script>
|
||||
|
||||
<!-- Custom scripts for all pages-->
|
||||
<script src="js/sb-admin-2.min.js"></script>
|
||||
|
||||
<!-- Page level plugins -->
|
||||
<script src="vendor/datatables/jquery.dataTables.min.js"></script>
|
||||
<script src="vendor/datatables/dataTables.bootstrap4.min.js"></script>
|
||||
<script src="vendor/chart.js/chart.min.js"></script>
|
||||
|
||||
<!-- Page level custom scripts -->
|
||||
<script src="console.js"></script>
|
||||
<script src="alg_locatie.js"></script>
|
||||
<!-- You must load 'dark-mode-switch.js' after the dark-mode switch -->
|
||||
<script src="dark-mode-switch.js"></script>
|
||||
<!-- You must load 'fluid-mode-switch.js' after the dark-mode switch -->
|
||||
<script src="fluid-mode-switch.js"></script>
|
||||
<!-- Google Maps -->
|
||||
<script async defer
|
||||
src="https://maps.googleapis.com/maps/api/js?libraries=places&key=AIzaSyDYQ8CWgmaNMzTJnAiazxrrkjNjsxGQxvo"></script>
|
||||
|
||||
</body>
|
||||
|
||||
</html>
|
||||
File diff suppressed because it is too large
Load Diff
@@ -1,884 +0,0 @@
|
||||
/*
|
||||
$Revision$
|
||||
$Id$
|
||||
|
||||
File: console.js
|
||||
|
||||
Description: Generic include file for consoles for Facilitor
|
||||
|
||||
|
||||
*/
|
||||
|
||||
var targets = {},
|
||||
models = {},
|
||||
day_in_ms = 86400000,
|
||||
language = "EN",
|
||||
windowObjectReference,
|
||||
environment = "production";
|
||||
|
||||
/* System constants */
|
||||
var dataTables_i18n = {
|
||||
NL: {
|
||||
"sProcessing": "Bezig...",
|
||||
"sLengthMenu": "_MENU_ resultaten weergeven",
|
||||
"sZeroRecords": "Geen resultaten gevonden",
|
||||
"sInfo": "_START_ tot _END_ van _TOTAL_ resultaten",
|
||||
"sInfoEmpty": "Geen resultaten om weer te geven",
|
||||
"sInfoFiltered": " (gefilterd uit _MAX_ resultaten)",
|
||||
"sInfoPostFix": "",
|
||||
"sSearch": "Zoeken:",
|
||||
"sEmptyTable": "Geen resultaten aanwezig in de tabel",
|
||||
"sInfoThousands": ".",
|
||||
"sLoadingRecords": "Een moment geduld aub - bezig met laden...",
|
||||
"oPaginate": {
|
||||
"sFirst": "Eerste",
|
||||
"sLast": "Laatste",
|
||||
"sNext": "Volgende",
|
||||
"sPrevious": "Vorige"
|
||||
},
|
||||
"oAria": {
|
||||
"sSortAscending": ": activeer om kolom oplopend te sorteren",
|
||||
"sSortDescending": ": activeer om kolom aflopend te sorteren"
|
||||
}
|
||||
},
|
||||
DE: {
|
||||
"sEmptyTable": "Keine Daten in der Tabelle vorhanden",
|
||||
"sInfo": "_START_ bis _END_ von _TOTAL_ Einträgen",
|
||||
"sInfoEmpty": "Keine Daten vorhanden",
|
||||
"sInfoFiltered": "(gefiltert von _MAX_ Einträgen)",
|
||||
"sInfoPostFix": "",
|
||||
"sInfoThousands": ".",
|
||||
"sLengthMenu": "_MENU_ Einträge anzeigen",
|
||||
"sLoadingRecords": "Wird geladen ..",
|
||||
"sProcessing": "Bitte warten ..",
|
||||
"sSearch": "Suchen",
|
||||
"sZeroRecords": "Keine Einträge vorhanden",
|
||||
"oPaginate": {
|
||||
"sFirst": "Erste",
|
||||
"sPrevious": "Zurück",
|
||||
"sNext": "Nächste",
|
||||
"sLast": "Letzte"
|
||||
},
|
||||
"oAria": {
|
||||
"sSortAscending": ": aktivieren, um Spalte aufsteigend zu sortieren",
|
||||
"sSortDescending": ": aktivieren, um Spalte absteigend zu sortieren"
|
||||
},
|
||||
"select": {
|
||||
"rows": {
|
||||
"_": "%d Zeilen ausgewählt",
|
||||
"0": "",
|
||||
"1": "1 Zeile ausgewählt"
|
||||
}
|
||||
},
|
||||
"buttons": {
|
||||
"print": "Drucken",
|
||||
"colvis": "Spalten",
|
||||
"copy": "Kopieren",
|
||||
"copyTitle": "In Zwischenablage kopieren",
|
||||
"copyKeys": "Taste <i>ctrl</i> oder <i>\u2318</i> + <i>C</i> um Tabelle<br>in Zwischenspeicher zu kopieren.<br><br>Um abzubrechen die Nachricht anklicken oder Escape drücken.",
|
||||
"copySuccess": {
|
||||
"_": "%d Zeilen kopiert",
|
||||
"1": "1 Zeile kopiert"
|
||||
},
|
||||
"pageLength": {
|
||||
"-1": "Zeige alle Zeilen",
|
||||
"_": "Zeige %d Zeilen"
|
||||
}
|
||||
}
|
||||
},
|
||||
EN: {
|
||||
"sEmptyTable": "No data available in table",
|
||||
"sInfo": "Showing _START_ to _END_ of _TOTAL_ entries",
|
||||
"sInfoEmpty": "Showing 0 to 0 of 0 entries",
|
||||
"sInfoFiltered": "(filtered from _MAX_ total entries)",
|
||||
"sInfoPostFix": "",
|
||||
"sInfoThousands": ",",
|
||||
"sLengthMenu": "Show _MENU_ entries",
|
||||
"sLoadingRecords": "Loading...",
|
||||
"sProcessing": "Processing...",
|
||||
"sSearch": "Search:",
|
||||
"sZeroRecords": "No matching records found",
|
||||
"oPaginate": {
|
||||
"sFirst": "First",
|
||||
"sLast": "Last",
|
||||
"sNext": "Next",
|
||||
"sPrevious": "Previous"
|
||||
},
|
||||
"oAria": {
|
||||
"sSortAscending": ": activate to sort column ascending",
|
||||
"sSortDescending": ": activate to sort column descending"
|
||||
}
|
||||
},
|
||||
FR: {
|
||||
"sEmptyTable": "Aucune donnée disponible dans le tableau",
|
||||
"sInfo": "Affichage de l'élément _START_ à _END_ sur _TOTAL_ éléments",
|
||||
"sInfoEmpty": "Affichage de l'élément 0 à 0 sur 0 élément",
|
||||
"sInfoFiltered": "(filtré à partir de _MAX_ éléments au total)",
|
||||
"sInfoPostFix": "",
|
||||
"sInfoThousands": ",",
|
||||
"sLengthMenu": "Afficher _MENU_ éléments",
|
||||
"sLoadingRecords": "Chargement...",
|
||||
"sProcessing": "Traitement...",
|
||||
"sSearch": "Rechercher :",
|
||||
"sZeroRecords": "Aucun élément correspondant trouvé",
|
||||
"oPaginate": {
|
||||
"sFirst": "Premier",
|
||||
"sLast": "Dernier",
|
||||
"sNext": "Suivant",
|
||||
"sPrevious": "Précédent"
|
||||
},
|
||||
"oAria": {
|
||||
"sSortAscending": ": activer pour trier la colonne par ordre croissant",
|
||||
"sSortDescending": ": activer pour trier la colonne par ordre décroissant"
|
||||
},
|
||||
"select": {
|
||||
"rows": {
|
||||
"_": "%d lignes sélectionnées",
|
||||
"0": "Aucune ligne sélectionnée",
|
||||
"1": "1 ligne sélectionnée"
|
||||
}
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
/* global functions */
|
||||
// console messages for development support
|
||||
window.console.original_log = window.console.log;
|
||||
window.console.log = function (msg, force) {
|
||||
if (environment == "development" || force) {
|
||||
window.console.original_log(msg);
|
||||
}
|
||||
};
|
||||
// return the data of a single object or of a row object (e.g. obj.data["issue"] or obj.data["issues"][row])
|
||||
function rowInfo(obj, row) {
|
||||
"use strict";
|
||||
return (obj.single ? obj.data[obj.table] : obj.data[obj.table][row]);
|
||||
}
|
||||
|
||||
// return the value of a column
|
||||
function dataInfo(obj, row, column) {
|
||||
"use strict";
|
||||
return rowInfo(obj, row)[column];
|
||||
}
|
||||
|
||||
// return a formatted column value according to the column_type
|
||||
function typeFormat(parms) {
|
||||
"use strict";
|
||||
switch (parms.column_type) {
|
||||
case "datetime":
|
||||
if (parms.single) {
|
||||
// return the datevalue in case of a single object column
|
||||
return new Date(parms.value);
|
||||
}
|
||||
return new Intl.DateTimeFormat(undefined, {
|
||||
dateStyle: 'medium',
|
||||
timeStyle: 'short',
|
||||
hour: '2-digit',
|
||||
minute: '2-digit'
|
||||
}).format(new Date(parms.value));
|
||||
// niet na een return break;
|
||||
case "date":
|
||||
if (parms.single) {
|
||||
// return the datevalue in case of a single object column
|
||||
return new Date(parms.value);
|
||||
}
|
||||
return new Intl.DateTimeFormat(undefined, {
|
||||
dateStyle: 'medium'
|
||||
}).format(new Date(parms.value));
|
||||
// niet na een return break;
|
||||
case "integer":
|
||||
return parseInt(parms.value, 10);
|
||||
// niet na een return break;
|
||||
case "number":
|
||||
// return safe number
|
||||
return $.fn.dataTable.render.number().display(parms.value);
|
||||
// niet na een return break;
|
||||
default:
|
||||
// return safe text
|
||||
return $.fn.dataTable.render.text().display(parms.value);
|
||||
}
|
||||
}
|
||||
|
||||
// return label of the column
|
||||
function columnType(obj, column) {
|
||||
"use strict";
|
||||
// determine column_type from [ targets[target].columns[column].type ] or from [ models[model].field[column].type ] or from fallback value "text"
|
||||
return (obj.columns[column].type || (models[obj.url].fields[column] && models[obj.url].fields[column].type) || "text");
|
||||
}
|
||||
|
||||
// return label of the column
|
||||
function columnLabel(obj, column) {
|
||||
"use strict";
|
||||
// determine label from [ models[model].field[column].label ] or else from [ target.columns[column].label ] or else from [ column name ]
|
||||
return ((models[obj.url].fields[column] && models[obj.url].fields[column].label) || obj.columns[column].label || column);
|
||||
}
|
||||
|
||||
// return value of the column (single value or [column].name value)
|
||||
function columnValue(data) {
|
||||
"use strict";
|
||||
// determine whether the value is an object with a { name: value }
|
||||
return (data && typeof data.name !== "undefined" ? data.name || "" : data || "");
|
||||
}
|
||||
|
||||
// return the formatted column value, independent of single object or row object
|
||||
function dataFormat(obj, row, column) {
|
||||
"use strict";
|
||||
// get column value (as single value or as { id: xx, name: yy })
|
||||
var data = dataInfo(obj, row, column);
|
||||
return typeFormat({
|
||||
value: columnValue(data),
|
||||
column_type: columnType(obj, column),
|
||||
single: obj.single
|
||||
});
|
||||
}
|
||||
|
||||
// return combined server-data and targets[target]/models[model][column] information object
|
||||
function columnInfo(obj, row, column) {
|
||||
"use strict";
|
||||
var data, column_label, column_data, column_type, column_valuemin, column_valuemax, column_recid;
|
||||
// get column value (as single value or as { id: xx, name: yy })
|
||||
data = dataInfo(obj, row, column);
|
||||
// get column label
|
||||
column_label = columnLabel(obj, column);
|
||||
// get formatted column value
|
||||
column_data = dataFormat(obj, row, column);
|
||||
// get column_type
|
||||
column_type = columnType(obj, column);
|
||||
// determine minimum value (only for use in a progressbar)
|
||||
column_valuemin = (obj.columns[column].valuemin || 0);
|
||||
// determine maximum value (only for use in a progressbar)
|
||||
column_valuemax = (obj.columns[column].valuemax || 100);
|
||||
// determine record id in case the column is a foreign table value
|
||||
column_recid = (data && typeof data.id !== "undefined" ? parseInt(data.id, 10) : false);
|
||||
return {
|
||||
data: data,
|
||||
column_label: column_label,
|
||||
column_data: column_data,
|
||||
column_type: column_type,
|
||||
column_valuemin: column_valuemin,
|
||||
column_valuemax: column_valuemax,
|
||||
column_recid: column_recid
|
||||
};
|
||||
}
|
||||
|
||||
// return the column [ data-order ] value, used for ordering DataTable rows ([ date ] or [ datetime ] serial number only)
|
||||
function dataOrder(obj, row, column) {
|
||||
"use strict";
|
||||
var column_type = columnType(obj, column),
|
||||
value, data = dataInfo(obj, row, column);
|
||||
if (obj.single) {
|
||||
value = "";
|
||||
} else {
|
||||
value = columnValue(data);
|
||||
}
|
||||
switch (column_type) {
|
||||
case "datetime":
|
||||
case "date":
|
||||
return new Date(value).getTime();
|
||||
// niet na een return break;
|
||||
default:
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
// return DataTable settings based on targets[target]columns
|
||||
function tColumnDefs(obj) {
|
||||
"use strict";
|
||||
var defs = {
|
||||
language: dataTables_i18n[language],
|
||||
columnDefs: []
|
||||
},
|
||||
index = 0;
|
||||
$.each(obj.columns, function (key, value) {
|
||||
if (key !== "id") {
|
||||
if (value.hidden) {
|
||||
defs.columnDefs.push({
|
||||
targets: [index],
|
||||
visible: false,
|
||||
searchable: true
|
||||
});
|
||||
}
|
||||
index++;
|
||||
}
|
||||
});
|
||||
console.log(defs);
|
||||
return defs;
|
||||
}
|
||||
|
||||
// return tableHeader row
|
||||
function theadColumns(obj) {
|
||||
"use strict";
|
||||
var thead = "",
|
||||
column;
|
||||
for (column in obj.columns) {
|
||||
if (column !== "id") {
|
||||
thead += '<th>' + $.fn.dataTable.render.text().display(columnLabel(obj, column)) + '</th>';
|
||||
}
|
||||
}
|
||||
return thead;
|
||||
}
|
||||
|
||||
// return tableBody rows
|
||||
function tbodyData(obj) {
|
||||
"use strict";
|
||||
var tbody = "",
|
||||
row, column, order, col_info;
|
||||
for (row = 0; row < obj.data[obj.table].length; row += 1) {
|
||||
tbody += '<tr recid=' + obj.data[obj.table][row].id + '>';
|
||||
for (column in obj.columns) {
|
||||
if (column !== "id") {
|
||||
col_info = columnInfo(obj, row, column);
|
||||
tbody += '<td name="' + column + '"' +
|
||||
(col_info.column_recid ? 'recid="' + col_info.column_recid + '"' : '') +
|
||||
((order = dataOrder(obj, row, column)) ? 'data-order="' + order + '"' : '') +
|
||||
'>' +
|
||||
col_info.column_data +
|
||||
'</td>';
|
||||
}
|
||||
}
|
||||
tbody += '</tr>';
|
||||
}
|
||||
return tbody;
|
||||
}
|
||||
|
||||
// return formdata (single record form)
|
||||
function formData(obj) {
|
||||
"use strict";
|
||||
var target_selector = targets[obj.target].selector;
|
||||
var formbody = "",
|
||||
column, column_id, col_info;
|
||||
for (column in obj.columns) {
|
||||
if (column !== "id" && !(targets[obj.target].columns[column].hidden || false)) {
|
||||
column_id = target_selector + "-" + column;
|
||||
col_info = columnInfo(obj, undefined, column);
|
||||
col_info.column_id = column_id;
|
||||
col_info.single = obj.single;
|
||||
formbody +=
|
||||
'<div class="form-group form-group-sm pb-0 mb-0 form-row">' +
|
||||
'<label for="' + column_id + '" class="col-sm-4 col-form-label text-nowrap">' + col_info.column_label + '</label>' +
|
||||
new Field(col_info).render() +
|
||||
'</div>';
|
||||
}
|
||||
}
|
||||
return formbody;
|
||||
}
|
||||
|
||||
// return filterdata (buttons for filtering DataTable data)
|
||||
function filterData(obj) {
|
||||
"use strict";
|
||||
// var container_selector = targets[obj.target].selector;
|
||||
var formbody = "",
|
||||
row, column, col_info,
|
||||
btn_size_class = targets[obj.target].btn_size_class,
|
||||
btn_has_icon = targets[obj.target].btn_has_icon,
|
||||
icon_column = targets[obj.target].icon_column,
|
||||
color_column = targets[obj.target].color_column,
|
||||
icon;
|
||||
for (row = 0; row < obj.data[obj.table].length; row += 1) {
|
||||
if (icon_column && !!obj.data[obj.table][row][icon_column] && obj.data[obj.table][row][icon_column].substring(0, 3) == "fa-") {
|
||||
icon = obj.data[obj.table][row][icon_column];
|
||||
} else {
|
||||
icon = "fa-tag";
|
||||
}
|
||||
formbody += '<button type="button" class="btn text-center ' + btn_size_class + ' ' + settings.btn_text_class + ' ' + settings.btn_class + '" recid=' + obj.data[obj.table][row].id + (color_column && !!obj.data[obj.table][row][color_column] ? ' color="' + obj.data[obj.table][row][color_column].split(";")[0] + '"' : "") + '>' +
|
||||
'<div class="">' + (btn_has_icon ? '<i class="fa ' + icon + ' fa-lg"></i>' : "") + '</div>';
|
||||
for (column in obj.columns) {
|
||||
if (column !== "id") {
|
||||
col_info = columnInfo(obj, row, column);
|
||||
formbody += '<div class="' + (targets[obj.target].columns[column].hidden ? "" : "d-inline-block text-truncate") + '" name="' + column + '"' +
|
||||
((targets[obj.target].columns[column].hidden || false) ? "hidden" : '') +
|
||||
(col_info.column_recid ? ' recid=' + col_info.column_recid : '') + '>' +
|
||||
"<small>" +
|
||||
((targets[obj.target].columns[column].hidden || false) ? '' : col_info.column_data) +
|
||||
'</small></div>';
|
||||
}
|
||||
}
|
||||
formbody += '<div name="badge"></div>';
|
||||
formbody += '</button>';
|
||||
}
|
||||
return formbody;
|
||||
}
|
||||
|
||||
// populate the target (datatable, form or filter)
|
||||
function populate(obj) {
|
||||
"use strict";
|
||||
// the model needs to be present (loaded) for correct workings, except for reports (graphs)
|
||||
if (targets[obj.target].report || models[obj.url].id) {
|
||||
var $this = $("#" + targets[obj.target].selector),
|
||||
h2;
|
||||
obj.columns = obj.columns || targets[obj.target].columns;
|
||||
console.log("populate: " + obj.target);
|
||||
obj.table = obj.single || obj.url;
|
||||
h2 = '<h2 name="formtitle">' + (lcl[language][targets[obj.target].title] || obj.table) + '</h2>';
|
||||
obj.single = obj.single || false;
|
||||
// render single record form html
|
||||
if (obj.single) {
|
||||
var fdata = formData(obj);
|
||||
$this.html(h2 + '<form id="' + targets[obj.target].selector + '-form">' + fdata + '</form>' + new Customfields(obj).render());
|
||||
// render buttons from rows for filter form html
|
||||
} else if (targets[obj.target].filter) {
|
||||
var fdata = filterData(obj);
|
||||
$this.html(h2 + '<form id="' + targets[obj.target].selector + '-form" class="form-inline">' + fdata + '</form>');
|
||||
// render h2 header only for report
|
||||
} else if (targets[obj.target].report) {
|
||||
$this.html(h2);
|
||||
// render table html
|
||||
} else {
|
||||
var $this, thead, tbody, table;
|
||||
thead = '<thead class="thead-dark">' + theadColumns(obj) + '</thead>';
|
||||
tbody = '<tbody>' + tbodyData(obj) + '</tbody>';
|
||||
table = '<table class="table table-sm table-striped table-hover" name="' + obj.target + '">' + thead + tbody + '</table>';
|
||||
$this.html(h2 + table);
|
||||
}
|
||||
// set trigger(s) if available
|
||||
if (targets[obj.target].trigger) {
|
||||
$(targets[obj.target].trigger_selector, $this).off().on(targets[obj.target].events, targets[obj.target].trigger);
|
||||
}
|
||||
// run ready function if available
|
||||
if (targets[obj.target].ready) {
|
||||
targets[obj.target].ready(obj);
|
||||
}
|
||||
} else {
|
||||
console.log("model " + obj.url + "not yet present!");
|
||||
// retry the populate until the model is present
|
||||
setTimeout(function () {
|
||||
populate(obj);
|
||||
}, 100);
|
||||
}
|
||||
}
|
||||
|
||||
// save the model definition in models
|
||||
function setModel(obj) {
|
||||
"use strict";
|
||||
if (obj.model) {
|
||||
models[obj.model] = obj.data;
|
||||
obj.data.fields.forEach(function (field) {
|
||||
models[obj.model].fields[field.id] = field;
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
// get api2 data through ajax
|
||||
function api2(obj) {
|
||||
"use strict";
|
||||
if (obj.target) {
|
||||
obj.filter = (Object.keys(targets[obj.target].columns).length ? (obj.filter ? obj.filter + "&" : "?") + "fields=" + Object.keys(targets[obj.target].columns).join(",") : obj.filter || "");
|
||||
}
|
||||
var ajaxHdl = $.ajax({
|
||||
url: settings.facilitor_url + "api2/" + obj.url + (obj.filter || ""),
|
||||
dataType: "json",
|
||||
success: function (data, textStatus, jqXHR) {
|
||||
console.log("Ajax success start: " + (obj.target || obj.model));
|
||||
obj.data = data;
|
||||
if (obj.model) {
|
||||
setModel(obj);
|
||||
} else {
|
||||
populate(obj);
|
||||
}
|
||||
console.log(data);
|
||||
console.log("Ajax success stop: " + (obj.target || obj.model));
|
||||
},
|
||||
complete: function (jqXHR, textStatus) {
|
||||
console.log("Ajax complete: " + (obj.target || obj.model));
|
||||
}
|
||||
});
|
||||
console.log({
|
||||
target: (obj.target || "model_" + obj.model),
|
||||
ajaxHdl: ajaxHdl
|
||||
});
|
||||
}
|
||||
|
||||
// google maps initialisation
|
||||
var map, marker, geocoder, panorama, selector;
|
||||
|
||||
// google maps interface to set a location and a marker
|
||||
function codeAddress(address) {
|
||||
"use strict";
|
||||
geocoder.geocode({
|
||||
'address': address
|
||||
}, function (results, status) {
|
||||
if (status == 'OK') {
|
||||
map.setCenter(results[0].geometry.location);
|
||||
marker = new google.maps.Marker({
|
||||
map: map,
|
||||
position: results[0].geometry.location
|
||||
});
|
||||
panorama.setPosition(results[0].geometry.location);
|
||||
panorama.addListener('position_changed', function () {
|
||||
if (!panorama.getVisible()) {
|
||||
panorama.setVisible(true);
|
||||
}
|
||||
});
|
||||
$("#" + selector).closest(".row").attr("hidden", false);
|
||||
} else {
|
||||
alert('Geocode was not successful for the following reason: ' + status);
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
// google maps initialisation and first location set to Facilitor
|
||||
function initAutocomplete(mapselector, viewselector, location) {
|
||||
"use strict";
|
||||
selector = mapselector;
|
||||
// The location of Facilitor
|
||||
var facilitor = location || {
|
||||
lat: 52.216670,
|
||||
lng: 6.946060
|
||||
};
|
||||
// map part
|
||||
map = new google.maps.Map(
|
||||
document.getElementById(mapselector), {
|
||||
zoom: 13,
|
||||
center: facilitor,
|
||||
mapTypeId: 'roadmap'
|
||||
});
|
||||
marker = new google.maps.Marker({
|
||||
map: map,
|
||||
position: facilitor
|
||||
});
|
||||
// streetview part
|
||||
panorama = new google.maps.StreetViewPanorama(
|
||||
document.getElementById(viewselector), {
|
||||
position: facilitor,
|
||||
panControl: false,
|
||||
addressControl: false,
|
||||
pov: {
|
||||
heading: 34,
|
||||
pitch: 20
|
||||
}
|
||||
});
|
||||
map.setStreetView(panorama);
|
||||
geocoder = geocoder || new google.maps.Geocoder();
|
||||
$("#" + mapselector).closest(".row").attr("hidden", !location);
|
||||
}
|
||||
|
||||
/* settings and functions from refactoring of targets object */
|
||||
var settings = {
|
||||
facilitor_url: "../../",
|
||||
btn_class: "btn-secundary",
|
||||
btn_text_class: "text-dark",
|
||||
btn_selected_class: "btn-success",
|
||||
btn_partial_class: "btn-success",
|
||||
btn_size_class: "col-sm-3",
|
||||
btn_has_icon: true,
|
||||
icon_column: false,
|
||||
color_column: false
|
||||
};
|
||||
// set partial, full or no class on parent button dependent on the number of selected child buttons
|
||||
function setParentSelectedClass(parms) {
|
||||
"use strict";
|
||||
var selected = $("button:visible." + settings.btn_selected_class + " div[name=" + parms.name + "][recid=" + parms.value + "]", parms.context).length;
|
||||
var present = $("button:visible div[name=" + parms.name + "][recid=" + parms.value + "]", parms.context).length;
|
||||
// reset classes to default
|
||||
var button = $("button[recid=" + parms.value + "]", parms.parent)
|
||||
.removeClass(settings.btn_selected_class + ' ' + settings.btn_partial_class)
|
||||
.addClass(settings.btn_class + ' ' + settings.btn_text_class)
|
||||
.css({
|
||||
backgroundColor: ""
|
||||
});
|
||||
// all childs are selected
|
||||
if (present == selected) {
|
||||
button
|
||||
.addClass(settings.btn_selected_class)
|
||||
.removeClass(settings.btn_class + ' ' + settings.btn_text_class)
|
||||
.css({
|
||||
backgroundColor: (button.attr("color") ? button.attr("color") : "")
|
||||
});
|
||||
// part of the childs are selected
|
||||
} else if (selected > 0) {
|
||||
button
|
||||
.addClass(settings.btn_selected_class + ' ' + settings.btn_partial_class)
|
||||
.removeClass(settings.btn_class + ' ' + settings.btn_text_class)
|
||||
.css({
|
||||
backgroundColor: (button.attr("color") ? button.attr("color") : "")
|
||||
});
|
||||
}
|
||||
return button;
|
||||
}
|
||||
// set full or no class on child buttons dependent on the parent button
|
||||
function setChildSelectedClass(parms) {
|
||||
"use strict";
|
||||
var button;
|
||||
var items = $("button div[name=" + parms.name + "][recid=" + parms.$this.attr("recid") + "]", parms.parent);
|
||||
items
|
||||
.each(
|
||||
function () {
|
||||
button = $(this).closest("button");
|
||||
button
|
||||
.removeClass(settings.btn_partial_class)
|
||||
.toggleClass(settings.btn_selected_class, parms.$this.hasClass(settings.btn_selected_class))
|
||||
.toggleClass(settings.btn_class, !parms.$this.hasClass(settings.btn_selected_class))
|
||||
.toggleClass(settings.btn_text_class, !parms.$this.hasClass(settings.btn_selected_class))
|
||||
.css({
|
||||
backgroundColor: (button.attr("color") && button.hasClass(settings.btn_selected_class) ? button.attr("color") : "")
|
||||
});
|
||||
}
|
||||
);
|
||||
return items;
|
||||
}
|
||||
// set color of child-buttons to color of parent-button when a child-button has no specific color of it's own
|
||||
function setChildrenColor(parms) {
|
||||
"use strict";
|
||||
var $this, parent;
|
||||
var items = $("button:not([color]) div[name=" + parms.name + "]", parms.context);
|
||||
items
|
||||
.each(
|
||||
function () {
|
||||
$this = $(this);
|
||||
// parent button has a specific colour
|
||||
parent = $("button[recid=" + $this.attr("recid") + "]", parms.parent);
|
||||
if (parent.length) {
|
||||
$this.closest("button")
|
||||
.attr("color", parent.attr("color"))
|
||||
.css({
|
||||
backgroundColor: parent.attr("color")
|
||||
});
|
||||
}
|
||||
}
|
||||
);
|
||||
}
|
||||
// save recid's of selected buttons in [ context ]
|
||||
function saveSelectedbuttonIds(parms) {
|
||||
"use strict";
|
||||
targets[parms.target].selected_ids = [];
|
||||
$("button." + settings.btn_selected_class, parms.context).each(function () {
|
||||
targets[parms.target].selected_ids.push($(this).attr("recid"));
|
||||
});
|
||||
}
|
||||
// save recid's used in table
|
||||
function saveUsedtabledataIds(parms) {
|
||||
"use strict";
|
||||
var index, recid, key_count = {};
|
||||
targets[parms.target].selected_ids = [];
|
||||
$("td[name=" + parms.name + "]", parms.context).each(function () {
|
||||
recid = $(this).attr("recid");
|
||||
key_count[recid] = key_count[recid] ? key_count[recid] + 1 : 1;
|
||||
index = targets[parms.target].selected_ids.indexOf(recid);
|
||||
if (index === -1) {
|
||||
targets[parms.target].selected_ids.push(recid);
|
||||
}
|
||||
});
|
||||
return key_count;
|
||||
}
|
||||
// set classes for button dependent on button_selected_class
|
||||
function setButtonClasses(parms) {
|
||||
"use strict";
|
||||
parms.$this.removeClass(settings.btn_selected_class == settings.btn_partial_class ? "" : settings.btn_partial_class)
|
||||
.toggleClass(settings.btn_selected_class)
|
||||
.toggleClass(settings.btn_class, !parms.$this.hasClass(settings.btn_selected_class))
|
||||
.toggleClass(settings.btn_text_class, !parms.$this.hasClass(settings.btn_selected_class))
|
||||
.css({
|
||||
backgroundColor: (parms.$this.attr("color") && parms.$this.hasClass(settings.btn_selected_class) ? parms.$this.attr("color") : "")
|
||||
});
|
||||
}
|
||||
// reset classes for all buttons
|
||||
function resetAllButtonClasses(parms) {
|
||||
"use strict";
|
||||
$("button", parms.context)
|
||||
.removeClass(settings.btn_partial_class + ' ' + settings.btn_selected_class)
|
||||
.addClass(settings.btn_class + ' ' + settings.btn_text_class)
|
||||
.css({
|
||||
backgroundColor: ""
|
||||
});
|
||||
}
|
||||
// set hidden attr for buttons dependent on button_selected_class
|
||||
function setButtonHidden(parms) {
|
||||
"use strict";
|
||||
$("button", parms.context)
|
||||
.attr("hidden", function () {
|
||||
$(this).attr("hidden", !$(this).hasClass(settings.btn_selected_class))
|
||||
});
|
||||
}
|
||||
// autoselect first row in case there is only 1 result
|
||||
function autoselectRow(parms) {
|
||||
"use strict";
|
||||
// select (click) the first row if there is only 1 result
|
||||
if ($("tbody tr", "#" + targets[parms.target].selector).length == 1) {
|
||||
$("tbody tr:first", "#" + targets[parms.target].selector).click();
|
||||
}
|
||||
}
|
||||
// redraw the table and select first row in case there is only 1 result
|
||||
function redrawTable(parms) {
|
||||
"use strict";
|
||||
targets[parms.target].data_table.draw();
|
||||
$("#" + targets[parms.target].selector).closest("div.card").resize();
|
||||
autoselectRow(parms);
|
||||
}
|
||||
// resize innerHeight of target-card to innerHeight of base-card
|
||||
function resizeCard(targetselector, baseselector) {
|
||||
function _resizeCard() {
|
||||
console.log("resize " + targetselector);
|
||||
$("#" + targetselector).closest("div.card").innerHeight($("#" + baseselector).closest("div.card").innerHeight());
|
||||
}
|
||||
return function _setTimeout() {
|
||||
setTimeout(_resizeCard, 100);
|
||||
}
|
||||
}
|
||||
|
||||
/* Objects to be used for rendering dashboards */
|
||||
|
||||
// Object with render function to return field html (without label)
|
||||
function Field(parms) {
|
||||
"use strict";
|
||||
var self = this,
|
||||
date, time;
|
||||
// prefix a string with a zero when string length < length to be used ( hour/minute/day/month fields )
|
||||
var prefixZero = function (str, len) {
|
||||
return ("0" + str).slice(-len);
|
||||
};
|
||||
this.single = parms.single;
|
||||
this.column_name = parms.column_name;
|
||||
this.column_type = parms.column_type;
|
||||
this.column_id = parms.column_id;
|
||||
this.column_data = typeFormat({
|
||||
value: (parms.column_data || ""),
|
||||
column_type: parms.column_type,
|
||||
single: parms.single
|
||||
});
|
||||
this.column_valuemin = parms.column_valuemin;
|
||||
this.column_valuemax = parms.column_valuemax;
|
||||
this.render = function () {
|
||||
switch (self.column_type) {
|
||||
case "progressbar":
|
||||
return '<div class="col-sm-8 progress" style="height: 2rem;">' +
|
||||
'<div class="progress-bar progress-bar-info form-control form-control-sm" role="progressbar" id="' + self.column_id + '" style="width: ' + Math.round(1 / self.column_valuemax * self.column_data * 100) + '%;" aria-valuenow="' + self.column_data + '" aria-valuemin="' + self.column_valuemin + '" aria-valuemax="' + self.column_valuemax + '"></div>' +
|
||||
'</div>';
|
||||
// niet na een return break;
|
||||
case "check":
|
||||
return '<div class="form-check">' +
|
||||
'<input type="checkbox" class="form-control form-control-sm form-check-input" id="' + self.column_id + '" name=' + self.column_name + (self.column_data == 1 ? ' checked' : '') + ' disabled>' +
|
||||
'</div>';
|
||||
// niet na een return break;
|
||||
case "textarea":
|
||||
return '<div class="col-sm-8">' +
|
||||
'<textarea class="sm-textarea form-control form-control-sm" id="' + self.column_id + '" readonly>' + self.column_data + '</textarea>' +
|
||||
'</div>';
|
||||
// niet na een return break;
|
||||
case "date":
|
||||
date = self.column_data == "" ? "" : self.column_data.getFullYear().toString() + "-" + prefixZero((self.column_data.getMonth() + 1).toString(), 2) + "-" + prefixZero(self.column_data.getDate().toString(), 2);
|
||||
return '<div class="col-sm-8">' +
|
||||
'<input type="date" class="form-control form-control-sm" id="' + self.column_id + '" name=' + self.column_name + '" value="' + date + '" readonly>' +
|
||||
'</div>';
|
||||
// niet na een return break;
|
||||
case "datetime":
|
||||
time = self.column_data == "" ? "" : prefixZero(self.column_data.getHours().toString(), 2) + ":" + prefixZero(self.column_data.getMinutes().toString(), 2);
|
||||
date = self.column_data == "" ? "" : self.column_data.getFullYear().toString() + "-" + prefixZero((self.column_data.getMonth() + 1).toString(), 2) + "-" + prefixZero(self.column_data.getDate().toString(), 2);
|
||||
return '<div class="col-sm-5">' +
|
||||
'<input type="date" class="form-control form-control-sm" id="' + self.column_id + '" name=' + self.column_name + '" value="' + date + '" readonly>' +
|
||||
'</div>' +
|
||||
'<div class="col-sm-3">' +
|
||||
'<input type="time" class="form-control form-control-sm" id="' + self.column_id + '_time" name=' + self.column_name + '_time" value="' + time + '" readonly>' +
|
||||
'</div>';
|
||||
// niet na een return break;
|
||||
case "time":
|
||||
time = self.column_data == "" ? "" : prefixZero(self.column_data.getHours().toString(), 2) + ":" + prefixZero(self.column_data.getMinutes().toString(), 2);
|
||||
return '<div class="col-sm-3">' +
|
||||
'<input type="time" class="form-control form-control-sm" id="' + self.column_id + '_time" name=' + self.column_name + '_time" value="' + time + '" readonly>' +
|
||||
'</div>';
|
||||
// niet na een return break;
|
||||
default:
|
||||
return '<div class="col-sm-8">' +
|
||||
'<input type="' + self.column_type + '" class="form-control form-control-sm" id="' + self.column_id + '" name=' + self.column_name + '" value="' + self.column_data + '" readonly>' +
|
||||
'</div>';
|
||||
// niet na een return break;
|
||||
}
|
||||
}
|
||||
console.log(self);
|
||||
}
|
||||
|
||||
// Object with render function to return label and customfield html
|
||||
function Customfield(parms) {
|
||||
"use strict";
|
||||
var self = this;
|
||||
this.single = parms.single;
|
||||
this.column_name = parms.column_name;
|
||||
this.custom_field = parms.custom_field;
|
||||
this.selector = parms.selector;
|
||||
this.column_id = parms.selector + "-" + self.custom_field.propertyid;
|
||||
// translate customfield-type to model field-type
|
||||
this.custom_field_type = function () {
|
||||
switch (self.custom_field.type) {
|
||||
case "V":
|
||||
return "check";
|
||||
case "D":
|
||||
return "date";
|
||||
case "T":
|
||||
return "time";
|
||||
case "N":
|
||||
return "number";
|
||||
default:
|
||||
return "text";
|
||||
}
|
||||
}
|
||||
this.render = function () {
|
||||
return '<div class="form-group form-group-sm pb-0 mb-0 form-row">' +
|
||||
'<label for="' + self.column_id + '" class="col-sm-4 col-form-label text-nowrap">' + self.custom_field.label + '</label>' +
|
||||
new Field({
|
||||
single: self.single,
|
||||
column_name: self.column_name,
|
||||
column_id: self.column_id,
|
||||
column_type: self.custom_field_type(),
|
||||
column_data: self.custom_field.value
|
||||
}).render() +
|
||||
'</div>';
|
||||
}
|
||||
console.log(self);
|
||||
}
|
||||
|
||||
// Object with render function to return html for all customfields including labels
|
||||
function Customfields(parms) {
|
||||
"use strict";
|
||||
var self = this;
|
||||
// sort customfields on sequence
|
||||
this.custom_fields = (parms.data[parms.table].custom_fields ? parms.data[parms.table].custom_fields.sort(function (a, b) {
|
||||
return (a.sequence > b.sequence ? 1 : -1)
|
||||
}) : []);
|
||||
this.single = parms.single;
|
||||
this.target = parms.target;
|
||||
this.table = parms.table;
|
||||
this.render = function () {
|
||||
var fields = "",
|
||||
custom_field;
|
||||
if (targets[self.target].show_custom_fields && self.custom_fields.length) {
|
||||
for (custom_field in self.custom_fields) {
|
||||
// only customfields other than type Q, L or M
|
||||
if (["Q", "L", "M"].indexOf(self.custom_fields[custom_field].type) == -1 && (targets[self.target].show_custom_field_when_empty || self.custom_fields[custom_field].value != null)) {
|
||||
fields += new Customfield({
|
||||
single: self.single,
|
||||
column_name: custom_field,
|
||||
selector: targets[self.target].selector,
|
||||
custom_field: self.custom_fields[custom_field]
|
||||
}).render();
|
||||
}
|
||||
}
|
||||
}
|
||||
return '<div name="custom-fields">' + fields + '</div>';
|
||||
}
|
||||
console.log(self);
|
||||
}
|
||||
|
||||
// Object base for targets
|
||||
function Target(parms) {
|
||||
"use strict";
|
||||
var self = this;
|
||||
var choose = function (first_choice, fallback_choice) {
|
||||
return (typeof first_choice != "undefined" ? first_choice : fallback_choice);
|
||||
};
|
||||
this.title = parms.title || "";
|
||||
this.selector = parms.selector;
|
||||
this.mode = parms.mode;
|
||||
this.columns = choose(parms.columns, {});
|
||||
this.events = choose(parms.events, "click");
|
||||
this.trigger = parms.trigger || false;
|
||||
this.ready = parms.ready || false;
|
||||
this.filter = parms.filter || false;
|
||||
this.report = parms.report || false;
|
||||
this.trigger_selector = (this.filter ? "button" : "table tbody tr");
|
||||
this.btn_size_class = choose(parms.btn_size_class, settings.btn_size_class);
|
||||
this.btn_has_icon = choose(parms.btn_has_icon, true);
|
||||
this.icon_column = choose(parms.icon_column, settings.icon_column);
|
||||
this.color_column = choose(parms.color_column, settings.color_column);
|
||||
this.show_custom_fields = parms.show_custom_fields || false;
|
||||
this.show_custom_field_when_empty = parms.show_custom_field_when_empty || false;
|
||||
console.log(self);
|
||||
}
|
||||
@@ -1,55 +0,0 @@
|
||||
body {
|
||||
font-size: 0.85rem;
|
||||
}
|
||||
.col, .col-1, .col-10, .col-11, .col-12, .col-2, .col-3, .col-4, .col-5, .col-6, .col-7, .col-8, .col-9, .col-auto, .col-lg, .col-lg-1, .col-lg-10, .col-lg-11, .col-lg-12, .col-lg-2, .col-lg-3, .col-lg-4, .col-lg-5, .col-lg-6, .col-lg-7, .col-lg-8, .col-lg-9, .col-lg-auto, .col-md, .col-md-1, .col-md-10, .col-md-11, .col-md-12, .col-md-2, .col-md-3, .col-md-4, .col-md-5, .col-md-6, .col-md-7, .col-md-8, .col-md-9, .col-md-auto, .col-sm, .col-sm-1, .col-sm-10, .col-sm-11, .col-sm-12, .col-sm-2, .col-sm-3, .col-sm-4, .col-sm-5, .col-sm-6, .col-sm-7, .col-sm-8, .col-sm-9, .col-sm-auto, .col-xl, .col-xl-1, .col-xl-10, .col-xl-11, .col-xl-12, .col-xl-2, .col-xl-3, .col-xl-4, .col-xl-5, .col-xl-6, .col-xl-7, .col-xl-8, .col-xl-9, .col-xl-auto {
|
||||
padding-left: 8px;
|
||||
padding-right: 8px;
|
||||
}
|
||||
#list-locations tbody tr:hover,#list-buildings tbody tr:hover,#list-issues tbody tr:hover,#list-issue-orders tbody tr:hover,#list-contracts tbody tr:hover {
|
||||
cursor: pointer;
|
||||
}
|
||||
tr.table-success td,.table-hover .table-success:hover > td {
|
||||
background-color: #9b1b30;
|
||||
border-color: #9b1b30;
|
||||
color: #fff;
|
||||
}
|
||||
.btn-success {
|
||||
background-color: #9b1b30;
|
||||
border-color: #f5d6c6;
|
||||
}
|
||||
.btn-success:hover {
|
||||
border-color: #9b1b30;
|
||||
}
|
||||
.bg-linen {
|
||||
background-color: #77212e !important;
|
||||
color: #fff !important;
|
||||
text-shadow: 0px 0px 12px #111;
|
||||
|
||||
xbackground: url(./img/Aareon-hello.jpg);
|
||||
background: url(./img/Gebouwconsole-head.jpg);
|
||||
background-position-y: center;
|
||||
background-position-x: center;
|
||||
background-repeat: no-repeat;
|
||||
background-size: cover;
|
||||
}
|
||||
|
||||
.bg-linen h1 {
|
||||
font-weight: bold !important;
|
||||
}
|
||||
.bg-cornsilk {
|
||||
background-color: #34558b !important;
|
||||
color: #fff !important;
|
||||
}
|
||||
.bg-light {
|
||||
background-color: #f7f1ee !important;
|
||||
color: #000 !important;
|
||||
}
|
||||
[data-theme="dark"] .bg-cornsilk,[data-theme="dark"] .bg-linen {
|
||||
background-color: black !important;
|
||||
color: ivory !important;
|
||||
}
|
||||
div[name=badge] {
|
||||
position: absolute;
|
||||
top: 0;
|
||||
right: 3px;
|
||||
}
|
||||
10
APPL/Consoles/css/sb-admin-2.min.css
vendored
10
APPL/Consoles/css/sb-admin-2.min.css
vendored
File diff suppressed because one or more lines are too long
@@ -1,27 +0,0 @@
|
||||
(function() {
|
||||
var darkSwitch = document.getElementById("darkSwitch");
|
||||
if (darkSwitch) {
|
||||
initTheme();
|
||||
darkSwitch.addEventListener("change", function(event) {
|
||||
resetTheme();
|
||||
});
|
||||
function initTheme() {
|
||||
var darkThemeSelected =
|
||||
localStorage.getItem("darkSwitch") !== null &&
|
||||
localStorage.getItem("darkSwitch") === "dark";
|
||||
darkSwitch.checked = darkThemeSelected;
|
||||
darkThemeSelected
|
||||
? document.body.setAttribute("data-theme", "dark")
|
||||
: document.body.removeAttribute("data-theme");
|
||||
}
|
||||
function resetTheme() {
|
||||
if (darkSwitch.checked) {
|
||||
document.body.setAttribute("data-theme", "dark");
|
||||
localStorage.setItem("darkSwitch", "dark");
|
||||
} else {
|
||||
document.body.removeAttribute("data-theme");
|
||||
localStorage.removeItem("darkSwitch");
|
||||
}
|
||||
}
|
||||
}
|
||||
})();
|
||||
@@ -1,22 +0,0 @@
|
||||
[data-theme="dark"] {
|
||||
background-color: #111 !important;
|
||||
color: #eee;
|
||||
}
|
||||
|
||||
[data-theme="dark"] .bg-light {
|
||||
background-color: #000 !important;
|
||||
}
|
||||
|
||||
div.jumbotron {
|
||||
margin-bottom: 0;
|
||||
}
|
||||
[data-theme="dark"] .bg-white,
|
||||
[data-theme="dark"] .jumbotron,
|
||||
[data-theme="dark"] .btn {
|
||||
background-color: #000 !important;
|
||||
color: #eee;
|
||||
}
|
||||
|
||||
[data-theme="dark"] .bg-black {
|
||||
background-color: #eee !important;
|
||||
}
|
||||
@@ -1,27 +0,0 @@
|
||||
(function() {
|
||||
var fluidSwitch = document.getElementById("fluidSwitch");
|
||||
if (fluidSwitch) {
|
||||
initFluidTheme();
|
||||
fluidSwitch.addEventListener("change", function(event) {
|
||||
resetFluidTheme();
|
||||
});
|
||||
function initFluidTheme() {
|
||||
var fluidThemeSelected =
|
||||
localStorage.getItem("fluidSwitch") !== null &&
|
||||
localStorage.getItem("fluidSwitch") === "on";
|
||||
fluidSwitch.checked = fluidThemeSelected;
|
||||
fluidThemeSelected
|
||||
? $("div.container").removeClass("container").addClass("container-fluid")
|
||||
: $("div.container-fluid").removeClass("container-fluid").addClass("container");
|
||||
}
|
||||
function resetFluidTheme() {
|
||||
if (fluidSwitch.checked) {
|
||||
$("div.container").removeClass("container").addClass("container-fluid");
|
||||
localStorage.setItem("fluidSwitch", "on");
|
||||
} else {
|
||||
$("div.container-fluid").removeClass("container-fluid").addClass("container");
|
||||
localStorage.setItem("fluidSwitch", "off");
|
||||
}
|
||||
}
|
||||
}
|
||||
})();
|
||||
Binary file not shown.
|
Before Width: | Height: | Size: 250 KiB |
Binary file not shown.
|
Before Width: | Height: | Size: 133 KiB |
File diff suppressed because one or more lines are too long
|
Before Width: | Height: | Size: 36 KiB |
7
APPL/Consoles/js/sb-admin-2.min.js
vendored
7
APPL/Consoles/js/sb-admin-2.min.js
vendored
@@ -1,7 +0,0 @@
|
||||
/*!
|
||||
* Start Bootstrap - SB Admin 2 v4.0.7 (https://startbootstrap.com/template-overviews/sb-admin-2)
|
||||
* Copyright 2013-2019 Start Bootstrap
|
||||
* Licensed under MIT (https://github.com/BlackrockDigital/startbootstrap-sb-admin-2/blob/master/LICENSE)
|
||||
*/
|
||||
|
||||
!function(t){"use strict";t("#sidebarToggle, #sidebarToggleTop").on("click",function(o){t("body").toggleClass("sidebar-toggled"),t(".sidebar").toggleClass("toggled"),t(".sidebar").hasClass("toggled")&&t(".sidebar .collapse").collapse("hide")}),t(window).resize(function(){t(window).width()<768&&t(".sidebar .collapse").collapse("hide")}),t("body.fixed-nav .sidebar").on("mousewheel DOMMouseScroll wheel",function(o){if(768<t(window).width()){var e=o.originalEvent,l=e.wheelDelta||-e.detail;this.scrollTop+=30*(l<0?1:-1),o.preventDefault()}}),t(document).on("scroll",function(){100<t(this).scrollTop()?t(".scroll-to-top").fadeIn():t(".scroll-to-top").fadeOut()}),t(document).on("click","a.scroll-to-top",function(o){var e=t(this);t("html, body").stop().animate({scrollTop:t(e.attr("href")).offset().top},1e3,"easeInOutExpo"),o.preventDefault()})}(jQuery);
|
||||
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
51
APPL/Consoles/vendor/bootstrap/scss/_alert.scss
vendored
51
APPL/Consoles/vendor/bootstrap/scss/_alert.scss
vendored
@@ -1,51 +0,0 @@
|
||||
//
|
||||
// Base styles
|
||||
//
|
||||
|
||||
.alert {
|
||||
position: relative;
|
||||
padding: $alert-padding-y $alert-padding-x;
|
||||
margin-bottom: $alert-margin-bottom;
|
||||
border: $alert-border-width solid transparent;
|
||||
@include border-radius($alert-border-radius);
|
||||
}
|
||||
|
||||
// Headings for larger alerts
|
||||
.alert-heading {
|
||||
// Specified to prevent conflicts of changing $headings-color
|
||||
color: inherit;
|
||||
}
|
||||
|
||||
// Provide class for links that match alerts
|
||||
.alert-link {
|
||||
font-weight: $alert-link-font-weight;
|
||||
}
|
||||
|
||||
|
||||
// Dismissible alerts
|
||||
//
|
||||
// Expand the right padding and account for the close button's positioning.
|
||||
|
||||
.alert-dismissible {
|
||||
padding-right: $close-font-size + $alert-padding-x * 2;
|
||||
|
||||
// Adjust close link position
|
||||
.close {
|
||||
position: absolute;
|
||||
top: 0;
|
||||
right: 0;
|
||||
padding: $alert-padding-y $alert-padding-x;
|
||||
color: inherit;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
// Alternate styles
|
||||
//
|
||||
// Generate contextual modifier classes for colorizing the alert.
|
||||
|
||||
@each $color, $value in $theme-colors {
|
||||
.alert-#{$color} {
|
||||
@include alert-variant(theme-color-level($color, $alert-bg-level), theme-color-level($color, $alert-border-level), theme-color-level($color, $alert-color-level));
|
||||
}
|
||||
}
|
||||
54
APPL/Consoles/vendor/bootstrap/scss/_badge.scss
vendored
54
APPL/Consoles/vendor/bootstrap/scss/_badge.scss
vendored
@@ -1,54 +0,0 @@
|
||||
// Base class
|
||||
//
|
||||
// Requires one of the contextual, color modifier classes for `color` and
|
||||
// `background-color`.
|
||||
|
||||
.badge {
|
||||
display: inline-block;
|
||||
padding: $badge-padding-y $badge-padding-x;
|
||||
@include font-size($badge-font-size);
|
||||
font-weight: $badge-font-weight;
|
||||
line-height: 1;
|
||||
text-align: center;
|
||||
white-space: nowrap;
|
||||
vertical-align: baseline;
|
||||
@include border-radius($badge-border-radius);
|
||||
@include transition($badge-transition);
|
||||
|
||||
@at-root a#{&} {
|
||||
@include hover-focus {
|
||||
text-decoration: none;
|
||||
}
|
||||
}
|
||||
|
||||
// Empty badges collapse automatically
|
||||
&:empty {
|
||||
display: none;
|
||||
}
|
||||
}
|
||||
|
||||
// Quick fix for badges in buttons
|
||||
.btn .badge {
|
||||
position: relative;
|
||||
top: -1px;
|
||||
}
|
||||
|
||||
// Pill badges
|
||||
//
|
||||
// Make them extra rounded with a modifier to replace v3's badges.
|
||||
|
||||
.badge-pill {
|
||||
padding-right: $badge-pill-padding-x;
|
||||
padding-left: $badge-pill-padding-x;
|
||||
@include border-radius($badge-pill-border-radius);
|
||||
}
|
||||
|
||||
// Colors
|
||||
//
|
||||
// Contextual variations (linked badges get darker on :hover).
|
||||
|
||||
@each $color, $value in $theme-colors {
|
||||
.badge-#{$color} {
|
||||
@include badge-variant($value);
|
||||
}
|
||||
}
|
||||
@@ -1,41 +0,0 @@
|
||||
.breadcrumb {
|
||||
display: flex;
|
||||
flex-wrap: wrap;
|
||||
padding: $breadcrumb-padding-y $breadcrumb-padding-x;
|
||||
margin-bottom: $breadcrumb-margin-bottom;
|
||||
list-style: none;
|
||||
background-color: $breadcrumb-bg;
|
||||
@include border-radius($breadcrumb-border-radius);
|
||||
}
|
||||
|
||||
.breadcrumb-item {
|
||||
// The separator between breadcrumbs (by default, a forward-slash: "/")
|
||||
+ .breadcrumb-item {
|
||||
padding-left: $breadcrumb-item-padding;
|
||||
|
||||
&::before {
|
||||
display: inline-block; // Suppress underlining of the separator in modern browsers
|
||||
padding-right: $breadcrumb-item-padding;
|
||||
color: $breadcrumb-divider-color;
|
||||
content: $breadcrumb-divider;
|
||||
}
|
||||
}
|
||||
|
||||
// IE9-11 hack to properly handle hyperlink underlines for breadcrumbs built
|
||||
// without `<ul>`s. The `::before` pseudo-element generates an element
|
||||
// *within* the .breadcrumb-item and thereby inherits the `text-decoration`.
|
||||
//
|
||||
// To trick IE into suppressing the underline, we give the pseudo-element an
|
||||
// underline and then immediately remove it.
|
||||
+ .breadcrumb-item:hover::before {
|
||||
text-decoration: underline;
|
||||
}
|
||||
// stylelint-disable-next-line no-duplicate-selectors
|
||||
+ .breadcrumb-item:hover::before {
|
||||
text-decoration: none;
|
||||
}
|
||||
|
||||
&.active {
|
||||
color: $breadcrumb-active-color;
|
||||
}
|
||||
}
|
||||
@@ -1,163 +0,0 @@
|
||||
// stylelint-disable selector-no-qualifying-type
|
||||
|
||||
// Make the div behave like a button
|
||||
.btn-group,
|
||||
.btn-group-vertical {
|
||||
position: relative;
|
||||
display: inline-flex;
|
||||
vertical-align: middle; // match .btn alignment given font-size hack above
|
||||
|
||||
> .btn {
|
||||
position: relative;
|
||||
flex: 1 1 auto;
|
||||
|
||||
// Bring the hover, focused, and "active" buttons to the front to overlay
|
||||
// the borders properly
|
||||
@include hover {
|
||||
z-index: 1;
|
||||
}
|
||||
&:focus,
|
||||
&:active,
|
||||
&.active {
|
||||
z-index: 1;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Optional: Group multiple button groups together for a toolbar
|
||||
.btn-toolbar {
|
||||
display: flex;
|
||||
flex-wrap: wrap;
|
||||
justify-content: flex-start;
|
||||
|
||||
.input-group {
|
||||
width: auto;
|
||||
}
|
||||
}
|
||||
|
||||
.btn-group {
|
||||
// Prevent double borders when buttons are next to each other
|
||||
> .btn:not(:first-child),
|
||||
> .btn-group:not(:first-child) {
|
||||
margin-left: -$btn-border-width;
|
||||
}
|
||||
|
||||
// Reset rounded corners
|
||||
> .btn:not(:last-child):not(.dropdown-toggle),
|
||||
> .btn-group:not(:last-child) > .btn {
|
||||
@include border-right-radius(0);
|
||||
}
|
||||
|
||||
> .btn:not(:first-child),
|
||||
> .btn-group:not(:first-child) > .btn {
|
||||
@include border-left-radius(0);
|
||||
}
|
||||
}
|
||||
|
||||
// Sizing
|
||||
//
|
||||
// Remix the default button sizing classes into new ones for easier manipulation.
|
||||
|
||||
.btn-group-sm > .btn { @extend .btn-sm; }
|
||||
.btn-group-lg > .btn { @extend .btn-lg; }
|
||||
|
||||
|
||||
//
|
||||
// Split button dropdowns
|
||||
//
|
||||
|
||||
.dropdown-toggle-split {
|
||||
padding-right: $btn-padding-x * .75;
|
||||
padding-left: $btn-padding-x * .75;
|
||||
|
||||
&::after,
|
||||
.dropup &::after,
|
||||
.dropright &::after {
|
||||
margin-left: 0;
|
||||
}
|
||||
|
||||
.dropleft &::before {
|
||||
margin-right: 0;
|
||||
}
|
||||
}
|
||||
|
||||
.btn-sm + .dropdown-toggle-split {
|
||||
padding-right: $btn-padding-x-sm * .75;
|
||||
padding-left: $btn-padding-x-sm * .75;
|
||||
}
|
||||
|
||||
.btn-lg + .dropdown-toggle-split {
|
||||
padding-right: $btn-padding-x-lg * .75;
|
||||
padding-left: $btn-padding-x-lg * .75;
|
||||
}
|
||||
|
||||
|
||||
// The clickable button for toggling the menu
|
||||
// Set the same inset shadow as the :active state
|
||||
.btn-group.show .dropdown-toggle {
|
||||
@include box-shadow($btn-active-box-shadow);
|
||||
|
||||
// Show no shadow for `.btn-link` since it has no other button styles.
|
||||
&.btn-link {
|
||||
@include box-shadow(none);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
//
|
||||
// Vertical button groups
|
||||
//
|
||||
|
||||
.btn-group-vertical {
|
||||
flex-direction: column;
|
||||
align-items: flex-start;
|
||||
justify-content: center;
|
||||
|
||||
> .btn,
|
||||
> .btn-group {
|
||||
width: 100%;
|
||||
}
|
||||
|
||||
> .btn:not(:first-child),
|
||||
> .btn-group:not(:first-child) {
|
||||
margin-top: -$btn-border-width;
|
||||
}
|
||||
|
||||
// Reset rounded corners
|
||||
> .btn:not(:last-child):not(.dropdown-toggle),
|
||||
> .btn-group:not(:last-child) > .btn {
|
||||
@include border-bottom-radius(0);
|
||||
}
|
||||
|
||||
> .btn:not(:first-child),
|
||||
> .btn-group:not(:first-child) > .btn {
|
||||
@include border-top-radius(0);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
// Checkbox and radio options
|
||||
//
|
||||
// In order to support the browser's form validation feedback, powered by the
|
||||
// `required` attribute, we have to "hide" the inputs via `clip`. We cannot use
|
||||
// `display: none;` or `visibility: hidden;` as that also hides the popover.
|
||||
// Simply visually hiding the inputs via `opacity` would leave them clickable in
|
||||
// certain cases which is prevented by using `clip` and `pointer-events`.
|
||||
// This way, we ensure a DOM element is visible to position the popover from.
|
||||
//
|
||||
// See https://github.com/twbs/bootstrap/pull/12794 and
|
||||
// https://github.com/twbs/bootstrap/pull/14559 for more information.
|
||||
|
||||
.btn-group-toggle {
|
||||
> .btn,
|
||||
> .btn-group > .btn {
|
||||
margin-bottom: 0; // Override default `<label>` value
|
||||
|
||||
input[type="radio"],
|
||||
input[type="checkbox"] {
|
||||
position: absolute;
|
||||
clip: rect(0, 0, 0, 0);
|
||||
pointer-events: none;
|
||||
}
|
||||
}
|
||||
}
|
||||
137
APPL/Consoles/vendor/bootstrap/scss/_buttons.scss
vendored
137
APPL/Consoles/vendor/bootstrap/scss/_buttons.scss
vendored
@@ -1,137 +0,0 @@
|
||||
// stylelint-disable selector-no-qualifying-type
|
||||
|
||||
//
|
||||
// Base styles
|
||||
//
|
||||
|
||||
.btn {
|
||||
display: inline-block;
|
||||
font-family: $btn-font-family;
|
||||
font-weight: $btn-font-weight;
|
||||
color: $body-color;
|
||||
text-align: center;
|
||||
vertical-align: middle;
|
||||
user-select: none;
|
||||
background-color: transparent;
|
||||
border: $btn-border-width solid transparent;
|
||||
@include button-size($btn-padding-y, $btn-padding-x, $btn-font-size, $btn-line-height, $btn-border-radius);
|
||||
@include transition($btn-transition);
|
||||
|
||||
@include hover {
|
||||
color: $body-color;
|
||||
text-decoration: none;
|
||||
}
|
||||
|
||||
&:focus,
|
||||
&.focus {
|
||||
outline: 0;
|
||||
box-shadow: $btn-focus-box-shadow;
|
||||
}
|
||||
|
||||
// Disabled comes first so active can properly restyle
|
||||
&.disabled,
|
||||
&:disabled {
|
||||
opacity: $btn-disabled-opacity;
|
||||
@include box-shadow(none);
|
||||
}
|
||||
|
||||
&:not(:disabled):not(.disabled):active,
|
||||
&:not(:disabled):not(.disabled).active {
|
||||
@include box-shadow($btn-active-box-shadow);
|
||||
|
||||
&:focus {
|
||||
@include box-shadow($btn-focus-box-shadow, $btn-active-box-shadow);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Future-proof disabling of clicks on `<a>` elements
|
||||
a.btn.disabled,
|
||||
fieldset:disabled a.btn {
|
||||
pointer-events: none;
|
||||
}
|
||||
|
||||
|
||||
//
|
||||
// Alternate buttons
|
||||
//
|
||||
|
||||
@each $color, $value in $theme-colors {
|
||||
.btn-#{$color} {
|
||||
@include button-variant($value, $value);
|
||||
}
|
||||
}
|
||||
|
||||
@each $color, $value in $theme-colors {
|
||||
.btn-outline-#{$color} {
|
||||
@include button-outline-variant($value);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
//
|
||||
// Link buttons
|
||||
//
|
||||
|
||||
// Make a button look and behave like a link
|
||||
.btn-link {
|
||||
font-weight: $font-weight-normal;
|
||||
color: $link-color;
|
||||
text-decoration: $link-decoration;
|
||||
|
||||
@include hover {
|
||||
color: $link-hover-color;
|
||||
text-decoration: $link-hover-decoration;
|
||||
}
|
||||
|
||||
&:focus,
|
||||
&.focus {
|
||||
text-decoration: $link-hover-decoration;
|
||||
box-shadow: none;
|
||||
}
|
||||
|
||||
&:disabled,
|
||||
&.disabled {
|
||||
color: $btn-link-disabled-color;
|
||||
pointer-events: none;
|
||||
}
|
||||
|
||||
// No need for an active state here
|
||||
}
|
||||
|
||||
|
||||
//
|
||||
// Button Sizes
|
||||
//
|
||||
|
||||
.btn-lg {
|
||||
@include button-size($btn-padding-y-lg, $btn-padding-x-lg, $btn-font-size-lg, $btn-line-height-lg, $btn-border-radius-lg);
|
||||
}
|
||||
|
||||
.btn-sm {
|
||||
@include button-size($btn-padding-y-sm, $btn-padding-x-sm, $btn-font-size-sm, $btn-line-height-sm, $btn-border-radius-sm);
|
||||
}
|
||||
|
||||
|
||||
//
|
||||
// Block button
|
||||
//
|
||||
|
||||
.btn-block {
|
||||
display: block;
|
||||
width: 100%;
|
||||
|
||||
// Vertically space out multiple block buttons
|
||||
+ .btn-block {
|
||||
margin-top: $btn-block-spacing-y;
|
||||
}
|
||||
}
|
||||
|
||||
// Specificity overrides
|
||||
input[type="submit"],
|
||||
input[type="reset"],
|
||||
input[type="button"] {
|
||||
&.btn-block {
|
||||
width: 100%;
|
||||
}
|
||||
}
|
||||
289
APPL/Consoles/vendor/bootstrap/scss/_card.scss
vendored
289
APPL/Consoles/vendor/bootstrap/scss/_card.scss
vendored
@@ -1,289 +0,0 @@
|
||||
//
|
||||
// Base styles
|
||||
//
|
||||
|
||||
.card {
|
||||
position: relative;
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
min-width: 0; // See https://github.com/twbs/bootstrap/pull/22740#issuecomment-305868106
|
||||
word-wrap: break-word;
|
||||
background-color: $card-bg;
|
||||
background-clip: border-box;
|
||||
border: $card-border-width solid $card-border-color;
|
||||
@include border-radius($card-border-radius);
|
||||
|
||||
> hr {
|
||||
margin-right: 0;
|
||||
margin-left: 0;
|
||||
}
|
||||
|
||||
> .list-group:first-child {
|
||||
.list-group-item:first-child {
|
||||
@include border-top-radius($card-border-radius);
|
||||
}
|
||||
}
|
||||
|
||||
> .list-group:last-child {
|
||||
.list-group-item:last-child {
|
||||
@include border-bottom-radius($card-border-radius);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.card-body {
|
||||
// Enable `flex-grow: 1` for decks and groups so that card blocks take up
|
||||
// as much space as possible, ensuring footers are aligned to the bottom.
|
||||
flex: 1 1 auto;
|
||||
padding: $card-spacer-x;
|
||||
color: $card-color;
|
||||
}
|
||||
|
||||
.card-title {
|
||||
margin-bottom: $card-spacer-y;
|
||||
}
|
||||
|
||||
.card-subtitle {
|
||||
margin-top: -$card-spacer-y / 2;
|
||||
margin-bottom: 0;
|
||||
}
|
||||
|
||||
.card-text:last-child {
|
||||
margin-bottom: 0;
|
||||
}
|
||||
|
||||
.card-link {
|
||||
@include hover {
|
||||
text-decoration: none;
|
||||
}
|
||||
|
||||
+ .card-link {
|
||||
margin-left: $card-spacer-x;
|
||||
}
|
||||
}
|
||||
|
||||
//
|
||||
// Optional textual caps
|
||||
//
|
||||
|
||||
.card-header {
|
||||
padding: $card-spacer-y $card-spacer-x;
|
||||
margin-bottom: 0; // Removes the default margin-bottom of <hN>
|
||||
color: $card-cap-color;
|
||||
background-color: $card-cap-bg;
|
||||
border-bottom: $card-border-width solid $card-border-color;
|
||||
|
||||
&:first-child {
|
||||
@include border-radius($card-inner-border-radius $card-inner-border-radius 0 0);
|
||||
}
|
||||
|
||||
+ .list-group {
|
||||
.list-group-item:first-child {
|
||||
border-top: 0;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.card-footer {
|
||||
padding: $card-spacer-y $card-spacer-x;
|
||||
background-color: $card-cap-bg;
|
||||
border-top: $card-border-width solid $card-border-color;
|
||||
|
||||
&:last-child {
|
||||
@include border-radius(0 0 $card-inner-border-radius $card-inner-border-radius);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
//
|
||||
// Header navs
|
||||
//
|
||||
|
||||
.card-header-tabs {
|
||||
margin-right: -$card-spacer-x / 2;
|
||||
margin-bottom: -$card-spacer-y;
|
||||
margin-left: -$card-spacer-x / 2;
|
||||
border-bottom: 0;
|
||||
}
|
||||
|
||||
.card-header-pills {
|
||||
margin-right: -$card-spacer-x / 2;
|
||||
margin-left: -$card-spacer-x / 2;
|
||||
}
|
||||
|
||||
// Card image
|
||||
.card-img-overlay {
|
||||
position: absolute;
|
||||
top: 0;
|
||||
right: 0;
|
||||
bottom: 0;
|
||||
left: 0;
|
||||
padding: $card-img-overlay-padding;
|
||||
}
|
||||
|
||||
.card-img {
|
||||
width: 100%; // Required because we use flexbox and this inherently applies align-self: stretch
|
||||
@include border-radius($card-inner-border-radius);
|
||||
}
|
||||
|
||||
// Card image caps
|
||||
.card-img-top {
|
||||
width: 100%; // Required because we use flexbox and this inherently applies align-self: stretch
|
||||
@include border-top-radius($card-inner-border-radius);
|
||||
}
|
||||
|
||||
.card-img-bottom {
|
||||
width: 100%; // Required because we use flexbox and this inherently applies align-self: stretch
|
||||
@include border-bottom-radius($card-inner-border-radius);
|
||||
}
|
||||
|
||||
|
||||
// Card deck
|
||||
|
||||
.card-deck {
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
|
||||
.card {
|
||||
margin-bottom: $card-deck-margin;
|
||||
}
|
||||
|
||||
@include media-breakpoint-up(sm) {
|
||||
flex-flow: row wrap;
|
||||
margin-right: -$card-deck-margin;
|
||||
margin-left: -$card-deck-margin;
|
||||
|
||||
.card {
|
||||
display: flex;
|
||||
// Flexbugs #4: https://github.com/philipwalton/flexbugs#flexbug-4
|
||||
flex: 1 0 0%;
|
||||
flex-direction: column;
|
||||
margin-right: $card-deck-margin;
|
||||
margin-bottom: 0; // Override the default
|
||||
margin-left: $card-deck-margin;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
//
|
||||
// Card groups
|
||||
//
|
||||
|
||||
.card-group {
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
|
||||
// The child selector allows nested `.card` within `.card-group`
|
||||
// to display properly.
|
||||
> .card {
|
||||
margin-bottom: $card-group-margin;
|
||||
}
|
||||
|
||||
@include media-breakpoint-up(sm) {
|
||||
flex-flow: row wrap;
|
||||
// The child selector allows nested `.card` within `.card-group`
|
||||
// to display properly.
|
||||
> .card {
|
||||
// Flexbugs #4: https://github.com/philipwalton/flexbugs#flexbug-4
|
||||
flex: 1 0 0%;
|
||||
margin-bottom: 0;
|
||||
|
||||
+ .card {
|
||||
margin-left: 0;
|
||||
border-left: 0;
|
||||
}
|
||||
|
||||
// Handle rounded corners
|
||||
@if $enable-rounded {
|
||||
&:not(:last-child) {
|
||||
@include border-right-radius(0);
|
||||
|
||||
.card-img-top,
|
||||
.card-header {
|
||||
// stylelint-disable-next-line property-blacklist
|
||||
border-top-right-radius: 0;
|
||||
}
|
||||
.card-img-bottom,
|
||||
.card-footer {
|
||||
// stylelint-disable-next-line property-blacklist
|
||||
border-bottom-right-radius: 0;
|
||||
}
|
||||
}
|
||||
|
||||
&:not(:first-child) {
|
||||
@include border-left-radius(0);
|
||||
|
||||
.card-img-top,
|
||||
.card-header {
|
||||
// stylelint-disable-next-line property-blacklist
|
||||
border-top-left-radius: 0;
|
||||
}
|
||||
.card-img-bottom,
|
||||
.card-footer {
|
||||
// stylelint-disable-next-line property-blacklist
|
||||
border-bottom-left-radius: 0;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
//
|
||||
// Columns
|
||||
//
|
||||
|
||||
.card-columns {
|
||||
.card {
|
||||
margin-bottom: $card-columns-margin;
|
||||
}
|
||||
|
||||
@include media-breakpoint-up(sm) {
|
||||
column-count: $card-columns-count;
|
||||
column-gap: $card-columns-gap;
|
||||
orphans: 1;
|
||||
widows: 1;
|
||||
|
||||
.card {
|
||||
display: inline-block; // Don't let them vertically span multiple columns
|
||||
width: 100%; // Don't let their width change
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
//
|
||||
// Accordion
|
||||
//
|
||||
|
||||
.accordion {
|
||||
> .card {
|
||||
overflow: hidden;
|
||||
|
||||
&:not(:first-of-type) {
|
||||
.card-header:first-child {
|
||||
@include border-radius(0);
|
||||
}
|
||||
|
||||
&:not(:last-of-type) {
|
||||
border-bottom: 0;
|
||||
@include border-radius(0);
|
||||
}
|
||||
}
|
||||
|
||||
&:first-of-type {
|
||||
border-bottom: 0;
|
||||
@include border-bottom-radius(0);
|
||||
}
|
||||
|
||||
&:last-of-type {
|
||||
@include border-top-radius(0);
|
||||
}
|
||||
|
||||
.card-header {
|
||||
margin-bottom: -$card-border-width;
|
||||
}
|
||||
}
|
||||
}
|
||||
197
APPL/Consoles/vendor/bootstrap/scss/_carousel.scss
vendored
197
APPL/Consoles/vendor/bootstrap/scss/_carousel.scss
vendored
@@ -1,197 +0,0 @@
|
||||
// Notes on the classes:
|
||||
//
|
||||
// 1. .carousel.pointer-event should ideally be pan-y (to allow for users to scroll vertically)
|
||||
// even when their scroll action started on a carousel, but for compatibility (with Firefox)
|
||||
// we're preventing all actions instead
|
||||
// 2. The .carousel-item-left and .carousel-item-right is used to indicate where
|
||||
// the active slide is heading.
|
||||
// 3. .active.carousel-item is the current slide.
|
||||
// 4. .active.carousel-item-left and .active.carousel-item-right is the current
|
||||
// slide in its in-transition state. Only one of these occurs at a time.
|
||||
// 5. .carousel-item-next.carousel-item-left and .carousel-item-prev.carousel-item-right
|
||||
// is the upcoming slide in transition.
|
||||
|
||||
.carousel {
|
||||
position: relative;
|
||||
}
|
||||
|
||||
.carousel.pointer-event {
|
||||
touch-action: pan-y;
|
||||
}
|
||||
|
||||
.carousel-inner {
|
||||
position: relative;
|
||||
width: 100%;
|
||||
overflow: hidden;
|
||||
@include clearfix();
|
||||
}
|
||||
|
||||
.carousel-item {
|
||||
position: relative;
|
||||
display: none;
|
||||
float: left;
|
||||
width: 100%;
|
||||
margin-right: -100%;
|
||||
backface-visibility: hidden;
|
||||
@include transition($carousel-transition);
|
||||
}
|
||||
|
||||
.carousel-item.active,
|
||||
.carousel-item-next,
|
||||
.carousel-item-prev {
|
||||
display: block;
|
||||
}
|
||||
|
||||
.carousel-item-next:not(.carousel-item-left),
|
||||
.active.carousel-item-right {
|
||||
transform: translateX(100%);
|
||||
}
|
||||
|
||||
.carousel-item-prev:not(.carousel-item-right),
|
||||
.active.carousel-item-left {
|
||||
transform: translateX(-100%);
|
||||
}
|
||||
|
||||
|
||||
//
|
||||
// Alternate transitions
|
||||
//
|
||||
|
||||
.carousel-fade {
|
||||
.carousel-item {
|
||||
opacity: 0;
|
||||
transition-property: opacity;
|
||||
transform: none;
|
||||
}
|
||||
|
||||
.carousel-item.active,
|
||||
.carousel-item-next.carousel-item-left,
|
||||
.carousel-item-prev.carousel-item-right {
|
||||
z-index: 1;
|
||||
opacity: 1;
|
||||
}
|
||||
|
||||
.active.carousel-item-left,
|
||||
.active.carousel-item-right {
|
||||
z-index: 0;
|
||||
opacity: 0;
|
||||
@include transition(0s $carousel-transition-duration opacity);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
//
|
||||
// Left/right controls for nav
|
||||
//
|
||||
|
||||
.carousel-control-prev,
|
||||
.carousel-control-next {
|
||||
position: absolute;
|
||||
top: 0;
|
||||
bottom: 0;
|
||||
z-index: 1;
|
||||
// Use flex for alignment (1-3)
|
||||
display: flex; // 1. allow flex styles
|
||||
align-items: center; // 2. vertically center contents
|
||||
justify-content: center; // 3. horizontally center contents
|
||||
width: $carousel-control-width;
|
||||
color: $carousel-control-color;
|
||||
text-align: center;
|
||||
opacity: $carousel-control-opacity;
|
||||
@include transition($carousel-control-transition);
|
||||
|
||||
// Hover/focus state
|
||||
@include hover-focus {
|
||||
color: $carousel-control-color;
|
||||
text-decoration: none;
|
||||
outline: 0;
|
||||
opacity: $carousel-control-hover-opacity;
|
||||
}
|
||||
}
|
||||
.carousel-control-prev {
|
||||
left: 0;
|
||||
@if $enable-gradients {
|
||||
background: linear-gradient(90deg, rgba($black, .25), rgba($black, .001));
|
||||
}
|
||||
}
|
||||
.carousel-control-next {
|
||||
right: 0;
|
||||
@if $enable-gradients {
|
||||
background: linear-gradient(270deg, rgba($black, .25), rgba($black, .001));
|
||||
}
|
||||
}
|
||||
|
||||
// Icons for within
|
||||
.carousel-control-prev-icon,
|
||||
.carousel-control-next-icon {
|
||||
display: inline-block;
|
||||
width: $carousel-control-icon-width;
|
||||
height: $carousel-control-icon-width;
|
||||
background: no-repeat 50% / 100% 100%;
|
||||
}
|
||||
.carousel-control-prev-icon {
|
||||
background-image: $carousel-control-prev-icon-bg;
|
||||
}
|
||||
.carousel-control-next-icon {
|
||||
background-image: $carousel-control-next-icon-bg;
|
||||
}
|
||||
|
||||
|
||||
// Optional indicator pips
|
||||
//
|
||||
// Add an ordered list with the following class and add a list item for each
|
||||
// slide your carousel holds.
|
||||
|
||||
.carousel-indicators {
|
||||
position: absolute;
|
||||
right: 0;
|
||||
bottom: 0;
|
||||
left: 0;
|
||||
z-index: 15;
|
||||
display: flex;
|
||||
justify-content: center;
|
||||
padding-left: 0; // override <ol> default
|
||||
// Use the .carousel-control's width as margin so we don't overlay those
|
||||
margin-right: $carousel-control-width;
|
||||
margin-left: $carousel-control-width;
|
||||
list-style: none;
|
||||
|
||||
li {
|
||||
box-sizing: content-box;
|
||||
flex: 0 1 auto;
|
||||
width: $carousel-indicator-width;
|
||||
height: $carousel-indicator-height;
|
||||
margin-right: $carousel-indicator-spacer;
|
||||
margin-left: $carousel-indicator-spacer;
|
||||
text-indent: -999px;
|
||||
cursor: pointer;
|
||||
background-color: $carousel-indicator-active-bg;
|
||||
background-clip: padding-box;
|
||||
// Use transparent borders to increase the hit area by 10px on top and bottom.
|
||||
border-top: $carousel-indicator-hit-area-height solid transparent;
|
||||
border-bottom: $carousel-indicator-hit-area-height solid transparent;
|
||||
opacity: .5;
|
||||
@include transition($carousel-indicator-transition);
|
||||
}
|
||||
|
||||
.active {
|
||||
opacity: 1;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
// Optional captions
|
||||
//
|
||||
//
|
||||
|
||||
.carousel-caption {
|
||||
position: absolute;
|
||||
right: (100% - $carousel-caption-width) / 2;
|
||||
bottom: 20px;
|
||||
left: (100% - $carousel-caption-width) / 2;
|
||||
z-index: 10;
|
||||
padding-top: 20px;
|
||||
padding-bottom: 20px;
|
||||
color: $carousel-caption-color;
|
||||
text-align: center;
|
||||
}
|
||||
41
APPL/Consoles/vendor/bootstrap/scss/_close.scss
vendored
41
APPL/Consoles/vendor/bootstrap/scss/_close.scss
vendored
@@ -1,41 +0,0 @@
|
||||
.close {
|
||||
float: right;
|
||||
@include font-size($close-font-size);
|
||||
font-weight: $close-font-weight;
|
||||
line-height: 1;
|
||||
color: $close-color;
|
||||
text-shadow: $close-text-shadow;
|
||||
opacity: .5;
|
||||
|
||||
// Override <a>'s hover style
|
||||
@include hover {
|
||||
color: $close-color;
|
||||
text-decoration: none;
|
||||
}
|
||||
|
||||
&:not(:disabled):not(.disabled) {
|
||||
@include hover-focus {
|
||||
opacity: .75;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Additional properties for button version
|
||||
// iOS requires the button element instead of an anchor tag.
|
||||
// If you want the anchor version, it requires `href="#"`.
|
||||
// See https://developer.mozilla.org/en-US/docs/Web/Events/click#Safari_Mobile
|
||||
|
||||
// stylelint-disable-next-line selector-no-qualifying-type
|
||||
button.close {
|
||||
padding: 0;
|
||||
background-color: transparent;
|
||||
border: 0;
|
||||
appearance: none;
|
||||
}
|
||||
|
||||
// Future-proof disabling of clicks on `<a>` elements
|
||||
|
||||
// stylelint-disable-next-line selector-no-qualifying-type
|
||||
a.close.disabled {
|
||||
pointer-events: none;
|
||||
}
|
||||
48
APPL/Consoles/vendor/bootstrap/scss/_code.scss
vendored
48
APPL/Consoles/vendor/bootstrap/scss/_code.scss
vendored
@@ -1,48 +0,0 @@
|
||||
// Inline code
|
||||
code {
|
||||
@include font-size($code-font-size);
|
||||
color: $code-color;
|
||||
word-break: break-word;
|
||||
|
||||
// Streamline the style when inside anchors to avoid broken underline and more
|
||||
a > & {
|
||||
color: inherit;
|
||||
}
|
||||
}
|
||||
|
||||
// User input typically entered via keyboard
|
||||
kbd {
|
||||
padding: $kbd-padding-y $kbd-padding-x;
|
||||
@include font-size($kbd-font-size);
|
||||
color: $kbd-color;
|
||||
background-color: $kbd-bg;
|
||||
@include border-radius($border-radius-sm);
|
||||
@include box-shadow($kbd-box-shadow);
|
||||
|
||||
kbd {
|
||||
padding: 0;
|
||||
@include font-size(100%);
|
||||
font-weight: $nested-kbd-font-weight;
|
||||
@include box-shadow(none);
|
||||
}
|
||||
}
|
||||
|
||||
// Blocks of code
|
||||
pre {
|
||||
display: block;
|
||||
@include font-size($code-font-size);
|
||||
color: $pre-color;
|
||||
|
||||
// Account for some code outputs that place code tags in pre tags
|
||||
code {
|
||||
@include font-size(inherit);
|
||||
color: inherit;
|
||||
word-break: normal;
|
||||
}
|
||||
}
|
||||
|
||||
// Enable scrollable blocks of code
|
||||
.pre-scrollable {
|
||||
max-height: $pre-scrollable-max-height;
|
||||
overflow-y: scroll;
|
||||
}
|
||||
@@ -1,507 +0,0 @@
|
||||
// Embedded icons from Open Iconic.
|
||||
// Released under MIT and copyright 2014 Waybury.
|
||||
// https://useiconic.com/open
|
||||
|
||||
|
||||
// Checkboxes and radios
|
||||
//
|
||||
// Base class takes care of all the key behavioral aspects.
|
||||
|
||||
.custom-control {
|
||||
position: relative;
|
||||
display: block;
|
||||
min-height: $font-size-base * $line-height-base;
|
||||
padding-left: $custom-control-gutter + $custom-control-indicator-size;
|
||||
}
|
||||
|
||||
.custom-control-inline {
|
||||
display: inline-flex;
|
||||
margin-right: $custom-control-spacer-x;
|
||||
}
|
||||
|
||||
.custom-control-input {
|
||||
position: absolute;
|
||||
z-index: -1; // Put the input behind the label so it doesn't overlay text
|
||||
opacity: 0;
|
||||
|
||||
&:checked ~ .custom-control-label::before {
|
||||
color: $custom-control-indicator-checked-color;
|
||||
border-color: $custom-control-indicator-checked-border-color;
|
||||
@include gradient-bg($custom-control-indicator-checked-bg);
|
||||
@include box-shadow($custom-control-indicator-checked-box-shadow);
|
||||
}
|
||||
|
||||
&:focus ~ .custom-control-label::before {
|
||||
// the mixin is not used here to make sure there is feedback
|
||||
@if $enable-shadows {
|
||||
box-shadow: $input-box-shadow, $input-focus-box-shadow;
|
||||
} @else {
|
||||
box-shadow: $custom-control-indicator-focus-box-shadow;
|
||||
}
|
||||
}
|
||||
|
||||
&:focus:not(:checked) ~ .custom-control-label::before {
|
||||
border-color: $custom-control-indicator-focus-border-color;
|
||||
}
|
||||
|
||||
&:not(:disabled):active ~ .custom-control-label::before {
|
||||
color: $custom-control-indicator-active-color;
|
||||
background-color: $custom-control-indicator-active-bg;
|
||||
border-color: $custom-control-indicator-active-border-color;
|
||||
@include box-shadow($custom-control-indicator-active-box-shadow);
|
||||
}
|
||||
|
||||
&:disabled {
|
||||
~ .custom-control-label {
|
||||
color: $custom-control-label-disabled-color;
|
||||
|
||||
&::before {
|
||||
background-color: $custom-control-indicator-disabled-bg;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Custom control indicators
|
||||
//
|
||||
// Build the custom controls out of pseudo-elements.
|
||||
|
||||
.custom-control-label {
|
||||
position: relative;
|
||||
margin-bottom: 0;
|
||||
vertical-align: top;
|
||||
|
||||
// Background-color and (when enabled) gradient
|
||||
&::before {
|
||||
position: absolute;
|
||||
top: ($font-size-base * $line-height-base - $custom-control-indicator-size) / 2;
|
||||
left: -($custom-control-gutter + $custom-control-indicator-size);
|
||||
display: block;
|
||||
width: $custom-control-indicator-size;
|
||||
height: $custom-control-indicator-size;
|
||||
pointer-events: none;
|
||||
content: "";
|
||||
background-color: $custom-control-indicator-bg;
|
||||
border: $custom-control-indicator-border-color solid $custom-control-indicator-border-width;
|
||||
@include box-shadow($custom-control-indicator-box-shadow);
|
||||
}
|
||||
|
||||
// Foreground (icon)
|
||||
&::after {
|
||||
position: absolute;
|
||||
top: ($font-size-base * $line-height-base - $custom-control-indicator-size) / 2;
|
||||
left: -($custom-control-gutter + $custom-control-indicator-size);
|
||||
display: block;
|
||||
width: $custom-control-indicator-size;
|
||||
height: $custom-control-indicator-size;
|
||||
content: "";
|
||||
background: no-repeat 50% / #{$custom-control-indicator-bg-size};
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
// Checkboxes
|
||||
//
|
||||
// Tweak just a few things for checkboxes.
|
||||
|
||||
.custom-checkbox {
|
||||
.custom-control-label::before {
|
||||
@include border-radius($custom-checkbox-indicator-border-radius);
|
||||
}
|
||||
|
||||
.custom-control-input:checked ~ .custom-control-label {
|
||||
&::after {
|
||||
background-image: $custom-checkbox-indicator-icon-checked;
|
||||
}
|
||||
}
|
||||
|
||||
.custom-control-input:indeterminate ~ .custom-control-label {
|
||||
&::before {
|
||||
border-color: $custom-checkbox-indicator-indeterminate-border-color;
|
||||
@include gradient-bg($custom-checkbox-indicator-indeterminate-bg);
|
||||
@include box-shadow($custom-checkbox-indicator-indeterminate-box-shadow);
|
||||
}
|
||||
&::after {
|
||||
background-image: $custom-checkbox-indicator-icon-indeterminate;
|
||||
}
|
||||
}
|
||||
|
||||
.custom-control-input:disabled {
|
||||
&:checked ~ .custom-control-label::before {
|
||||
background-color: $custom-control-indicator-checked-disabled-bg;
|
||||
}
|
||||
&:indeterminate ~ .custom-control-label::before {
|
||||
background-color: $custom-control-indicator-checked-disabled-bg;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Radios
|
||||
//
|
||||
// Tweak just a few things for radios.
|
||||
|
||||
.custom-radio {
|
||||
.custom-control-label::before {
|
||||
// stylelint-disable-next-line property-blacklist
|
||||
border-radius: $custom-radio-indicator-border-radius;
|
||||
}
|
||||
|
||||
.custom-control-input:checked ~ .custom-control-label {
|
||||
&::after {
|
||||
background-image: $custom-radio-indicator-icon-checked;
|
||||
}
|
||||
}
|
||||
|
||||
.custom-control-input:disabled {
|
||||
&:checked ~ .custom-control-label::before {
|
||||
background-color: $custom-control-indicator-checked-disabled-bg;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
// switches
|
||||
//
|
||||
// Tweak a few things for switches
|
||||
|
||||
.custom-switch {
|
||||
padding-left: $custom-switch-width + $custom-control-gutter;
|
||||
|
||||
.custom-control-label {
|
||||
&::before {
|
||||
left: -($custom-switch-width + $custom-control-gutter);
|
||||
width: $custom-switch-width;
|
||||
pointer-events: all;
|
||||
// stylelint-disable-next-line property-blacklist
|
||||
border-radius: $custom-switch-indicator-border-radius;
|
||||
}
|
||||
|
||||
&::after {
|
||||
top: calc(#{(($font-size-base * $line-height-base - $custom-control-indicator-size) / 2)} + #{$custom-control-indicator-border-width * 2});
|
||||
left: calc(#{-($custom-switch-width + $custom-control-gutter)} + #{$custom-control-indicator-border-width * 2});
|
||||
width: $custom-switch-indicator-size;
|
||||
height: $custom-switch-indicator-size;
|
||||
background-color: $custom-control-indicator-border-color;
|
||||
// stylelint-disable-next-line property-blacklist
|
||||
border-radius: $custom-switch-indicator-border-radius;
|
||||
@include transition(transform .15s ease-in-out, $custom-forms-transition);
|
||||
}
|
||||
}
|
||||
|
||||
.custom-control-input:checked ~ .custom-control-label {
|
||||
&::after {
|
||||
background-color: $custom-control-indicator-bg;
|
||||
transform: translateX($custom-switch-width - $custom-control-indicator-size);
|
||||
}
|
||||
}
|
||||
|
||||
.custom-control-input:disabled {
|
||||
&:checked ~ .custom-control-label::before {
|
||||
background-color: $custom-control-indicator-checked-disabled-bg;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
// Select
|
||||
//
|
||||
// Replaces the browser default select with a custom one, mostly pulled from
|
||||
// https://primer.github.io/.
|
||||
//
|
||||
|
||||
.custom-select {
|
||||
display: inline-block;
|
||||
width: 100%;
|
||||
height: $custom-select-height;
|
||||
padding: $custom-select-padding-y ($custom-select-padding-x + $custom-select-indicator-padding) $custom-select-padding-y $custom-select-padding-x;
|
||||
font-family: $custom-select-font-family;
|
||||
@include font-size($custom-select-font-size);
|
||||
font-weight: $custom-select-font-weight;
|
||||
line-height: $custom-select-line-height;
|
||||
color: $custom-select-color;
|
||||
vertical-align: middle;
|
||||
background: $custom-select-background;
|
||||
background-color: $custom-select-bg;
|
||||
border: $custom-select-border-width solid $custom-select-border-color;
|
||||
@include border-radius($custom-select-border-radius, 0);
|
||||
@include box-shadow($custom-select-box-shadow);
|
||||
appearance: none;
|
||||
|
||||
&:focus {
|
||||
border-color: $custom-select-focus-border-color;
|
||||
outline: 0;
|
||||
@if $enable-shadows {
|
||||
box-shadow: $custom-select-box-shadow, $custom-select-focus-box-shadow;
|
||||
} @else {
|
||||
box-shadow: $custom-select-focus-box-shadow;
|
||||
}
|
||||
|
||||
&::-ms-value {
|
||||
// For visual consistency with other platforms/browsers,
|
||||
// suppress the default white text on blue background highlight given to
|
||||
// the selected option text when the (still closed) <select> receives focus
|
||||
// in IE and (under certain conditions) Edge.
|
||||
// See https://github.com/twbs/bootstrap/issues/19398.
|
||||
color: $input-color;
|
||||
background-color: $input-bg;
|
||||
}
|
||||
}
|
||||
|
||||
&[multiple],
|
||||
&[size]:not([size="1"]) {
|
||||
height: auto;
|
||||
padding-right: $custom-select-padding-x;
|
||||
background-image: none;
|
||||
}
|
||||
|
||||
&:disabled {
|
||||
color: $custom-select-disabled-color;
|
||||
background-color: $custom-select-disabled-bg;
|
||||
}
|
||||
|
||||
// Hides the default caret in IE11
|
||||
&::-ms-expand {
|
||||
display: none;
|
||||
}
|
||||
}
|
||||
|
||||
.custom-select-sm {
|
||||
height: $custom-select-height-sm;
|
||||
padding-top: $custom-select-padding-y-sm;
|
||||
padding-bottom: $custom-select-padding-y-sm;
|
||||
padding-left: $custom-select-padding-x-sm;
|
||||
@include font-size($custom-select-font-size-sm);
|
||||
}
|
||||
|
||||
.custom-select-lg {
|
||||
height: $custom-select-height-lg;
|
||||
padding-top: $custom-select-padding-y-lg;
|
||||
padding-bottom: $custom-select-padding-y-lg;
|
||||
padding-left: $custom-select-padding-x-lg;
|
||||
@include font-size($custom-select-font-size-lg);
|
||||
}
|
||||
|
||||
|
||||
// File
|
||||
//
|
||||
// Custom file input.
|
||||
|
||||
.custom-file {
|
||||
position: relative;
|
||||
display: inline-block;
|
||||
width: 100%;
|
||||
height: $custom-file-height;
|
||||
margin-bottom: 0;
|
||||
}
|
||||
|
||||
.custom-file-input {
|
||||
position: relative;
|
||||
z-index: 2;
|
||||
width: 100%;
|
||||
height: $custom-file-height;
|
||||
margin: 0;
|
||||
opacity: 0;
|
||||
|
||||
&:focus ~ .custom-file-label {
|
||||
border-color: $custom-file-focus-border-color;
|
||||
box-shadow: $custom-file-focus-box-shadow;
|
||||
}
|
||||
|
||||
&:disabled ~ .custom-file-label {
|
||||
background-color: $custom-file-disabled-bg;
|
||||
}
|
||||
|
||||
@each $lang, $value in $custom-file-text {
|
||||
&:lang(#{$lang}) ~ .custom-file-label::after {
|
||||
content: $value;
|
||||
}
|
||||
}
|
||||
|
||||
~ .custom-file-label[data-browse]::after {
|
||||
content: attr(data-browse);
|
||||
}
|
||||
}
|
||||
|
||||
.custom-file-label {
|
||||
position: absolute;
|
||||
top: 0;
|
||||
right: 0;
|
||||
left: 0;
|
||||
z-index: 1;
|
||||
height: $custom-file-height;
|
||||
padding: $custom-file-padding-y $custom-file-padding-x;
|
||||
font-family: $custom-file-font-family;
|
||||
font-weight: $custom-file-font-weight;
|
||||
line-height: $custom-file-line-height;
|
||||
color: $custom-file-color;
|
||||
background-color: $custom-file-bg;
|
||||
border: $custom-file-border-width solid $custom-file-border-color;
|
||||
@include border-radius($custom-file-border-radius);
|
||||
@include box-shadow($custom-file-box-shadow);
|
||||
|
||||
&::after {
|
||||
position: absolute;
|
||||
top: 0;
|
||||
right: 0;
|
||||
bottom: 0;
|
||||
z-index: 3;
|
||||
display: block;
|
||||
height: $custom-file-height-inner;
|
||||
padding: $custom-file-padding-y $custom-file-padding-x;
|
||||
line-height: $custom-file-line-height;
|
||||
color: $custom-file-button-color;
|
||||
content: "Browse";
|
||||
@include gradient-bg($custom-file-button-bg);
|
||||
border-left: inherit;
|
||||
@include border-radius(0 $custom-file-border-radius $custom-file-border-radius 0);
|
||||
}
|
||||
}
|
||||
|
||||
// Range
|
||||
//
|
||||
// Style range inputs the same across browsers. Vendor-specific rules for pseudo
|
||||
// elements cannot be mixed. As such, there are no shared styles for focus or
|
||||
// active states on prefixed selectors.
|
||||
|
||||
.custom-range {
|
||||
width: 100%;
|
||||
height: calc(#{$custom-range-thumb-height} + #{$custom-range-thumb-focus-box-shadow-width * 2});
|
||||
padding: 0; // Need to reset padding
|
||||
background-color: transparent;
|
||||
appearance: none;
|
||||
|
||||
&:focus {
|
||||
outline: none;
|
||||
|
||||
// Pseudo-elements must be split across multiple rulesets to have an effect.
|
||||
// No box-shadow() mixin for focus accessibility.
|
||||
&::-webkit-slider-thumb { box-shadow: $custom-range-thumb-focus-box-shadow; }
|
||||
&::-moz-range-thumb { box-shadow: $custom-range-thumb-focus-box-shadow; }
|
||||
&::-ms-thumb { box-shadow: $custom-range-thumb-focus-box-shadow; }
|
||||
}
|
||||
|
||||
&::-moz-focus-outer {
|
||||
border: 0;
|
||||
}
|
||||
|
||||
&::-webkit-slider-thumb {
|
||||
width: $custom-range-thumb-width;
|
||||
height: $custom-range-thumb-height;
|
||||
margin-top: ($custom-range-track-height - $custom-range-thumb-height) / 2; // Webkit specific
|
||||
@include gradient-bg($custom-range-thumb-bg);
|
||||
border: $custom-range-thumb-border;
|
||||
@include border-radius($custom-range-thumb-border-radius);
|
||||
@include box-shadow($custom-range-thumb-box-shadow);
|
||||
@include transition($custom-forms-transition);
|
||||
appearance: none;
|
||||
|
||||
&:active {
|
||||
@include gradient-bg($custom-range-thumb-active-bg);
|
||||
}
|
||||
}
|
||||
|
||||
&::-webkit-slider-runnable-track {
|
||||
width: $custom-range-track-width;
|
||||
height: $custom-range-track-height;
|
||||
color: transparent; // Why?
|
||||
cursor: $custom-range-track-cursor;
|
||||
background-color: $custom-range-track-bg;
|
||||
border-color: transparent;
|
||||
@include border-radius($custom-range-track-border-radius);
|
||||
@include box-shadow($custom-range-track-box-shadow);
|
||||
}
|
||||
|
||||
&::-moz-range-thumb {
|
||||
width: $custom-range-thumb-width;
|
||||
height: $custom-range-thumb-height;
|
||||
@include gradient-bg($custom-range-thumb-bg);
|
||||
border: $custom-range-thumb-border;
|
||||
@include border-radius($custom-range-thumb-border-radius);
|
||||
@include box-shadow($custom-range-thumb-box-shadow);
|
||||
@include transition($custom-forms-transition);
|
||||
appearance: none;
|
||||
|
||||
&:active {
|
||||
@include gradient-bg($custom-range-thumb-active-bg);
|
||||
}
|
||||
}
|
||||
|
||||
&::-moz-range-track {
|
||||
width: $custom-range-track-width;
|
||||
height: $custom-range-track-height;
|
||||
color: transparent;
|
||||
cursor: $custom-range-track-cursor;
|
||||
background-color: $custom-range-track-bg;
|
||||
border-color: transparent; // Firefox specific?
|
||||
@include border-radius($custom-range-track-border-radius);
|
||||
@include box-shadow($custom-range-track-box-shadow);
|
||||
}
|
||||
|
||||
&::-ms-thumb {
|
||||
width: $custom-range-thumb-width;
|
||||
height: $custom-range-thumb-height;
|
||||
margin-top: 0; // Edge specific
|
||||
margin-right: $custom-range-thumb-focus-box-shadow-width; // Workaround that overflowed box-shadow is hidden.
|
||||
margin-left: $custom-range-thumb-focus-box-shadow-width; // Workaround that overflowed box-shadow is hidden.
|
||||
@include gradient-bg($custom-range-thumb-bg);
|
||||
border: $custom-range-thumb-border;
|
||||
@include border-radius($custom-range-thumb-border-radius);
|
||||
@include box-shadow($custom-range-thumb-box-shadow);
|
||||
@include transition($custom-forms-transition);
|
||||
appearance: none;
|
||||
|
||||
&:active {
|
||||
@include gradient-bg($custom-range-thumb-active-bg);
|
||||
}
|
||||
}
|
||||
|
||||
&::-ms-track {
|
||||
width: $custom-range-track-width;
|
||||
height: $custom-range-track-height;
|
||||
color: transparent;
|
||||
cursor: $custom-range-track-cursor;
|
||||
background-color: transparent;
|
||||
border-color: transparent;
|
||||
border-width: $custom-range-thumb-height / 2;
|
||||
@include box-shadow($custom-range-track-box-shadow);
|
||||
}
|
||||
|
||||
&::-ms-fill-lower {
|
||||
background-color: $custom-range-track-bg;
|
||||
@include border-radius($custom-range-track-border-radius);
|
||||
}
|
||||
|
||||
&::-ms-fill-upper {
|
||||
margin-right: 15px; // arbitrary?
|
||||
background-color: $custom-range-track-bg;
|
||||
@include border-radius($custom-range-track-border-radius);
|
||||
}
|
||||
|
||||
&:disabled {
|
||||
&::-webkit-slider-thumb {
|
||||
background-color: $custom-range-thumb-disabled-bg;
|
||||
}
|
||||
|
||||
&::-webkit-slider-runnable-track {
|
||||
cursor: default;
|
||||
}
|
||||
|
||||
&::-moz-range-thumb {
|
||||
background-color: $custom-range-thumb-disabled-bg;
|
||||
}
|
||||
|
||||
&::-moz-range-track {
|
||||
cursor: default;
|
||||
}
|
||||
|
||||
&::-ms-thumb {
|
||||
background-color: $custom-range-thumb-disabled-bg;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.custom-control-label::before,
|
||||
.custom-file-label,
|
||||
.custom-select {
|
||||
@include transition($custom-forms-transition);
|
||||
}
|
||||
191
APPL/Consoles/vendor/bootstrap/scss/_dropdown.scss
vendored
191
APPL/Consoles/vendor/bootstrap/scss/_dropdown.scss
vendored
@@ -1,191 +0,0 @@
|
||||
// The dropdown wrapper (`<div>`)
|
||||
.dropup,
|
||||
.dropright,
|
||||
.dropdown,
|
||||
.dropleft {
|
||||
position: relative;
|
||||
}
|
||||
|
||||
.dropdown-toggle {
|
||||
white-space: nowrap;
|
||||
|
||||
// Generate the caret automatically
|
||||
@include caret;
|
||||
}
|
||||
|
||||
// The dropdown menu
|
||||
.dropdown-menu {
|
||||
position: absolute;
|
||||
top: 100%;
|
||||
left: 0;
|
||||
z-index: $zindex-dropdown;
|
||||
display: none; // none by default, but block on "open" of the menu
|
||||
float: left;
|
||||
min-width: $dropdown-min-width;
|
||||
padding: $dropdown-padding-y 0;
|
||||
margin: $dropdown-spacer 0 0; // override default ul
|
||||
@include font-size($dropdown-font-size);
|
||||
color: $dropdown-color;
|
||||
text-align: left; // Ensures proper alignment if parent has it changed (e.g., modal footer)
|
||||
list-style: none;
|
||||
background-color: $dropdown-bg;
|
||||
background-clip: padding-box;
|
||||
border: $dropdown-border-width solid $dropdown-border-color;
|
||||
@include border-radius($dropdown-border-radius);
|
||||
@include box-shadow($dropdown-box-shadow);
|
||||
}
|
||||
|
||||
@each $breakpoint in map-keys($grid-breakpoints) {
|
||||
@include media-breakpoint-up($breakpoint) {
|
||||
$infix: breakpoint-infix($breakpoint, $grid-breakpoints);
|
||||
|
||||
.dropdown-menu#{$infix}-left {
|
||||
right: auto;
|
||||
left: 0;
|
||||
}
|
||||
|
||||
.dropdown-menu#{$infix}-right {
|
||||
right: 0;
|
||||
left: auto;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Allow for dropdowns to go bottom up (aka, dropup-menu)
|
||||
// Just add .dropup after the standard .dropdown class and you're set.
|
||||
.dropup {
|
||||
.dropdown-menu {
|
||||
top: auto;
|
||||
bottom: 100%;
|
||||
margin-top: 0;
|
||||
margin-bottom: $dropdown-spacer;
|
||||
}
|
||||
|
||||
.dropdown-toggle {
|
||||
@include caret(up);
|
||||
}
|
||||
}
|
||||
|
||||
.dropright {
|
||||
.dropdown-menu {
|
||||
top: 0;
|
||||
right: auto;
|
||||
left: 100%;
|
||||
margin-top: 0;
|
||||
margin-left: $dropdown-spacer;
|
||||
}
|
||||
|
||||
.dropdown-toggle {
|
||||
@include caret(right);
|
||||
&::after {
|
||||
vertical-align: 0;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.dropleft {
|
||||
.dropdown-menu {
|
||||
top: 0;
|
||||
right: 100%;
|
||||
left: auto;
|
||||
margin-top: 0;
|
||||
margin-right: $dropdown-spacer;
|
||||
}
|
||||
|
||||
.dropdown-toggle {
|
||||
@include caret(left);
|
||||
&::before {
|
||||
vertical-align: 0;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// When enabled Popper.js, reset basic dropdown position
|
||||
// stylelint-disable-next-line no-duplicate-selectors
|
||||
.dropdown-menu {
|
||||
&[x-placement^="top"],
|
||||
&[x-placement^="right"],
|
||||
&[x-placement^="bottom"],
|
||||
&[x-placement^="left"] {
|
||||
right: auto;
|
||||
bottom: auto;
|
||||
}
|
||||
}
|
||||
|
||||
// Dividers (basically an `<hr>`) within the dropdown
|
||||
.dropdown-divider {
|
||||
@include nav-divider($dropdown-divider-bg, $dropdown-divider-margin-y);
|
||||
}
|
||||
|
||||
// Links, buttons, and more within the dropdown menu
|
||||
//
|
||||
// `<button>`-specific styles are denoted with `// For <button>s`
|
||||
.dropdown-item {
|
||||
display: block;
|
||||
width: 100%; // For `<button>`s
|
||||
padding: $dropdown-item-padding-y $dropdown-item-padding-x;
|
||||
clear: both;
|
||||
font-weight: $font-weight-normal;
|
||||
color: $dropdown-link-color;
|
||||
text-align: inherit; // For `<button>`s
|
||||
white-space: nowrap; // prevent links from randomly breaking onto new lines
|
||||
background-color: transparent; // For `<button>`s
|
||||
border: 0; // For `<button>`s
|
||||
|
||||
// Prevent dropdown overflow if there's no padding
|
||||
// See https://github.com/twbs/bootstrap/pull/27703
|
||||
@if $dropdown-padding-y == 0 {
|
||||
&:first-child {
|
||||
@include border-top-radius($dropdown-inner-border-radius);
|
||||
}
|
||||
|
||||
&:last-child {
|
||||
@include border-bottom-radius($dropdown-inner-border-radius);
|
||||
}
|
||||
}
|
||||
|
||||
@include hover-focus {
|
||||
color: $dropdown-link-hover-color;
|
||||
text-decoration: none;
|
||||
@include gradient-bg($dropdown-link-hover-bg);
|
||||
}
|
||||
|
||||
&.active,
|
||||
&:active {
|
||||
color: $dropdown-link-active-color;
|
||||
text-decoration: none;
|
||||
@include gradient-bg($dropdown-link-active-bg);
|
||||
}
|
||||
|
||||
&.disabled,
|
||||
&:disabled {
|
||||
color: $dropdown-link-disabled-color;
|
||||
pointer-events: none;
|
||||
background-color: transparent;
|
||||
// Remove CSS gradients if they're enabled
|
||||
@if $enable-gradients {
|
||||
background-image: none;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.dropdown-menu.show {
|
||||
display: block;
|
||||
}
|
||||
|
||||
// Dropdown section headers
|
||||
.dropdown-header {
|
||||
display: block;
|
||||
padding: $dropdown-padding-y $dropdown-item-padding-x;
|
||||
margin-bottom: 0; // for use with heading elements
|
||||
@include font-size($font-size-sm);
|
||||
color: $dropdown-header-color;
|
||||
white-space: nowrap; // as with > li > a
|
||||
}
|
||||
|
||||
// Dropdown text
|
||||
.dropdown-item-text {
|
||||
display: block;
|
||||
padding: $dropdown-item-padding-y $dropdown-item-padding-x;
|
||||
color: $dropdown-link-color;
|
||||
}
|
||||
330
APPL/Consoles/vendor/bootstrap/scss/_forms.scss
vendored
330
APPL/Consoles/vendor/bootstrap/scss/_forms.scss
vendored
@@ -1,330 +0,0 @@
|
||||
// stylelint-disable selector-no-qualifying-type
|
||||
|
||||
//
|
||||
// Textual form controls
|
||||
//
|
||||
|
||||
.form-control {
|
||||
display: block;
|
||||
width: 100%;
|
||||
height: $input-height;
|
||||
padding: $input-padding-y $input-padding-x;
|
||||
font-family: $input-font-family;
|
||||
@include font-size($input-font-size);
|
||||
font-weight: $input-font-weight;
|
||||
line-height: $input-line-height;
|
||||
color: $input-color;
|
||||
background-color: $input-bg;
|
||||
background-clip: padding-box;
|
||||
border: $input-border-width solid $input-border-color;
|
||||
|
||||
// Note: This has no effect on <select>s in some browsers, due to the limited stylability of `<select>`s in CSS.
|
||||
@include border-radius($input-border-radius, 0);
|
||||
|
||||
@include box-shadow($input-box-shadow);
|
||||
@include transition($input-transition);
|
||||
|
||||
// Unstyle the caret on `<select>`s in IE10+.
|
||||
&::-ms-expand {
|
||||
background-color: transparent;
|
||||
border: 0;
|
||||
}
|
||||
|
||||
// Customize the `:focus` state to imitate native WebKit styles.
|
||||
@include form-control-focus();
|
||||
|
||||
// Placeholder
|
||||
&::placeholder {
|
||||
color: $input-placeholder-color;
|
||||
// Override Firefox's unusual default opacity; see https://github.com/twbs/bootstrap/pull/11526.
|
||||
opacity: 1;
|
||||
}
|
||||
|
||||
// Disabled and read-only inputs
|
||||
//
|
||||
// HTML5 says that controls under a fieldset > legend:first-child won't be
|
||||
// disabled if the fieldset is disabled. Due to implementation difficulty, we
|
||||
// don't honor that edge case; we style them as disabled anyway.
|
||||
&:disabled,
|
||||
&[readonly] {
|
||||
background-color: $input-disabled-bg;
|
||||
// iOS fix for unreadable disabled content; see https://github.com/twbs/bootstrap/issues/11655.
|
||||
opacity: 1;
|
||||
}
|
||||
}
|
||||
|
||||
select.form-control {
|
||||
&:focus::-ms-value {
|
||||
// Suppress the nested default white text on blue background highlight given to
|
||||
// the selected option text when the (still closed) <select> receives focus
|
||||
// in IE and (under certain conditions) Edge, as it looks bad and cannot be made to
|
||||
// match the appearance of the native widget.
|
||||
// See https://github.com/twbs/bootstrap/issues/19398.
|
||||
color: $input-color;
|
||||
background-color: $input-bg;
|
||||
}
|
||||
}
|
||||
|
||||
// Make file inputs better match text inputs by forcing them to new lines.
|
||||
.form-control-file,
|
||||
.form-control-range {
|
||||
display: block;
|
||||
width: 100%;
|
||||
}
|
||||
|
||||
|
||||
//
|
||||
// Labels
|
||||
//
|
||||
|
||||
// For use with horizontal and inline forms, when you need the label (or legend)
|
||||
// text to align with the form controls.
|
||||
.col-form-label {
|
||||
padding-top: calc(#{$input-padding-y} + #{$input-border-width});
|
||||
padding-bottom: calc(#{$input-padding-y} + #{$input-border-width});
|
||||
margin-bottom: 0; // Override the `<label>/<legend>` default
|
||||
@include font-size(inherit); // Override the `<legend>` default
|
||||
line-height: $input-line-height;
|
||||
}
|
||||
|
||||
.col-form-label-lg {
|
||||
padding-top: calc(#{$input-padding-y-lg} + #{$input-border-width});
|
||||
padding-bottom: calc(#{$input-padding-y-lg} + #{$input-border-width});
|
||||
@include font-size($input-font-size-lg);
|
||||
line-height: $input-line-height-lg;
|
||||
}
|
||||
|
||||
.col-form-label-sm {
|
||||
padding-top: calc(#{$input-padding-y-sm} + #{$input-border-width});
|
||||
padding-bottom: calc(#{$input-padding-y-sm} + #{$input-border-width});
|
||||
@include font-size($input-font-size-sm);
|
||||
line-height: $input-line-height-sm;
|
||||
}
|
||||
|
||||
|
||||
// Readonly controls as plain text
|
||||
//
|
||||
// Apply class to a readonly input to make it appear like regular plain
|
||||
// text (without any border, background color, focus indicator)
|
||||
|
||||
.form-control-plaintext {
|
||||
display: block;
|
||||
width: 100%;
|
||||
padding-top: $input-padding-y;
|
||||
padding-bottom: $input-padding-y;
|
||||
margin-bottom: 0; // match inputs if this class comes on inputs with default margins
|
||||
line-height: $input-line-height;
|
||||
color: $input-plaintext-color;
|
||||
background-color: transparent;
|
||||
border: solid transparent;
|
||||
border-width: $input-border-width 0;
|
||||
|
||||
&.form-control-sm,
|
||||
&.form-control-lg {
|
||||
padding-right: 0;
|
||||
padding-left: 0;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
// Form control sizing
|
||||
//
|
||||
// Build on `.form-control` with modifier classes to decrease or increase the
|
||||
// height and font-size of form controls.
|
||||
//
|
||||
// Repeated in `_input_group.scss` to avoid Sass extend issues.
|
||||
|
||||
.form-control-sm {
|
||||
height: $input-height-sm;
|
||||
padding: $input-padding-y-sm $input-padding-x-sm;
|
||||
@include font-size($input-font-size-sm);
|
||||
line-height: $input-line-height-sm;
|
||||
@include border-radius($input-border-radius-sm);
|
||||
}
|
||||
|
||||
.form-control-lg {
|
||||
height: $input-height-lg;
|
||||
padding: $input-padding-y-lg $input-padding-x-lg;
|
||||
@include font-size($input-font-size-lg);
|
||||
line-height: $input-line-height-lg;
|
||||
@include border-radius($input-border-radius-lg);
|
||||
}
|
||||
|
||||
// stylelint-disable-next-line no-duplicate-selectors
|
||||
select.form-control {
|
||||
&[size],
|
||||
&[multiple] {
|
||||
height: auto;
|
||||
}
|
||||
}
|
||||
|
||||
textarea.form-control {
|
||||
height: auto;
|
||||
}
|
||||
|
||||
// Form groups
|
||||
//
|
||||
// Designed to help with the organization and spacing of vertical forms. For
|
||||
// horizontal forms, use the predefined grid classes.
|
||||
|
||||
.form-group {
|
||||
margin-bottom: $form-group-margin-bottom;
|
||||
}
|
||||
|
||||
.form-text {
|
||||
display: block;
|
||||
margin-top: $form-text-margin-top;
|
||||
}
|
||||
|
||||
|
||||
// Form grid
|
||||
//
|
||||
// Special replacement for our grid system's `.row` for tighter form layouts.
|
||||
|
||||
.form-row {
|
||||
display: flex;
|
||||
flex-wrap: wrap;
|
||||
margin-right: -$form-grid-gutter-width / 2;
|
||||
margin-left: -$form-grid-gutter-width / 2;
|
||||
|
||||
> .col,
|
||||
> [class*="col-"] {
|
||||
padding-right: $form-grid-gutter-width / 2;
|
||||
padding-left: $form-grid-gutter-width / 2;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
// Checkboxes and radios
|
||||
//
|
||||
// Indent the labels to position radios/checkboxes as hanging controls.
|
||||
|
||||
.form-check {
|
||||
position: relative;
|
||||
display: block;
|
||||
padding-left: $form-check-input-gutter;
|
||||
}
|
||||
|
||||
.form-check-input {
|
||||
position: absolute;
|
||||
margin-top: $form-check-input-margin-y;
|
||||
margin-left: -$form-check-input-gutter;
|
||||
|
||||
&:disabled ~ .form-check-label {
|
||||
color: $text-muted;
|
||||
}
|
||||
}
|
||||
|
||||
.form-check-label {
|
||||
margin-bottom: 0; // Override default `<label>` bottom margin
|
||||
}
|
||||
|
||||
.form-check-inline {
|
||||
display: inline-flex;
|
||||
align-items: center;
|
||||
padding-left: 0; // Override base .form-check
|
||||
margin-right: $form-check-inline-margin-x;
|
||||
|
||||
// Undo .form-check-input defaults and add some `margin-right`.
|
||||
.form-check-input {
|
||||
position: static;
|
||||
margin-top: 0;
|
||||
margin-right: $form-check-inline-input-margin-x;
|
||||
margin-left: 0;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
// Form validation
|
||||
//
|
||||
// Provide feedback to users when form field values are valid or invalid. Works
|
||||
// primarily for client-side validation via scoped `:invalid` and `:valid`
|
||||
// pseudo-classes but also includes `.is-invalid` and `.is-valid` classes for
|
||||
// server side validation.
|
||||
|
||||
@each $state, $data in $form-validation-states {
|
||||
@include form-validation-state($state, map-get($data, color), map-get($data, icon));
|
||||
}
|
||||
|
||||
// Inline forms
|
||||
//
|
||||
// Make forms appear inline(-block) by adding the `.form-inline` class. Inline
|
||||
// forms begin stacked on extra small (mobile) devices and then go inline when
|
||||
// viewports reach <768px.
|
||||
//
|
||||
// Requires wrapping inputs and labels with `.form-group` for proper display of
|
||||
// default HTML form controls and our custom form controls (e.g., input groups).
|
||||
|
||||
.form-inline {
|
||||
display: flex;
|
||||
flex-flow: row wrap;
|
||||
align-items: center; // Prevent shorter elements from growing to same height as others (e.g., small buttons growing to normal sized button height)
|
||||
|
||||
// Because we use flex, the initial sizing of checkboxes is collapsed and
|
||||
// doesn't occupy the full-width (which is what we want for xs grid tier),
|
||||
// so we force that here.
|
||||
.form-check {
|
||||
width: 100%;
|
||||
}
|
||||
|
||||
// Kick in the inline
|
||||
@include media-breakpoint-up(sm) {
|
||||
label {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
margin-bottom: 0;
|
||||
}
|
||||
|
||||
// Inline-block all the things for "inline"
|
||||
.form-group {
|
||||
display: flex;
|
||||
flex: 0 0 auto;
|
||||
flex-flow: row wrap;
|
||||
align-items: center;
|
||||
margin-bottom: 0;
|
||||
}
|
||||
|
||||
// Allow folks to *not* use `.form-group`
|
||||
.form-control {
|
||||
display: inline-block;
|
||||
width: auto; // Prevent labels from stacking above inputs in `.form-group`
|
||||
vertical-align: middle;
|
||||
}
|
||||
|
||||
// Make static controls behave like regular ones
|
||||
.form-control-plaintext {
|
||||
display: inline-block;
|
||||
}
|
||||
|
||||
.input-group,
|
||||
.custom-select {
|
||||
width: auto;
|
||||
}
|
||||
|
||||
// Remove default margin on radios/checkboxes that were used for stacking, and
|
||||
// then undo the floating of radios and checkboxes to match.
|
||||
.form-check {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
width: auto;
|
||||
padding-left: 0;
|
||||
}
|
||||
.form-check-input {
|
||||
position: relative;
|
||||
flex-shrink: 0;
|
||||
margin-top: 0;
|
||||
margin-right: $form-check-input-margin-x;
|
||||
margin-left: 0;
|
||||
}
|
||||
|
||||
.custom-control {
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
}
|
||||
.custom-control-label {
|
||||
margin-bottom: 0;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,86 +0,0 @@
|
||||
// Bootstrap functions
|
||||
//
|
||||
// Utility mixins and functions for evaluating source code across our variables, maps, and mixins.
|
||||
|
||||
// Ascending
|
||||
// Used to evaluate Sass maps like our grid breakpoints.
|
||||
@mixin _assert-ascending($map, $map-name) {
|
||||
$prev-key: null;
|
||||
$prev-num: null;
|
||||
@each $key, $num in $map {
|
||||
@if $prev-num == null or unit($num) == "%" {
|
||||
// Do nothing
|
||||
} @else if not comparable($prev-num, $num) {
|
||||
@warn "Potentially invalid value for #{$map-name}: This map must be in ascending order, but key '#{$key}' has value #{$num} whose unit makes it incomparable to #{$prev-num}, the value of the previous key '#{$prev-key}' !";
|
||||
} @else if $prev-num >= $num {
|
||||
@warn "Invalid value for #{$map-name}: This map must be in ascending order, but key '#{$key}' has value #{$num} which isn't greater than #{$prev-num}, the value of the previous key '#{$prev-key}' !";
|
||||
}
|
||||
$prev-key: $key;
|
||||
$prev-num: $num;
|
||||
}
|
||||
}
|
||||
|
||||
// Starts at zero
|
||||
// Used to ensure the min-width of the lowest breakpoint starts at 0.
|
||||
@mixin _assert-starts-at-zero($map, $map-name: "$grid-breakpoints") {
|
||||
$values: map-values($map);
|
||||
$first-value: nth($values, 1);
|
||||
@if $first-value != 0 {
|
||||
@warn "First breakpoint in #{$map-name} must start at 0, but starts at #{$first-value}.";
|
||||
}
|
||||
}
|
||||
|
||||
// Replace `$search` with `$replace` in `$string`
|
||||
// Used on our SVG icon backgrounds for custom forms.
|
||||
//
|
||||
// @author Hugo Giraudel
|
||||
// @param {String} $string - Initial string
|
||||
// @param {String} $search - Substring to replace
|
||||
// @param {String} $replace ('') - New value
|
||||
// @return {String} - Updated string
|
||||
@function str-replace($string, $search, $replace: "") {
|
||||
$index: str-index($string, $search);
|
||||
|
||||
@if $index {
|
||||
@return str-slice($string, 1, $index - 1) + $replace + str-replace(str-slice($string, $index + str-length($search)), $search, $replace);
|
||||
}
|
||||
|
||||
@return $string;
|
||||
}
|
||||
|
||||
// Color contrast
|
||||
@function color-yiq($color, $dark: $yiq-text-dark, $light: $yiq-text-light) {
|
||||
$r: red($color);
|
||||
$g: green($color);
|
||||
$b: blue($color);
|
||||
|
||||
$yiq: (($r * 299) + ($g * 587) + ($b * 114)) / 1000;
|
||||
|
||||
@if ($yiq >= $yiq-contrasted-threshold) {
|
||||
@return $dark;
|
||||
} @else {
|
||||
@return $light;
|
||||
}
|
||||
}
|
||||
|
||||
// Retrieve color Sass maps
|
||||
@function color($key: "blue") {
|
||||
@return map-get($colors, $key);
|
||||
}
|
||||
|
||||
@function theme-color($key: "primary") {
|
||||
@return map-get($theme-colors, $key);
|
||||
}
|
||||
|
||||
@function gray($key: "100") {
|
||||
@return map-get($grays, $key);
|
||||
}
|
||||
|
||||
// Request a theme color level
|
||||
@function theme-color-level($color-name: "primary", $level: 0) {
|
||||
$color: theme-color($color-name);
|
||||
$color-base: if($level > 0, $black, $white);
|
||||
$level: abs($level);
|
||||
|
||||
@return mix($color-base, $color, $level * $theme-color-interval);
|
||||
}
|
||||
52
APPL/Consoles/vendor/bootstrap/scss/_grid.scss
vendored
52
APPL/Consoles/vendor/bootstrap/scss/_grid.scss
vendored
@@ -1,52 +0,0 @@
|
||||
// Container widths
|
||||
//
|
||||
// Set the container width, and override it for fixed navbars in media queries.
|
||||
|
||||
@if $enable-grid-classes {
|
||||
.container {
|
||||
@include make-container();
|
||||
@include make-container-max-widths();
|
||||
}
|
||||
}
|
||||
|
||||
// Fluid container
|
||||
//
|
||||
// Utilizes the mixin meant for fixed width containers, but with 100% width for
|
||||
// fluid, full width layouts.
|
||||
|
||||
@if $enable-grid-classes {
|
||||
.container-fluid {
|
||||
@include make-container();
|
||||
}
|
||||
}
|
||||
|
||||
// Row
|
||||
//
|
||||
// Rows contain and clear the floats of your columns.
|
||||
|
||||
@if $enable-grid-classes {
|
||||
.row {
|
||||
@include make-row();
|
||||
}
|
||||
|
||||
// Remove the negative margin from default .row, then the horizontal padding
|
||||
// from all immediate children columns (to prevent runaway style inheritance).
|
||||
.no-gutters {
|
||||
margin-right: 0;
|
||||
margin-left: 0;
|
||||
|
||||
> .col,
|
||||
> [class*="col-"] {
|
||||
padding-right: 0;
|
||||
padding-left: 0;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Columns
|
||||
//
|
||||
// Common styles for small and large grid columns
|
||||
|
||||
@if $enable-grid-classes {
|
||||
@include make-grid-columns();
|
||||
}
|
||||
42
APPL/Consoles/vendor/bootstrap/scss/_images.scss
vendored
42
APPL/Consoles/vendor/bootstrap/scss/_images.scss
vendored
@@ -1,42 +0,0 @@
|
||||
// Responsive images (ensure images don't scale beyond their parents)
|
||||
//
|
||||
// This is purposefully opt-in via an explicit class rather than being the default for all `<img>`s.
|
||||
// We previously tried the "images are responsive by default" approach in Bootstrap v2,
|
||||
// and abandoned it in Bootstrap v3 because it breaks lots of third-party widgets (including Google Maps)
|
||||
// which weren't expecting the images within themselves to be involuntarily resized.
|
||||
// See also https://github.com/twbs/bootstrap/issues/18178
|
||||
.img-fluid {
|
||||
@include img-fluid;
|
||||
}
|
||||
|
||||
|
||||
// Image thumbnails
|
||||
.img-thumbnail {
|
||||
padding: $thumbnail-padding;
|
||||
background-color: $thumbnail-bg;
|
||||
border: $thumbnail-border-width solid $thumbnail-border-color;
|
||||
@include border-radius($thumbnail-border-radius);
|
||||
@include box-shadow($thumbnail-box-shadow);
|
||||
|
||||
// Keep them at most 100% wide
|
||||
@include img-fluid;
|
||||
}
|
||||
|
||||
//
|
||||
// Figures
|
||||
//
|
||||
|
||||
.figure {
|
||||
// Ensures the caption's text aligns with the image.
|
||||
display: inline-block;
|
||||
}
|
||||
|
||||
.figure-img {
|
||||
margin-bottom: $spacer / 2;
|
||||
line-height: 1;
|
||||
}
|
||||
|
||||
.figure-caption {
|
||||
@include font-size($figure-caption-font-size);
|
||||
color: $figure-caption-color;
|
||||
}
|
||||
@@ -1,193 +0,0 @@
|
||||
// stylelint-disable selector-no-qualifying-type
|
||||
|
||||
//
|
||||
// Base styles
|
||||
//
|
||||
|
||||
.input-group {
|
||||
position: relative;
|
||||
display: flex;
|
||||
flex-wrap: wrap; // For form validation feedback
|
||||
align-items: stretch;
|
||||
width: 100%;
|
||||
|
||||
> .form-control,
|
||||
> .form-control-plaintext,
|
||||
> .custom-select,
|
||||
> .custom-file {
|
||||
position: relative; // For focus state's z-index
|
||||
flex: 1 1 auto;
|
||||
// Add width 1% and flex-basis auto to ensure that button will not wrap out
|
||||
// the column. Applies to IE Edge+ and Firefox. Chrome does not require this.
|
||||
width: 1%;
|
||||
margin-bottom: 0;
|
||||
|
||||
+ .form-control,
|
||||
+ .custom-select,
|
||||
+ .custom-file {
|
||||
margin-left: -$input-border-width;
|
||||
}
|
||||
}
|
||||
|
||||
// Bring the "active" form control to the top of surrounding elements
|
||||
> .form-control:focus,
|
||||
> .custom-select:focus,
|
||||
> .custom-file .custom-file-input:focus ~ .custom-file-label {
|
||||
z-index: 3;
|
||||
}
|
||||
|
||||
// Bring the custom file input above the label
|
||||
> .custom-file .custom-file-input:focus {
|
||||
z-index: 4;
|
||||
}
|
||||
|
||||
> .form-control,
|
||||
> .custom-select {
|
||||
&:not(:last-child) { @include border-right-radius(0); }
|
||||
&:not(:first-child) { @include border-left-radius(0); }
|
||||
}
|
||||
|
||||
// Custom file inputs have more complex markup, thus requiring different
|
||||
// border-radius overrides.
|
||||
> .custom-file {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
|
||||
&:not(:last-child) .custom-file-label,
|
||||
&:not(:last-child) .custom-file-label::after { @include border-right-radius(0); }
|
||||
&:not(:first-child) .custom-file-label { @include border-left-radius(0); }
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
// Prepend and append
|
||||
//
|
||||
// While it requires one extra layer of HTML for each, dedicated prepend and
|
||||
// append elements allow us to 1) be less clever, 2) simplify our selectors, and
|
||||
// 3) support HTML5 form validation.
|
||||
|
||||
.input-group-prepend,
|
||||
.input-group-append {
|
||||
display: flex;
|
||||
|
||||
// Ensure buttons are always above inputs for more visually pleasing borders.
|
||||
// This isn't needed for `.input-group-text` since it shares the same border-color
|
||||
// as our inputs.
|
||||
.btn {
|
||||
position: relative;
|
||||
z-index: 2;
|
||||
|
||||
&:focus {
|
||||
z-index: 3;
|
||||
}
|
||||
}
|
||||
|
||||
.btn + .btn,
|
||||
.btn + .input-group-text,
|
||||
.input-group-text + .input-group-text,
|
||||
.input-group-text + .btn {
|
||||
margin-left: -$input-border-width;
|
||||
}
|
||||
}
|
||||
|
||||
.input-group-prepend { margin-right: -$input-border-width; }
|
||||
.input-group-append { margin-left: -$input-border-width; }
|
||||
|
||||
|
||||
// Textual addons
|
||||
//
|
||||
// Serves as a catch-all element for any text or radio/checkbox input you wish
|
||||
// to prepend or append to an input.
|
||||
|
||||
.input-group-text {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
padding: $input-padding-y $input-padding-x;
|
||||
margin-bottom: 0; // Allow use of <label> elements by overriding our default margin-bottom
|
||||
@include font-size($input-font-size); // Match inputs
|
||||
font-weight: $font-weight-normal;
|
||||
line-height: $input-line-height;
|
||||
color: $input-group-addon-color;
|
||||
text-align: center;
|
||||
white-space: nowrap;
|
||||
background-color: $input-group-addon-bg;
|
||||
border: $input-border-width solid $input-group-addon-border-color;
|
||||
@include border-radius($input-border-radius);
|
||||
|
||||
// Nuke default margins from checkboxes and radios to vertically center within.
|
||||
input[type="radio"],
|
||||
input[type="checkbox"] {
|
||||
margin-top: 0;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
// Sizing
|
||||
//
|
||||
// Remix the default form control sizing classes into new ones for easier
|
||||
// manipulation.
|
||||
|
||||
.input-group-lg > .form-control:not(textarea),
|
||||
.input-group-lg > .custom-select {
|
||||
height: $input-height-lg;
|
||||
}
|
||||
|
||||
.input-group-lg > .form-control,
|
||||
.input-group-lg > .custom-select,
|
||||
.input-group-lg > .input-group-prepend > .input-group-text,
|
||||
.input-group-lg > .input-group-append > .input-group-text,
|
||||
.input-group-lg > .input-group-prepend > .btn,
|
||||
.input-group-lg > .input-group-append > .btn {
|
||||
padding: $input-padding-y-lg $input-padding-x-lg;
|
||||
@include font-size($input-font-size-lg);
|
||||
line-height: $input-line-height-lg;
|
||||
@include border-radius($input-border-radius-lg);
|
||||
}
|
||||
|
||||
.input-group-sm > .form-control:not(textarea),
|
||||
.input-group-sm > .custom-select {
|
||||
height: $input-height-sm;
|
||||
}
|
||||
|
||||
.input-group-sm > .form-control,
|
||||
.input-group-sm > .custom-select,
|
||||
.input-group-sm > .input-group-prepend > .input-group-text,
|
||||
.input-group-sm > .input-group-append > .input-group-text,
|
||||
.input-group-sm > .input-group-prepend > .btn,
|
||||
.input-group-sm > .input-group-append > .btn {
|
||||
padding: $input-padding-y-sm $input-padding-x-sm;
|
||||
@include font-size($input-font-size-sm);
|
||||
line-height: $input-line-height-sm;
|
||||
@include border-radius($input-border-radius-sm);
|
||||
}
|
||||
|
||||
.input-group-lg > .custom-select,
|
||||
.input-group-sm > .custom-select {
|
||||
padding-right: $custom-select-padding-x + $custom-select-indicator-padding;
|
||||
}
|
||||
|
||||
|
||||
// Prepend and append rounded corners
|
||||
//
|
||||
// These rulesets must come after the sizing ones to properly override sm and lg
|
||||
// border-radius values when extending. They're more specific than we'd like
|
||||
// with the `.input-group >` part, but without it, we cannot override the sizing.
|
||||
|
||||
|
||||
.input-group > .input-group-prepend > .btn,
|
||||
.input-group > .input-group-prepend > .input-group-text,
|
||||
.input-group > .input-group-append:not(:last-child) > .btn,
|
||||
.input-group > .input-group-append:not(:last-child) > .input-group-text,
|
||||
.input-group > .input-group-append:last-child > .btn:not(:last-child):not(.dropdown-toggle),
|
||||
.input-group > .input-group-append:last-child > .input-group-text:not(:last-child) {
|
||||
@include border-right-radius(0);
|
||||
}
|
||||
|
||||
.input-group > .input-group-append > .btn,
|
||||
.input-group > .input-group-append > .input-group-text,
|
||||
.input-group > .input-group-prepend:not(:first-child) > .btn,
|
||||
.input-group > .input-group-prepend:not(:first-child) > .input-group-text,
|
||||
.input-group > .input-group-prepend:first-child > .btn:not(:first-child),
|
||||
.input-group > .input-group-prepend:first-child > .input-group-text:not(:first-child) {
|
||||
@include border-left-radius(0);
|
||||
}
|
||||
@@ -1,17 +0,0 @@
|
||||
.jumbotron {
|
||||
padding: $jumbotron-padding ($jumbotron-padding / 2);
|
||||
margin-bottom: $jumbotron-padding;
|
||||
color: $jumbotron-color;
|
||||
background-color: $jumbotron-bg;
|
||||
@include border-radius($border-radius-lg);
|
||||
|
||||
@include media-breakpoint-up(sm) {
|
||||
padding: ($jumbotron-padding * 2) $jumbotron-padding;
|
||||
}
|
||||
}
|
||||
|
||||
.jumbotron-fluid {
|
||||
padding-right: 0;
|
||||
padding-left: 0;
|
||||
@include border-radius(0);
|
||||
}
|
||||
149
APPL/Consoles/vendor/bootstrap/scss/_list-group.scss
vendored
149
APPL/Consoles/vendor/bootstrap/scss/_list-group.scss
vendored
@@ -1,149 +0,0 @@
|
||||
// Base class
|
||||
//
|
||||
// Easily usable on <ul>, <ol>, or <div>.
|
||||
|
||||
.list-group {
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
|
||||
// No need to set list-style: none; since .list-group-item is block level
|
||||
padding-left: 0; // reset padding because ul and ol
|
||||
margin-bottom: 0;
|
||||
}
|
||||
|
||||
|
||||
// Interactive list items
|
||||
//
|
||||
// Use anchor or button elements instead of `li`s or `div`s to create interactive
|
||||
// list items. Includes an extra `.active` modifier class for selected items.
|
||||
|
||||
.list-group-item-action {
|
||||
width: 100%; // For `<button>`s (anchors become 100% by default though)
|
||||
color: $list-group-action-color;
|
||||
text-align: inherit; // For `<button>`s (anchors inherit)
|
||||
|
||||
// Hover state
|
||||
@include hover-focus {
|
||||
z-index: 1; // Place hover/focus items above their siblings for proper border styling
|
||||
color: $list-group-action-hover-color;
|
||||
text-decoration: none;
|
||||
background-color: $list-group-hover-bg;
|
||||
}
|
||||
|
||||
&:active {
|
||||
color: $list-group-action-active-color;
|
||||
background-color: $list-group-action-active-bg;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
// Individual list items
|
||||
//
|
||||
// Use on `li`s or `div`s within the `.list-group` parent.
|
||||
|
||||
.list-group-item {
|
||||
position: relative;
|
||||
display: block;
|
||||
padding: $list-group-item-padding-y $list-group-item-padding-x;
|
||||
// Place the border on the list items and negative margin up for better styling
|
||||
margin-bottom: -$list-group-border-width;
|
||||
color: $list-group-color;
|
||||
background-color: $list-group-bg;
|
||||
border: $list-group-border-width solid $list-group-border-color;
|
||||
|
||||
&:first-child {
|
||||
@include border-top-radius($list-group-border-radius);
|
||||
}
|
||||
|
||||
&:last-child {
|
||||
margin-bottom: 0;
|
||||
@include border-bottom-radius($list-group-border-radius);
|
||||
}
|
||||
|
||||
&.disabled,
|
||||
&:disabled {
|
||||
color: $list-group-disabled-color;
|
||||
pointer-events: none;
|
||||
background-color: $list-group-disabled-bg;
|
||||
}
|
||||
|
||||
// Include both here for `<a>`s and `<button>`s
|
||||
&.active {
|
||||
z-index: 2; // Place active items above their siblings for proper border styling
|
||||
color: $list-group-active-color;
|
||||
background-color: $list-group-active-bg;
|
||||
border-color: $list-group-active-border-color;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
// Horizontal
|
||||
//
|
||||
// Change the layout of list group items from vertical (default) to horizontal.
|
||||
|
||||
@each $breakpoint in map-keys($grid-breakpoints) {
|
||||
@include media-breakpoint-up($breakpoint) {
|
||||
$infix: breakpoint-infix($breakpoint, $grid-breakpoints);
|
||||
|
||||
.list-group-horizontal#{$infix} {
|
||||
flex-direction: row;
|
||||
|
||||
.list-group-item {
|
||||
margin-right: -$list-group-border-width;
|
||||
margin-bottom: 0;
|
||||
|
||||
&:first-child {
|
||||
@include border-left-radius($list-group-border-radius);
|
||||
@include border-top-right-radius(0);
|
||||
}
|
||||
|
||||
&:last-child {
|
||||
margin-right: 0;
|
||||
@include border-right-radius($list-group-border-radius);
|
||||
@include border-bottom-left-radius(0);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
// Flush list items
|
||||
//
|
||||
// Remove borders and border-radius to keep list group items edge-to-edge. Most
|
||||
// useful within other components (e.g., cards).
|
||||
|
||||
.list-group-flush {
|
||||
.list-group-item {
|
||||
border-right: 0;
|
||||
border-left: 0;
|
||||
@include border-radius(0);
|
||||
|
||||
&:last-child {
|
||||
margin-bottom: -$list-group-border-width;
|
||||
}
|
||||
}
|
||||
|
||||
&:first-child {
|
||||
.list-group-item:first-child {
|
||||
border-top: 0;
|
||||
}
|
||||
}
|
||||
|
||||
&:last-child {
|
||||
.list-group-item:last-child {
|
||||
margin-bottom: 0;
|
||||
border-bottom: 0;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
// Contextual variants
|
||||
//
|
||||
// Add modifier classes to change text and background color on individual items.
|
||||
// Organizationally, this must come after the `:hover` states.
|
||||
|
||||
@each $color, $value in $theme-colors {
|
||||
@include list-group-item-variant($color, theme-color-level($color, -9), theme-color-level($color, 6));
|
||||
}
|
||||
@@ -1,8 +0,0 @@
|
||||
.media {
|
||||
display: flex;
|
||||
align-items: flex-start;
|
||||
}
|
||||
|
||||
.media-body {
|
||||
flex: 1;
|
||||
}
|
||||
47
APPL/Consoles/vendor/bootstrap/scss/_mixins.scss
vendored
47
APPL/Consoles/vendor/bootstrap/scss/_mixins.scss
vendored
@@ -1,47 +0,0 @@
|
||||
// Toggles
|
||||
//
|
||||
// Used in conjunction with global variables to enable certain theme features.
|
||||
|
||||
// Vendor
|
||||
@import "vendor/rfs";
|
||||
|
||||
// Deprecate
|
||||
@import "mixins/deprecate";
|
||||
|
||||
// Utilities
|
||||
@import "mixins/breakpoints";
|
||||
@import "mixins/hover";
|
||||
@import "mixins/image";
|
||||
@import "mixins/badge";
|
||||
@import "mixins/resize";
|
||||
@import "mixins/screen-reader";
|
||||
@import "mixins/size";
|
||||
@import "mixins/reset-text";
|
||||
@import "mixins/text-emphasis";
|
||||
@import "mixins/text-hide";
|
||||
@import "mixins/text-truncate";
|
||||
@import "mixins/visibility";
|
||||
|
||||
// // Components
|
||||
@import "mixins/alert";
|
||||
@import "mixins/buttons";
|
||||
@import "mixins/caret";
|
||||
@import "mixins/pagination";
|
||||
@import "mixins/lists";
|
||||
@import "mixins/list-group";
|
||||
@import "mixins/nav-divider";
|
||||
@import "mixins/forms";
|
||||
@import "mixins/table-row";
|
||||
|
||||
// // Skins
|
||||
@import "mixins/background-variant";
|
||||
@import "mixins/border-radius";
|
||||
@import "mixins/box-shadow";
|
||||
@import "mixins/gradients";
|
||||
@import "mixins/transition";
|
||||
|
||||
// // Layout
|
||||
@import "mixins/clearfix";
|
||||
@import "mixins/grid-framework";
|
||||
@import "mixins/grid";
|
||||
@import "mixins/float";
|
||||
229
APPL/Consoles/vendor/bootstrap/scss/_modal.scss
vendored
229
APPL/Consoles/vendor/bootstrap/scss/_modal.scss
vendored
@@ -1,229 +0,0 @@
|
||||
// .modal-open - body class for killing the scroll
|
||||
// .modal - container to scroll within
|
||||
// .modal-dialog - positioning shell for the actual modal
|
||||
// .modal-content - actual modal w/ bg and corners and stuff
|
||||
|
||||
|
||||
.modal-open {
|
||||
// Kill the scroll on the body
|
||||
overflow: hidden;
|
||||
|
||||
.modal {
|
||||
overflow-x: hidden;
|
||||
overflow-y: auto;
|
||||
}
|
||||
}
|
||||
|
||||
// Container that the modal scrolls within
|
||||
.modal {
|
||||
position: fixed;
|
||||
top: 0;
|
||||
left: 0;
|
||||
z-index: $zindex-modal;
|
||||
display: none;
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
overflow: hidden;
|
||||
// Prevent Chrome on Windows from adding a focus outline. For details, see
|
||||
// https://github.com/twbs/bootstrap/pull/10951.
|
||||
outline: 0;
|
||||
// We deliberately don't use `-webkit-overflow-scrolling: touch;` due to a
|
||||
// gnarly iOS Safari bug: https://bugs.webkit.org/show_bug.cgi?id=158342
|
||||
// See also https://github.com/twbs/bootstrap/issues/17695
|
||||
}
|
||||
|
||||
// Shell div to position the modal with bottom padding
|
||||
.modal-dialog {
|
||||
position: relative;
|
||||
width: auto;
|
||||
margin: $modal-dialog-margin;
|
||||
// allow clicks to pass through for custom click handling to close modal
|
||||
pointer-events: none;
|
||||
|
||||
// When fading in the modal, animate it to slide down
|
||||
.modal.fade & {
|
||||
@include transition($modal-transition);
|
||||
transform: $modal-fade-transform;
|
||||
}
|
||||
.modal.show & {
|
||||
transform: $modal-show-transform;
|
||||
}
|
||||
}
|
||||
|
||||
.modal-dialog-scrollable {
|
||||
display: flex; // IE10/11
|
||||
max-height: calc(100% - #{$modal-dialog-margin * 2});
|
||||
|
||||
.modal-content {
|
||||
max-height: calc(100vh - #{$modal-dialog-margin * 2}); // IE10/11
|
||||
overflow: hidden;
|
||||
}
|
||||
|
||||
.modal-header,
|
||||
.modal-footer {
|
||||
flex-shrink: 0;
|
||||
}
|
||||
|
||||
.modal-body {
|
||||
overflow-y: auto;
|
||||
}
|
||||
}
|
||||
|
||||
.modal-dialog-centered {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
min-height: calc(100% - #{$modal-dialog-margin * 2});
|
||||
|
||||
// Ensure `modal-dialog-centered` extends the full height of the view (IE10/11)
|
||||
&::before {
|
||||
display: block; // IE10
|
||||
height: calc(100vh - #{$modal-dialog-margin * 2});
|
||||
content: "";
|
||||
}
|
||||
|
||||
// Ensure `.modal-body` shows scrollbar (IE10/11)
|
||||
&.modal-dialog-scrollable {
|
||||
flex-direction: column;
|
||||
justify-content: center;
|
||||
height: 100%;
|
||||
|
||||
.modal-content {
|
||||
max-height: none;
|
||||
}
|
||||
|
||||
&::before {
|
||||
content: none;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Actual modal
|
||||
.modal-content {
|
||||
position: relative;
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
width: 100%; // Ensure `.modal-content` extends the full width of the parent `.modal-dialog`
|
||||
// counteract the pointer-events: none; in the .modal-dialog
|
||||
color: $modal-content-color;
|
||||
pointer-events: auto;
|
||||
background-color: $modal-content-bg;
|
||||
background-clip: padding-box;
|
||||
border: $modal-content-border-width solid $modal-content-border-color;
|
||||
@include border-radius($modal-content-border-radius);
|
||||
@include box-shadow($modal-content-box-shadow-xs);
|
||||
// Remove focus outline from opened modal
|
||||
outline: 0;
|
||||
}
|
||||
|
||||
// Modal background
|
||||
.modal-backdrop {
|
||||
position: fixed;
|
||||
top: 0;
|
||||
left: 0;
|
||||
z-index: $zindex-modal-backdrop;
|
||||
width: 100vw;
|
||||
height: 100vh;
|
||||
background-color: $modal-backdrop-bg;
|
||||
|
||||
// Fade for backdrop
|
||||
&.fade { opacity: 0; }
|
||||
&.show { opacity: $modal-backdrop-opacity; }
|
||||
}
|
||||
|
||||
// Modal header
|
||||
// Top section of the modal w/ title and dismiss
|
||||
.modal-header {
|
||||
display: flex;
|
||||
align-items: flex-start; // so the close btn always stays on the upper right corner
|
||||
justify-content: space-between; // Put modal header elements (title and dismiss) on opposite ends
|
||||
padding: $modal-header-padding;
|
||||
border-bottom: $modal-header-border-width solid $modal-header-border-color;
|
||||
@include border-top-radius($modal-content-border-radius);
|
||||
|
||||
.close {
|
||||
padding: $modal-header-padding;
|
||||
// auto on the left force icon to the right even when there is no .modal-title
|
||||
margin: (-$modal-header-padding-y) (-$modal-header-padding-x) (-$modal-header-padding-y) auto;
|
||||
}
|
||||
}
|
||||
|
||||
// Title text within header
|
||||
.modal-title {
|
||||
margin-bottom: 0;
|
||||
line-height: $modal-title-line-height;
|
||||
}
|
||||
|
||||
// Modal body
|
||||
// Where all modal content resides (sibling of .modal-header and .modal-footer)
|
||||
.modal-body {
|
||||
position: relative;
|
||||
// Enable `flex-grow: 1` so that the body take up as much space as possible
|
||||
// when should there be a fixed height on `.modal-dialog`.
|
||||
flex: 1 1 auto;
|
||||
padding: $modal-inner-padding;
|
||||
}
|
||||
|
||||
// Footer (for actions)
|
||||
.modal-footer {
|
||||
display: flex;
|
||||
align-items: center; // vertically center
|
||||
justify-content: flex-end; // Right align buttons with flex property because text-align doesn't work on flex items
|
||||
padding: $modal-inner-padding;
|
||||
border-top: $modal-footer-border-width solid $modal-footer-border-color;
|
||||
@include border-bottom-radius($modal-content-border-radius);
|
||||
|
||||
// Easily place margin between footer elements
|
||||
> :not(:first-child) { margin-left: .25rem; }
|
||||
> :not(:last-child) { margin-right: .25rem; }
|
||||
}
|
||||
|
||||
// Measure scrollbar width for padding body during modal show/hide
|
||||
.modal-scrollbar-measure {
|
||||
position: absolute;
|
||||
top: -9999px;
|
||||
width: 50px;
|
||||
height: 50px;
|
||||
overflow: scroll;
|
||||
}
|
||||
|
||||
// Scale up the modal
|
||||
@include media-breakpoint-up(sm) {
|
||||
// Automatically set modal's width for larger viewports
|
||||
.modal-dialog {
|
||||
max-width: $modal-md;
|
||||
margin: $modal-dialog-margin-y-sm-up auto;
|
||||
}
|
||||
|
||||
.modal-dialog-scrollable {
|
||||
max-height: calc(100% - #{$modal-dialog-margin-y-sm-up * 2});
|
||||
|
||||
.modal-content {
|
||||
max-height: calc(100vh - #{$modal-dialog-margin-y-sm-up * 2});
|
||||
}
|
||||
}
|
||||
|
||||
.modal-dialog-centered {
|
||||
min-height: calc(100% - #{$modal-dialog-margin-y-sm-up * 2});
|
||||
|
||||
&::before {
|
||||
height: calc(100vh - #{$modal-dialog-margin-y-sm-up * 2});
|
||||
}
|
||||
}
|
||||
|
||||
.modal-content {
|
||||
@include box-shadow($modal-content-box-shadow-sm-up);
|
||||
}
|
||||
|
||||
.modal-sm { max-width: $modal-sm; }
|
||||
}
|
||||
|
||||
@include media-breakpoint-up(lg) {
|
||||
.modal-lg,
|
||||
.modal-xl {
|
||||
max-width: $modal-lg;
|
||||
}
|
||||
}
|
||||
|
||||
@include media-breakpoint-up(xl) {
|
||||
.modal-xl { max-width: $modal-xl; }
|
||||
}
|
||||
120
APPL/Consoles/vendor/bootstrap/scss/_nav.scss
vendored
120
APPL/Consoles/vendor/bootstrap/scss/_nav.scss
vendored
@@ -1,120 +0,0 @@
|
||||
// Base class
|
||||
//
|
||||
// Kickstart any navigation component with a set of style resets. Works with
|
||||
// `<nav>`s or `<ul>`s.
|
||||
|
||||
.nav {
|
||||
display: flex;
|
||||
flex-wrap: wrap;
|
||||
padding-left: 0;
|
||||
margin-bottom: 0;
|
||||
list-style: none;
|
||||
}
|
||||
|
||||
.nav-link {
|
||||
display: block;
|
||||
padding: $nav-link-padding-y $nav-link-padding-x;
|
||||
|
||||
@include hover-focus {
|
||||
text-decoration: none;
|
||||
}
|
||||
|
||||
// Disabled state lightens text
|
||||
&.disabled {
|
||||
color: $nav-link-disabled-color;
|
||||
pointer-events: none;
|
||||
cursor: default;
|
||||
}
|
||||
}
|
||||
|
||||
//
|
||||
// Tabs
|
||||
//
|
||||
|
||||
.nav-tabs {
|
||||
border-bottom: $nav-tabs-border-width solid $nav-tabs-border-color;
|
||||
|
||||
.nav-item {
|
||||
margin-bottom: -$nav-tabs-border-width;
|
||||
}
|
||||
|
||||
.nav-link {
|
||||
border: $nav-tabs-border-width solid transparent;
|
||||
@include border-top-radius($nav-tabs-border-radius);
|
||||
|
||||
@include hover-focus {
|
||||
border-color: $nav-tabs-link-hover-border-color;
|
||||
}
|
||||
|
||||
&.disabled {
|
||||
color: $nav-link-disabled-color;
|
||||
background-color: transparent;
|
||||
border-color: transparent;
|
||||
}
|
||||
}
|
||||
|
||||
.nav-link.active,
|
||||
.nav-item.show .nav-link {
|
||||
color: $nav-tabs-link-active-color;
|
||||
background-color: $nav-tabs-link-active-bg;
|
||||
border-color: $nav-tabs-link-active-border-color;
|
||||
}
|
||||
|
||||
.dropdown-menu {
|
||||
// Make dropdown border overlap tab border
|
||||
margin-top: -$nav-tabs-border-width;
|
||||
// Remove the top rounded corners here since there is a hard edge above the menu
|
||||
@include border-top-radius(0);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
//
|
||||
// Pills
|
||||
//
|
||||
|
||||
.nav-pills {
|
||||
.nav-link {
|
||||
@include border-radius($nav-pills-border-radius);
|
||||
}
|
||||
|
||||
.nav-link.active,
|
||||
.show > .nav-link {
|
||||
color: $nav-pills-link-active-color;
|
||||
background-color: $nav-pills-link-active-bg;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
//
|
||||
// Justified variants
|
||||
//
|
||||
|
||||
.nav-fill {
|
||||
.nav-item {
|
||||
flex: 1 1 auto;
|
||||
text-align: center;
|
||||
}
|
||||
}
|
||||
|
||||
.nav-justified {
|
||||
.nav-item {
|
||||
flex-basis: 0;
|
||||
flex-grow: 1;
|
||||
text-align: center;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
// Tabbable tabs
|
||||
//
|
||||
// Hide tabbable panes to start, show them when `.active`
|
||||
|
||||
.tab-content {
|
||||
> .tab-pane {
|
||||
display: none;
|
||||
}
|
||||
> .active {
|
||||
display: block;
|
||||
}
|
||||
}
|
||||
294
APPL/Consoles/vendor/bootstrap/scss/_navbar.scss
vendored
294
APPL/Consoles/vendor/bootstrap/scss/_navbar.scss
vendored
@@ -1,294 +0,0 @@
|
||||
// Contents
|
||||
//
|
||||
// Navbar
|
||||
// Navbar brand
|
||||
// Navbar nav
|
||||
// Navbar text
|
||||
// Navbar divider
|
||||
// Responsive navbar
|
||||
// Navbar position
|
||||
// Navbar themes
|
||||
|
||||
|
||||
// Navbar
|
||||
//
|
||||
// Provide a static navbar from which we expand to create full-width, fixed, and
|
||||
// other navbar variations.
|
||||
|
||||
.navbar {
|
||||
position: relative;
|
||||
display: flex;
|
||||
flex-wrap: wrap; // allow us to do the line break for collapsing content
|
||||
align-items: center;
|
||||
justify-content: space-between; // space out brand from logo
|
||||
padding: $navbar-padding-y $navbar-padding-x;
|
||||
|
||||
// Because flex properties aren't inherited, we need to redeclare these first
|
||||
// few properties so that content nested within behave properly.
|
||||
> .container,
|
||||
> .container-fluid {
|
||||
display: flex;
|
||||
flex-wrap: wrap;
|
||||
align-items: center;
|
||||
justify-content: space-between;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
// Navbar brand
|
||||
//
|
||||
// Used for brand, project, or site names.
|
||||
|
||||
.navbar-brand {
|
||||
display: inline-block;
|
||||
padding-top: $navbar-brand-padding-y;
|
||||
padding-bottom: $navbar-brand-padding-y;
|
||||
margin-right: $navbar-padding-x;
|
||||
@include font-size($navbar-brand-font-size);
|
||||
line-height: inherit;
|
||||
white-space: nowrap;
|
||||
|
||||
@include hover-focus {
|
||||
text-decoration: none;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
// Navbar nav
|
||||
//
|
||||
// Custom navbar navigation (doesn't require `.nav`, but does make use of `.nav-link`).
|
||||
|
||||
.navbar-nav {
|
||||
display: flex;
|
||||
flex-direction: column; // cannot use `inherit` to get the `.navbar`s value
|
||||
padding-left: 0;
|
||||
margin-bottom: 0;
|
||||
list-style: none;
|
||||
|
||||
.nav-link {
|
||||
padding-right: 0;
|
||||
padding-left: 0;
|
||||
}
|
||||
|
||||
.dropdown-menu {
|
||||
position: static;
|
||||
float: none;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
// Navbar text
|
||||
//
|
||||
//
|
||||
|
||||
.navbar-text {
|
||||
display: inline-block;
|
||||
padding-top: $nav-link-padding-y;
|
||||
padding-bottom: $nav-link-padding-y;
|
||||
}
|
||||
|
||||
|
||||
// Responsive navbar
|
||||
//
|
||||
// Custom styles for responsive collapsing and toggling of navbar contents.
|
||||
// Powered by the collapse Bootstrap JavaScript plugin.
|
||||
|
||||
// When collapsed, prevent the toggleable navbar contents from appearing in
|
||||
// the default flexbox row orientation. Requires the use of `flex-wrap: wrap`
|
||||
// on the `.navbar` parent.
|
||||
.navbar-collapse {
|
||||
flex-basis: 100%;
|
||||
flex-grow: 1;
|
||||
// For always expanded or extra full navbars, ensure content aligns itself
|
||||
// properly vertically. Can be easily overridden with flex utilities.
|
||||
align-items: center;
|
||||
}
|
||||
|
||||
// Button for toggling the navbar when in its collapsed state
|
||||
.navbar-toggler {
|
||||
padding: $navbar-toggler-padding-y $navbar-toggler-padding-x;
|
||||
@include font-size($navbar-toggler-font-size);
|
||||
line-height: 1;
|
||||
background-color: transparent; // remove default button style
|
||||
border: $border-width solid transparent; // remove default button style
|
||||
@include border-radius($navbar-toggler-border-radius);
|
||||
|
||||
@include hover-focus {
|
||||
text-decoration: none;
|
||||
}
|
||||
}
|
||||
|
||||
// Keep as a separate element so folks can easily override it with another icon
|
||||
// or image file as needed.
|
||||
.navbar-toggler-icon {
|
||||
display: inline-block;
|
||||
width: 1.5em;
|
||||
height: 1.5em;
|
||||
vertical-align: middle;
|
||||
content: "";
|
||||
background: no-repeat center center;
|
||||
background-size: 100% 100%;
|
||||
}
|
||||
|
||||
// Generate series of `.navbar-expand-*` responsive classes for configuring
|
||||
// where your navbar collapses.
|
||||
.navbar-expand {
|
||||
@each $breakpoint in map-keys($grid-breakpoints) {
|
||||
$next: breakpoint-next($breakpoint, $grid-breakpoints);
|
||||
$infix: breakpoint-infix($next, $grid-breakpoints);
|
||||
|
||||
&#{$infix} {
|
||||
@include media-breakpoint-down($breakpoint) {
|
||||
> .container,
|
||||
> .container-fluid {
|
||||
padding-right: 0;
|
||||
padding-left: 0;
|
||||
}
|
||||
}
|
||||
|
||||
@include media-breakpoint-up($next) {
|
||||
flex-flow: row nowrap;
|
||||
justify-content: flex-start;
|
||||
|
||||
.navbar-nav {
|
||||
flex-direction: row;
|
||||
|
||||
.dropdown-menu {
|
||||
position: absolute;
|
||||
}
|
||||
|
||||
.nav-link {
|
||||
padding-right: $navbar-nav-link-padding-x;
|
||||
padding-left: $navbar-nav-link-padding-x;
|
||||
}
|
||||
}
|
||||
|
||||
// For nesting containers, have to redeclare for alignment purposes
|
||||
> .container,
|
||||
> .container-fluid {
|
||||
flex-wrap: nowrap;
|
||||
}
|
||||
|
||||
.navbar-collapse {
|
||||
display: flex !important; // stylelint-disable-line declaration-no-important
|
||||
|
||||
// Changes flex-bases to auto because of an IE10 bug
|
||||
flex-basis: auto;
|
||||
}
|
||||
|
||||
.navbar-toggler {
|
||||
display: none;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
// Navbar themes
|
||||
//
|
||||
// Styles for switching between navbars with light or dark background.
|
||||
|
||||
// Dark links against a light background
|
||||
.navbar-light {
|
||||
.navbar-brand {
|
||||
color: $navbar-light-brand-color;
|
||||
|
||||
@include hover-focus {
|
||||
color: $navbar-light-brand-hover-color;
|
||||
}
|
||||
}
|
||||
|
||||
.navbar-nav {
|
||||
.nav-link {
|
||||
color: $navbar-light-color;
|
||||
|
||||
@include hover-focus {
|
||||
color: $navbar-light-hover-color;
|
||||
}
|
||||
|
||||
&.disabled {
|
||||
color: $navbar-light-disabled-color;
|
||||
}
|
||||
}
|
||||
|
||||
.show > .nav-link,
|
||||
.active > .nav-link,
|
||||
.nav-link.show,
|
||||
.nav-link.active {
|
||||
color: $navbar-light-active-color;
|
||||
}
|
||||
}
|
||||
|
||||
.navbar-toggler {
|
||||
color: $navbar-light-color;
|
||||
border-color: $navbar-light-toggler-border-color;
|
||||
}
|
||||
|
||||
.navbar-toggler-icon {
|
||||
background-image: $navbar-light-toggler-icon-bg;
|
||||
}
|
||||
|
||||
.navbar-text {
|
||||
color: $navbar-light-color;
|
||||
a {
|
||||
color: $navbar-light-active-color;
|
||||
|
||||
@include hover-focus {
|
||||
color: $navbar-light-active-color;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// White links against a dark background
|
||||
.navbar-dark {
|
||||
.navbar-brand {
|
||||
color: $navbar-dark-brand-color;
|
||||
|
||||
@include hover-focus {
|
||||
color: $navbar-dark-brand-hover-color;
|
||||
}
|
||||
}
|
||||
|
||||
.navbar-nav {
|
||||
.nav-link {
|
||||
color: $navbar-dark-color;
|
||||
|
||||
@include hover-focus {
|
||||
color: $navbar-dark-hover-color;
|
||||
}
|
||||
|
||||
&.disabled {
|
||||
color: $navbar-dark-disabled-color;
|
||||
}
|
||||
}
|
||||
|
||||
.show > .nav-link,
|
||||
.active > .nav-link,
|
||||
.nav-link.show,
|
||||
.nav-link.active {
|
||||
color: $navbar-dark-active-color;
|
||||
}
|
||||
}
|
||||
|
||||
.navbar-toggler {
|
||||
color: $navbar-dark-color;
|
||||
border-color: $navbar-dark-toggler-border-color;
|
||||
}
|
||||
|
||||
.navbar-toggler-icon {
|
||||
background-image: $navbar-dark-toggler-icon-bg;
|
||||
}
|
||||
|
||||
.navbar-text {
|
||||
color: $navbar-dark-color;
|
||||
a {
|
||||
color: $navbar-dark-active-color;
|
||||
|
||||
@include hover-focus {
|
||||
color: $navbar-dark-active-color;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,73 +0,0 @@
|
||||
.pagination {
|
||||
display: flex;
|
||||
@include list-unstyled();
|
||||
@include border-radius();
|
||||
}
|
||||
|
||||
.page-link {
|
||||
position: relative;
|
||||
display: block;
|
||||
padding: $pagination-padding-y $pagination-padding-x;
|
||||
margin-left: -$pagination-border-width;
|
||||
line-height: $pagination-line-height;
|
||||
color: $pagination-color;
|
||||
background-color: $pagination-bg;
|
||||
border: $pagination-border-width solid $pagination-border-color;
|
||||
|
||||
&:hover {
|
||||
z-index: 2;
|
||||
color: $pagination-hover-color;
|
||||
text-decoration: none;
|
||||
background-color: $pagination-hover-bg;
|
||||
border-color: $pagination-hover-border-color;
|
||||
}
|
||||
|
||||
&:focus {
|
||||
z-index: 2;
|
||||
outline: $pagination-focus-outline;
|
||||
box-shadow: $pagination-focus-box-shadow;
|
||||
}
|
||||
}
|
||||
|
||||
.page-item {
|
||||
&:first-child {
|
||||
.page-link {
|
||||
margin-left: 0;
|
||||
@include border-left-radius($border-radius);
|
||||
}
|
||||
}
|
||||
&:last-child {
|
||||
.page-link {
|
||||
@include border-right-radius($border-radius);
|
||||
}
|
||||
}
|
||||
|
||||
&.active .page-link {
|
||||
z-index: 1;
|
||||
color: $pagination-active-color;
|
||||
background-color: $pagination-active-bg;
|
||||
border-color: $pagination-active-border-color;
|
||||
}
|
||||
|
||||
&.disabled .page-link {
|
||||
color: $pagination-disabled-color;
|
||||
pointer-events: none;
|
||||
// Opinionated: remove the "hand" cursor set previously for .page-link
|
||||
cursor: auto;
|
||||
background-color: $pagination-disabled-bg;
|
||||
border-color: $pagination-disabled-border-color;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
//
|
||||
// Sizing
|
||||
//
|
||||
|
||||
.pagination-lg {
|
||||
@include pagination-size($pagination-padding-y-lg, $pagination-padding-x-lg, $font-size-lg, $line-height-lg, $border-radius-lg);
|
||||
}
|
||||
|
||||
.pagination-sm {
|
||||
@include pagination-size($pagination-padding-y-sm, $pagination-padding-x-sm, $font-size-sm, $line-height-sm, $border-radius-sm);
|
||||
}
|
||||
171
APPL/Consoles/vendor/bootstrap/scss/_popover.scss
vendored
171
APPL/Consoles/vendor/bootstrap/scss/_popover.scss
vendored
@@ -1,171 +0,0 @@
|
||||
.popover {
|
||||
position: absolute;
|
||||
top: 0;
|
||||
left: 0;
|
||||
z-index: $zindex-popover;
|
||||
display: block;
|
||||
max-width: $popover-max-width;
|
||||
// Our parent element can be arbitrary since tooltips are by default inserted as a sibling of their target element.
|
||||
// So reset our font and text properties to avoid inheriting weird values.
|
||||
@include reset-text();
|
||||
@include font-size($popover-font-size);
|
||||
// Allow breaking very long words so they don't overflow the popover's bounds
|
||||
word-wrap: break-word;
|
||||
background-color: $popover-bg;
|
||||
background-clip: padding-box;
|
||||
border: $popover-border-width solid $popover-border-color;
|
||||
@include border-radius($popover-border-radius);
|
||||
@include box-shadow($popover-box-shadow);
|
||||
|
||||
.arrow {
|
||||
position: absolute;
|
||||
display: block;
|
||||
width: $popover-arrow-width;
|
||||
height: $popover-arrow-height;
|
||||
margin: 0 $border-radius-lg;
|
||||
|
||||
&::before,
|
||||
&::after {
|
||||
position: absolute;
|
||||
display: block;
|
||||
content: "";
|
||||
border-color: transparent;
|
||||
border-style: solid;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.bs-popover-top {
|
||||
margin-bottom: $popover-arrow-height;
|
||||
|
||||
> .arrow {
|
||||
bottom: calc((#{$popover-arrow-height} + #{$popover-border-width}) * -1);
|
||||
|
||||
&::before {
|
||||
bottom: 0;
|
||||
border-width: $popover-arrow-height ($popover-arrow-width / 2) 0;
|
||||
border-top-color: $popover-arrow-outer-color;
|
||||
}
|
||||
|
||||
&::after {
|
||||
bottom: $popover-border-width;
|
||||
border-width: $popover-arrow-height ($popover-arrow-width / 2) 0;
|
||||
border-top-color: $popover-arrow-color;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.bs-popover-right {
|
||||
margin-left: $popover-arrow-height;
|
||||
|
||||
> .arrow {
|
||||
left: calc((#{$popover-arrow-height} + #{$popover-border-width}) * -1);
|
||||
width: $popover-arrow-height;
|
||||
height: $popover-arrow-width;
|
||||
margin: $border-radius-lg 0; // make sure the arrow does not touch the popover's rounded corners
|
||||
|
||||
&::before {
|
||||
left: 0;
|
||||
border-width: ($popover-arrow-width / 2) $popover-arrow-height ($popover-arrow-width / 2) 0;
|
||||
border-right-color: $popover-arrow-outer-color;
|
||||
}
|
||||
|
||||
&::after {
|
||||
left: $popover-border-width;
|
||||
border-width: ($popover-arrow-width / 2) $popover-arrow-height ($popover-arrow-width / 2) 0;
|
||||
border-right-color: $popover-arrow-color;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.bs-popover-bottom {
|
||||
margin-top: $popover-arrow-height;
|
||||
|
||||
> .arrow {
|
||||
top: calc((#{$popover-arrow-height} + #{$popover-border-width}) * -1);
|
||||
|
||||
&::before {
|
||||
top: 0;
|
||||
border-width: 0 ($popover-arrow-width / 2) $popover-arrow-height ($popover-arrow-width / 2);
|
||||
border-bottom-color: $popover-arrow-outer-color;
|
||||
}
|
||||
|
||||
&::after {
|
||||
top: $popover-border-width;
|
||||
border-width: 0 ($popover-arrow-width / 2) $popover-arrow-height ($popover-arrow-width / 2);
|
||||
border-bottom-color: $popover-arrow-color;
|
||||
}
|
||||
}
|
||||
|
||||
// This will remove the popover-header's border just below the arrow
|
||||
.popover-header::before {
|
||||
position: absolute;
|
||||
top: 0;
|
||||
left: 50%;
|
||||
display: block;
|
||||
width: $popover-arrow-width;
|
||||
margin-left: -$popover-arrow-width / 2;
|
||||
content: "";
|
||||
border-bottom: $popover-border-width solid $popover-header-bg;
|
||||
}
|
||||
}
|
||||
|
||||
.bs-popover-left {
|
||||
margin-right: $popover-arrow-height;
|
||||
|
||||
> .arrow {
|
||||
right: calc((#{$popover-arrow-height} + #{$popover-border-width}) * -1);
|
||||
width: $popover-arrow-height;
|
||||
height: $popover-arrow-width;
|
||||
margin: $border-radius-lg 0; // make sure the arrow does not touch the popover's rounded corners
|
||||
|
||||
&::before {
|
||||
right: 0;
|
||||
border-width: ($popover-arrow-width / 2) 0 ($popover-arrow-width / 2) $popover-arrow-height;
|
||||
border-left-color: $popover-arrow-outer-color;
|
||||
}
|
||||
|
||||
&::after {
|
||||
right: $popover-border-width;
|
||||
border-width: ($popover-arrow-width / 2) 0 ($popover-arrow-width / 2) $popover-arrow-height;
|
||||
border-left-color: $popover-arrow-color;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.bs-popover-auto {
|
||||
&[x-placement^="top"] {
|
||||
@extend .bs-popover-top;
|
||||
}
|
||||
&[x-placement^="right"] {
|
||||
@extend .bs-popover-right;
|
||||
}
|
||||
&[x-placement^="bottom"] {
|
||||
@extend .bs-popover-bottom;
|
||||
}
|
||||
&[x-placement^="left"] {
|
||||
@extend .bs-popover-left;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
// Offset the popover to account for the popover arrow
|
||||
.popover-header {
|
||||
padding: $popover-header-padding-y $popover-header-padding-x;
|
||||
margin-bottom: 0; // Reset the default from Reboot
|
||||
@include font-size($font-size-base);
|
||||
color: $popover-header-color;
|
||||
background-color: $popover-header-bg;
|
||||
border-bottom: $popover-border-width solid darken($popover-header-bg, 5%);
|
||||
$offset-border-width: calc(#{$border-radius-lg} - #{$popover-border-width});
|
||||
@include border-top-radius($offset-border-width);
|
||||
|
||||
&:empty {
|
||||
display: none;
|
||||
}
|
||||
}
|
||||
|
||||
.popover-body {
|
||||
padding: $popover-body-padding-y $popover-body-padding-x;
|
||||
color: $popover-body-color;
|
||||
}
|
||||
141
APPL/Consoles/vendor/bootstrap/scss/_print.scss
vendored
141
APPL/Consoles/vendor/bootstrap/scss/_print.scss
vendored
@@ -1,141 +0,0 @@
|
||||
// stylelint-disable declaration-no-important, selector-no-qualifying-type
|
||||
|
||||
// Source: https://github.com/h5bp/html5-boilerplate/blob/master/src/css/main.css
|
||||
|
||||
// ==========================================================================
|
||||
// Print styles.
|
||||
// Inlined to avoid the additional HTTP request:
|
||||
// https://www.phpied.com/delay-loading-your-print-css/
|
||||
// ==========================================================================
|
||||
|
||||
@if $enable-print-styles {
|
||||
@media print {
|
||||
*,
|
||||
*::before,
|
||||
*::after {
|
||||
// Bootstrap specific; comment out `color` and `background`
|
||||
//color: $black !important; // Black prints faster
|
||||
text-shadow: none !important;
|
||||
//background: transparent !important;
|
||||
box-shadow: none !important;
|
||||
}
|
||||
|
||||
a {
|
||||
&:not(.btn) {
|
||||
text-decoration: underline;
|
||||
}
|
||||
}
|
||||
|
||||
// Bootstrap specific; comment the following selector out
|
||||
//a[href]::after {
|
||||
// content: " (" attr(href) ")";
|
||||
//}
|
||||
|
||||
abbr[title]::after {
|
||||
content: " (" attr(title) ")";
|
||||
}
|
||||
|
||||
// Bootstrap specific; comment the following selector out
|
||||
//
|
||||
// Don't show links that are fragment identifiers,
|
||||
// or use the `javascript:` pseudo protocol
|
||||
//
|
||||
|
||||
//a[href^="#"]::after,
|
||||
//a[href^="javascript:"]::after {
|
||||
// content: "";
|
||||
//}
|
||||
|
||||
pre {
|
||||
white-space: pre-wrap !important;
|
||||
}
|
||||
pre,
|
||||
blockquote {
|
||||
border: $border-width solid $gray-500; // Bootstrap custom code; using `$border-width` instead of 1px
|
||||
page-break-inside: avoid;
|
||||
}
|
||||
|
||||
//
|
||||
// Printing Tables:
|
||||
// http://css-discuss.incutio.com/wiki/Printing_Tables
|
||||
//
|
||||
|
||||
thead {
|
||||
display: table-header-group;
|
||||
}
|
||||
|
||||
tr,
|
||||
img {
|
||||
page-break-inside: avoid;
|
||||
}
|
||||
|
||||
p,
|
||||
h2,
|
||||
h3 {
|
||||
orphans: 3;
|
||||
widows: 3;
|
||||
}
|
||||
|
||||
h2,
|
||||
h3 {
|
||||
page-break-after: avoid;
|
||||
}
|
||||
|
||||
// Bootstrap specific changes start
|
||||
|
||||
// Specify a size and min-width to make printing closer across browsers.
|
||||
// We don't set margin here because it breaks `size` in Chrome. We also
|
||||
// don't use `!important` on `size` as it breaks in Chrome.
|
||||
@page {
|
||||
size: $print-page-size;
|
||||
}
|
||||
body {
|
||||
min-width: $print-body-min-width !important;
|
||||
}
|
||||
.container {
|
||||
min-width: $print-body-min-width !important;
|
||||
}
|
||||
|
||||
// Bootstrap components
|
||||
.navbar {
|
||||
display: none;
|
||||
}
|
||||
.badge {
|
||||
border: $border-width solid $black;
|
||||
}
|
||||
|
||||
.table {
|
||||
border-collapse: collapse !important;
|
||||
|
||||
td,
|
||||
th {
|
||||
background-color: $white !important;
|
||||
}
|
||||
}
|
||||
|
||||
.table-bordered {
|
||||
th,
|
||||
td {
|
||||
border: 1px solid $gray-300 !important;
|
||||
}
|
||||
}
|
||||
|
||||
.table-dark {
|
||||
color: inherit;
|
||||
|
||||
th,
|
||||
td,
|
||||
thead th,
|
||||
tbody + tbody {
|
||||
border-color: $table-border-color;
|
||||
}
|
||||
}
|
||||
|
||||
.table .thead-dark th {
|
||||
color: inherit;
|
||||
border-color: $table-border-color;
|
||||
}
|
||||
|
||||
// Bootstrap specific changes end
|
||||
}
|
||||
}
|
||||
@@ -1,43 +0,0 @@
|
||||
// Disable animation if transitions are disabled
|
||||
@if $enable-transitions {
|
||||
@keyframes progress-bar-stripes {
|
||||
from { background-position: $progress-height 0; }
|
||||
to { background-position: 0 0; }
|
||||
}
|
||||
}
|
||||
|
||||
.progress {
|
||||
display: flex;
|
||||
height: $progress-height;
|
||||
overflow: hidden; // force rounded corners by cropping it
|
||||
@include font-size($progress-font-size);
|
||||
background-color: $progress-bg;
|
||||
@include border-radius($progress-border-radius);
|
||||
@include box-shadow($progress-box-shadow);
|
||||
}
|
||||
|
||||
.progress-bar {
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
justify-content: center;
|
||||
color: $progress-bar-color;
|
||||
text-align: center;
|
||||
white-space: nowrap;
|
||||
background-color: $progress-bar-bg;
|
||||
@include transition($progress-bar-transition);
|
||||
}
|
||||
|
||||
.progress-bar-striped {
|
||||
@include gradient-striped();
|
||||
background-size: $progress-height $progress-height;
|
||||
}
|
||||
|
||||
@if $enable-transitions {
|
||||
.progress-bar-animated {
|
||||
animation: progress-bar-stripes $progress-bar-animation-timing;
|
||||
|
||||
@media (prefers-reduced-motion: reduce) {
|
||||
animation: none;
|
||||
}
|
||||
}
|
||||
}
|
||||
483
APPL/Consoles/vendor/bootstrap/scss/_reboot.scss
vendored
483
APPL/Consoles/vendor/bootstrap/scss/_reboot.scss
vendored
@@ -1,483 +0,0 @@
|
||||
// stylelint-disable at-rule-no-vendor-prefix, declaration-no-important, selector-no-qualifying-type, property-no-vendor-prefix
|
||||
|
||||
// Reboot
|
||||
//
|
||||
// Normalization of HTML elements, manually forked from Normalize.css to remove
|
||||
// styles targeting irrelevant browsers while applying new styles.
|
||||
//
|
||||
// Normalize is licensed MIT. https://github.com/necolas/normalize.css
|
||||
|
||||
|
||||
// Document
|
||||
//
|
||||
// 1. Change from `box-sizing: content-box` so that `width` is not affected by `padding` or `border`.
|
||||
// 2. Change the default font family in all browsers.
|
||||
// 3. Correct the line height in all browsers.
|
||||
// 4. Prevent adjustments of font size after orientation changes in IE on Windows Phone and in iOS.
|
||||
// 5. Change the default tap highlight to be completely transparent in iOS.
|
||||
|
||||
*,
|
||||
*::before,
|
||||
*::after {
|
||||
box-sizing: border-box; // 1
|
||||
}
|
||||
|
||||
html {
|
||||
font-family: sans-serif; // 2
|
||||
line-height: 1.15; // 3
|
||||
-webkit-text-size-adjust: 100%; // 4
|
||||
-webkit-tap-highlight-color: rgba($black, 0); // 5
|
||||
}
|
||||
|
||||
// Shim for "new" HTML5 structural elements to display correctly (IE10, older browsers)
|
||||
// TODO: remove in v5
|
||||
// stylelint-disable-next-line selector-list-comma-newline-after
|
||||
article, aside, figcaption, figure, footer, header, hgroup, main, nav, section {
|
||||
display: block;
|
||||
}
|
||||
|
||||
// Body
|
||||
//
|
||||
// 1. Remove the margin in all browsers.
|
||||
// 2. As a best practice, apply a default `background-color`.
|
||||
// 3. Set an explicit initial text-align value so that we can later use
|
||||
// the `inherit` value on things like `<th>` elements.
|
||||
|
||||
body {
|
||||
margin: 0; // 1
|
||||
font-family: $font-family-base;
|
||||
@include font-size($font-size-base);
|
||||
font-weight: $font-weight-base;
|
||||
line-height: $line-height-base;
|
||||
color: $body-color;
|
||||
text-align: left; // 3
|
||||
background-color: $body-bg; // 2
|
||||
}
|
||||
|
||||
// Suppress the focus outline on elements that cannot be accessed via keyboard.
|
||||
// This prevents an unwanted focus outline from appearing around elements that
|
||||
// might still respond to pointer events.
|
||||
//
|
||||
// Credit: https://github.com/suitcss/base
|
||||
[tabindex="-1"]:focus {
|
||||
outline: 0 !important;
|
||||
}
|
||||
|
||||
|
||||
// Content grouping
|
||||
//
|
||||
// 1. Add the correct box sizing in Firefox.
|
||||
// 2. Show the overflow in Edge and IE.
|
||||
|
||||
hr {
|
||||
box-sizing: content-box; // 1
|
||||
height: 0; // 1
|
||||
overflow: visible; // 2
|
||||
}
|
||||
|
||||
|
||||
//
|
||||
// Typography
|
||||
//
|
||||
|
||||
// Remove top margins from headings
|
||||
//
|
||||
// By default, `<h1>`-`<h6>` all receive top and bottom margins. We nuke the top
|
||||
// margin for easier control within type scales as it avoids margin collapsing.
|
||||
// stylelint-disable-next-line selector-list-comma-newline-after
|
||||
h1, h2, h3, h4, h5, h6 {
|
||||
margin-top: 0;
|
||||
margin-bottom: $headings-margin-bottom;
|
||||
}
|
||||
|
||||
// Reset margins on paragraphs
|
||||
//
|
||||
// Similarly, the top margin on `<p>`s get reset. However, we also reset the
|
||||
// bottom margin to use `rem` units instead of `em`.
|
||||
p {
|
||||
margin-top: 0;
|
||||
margin-bottom: $paragraph-margin-bottom;
|
||||
}
|
||||
|
||||
// Abbreviations
|
||||
//
|
||||
// 1. Duplicate behavior to the data-* attribute for our tooltip plugin
|
||||
// 2. Add the correct text decoration in Chrome, Edge, IE, Opera, and Safari.
|
||||
// 3. Add explicit cursor to indicate changed behavior.
|
||||
// 4. Remove the bottom border in Firefox 39-.
|
||||
// 5. Prevent the text-decoration to be skipped.
|
||||
|
||||
abbr[title],
|
||||
abbr[data-original-title] { // 1
|
||||
text-decoration: underline; // 2
|
||||
text-decoration: underline dotted; // 2
|
||||
cursor: help; // 3
|
||||
border-bottom: 0; // 4
|
||||
text-decoration-skip-ink: none; // 5
|
||||
}
|
||||
|
||||
address {
|
||||
margin-bottom: 1rem;
|
||||
font-style: normal;
|
||||
line-height: inherit;
|
||||
}
|
||||
|
||||
ol,
|
||||
ul,
|
||||
dl {
|
||||
margin-top: 0;
|
||||
margin-bottom: 1rem;
|
||||
}
|
||||
|
||||
ol ol,
|
||||
ul ul,
|
||||
ol ul,
|
||||
ul ol {
|
||||
margin-bottom: 0;
|
||||
}
|
||||
|
||||
dt {
|
||||
font-weight: $dt-font-weight;
|
||||
}
|
||||
|
||||
dd {
|
||||
margin-bottom: .5rem;
|
||||
margin-left: 0; // Undo browser default
|
||||
}
|
||||
|
||||
blockquote {
|
||||
margin: 0 0 1rem;
|
||||
}
|
||||
|
||||
b,
|
||||
strong {
|
||||
font-weight: $font-weight-bolder; // Add the correct font weight in Chrome, Edge, and Safari
|
||||
}
|
||||
|
||||
small {
|
||||
@include font-size(80%); // Add the correct font size in all browsers
|
||||
}
|
||||
|
||||
//
|
||||
// Prevent `sub` and `sup` elements from affecting the line height in
|
||||
// all browsers.
|
||||
//
|
||||
|
||||
sub,
|
||||
sup {
|
||||
position: relative;
|
||||
@include font-size(75%);
|
||||
line-height: 0;
|
||||
vertical-align: baseline;
|
||||
}
|
||||
|
||||
sub { bottom: -.25em; }
|
||||
sup { top: -.5em; }
|
||||
|
||||
|
||||
//
|
||||
// Links
|
||||
//
|
||||
|
||||
a {
|
||||
color: $link-color;
|
||||
text-decoration: $link-decoration;
|
||||
background-color: transparent; // Remove the gray background on active links in IE 10.
|
||||
|
||||
@include hover {
|
||||
color: $link-hover-color;
|
||||
text-decoration: $link-hover-decoration;
|
||||
}
|
||||
}
|
||||
|
||||
// And undo these styles for placeholder links/named anchors (without href)
|
||||
// which have not been made explicitly keyboard-focusable (without tabindex).
|
||||
// It would be more straightforward to just use a[href] in previous block, but that
|
||||
// causes specificity issues in many other styles that are too complex to fix.
|
||||
// See https://github.com/twbs/bootstrap/issues/19402
|
||||
|
||||
a:not([href]):not([tabindex]) {
|
||||
color: inherit;
|
||||
text-decoration: none;
|
||||
|
||||
@include hover-focus {
|
||||
color: inherit;
|
||||
text-decoration: none;
|
||||
}
|
||||
|
||||
&:focus {
|
||||
outline: 0;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
//
|
||||
// Code
|
||||
//
|
||||
|
||||
pre,
|
||||
code,
|
||||
kbd,
|
||||
samp {
|
||||
font-family: $font-family-monospace;
|
||||
@include font-size(1em); // Correct the odd `em` font sizing in all browsers.
|
||||
}
|
||||
|
||||
pre {
|
||||
// Remove browser default top margin
|
||||
margin-top: 0;
|
||||
// Reset browser default of `1em` to use `rem`s
|
||||
margin-bottom: 1rem;
|
||||
// Don't allow content to break outside
|
||||
overflow: auto;
|
||||
}
|
||||
|
||||
|
||||
//
|
||||
// Figures
|
||||
//
|
||||
|
||||
figure {
|
||||
// Apply a consistent margin strategy (matches our type styles).
|
||||
margin: 0 0 1rem;
|
||||
}
|
||||
|
||||
|
||||
//
|
||||
// Images and content
|
||||
//
|
||||
|
||||
img {
|
||||
vertical-align: middle;
|
||||
border-style: none; // Remove the border on images inside links in IE 10-.
|
||||
}
|
||||
|
||||
svg {
|
||||
// Workaround for the SVG overflow bug in IE10/11 is still required.
|
||||
// See https://github.com/twbs/bootstrap/issues/26878
|
||||
overflow: hidden;
|
||||
vertical-align: middle;
|
||||
}
|
||||
|
||||
|
||||
//
|
||||
// Tables
|
||||
//
|
||||
|
||||
table {
|
||||
border-collapse: collapse; // Prevent double borders
|
||||
}
|
||||
|
||||
caption {
|
||||
padding-top: $table-cell-padding;
|
||||
padding-bottom: $table-cell-padding;
|
||||
color: $table-caption-color;
|
||||
text-align: left;
|
||||
caption-side: bottom;
|
||||
}
|
||||
|
||||
th {
|
||||
// Matches default `<td>` alignment by inheriting from the `<body>`, or the
|
||||
// closest parent with a set `text-align`.
|
||||
text-align: inherit;
|
||||
}
|
||||
|
||||
|
||||
//
|
||||
// Forms
|
||||
//
|
||||
|
||||
label {
|
||||
// Allow labels to use `margin` for spacing.
|
||||
display: inline-block;
|
||||
margin-bottom: $label-margin-bottom;
|
||||
}
|
||||
|
||||
// Remove the default `border-radius` that macOS Chrome adds.
|
||||
//
|
||||
// Details at https://github.com/twbs/bootstrap/issues/24093
|
||||
button {
|
||||
// stylelint-disable-next-line property-blacklist
|
||||
border-radius: 0;
|
||||
}
|
||||
|
||||
// Work around a Firefox/IE bug where the transparent `button` background
|
||||
// results in a loss of the default `button` focus styles.
|
||||
//
|
||||
// Credit: https://github.com/suitcss/base/
|
||||
button:focus {
|
||||
outline: 1px dotted;
|
||||
outline: 5px auto -webkit-focus-ring-color;
|
||||
}
|
||||
|
||||
input,
|
||||
button,
|
||||
select,
|
||||
optgroup,
|
||||
textarea {
|
||||
margin: 0; // Remove the margin in Firefox and Safari
|
||||
font-family: inherit;
|
||||
@include font-size(inherit);
|
||||
line-height: inherit;
|
||||
}
|
||||
|
||||
button,
|
||||
input {
|
||||
overflow: visible; // Show the overflow in Edge
|
||||
}
|
||||
|
||||
button,
|
||||
select {
|
||||
text-transform: none; // Remove the inheritance of text transform in Firefox
|
||||
}
|
||||
|
||||
// Remove the inheritance of word-wrap in Safari.
|
||||
//
|
||||
// Details at https://github.com/twbs/bootstrap/issues/24990
|
||||
select {
|
||||
word-wrap: normal;
|
||||
}
|
||||
|
||||
|
||||
// 1. Prevent a WebKit bug where (2) destroys native `audio` and `video`
|
||||
// controls in Android 4.
|
||||
// 2. Correct the inability to style clickable types in iOS and Safari.
|
||||
button,
|
||||
[type="button"], // 1
|
||||
[type="reset"],
|
||||
[type="submit"] {
|
||||
-webkit-appearance: button; // 2
|
||||
}
|
||||
|
||||
// Opinionated: add "hand" cursor to non-disabled button elements.
|
||||
@if $enable-pointer-cursor-for-buttons {
|
||||
button,
|
||||
[type="button"],
|
||||
[type="reset"],
|
||||
[type="submit"] {
|
||||
&:not(:disabled) {
|
||||
cursor: pointer;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Remove inner border and padding from Firefox, but don't restore the outline like Normalize.
|
||||
button::-moz-focus-inner,
|
||||
[type="button"]::-moz-focus-inner,
|
||||
[type="reset"]::-moz-focus-inner,
|
||||
[type="submit"]::-moz-focus-inner {
|
||||
padding: 0;
|
||||
border-style: none;
|
||||
}
|
||||
|
||||
input[type="radio"],
|
||||
input[type="checkbox"] {
|
||||
box-sizing: border-box; // 1. Add the correct box sizing in IE 10-
|
||||
padding: 0; // 2. Remove the padding in IE 10-
|
||||
}
|
||||
|
||||
|
||||
input[type="date"],
|
||||
input[type="time"],
|
||||
input[type="datetime-local"],
|
||||
input[type="month"] {
|
||||
// Remove the default appearance of temporal inputs to avoid a Mobile Safari
|
||||
// bug where setting a custom line-height prevents text from being vertically
|
||||
// centered within the input.
|
||||
// See https://bugs.webkit.org/show_bug.cgi?id=139848
|
||||
// and https://github.com/twbs/bootstrap/issues/11266
|
||||
-webkit-appearance: listbox;
|
||||
}
|
||||
|
||||
textarea {
|
||||
overflow: auto; // Remove the default vertical scrollbar in IE.
|
||||
// Textareas should really only resize vertically so they don't break their (horizontal) containers.
|
||||
resize: vertical;
|
||||
}
|
||||
|
||||
fieldset {
|
||||
// Browsers set a default `min-width: min-content;` on fieldsets,
|
||||
// unlike e.g. `<div>`s, which have `min-width: 0;` by default.
|
||||
// So we reset that to ensure fieldsets behave more like a standard block element.
|
||||
// See https://github.com/twbs/bootstrap/issues/12359
|
||||
// and https://html.spec.whatwg.org/multipage/#the-fieldset-and-legend-elements
|
||||
min-width: 0;
|
||||
// Reset the default outline behavior of fieldsets so they don't affect page layout.
|
||||
padding: 0;
|
||||
margin: 0;
|
||||
border: 0;
|
||||
}
|
||||
|
||||
// 1. Correct the text wrapping in Edge and IE.
|
||||
// 2. Correct the color inheritance from `fieldset` elements in IE.
|
||||
legend {
|
||||
display: block;
|
||||
width: 100%;
|
||||
max-width: 100%; // 1
|
||||
padding: 0;
|
||||
margin-bottom: .5rem;
|
||||
@include font-size(1.5rem);
|
||||
line-height: inherit;
|
||||
color: inherit; // 2
|
||||
white-space: normal; // 1
|
||||
}
|
||||
|
||||
progress {
|
||||
vertical-align: baseline; // Add the correct vertical alignment in Chrome, Firefox, and Opera.
|
||||
}
|
||||
|
||||
// Correct the cursor style of increment and decrement buttons in Chrome.
|
||||
[type="number"]::-webkit-inner-spin-button,
|
||||
[type="number"]::-webkit-outer-spin-button {
|
||||
height: auto;
|
||||
}
|
||||
|
||||
[type="search"] {
|
||||
// This overrides the extra rounded corners on search inputs in iOS so that our
|
||||
// `.form-control` class can properly style them. Note that this cannot simply
|
||||
// be added to `.form-control` as it's not specific enough. For details, see
|
||||
// https://github.com/twbs/bootstrap/issues/11586.
|
||||
outline-offset: -2px; // 2. Correct the outline style in Safari.
|
||||
-webkit-appearance: none;
|
||||
}
|
||||
|
||||
//
|
||||
// Remove the inner padding in Chrome and Safari on macOS.
|
||||
//
|
||||
|
||||
[type="search"]::-webkit-search-decoration {
|
||||
-webkit-appearance: none;
|
||||
}
|
||||
|
||||
//
|
||||
// 1. Correct the inability to style clickable types in iOS and Safari.
|
||||
// 2. Change font properties to `inherit` in Safari.
|
||||
//
|
||||
|
||||
::-webkit-file-upload-button {
|
||||
font: inherit; // 2
|
||||
-webkit-appearance: button; // 1
|
||||
}
|
||||
|
||||
//
|
||||
// Correct element displays
|
||||
//
|
||||
|
||||
output {
|
||||
display: inline-block;
|
||||
}
|
||||
|
||||
summary {
|
||||
display: list-item; // Add the correct display in all browsers
|
||||
cursor: pointer;
|
||||
}
|
||||
|
||||
template {
|
||||
display: none; // Add the correct display in IE
|
||||
}
|
||||
|
||||
// Always hide an element with the `hidden` HTML attribute (from PureCSS).
|
||||
// Needed for proper display in IE 10-.
|
||||
[hidden] {
|
||||
display: none !important;
|
||||
}
|
||||
19
APPL/Consoles/vendor/bootstrap/scss/_root.scss
vendored
19
APPL/Consoles/vendor/bootstrap/scss/_root.scss
vendored
@@ -1,19 +0,0 @@
|
||||
:root {
|
||||
// Custom variable values only support SassScript inside `#{}`.
|
||||
@each $color, $value in $colors {
|
||||
--#{$color}: #{$value};
|
||||
}
|
||||
|
||||
@each $color, $value in $theme-colors {
|
||||
--#{$color}: #{$value};
|
||||
}
|
||||
|
||||
@each $bp, $value in $grid-breakpoints {
|
||||
--breakpoint-#{$bp}: #{$value};
|
||||
}
|
||||
|
||||
// Use `inspect` for lists so that quoted items keep the quotes.
|
||||
// See https://github.com/sass/sass/issues/2383#issuecomment-336349172
|
||||
--font-family-sans-serif: #{inspect($font-family-sans-serif)};
|
||||
--font-family-monospace: #{inspect($font-family-monospace)};
|
||||
}
|
||||
@@ -1,55 +0,0 @@
|
||||
//
|
||||
// Rotating border
|
||||
//
|
||||
|
||||
@keyframes spinner-border {
|
||||
to { transform: rotate(360deg); }
|
||||
}
|
||||
|
||||
.spinner-border {
|
||||
display: inline-block;
|
||||
width: $spinner-width;
|
||||
height: $spinner-height;
|
||||
vertical-align: text-bottom;
|
||||
border: $spinner-border-width solid currentColor;
|
||||
border-right-color: transparent;
|
||||
// stylelint-disable-next-line property-blacklist
|
||||
border-radius: 50%;
|
||||
animation: spinner-border .75s linear infinite;
|
||||
}
|
||||
|
||||
.spinner-border-sm {
|
||||
width: $spinner-width-sm;
|
||||
height: $spinner-height-sm;
|
||||
border-width: $spinner-border-width-sm;
|
||||
}
|
||||
|
||||
//
|
||||
// Growing circle
|
||||
//
|
||||
|
||||
@keyframes spinner-grow {
|
||||
0% {
|
||||
transform: scale(0);
|
||||
}
|
||||
50% {
|
||||
opacity: 1;
|
||||
}
|
||||
}
|
||||
|
||||
.spinner-grow {
|
||||
display: inline-block;
|
||||
width: $spinner-width;
|
||||
height: $spinner-height;
|
||||
vertical-align: text-bottom;
|
||||
background-color: currentColor;
|
||||
// stylelint-disable-next-line property-blacklist
|
||||
border-radius: 50%;
|
||||
opacity: 0;
|
||||
animation: spinner-grow .75s linear infinite;
|
||||
}
|
||||
|
||||
.spinner-grow-sm {
|
||||
width: $spinner-width-sm;
|
||||
height: $spinner-height-sm;
|
||||
}
|
||||
185
APPL/Consoles/vendor/bootstrap/scss/_tables.scss
vendored
185
APPL/Consoles/vendor/bootstrap/scss/_tables.scss
vendored
@@ -1,185 +0,0 @@
|
||||
//
|
||||
// Basic Bootstrap table
|
||||
//
|
||||
|
||||
.table {
|
||||
width: 100%;
|
||||
margin-bottom: $spacer;
|
||||
color: $table-color;
|
||||
background-color: $table-bg; // Reset for nesting within parents with `background-color`.
|
||||
|
||||
th,
|
||||
td {
|
||||
padding: $table-cell-padding;
|
||||
vertical-align: top;
|
||||
border-top: $table-border-width solid $table-border-color;
|
||||
}
|
||||
|
||||
thead th {
|
||||
vertical-align: bottom;
|
||||
border-bottom: (2 * $table-border-width) solid $table-border-color;
|
||||
}
|
||||
|
||||
tbody + tbody {
|
||||
border-top: (2 * $table-border-width) solid $table-border-color;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
//
|
||||
// Condensed table w/ half padding
|
||||
//
|
||||
|
||||
.table-sm {
|
||||
th,
|
||||
td {
|
||||
padding: $table-cell-padding-sm;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
// Border versions
|
||||
//
|
||||
// Add or remove borders all around the table and between all the columns.
|
||||
|
||||
.table-bordered {
|
||||
border: $table-border-width solid $table-border-color;
|
||||
|
||||
th,
|
||||
td {
|
||||
border: $table-border-width solid $table-border-color;
|
||||
}
|
||||
|
||||
thead {
|
||||
th,
|
||||
td {
|
||||
border-bottom-width: 2 * $table-border-width;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.table-borderless {
|
||||
th,
|
||||
td,
|
||||
thead th,
|
||||
tbody + tbody {
|
||||
border: 0;
|
||||
}
|
||||
}
|
||||
|
||||
// Zebra-striping
|
||||
//
|
||||
// Default zebra-stripe styles (alternating gray and transparent backgrounds)
|
||||
|
||||
.table-striped {
|
||||
tbody tr:nth-of-type(#{$table-striped-order}) {
|
||||
background-color: $table-accent-bg;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
// Hover effect
|
||||
//
|
||||
// Placed here since it has to come after the potential zebra striping
|
||||
|
||||
.table-hover {
|
||||
tbody tr {
|
||||
@include hover {
|
||||
color: $table-hover-color;
|
||||
background-color: $table-hover-bg;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
// Table backgrounds
|
||||
//
|
||||
// Exact selectors below required to override `.table-striped` and prevent
|
||||
// inheritance to nested tables.
|
||||
|
||||
@each $color, $value in $theme-colors {
|
||||
@include table-row-variant($color, theme-color-level($color, $table-bg-level), theme-color-level($color, $table-border-level));
|
||||
}
|
||||
|
||||
@include table-row-variant(active, $table-active-bg);
|
||||
|
||||
|
||||
// Dark styles
|
||||
//
|
||||
// Same table markup, but inverted color scheme: dark background and light text.
|
||||
|
||||
// stylelint-disable-next-line no-duplicate-selectors
|
||||
.table {
|
||||
.thead-dark {
|
||||
th {
|
||||
color: $table-dark-color;
|
||||
background-color: $table-dark-bg;
|
||||
border-color: $table-dark-border-color;
|
||||
}
|
||||
}
|
||||
|
||||
.thead-light {
|
||||
th {
|
||||
color: $table-head-color;
|
||||
background-color: $table-head-bg;
|
||||
border-color: $table-border-color;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.table-dark {
|
||||
color: $table-dark-color;
|
||||
background-color: $table-dark-bg;
|
||||
|
||||
th,
|
||||
td,
|
||||
thead th {
|
||||
border-color: $table-dark-border-color;
|
||||
}
|
||||
|
||||
&.table-bordered {
|
||||
border: 0;
|
||||
}
|
||||
|
||||
&.table-striped {
|
||||
tbody tr:nth-of-type(odd) {
|
||||
background-color: $table-dark-accent-bg;
|
||||
}
|
||||
}
|
||||
|
||||
&.table-hover {
|
||||
tbody tr {
|
||||
@include hover {
|
||||
color: $table-dark-hover-color;
|
||||
background-color: $table-dark-hover-bg;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
// Responsive tables
|
||||
//
|
||||
// Generate series of `.table-responsive-*` classes for configuring the screen
|
||||
// size of where your table will overflow.
|
||||
|
||||
.table-responsive {
|
||||
@each $breakpoint in map-keys($grid-breakpoints) {
|
||||
$next: breakpoint-next($breakpoint, $grid-breakpoints);
|
||||
$infix: breakpoint-infix($next, $grid-breakpoints);
|
||||
|
||||
&#{$infix} {
|
||||
@include media-breakpoint-down($breakpoint) {
|
||||
display: block;
|
||||
width: 100%;
|
||||
overflow-x: auto;
|
||||
-webkit-overflow-scrolling: touch;
|
||||
|
||||
// Prevent double border on horizontal scroll due to use of `display: block;`
|
||||
> .table-bordered {
|
||||
border: 0;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
44
APPL/Consoles/vendor/bootstrap/scss/_toasts.scss
vendored
44
APPL/Consoles/vendor/bootstrap/scss/_toasts.scss
vendored
@@ -1,44 +0,0 @@
|
||||
.toast {
|
||||
max-width: $toast-max-width;
|
||||
overflow: hidden; // cheap rounded corners on nested items
|
||||
@include font-size($toast-font-size);
|
||||
color: $toast-color;
|
||||
background-color: $toast-background-color;
|
||||
background-clip: padding-box;
|
||||
border: $toast-border-width solid $toast-border-color;
|
||||
box-shadow: $toast-box-shadow;
|
||||
backdrop-filter: blur(10px);
|
||||
opacity: 0;
|
||||
@include border-radius($toast-border-radius);
|
||||
|
||||
&:not(:last-child) {
|
||||
margin-bottom: $toast-padding-x;
|
||||
}
|
||||
|
||||
&.showing {
|
||||
opacity: 1;
|
||||
}
|
||||
|
||||
&.show {
|
||||
display: block;
|
||||
opacity: 1;
|
||||
}
|
||||
|
||||
&.hide {
|
||||
display: none;
|
||||
}
|
||||
}
|
||||
|
||||
.toast-header {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
padding: $toast-padding-y $toast-padding-x;
|
||||
color: $toast-header-color;
|
||||
background-color: $toast-header-background-color;
|
||||
background-clip: padding-box;
|
||||
border-bottom: $toast-border-width solid $toast-header-border-color;
|
||||
}
|
||||
|
||||
.toast-body {
|
||||
padding: $toast-padding-x; // apply to both vertical and horizontal
|
||||
}
|
||||
115
APPL/Consoles/vendor/bootstrap/scss/_tooltip.scss
vendored
115
APPL/Consoles/vendor/bootstrap/scss/_tooltip.scss
vendored
@@ -1,115 +0,0 @@
|
||||
// Base class
|
||||
.tooltip {
|
||||
position: absolute;
|
||||
z-index: $zindex-tooltip;
|
||||
display: block;
|
||||
margin: $tooltip-margin;
|
||||
// Our parent element can be arbitrary since tooltips are by default inserted as a sibling of their target element.
|
||||
// So reset our font and text properties to avoid inheriting weird values.
|
||||
@include reset-text();
|
||||
@include font-size($tooltip-font-size);
|
||||
// Allow breaking very long words so they don't overflow the tooltip's bounds
|
||||
word-wrap: break-word;
|
||||
opacity: 0;
|
||||
|
||||
&.show { opacity: $tooltip-opacity; }
|
||||
|
||||
.arrow {
|
||||
position: absolute;
|
||||
display: block;
|
||||
width: $tooltip-arrow-width;
|
||||
height: $tooltip-arrow-height;
|
||||
|
||||
&::before {
|
||||
position: absolute;
|
||||
content: "";
|
||||
border-color: transparent;
|
||||
border-style: solid;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.bs-tooltip-top {
|
||||
padding: $tooltip-arrow-height 0;
|
||||
|
||||
.arrow {
|
||||
bottom: 0;
|
||||
|
||||
&::before {
|
||||
top: 0;
|
||||
border-width: $tooltip-arrow-height ($tooltip-arrow-width / 2) 0;
|
||||
border-top-color: $tooltip-arrow-color;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.bs-tooltip-right {
|
||||
padding: 0 $tooltip-arrow-height;
|
||||
|
||||
.arrow {
|
||||
left: 0;
|
||||
width: $tooltip-arrow-height;
|
||||
height: $tooltip-arrow-width;
|
||||
|
||||
&::before {
|
||||
right: 0;
|
||||
border-width: ($tooltip-arrow-width / 2) $tooltip-arrow-height ($tooltip-arrow-width / 2) 0;
|
||||
border-right-color: $tooltip-arrow-color;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.bs-tooltip-bottom {
|
||||
padding: $tooltip-arrow-height 0;
|
||||
|
||||
.arrow {
|
||||
top: 0;
|
||||
|
||||
&::before {
|
||||
bottom: 0;
|
||||
border-width: 0 ($tooltip-arrow-width / 2) $tooltip-arrow-height;
|
||||
border-bottom-color: $tooltip-arrow-color;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.bs-tooltip-left {
|
||||
padding: 0 $tooltip-arrow-height;
|
||||
|
||||
.arrow {
|
||||
right: 0;
|
||||
width: $tooltip-arrow-height;
|
||||
height: $tooltip-arrow-width;
|
||||
|
||||
&::before {
|
||||
left: 0;
|
||||
border-width: ($tooltip-arrow-width / 2) 0 ($tooltip-arrow-width / 2) $tooltip-arrow-height;
|
||||
border-left-color: $tooltip-arrow-color;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.bs-tooltip-auto {
|
||||
&[x-placement^="top"] {
|
||||
@extend .bs-tooltip-top;
|
||||
}
|
||||
&[x-placement^="right"] {
|
||||
@extend .bs-tooltip-right;
|
||||
}
|
||||
&[x-placement^="bottom"] {
|
||||
@extend .bs-tooltip-bottom;
|
||||
}
|
||||
&[x-placement^="left"] {
|
||||
@extend .bs-tooltip-left;
|
||||
}
|
||||
}
|
||||
|
||||
// Wrapper for the tooltip content
|
||||
.tooltip-inner {
|
||||
max-width: $tooltip-max-width;
|
||||
padding: $tooltip-padding-y $tooltip-padding-x;
|
||||
color: $tooltip-color;
|
||||
text-align: center;
|
||||
background-color: $tooltip-bg;
|
||||
@include border-radius($tooltip-border-radius);
|
||||
}
|
||||
@@ -1,20 +0,0 @@
|
||||
.fade {
|
||||
@include transition($transition-fade);
|
||||
|
||||
&:not(.show) {
|
||||
opacity: 0;
|
||||
}
|
||||
}
|
||||
|
||||
.collapse {
|
||||
&:not(.show) {
|
||||
display: none;
|
||||
}
|
||||
}
|
||||
|
||||
.collapsing {
|
||||
position: relative;
|
||||
height: 0;
|
||||
overflow: hidden;
|
||||
@include transition($transition-collapse);
|
||||
}
|
||||
125
APPL/Consoles/vendor/bootstrap/scss/_type.scss
vendored
125
APPL/Consoles/vendor/bootstrap/scss/_type.scss
vendored
@@ -1,125 +0,0 @@
|
||||
// stylelint-disable declaration-no-important, selector-list-comma-newline-after
|
||||
|
||||
//
|
||||
// Headings
|
||||
//
|
||||
|
||||
h1, h2, h3, h4, h5, h6,
|
||||
.h1, .h2, .h3, .h4, .h5, .h6 {
|
||||
margin-bottom: $headings-margin-bottom;
|
||||
font-family: $headings-font-family;
|
||||
font-weight: $headings-font-weight;
|
||||
line-height: $headings-line-height;
|
||||
color: $headings-color;
|
||||
}
|
||||
|
||||
h1, .h1 { @include font-size($h1-font-size); }
|
||||
h2, .h2 { @include font-size($h2-font-size); }
|
||||
h3, .h3 { @include font-size($h3-font-size); }
|
||||
h4, .h4 { @include font-size($h4-font-size); }
|
||||
h5, .h5 { @include font-size($h5-font-size); }
|
||||
h6, .h6 { @include font-size($h6-font-size); }
|
||||
|
||||
.lead {
|
||||
@include font-size($lead-font-size);
|
||||
font-weight: $lead-font-weight;
|
||||
}
|
||||
|
||||
// Type display classes
|
||||
.display-1 {
|
||||
@include font-size($display1-size);
|
||||
font-weight: $display1-weight;
|
||||
line-height: $display-line-height;
|
||||
}
|
||||
.display-2 {
|
||||
@include font-size($display2-size);
|
||||
font-weight: $display2-weight;
|
||||
line-height: $display-line-height;
|
||||
}
|
||||
.display-3 {
|
||||
@include font-size($display3-size);
|
||||
font-weight: $display3-weight;
|
||||
line-height: $display-line-height;
|
||||
}
|
||||
.display-4 {
|
||||
@include font-size($display4-size);
|
||||
font-weight: $display4-weight;
|
||||
line-height: $display-line-height;
|
||||
}
|
||||
|
||||
|
||||
//
|
||||
// Horizontal rules
|
||||
//
|
||||
|
||||
hr {
|
||||
margin-top: $hr-margin-y;
|
||||
margin-bottom: $hr-margin-y;
|
||||
border: 0;
|
||||
border-top: $hr-border-width solid $hr-border-color;
|
||||
}
|
||||
|
||||
|
||||
//
|
||||
// Emphasis
|
||||
//
|
||||
|
||||
small,
|
||||
.small {
|
||||
@include font-size($small-font-size);
|
||||
font-weight: $font-weight-normal;
|
||||
}
|
||||
|
||||
mark,
|
||||
.mark {
|
||||
padding: $mark-padding;
|
||||
background-color: $mark-bg;
|
||||
}
|
||||
|
||||
|
||||
//
|
||||
// Lists
|
||||
//
|
||||
|
||||
.list-unstyled {
|
||||
@include list-unstyled;
|
||||
}
|
||||
|
||||
// Inline turns list items into inline-block
|
||||
.list-inline {
|
||||
@include list-unstyled;
|
||||
}
|
||||
.list-inline-item {
|
||||
display: inline-block;
|
||||
|
||||
&:not(:last-child) {
|
||||
margin-right: $list-inline-padding;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
//
|
||||
// Misc
|
||||
//
|
||||
|
||||
// Builds on `abbr`
|
||||
.initialism {
|
||||
@include font-size(90%);
|
||||
text-transform: uppercase;
|
||||
}
|
||||
|
||||
// Blockquotes
|
||||
.blockquote {
|
||||
margin-bottom: $spacer;
|
||||
@include font-size($blockquote-font-size);
|
||||
}
|
||||
|
||||
.blockquote-footer {
|
||||
display: block;
|
||||
@include font-size($blockquote-small-font-size);
|
||||
color: $blockquote-small-color;
|
||||
|
||||
&::before {
|
||||
content: "\2014\00A0"; // em dash, nbsp
|
||||
}
|
||||
}
|
||||
@@ -1,17 +0,0 @@
|
||||
@import "utilities/align";
|
||||
@import "utilities/background";
|
||||
@import "utilities/borders";
|
||||
@import "utilities/clearfix";
|
||||
@import "utilities/display";
|
||||
@import "utilities/embed";
|
||||
@import "utilities/flex";
|
||||
@import "utilities/float";
|
||||
@import "utilities/overflow";
|
||||
@import "utilities/position";
|
||||
@import "utilities/screenreaders";
|
||||
@import "utilities/shadows";
|
||||
@import "utilities/sizing";
|
||||
@import "utilities/stretched-link";
|
||||
@import "utilities/spacing";
|
||||
@import "utilities/text";
|
||||
@import "utilities/visibility";
|
||||
1123
APPL/Consoles/vendor/bootstrap/scss/_variables.scss
vendored
1123
APPL/Consoles/vendor/bootstrap/scss/_variables.scss
vendored
File diff suppressed because it is too large
Load Diff
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user