135 Commits

Author SHA1 Message Date
887c41c38f BSSC#91751 Ook bij gebruik van een native input[type=time] het veld [dat onder water de echte waarde bijhoudt] onchange bijwerken
svn path=/Website/branches/v2025.4/; revision=71139
2025-12-03 15:31:27 +00:00
Jos Groot Lipman
32371c5a93 BLCC#91763 AiAi op publiceren melding als bericht => AI SQL Injection
svn path=/Website/branches/v2025.4/; revision=71136
2025-12-03 14:22:56 +00:00
04e0121327 FCLT#91738 Safari mobile styling van nieuws-items
svn path=/Website/branches/v2025.4/; revision=71134
2025-12-03 13:56:19 +00:00
Jos Groot Lipman
f12a590be7 FCLT#91738 Aantal gebruikers vandaag tellen voor portal
svn path=/Website/branches/v2025.4/; revision=71131
2025-12-03 13:19:22 +00:00
Erik Groener
311056fcd0 DSMA#91735 Probleem met verzending Order 8304/1 naar Base27 in Facilitor
svn path=/Website/branches/v2025.4/; revision=71127
2025-12-03 11:25:06 +00:00
7e12d2e89d FCLT#91497 Van error-toaster -> error-alert
svn path=/Website/branches/v2025.4/; revision=71122
2025-12-02 20:35:41 +00:00
5e0830f3e7 FCLT#91497 AiAi voorkomen bij het aanmaken van een nieuwe persoon, en error handling iets refactored
svn path=/Website/branches/v2025.4/; revision=71121
2025-12-02 19:31:41 +00:00
c202441bc3 FCLT#91497 Timezone-verschil automatisch aanpassen
svn path=/Website/branches/v2025.4/; revision=71119
2025-12-02 16:09:39 +00:00
Jos Groot Lipman
9db37d0799 FCLT#91738 Iets betere planrequest logging
svn path=/Website/branches/v2025.4/; revision=71112
2025-12-02 08:32:00 +00:00
Jos Groot Lipman
d755eafb4b Release 2025.4 Gold
svn path=/Website/branches/v2025.4/; revision=71108
2025-12-01 16:00:25 +00:00
619227db31 Merge 2025.3 Gold A patches
svn path=/Website/branches/v2025.4/; revision=71107
2025-12-01 15:53:30 +00:00
Jos Groot Lipman
c782946ed5 FCLT#91522 SQL van de export aanroep wel gewoon loggen (code was van mgt-generic overgenomen of zo)
svn path=/Website/branches/v2025.3/; revision=71103
2025-12-01 13:53:27 +00:00
Maykel Geerdink
0f60c05ebb SGGR#91708: Mobiele fiatteringslijst werkt niet goed met instemmingsverzoeken.
svn path=/Website/branches/v2025.3/; revision=71100
2025-12-01 12:41:31 +00:00
Maykel Geerdink
101c57e6e7 WOXX#91655: Facilitor: Problemen bij taakvoltooiing WOST voor begroting 2026.
svn path=/Website/branches/v2025.3/; revision=71097
2025-12-01 10:50:59 +00:00
3382bd328e FCLT#91698 Bij vervolgmeldingen wel de mogelijkheid behouden om het behandelaar-veld in te vullen, als de vervolgmelding gemaakt wordt op een vakgroep die dat toestaat
svn path=/Website/branches/v2025.3/; revision=71096
2025-12-01 10:37:34 +00:00
Jos Groot Lipman
5229137ddb FCLT#91522 Bestanden controle ook bestanden met spaties in de naam zoals "Facilitor dummy 2035.pfx" ondersteunen
svn path=/Website/branches/v2025.3/; revision=71095
2025-12-01 10:16:52 +00:00
71a720cd2a HSLE#89732 Aanspreekpunt bij vervolgmeldingen onderdrukken (wanneer nvt)
svn path=/Website/branches/v2025.3/; revision=71094
2025-12-01 10:02:37 +00:00
23d7714e9d FCLT#91705 Stuk code was weggevallen
svn path=/Website/branches/v2025.3/; revision=71082
2025-11-28 08:48:51 +00:00
Jos Groot Lipman
4061b7ab8d Release 2025.3 Gold B
svn path=/Website/branches/v2025.3/; revision=71079
2025-11-27 15:27:04 +00:00
63320e02c8 FCLT#91578 Refactoring
svn path=/Website/branches/v2025.3/; revision=71076
2025-11-27 13:33:13 +00:00
e76cde3b6e BLCC#91692 decimale getallen werden niet goed geparsed in changeUurtarief()
svn path=/Website/branches/v2025.3/; revision=71074
2025-11-27 12:54:37 +00:00
7c83e1a95f FCLT#91578 punt 6 (typo ..)
svn path=/Website/branches/v2025.3/; revision=71071
2025-11-27 09:36:25 +00:00
63104cf64f FCLT#91578 7 & 8
svn path=/Website/branches/v2025.3/; revision=71070
2025-11-27 09:27:20 +00:00
Jos Groot Lipman
b5ef510c2d RWSN#91032 bbcode 's' voor strikethrough ook op bonnen ondersteunen.
svn path=/Website/branches/v2025.3/; revision=71067
2025-11-26 16:37:57 +00:00
6570d9c6f6 FCLT#91578 1-5
svn path=/Website/branches/v2025.3/; revision=71066
2025-11-26 16:10:20 +00:00
Jos Groot Lipman
a278d55627 FCLT#91676 Workaround: A certificate is required to complete client authentication
svn path=/Website/branches/v2025.3/; revision=71063
2025-11-26 15:34:33 +00:00
c99f613ebb FCLT#91593 Nieuwe Azure endpoint (en apikey) hardcoded in de asp-code (tijdelijk)
svn path=/Website/branches/v2025.3/; revision=71060
2025-11-26 13:59:03 +00:00
Erik Groener
668c710225 ZUYD#91563 Engelse tekst ruimte functie niet zichtbaar in drop-down veld
svn path=/Website/branches/v2025.3/; revision=71057
2025-11-26 11:18:23 +00:00
Maykel Geerdink
a6151bc5fd WOXX#91655: Facilitor: Problemen bij taakvoltooiing WOST voor begroting 2026.
svn path=/Website/branches/v2025.3/; revision=71056
2025-11-26 09:56:33 +00:00
Maykel Geerdink
a7e5c2b2c1 SINN#91425: Voeg status 3 toe in default.xsl voor compleet overzicht taken.
svn path=/Website/branches/v2025.3/; revision=71054
2025-11-26 07:20:38 +00:00
Jos Groot Lipman
145dca9f93 FCLT#91636 mld_kenmerk.mld_srtkenmerk_key bewerkbaar
svn path=/Website/branches/v2025.3/; revision=71048
2025-11-25 09:05:50 +00:00
Jos Groot Lipman
f37c0f13a8 FCLT#90835 Recent is blijkbaar window.fullScreen ook deprecated geraakt.
svn path=/Website/branches/v2025.3/; revision=71042
2025-11-24 16:02:57 +00:00
a40265dea5 FCLT#91578 Punten 1, 2 & 3
svn path=/Website/branches/v2025.3/; revision=71039
2025-11-24 13:45:08 +00:00
9c0d5b97b2 ARAI#91567 Default geen restrictie op de opdrachten die ik te zien krijg, obv actieve behandelaar
svn path=/Website/branches/v2025.3/; revision=71020
2025-11-20 15:38:35 +00:00
081ee768dd ARAI#90481 De (clientside) zoom & pan functies pas onload initialiseren
svn path=/Website/branches/v2025.3/; revision=71017
2025-11-20 13:26:18 +00:00
Jos Groot Lipman
4002dd1925 PZEE#91233 Stop doorverwijzing na QR-code melding in Facilitor
svn path=/Website/branches/v2025.3/; revision=71016
2025-11-20 13:25:41 +00:00
289dd726be FCLT#91522 De gradient uit de -kleine- iconen gehaald
svn path=/Website/branches/v2025.3/; revision=71008
2025-11-20 09:22:58 +00:00
76fdcc3537 VNOG#91542 Meldingen bij notities (over afgemelde meldingen) duidelijker stylen
svn path=/Website/branches/v2025.3/; revision=71007
2025-11-20 09:22:23 +00:00
Jos Groot Lipman
5b8146ed96 VLKC#91564 Vaste bijlagen niet juist meegenomen van VLKC naar Mareon
svn path=/Website/branches/v2025.3/; revision=71006
2025-11-19 15:09:27 +00:00
Jos Groot Lipman
044f2cffac FCLT#90149 Upgrade tsk package robuuster maken: ook de sample
svn path=/Website/branches/v2025.3/; revision=71005
2025-11-19 13:31:08 +00:00
Jos Groot Lipman
edc9f423ac FCLT#91561 Vertraging na upgrade: logfiles toont langere 'after' tijden
svn path=/Website/branches/v2025.3/; revision=71003
2025-11-19 13:26:35 +00:00
Maykel Geerdink
788b38c2dd PDKL#91525: Voorraad tellen venster werkt niet op productie/acceptatie.
svn path=/Website/branches/v2025.3/; revision=70985
2025-11-18 13:01:17 +00:00
ae70720f41 FCLT#91522 lcl naam aangepast, lcl nog niet, dus revert
svn path=/Website/branches/v2025.3/; revision=70981
2025-11-18 10:47:25 +00:00
1953236e81 LOGC#91523 fe-menu iconen-kleur terug
svn path=/Website/branches/v2025.3/; revision=70978
2025-11-18 09:54:03 +00:00
0f6f39f507 FCLT#91514 local_date_to (en from_) ook in deze 'tak' definieren
svn path=/Website/branches/v2025.3/; revision=70976
2025-11-18 08:25:19 +00:00
Jos Groot Lipman
6f2655928f Release 2025.4 RC1
svn path=/Website/branches/v2025.4/; revision=70971
2025-11-17 16:27:25 +00:00
22001ff5df Merge 2025.3 Gold patches
svn path=/Website/branches/v2025.4/; revision=70969
2025-11-17 16:22:09 +00:00
Jos Groot Lipman
70f3634c2b Release 2025.3 Gold
svn path=/Website/branches/v2025.3/; revision=70966
2025-11-17 15:31:17 +00:00
f56df8f653 UWVA#88793 Revert
svn path=/Website/branches/v2025.3/; revision=70965
2025-11-17 15:25:59 +00:00
33a85941c2 DLLG#90075 Geen 'pretty' dagnamen weergeven als we data uit een andere tijdszone weergeven
svn path=/Website/branches/v2025.4/; revision=70964
2025-11-17 14:50:15 +00:00
Maykel Geerdink
d1cb311e7d PNBR#91355: Foutmelding bij openen bestelvoorraad via menubalk.
svn path=/Website/branches/v2025.3/; revision=70961
2025-11-17 13:00:12 +00:00
41a7cb7ce1 UWVA#88793 Verbruiksartikel/plaats-scope rekening laten houden met koppelzalen & verwijderdatum alleen toepassen vanaf die verwijderdatum
svn path=/Website/branches/v2025.3/; revision=70960
2025-11-17 12:47:13 +00:00
Jos Groot Lipman
9e062322ea BAMG#91494 Anonieme gebruiker kan bij melding via QR-code meldingen van anderen zien
svn path=/Website/branches/v2025.3/; revision=70958
2025-11-17 11:52:06 +00:00
Jos Groot Lipman
509bd7320a FCLT#90168 res_srtartikel_og_verwijder en res_ruimte_opstel_verwijder ook bewerkbaar via 'Elke tabel bewerken'
svn path=/Website/branches/v2025.3/; revision=70953
2025-11-17 09:00:37 +00:00
03b516835e UWVA#88793 ingang- & vervaldatum vd artikel-locatie-scope ook bij reeds gereserveerde artikelen controleren
svn path=/Website/branches/v2025.3/; revision=70945
2025-11-14 13:13:38 +00:00
e9a2b60e51 MARX#89309 plandatum in de opdrachten-lijst tonen, self-parameter toegevoegd en pagina-titel aangepast indien plandate(_from/_to) meegegeven
svn path=/Website/branches/v2025.3/; revision=70933
2025-11-13 15:09:15 +00:00
8a8991dac6 DLLG#90075 variabele declaratie verplaatst
svn path=/Website/branches/v2025.4/; revision=70924
2025-11-13 09:37:25 +00:00
8f0d445447 VNOG#91416 ietsje herschreven
svn path=/Website/branches/v2025.3/; revision=70923
2025-11-13 09:35:04 +00:00
7326b26f7c VNOG#91416 Onbeschikbare regels alleen binnen de eigen (discipline-)tabel onzichtbaar maken
svn path=/Website/branches/v2025.3/; revision=70921
2025-11-13 09:23:42 +00:00
7443481006 DLLG#90075 tracking van reserverstijds-verschuivingen in lokale tijdszone (vd plaats vd reservering)
svn path=/Website/branches/v2025.4/; revision=70915
2025-11-12 14:19:27 +00:00
9035a8fcba FCLT#90168 line-height vh news iets kleiner, dan kan het aantal regels ook van 5 -> 6
svn path=/Website/branches/v2025.3/; revision=70914
2025-11-12 13:46:06 +00:00
ab6674f815 DLLG#90075 dagcapaciteit juist uitrekenen
svn path=/Website/branches/v2025.4/; revision=70913
2025-11-12 13:02:43 +00:00
38479e785b FCLT#90168 De OTAP 'disclaimer' zat mobile niet goed in beeld als er een mobile-plaatje op de voorpagina zichtbaar was, dat is nu aangepast (OTAP only dus)
svn path=/Website/branches/v2025.3/; revision=70912
2025-11-12 12:21:33 +00:00
d022a5249f DLLG#90075 daylimit lokaal interpreteren, fac_list.inc nog buiten scope en (reserveringen op) locaties in andere tijdszones dan Europe/Amsterdam readonly weergeven
svn path=/Website/branches/v2025.4/; revision=70911
2025-11-12 12:18:52 +00:00
eeb3202f32 Merge 2025.3 RC3 patches
svn path=/Website/branches/v2025.4/; revision=70906
2025-11-12 10:50:00 +00:00
59d396a9fa FCLT#90168 absolute paden gebruiken zodat de 'home'-knoppen ook werken vanuit een /appl/marx/bestand.asp
svn path=/Website/branches/v2025.3/; revision=70904
2025-11-12 09:32:30 +00:00
6639d638e5 DLLG#90075 tijdszone-ondersteuning voor werkplekreserveringen
svn path=/Website/branches/v2025.4/; revision=70900
2025-11-11 16:01:15 +00:00
Erik Groener
aa0ab997bf FZKH#90768 Optie 'Annuleren' ontbreekt bij sjabloon-melding in Facilitor
reverted

svn path=/Website/branches/v2025.3/; revision=70893
2025-11-11 14:52:19 +00:00
Jos Groot Lipman
72c2f2dbdf Release 2025.3 RC3
svn path=/Website/branches/v2025.3/; revision=70892
2025-11-11 14:36:52 +00:00
bd83804fcf FCLT#90168 animatie-stijl iets aangepast bij de menuopties
svn path=/Website/branches/v2025.3/; revision=70891
2025-11-11 14:33:53 +00:00
Erik Groener
221f5617fe FZKH#90768 Optie 'Annuleren' ontbreekt bij sjabloon-melding in Facilitor
svn path=/Website/branches/v2025.3/; revision=70889
2025-11-11 11:09:50 +00:00
Jos Groot Lipman
841eeb2825 YKPN#91410 Weeknummer fout in urenscherm
svn path=/Website/branches/v2025.3/; revision=70888
2025-11-11 10:42:26 +00:00
Erik Groener
45916f3d08 UWVA#88793 Datummogelijkheden verbruiksartikelen catalogus per locatie
svn path=/Website/branches/v2025.3/; revision=70886
2025-11-11 10:18:46 +00:00
Erik Groener
bcd2d6d5b7 UWVA#88793 Datummogelijkheden verbruiksartikelen catalogus per locatie
svn path=/Website/branches/v2025.3/; revision=70883
2025-11-11 09:14:55 +00:00
9800eb7f39 BCGV#88984 Meerdere bb-plaatjes ondersteunen per mail
svn path=/Website/branches/v2025.3/; revision=70874
2025-11-10 15:35:44 +00:00
Erik Groener
e8ba082fe6 TDNL#89081 Automatische storingsmelding per object naar juiste leverancier regelen
- als er niet slechts 1 gemeenschappelijk contract bedrijf kan worden gevonden bij de objecten dan wordt er geen opdracht automatisch aangemaakt.

svn path=/Website/branches/v2025.3/; revision=70872
2025-11-10 14:33:58 +00:00
Maykel Geerdink
c201ca184d PNBR#91355: Foutmelding bij openen bestelvoorraad via menubalk.
svn path=/Website/branches/v2025.3/; revision=70868
2025-11-10 11:40:56 +00:00
Maykel Geerdink
a78b72b8d5 PNBR#91355: Foutmelding bij openen bestelvoorraad via menubalk.
svn path=/Website/branches/v2025.3/; revision=70864
2025-11-10 10:01:16 +00:00
Jos Groot Lipman
518ea45e0e BCGV#88984 Putorders ongeldige puo_fclt_web_apikey iets explicieter loggen
svn path=/Website/branches/v2025.3/; revision=70862
2025-11-10 09:14:00 +00:00
Jos Groot Lipman
dc02f88c4d BAMG#91379 Vraag: Voeg verval_datum veld toe voor Locaties in Facilitor API?
svn path=/Website/branches/v2025.3/; revision=70861
2025-11-10 08:42:31 +00:00
9a696caa68 LOGC#90264 Rekening houden met de mogelijkheid dat er geen openstaande taken zijn bij het afwijzen (voorkomt clientside fout die het scherm doet vastlopen)
svn path=/Website/branches/v2025.3/; revision=70860
2025-11-07 16:15:26 +00:00
070d123a02 LOGC#90445 Mijlpalen bij het aanmaken default 'actueel'
svn path=/Website/branches/v2025.3/; revision=70859
2025-11-07 15:50:45 +00:00
f361dd3580 LOGC#90445 Mijlpalen in de suggest worden gesorteerd op mijlpaal-datum, dat doen we vanaf nu precies andersom zodat de meeste relevante mijlpalen bovenaan staan (nu ook in mld-edit mode)
svn path=/Website/branches/v2025.3/; revision=70858
2025-11-07 15:42:17 +00:00
59c8524228 FCLT#90519 overbodige safe.html
svn path=/Website/branches/v2025.3/; revision=70853
2025-11-06 14:48:54 +00:00
071f470043 FCLT#90519 Als nieuwsscope = 1 categorie, pas dan de titel aan naar de categorie-omschrijving
svn path=/Website/branches/v2025.3/; revision=70852
2025-11-06 14:39:40 +00:00
Jos Groot Lipman
216424c3ca FCLT#90168 Iets duidelijkere SLNKDWF logging
svn path=/Website/branches/v2025.4/; revision=70840
2025-11-06 09:55:50 +00:00
Peter Feij
46e916a73f FCLT#90168 Moduleselector moet ook de modulenamen tonen
svn path=/Website/branches/v2025.3/; revision=70832
2025-11-05 13:17:40 +00:00
Peter Feij
3c9b207237 VBGO#88312 Persoonlijke verantwoordelijken werd niet in het overzicht getoond
svn path=/Website/branches/v2025.3/; revision=70830
2025-11-05 10:25:24 +00:00
Jos Groot Lipman
c74d95f7d5 MENZ#91325 Werkplekken aanklikken werkt niet goed
svn path=/Website/branches/v2025.4/; revision=70815
2025-11-04 15:22:22 +00:00
4bb1f23f31 Branch 2025.4
svn path=/Website/branches/v2025.4/; revision=70799
2025-11-04 11:25:16 +00:00
e3e86a803b DLLG#90075 Aanpassing -> 2025.4, dus in 2025.3 onderdrukken
svn path=/Website/branches/v2025.3/; revision=70796
2025-11-04 10:46:02 +00:00
171b91f2aa LOGC#90445 Mijlpalen in de suggest worden gesorteerd op mijlpaal-datum, dat doen we vanaf nu precies andersom zodat de meeste relevante mijlpalen bovenaan staan
svn path=/Website/branches/v2025.3/; revision=70794
2025-11-04 10:13:56 +00:00
b611a6b79f FCLT#90168 line-height edit-mode label gelijk aan show-mode
svn path=/Website/branches/v2025.3/; revision=70789
2025-11-04 08:25:48 +00:00
Jos Groot Lipman
5db0846e7a FCLT#90168 Plattegrond direct verversen als je er een werkplek geboekt hebt
svn path=/Website/branches/v2025.3/; revision=70786
2025-11-03 15:39:20 +00:00
Jos Groot Lipman
ce7954f7f5 YASK#91294 Probleem met niet-unieke vakgroepnamen bij koppeling behandelteam
svn path=/Website/branches/v2025.3/; revision=70785
2025-11-03 14:52:09 +00:00
Erik Groener
ed4cfb8110 UWVA#88793 Datummogelijkheden verbruiksartikelen catalogus per locatie
- Alle wijzigingen mbt dit ticket sinds 26-10-2025 zijn teruggedraaid (muv lay-out). 

svn path=/Website/branches/v2025.3/; revision=70783
2025-11-03 14:32:41 +00:00
Erik Groener
5db83be5c6 UWVA#88793 Datummogelijkheden verbruiksartikelen catalogus per locatie
- In prodsearch.inc de ingangsdatum en vervaldatum van res_srtartikel_onrgoed niet gebruiken: er moet wel over alle locaties gezocht worden.

svn path=/Website/branches/v2025.3/; revision=70780
2025-11-03 14:00:30 +00:00
f79d49f62a SZDB#74054 Voor mobile, ook 'insflex' als kolom in ins.getobjectinspect_sql() opnemen
svn path=/Website/branches/v2025.3/; revision=70778
2025-11-03 09:24:12 +00:00
72c9bcb868 SGGR#90933 en ook voor afwijzen
svn path=/Website/branches/v2025.3/; revision=70777
2025-11-03 09:04:21 +00:00
d9f5ce53a4 SGGR#90235 Als je res_rsv_ruimte_van/tot met een trunced date vergelijkt, dan moet res_rsv_ruimte_van/tot ook getrunced worden
svn path=/Website/branches/v2025.3/; revision=70773
2025-10-31 19:54:45 +00:00
d260891ad9 FCLT#90519 Inactieve menutabjes iets donkerder
svn path=/Website/branches/v2025.3/; revision=70772
2025-10-31 18:01:30 +00:00
Jos Groot Lipman
e73a58dd83 FCLT#91196 CAD sterretje ('verkeerde ruimte') alleen tonen als je WEB_CADBOF of WEB_CADFOF hebt (in het bijzonder niet voor CADUSE)
svn path=/Website/branches/v2025.3/; revision=70750
2025-10-29 13:25:06 +00:00
Jos Groot Lipman
4f9f02e341 SCHG#91247 Vreemde replies op berichten zonder ingevulde prs_perslid_key
svn path=/Website/branches/v2025.3/; revision=70748
2025-10-29 10:42:04 +00:00
62655cc71c FCLT#90519 '1 van n' alleen tonen in 'carousel-mode'
svn path=/Website/branches/v2025.3/; revision=70747
2025-10-29 10:18:25 +00:00
Erik Groener
a827317958 TDNL#89081 Automatische storingsmelding per object naar juiste leverancier regelen
svn path=/Website/branches/v2025.3/; revision=70746
2025-10-29 10:03:08 +00:00
Jos Groot Lipman
abb3a52712 FCLT#90168 Iets beter oude notificaties direct opruimen. Minder verwarrend als je notificatie lijst bekijken
svn path=/Website/branches/v2025.3/; revision=70745
2025-10-29 09:09:27 +00:00
Erik Groener
ce8a257dfe TDNL#89081 Automatische storingsmelding per object naar juiste leverancier regelen
svn path=/Website/branches/v2025.3/; revision=70738
2025-10-28 15:45:15 +00:00
Jos Groot Lipman
393d2cad72 DLLG#91218 Vertalingsissue bij activiteitsoorten in Facilitor
svn path=/Website/branches/v2025.3/; revision=70725
2025-10-27 16:42:29 +00:00
Erik Groener
60682d4d60 SZDB#74054 Tonen in lijst van flexkenmerken ook in mobile ondersteunen
svn path=/Website/branches/v2025.3/; revision=70722
2025-10-27 15:30:46 +00:00
Jos Groot Lipman
803823985e FMHN#91038 Verschil beschikbaarheid parkeerplekken in Facilitor oplossen
svn path=/Website/branches/v2025.3/; revision=70720
2025-10-27 15:22:58 +00:00
Jos Groot Lipman
0223634371 UWVA#91195 Exportfunctie telefoonlijst beperken voor dataveiligheid
svn path=/Website/branches/v2025.3/; revision=70719
2025-10-27 13:26:18 +00:00
Jos Groot Lipman
478b7e0100 FCLT#91196 Audit gebruik telefoonlijst verbeteren
svn path=/Website/branches/v2025.3/; revision=70717
2025-10-27 13:05:34 +00:00
Jos Groot Lipman
f3451e6e8e FCLT#90168 Als qp_maxrows en qp_maxrows gelijk zijn hoef je niet te kunnen doorklikken voor 'meer'
svn path=/Website/branches/v2025.3/; revision=70715
2025-10-27 12:47:40 +00:00
3d08eec025 FCLT#90168 Ook voor undefined data/tijden een lege string teruggeven
svn path=/Website/branches/v2025.3/; revision=70713
2025-10-27 11:38:39 +00:00
158feb546e FCLT#90168 Bugfix; bij het aanmaken van een nieuw persoon is 'prs_inactief_datum' undefined, dat geeft een AiAi in toDateTimeString()
svn path=/Website/branches/v2025.3/; revision=70709
2025-10-27 11:20:02 +00:00
c6873f592a SCHG#91140 Als een melder een notitie maakt, dan staat het vinkje om de (eerste) uitvoerder te notificeren standaard aan (bij het ontbreken van een backoffice in de configuratie)
svn path=/Website/branches/v2025.3/; revision=70705
2025-10-27 10:01:49 +00:00
Jos Groot Lipman
72a96dc99f FCLT#90168 Iets duidelijkere putorders logging
svn path=/Website/branches/v2025.3/; revision=70703
2025-10-27 09:34:11 +00:00
Jos Groot Lipman
8e6bf43766 MARX#91176 Logging Planrequest fouten verbeteren
svn path=/Website/branches/v2025.3/; revision=70702
2025-10-25 11:33:06 +00:00
Maykel Geerdink
51dd981e99 PNBR#91165: Het is niet mogelijk om een totaaloverzicht van kunstsoorten uit te draaien.
svn path=/Website/branches/v2025.3/; revision=70697
2025-10-23 08:36:28 +00:00
Jos Groot Lipman
6caedf9d20 FCLT#90168 Unsafe user.naam() gebruik
svn path=/Website/branches/v2025.3/; revision=70692
2025-10-22 14:59:09 +00:00
fde97e77db FCLT#90519 tabblad-achtergrondkleur en actieve-tab-achtergrondkleur van 99,6% wit naar 98,8% wit (FEFEFE -> FCFCFCF), heeeeeel iets warmer
svn path=/Website/branches/v2025.3/; revision=70686
2025-10-22 10:10:07 +00:00
Peter Feij
9c16d3c64c FCLT#90168 klein beetje lucht in de gepresenteerde sensorwaarden van een object, was irritant
svn path=/Website/branches/v2025.3/; revision=70682
2025-10-21 16:41:00 +00:00
Peter Feij
0fde26b710 SGGR#91159 Overzicht van (sensor)objecten in ruimte toont veel te veel objecten
svn path=/Website/branches/v2025.3/; revision=70681
2025-10-21 16:38:18 +00:00
Jos Groot Lipman
fbdf22ce2b TDNL#89081 Automatische storingsmelding per object naar juiste leverancier regelen
svn path=/Website/branches/v2025.3/; revision=70679
2025-10-21 14:20:50 +00:00
Jos Groot Lipman
fbdac726de FCLT#90168 Iets betere topdesk logging
svn path=/Website/branches/v2025.3/; revision=70673
2025-10-21 09:26:15 +00:00
Maykel Geerdink
f952796c90 FCLT#91141: Beheer: ins_srtcontrole suggestbox geeft foutmelding bij "Elke tabel bekijken".
svn path=/Website/branches/v2025.3/; revision=70672
2025-10-21 08:29:09 +00:00
Jos Groot Lipman
59a1d7bc95 Release 2025.3 RC2
svn path=/Website/branches/v2025.3/; revision=70664
2025-10-20 14:19:48 +00:00
Jos Groot Lipman
14fedd2362 FCLT#86235 7za.exe van versie 19.00 naar versie 25.01
svn path=/Website/branches/v2025.3/; revision=70658
2025-10-20 09:06:40 +00:00
Jos Groot Lipman
9b402a03be DLLG#90434 Probleem met werkplekreserveringen en persoonselectie via plattegrond
svn path=/Website/branches/v2025.3/; revision=70657
2025-10-20 08:32:10 +00:00
1791f20605 BRCF#90569 +lcl
svn path=/Website/branches/v2025.3/; revision=70656
2025-10-20 08:05:01 +00:00
5cbda984e1 BRCF#90569 +tooltip
svn path=/Website/branches/v2025.3/; revision=70654
2025-10-20 07:56:13 +00:00
Jos Groot Lipman
5aca63408d BSSC#91004 E-mailnotificaties fiatteren ontbreken
svn path=/Website/branches/v2025.3/; revision=70653
2025-10-17 18:46:16 +00:00
8b46dbe160 FCLT#90519 Kleine aanpassingen (Codex :)
svn path=/Website/branches/v2025.3/; revision=70651
2025-10-17 13:13:44 +00:00
639bd46c79 Branch 2025.3
svn path=/Website/branches/v2025.3/; revision=70647
2025-10-17 08:47:44 +00:00
e78b068354 Branch 2026.1
svn path=/Website/branches/v2026.1/; revision=70646
2025-10-17 08:44:48 +00:00
108 changed files with 1795 additions and 1021 deletions

View File

@@ -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?

View File

@@ -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") },

View File

@@ -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"

View File

@@ -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",

View File

@@ -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)"

View File

@@ -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() : "")

View File

@@ -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)
<%
}
%>

View File

@@ -78,6 +78,16 @@ var authparams = user.checkAutorisation(autfunction);
<input type="hidden" name="urole" value="<%=urole%>">
<% // <!-- Catalogus type -->
var sql = "SELECT SUM(CASE"
+ " WHEN dp.bes_disc_params_bestelmode = 0"
+ " THEN 1"
+ " ELSE 0"
+ " END) aantal_uitcat"
+ " , SUM(CASE"
+ " WHEN dp.bes_disc_params_bestelmode = 1"
+ " THEN 1"
+ " ELSE 0"
+ " END) aantal_vrij"
+ " , SUM(CASE"
+ " WHEN dp.bes_disc_params_bestelmode = 2"
+ " THEN 1"
+ " ELSE 0"
@@ -89,12 +99,29 @@ var authparams = user.checkAutorisation(autfunction);
+ " END) aantal_actueel"
+ " FROM bes_discipline bd"
+ " , bes_disc_params dp"
+ " WHERE bd.ins_discipline_key = dp.bes_ins_discipline_key";
+ " WHERE bd.ins_discipline_key = dp.bes_ins_discipline_key"
+ " AND bd.ins_discipline_verwijder IS NULL"
+ " AND (bd.ins_discipline_key IN (SELECT dp.bes_ins_discipline_key_inkoop"
+ " FROM bes_disc_params dp"
+ " WHERE dp.bes_ins_discipline_key_inkoop IS NOT NULL)"
+ " OR dp.bes_disc_params_bestelmode = 3)"
+ " AND ins_discipline_key IN (SELECT ins_discipline_key"
+ " FROM fac_v_webgebruiker g"
+ " , fac_functie f"
+ " WHERE g.prs_perslid_key = " + user_key
+ " AND f.fac_functie_key = g.fac_functie_key "
+ " AND f.fac_functie_code = " + safe.quoted_sql(autfunction) + ")";
var oRs = Oracle.Execute(sql);
var aantal_bestel = oRs("aantal_bestel").Value;
var aantal_actueel = oRs("aantal_actueel").Value;
var aantal_uitcat = oRs("aantal_uitcat").Value; // Uit catalogus(0).
var aantal_vrij = oRs("aantal_vrij").Value; // Vrij aanmaken(1).
var aantal_bestel = oRs("aantal_bestel").Value; // Bestellijst(2).
var aantal_actueel = oRs("aantal_actueel").Value; // Actuele lijst(3).
oRs.Close();
var sql_arr = [];
if (aantal_uitcat > 0)
sql_arr.push("SELECT 0, " + safe.quoted_sql("Uit catalogus") + " FROM DUAL");
if (aantal_vrij > 0)
sql_arr.push("SELECT 1, " + safe.quoted_sql("Vrij aanmaken") + " FROM DUAL");
if (aantal_bestel > 0)
sql_arr.push("SELECT 2, " + safe.quoted_sql(L("lcl_bes_orderlist")) + " FROM DUAL");
if (aantal_actueel > 0)
@@ -107,6 +134,7 @@ var authparams = user.checkAutorisation(autfunction);
onChange: 'updateDisc("' + autfunction + '");', // discChanged
trclass: "primsearch",
emptyOption: "",
selectjustone: true, // required zorgt er eigenlijk ook al voor dat als er maar 1 waarde is, dat deze wordt geselecteerd.
required: true
});
@@ -114,10 +142,13 @@ var authparams = user.checkAutorisation(autfunction);
var sql = "SELECT bd.ins_discipline_key"
+ " , " + lcl.xsqla('bd.ins_discipline_omschrijving','bd.ins_discipline_key')
+ " FROM bes_discipline bd"
+ " WHERE bd.ins_discipline_verwijder IS NULL"
+ " AND bd.ins_discipline_key IN (SELECT dp.bes_ins_discipline_key_inkoop"
+ " FROM bes_disc_params dp"
+ " WHERE dp.bes_ins_discipline_key_inkoop IS NOT NULL)"
+ " , bes_disc_params dp"
+ " WHERE bd.ins_discipline_key = dp.bes_ins_discipline_key"
+ " AND bd.ins_discipline_verwijder IS NULL"
+ " AND (bd.ins_discipline_key IN (SELECT dp.bes_ins_discipline_key_inkoop"
+ " FROM bes_disc_params dp"
+ " WHERE dp.bes_ins_discipline_key_inkoop IS NOT NULL)"
+ " OR dp.bes_disc_params_bestelmode = 3)"
+ " AND ins_discipline_key IN (SELECT ins_discipline_key"
+ " FROM fac_v_webgebruiker g"
+ " , fac_functie f"
@@ -131,7 +162,8 @@ var authparams = user.checkAutorisation(autfunction);
label: L("lcl_bes_Catalogus"),
onChange: 'updateSrtGroup("' + autfunction + '");', // discChanged
trclass:"primsearch",
emptyOption: ""
emptyOption: "",
selectjustone: true
});
%>
@@ -142,7 +174,8 @@ var authparams = user.checkAutorisation(autfunction);
label: L("lcl_bes_srtgroup"),
onChange: 'updateSrtDeel("' + autfunction + '");', // srtgroupChanged
trclass: "secsearch",
emptyOption: ""
emptyOption: "",
selectjustone: true
}); %>
<!-- Item select box -->
@@ -151,14 +184,15 @@ var authparams = user.checkAutorisation(autfunction);
{ initKey: srtdeel,
label: L("lcl_bes_srtdeel"),
trclass: "secsearch",
emptyOption: ""
emptyOption: "",
selectjustone: true
}); %>
<script type="text/javascript">
// Laad de groupen en de items
// Selecteer eventueel de initi<74>le groepen en items die meegegeven kunnen worden
$(function()
{
updateDisc("<%=autfunction%>", "<%=disc%>", "<%=srtgroup%>", "<%=srtdeel%>");
updateDisc("<%=autfunction%>", "<%=disc%>", "<%=srtgroup%>", "<%=srtdeel%>");
});
</script>
<% SEARCH_BLOCK_END();

View File

@@ -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),

View File

@@ -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)

View File

@@ -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;

View File

@@ -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>");

View File

@@ -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 = "";
}

View File

@@ -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") &&

View File

@@ -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.
}

View File

@@ -292,6 +292,7 @@ ANONYMOUS_Allowed = 1;
var api_result = callAPI(obj_base27.info.actie, obj_base27);
if (api_result.success)
{
result.success = true;
if (obj_base27.info.actie == "incident")
{
if (api_result.status == 201)

View File

@@ -179,7 +179,8 @@ ANONYMOUS_Allowed = 1;
var status_ok = "200,201,204,206";
if (status_ok.indexOf(status) == -1)
{
errmsg = "TOPdesk error. Status: " + http_request.status;
errmsg = "TOPdesk error. Status: " + http_request.status + " " + http_request.statusText
+ ":\n" + http_request.responseText;
}
else
{

View File

@@ -112,6 +112,32 @@ if (Session("interface") == "touch") { %>
if (<%=(!device.test(device.isSupported) && S("checkBrowser") == 1 ? "true" : "false")%> || !(Modernizr.promises && Modernizr.strictmode && Modernizr.arrow)) {
FcltMgr.alert(L("lcl_invalid_browser"));
}
<% var xfunc = user.func_enabled2("PRS", { prs_key: user_key, isOptional: true });
var prsWriteAny =
xfunc.canWrite("WEB_PRSMAN") ||
xfunc.canWrite("WEB_PRSUSE") ||
xfunc.canWrite("WEB_PROFIL");
if (prsWriteAny) { %>
var userTimezone = "<%=safe.jsstring(user.timezone())%>";
var clientTimezone = Intl?.DateTimeFormat()?.resolvedOptions()?.timeZone;
if (userTimezone && clientTimezone && userTimezone != clientTimezone) {
$(function () {
FcltMgr.confirm(`Your system timezone is ${safe.html(clientTimezone)}, but your Facilitor profile is set to ${userTimezone}.\nDo you want me to update your profile and set your current timezone to ${safe.html(clientTimezone)}?`, function () {
var data = {
prs_tz: clientTimezone
};
<% protectRequest.dataToken("data"); %>
$.post(
"<%=rooturl%>/APPL/PRS/prs_edit_perslid_save.asp?prs_key=<%=user_key%>",
data,
FcltCallbackRefresh,
"json"
);
});
});
}
<% } %>
});
</script>
<%

View File

@@ -66,9 +66,17 @@ if (user_key > 0)
+ " SET fac_notificatie_status = BITAND (fac_notificatie_status, 255-8)" // Verwerkte popup
+ " WHERE fac_notificatie_key IN (" + resetnotis.join(",") + ")";
Oracle.Execute(sql);
// En opruimen (als er niets voor Putorders over is)
var sql2 = "DELETE fac_notificatie"
+ " WHERE fac_notificatie_status IN (0, 16)" // STATUS_SUMMARY_XSL 16 is niet interessant
+ " AND fac_notificatie_systeemadres IS NULL"
+ " AND prs_bedrijfadres_key IS NULL"
+ " AND fac_notificatie_key IN (" + resetnotis.join(",") + ")";
Oracle.Execute(sql2);
}
}
Response.Write(JSON.stringify(result));
%>
<% ASPPAGE_END(); %>
<% ASPPAGE_END(); %>

View File

@@ -10,6 +10,7 @@
<!-- #include file="../Shared/common.inc" -->
<!-- #include file="../Shared/iface.inc" -->
<!-- #include file="../Shared/selector.inc" -->
<!-- #include file="fac.inc" -->
<%
@@ -17,25 +18,6 @@ FCLTHeader.Requires({ plugins:["jQuery"] })
var autfunction = "WEB_LAYOUT";
var authparams = user.checkAutorisation(autfunction);
var export_template = S("csstemplate") || {};
export_template.version = FCLTVersion;
function prettyJson(j)
{
try
{
var xx = JSON.stringify(JSON.parse(j), null, 2);
if (xx == "null")
return "";
return xx;
}
catch (e)
{
return j;
};
};
%>
<html>
@@ -45,65 +27,27 @@ function prettyJson(j)
$(function()
{
$("#main-color").on("change", _ => {
$("#main-color-contrast").val(0);
});
$("#accent-color").on("change", _ => {
$("#accent-color-contrast").val(0);
});
$("#frameheader-bg-color").on("change", function (e) {
var frameHeaderBackgroundColor = [
"#F2F2F2",
"color-mix(in srgb, var(--main-color) 10%, rgb(255, 255, 255))",
"color-mix(in srgb, var(--main-color) 50%, rgb(255, 255, 255))",
"color-mix(in srgb, var(--main-color) 90%, rgb(255, 255, 255))"
][this.value];
$(this).closest("td").next("td").find(".color-preview").css("color", frameHeaderBackgroundColor);
})
$('textarea').autogrow();
FcltMgr.startEdit(window);
});
function isValidJsonString(text) {
try {
JSON.parse(text);
} catch (e) {
return false;
}
return true;
}
function loadImportcss($dialog)
{
var defaultTemplate = JSON.parse("<%=safe.jsstring(JSON.stringify(FCLTHeader.defaultTemplate))%>");
var jsonstring = $dialog.find("#cssimport").val() || '{}';
if (!isValidJsonString(jsonstring))
{
FcltMgr.alert(L("lcl_obj_bad_value"));
return;
}
var css = JSON.parse(jsonstring);
for (name in defaultTemplate)
{
if (name in css)
{
$("td input[name="+name+"]").val(css[name]);
if (name.slice(-5) === "image") {
$("[type=button][aria-controls=" + name + "]").val(css[name]);
}
}
else
{
$("td input[name="+name+"]").val('');
}
}
}
function doImportcss()
{
var params = { title: L("lcl_paste")
, oktekst: L("lcl_ok")
, ishtmlsafe: true
, fncallback: loadImportcss
, buttons: [{ text: L("lcl_cancel"), icon: "fal fa-fw fa-undo", class: "alertCancel" }]
};
var page_content = '<textarea id="cssimport" class="fldtxt" rows="4" cols="50"></textarea>';
FcltMgr.mydialog( page_content, params);
}
function doExportcss()
{
var params = { title: L("lcl_transport")
, oktekst: L("lcl_ok")
, ishtmlsafe: true
};
var page_content = '<textarea class="fldtxt" rows="4" cols="50" onclick="this.select()" readonly><%=safe.jsstring(JSON.stringify(export_template))%></textarea>';
FcltMgr.mydialog( page_content, params);
}
function doSubmit()
{
FcltMgr.confirm(L("lcl_fac_save_templateq"), function() {
@@ -164,49 +108,115 @@ function prettyJson(j)
<tr><th><%=L("lcl_fac_template_name")%></th>
<th>&nbsp;</th>
<th><%=L("lcl_fac_template_default")%></th>
<th><%=L("lcl_fac_template_newval")%>&nbsp;<input type='button' class='button' value='<%=L("lcl_paste")%>' onclick='doImportcss()'></th>
<th><%=L("lcl_fac_template_newval")%></th>
<th>&nbsp;</th>
<th><%=L("lcl_fac_template_curval")%>&nbsp;<input type='button' class='button' value='<%=L("lcl_transport")%>' onclick='doExportcss()'></th></tr>
<th><%=L("lcl_fac_template_curval")%></th></tr>
<%
for (itm in FCLTHeader.defaultTemplate)
for (item in FCLTHeader.defaultTemplate)
{
var act = "";
if (itm in S("csstemplate"))
act = S("csstemplate")[itm];
var con = "";
if (itm in S("csstemplate"))
con = S("csstemplate")[itm];
var defaultValue = FCLTHeader.defaultTemplate[item];
var actualValue = "";
if (item in S("csstemplate")) {
actualValue = S("csstemplate")[item];
}
var isColor = function(s) { return (s).match(/^#(?!#)|^rgb/i); };
var isImage = item.slice(-5) === "image";
// Voor kleurwaarden tonen we een kleurvoorbeeld, dat bepalen we aan de hand van onze defaultwaarde
%><tr><td class='label'><label for='<%=safe.html(itm)%>'><%=safe.html(itm)%></label></td>
<td style="text-align:right"><% =(FCLTHeader.defaultTemplate[itm]).match(/^#(?!#)|^rgb/i) ? '<div class="color-preview" style="color:'+safe.htmlattr(FCLTHeader.defaultTemplate[itm])+'">' + I("fa-square fa-2x", { fastyle: "fas" }) + '</div>' : '' %></td>
<td><%=safe.html(FCLTHeader.defaultTemplate[itm])%></td>
<% if (itm.slice(-5) === "image") {
%><tr><td class='label'><label for='<%=safe.html(item)%>'><%=safe.html(item)%></label></td>
<td style="text-align:right">
<% if (isColor(defaultValue)) { %>
<div class="color-preview" style="color:<%=safe.htmlattr(defaultValue)%>"><%=I("fa-square fa-2x", { fastyle: "fas" })%></div>
<% } %>
</td>
<td><%=safe.html(defaultValue)%></td>
<% if (isImage) {
Response.Write(" <td class='filepicker'>"
+ " <input type='hidden' id='" + safe.htmlattr(itm) + "' name='" + safe.htmlattr(itm) + "' value='" + safe.htmlattr(con) + "'>"
+ " <input type='hidden' id='" + safe.htmlattr(item) + "' name='" + safe.htmlattr(item) + "' value='" + safe.htmlattr(actualValue) + "'>"
+ " <span class='button-icon-wrapper file-picker'>"
+ " <span class='starticon'>" + I("fa-file-image") + "</span>"
+ " <input type='button' class='button symbol-upload' title='" + safe.htmlattr(itm) + "' value='" + safe.htmlattr(con || L("lcl_image")) + "'"
+ " aria-controls='" + itm + "'"
+ " data-default-title='" + safe.htmlattr(itm) + "'"
+ " <input type='button' class='button symbol-upload' title='" + safe.htmlattr(item) + "' value='" + safe.htmlattr(actualValue || L("lcl_image")) + "'"
+ " aria-controls='" + item + "'"
+ " data-default-title='" + safe.htmlattr(item) + "'"
+ " data-module='STYLE'"
+ " data-upload-url='" + safe.htmlattr(protectQS.create("../shared/BijlagenForm.asp?module=STYLE")) + "'>"
+ " </span>"
+ " <span class='default-clickable-icon symbol-delete' aria-controls='" + safe.htmlattr(itm) + "'>"
+ " <span class='default-clickable-icon symbol-delete' aria-controls='" + safe.htmlattr(item) + "'>"
+ I("fa-trash-alt")
+ " </span>"
+ " </td>");
} else { %>
} else { %>
<td><%
RWFIELD(itm, "fld", "", con, { "datatype": "color" });
%></td><%
} %>
<td style="text-align:right"><% =(act && (FCLTHeader.defaultTemplate[itm]).match(/^#(?!#)|^rgb/i) || act.match(/^#(?!#)|^rgb/i)) ? '<div class="color-preview" style="color:'+safe.htmlattr(act)+'">' + I("fa-square fa-2x", { fastyle: "fas" }) + '</div>' : '' %></td>
<% if (itm.slice(-5) === "image" && act && act.match(/^## .* ##$/) === null) { %>
<td><span class="details" onClick="iface.fullscreen_image('<%=safe.jsstring(safe.htmlattr(HTTP.urlzelfnoroot() + S("style_image_path") + act))%>');"><%=safe.html(act)%></span></td>
RWFIELD(item, "fld", "", actualValue, { "datatype": "color" });
%> </td><%
} %>
<td style="text-align:right"><%=(actualValue && isColor(defaultValue) || isColor(actualValue) ? '<div class="color-preview" style="color:'+safe.htmlattr(actualValue)+'">' + I("fa-square fa-2x", { fastyle: "fas" }) + '</div>' : '')%></td>
<% if (item.slice(-5) === "image" && actualValue && actualValue.match(/^## .* ##$/) === null) { %>
<td><span class="details" onClick="iface.fullscreen_image('<%=safe.jsstring(safe.htmlattr(HTTP.urlzelfnoroot() + S("style_image_path") + actualValue))%>');"><%=safe.html(actualValue)%></span></td>
<% } else { %>
<td><%=safe.html(act)%></td>
<td><%=safe.html(actualValue)%></td>
<% } %>
</tr><%
if (item == "main-color" || item == "accent-color") { %>
<tr>
<td class='label'><%=item%>-contrast</td>
<td>&nbsp;</td>
<td>Hoogste contrast</td>
<td><%
var sql = " SELECT 0, 'Hoogste contrast' FROM DUAL"
+ " UNION ALL"
+ " SELECT 1, 'Wit' FROM DUAL"
+ " UNION ALL"
+ " SELECT 2, 'Zwart' FROM DUAL"
+ " UNION ALL"
+ " SELECT 3, " + safe.quoted_sql(item == "main-color" ? "accent-color" : "main-color") + " FROM DUAL";
var initKey = 0;
if (item + "-contrast" in S("csstemplate")) {
initKey = S("csstemplate")[item + "-contrast"];
}
FCLTselector(item + "-contrast", sql, {
initKey: initKey,
required: true
});
%> </td>
<td style="text-align:right"><div class="color-preview" style="color:var(--<%=item%>-contrast);"><%=I("fa-square fa-2x", { fastyle: "fas" })%></div></td>
<td>*Niet aanpassen om aan toegankelijkheidseisen te voldoen</td>
</tr><%
if (item == "accent-color") { // Na accent-color-contrast nog een pseudo-veld; frameheader-bg-color
%> <tr>
<td class='label'>frameheader-bg-color</td>
<td style="text-align:right"><div class="color-preview" style="color: #F2F2F2"><%=I("fa-square fa-2x", { fastyle: "fas" })%></div></td>
<td>#F2F2F2</td>
<td><%
var sql = " SELECT 0, 'Lichtgrijs (default)' FROM DUAL"
+ " UNION ALL"
+ " SELECT 1, '10% main-color' FROM DUAL"
+ " UNION ALL"
+ " SELECT 2, '50% main-color' FROM DUAL"
+ " UNION ALL"
+ " SELECT 3, '90% main-color' FROM DUAL";
var initKey = 0;
if ("frameheader-bg-color" in S("csstemplate")) {
initKey = S("csstemplate")["frameheader-bg-color"];
}
var frameHeaderBackgroundColor = [
"#F2F2F2",
"color-mix(in srgb, var(--main-color) 10%, rgb(255, 255, 255))",
"color-mix(in srgb, var(--main-color) 50%, rgb(255, 255, 255))",
"color-mix(in srgb, var(--main-color) 90%, rgb(255, 255, 255))"
][initKey];
FCLTselector("frameheader-bg-color", sql, {
initKey: initKey,
required: true
});
%> </td>
<td style="text-align:right"><div class="color-preview" style="color:<%=frameHeaderBackgroundColor%>;"><%=I("fa-square fa-2x", { fastyle: "fas" })%></div></td>
<td></td>
</tr>
<% }
}
}
%>
<tr>
@@ -219,7 +229,7 @@ function prettyJson(j)
</tr>
<% if (user.has("WEB_PRSSYS"))
{
%> <tr><td>&nbsp;</td></tr>
%> <tr><td colspan="6">&nbsp;</td></tr>
<tr>
<td><%=L("lcl_fac_csscust")%></td><td colspan="3"><textarea class="fldtxt" rows="3" id="csscust" name="csscust" maxlength="4000"><%=safe.textarea(S("csscust"))%></textarea></td>
</tr>

View File

@@ -34,14 +34,28 @@ var cssparams = { cssmode: previewmode };
if (previewmode == 2)
{
cssparams.csstemplate = {};
for (itm in FCLTHeader.defaultTemplate)
for (item in FCLTHeader.defaultTemplate)
{
var conceptval = getFParam(itm);
var conceptval = getFParam(item);
if (conceptval != "")
cssparams.csstemplate[itm] = conceptval;
cssparams.csstemplate[item] = conceptval;
else
delete cssparams.csstemplate[itm];
delete cssparams.csstemplate[item];
}
var mainColorContrast = getFParamInt("main-color-contrast", 0);
if (mainColorContrast) {
cssparams.csstemplate["main-color-contrast"] = mainColorContrast;
}
var accentColorContrast = getFParamInt("accent-color-contrast", 0);
if (accentColorContrast) {
cssparams.csstemplate["accent-color-contrast"] = accentColorContrast;
}
var frameheaderBackgroundColor = getFParamInt("frameheader-bg-color", 0);
if (frameheaderBackgroundColor) {
cssparams.csstemplate["frameheader-bg-color"] = frameheaderBackgroundColor;
}
if (submitting)
{
var fields = [ { dbs: "fac_setting_pvalue", typ: "varchar", val: JSON.stringify(cssparams.csstemplate) },

View File

@@ -237,7 +237,7 @@ function fnrowClass(oRs)
var bostatuskey = oRs.Fields("bo_status_key").Value;
// visuele hint voor de actualiteit
if (lthisdate.toDateString() == lnow.toDateString())
if (lthisdate.toDateString() == lnow.toDateString()) // Dit is een rare, voor reserveringen is dit een datum in de TZ van de locatie, voor de rest de TZ van de user ..
lclass += " today";
else if (xmlnode != "melding" && xmlnode != "bestelling") // die lopen gewoon, reserveringen en afspraken zijn voorbij of toekomstig, en delen, ach.
{
@@ -295,6 +295,24 @@ function fnrowClass(oRs)
return lclass;
}
function fnDatum (oRs) {
var val = oRs("datum").Value;
if (oRs("xmlnode").Value == "reservering") { // Deze zijn al in de lokale tijdszone
return toDateTimeString(val, { isLocal: true });
} else {
return toDateTimeString(val, { pretty: true });
}
}
function fnDatumEind(oRs) {
var val = oRs("datum_eind").Value;
if (oRs("xmlnode").Value == "reservering") { // Deze zijn al in de lokale tijdszone
return toDateTimeString(val, { isLocal: true });
} else {
return toDateTimeString(val, { pretty: true, noMidnight: true });
}
}
%>
<html>
<head>
@@ -424,7 +442,7 @@ function fnrowClass(oRs)
if ((faclist_columns & 2) == 2)
rst.addColumn(new Column({caption: (outputmode == 0 ? I("fa-bell", { fastyle: "far" }) : L("lcl_mld_actiecode")), content: fnMark, align: "center", colName: "fnMark"}));
if ((faclist_mode & 1) == 1)
rst.addColumn(new Column({caption: L("lcl_myfacilities_date"), content: "datum", datatype: "datetime", prettydate: true }));
rst.addColumn(new Column({caption: L("lcl_myfacilities_date"), content: fnDatum, datatype: "datetime" }));
rst.addColumn(new Column({caption: L("lcl_faciliteit"), content: fncolType, colName: "fncolType"}));
rst.addColumn(new Column({caption: L("lcl_descr"), content: "detail"}));
if ((faclist_columns & 4) == 4)
@@ -437,7 +455,7 @@ function fnrowClass(oRs)
if (urole == "fo" || (urole == "fe" && S("fac_flags_visible_for_fe") == 1))
rst.addColumn(new Column({caption: L("lcl_fac_extra1"), content: fnExtra1, colName: "fnExtra1"}));
if ((faclist_columns & 16) == 16)
rst.addColumn(new Column({caption: L("lcl_myfacilities_enddate"), content: "datum_eind", datatype: "datetime", prettydate: true, nomidnight: true}));
rst.addColumn(new Column({caption: L("lcl_myfacilities_enddate"), content: fnDatumEind, datatype: "datetime" }));
if ((faclist_columns & 32) == 32)
rst.addColumn(new Column({caption: L("lcl_place"), content: "plaats"}));
if (S("facilities_flike_past") >= 0)

View File

@@ -218,6 +218,13 @@ function fac_list_query (params)
if (params.showreservering)
{
var S_fac_server_timezone = S("fac_server_timezone");
function toLocalDate(expr) {
return "CAST ("
+ "FROM_TZ (CAST ( " + expr + " AS TIMESTAMP), " + safe.quoted_sql(S_fac_server_timezone) + ")"
+ " AT TIME ZONE COALESCE (l.alg_locatie_timezone, " + safe.quoted_sql(S_fac_server_timezone) + ") AS DATE)";
}
clausesArr.push(
"SELECT rr.res_rsv_ruimte_host_key prs_perslid_key" // 1 Host ruimtereservering
+ " , TO_CHAR (rr.res_reservering_key) || '/' || rr.res_rsv_ruimte_volgnr item"
@@ -228,8 +235,8 @@ function fac_list_query (params)
+ " , 'reservering' xmlnode"
+ " , " + lcl.xsql("ra.res_activiteit_omschrijving", "ra.res_activiteit_key") + " subtype"
+ " , '5' soort"
+ " , rr.res_rsv_ruimte_van datum"
+ " , rr.res_rsv_ruimte_tot datum_eind"
+ " , " + toLocalDate("rr.res_rsv_ruimte_van") + " datum"
+ " , " + toLocalDate("rr.res_rsv_ruimte_tot") + " datum_eind"
+ " , rr.res_rsv_ruimte_omschrijving detail"
+ " , COALESCE (rr.res_rsv_ruimte_omschrijving, (SELECT "+ lcl.xsql('ra.res_activiteit_omschrijving', 'ra.res_activiteit_key')
+ " FROM res_activiteit ra "
@@ -245,8 +252,20 @@ function fac_list_query (params)
+ " , ra.res_activiteit_image image"
+ sqlRecentdatum('rr.res_rsv_ruimte_key','reservering')
+ " FROM res_v_aanwezigrsv_ruimte rr"
+ " , res_activiteit ra "
+ " , res_activiteit ra "
+ " , res_ruimte_opstelling rro"
+ " , res_alg_ruimte rar"
+ " , alg_ruimte r"
+ " , alg_verdieping v"
+ " , alg_gebouw g"
+ " , alg_locatie l"
+ " WHERE ra.res_activiteit_key = rr.res_activiteit_key"
+ " AND rro.res_ruimte_key = rar.res_ruimte_key"
+ " AND rar.alg_ruimte_key = r.alg_ruimte_key"
+ " AND r.alg_verdieping_key = v.alg_verdieping_key"
+ " AND v.alg_gebouw_key = g.alg_gebouw_key"
+ " AND g.alg_locatie_key = l.alg_locatie_key"
+ " AND rr.res_ruimte_opstel_key = rro.res_ruimte_opstel_key"
+ " AND rr.res_ruimte_opstel_key IS NOT NULL" // alleen reserveerbare ruimte
+ " AND (rr.res_rsv_ruimte_tot > SYSDATE - " + S("facilitiespast_res") + " AND rr.res_rsv_ruimte_van < SYSDATE + " + S("facilitiesfuture") + ")"
+ (params.specific_day
@@ -265,8 +284,8 @@ function fac_list_query (params)
+ " , 'reservering' xmlnode"
+ " , " + lcl.xsql("ra.res_activiteit_omschrijving", "ra.res_activiteit_key") + " subtype"
+ " , '7' soort"
+ " , rr.res_rsv_ruimte_van datum"
+ " , rr.res_rsv_ruimte_tot datum_eind"
+ " , " + toLocalDate("rr.res_rsv_ruimte_van") + " datum"
+ " , " + toLocalDate("rr.res_rsv_ruimte_tot") + " datum_eind"
+ " , rr.res_rsv_ruimte_omschrijving oms"
+ " , COALESCE (rr.res_rsv_ruimte_omschrijving, (SELECT "+ lcl.xsql('ra.res_activiteit_omschrijving', 'ra.res_activiteit_key')
+ " FROM res_activiteit ra "
@@ -282,17 +301,25 @@ function fac_list_query (params)
+ " , ra.res_activiteit_image image"
+ sqlRecentdatum('rr.res_rsv_ruimte_key','reservering')
+ " FROM res_v_aanwezigrsv_ruimte rr"
+ " , res_v_aanwezigrsv_deel dd"
+ " , res_deel rd "
+ " , res_activiteit ra "
+ " , res_v_aanwezigrsv_deel dd"
+ " , res_deel rd "
+ " , res_activiteit ra "
+ " , alg_ruimte r"
+ " , alg_verdieping v"
+ " , alg_gebouw g"
+ " , alg_locatie l"
+ " WHERE rr.res_status_bo_key IS NULL AND dd.res_rsv_ruimte_key = rr.res_rsv_ruimte_key"
+ " AND r.alg_verdieping_key = v.alg_verdieping_key"
+ " AND v.alg_gebouw_key = g.alg_gebouw_key"
+ " AND g.alg_locatie_key = l.alg_locatie_key"
+ " AND r.alg_ruimte_key = rr.alg_ruimte_key"
+ " AND rr.alg_ruimte_key IS NOT NULL" // niet in reserveerbare ruimte
+ " AND ra.res_activiteit_key = rr.res_activiteit_key"
+ " AND rd.res_deel_key = dd.res_deel_key"
+ " AND (rr.res_rsv_ruimte_tot > SYSDATE - " + S("facilitiespast_res") + " AND rr.res_rsv_ruimte_van < SYSDATE + " + S("facilitiesfuture") + ")"
+ (params.specific_day // meerdaagse voorzieningen alleen op de start- en einddag, (is res_rsv_deel_van/tot niet beter?)
? " AND (rr.res_rsv_ruimte_van = TRUNC(SYSDATE + 1 + " + params.days_in_the_future + ")"
+ " OR rr.res_rsv_ruimte_tot = TRUNC(SYSDATE + " + params.days_in_the_future + "))"
? " AND ( TRUNC(rr.res_rsv_ruimte_van) = TRUNC(SYSDATE + " + params.days_in_the_future + ")"
+ " OR TRUNC(rr.res_rsv_ruimte_tot) = TRUNC(SYSDATE + " + params.days_in_the_future + "))"
: "")
+ " UNION ALL " // 5 Host cateringreservering dirtlevel van de onderliggenden bepalen?
+ "SELECT rr.res_rsv_ruimte_host_key prs_perslid_key"
@@ -303,8 +330,8 @@ function fac_list_query (params)
+ " , 'reservering' xmlnode"
+ " , " + lcl.xsql("ra.res_activiteit_omschrijving", "ra.res_activiteit_key") + " subtype"
+ " , '9' soort"
+ " , rr.res_rsv_ruimte_van datum"
+ " , rr.res_rsv_ruimte_tot datum_eind"
+ " , " + toLocalDate("rr.res_rsv_ruimte_van") + " datum"
+ " , " + toLocalDate("rr.res_rsv_ruimte_tot") + " datum_eind"
+ " , rr.res_rsv_ruimte_omschrijving oms"
+ " , COALESCE (rr.res_rsv_ruimte_omschrijving, (SELECT "+ lcl.xsql('ra.res_activiteit_omschrijving', 'ra.res_activiteit_key')
+ " FROM res_activiteit ra "
@@ -319,10 +346,18 @@ function fac_list_query (params)
+ " , (CASE WHEN res_rsv_artikel_approved = 1 THEN NULL ELSE res_rsv_artikel_approved END) mark" // 1 = alles akkoord: geen aanduiding
+ " , ra.res_activiteit_image image"
+ sqlRecentdatum('rr.res_rsv_ruimte_key','reservering')
+ " FROM res_v_aanwezigrsv_ruimte rr"
+ " FROM res_v_aanwezigrsv_ruimte rr"
+ " , res_v_aanwezigrsv_artikel dd"
+ " , res_activiteit ra "
+ " , res_activiteit ra "
+ " , alg_ruimte r"
+ " , alg_verdieping v"
+ " , alg_gebouw g"
+ " , alg_locatie l"
+ " WHERE rr.res_status_bo_key IS NULL AND dd.res_rsv_ruimte_key = rr.res_rsv_ruimte_key "
+ " AND r.alg_verdieping_key = v.alg_verdieping_key"
+ " AND v.alg_gebouw_key = g.alg_gebouw_key"
+ " AND g.alg_locatie_key = l.alg_locatie_key"
+ " AND r.alg_ruimte_key = rr.alg_ruimte_key"
+ " AND rr.alg_ruimte_key IS NOT NULL" // niet in reserveerbare ruimte
+ " AND ra.res_activiteit_key = rr.res_activiteit_key"
+ " AND (rr.res_rsv_ruimte_tot > SYSDATE - " + S("facilitiespast_res") + " AND rr.res_rsv_ruimte_van < SYSDATE + " + S("facilitiesfuture") + ")"

View File

@@ -24,7 +24,7 @@ var autfunction = "WEB_PRSSYS";
var authparams = user.checkAutorisation(autfunction);
var submitting = getQParamInt("submit", 0) == 1;
var lang = getQParamSafe("lang", "NL"); // TODO: popup als niet meegegeven
var lang = getQParamSafe("lang", S("db_lang"));
var dialect_key = getQParamInt("dialect_key");
var dialect_id = getQParam("dialect_id");

View File

@@ -45,6 +45,7 @@ var showmore = getQParamInt("showmore", 0);
var portal = getQParamInt("portal", 1);
var widget = getQParamInt("asWidget", 0) == 1;
var additionalNews = 0;
var newsTitle = L("lcl_mynews");
var canEdit = !!user.has("WEB_MSGBOF");
var msg_rights = msg.func_enabled(-1);
@@ -360,6 +361,9 @@ sqln = "SELECT * FROM (" + sqln + ")"
var nieuwsdatum = toDateString(oRs("fac_nieuws_van").Value, true, true);
var detail_html_arr = [];
if (oRs("fac_nieuws_groep_omschrijving").Value) {
if (nieuwsgroep_key > 0) {
newsTitle = oRs("fac_nieuws_groep_omschrijving").Value;
}
detail_html_arr.push('<span' + (useCarousel ? ' class="details" data-groep-key="' + nieuws_groep_key + '"' : '') +'>' + safe.html(oRs("fac_nieuws_groep_omschrijving").Value) + '</span>');
}
if (nieuwsdatum != "") {
@@ -451,7 +455,7 @@ sqln = "SELECT * FROM (" + sqln + ")"
reply_html += '<span class="note-wrapper' + (reply_author === user_key ? " note-type-self" : "") + '" data-key="' + reply_key + '">'
+ ' <span class="note-container">'
+ ' <span class="note-header">'
+ (reply_author !== user_key ? '<span class="note-author">' + safe.html(author.naam()) + '</span>' : "")
+ (reply_author > 0 && reply_author !== user_key ? '<span class="note-author">' + safe.html(author.naam()) + '</span>' : "")
+ ' <span class="note-timestamp">' + toDateTimeString(reply_created, false, false, true, false) + '</span>'
+ ' </span>'
+ ' <span class="note-body">'
@@ -528,11 +532,11 @@ sqln = "SELECT * FROM (" + sqln + ")"
<header class="d-flex justify-content-between align-items-center">
<div class="d-flex align-items-center gap-3">
<% if (i > 0 || hasAddButton) { %>
<h1><%=safe.html(L("lcl_mynews"))%></h1>
<h1><%=safe.html(newsTitle)%></h1>
<% }
Response.Write('</div><div class="d-flex align-items-center gap-3">');
if (i > 1) {
%> <span class="fclt-news-counter" data-counter="<%=current%>"> van <%=i%></span><%
if (useCarousel) {
%> <span class="fclt-news-counter" data-counter="<%=current%>"> van <%=i%></span><% // TODO LCL
}
if (hasAddButton) {
%> <span class="msg-add-button btn" title="<%=L("lcl_add")%>"><%=I("fa-plus fa-xl")%></span><%

View File

@@ -6,7 +6,7 @@
File: fac_roundtrip_exp.asp
Description: Exporteer de gegevens van de view behorende bij de import naar een csv-bestand.
Parameters: code: Een geldige fac_import_app_code.
Note:
Note:
*/
%>
<!-- #include file="../Shared/common.inc" -->
@@ -52,7 +52,7 @@ if (imp_params.success)
var hiresTimer = new ActiveXObject("SLNKDWF.About");
var tm_start = hiresTimer.usTimer;
var sql = "SELECT * FROM " + viewname;
var oRs = Oracle.RealConnection.Execute(sql);
var oRs = Oracle.Execute(sql);
create_export(oRs, filename);
oRs.Close();
}

View File

@@ -171,7 +171,12 @@ oRs.Close();
result.applicationpoolstart = new Date(Application("SET_INSTANCE_TIME"));
var sql = "SELECT SYSDATE FROM DUAL";
var oRs = Oracle.Execute(sql);
result.sysdate = new Date(oRs(0).Value);
oRs.Close();
result.finished = new Date();
result.scanduration = result.finished.getTime() - result.started.getTime();
Response.Write(JSON.stringify(result));
Response.End;

View File

@@ -209,6 +209,14 @@ var JSON_Result = true;
}
oRs.Close();
// Recente users telling vandaag
var sql = "SELECT COUNT(*) aantal"
+ " FROM prs_perslid d "
+ " WHERE prs_perslid_login > TRUNC(SYSDATE)";
var oRs = Oracle.Execute(sql);
result.recentvandaag = oRs("aantal").Value;
oRs.Close();
try
{
var WshShell = new ActiveXObject("WScript.Shell");

View File

@@ -4,11 +4,9 @@
$Id$
File: fac_settings_search.asp
Status: 40%
Description: Toont zoekvelden voor lijst van menuopties
Parameters: ??
Context: Via URL (alleen prssys)
Note: For internal use only
Parameters: module, autosearch
Context: Vanuit menu (alleen prssys)
*/ %>
<!-- #include file="../Shared/common.inc" -->
@@ -53,54 +51,48 @@ var module = getQParam("module", "");
</head>
<body id="searchbody">
<form name="u2" method="get" action="fac_settings_list.asp" target="workFrame" onsubmit='anysearch = true;'>
<% SEARCH_PAGE_START({ header: L("lcl_filterblok") });
<%
SEARCH_PAGE_START({ header: L("lcl_filterblok") });
SEARCH_BLOCK_START("searchtable", L("lcl_filterblok")); %>
<!-- module -->
<!-- module -->
<%
sql = "SELECT DISTINCT "
+ " fac_setting_module fac_module,"
+ " fac_setting_module fac_module "
+ "FROM fac_setting "
+ (module!="" ? " WHERE fac_setting_module = " + safe.quoted_sql(module) :"")
+ "ORDER BY fac_setting_module";
if (module == "")
{
FCLTselector("sModule",
sql,
{ label: L("lcl_fac_module")
, trclass: "primsearch"
, emptyOption: L("lcl_search_generic")
})
}
else
{ // Er is maar 1 optie, dus geen emptyOption.
FCLTselector("sModule",
sql,
{ label: L("lcl_fac_module")
, trclass: "primsearch"
})
}
CHECKBOXTR(L("lcl_lcl_overruled"), "fldcheck", "is_overrule", false);
// Niet elke setting-module heeft een officiele modulenaam..
var sql = "SELECT DISTINCT "
+ " fs.fac_setting_module fac_module"
+ ", fs.fac_setting_module || ' - ' || lcl.l(fm.fac_module_remark) modulenaam"
+ " FROM fac_setting fs, fac_module fm "
+ " WHERE fs.fac_setting_module = fm.fac_module_name(+)"
+ (module != ""
? " AND fs.fac_setting_module = " + safe.quoted_sql(module)
: "")
+ " ORDER BY fac_setting_module";
FCLTselector("sModule", sql, { label: L("lcl_fac_module")
, emptyOption: ((module == "") ? L("lcl_search_generic") : false)
/* , readonly : (module != "") werkt niet */
, required : (module != "")
})
CHECKBOXTR(L("lcl_lcl_overruled"), "fldcheck", "is_overrule", false);
SEARCH_BLOCK_END();
SEARCH_BLOCK_START();
%>
<!-- Zoektekst -->
<tr class="primsearch">
<td class="label">
<label for="zoek"><%=L("lcl_lcl_search_fields")%></label>
</td>
<td>
<input type="text" class="fld wildcard" name="zoek" id="zoek">
</td>
</tr>
<!-- Zoektekst -->
<tr class="primsearch">
<td class="label">
<label for="zoek"><%=L("lcl_lcl_search_fields")%></label>
</td>
<td>
<input type="text" class="fld wildcard" name="zoek" id="zoek">
</td>
</tr>
<% SEARCH_BLOCK_END();
var buttons = [ {title: L("lcl_overview_list"), action: "doSubmit()", icon: "fa-clipboard-list" } ];
SIMPLE_BLOCK_START();
CreateButtons(buttons, { entersubmit: true, showIcons: true});
SIMPLE_BLOCK_END();
SEARCH_PAGE_END();
var buttons = [ {title: L("lcl_overview_list"), action: "doSubmit()", icon: "fa-clipboard-list" } ];
SIMPLE_BLOCK_START();
CreateButtons(buttons, { entersubmit: true, showIcons: true});
SIMPLE_BLOCK_END();
SEARCH_PAGE_END();
%>
</form>

View File

@@ -55,10 +55,12 @@ function findSHAinfo()
{
var regel = allsha[i];
var spl = regel.split(" ");
if (spl.length == 2)
if (spl.length >= 2)
{
var sha_should = spl[0];
var fname = spl[1].substring(1, spl[1].length);
spl.shift();
var namepart = spl.join(" "); // Bestandsnamen met spaties er in
var fname = namepart.substring(1, namepart.length);
fname = fname.replace(/\\/g,'/');
allfiles[fname.toLowerCase()] = 1;
var file = { fname: fname.replace(/^\.\.\//,"/") };

View File

@@ -200,7 +200,7 @@ function prodsearch_queries(write_discs, filter)
+ " AND r.res_discipline_key = d.ins_discipline_key"
+ " AND ar.res_ruimte_key = r.res_ruimte_key"
+ " AND (r.res_ruimte_startdatum IS NULL OR r.res_ruimte_startdatum <= SYSDATE)"
+ " AND (r.res_ruimte_vervaldatum IS NULL OR r.res_ruimte_vervaldatum >= SYSDATE)"
+ " AND (r.res_ruimte_vervaldatum IS NULL OR r.res_ruimte_vervaldatum > SYSDATE)"
+ " AND r.alg_ruimte_key ="
+ " (SELECT MIN (rar.alg_ruimte_key)"
+ " FROM res_alg_ruimte rar"
@@ -251,25 +251,10 @@ function prodsearch_queries(write_discs, filter)
true); // forwrite
queries['resartikel'] =
{ sql: "WITH all_onrgoed_loc_keys AS"
+ " (SELECT alg_type"
+ " , alg_onroerendgoed_keys"
+ " , alg_locatie_key"
+ " , alg_terreinsector_key"
+ " , alg_gebouw_key"
+ " , alg_verdieping_key"
+ " , alg_ruimte_key"
+ " FROM alg_v_allonroerendgoed"
+ " UNION"
+ " SELECT 'L'"
+ " , alg_locatie_key"
+ " , alg_locatie_key, NULL, NULL, NULL, NULL"
+ " FROM alg_locatie"
+ " )"
+ " SELECT r.res_artikel_key product_key,"
{ sql: "SELECT r.res_artikel_key product_key,"
+ lcl.xsql('r.res_artikel_omschrijving','r.res_artikel_key')+" product,"
+ " 'resartikel' soort,"
+ " " + ranknr('resartikel') + " rang,"
+ ranknr('resartikel') + " rang,"
+ " r.res_artikel_prijs prijs,"
+ " '' extra,"
+ " NULL extra2,"
@@ -281,28 +266,10 @@ function prodsearch_queries(write_discs, filter)
+ " r.res_artikel_image foto,"
+ " NULL ishtmlsafe_extra"
+ " FROM res_v_aanwezigartikel r,"
+ " res_v_aanwezigdiscipline d,"
+ " res_srtartikel_onrgoed rsao"
+ " res_v_aanwezigdiscipline d"
+ " WHERE r.res_discipline_key = d.ins_discipline_key"
+ " AND d.ins_discipline_key = rsao.res_discipline_key"
+ " AND (rsao.alg_onrgoed_niveau, rsao.alg_onrgoed_key) IN"
+ " (SELECT alg_type, alg_onroerendgoed_keys"
+ " FROM all_onrgoed_loc_keys"
+ " WHERE alg_locatie_key = " + "(select coalesce(s.alg_locatie_key, m.alg_locatie_key)" // Beperk tot verbruiksartikelen van mijn locatie.
+ " from alg_v_my_location m"
+ " , (select p.prs_perslid_key"
+ " , o.alg_locatie_key"
+ " from alg_v_allonroerendgoed o"
+ " , prs_perslid p"
+ " where p.alg_onroerendgoed_type = o.alg_type(+)"
+ " and p.alg_onroerendgoed_keys = o.alg_onroerendgoed_keys(+)"
+ " ) s"
+ " where m.prs_perslid_key = s.prs_perslid_key"
+ " and m.prs_perslid_key = " + user_key
+ ")"
+ " )"
+ " AND COALESCE(rsao.res_srtartikel_og_ingangsdatum, r.res_artikel_ingangsdatum, SYSDATE) <= SYSDATE"
+ " AND COALESCE(rsao.res_srtartikel_og_vervaldatum, r.res_artikel_vervaldatum, SYSDATE) >= SYSDATE"
+ " AND (r.res_artikel_ingangsdatum IS NULL OR r.res_artikel_ingangsdatum <= SYSDATE)"
+ " AND (r.res_artikel_vervaldatum IS NULL OR r.res_artikel_vervaldatum > SYSDATE)"
+ " AND " + fac.createOrClause("UPPER("+lcl.xsql('d.ins_discipline_omschrijving','d.ins_discipline_key') +"||', '||"
+lcl.xsql('res_artikel_omschrijving','res_artikel_key') +"||', '||"
+lcl.xsql('res_artikel_opmerking','res_artikel_key')+")", supper)

View File

@@ -3882,10 +3882,11 @@ ins = {checkAutLevel:
+ " || ')'"
+ " ELSE " + safe.quoted_sql(L("lcl_ins_unknown"))
+ " END prs_bedrijf_naam"
+ ( mobile && insFlexParams && insFlexParams.anyflex
? insFlexParams.sql
: ""
)
+ (mobile
? (insFlexParams && insFlexParams.anyflex
? insFlexParams.sql
: ", NULL insflex")
: "")
: "")
+ " FROM (" + sql + "{0}) XX";
@@ -6056,7 +6057,9 @@ ins = {checkAutLevel:
+ " WHERE idsc2.ins_deel_key = xcp.ins_deel_key"
+ " AND idsc2.ins_srtcontrole_key = xcp.ins_srtcontrole_key"
+ " AND idsc2.ins_scenario_key = xcp.ins_scenario_key)"
+ " AND idsc1.ins_deelsrtcontrole_status IN (2" + (finish? ", 3" : "") + "))");
+ " AND idsc1.ins_deelsrtcontrole_status IN (2" + (finish? ", 3" : "") + ")"
+ " AND EXTRACT(YEAR FROM idsc1.ins_deelsrtcontrole_freezedate) <= " + mjb_freeze_or_sys_year
+ " )");
if (pricechange)
mjblist_sql += " AND (xcp.ins_srtcontroledl_xcp_eind IS NULL OR xcp.ins_srtcontroledl_xcp_eind >= SYSDATE)"; // 1) Prijswijziging: Niet vervallen.
@@ -6084,7 +6087,7 @@ ins = {checkAutLevel:
mjblist_sql += " AND xcp.ins_scenario_key = 1" // 6) Geen scenario.
+ " AND xcp.ctr_ismjob = 1" // 7) ismjob.
+ (freeze || unfreeze || finish
+ (freeze
? " AND result.\"" + mjb_freeze_or_sys_year + "\" IS NOT NULL" // 8) isFreezeYear, bedrag in mjb_freeze_year is niet NULL.
: "");
@@ -6481,14 +6484,35 @@ ins = {checkAutLevel:
+ " , " + lcl.xsql("sk.ins_srtkenmerk_omschrijving", "iskm.ins_srtkenmerk_key") + ") omschrijving"
+ " FROM ins_kenmerk k"
+ " , ins_srtkenmerk sk"
+ (inspect
? " , ins_deelsrtcontrole idsc"
+ " , ins_srtcontrole i"
+ " , ctr_discipline cd"
: " , ins_deel d"
+ " , ins_srtdeel s"
+ " , ins_srtgroep g")
+ " WHERE k.ins_srtkenmerk_key = sk.ins_srtkenmerk_key"
+ " AND BITAND(k.ins_kenmerk_inlijst, " + (p_inlijst? p_inlijst : 1) + ") = " + (p_inlijst? p_inlijst : 1) // In overzicht tonen {1=Objectenbeheer overzicht, 2=MJOB Planningsconsole}.
+ " AND k.ins_kenmerk_verwijder IS NULL"
+ " AND sk.ins_srtkenmerk_verwijder IS NULL"
+ " AND sk.ins_srtkenmerk_kenmerktype = 'M'"
+ (inspect
? " AND k.ins_kenmerk_niveau IN ('C', 'E', 'T')" // C=Periodiek taken, E=Taakcategorie, T=Alle taken.
: " AND k.ins_kenmerk_niveau IN ('S', 'G', 'D')") // S=Objectsoort, G=Objectgroep, D=Discipline.
? " AND k.ins_kenmerk_niveau IN ('C', 'E', 'T')" // C=Periodiek taken, E=Taakcategorie, T=Alle taken.
+ " AND idsc.ins_srtcontrole_key = i.ins_srtcontrole_key"
+ " AND i.ctr_discipline_key = cd.ins_discipline_key"
+ " AND cd.ins_discipline_verwijder IS NULL"
+ " AND idsc.ins_deelsrtcontrole_key = " + p_key // p_key is een ins_deelsrtcontrole_key.
+ " AND ((k.ins_srtinstallatie_key = i.ins_srtcontrole_key AND k.ins_kenmerk_niveau = 'C')"
+ " OR (k.ins_srtinstallatie_key = cd.ins_discipline_key AND k.ins_kenmerk_niveau = 'E')"
+ " OR (k.ins_srtinstallatie_key IS NULL AND k.ins_kenmerk_niveau = 'T'))"
: " AND k.ins_kenmerk_niveau IN ('S', 'G', 'D')" // S=Objectsoort, G=Objectgroep, D=Discipline.
+ " AND d.ins_srtdeel_key = s.ins_srtdeel_key"
+ " AND d.ins_discipline_key = g.ins_discipline_key"
+ " AND g.ins_srtgroep_key = s.ins_srtgroep_key"
+ " AND d.ins_deel_key = " + p_key // p_key is een ins_deel_key.
+ " AND ((k.ins_srtinstallatie_key = s.ins_srtdeel_key AND k.ins_kenmerk_niveau = 'S')"
+ " OR (k.ins_srtinstallatie_key = s.ins_srtgroep_key AND k.ins_kenmerk_niveau = 'G')"
+ " OR (k.ins_srtinstallatie_key = g.ins_discipline_key AND k.ins_kenmerk_niveau = 'D'))")
+ " AND k.ins_srtinstallatie_key NOT IN (" + S("sle_ins_srt_groep_key") + ", " + S("cil_ins_srt_groep_key") + ")";
var oRs_k = Oracle.Execute(sql_k);
while (!oRs_k.eof)

View File

@@ -409,7 +409,8 @@ var canImport = (user.checkAutorisation("WEB_IMPORT", true) != null);
? safe.html(flexval.replace(/\r/g, "\n")+ "\n")
: ""
);
if (insFlexParams.bijlageflex)
// Als er nog geen inspectierecord is (ins_deelsrtcontrole_key IS NULL), dan zijn er ook nog geen bijlage kenmerken.
if (insFlexParams.bijlageflex && ins_deelsrtcontrole_key)
{
result += ins.ins_deel_flex_bijlagen(ins_deelsrtcontrole_key, 1, true); // 1=Objectebeheer overzicht.
}

View File

@@ -843,9 +843,9 @@ $(async function() {
var allSuggests = [];
if (typeof Suggest === "function") {
for (var key in window) {
if ((key, ["InstallTrigger","onmozfullscreenchange","onmozfullscreenerror"].includes(key)))
if ((key, ["InstallTrigger","onmozfullscreenchange","onmozfullscreenerror", "fullScreen"].includes(key)))
{
continue; // die drie geven anders op Firefox een verwarrende warning in de console als je window[key] opvraagt
continue; // die geven anders op Firefox een verwarrende warning in de console als je window[key] opvraagt
}
if (window[key] instanceof Suggest) { // Er kunnen meerdere afhankelijke suggest velden zijn.
allSuggests.push(window[key].sgReadyState);

View File

@@ -293,8 +293,7 @@ if (result)
{
if (!result.response)
{
__Log("Error in putorders.send_planrequest: " + result.errText); // Zie ook putorders logging voor de foutmelding
API.error(result.errText);
API.error("Error in putorders.send_planrequest: " + result.errtext); // Zie ook putorders logging voor de foutmelding
}
var xmldoc = new ActiveXObject("Msxml2.DOMDocument.6.0");

View File

@@ -85,7 +85,7 @@
<xsl:if test="plandatum2/datum!=''"><xsl:value-of select="plandatum2/jaar"/>-<xsl:value-of select="plandatum2/maand"/>-<xsl:value-of select="plandatum2/dag"/>T<xsl:value-of select="plandatum2/tijd"/>:00</xsl:if>
</mld_opdr_datum_plan2>
<mld_opdr_einddatum><xsl:value-of select="einddatum/jaar"/>-<xsl:value-of select="einddatum/maand"/>-<xsl:value-of select="einddatum/dag"/>T<xsl:value-of select="einddatum/tijd"/>:00</mld_opdr_einddatum>
<xsl:if test="count(uitvoerende/bedrijf/bedrijfadres[type='O']/flexfiles) = 0 or uitvoerende/bedrijf/bedrijfadres[type='O']/flexfiles = '0' or uitvoerende/bedrijf/bedrijfadres[type='O']/flexfiles = '1' or count(uitvoerende/bedrijf/bedrijfadres[type='O']/fixedattachment) = 1">
<xsl:if test="count(/facilitor/notificatie/bedrijfadres/flexfiles) = 0 or /facilitor/notificatie/bedrijfadres/flexfiles = '0' or /facilitor/notificatie/bedrijfadres/flexfiles = '1' or count(/facilitor/notificatie/bedrijfadres/fixedattachment) = 1">
<attachments>
<xsl:for-each select="kenmerk[@type='M' and floor(@rolcode div 2) mod 2 = 1]">
<xsl:sort select="@volgnummer" data-type="number"/>
@@ -96,9 +96,9 @@
<xsl:attribute name="encoding">base64</xsl:attribute>
</xsl:element>
</xsl:for-each>
<xsl:if test="count(uitvoerende/bedrijf/bedrijfadres[type='O']/fixedattachment) = 1">
<xsl:if test="count(/facilitor/notificatie/bedrijfadres/fixedattachment) = 1">
<FCLTfixedattachment encoding='base64' nodename='TMP_Attachment'>
<xsl:value-of select="uitvoerende/bedrijf/bedrijfadres[type='O']/fixedattachment"/>
<xsl:value-of select="/facilitor/notificatie/bedrijfadres/fixedattachment"/>
</FCLTfixedattachment>
</xsl:if>
</attachments>

View File

@@ -73,14 +73,14 @@ scaffolding(this_model,
"icon": "fa-euro-sign",
"fields": [
"financialdata",
"approvenew",
"costtype",
"costtypemandatory",
"percentage",
"margin",
"approve",
"invoicelimit",
"schedule",
"approvenew"
"schedule"
]
}
]

View File

@@ -136,6 +136,9 @@
"ins_srtdeel_acadsymbol",
"ins_srtgroep_key"]
},
"mld_kenmerk": {
"fields": ["mld_srtkenmerk_key"]
},
"mld_melding_object": {
"fields": ["ins_deel_key"]
},

View File

@@ -288,6 +288,19 @@ switch (req_info)
break;
}
case "show_after_reject":
{
protectQS.verify({ allowparams: ["req_info"]});
var mld_key = getQParamInt("mld_key", -1);
var mfe = mld.func_enabled_melding(mld_key);
result.show = mfe.canReadAny || mfe.canChangeKenmerkBlok;
if (!mfe.canReadAny) {
result.toaster = L("lcl_mld_is_mldrej");
}
break;
}
case "show_after_fwd":
{
protectQS.verify({ allowparams: ["req_info"]});

View File

@@ -6763,7 +6763,7 @@ mld = {
? " AND ( mld_stdmeldinggroep_key = " + params.stdmeldinggroep_key
+ " OR mld_stdmeldinggroep_key IS NULL)" // Deze mag natuurlijk ook
: "") // Dan geldt alleen de vakgroeptype-scope
+ " ORDER BY mld_melding_tag_datum_tot, mld_melding_tag_naam"; // denk ik?
+ " ORDER BY mld_melding_tag_datum_tot DESC, mld_melding_tag_naam";
var result =
FCLTselector_HTML("tag_key",
sql_tag,
@@ -7118,7 +7118,10 @@ mld = {
+ " " + (ruimtekey > 0 ? "OR (cp.cnt_alg_plaats_code = 'R' AND cp.cnt_alg_plaats_key = " + ruimtekey + ")" : "")
+ " )";
var sql_o = " SELECT c.cnt_prs_bedrijf_key"
var sql_o = "";
if (obj_key_arr && obj_key_arr.length > 0)
{
sql_o = " SELECT c.cnt_prs_bedrijf_key"
+ " , c.cnt_contract_key"
+ " , CASE WHEN co.cnt_ins_deel_key IS NULL"
+ " THEN 6"
@@ -7146,19 +7149,22 @@ mld = {
+ " )"
+ " )"
+ " )";
}
var sql_c = "SELECT cnt_prs_bedrijf_key"
+ " , cnt_contract_key"
+ " , prio"
+ " , COUNT(DISTINCT cnt_prs_bedrijf_key) aantal"
+ " FROM (" + sql_p
+ (obj_key_arr.length ? " UNION " + sql_o : "")
+ " )"
+ " GROUP BY cnt_prs_bedrijf_key, cnt_contract_key, prio"
+ " ORDER BY prio DESC"
+ " FETCH FIRST 1 ROW ONLY";
var sql_c = "SELECT MIN(cnt_prs_bedrijf_key) cnt_prs_bedrijf_key"
+ " , COUNT(*) aantal"
+ " FROM (SELECT cnt_prs_bedrijf_key"
+ " , cnt_contract_key"
+ " , prio"
+ " , COUNT(DISTINCT cnt_prs_bedrijf_key) aantal"
+ " FROM (" + sql_p
+ (obj_key_arr && obj_key_arr.length > 0 ? " UNION " + sql_o : "")
+ " )"
+ " GROUP BY cnt_prs_bedrijf_key, cnt_contract_key, prio"
+ " ORDER BY prio DESC"
+ " )";
var oRs_c = Oracle.Execute(sql_c);
if (!oRs_c.EOF && oRs_c("aantal").Value == 1)
if (oRs_c("aantal").Value == 1)
{
prs_bedrijf_key = oRs_c("cnt_prs_bedrijf_key").Value;
}

View File

@@ -65,8 +65,13 @@ function doublecheckCallback(json, modalParams)
}
else
{
if (reloadmld)
parent.location.href = "mld_melding.asp?urole=" + urole + "&mld_key=" + mld_key_arr + "&embedded=1";
if (reloadmld) {
if (json.reject) {
mld_melding_rejected();
} else {
parent.location.href = "mld_melding.asp?urole=" + urole + "&mld_key=" + mld_key_arr + "&embedded=1";
}
}
else
FcltCallbackRefresh({success: true});
}

View File

@@ -605,6 +605,7 @@ if (useBronmelding)
this_mld_info.behandel_key2 = bron_mld_info.behandel_key2;
this_mld_info.mld_onderwerp = bron_mld_info.mld_onderwerp;
this_mld_info.room_obj_arr = bron_mld_info.room_obj_arr;
this_mld_info.primaire_behandelaar = bron_mld_info.primaire_behandelaar;
if (isVervolgmelding && (this_stdm_info.canholdthirdparty == 1 || lAllThirdparty))
{
this_mld_info.naam_ext = bron_mld_info.naam_ext;
@@ -1602,8 +1603,13 @@ SUBFRAME_START();
{ urlParam: "disc_key", field: "disc", init: this_mld_info.disc_key }];
if (this_mld_info.show_alg)
urlAdd.push({ urlParam: "loc_key", field: "locatiekey", init: this_mld_info.loc_key });
if (this_mld_info.primaire_behandelaar != 0)
{
if (
this_mld_info.primaire_behandelaar != 0 &&
(
bron_mld_key == -1 ||
this_mld_info.primaire_behandelaar
)
) {
FCLTpersoonselector("sBehandel",
"sgBehandelaar",
{ perslidKey: this_mld_info.behandel_key,

View File

@@ -157,10 +157,10 @@ function changeUurtarief()
if (isNaN(uurtarief)) { // Bereken opdrachttarief
if (data.uurtarief == null)
$("#uurtarief").val("");
var uren = parseFloat( $("#uren").val());
var mat_kosten = parseFloat( $("#mat_kosten").val());
var corr_kosten = parseFloat( $("#corr_kosten").val());
var tot_kosten = parseFloat( $("#tot_kosten").val());
var uren = parseFloat( $("#uren").val().replace(',', '.'));
var mat_kosten = parseFloat( $("#mat_kosten").val().replace(',', '.'));
var corr_kosten = parseFloat( $("#corr_kosten").val().replace(',', '.'));
var tot_kosten = parseFloat( $("#tot_kosten").val().replace(',', '.'));
if (isNaN(mat_kosten))
mat_kosten = 0;

View File

@@ -67,9 +67,9 @@ if (locatiekey < 0 && mld_melding.deladdress_key > 0)
// Zijn er objecten aan de melding gekoppeld? Zet de ins_deel_keys in een array.
var obj_key_arr = [];
for (var i=0; i<mld_info.room_obj_arr.length; i++)
for (var i=0; i<mld_melding.room_obj_arr.length; i++)
{
obj_key_arr.push(mld_info.room_obj_arr[i].ins_key);
obj_key_arr.push(mld_melding.room_obj_arr[i].ins_key);
}
var prs_bedrijf_key = mld.dienst_controle(new_stdm, locatiekey, (mld_melding.bttype == "B"? mld_melding.bld_key : null), mld_melding.room_key, obj_key_arr, mld_melding.perslid_key_voor);

View File

@@ -60,6 +60,13 @@ function mld_melding_ingestemd() {
mld_reload_or_close);
}
function mld_melding_rejected() {
var data = { req_info: "show_after_reject"};
$.getJSON(protected_mld_info_ajax,
data,
mld_reload_or_close);
}
function mld_reload_or_close(json, textStatus)
{
if (json)
@@ -142,11 +149,7 @@ function mld_reject()
url = "../mld/mld_reject.asp?urole=" + urole + "&mld_key=" + mld_key
FcltMgr.openModalDetail(url,
L("lcl_mld_complain") + ' ' + mldPrefix + mld_key,
{callback: function()
{
FcltMgr.closeDetail(window, {close: true});
mld_melding_reload(mld_key);
}}
{ callback: FcltCallbackAndThen(mld_melding_rejected) }
);
}
}

View File

@@ -243,7 +243,7 @@ if (mld_key > 0)
IFRAMER_HEADER(L("lcl_mld_behandeling"), buttons, { inhamburger: true });
var safe_notes_title = safe.html(L("lcl_mld_frame_notes"));
if (S("ai_enabled") & 4) {
safe_notes_title += "&nbsp;<span class='default-clickable-icon' onclick='aiSummarize()'>" + I("fa-sparkles") + "</span>";
safe_notes_title += "&nbsp;<span class='default-clickable-icon' onclick='aiSummarize()' title='" + safe.htmlattr(L("lcl_mld_summarize")) + "'>" + I("fa-sparkles") + "</span>";
}
BLOCK_START("mldHistorie", safe_notes_title, { detailToggle: true, wide: true, nopadding: true, icon: "fa-clipboard-list-check", ishtmlsafe: true });

View File

@@ -98,10 +98,11 @@ oRs.Close();
<script type="text/javascript">
var anyChange = false; // Voorkom te veel refreshes
<% function getWeekString(datum) {
var yearStart = new Date(datum.getFullYear(), 0, 1);
var dayOfYear = (datum.getTime() - yearStart.getTime()) / oneDay + 1;
var weekNr = Math.ceil(dayOfYear / 7);
return datum.getFullYear() + "-" + weekNr;
var sql = "SELECT TO_CHAR({0}, 'IYYY-IW') weeknr FROM DUAL".format(datum.toSQL());
var oRs = Oracle.Execute(sql);
var txt = oRs("weeknr").Value;
oRs.Close()
return txt;
}
%> FcltMgr.setTitle(L("lcl_mld_ord_weeklijst") + "<%=getWeekString(datefrom)%>");

View File

@@ -27,7 +27,7 @@ user.anything_todo_or_abort(this_opdr.canSetSent, L("lcl_shared_no_auth"));
sql = "BEGIN fac.markorderassent('opdracht', " + opdr_key + ", 2, '', " + user_key + "); END;"; // 2=nog onbekend of leverancier accepteert.
Oracle.Execute(sql);
mld.trackopdrachtupdate(opdr_key, L("lcl_mld_is_setsent"));
mld.trackopdrachtupdate(opdr_key, L("lcl_mld_is_setsend")); // Todo; spelvaud uit de lcl-naam halen
result.success = true;

View File

@@ -97,14 +97,18 @@ if (nieuws_key === -1 && mld_key > 0) {
var result = shared.promptAI(JSON.stringify(input), { "instructions": L("lcl_mld_publish_portal_message_instructions"), "response_format": "json_object" });
if (result.success) {
try {
__Log(result.content);
var content = JSON.parse(result.content);
subject = content.onderwerp || null;
fac_nieuws_groep_key = content.categorie || null;
var fac_nieuws_groep_key = null;
fac_nieuws_groep_key = parseInt(content.categorie, 10) || null; // In theorie kan AI nog steeds een ongeldige categorie_key teruggeven. Dat negeren we
image = content.icon || null;
mess_dsc = content.berichttekst || null;
totdate = (content.periode_tot || null) === null ? null : new Date(content.periode_tot || null);
} catch (e) {
// Dan niet
__DoLog("Prompt AI returned invalid JSON: " + e.description);
__DoLog(result.content);
}
}
}

View File

@@ -163,8 +163,8 @@ var eindLevel;
</td>
</tr>
<% }
ROFIELDTR("datefrom", L("lcl_period_from"), toDateString(vandate, false, false, true), { suppressEmpty: true});
ROFIELDTR("dateto", L("lcl_period_to"), toDateString(totdate, false, false, true), { suppressEmpty: true});
ROFIELDTR("datefrom", L("lcl_period_from"), toDateString(vandate), { suppressEmpty: true});
ROFIELDTR("dateto", L("lcl_period_to"), toDateString(totdate), { suppressEmpty: true});
ROFIELDTR("fld", L("lcl_mes_send_date_time"), toDateTimeString(action_datum));
BLOCK_END();
BLOCK_START("msgPrs", L("lcl_msg_groep"), {icon: "fa-users"});

View File

@@ -86,6 +86,11 @@ footer {
transform: translate(-50%, 75%);
white-space: nowrap;
}
header .otap-title {
bottom: unset;
top: 0;
transform: translate(-50%, 120%);
}
footer {
height: var(--fclt-footer-height);
@@ -360,7 +365,7 @@ header.page-banner {
.card-link { /* Directe child van een .card */
border-radius: inherit;
height: inherit;
height: var(--fclt-card-inner-height);
}
.card-title > * + * {
@@ -669,6 +674,13 @@ footer.page-footer > * {
background-color: inherit;
}
/* sensorstates */
.sensorstate span {
padding-right: 6px;
}
.stateval {
font-style: italic;
}
/* ---------------------------------------------------------------------------
Icon-grid
--------------------------------------------------------------------------- */

View File

@@ -138,9 +138,9 @@ function fac_list(days_in_the_future)
return "<div class='listbodykop'>"
+ "<div>" + I("fa-clock") + "&nbsp;"
+ (specific_day
? toTimeString(oRs.Fields("datum").Value)
: toDateTimeString(oRs.Fields("datum").Value, false, false, true))
+ "-" + toTimeString(oRs.Fields("datum_eind").Value) + "</div>"
? toTimeString(oRs.Fields("datum").Value, { isLocal: true })
: toDateTimeString(oRs.Fields("datum").Value, { isLocal: true }))
+ "-" + toTimeString(oRs.Fields("datum_eind").Value, { isLocal: true }) + "</div>"
+ (oRs.Fields("plaats").Value ? "<div>" + I("fa-map-marker") + "&nbsp;" + oRs.Fields("plaats").Value + "</div>" : "")
+ "</div>";
},

View File

@@ -73,6 +73,11 @@ var params = {betreft: (betreft.length? betreft : null),
nurl = "../pda/reservering.asp?rsv_ruimte_key=" + oRs("request_key").Value;
break;
}
case "MLDIN":
{
nurl = "../pda/melding.asp?mld_key=" + oRs("request_key").value;
break;
}
default: INTERNAL_ERROR;
}
return nurl;
@@ -91,6 +96,7 @@ var params = {betreft: (betreft.length? betreft : null),
case "FIN":
case "FIN2": soort = L("lcl_fin_factuur_type") + " " + safe.html(oRs("type").Value); break;
case "RES": soort = L("lcl_res_reservation"); break;
case "MLDIN": return L("lcl_mld_concept") + ":&nbsp;" + safe.html(oRs("type").Value); break;
default: INTERNAL_ERROR;
}

View File

@@ -177,6 +177,11 @@ function FOOTER(params)
return;
}
if (user.isGroupedUser() || Session("login_by_fallback"))
{
return; // Die hebben ook niets met die knoppen te maken
}
var sql = "SELECT COUNT(*) berichten"
+ " FROM web_user_messages"
+ " WHERE prs_perslid_key_receiver = " + user_key
@@ -287,9 +292,9 @@ function FOOTER(params)
} %>
<footer class="fixed-bottom page-footer">
<a href="Facilitor.asp" class="tappable"><%=I("fa-home fa-xl")%></a>
<a href="fac_list.asp" class="tappable"><%=I("fa-ballot-check fa-xl")%></a>
<a href="message_list.asp" class="tappable"<%=berichten ? ' data-badge="' + berichten + '"' : ''%>>
<a href="<%=rooturl%>/appl/pda/Facilitor.asp" class="tappable"><%=I("fa-home fa-xl")%></a>
<a href="<%=rooturl%>/appl/pda/fac_list.asp" class="tappable"><%=I("fa-ballot-check fa-xl")%></a>
<a href="<%=rooturl%>/appl/pda/message_list.asp" class="tappable"<%=berichten ? ' data-badge="' + berichten + '"' : ''%>>
<%=I("fa-bell fa-xl")%>
<span class="fclt-noti-badge badge rounded-pill bg-danger"><%=berichten%></span>
</a>
@@ -313,7 +318,7 @@ function FOOTER(params)
last_msg_oRs.Close();
}
oRs.Close();
%> <a href="berichten.asp" class="tappable"<%=new_msg ? ' data-badge="!"' : ''%>><%=I("fa-circle-y fa-xl")%></a>
%> <a href="<%=rooturl%>/appl/pda/berichten.asp" class="tappable"<%=new_msg ? ' data-badge="!"' : ''%>><%=I("fa-circle-y fa-xl")%></a>
<% } %>
<%=DROPDOWN(hamburger_actions)%>
</footer>

View File

@@ -260,7 +260,7 @@ else
{ // ik mag niets zien, doorstarten
if (user.checkAutorisation( "WEB_MLDUSE", true)) {
// Dan laat maar een melding doen
var theURL = "./melding.asp?mld_key=-1&ins_key=" + ins_key + (stdmkina > 0 ? "&stdm_key="+stdmkina + transitParam : "");
var theURL = "./melding.asp?mld_key=-1&ins_key=" + ins_key + (stdmkina > 0 ? "&stdm_key="+stdmkina : "") + transitParam;
Response.Redirect(theURL);
}
else {
@@ -640,7 +640,7 @@ if (alg_typ == "R" || alg_typ == "W" || alg_typ == "T")
RWFIELD("desc", L("lcl_obj_identification"), ins_info.ins_deel_omschrijving, { pclass: "required", readonly: !this_ins.canChangeAlg || !(ins_info.autonum & 2) });
if (ins_info.ins_deel_state)
{
var sensorstatetext = ins_info.ins_deel_state + "<span class='statedate'>" + toDateTimeString(ins_info.ins_deel_statedate, true, false, true) + "</span>";
var sensorstatetext = "<span class='statedate'>" + toDateTimeString(ins_info.ins_deel_statedate, true, true, true) + "</span><span class='stateval'>" + ins_info.ins_deel_state + "</span>";
if (!ins_info.thresholdstate)
var presentatie = "<span>" + I("fa-sensor") + "</span><span>" + sensorstatetext + "</span>";
else

View File

@@ -746,7 +746,7 @@ var canAdd = authparams.PRSwritelevel < 9 && authparams.ALGwritelevel < 9;
+ " gebrekdatum"
+ ( insFlexParams.anyflex
? insFlexParams.sql
: ""
: ", NULL insflex"
)
+ " FROM ("
+ sqlR

View File

@@ -2604,7 +2604,7 @@ if (mld_key > -1 && this_mld.canReject && action != "forward")
function mld_reject_callback(data)
{
// mobile kan slechts 1 melding per keer afwijzen
if (data.reject_arr[0].inspect)
if (data.reject_arr[0]?.inspect)
{
var insdata = data.reject_arr[0].inspect;
protectRequest.dataToken(insdata);

View File

@@ -32,7 +32,14 @@ var own = getQParamInt("own", 0) == 1;
var klus = getQParamInt("klus", 0) == 1;
var disc_type = getQParamInt("grpby", 1); // 1 = Vakgroep (default), 2 = Behandelteam
var deelsrtcont_key = getQParamInt("deelsrtcont_key", -1); // nieuwe melding vanuit een controletaak
var self = getQParamInt("self", -1);
/* Self;
-2: Opdrachten zonder actieve behandelaar
0/null: Alle opdrachten, ongeacht actieve behandelaar
1: Opdrachten waarbij ik de actieve behandelaar ben
2: -2 & 1 (Dus; Geen actieve behandelaar, of ik ben de actieve behandelaar)
*/
var self = getQParamInt("self", null);
function getDistrictKey()
{
@@ -150,8 +157,10 @@ if (!hasParamFlag)
// Op mobile een dag(en)overzicht tonen van opdrachten op basis van een from en een to datum, voor mij als contactpersoon van de uitvoerende.
// Die datums zijn dan gebaseerd op de plandatum.
var plandatefrom = getQParamDate("plandate_from", null);
var plandateto = getQParamDate("plandate_to", null);
var plandatefrom = getQParamDate("plandate_from", getQParamDate("plandate", null));
var plandateto = getQParamDate("plandate_to", plandatefrom);
plandatefrom = plandatefrom || plandateto;
// Nu zijn ze altijd allebei wel of allebei niet gedefinieerd
}
else
{ // b. heb ik dan opdrachtrechten binnen een scope, dat is ORDBOF of ORDBO2? Dan mag ik opdrachten binnen de scope zien.
@@ -184,10 +193,10 @@ if (!hasParamFlag)
// Wel, afhankelijk van mijn bepaalde rol kan ik mijn overzicht anders willen,
// toegespitster op mijn behoefte (listmode):
// 1. alle opdrachten, met de naam van de contactpersoon erbij (ik of mijn collega, leeg als ik)
// 2. alle opdrachten per uitvoerder, kan ik makkelijk afmelden
// 3. al mijn opdrachten, mijn todolijst
// 4. alle opdracht van de meegegeven melding
// 1. Alle opdrachten, met de naam van de contactpersoon erbij (ik of mijn collega, leeg als ik)
// 2. Alle opdrachten per uitvoerder, kan ik makkelijk afmelden
// 3. Al mijn opdrachten, mijn todolijst
// 4. Alle opdracht van de meegegeven melding
function grp_sel_listmode2(grp)
{
@@ -215,7 +224,7 @@ if (!hasParamFlag)
+ " , o.mld_opdr_bedrijfopdr_volgnr"
+ " , o.mld_statusopdr_key"
+ " , (SELECT p.prs_perslid_naam_full FROM prs_v_perslid_fullnames_all p WHERE p.prs_perslid_key = o.prs_perslid_key) behandelaar"
+ " , (SELECT " + S("prs_contactpers_string") + " FROM prs_contactpersoon cp WHERE cp.prs_contactpersoon_key = o.prs_contactpersoon_key) contactpersoon"
+ " , " + S("prs_contactpers_string") + " contactpersoon"
+ " , mu.naam"
+ " , mu.type"
+ " , mu.intern"
@@ -276,11 +285,13 @@ if (!hasParamFlag)
+ " , alg_locatie l"
+ " , alg_district di"
+ " , mld_v_uitvoerende mu"
+ " , prs_contactpersoon cp"
+ " WHERE o.mld_melding_key = m.mld_melding_key (+)"
+ " AND m.mld_stdmelding_key = std.mld_stdmelding_key (+)"
+ " AND std.mld_ins_discipline_key = d.ins_discipline_key (+)"
+ " AND d.ins_srtdiscipline_key = sd.ins_srtdiscipline_key (+)"
+ " AND o.mld_uitvoerende_keys = mu.mld_uitvoerende_key" // type b of p toch nog ergens doen@?
+ " AND cp.prs_contactpersoon_key(+) = o.prs_contactpersoon_key"
+ (grp_sel==""
? ""
: (listmode == 2
@@ -325,56 +336,19 @@ if (!hasParamFlag)
if (listmode == 1)
{
var sql_plandate = "";
var ora_date1;
var ora_date2;
var day_is_the_same = false;
if (plandatefrom && plandateto)
{
ora_date1 = plandatefrom.beginToSQL();
ora_date2 = plandateto.endToSQL();
day_is_the_same = (plandatefrom.midnight().getTime() == plandateto.midnight().getTime())
var plandate_where = "";
var oneday = false;
if (plandatefrom || plandateto) {
var oneday = plandatefrom.midnight().getTime() == plandateto.midnight().getTime();
plandate_where = " AND o.mld_opdr_plandatum BETWEEN " + plandatefrom.beginToSQL() + " AND " + plandateto.endToSQL();
}
else if (plandatefrom)
{
ora_date1 = plandatefrom.beginToSQL();
ora_date2 = plandatefrom.endToSQL();
day_is_the_same = true;
}
else if (plandateto)
{
ora_date1 = plandateto.beginToSQL();
ora_date2 = plandateto.endToSQL();
day_is_the_same = true;
}
if (day_is_the_same)
{ // ora_date1 en ora_date2 zijn op dezelfde dag.
var sqld = "SELECT fac.datumtijdplusuitvoertijd (" + ora_date1 + ", 0, 'DAGEN') date1 FROM DUAL";
var oRsd = Oracle.Execute(sqld);
var ora_date1 = new Date(oRsd("date1").Value).beginToSQL();
var ora_date2 = new Date(oRsd("date1").Value).endToSQL();
oRsd.close();
}
// Op mobile een dag(en)overzicht tonen van opdrachten op basis van een from en een to datum, voor mij als contactpersoon van de uitvoerende.
// Die datums zijn dan gebaseerd op de plandatum en binnen die datums gesorteerd op tijd (van diezelfde plandatum).
// Ook evt. opdrachten die aan geen contactpersoon zijn toegekend (dus leeg zijn), wil ik in dat dagoverzicht kunnen bekijken.
if (ora_date1 && ora_date2)
sql_plandate = " AND o.mld_opdr_plandatum BETWEEN " + ora_date1 + " AND " + ora_date2;
+ " AND ((SELECT prs_contactpersoon_key"
+ " FROM prs_contactpersoon"
+ " WHERE prs_perslid_key = " + user_key
+ " AND prs_contactpersoon_verwijder IS NULL"
+ " AND prs_bedrijf_key = o.mld_uitvoerende_keys) = o.prs_contactpersoon_key"
+ " OR o.prs_contactpersoon_key IS NULL)"
sql += " AND EXISTS (SELECT 'X' " // Ben ik contactpersoon van het uitvoerende externe bedrijf.
+ " FROM prs_contactpersoon"
+ " WHERE prs_perslid_key = " + user_key
+ " AND prs_contactpersoon_verwijder is null "
+ " AND prs_bedrijf_key = o.mld_uitvoerende_keys)"
+ sql_plandate;
+ plandate_where;
}
if (listmode == 3)
@@ -394,6 +368,27 @@ if (!hasParamFlag)
+ " , prs_v_aanwezigafdeling a"
+ " WHERE p.prs_afdeling_key = a.prs_afdeling_key"
+ " AND p.prs_perslid_key = " + user_key + ")";
if (self) {
// Self heeft betrekking op de actieve behandelaar, dat kan zowel de contactpersoon als de behandelaar zijn
// -2: Opdrachten zonder actieve behandelaar
// 0/null: Alle opdrachten, ongeacht actieve behandelaar
// 1: Opdrachten waarbij ik de actieve behandelaar ben
// 2: -2 & 1 (Dus; Geen actieve behandelaar, of ik ben de actieve behandelaar)
switch (self) {
case -2:
sql += " AND COALESCE(o.prs_contactpersoon_key, o.prs_perslid_key) IS NULL";
break;
case 1:
sql += " AND ( cp.prs_perslid_key = " + user_key
+ " OR o.prs_perslid_key = " + user_key + ")";
break;
case 2:
sql += " AND ( COALESCE(o.prs_contactpersoon_key, o.prs_perslid_key) IS NULL"
+ " OR cp.prs_perslid_key = " + user_key
+ " OR o.prs_perslid_key = " + user_key + ")";
break;
}
}
// Een afmelder (ORDBO2 of EXTORD) mag externe opdrachten zien/afmelden onder bepaalde voorwaarden:
// EXTORD: Hij mag opdrachten zien/afmelden van externe bedrijven waar hij contactpersoon van is,
@@ -455,8 +450,7 @@ if (!hasParamFlag)
sql = "SELECT * FROM (" + sqlA + ") ORDER BY "
+ ((grp_sel == "" && listmode == 2)
? " naam, mld_opdr_datumbegin"
: (listmode == 1 && ora_date1 && ora_date2? " mld_opdr_plandatum," : "") + " actief DESC, halted, einddatum, opdracht")
: (listmode == 1 && plandatefrom ? " mld_opdr_plandatum," : "") + " actief DESC, halted, einddatum, opdracht");
function fncolLink(oRs)
{
@@ -516,7 +510,7 @@ if (!hasParamFlag)
+ (actiecode & 4 ? "<span class='ac'>" + I("fa-comment-smile fa-flip-horizontal", { fastyle: "far" }) + "&nbsp;" + L("lcl_mld_actiecodeUITV") + "</span><br>" : "")
+ (oRs("plaatsmelding").Value? "" + I("fa-map-marker", { fastyle: "far" }) + "&nbsp;"+safe.html(oRs("plaatsmelding").Value) + "<br>" : "")
+ (safeuitv != "" ? safeuitv + "<br>" : "")
+ "" + I("fa-clock", { fastyle: "far" }) + "&nbsp;" + toDateTimeString(oRs("mld_opdr_einddatum").Value, false, false, true)
+ "" + I("fa-clock", { fastyle: "far" }) + "&nbsp;" + toDateTimeString(oRs("einddatum").Value, false, false, true, true)
+ (flagkey ? "<br>&nbsp;<span class='opdrflag"+flagkey+"'>" + I("fa-fclt-flag", { fastyle: "far" }) + "</span>&nbsp;" + L("lcl_opdr_flag" + flagkey) : "")
+ "</div>"
+ "<div class='listbodytext'>" + safe.html(shorttxt(oRs("mld_opdr_omschrijving").Value, S("rs_mobile_maxchar"))) + "</div>";
@@ -527,11 +521,23 @@ if (!hasParamFlag)
// Om wat explicieter te zijn in wat we zien specifieke titels per mode
var listtitle = L("lcl_mobile_opdrachten");
switch (listmode) {
case 1: listtitle = L("lcl_mobile_opdrachten1"); break;
case 1:
if (plandatefrom) {
var datefrom_str = toDateString(plandatefrom, true, true).toLowerCase();
if (oneday) {
listtitle = "Planning van {0}".format(datefrom_str);
} else {
listtitle = "Planning van {0} t/m {1}".format(datefrom_str, toDateString(plandateto, true, true).toLowerCase());
}
} else {
listtitle = L("lcl_mobile_opdrachten1");
}
break;
case 2: listtitle = L("lcl_mobile_opdrachten2") + " " + CurrentPositionMinus1; break; /* is niveau hoger */
case 3: listtitle = L("lcl_mobile_opdrachten3") + " " + CurrentPositionMinus1; break; /* is niveau hoger */
case 4: listtitle = L("lcl_mobile_opdrachten") + " " + L("lcl_mobile_objbijmelding") + " " + meldingNr; break;
}
var addaction = (addAllowed? "../pda/order.asp?mld_key=" + mld_key : "");
PAGE_START({datacache:false});

View File

@@ -105,7 +105,7 @@ imgurl += "&sizeY=" + (1*sizeY);
<html>
<head>
<% FCLTMHeader.Generate({}); %>
<script>
<script>
<% if (!readonly)
{ %>
// is er niet met bootstrap $(function() { $.mobile.zoom.enable(true); });
@@ -164,82 +164,83 @@ imgurl += "&sizeY=" + (1*sizeY);
}
}
<% } %>
// Pinch-to-zoom and pan for the image (always enabled)
(function() {
var img = document.querySelector('#mobplan img');
if (!img) return;
var lastScale = 1, scale = 1, lastX = 0, lastY = 0, posX = 0, posY = 0, startX = 0, startY = 0, dragging = false;
function setTransform() {
img.style.transform = "translate(" + posX + "px," + posY + "px) scale(" + scale + ")";
}
// Pinch-to-zoom and pan for the image (always enabled)
$(function () {
var img = document.querySelector('#mobplan img');
if (!img) return;
var lastScale = 1, scale = 1, lastX = 0, lastY = 0, posX = 0, posY = 0, startX = 0, startY = 0, dragging = false;
img.addEventListener('touchstart', function(e) {
if (e.touches.length === 1) {
dragging = true;
startX = e.touches[0].clientX - lastX;
startY = e.touches[0].clientY - lastY;
function setTransform() {
img.style.transform = "translate(" + posX + "px," + posY + "px) scale(" + scale + ")";
}
});
img.addEventListener('touchmove', function(e) {
if (e.touches.length === 1 && dragging) {
e.preventDefault();
posX = e.touches[0].clientX - startX;
posY = e.touches[0].clientY - startY;
img.addEventListener('touchstart', function(e) {
if (e.touches.length === 1) {
dragging = true;
startX = e.touches[0].clientX - lastX;
startY = e.touches[0].clientY - lastY;
}
});
img.addEventListener('touchmove', function(e) {
if (e.touches.length === 1 && dragging) {
e.preventDefault();
posX = e.touches[0].clientX - startX;
posY = e.touches[0].clientY - startY;
lastX = posX;
lastY = posY;
setTransform();
} else if (e.touches.length === 2) {
e.preventDefault();
dragging = false;
var dx = e.touches[0].clientX - e.touches[1].clientX;
var dy = e.touches[0].clientY - e.touches[1].clientY;
var dist = Math.sqrt(dx*dx + dy*dy);
if (!img._startDist) {
img._startDist = dist;
img._startScale = scale;
} else {
var newScale = img._startScale * (dist / img._startDist);
scale = Math.max(1, Math.min(newScale, 5)); // Clamp zoom
setTransform();
}
}
}, { passive: false });
img.addEventListener('touchend', function(e) {
dragging = false;
img._startDist = null;
img._startScale = scale;
lastX = posX;
lastY = posY;
setTransform();
} else if (e.touches.length === 2) {
e.preventDefault();
dragging = false;
var dx = e.touches[0].clientX - e.touches[1].clientX;
var dy = e.touches[0].clientY - e.touches[1].clientY;
var dist = Math.sqrt(dx*dx + dy*dy);
});
if (!img._startDist) {
img._startDist = dist;
img._startScale = scale;
} else {
var newScale = img._startScale * (dist / img._startDist);
scale = Math.max(1, Math.min(newScale, 5)); // Clamp zoom
// Optional: double tap to reset
var lastTap = 0;
img.addEventListener('touchend', function(e) {
var now = new Date().getTime();
if (e.touches.length === 0 && now - lastTap < 300) {
scale = 1; posX = 0; posY = 0; lastX = 0; lastY = 0;
setTransform();
}
}
}, { passive: false });
if (e.touches.length > 0) {
lastTap = 0;
} else {
lastTap = now;
}
});
img.addEventListener('touchend', function(e) {
dragging = false;
img._startDist = null;
img._startScale = scale;
lastX = posX;
lastY = posY;
});
// Optional: double tap to reset
var lastTap = 0;
img.addEventListener('touchend', function(e) {
var now = new Date().getTime();
if (e.touches.length === 0 && now - lastTap < 300) {
scale = 1; posX = 0; posY = 0; lastX = 0; lastY = 0;
// Mouse wheel zoom (desktop)
img.addEventListener('wheel', function(e) {
e.preventDefault();
var delta = e.deltaY < 0 ? 1.1 : 0.9;
scale = Math.max(1, Math.min(scale * delta, 5));
setTransform();
}
if (e.touches.length > 0) {
lastTap = 0;
} else {
lastTap = now;
}
});
});
// Mouse wheel zoom (desktop)
img.addEventListener('wheel', function(e) {
e.preventDefault();
var delta = e.deltaY < 0 ? 1.1 : 0.9;
scale = Math.max(1, Math.min(scale * delta, 5));
setTransform();
});
})();
</script>
</script>
</head>
<body>
<%

View File

@@ -92,7 +92,7 @@ user.auth_required_or_abort(authparams.ALGwritelevel < 9 && authparams.PRSwritel
function res_claimwp_callback(json, textStatus)
{
if (json.success)
$("#spanclaimwp").text(L("lcl_flexplek") + " " + "<%=safe.html(res_deel)%>" + " " + L("lcl_flexplekclaimed") + " " + "<%=user.naam()%>" + " " + L("lcl_flexplekclaimfooter"));
$("#spanclaimwp").text(L("lcl_flexplek") + " " + "<%=safe.jsstring(res_deel)%>" + " " + L("lcl_flexplekclaimed") + " " + "<%=safe.jsstring(user.naam())%>" + " " + L("lcl_flexplekclaimfooter"));
}
function res_claimwp_submit()

View File

@@ -101,6 +101,105 @@ imgurl += "&sizeY=" + (1*sizeY);
$(this).parent().scrollLeft(($(this).width() - $(this).parent().width()) / 2);
$(this).parent().scrollTop(($(this).height() - $(this).parent().height()) / 2);
}) // JGL: Waarom? .load();
var img = document.getElementById('plattegrond-img');
var container = document.getElementById('mobplan');
var scale = 1, posX = 0, posY = 0, lastX = 0, lastY = 0, startX = 0, startY = 0, dragging = false;
function clamp(val, min, max) {
return Math.max(min, Math.min(max, val));
}
function setTransform() {
var cw = container.clientWidth;
var ch = container.clientHeight;
// Compute pan bounds based on container size & scale
var minX = -(cw * scale - cw) / 2;
var maxX = (cw * scale - cw) / 2;
var minY = -(ch * scale - ch) / 2;
var maxY = (ch * scale - ch) / 2;
posX = clamp(posX, minX, maxX);
posY = clamp(posY, minY, maxY);
lastX = posX;
lastY = posY;
img.style.transform = "translate(" + posX + "px," + posY + "px) scale(" + scale + ")";
}
img.addEventListener('load', function() {
scale = 1;
posX = 0;
posY = 0;
lastX = 0;
lastY = 0;
setTransform();
});
img.addEventListener('touchstart', function(e) {
if (e.touches.length === 1) {
dragging = true;
startX = e.touches[0].clientX - lastX;
startY = e.touches[0].clientY - lastY;
}
});
img.addEventListener('touchmove', function(e) {
if (e.touches.length === 1 && dragging) {
e.preventDefault();
posX = e.touches[0].clientX - startX;
posY = e.touches[0].clientY - startY;
setTransform();
} else if (e.touches.length === 2) {
e.preventDefault();
dragging = false;
var dx = e.touches[0].clientX - e.touches[1].clientX;
var dy = e.touches[0].clientY - e.touches[1].clientY;
var dist = Math.sqrt(dx*dx + dy*dy);
if (!img._startDist) {
img._startDist = dist;
img._startScale = scale;
} else {
var newScale = img._startScale * (dist / img._startDist);
scale = Math.max(1, Math.min(newScale, 5)); // Clamp zoom
setTransform();
}
}
}, { passive: false });
img.addEventListener('touchend', function(e) {
dragging = false;
img._startDist = null;
img._startScale = scale;
lastX = posX;
lastY = posY;
});
// Optional: double tap to reset
var lastTap = 0;
img.addEventListener('touchend', function(e) {
var now = new Date().getTime();
if (e.touches.length === 0 && now - lastTap < 300) {
scale = 1; posX = 0; posY = 0; lastX = 0; lastY = 0;
setTransform();
}
if (e.touches.length > 0) {
lastTap = 0;
} else {
lastTap = now;
}
});
// Mouse wheel zoom (desktop)
img.addEventListener('wheel', function(e) {
e.preventDefault();
var delta = e.deltaY < 0 ? 1.1 : 0.9;
scale = Math.max(1, Math.min(scale * delta, 5));
setTransform();
});
});
function process_info(data)
{
@@ -131,7 +230,6 @@ imgurl += "&sizeY=" + (1*sizeY);
<img alt="<%=L("lcl_room_cad")%>" style="height:auto;display:block;margin:0 auto;" src="<%=safe.htmlattr(imgurl)%>" id="plattegrond-img">
</div>
<%
// En nu nog de legenda
if (thema_key != -1 || themaI_key != -1) {
@@ -245,7 +343,6 @@ imgurl += "&sizeY=" + (1*sizeY);
oRs.Close();
}
}
CONTENT_END();
FOOTER();
@@ -253,106 +350,4 @@ imgurl += "&sizeY=" + (1*sizeY);
PDA_PAGE_END(); %>
</body>
</html>
<% ASPPAGE_END(); %>
<script>
(function() {
var img = document.getElementById('plattegrond-img');
var container = document.getElementById('mobplan');
var scale = 1, posX = 0, posY = 0, lastX = 0, lastY = 0, startX = 0, startY = 0, dragging = false;
function clamp(val, min, max) {
return Math.max(min, Math.min(max, val));
}
function setTransform() {
var cw = container.clientWidth;
var ch = container.clientHeight;
// Compute pan bounds based on container size & scale
var minX = -(cw * scale - cw) / 2;
var maxX = (cw * scale - cw) / 2;
var minY = -(ch * scale - ch) / 2;
var maxY = (ch * scale - ch) / 2;
posX = clamp(posX, minX, maxX);
posY = clamp(posY, minY, maxY);
lastX = posX;
lastY = posY;
img.style.transform = "translate(" + posX + "px," + posY + "px) scale(" + scale + ")";
}
img.addEventListener('load', function() {
scale = 1;
posX = 0;
posY = 0;
lastX = 0;
lastY = 0;
setTransform();
});
img.addEventListener('touchstart', function(e) {
if (e.touches.length === 1) {
dragging = true;
startX = e.touches[0].clientX - lastX;
startY = e.touches[0].clientY - lastY;
}
});
img.addEventListener('touchmove', function(e) {
if (e.touches.length === 1 && dragging) {
e.preventDefault();
posX = e.touches[0].clientX - startX;
posY = e.touches[0].clientY - startY;
setTransform();
} else if (e.touches.length === 2) {
e.preventDefault();
dragging = false;
var dx = e.touches[0].clientX - e.touches[1].clientX;
var dy = e.touches[0].clientY - e.touches[1].clientY;
var dist = Math.sqrt(dx*dx + dy*dy);
if (!img._startDist) {
img._startDist = dist;
img._startScale = scale;
} else {
var newScale = img._startScale * (dist / img._startDist);
scale = Math.max(1, Math.min(newScale, 5)); // Clamp zoom
setTransform();
}
}
}, { passive: false });
img.addEventListener('touchend', function(e) {
dragging = false;
img._startDist = null;
img._startScale = scale;
lastX = posX;
lastY = posY;
});
// Optional: double tap to reset
var lastTap = 0;
img.addEventListener('touchend', function(e) {
var now = new Date().getTime();
if (e.touches.length === 0 && now - lastTap < 300) {
scale = 1; posX = 0; posY = 0; lastX = 0; lastY = 0;
setTransform();
}
if (e.touches.length > 0) {
lastTap = 0;
} else {
lastTap = now;
}
});
// Mouse wheel zoom (desktop)
img.addEventListener('wheel', function(e) {
e.preventDefault();
var delta = e.deltaY < 0 ? 1.1 : 0.9;
scale = Math.max(1, Math.min(scale * delta, 5));
setTransform();
});
})();
</script>
<% ASPPAGE_END(); %>

View File

@@ -55,9 +55,31 @@ if (rsv_ruimte_key > -1)
// BESTAANDE DEELRESERVERING
res.res_set_dialect(rsv_ruimte_key);
var this_res = res.func_enabled(rsv_ruimte_key); // Wat heb ik zoal aan rechten op deze specifieke reservering
var local_tz = res.getRsvTimezone(rsv_ruimte_key);
if (this_res.canChange) {
this_res.canChange = local_tz == S("fac_server_timezone");
}
user.auth_required_or_abort(this_res.canReadAny);
sql = "SELECT * FROM res_rsv_ruimte WHERE res_rsv_ruimte_key = " + rsv_ruimte_key;
sql = "SELECT res_ruimte_opstel_key"
+ " , prs_kostenplaats_key"
+ " , res_rsv_ruimte_bezoekers"
+ " , res_status_fo_key"
+ " , res_rsv_ruimte_flag"
+ " , res_activiteit_key"
+ " , res_reservering_key"
+ " , res_rsv_ruimte_volgnr"
+ " , res_rsv_ruimte_van"
+ " , res_rsv_ruimte_tot"
+ " , " + convertToLocalTimeSQL("res_rsv_ruimte_van", local_tz) + " local_van"
+ " , " + convertToLocalTimeSQL("res_rsv_ruimte_tot", local_tz) + " local_tot"
+ " , res_rsv_ruimte_omschrijving"
+ " , res_rsv_ruimte_opmerking"
+ " , res_rsv_ruimte_externnr"
+ " , res_rsv_ruimte_contact_key"
+ " , res_rsv_ruimte_host_key"
+ " , mld_opdr_key"
+ " FROM res_rsv_ruimte"
+ " WHERE res_rsv_ruimte_key = " + rsv_ruimte_key;
var oRsR = Oracle.Execute(sql);
var rsv = { opstel_key: oRsR("res_ruimte_opstel_key").Value
, account: oRsR("prs_kostenplaats_key").Value || -1
@@ -70,6 +92,8 @@ if (rsv_ruimte_key > -1)
, ruimte_volgnr: oRsR("res_rsv_ruimte_volgnr").Value
, ruimte_van: new Date(oRsR("res_rsv_ruimte_van").Value)
, ruimte_tot: new Date(oRsR("res_rsv_ruimte_tot").Value)
, local_van: new Date(oRsR("local_van").Value)
, local_tot: new Date(oRsR("local_tot").Value)
, omschrijving: oRsR("res_rsv_ruimte_omschrijving").Value
, opmerking: oRsR("res_rsv_ruimte_opmerking").Value
, extern_nr: oRsR("res_rsv_ruimte_externnr").Value
@@ -982,8 +1006,8 @@ else
if (fe_lastminute || !this_res.canChange)
{
ROFIELD("fld", L("lcl_from") , toDateTimeString(rsv.ruimte_van), { });
ROFIELD("fld", L("lcl_to") , toDateTimeString(rsv.ruimte_tot), {combine: true});
ROFIELD("fld", L("lcl_from") , toDateTimeString(rsv.local_van, { isLocal: true }), { });
ROFIELD("fld", L("lcl_to") , toDateTimeString(rsv.local_tot, { isLocal: true }), {combine: true});
}
else
{

View File

@@ -89,6 +89,12 @@ var zoom = getQParamFloat("zoom", 2);
var geb_key = getQParamInt("geb_key", -1);
var floor_key = getQParamInt("floor_key", -1);
var werkpl_key = getQParamInt("wsp_key", -1);
var local_tz = S("fac_server_timezone");
if (geb_key > -1) {
local_tz = res.getTimezoneBy(geb_key, "G");
} else if (floor_key > -1) {
local_tz = res.getTimezoneBy(floor_key, "V");
}
var res_deel_key = getQParamInt("res_deel_key", -1); // unused. Zou ooit direct naar dag+intervalselectie kunnen
var thema_key = getQParamInt("thema_key", 12);
@@ -96,8 +102,10 @@ var themaI_key = getQParamInt("themaI_key", 13);
var bordlabel_key= getQParamInt("bordlabel_key", 13);
var daylimit = getQParamInt("daylimit", 12); // na daylimit kun je voor de eerste dag niet meer reserveren, default 12:00, werkt niet icm offset
var afternoon = new Date().getHours() >= daylimit;
var dateoffset = getQParamInt("offset", afternoon?1:0); // 12:00 default morgen ipv vandaag
var local_now = convertToLocalTime(new Date(), local_tz);
var afternoon = local_now.getHours() >= daylimit;
var dateoffset = getQParamInt("offset", afternoon ? 1 : 0);
var datelimit = getQParamInt("limit", 7); // aantal te kiezen dagen tov offset
var floorselect = getQParamInt("floorselect", 0); // na gebouw ook de verdiepingen laten kiezen
var mapselect = getQParamInt("mapselect", 1) == 1; // werkplek via plattegrond kiezen
@@ -171,8 +179,11 @@ var qrc = getQParamInt("qrc", 0) != 0;
}
function fnFavWP_colSubHeader(oRs)
{
var result = oRs("alg_gebouw_naam").Value;
result += (result ? ", " : "") + oRs("alg_locatie_plaats").Value;
var result = oRs("alg_gebouw_naam").Value || "";
var alg_locatie_plaats = oRs("alg_locatie_plaats").Value || "";
if (alg_locatie_plaats) {
result += (result ? ", " : "") + alg_locatie_plaats;
}
return result;
}
@@ -202,7 +213,7 @@ var qrc = getQParamInt("qrc", 0) != 0;
}
function fnDisciplinecapaciteit(oRs)
{
return oRs("aantal").Value+" "+oRs("ins_discipline_omschrijving").Value;
return oRs("aantal").Value + " " + oRs("ins_discipline_omschrijving").Value;
}
function fnGebouwIcon(oRs)
{
@@ -256,6 +267,7 @@ var qrc = getQParamInt("qrc", 0) != 0;
var gebouwcapaciteit = aantalitems * dagcapaciteit; // in uren
sql = rdpt.dagbezetting_resdelen_in_gebouw_sql(res_disc_key_arr, geb_key, -1, dateoffset, datelimit, null); // JGL: act_key
if (werkpl_key > -1 && resdate == null)
{ // Is een eerder gekozen werkplek nog beschikbaar?
var sql = "SELECT datum"
@@ -307,7 +319,7 @@ var qrc = getQParamInt("qrc", 0) != 0;
{ // Een eerder gekozen werkplek.
var dt = new Date(oRs("datum").Value);
var v_bloktijden = res.getBloktijdenDisc(res_disc_key_arr[0], dt, geb_key);
var res_blok = rdpt.getIntervalString(werkpl_key, dt, v_bloktijden);
var res_blok = rdpt.getIntervalString(werkpl_key, dt, v_bloktijden, geb_key);
if (res_blok == "")
txt = L("lcl_niet_beschikbaar");
else
@@ -417,7 +429,7 @@ var qrc = getQParamInt("qrc", 0) != 0;
{
var bcls= "";
var sql2 = rdpt.dagbezetting_resdelen_in_gebouw_sql(res_disc_key_arr, geb_key, oRs("alg_verdieping_key").value, dateoffset, datelimit, resdate);
oRs2 = Oracle.Execute(sql2)
oRs2 = Oracle.Execute(sql2);
bcls += rdpt.bezettings_class(oRs2("gevuld").value, calc_dagcapaciteit*oRs("aantal").value, minimumbeschikbaarheid*oRs("aantal").value);
oRs2.close();
return bcls; // te duur
@@ -546,7 +558,7 @@ var qrc = getQParamInt("qrc", 0) != 0;
function fncolSubHeader(oRs)
{
var res_blok = rdpt.getIntervalString(oRs("res_deel_key").value, resdate, bloktijden);
var res_blok = rdpt.getIntervalString(oRs("res_deel_key").value, resdate, bloktijden, geb_key);
if (res_blok =="")
res_blok = "";//L("lcl_niet_beschikbaar");
else

View File

@@ -57,11 +57,6 @@ FCLTHeader.Requires({ plugins: ["kenmerk"], css: [rooturl+"/appl/res/res.css"] }
var isMobile = getQParamInt("ismobile", 0); // Wordt vanuit reservering_new_by_placetime.asp (mobile weergave) op 1 gezet. Vanuit desktop weergave word thet niet gezet.
var res_noshowgrace = 5*60*1000 ; // hoeveel milliseconden na aanvang mag je een (lege) bezette ruimte afpakken?
var adhoc_threshold = S("res_adhoc_threshold"); // Hoeveel minuten voor het aflopen van de huidige reservering mag je zelf alvast reserveren?
// Gebruik de Oracle tijd als startpunt. Van een noshow is de eindtijd op de Oracle TRUNC(SYSDATE, 'MI')
// gezet en je komt anders in de de problemen als Oracle een minuut voorloopt
var oRs = Oracle.Execute("SELECT TRUNC(SYSDATE, 'MI') FROM DUAL");
var now = new Date(oRs(0).Value);
oRs.Close();
var ins_key = getQParamInt("ins_key", -1);
var res_ruimte_key = -1;
@@ -80,6 +75,9 @@ FCLTHeader.Requires({ plugins: ["kenmerk"], css: [rooturl+"/appl/res/res.css"] }
res_van = new Date();
}
var server_tz = S("fac_server_timezone");
var local_tz = server_tz;
var link2res = getQParamInt("link2res", 1);
if (ins_key != -1 || res_deel_key != -1)
@@ -111,9 +109,11 @@ FCLTHeader.Requires({ plugins: ["kenmerk"], css: [rooturl+"/appl/res/res.css"] }
oRs = Oracle.Execute(sql);
var alg_ruimte_key = oRs("ins_alg_ruimte_key").value;
oRs.Close();
local_tz = res.getTimezoneByRuimte(alg_ruimte_key, "ALG");
}
else if (ins_key != -1 /* <- Dit is nooit waar want dan zit je hierboven al in DeelMode */ || res_artikel_key != -1)
else if (res_artikel_key != -1)
{
// UNSUPPORTED; local_tz = ?
// ArtikelMode
ArtikelMode = true;
}
@@ -125,9 +125,11 @@ FCLTHeader.Requires({ plugins: ["kenmerk"], css: [rooturl+"/appl/res/res.css"] }
if (alg_ruimte_key == -1)
{
res_ruimte_key = getQParamInt("res_ruimte_key");
local_tz = res.getTimezoneByRuimte(res_ruimte_key, "RES");
}
else
{
local_tz = res.getTimezoneByRuimte(alg_ruimte_key, "ALG");
// Dit moet nog uitgebreid worden zodat het meerdere "enkele_ruimten" in verschillende catalogi kan handelen
// voor nu MAX() om AiAi uit te voorkomen
var enkele_ruimte = "(SELECT MAX(ra.res_ruimte_key)"
@@ -159,6 +161,13 @@ FCLTHeader.Requires({ plugins: ["kenmerk"], css: [rooturl+"/appl/res/res.css"] }
var submitting = getQParamInt("submit", 0) == 1;
var qrc = getQParamInt("qrc", 0) != 0;
function toLocalDate(expr) {
return convertToLocalTimeSQL(expr, local_tz);
}
function toServerDate(expr) {
return convertToServerTimeSQL(expr, local_tz);
}
var transitParam = buildTransitParam(["res_ruimte_key", "res_deel_key"]);
if (res_ruimte_key < 0 && res_deel_key < 0 && res_artikel_key < 0)
@@ -520,12 +529,16 @@ FCLTHeader.Requires({ plugins: ["kenmerk"], css: [rooturl+"/appl/res/res.css"] }
if (RuimteMode) // TODO: DIT HOUDT NOG GEEN REKENING MET KOPPELZALEN!
{
// Zoek alle bestaande reserveringen op deze ruimte die nog bezig zijn of komen
var localResVanExpr = toLocalDate("rm.res_rsv_ruimte_van");
var localResTotExpr = toLocalDate("rm.res_rsv_ruimte_tot");
sql = "SELECT rm.res_reservering_key,"
+ " rm.res_rsv_ruimte_volgnr,"
+ " rm.res_rsv_ruimte_key,"
+ " rm.res_rsv_ruimte_omschrijving,"
+ " res_rsv_ruimte_van,"
+ " res_rsv_ruimte_tot,"
+ " rm.res_rsv_ruimte_van,"
+ " rm.res_rsv_ruimte_tot,"
+ " " + localResVanExpr + " AS local_van,"
+ " " + localResTotExpr + " AS local_tot,"
+ " res_disc_params_preposttime,"
+ " (SELECT prs_perslid_naam_friendly FROM prs_v_perslid_fullnames pf WHERE pf.prs_perslid_key = rm.res_rsv_ruimte_host_key) host,"
+ " rm.res_rsv_ruimte_host_key host_key,"
@@ -535,16 +548,20 @@ FCLTHeader.Requires({ plugins: ["kenmerk"], css: [rooturl+"/appl/res/res.css"] }
+ " res_rsv_ruimte rm,"
+ " res_ruimte_opstelling ro,"
+ " res_ruimte r";
if (PlanMode) // wil ik alles van res_van weten
{
sql +=" WHERE res_rsv_ruimte_van < {0}".format(res_van.endToSQL())
+ " AND res_rsv_ruimte_tot > {0}".format(res_van.beginToSQL());
}
else
{
sql +=" WHERE res_rsv_ruimte_van BETWEEN TRUNC (SYSDATE) AND TRUNC (SYSDATE) + 1" // Alleen vandaag
+ " AND res_rsv_ruimte_tot BETWEEN SYSDATE AND TRUNC (SYSDATE) + 1"; // Alleen lopende en toekomstige reserveringen
}
if (PlanMode) // wil ik alles van res_van weten
{
// res_van is de lokale dag (geTRUNC'd dus)
var serverResdateRangeStart = toServerDate(res_van.toSQL());
var serverResdateRangeEnd = serverResdateRangeStart + " + 1 - (1 / 24 / 60 / 60)";
sql += " WHERE rm.res_rsv_ruimte_van < " + serverResdateRangeEnd
+ " AND rm.res_rsv_ruimte_tot > " + serverResdateRangeStart;
}
else // Ad-hoc
{
var serverResdateRangeEnd = toServerDate("TRUNC(" + toLocalDate("SYSDATE") + ") + 1 - (1 / 24 / 60 / 60)");
sql += " WHERE rm.res_rsv_ruimte_van < " + serverResdateRangeEnd
+ " AND rm.res_rsv_ruimte_tot > SYSDATE"; // Alleen vandaag en alleen lopende en toekomstige reserveringen
}
sql += " AND rm.res_ruimte_opstel_key = ro.res_ruimte_opstel_key"
+ " AND ro.res_ruimte_key = r.res_ruimte_key"
+ " AND r.res_ruimte_key = " + res_ruimte_key
@@ -552,30 +569,38 @@ FCLTHeader.Requires({ plugins: ["kenmerk"], css: [rooturl+"/appl/res/res.css"] }
+ " AND rm.res_rsv_ruimte_verwijder IS NULL"
+ " AND (res_rsv_ruimte_bezoekers_shown IS NULL OR res_rsv_ruimte_bezoekers_shown > 0)" // NoShow?
+ " AND rm.res_rsv_ruimte_dirtlevel = 0"
+ " ORDER BY rm.res_rsv_ruimte_van"; // Eerste vooraan.
+ " ORDER BY res_rsv_ruimte_van"; // Eerste vooraan.
} else {
var localResVanExpr = toLocalDate("rm.res_rsv_ruimte_van");
var localResTotExpr = toLocalDate("rm.res_rsv_ruimte_tot");
sql = "SELECT rm.res_reservering_key,"
+ " rm.res_rsv_ruimte_volgnr,"
+ " rm.res_rsv_ruimte_key,"
+ " rm.res_rsv_ruimte_omschrijving,"
+ " res_rsv_ruimte_van,"
+ " res_rsv_ruimte_tot,"
+ " rm.res_rsv_ruimte_van,"
+ " rm.res_rsv_ruimte_tot,"
+ " " + localResVanExpr + " AS local_van ,"
+ " " + localResTotExpr + " AS local_tot ,"
+ " 0 res_disc_params_preposttime,"
+ " (SELECT prs_perslid_naam_friendly FROM prs_v_perslid_fullnames pf WHERE pf.prs_perslid_key = rm.res_rsv_ruimte_host_key) host,"
+ " rm.res_rsv_ruimte_host_key host_key,"
+ " rd.res_deel_key"
+ " FROM res_rsv_ruimte rm,"
+ " res_rsv_deel rd,"
+ " res_deel d"
+ " res_deel d";
if (PlanMode) // wil ik alles van res_van weten
{
sql +=" WHERE res_rsv_ruimte_van < {0}".format(res_van.endToSQL())
+ " AND res_rsv_ruimte_tot > {0}".format(res_van.beginToSQL())
// res_van is de lokale dag (geTRUNC'd dus)
var serverResdateRangeStart = toServerDate(res_van.toSQL());
var serverResdateRangeEnd = serverResdateRangeStart + " + 1 - (1 / 24 / 60 / 60)";
sql += " WHERE rm.res_rsv_ruimte_van < " + serverResdateRangeEnd
+ " AND rm.res_rsv_ruimte_tot > " + serverResdateRangeStart;
}
else
{
sql +=" WHERE res_rsv_ruimte_van BETWEEN TRUNC (SYSDATE) AND TRUNC (SYSDATE) + 1" // Alleen vandaag
+ " AND res_rsv_ruimte_tot BETWEEN SYSDATE AND TRUNC (SYSDATE) + 1" // Alleen lopende en toekomstige reserveringen
var serverResdateRangeEnd = "SYSDATE + 1 - (1 / 24 / 60 / 60)";
sql += " WHERE rm.res_rsv_ruimte_van < " + serverResdateRangeEnd
+ " AND rm.res_rsv_ruimte_tot > SYSDATE"; // Alleen vandaag en alleen lopende en toekomstige reserveringen
}
// sql for check on existing workplace reservations
var sql_pers = sql
@@ -608,6 +633,11 @@ FCLTHeader.Requires({ plugins: ["kenmerk"], css: [rooturl+"/appl/res/res.css"] }
for (var i in periods) // Het zijn altijd strings
periods[i] = parseInt(periods[i]);
// Van een noshow is de eindtijd op de Oracle TRUNC(SYSDATE, 'MI') gezet en je komt anders in de de problemen als Oracle een minuut voorloopt
var oRs = Oracle.Execute("SELECT " + toLocalDate("TRUNC(SYSDATE, 'MI')") + " FROM DUAL");
var now = new Date(oRs(0).Value);
oRs.Close();
var maxTime = now.setFloatHours(reindtijd);
var minuten = now.getHours() * 60 + now.getMinutes();
var blokstart = Math.ceil(minuten / (S("res_h")*60)) * S("res_h")*60; // omhoog afgerond op period[0]
@@ -645,8 +675,10 @@ FCLTHeader.Requires({ plugins: ["kenmerk"], css: [rooturl+"/appl/res/res.css"] }
var oRs = Oracle.Execute( sql );
while (!oRs.Eof)
{
var van = new Date(oRs("res_rsv_ruimte_van").Value);
var tot = new Date(oRs("res_rsv_ruimte_tot").Value);
var server_van = new Date(oRs("res_rsv_ruimte_van").Value);
var server_tot = new Date(oRs("res_rsv_ruimte_tot").Value);
var local_van = new Date(oRs("local_van").Value);
var local_tot = new Date(oRs("local_tot").Value);
// Let op: hier wordt voor elk gedefinieerd interval bekeken of deze reservering die bezet, om aan het einde te weten
// welke intervallen er dus nog helemaal vrij zijn. Afhankelijk van de gedefinieerde intervallen kan een reservering
@@ -654,17 +686,16 @@ FCLTHeader.Requires({ plugins: ["kenmerk"], css: [rooturl+"/appl/res/res.css"] }
// dus niet per se iets over hoe lang je reservering duurt.
// Ik denk dat ik daarom ook de echte onderliggende van en tot nodig heb, om dat later te kunnen vertellen
// zonder weer opnieuw die reserveringen te moeten zoeken
for (var i = 0; i < bloktijden.length; i++)
{
if (van < bloktijden[i].einddatum && tot > bloktijden[i].startdatum)
if (local_van < bloktijden[i].einddatum && local_tot > bloktijden[i].startdatum)
{
bloktijden[i].bezet = oRs("host").Value;
bloktijden[i].bezet_key = oRs("host_key").Value;
bloktijden[i].res_rsv_ruimte_key = oRs("res_rsv_ruimte_key").Value;
bloktijden[i].res_reservering_nr = oRs("res_reservering_key").Value+"/"+oRs("res_rsv_ruimte_volgnr").Value;
bloktijden[i].resvan = van;
bloktijden[i].restot = tot;
bloktijden[i].resvan = local_van;
bloktijden[i].restot = local_tot;
}
}
oRs.MoveNext();
@@ -679,23 +710,25 @@ FCLTHeader.Requires({ plugins: ["kenmerk"], css: [rooturl+"/appl/res/res.css"] }
var rsv_omschrijving = oRs("res_rsv_ruimte_omschrijving").Value;
var rsv_host = oRs("host").Value;
var rsv_ruimte_key = oRs("res_rsv_ruimte_key").Value;
var van = new Date(oRs("res_rsv_ruimte_van").Value);
var tot = new Date(oRs("res_rsv_ruimte_tot").Value);
var server_van = new Date(oRs("res_rsv_ruimte_van").Value);
var server_tot = new Date(oRs("res_rsv_ruimte_tot").Value);
var local_van = new Date(oRs("local_van").Value);
var local_tot = new Date(oRs("local_tot").Value);
if (RuimteMode) {
var bezoekers_expected = oRs("res_rsv_ruimte_bezoekers").Value;
var bezoekers_shown = oRs("res_rsv_ruimte_bezoekers_shown").Value;
}
var prepost = oRs("res_disc_params_preposttime").Value || 0; // in uren
var totMinusThreshold = new Date(tot).setMinutes(tot.getMinutes() - adhoc_threshold);
var totMinusThreshold = new Date(local_tot).setMinutes(local_tot.getMinutes() - adhoc_threshold);
if (totMinusThreshold <= now) { // Deze afspraak loopt nog, maar ik mag al wel vast boeken
now = new Date(tot); // Nieuwe startdatum (niet 'now', maar straks dus)
now = new Date(local_tot); // Nieuwe startdatum (niet 'now', maar straks dus)
lopendeRes = true;
oRs.moveNext(); // Kijk of de volgende afspraak niet blokkeert
continue;
}
var schoonvan = new Date(van);
var schoonvan = new Date(local_van);
schoonvan.setMinutes(schoonvan.getMinutes() - prepost * 60);
if (schoonvan < times[0] && tot > now) { // Bezig of begint binnen schoonmaaktijd
if (schoonvan < times[0] && local_tot > now) { // Bezig of begint binnen schoonmaaktijd
var nubezet = true;
}
oRs.moveNext();
@@ -833,7 +866,7 @@ FCLTHeader.Requires({ plugins: ["kenmerk"], css: [rooturl+"/appl/res/res.css"] }
id: "tot_" + tm,
value: "",
checked: !timeslotAvailable,
label: L("lcl_pda_res_ruimtereserveer").format(toTimeString(times[tm])),
label: L("lcl_pda_res_ruimtereserveer").format(toTimeString(times[tm], { isLocal: true })),
data: {
van: now.getTime(),
tot: times[tm].getTime()
@@ -850,8 +883,8 @@ FCLTHeader.Requires({ plugins: ["kenmerk"], css: [rooturl+"/appl/res/res.css"] }
var myres_rsv_ruimte_key = getQParamInt("res_rsv_ruimte_key", -1);
if (myres_rsv_ruimte_key > 0) { // Altijd?
sql_vt = "SELECT res_rsv_ruimte_van"
+ " , res_rsv_ruimte_tot"
sql_vt = "SELECT " + toLocalDate("res_rsv_ruimte_van") + " res_rsv_ruimte_van"
+ " , " + toLocalDate("res_rsv_ruimte_tot") + " res_rsv_ruimte_tot"
+ " , res_reservering_key"
+ " , res_rsv_ruimte_volgnr"
+ " FROM res_rsv_ruimte"
@@ -867,9 +900,9 @@ FCLTHeader.Requires({ plugins: ["kenmerk"], css: [rooturl+"/appl/res/res.css"] }
if (myres) { // Als we niet zojuist hebben gereserveerd (!submitting), laat dan al je eigen reserveringen zien (if any)
Response.write("<div class='modconfirm'>"+L("lcl_res_deel_planmode_confirm").format((RuimteMode ? safe.html(res_ruimte_nr) : safe.html(res_deel_omschrijving)),
toDateString(res_van, true, false),
toTimeString(mystart),
toTimeString(myend),
toDateString(res_van, { noDay: true, isLocal: true }),
toTimeString(mystart, { isLocal: true }),
toTimeString(myend, { isLocal: true }),
myres_reservering_nrs.join(", "),
rooturl + "/?u=reservering&k=" + myres_rsv_ruimte_key) + "</div>");
}
@@ -888,8 +921,10 @@ FCLTHeader.Requires({ plugins: ["kenmerk"], css: [rooturl+"/appl/res/res.css"] }
var oRs_pers = Oracle.Execute( RuimteMode ? sql : sql_pers );
while (!oRs_pers.Eof)
{
var van = new Date(oRs_pers("res_rsv_ruimte_van").Value);
var tot = new Date(oRs_pers("res_rsv_ruimte_tot").Value);
var server_van = new Date(oRs_pers("res_rsv_ruimte_van").Value);
var server_tot = new Date(oRs_pers("res_rsv_ruimte_tot").Value);
var local_van = new Date(oRs_pers("local_van").Value);
var local_tot = new Date(oRs_pers("local_tot").Value);
%>
res_pers["<%=user_key%>"].push({
bezet: "<%=safe.jsstring(oRs_pers("host").Value)%>",
@@ -897,8 +932,8 @@ FCLTHeader.Requires({ plugins: ["kenmerk"], css: [rooturl+"/appl/res/res.css"] }
res_deel_key: <%=(RuimteMode ? "null" : oRs_pers("res_deel_key").Value)%>,
res_rsv_ruimte_key: <%=oRs_pers("res_rsv_ruimte_key").Value%>,
res_reservering_nr: "<%=oRs_pers("res_reservering_key").Value + "/" + oRs_pers("res_rsv_ruimte_volgnr").Value%>",
resvan: new Date(<%=van.getTime()%>),
restot: new Date(<%=tot.getTime()%>)
resvan_ms: <%=local_van.getTime()%>,
restot_ms: <%=local_tot.getTime()%>
});
<%
oRs_pers.MoveNext();
@@ -918,20 +953,16 @@ FCLTHeader.Requires({ plugins: ["kenmerk"], css: [rooturl+"/appl/res/res.css"] }
data,
FcltCallbackAndThen((json) => {
res_pers[prs_key] = json.rsv;
res_pers[prs_key].resvan = new Date(res_pers[prs_key].resvan);
res_pers[prs_key].restot = new Date(res_pers[prs_key].restot);
}), "json");
}
var _from = new Date(from);
var _to = new Date(to);
var return_doubles = [];
var index = 0;
if (!(prs_key in res_pers)) {
return false;
}
for (index = 0; index < res_pers[prs_key].length; index++) {
if ((_from >= res_pers[prs_key][index].restot || _to <= res_pers[prs_key][index].resvan) == false) {
if (from < res_pers[prs_key][index].restot_ms && to > res_pers[prs_key][index].resvan_ms) {
return_doubles.push(res_pers[prs_key][index]);
}
}
@@ -953,11 +984,11 @@ FCLTHeader.Requires({ plugins: ["kenmerk"], css: [rooturl+"/appl/res/res.css"] }
// Dit is eigenlijk niet relevant voor een normale gebruiker
// maar voor een eventuele noshow wel!
// KFNS#35010: ook tonen als het toch geen geheim is
if (user.checkAutorisation( "WEB_RESNOS", true) || (planbordTooltipShowing(rsv_ruimte_key) == 0)) {
if (user.checkAutorisation("WEB_RESNOS", true) || (planbordTooltipShowing(rsv_ruimte_key) == 0)) {
if (!times.length) {
Response.write("<span class='bezetinfo'>" + I("fa-ban fa-xl") + " " + L("lcl_mobile_none_beschik") + "</span>");
} else if (van) {
Response.write("<span class='bezetinfo'>"+toTimeString(van)+" - "+toTimeString(tot)+": "+ safe.html(rsv_omschrijving)+"/"+safe.html(rsv_host)+"</span>");
} else if (local_van) {
Response.write("<span class='bezetinfo'>"+toTimeString(local_van, { isLocal: true })+" - "+toTimeString(local_tot, { isLocal: true })+": "+ safe.html(rsv_omschrijving)+"/"+safe.html(rsv_host)+"</span>");
}
}
%></div><%
@@ -968,7 +999,7 @@ FCLTHeader.Requires({ plugins: ["kenmerk"], css: [rooturl+"/appl/res/res.css"] }
%><div class="cvrij"><%
Response.write("<div class='vrij'>"+safe.html(RuimteMode ? res_ruimte_nr : res_deel_omschrijving)+"</div>")
%></div><%
van = null; // er is geen eerstvolgende in de weg
local_van = null; // er is geen eerstvolgende in de weg
}
}
@@ -1001,7 +1032,7 @@ FCLTHeader.Requires({ plugins: ["kenmerk"], css: [rooturl+"/appl/res/res.css"] }
if (!submitting && timeslot_radios.length)
{
if (timeslotAvailable) {
Response.write("<div class='modhint text-center'>"+L("lcl_res_deel_planmode_hint" + (submitting ? "2" : "1")).format(toDateString(res_van, false, false).toLowerCase(), res_deel_opmerking||"")+"</div>");
Response.write("<div class='modhint text-center'>"+L("lcl_res_deel_planmode_hint" + (submitting ? "2" : "1")).format(toDateString(res_van, { isLocal: true }).toLowerCase(), res_deel_opmerking||"")+"</div>");
}
CONTROLGROUP_START({ id: "bloktijden" });
RADIO_GROUP("timeslots", timeslot_radios, { big: true });
@@ -1017,7 +1048,7 @@ FCLTHeader.Requires({ plugins: ["kenmerk"], css: [rooturl+"/appl/res/res.css"] }
CONTROLGROUP_END();
}
if (nubezet && now - van > res_noshowgrace
if (nubezet && now - local_van > res_noshowgrace
&& res_noshowgrace > -1 /* EN minstens res_noshowgrace na aanvang */
&& !DeelMode // ondersteunen we (nog) niet
&& user.checkAutorisation( "WEB_RESNOS", true))
@@ -1119,18 +1150,18 @@ FCLTHeader.Requires({ plugins: ["kenmerk"], css: [rooturl+"/appl/res/res.css"] }
<div class="next-res-title"><%=L("lcl_mobile_rsv_next")%></div>
<div class="next-res-descr"><%=L("lcl_none")%></div>
<% } else {
var van = schoonvan || van;
var isToday = !PlanMode || new Date().midnight().getTime() === new Date(van).midnight().getTime();
var van = isToday ? toTimeString(van, false, true) : toDateTimeString(van, false, true, false, true);
var tot = isToday ? toTimeString(tot, false, true) : toDateTimeString(tot, false, true, false, true);
var local_van = schoonvan || local_van;
var isToday = !PlanMode || new Date().midnight().getTime() === new Date(local_van).midnight().getTime();
var local_van = isToday ? toTimeString(local_van, { isLocal: true }) : toDateTimeString(local_van, { noDay: true, noMidnight: true, isLocal: true });
var local_tot = isToday ? toTimeString(local_tot, { isLocal: true }) : toDateTimeString(local_tot, { noDay: true, noMidnight: true, isLocal: true });
if (nubezet || lopendeRes) {
if (lopendeRes) { %>
<div class="next-res-title"><%=I("fa-exclamation-triangle")%></div>
<% } %>
<div class="next-res-descr"><%=L("lcl_mobile_ruimtebezet").format(tot)%></div>
<div class="next-res-descr"><%=L("lcl_mobile_ruimtebezet").format(local_tot)%></div>
<% } else if (!myres) { %>
<div class="next-res-title"><%=L("lcl_mobile_rsv_next")%></div>
<div class="next-res-descr"><%=van%> tot <%=tot%></div>
<div class="next-res-descr"><%=local_van%> tot <%=local_tot%></div>
<% }
}
}

View File

@@ -204,8 +204,8 @@ oRs.Close();
toRs = Oracle.Execute(tsql);
if (toRs(0).value == 1) { // eentje slechts, dan naar de details; max is vanzelfsprekend die ene
BUTTON(L("lcl_mobile_objecten")+" (1)", {linkid: "./ins_deel.asp?ins_key="+toRs(1).value + transitParam, icon: "fa-info" });
} else if (toRs(0).value > 0) { // meerdere, dan naar lijst
BUTTON(L("lcl_mobile_objecten")+" ("+toRs(0).value+")", {linkid: "./ins_list.asp?ruimte_key="+ruimte_key +"&plaatsfilter=0" + transitParam, icon: "fa-info"});
} else if (toRs(0).value > 0) { // meerdere, dan naar lijst, en onderdruk persoons-afdelings-terrein objecten.
BUTTON(L("lcl_mobile_objecten")+" ("+toRs(0).value+")", {linkid: "./ins_list.asp?ruimte_key="+ruimte_key +"&plaatsfilter=0&p=0&a=0&t=0" + transitParam, icon: "fa-info"});
}
toRs.Close();
}

View File

@@ -376,7 +376,6 @@ if (!submitting)
FCLTselector( "wplx"
, similarWP_sql
, { label: L("lcl_workplace")
, emptyOption: L("lcl_select_werkplek")
, required: true
, mobile: true
}

View File

@@ -301,7 +301,9 @@ BLOCK_START("prsPerslid", L("lcl_prs_basisblok"), {buttons: btns, icon: "fa-id-c
RWFIELDTR("prs_oslog2", "fld", L("lcl_prs_person_login2"), prs_oslog2, {maxlength: 256});
}
}
ROFIELDTR("fld", L("prs_perslid_inactief"), toDateTimeString(prs_inactief_datum), {suppressEmpty: true});
if (prs_key > -1) {
ROFIELDTR("fld", L("prs_perslid_inactief"), toDateTimeString(prs_inactief_datum), {suppressEmpty: true});
}
if (prsauthparams.writesys)
RWTEXTAREATR("prs_opm", "fldtxt", L("lcl_prs_person_opmerking"), prs_opm, {maxlength: 320});
else

View File

@@ -25,16 +25,32 @@ user.auth_required_or_abort(prsauthparams.writeman || prsauthparams.writeuse ||
var prs_user = new Perslid(prs_key);
user.auth_required_or_abort(!prs_user.has("WEB_FACFAC") || user.has("WEB_FACFAC")); // WEB_FACFAC alleen als je het zelf ook hebt
var result = {};
var prs_tz = getFParam("prs_tz", "");
if (prs_tz != "")
{
var sql = "SELECT '' FROM V$TIMEZONE_NAMES"
+ " WHERE tzname = " + safe.quoted_sql(prs_tz); // Case-sensitive
+ " WHERE tzname = " + safe.quoted_sql(prs_tz) // Case-sensitive
+ " AND tzname NOT LIKE '%GMT%'" // Conform timezoneselector.inc
+ " AND ("
+ " tzname LIKE 'Europe/%' OR"
+ " tzname LIKE 'America/%' OR"
+ " tzname LIKE 'Asia/%' OR"
+ " tzname LIKE 'Australia/%' OR"
+ " tzname LIKE 'Africa/%' OR"
+ " tzname LIKE 'Pacific/%'"
+ " )";
var oRs = Oracle.Execute(sql);
if (oRs.EoF)
shared.internal_error("timezone (" + safe.html(prs_tz) + ") not found.");
if (oRs.EoF) {
result.success = false;
result.warning = "Could not recognize timezone " + safe.html(prs_tz);
Response.Write(JSON.stringify(result));
ASPPAGE_END();
Response.End;
}
oRs.Close();
}
@@ -251,10 +267,10 @@ if (!custfunc.prs_postsave(prs_key, pResult))
abort_with_warning(pResult.errmsg);
}
result = { success: true
, prs_key: prs_key
};
result = {
success: true,
prs_key: prs_key
};
Response.Write(JSON.stringify(result));
ASPPAGE_END();
%>
<% ASPPAGE_END(); %>

View File

@@ -213,7 +213,7 @@ function perslid_list(pautfunction, params)
+ " FROM prs_kostenplaats kp"
+ " WHERE kp.prs_kostenplaats_key = COALESCE(p.prs_kostenplaats_key, d.prs_kostenplaats_key)"
+ " ) prs_kostenplaats_nr"
+ " , (SELECT prs_perslid_naam_friendly FROM prs_v_perslid_fullnames_all pf WHERE pf.prs_perslid_key = d.prs_perslid_key_verantw) prs_perslid_verantw"
+ " , (SELECT prs_perslid_naam_friendly FROM prs_v_perslid_fullnames_all pf WHERE pf.prs_perslid_key = p.prs_perslid_key_verantw) prs_perslid_verantw"
+ (anyflex
? ", (SELECT LISTAGG("
+ (multiflex ? lcl.xsql("k.prs_kenmerk_omschrijving", "k.prs_kenmerk_key")

View File

@@ -458,6 +458,11 @@ var met_foto = getQParam("pb_photo","off")=="on";
switch (mode)
{
case 1: // personen
if (S("prs_phonebook_maxresults") > 0)
{
settings.overrule_setting("qp_maxrows", S("prs_phonebook_maxresults"))
settings.overrule_setting("qp_maxrows2", S("prs_phonebook_maxresults"))
}
var canBookmarkf = user.func_enabled("FAC", null, null, null, null, true); // laatste true: isOptional
var canBookmark = canBookmarkf && canBookmarkf.canRead("WEB_HLPADM");
var rst = new ResultsetTable({ keyColumn: "prs_perslid_key",
@@ -472,7 +477,8 @@ var met_foto = getQParam("pb_photo","off")=="on";
title: L("lcl_search_pers"),
showAll: showall,
canBookmark: canBookmark,
auditcount: 1
noExcel: S("prs_phonebook_maxresults") > 0, // dan ook geen Excel
auditcount: S("prs_phonebook_audit_floor") // default auditen we als meer dan 10 resultaten
});
var dofotos = met_foto && outputmode==0 && !showall;

View File

@@ -329,6 +329,45 @@ res = {
return alg_tz;
},
getTimezoneBy: function _getTimezoneBy(alg_key, level) {
// level ? ["R", "V", "G", "L"]
var sql;
switch (level) {
case "L":
sql = "SELECT l.alg_locatie_timezone"
+ " FROM alg_locatie l"
+ " WHERE l.alg_locatie_key = " + alg_key;
break;
case "G":
sql = "SELECT l.alg_locatie_timezone"
+ " FROM alg_locatie l, alg_gebouw g"
+ " WHERE g.alg_gebouw_key = " + alg_key
+ " AND g.alg_locatie_key = l.alg_locatie_key";
break;
case "V":
sql = "SELECT l.alg_locatie_timezone"
+ " FROM alg_locatie l, alg_gebouw g, alg_verdieping v"
+ " WHERE v.alg_verdieping_key = " + alg_key
+ " AND v.alg_gebouw_key = g.alg_gebouw_key"
+ " AND g.alg_locatie_key = l.alg_locatie_key";
break;
case "R":
return res.getTimezoneByRuimte(alg_key, "ALG");
default:
throw new Error("Invalid level: " + level);
}
var oRs = Oracle.Execute(sql);
var alg_tz = !oRs.EOF && oRs("alg_locatie_timezone").Value
|| S("fac_server_timezone");
oRs.Close();
return alg_tz;
},
res_ruimte_info: function _res_ruimte(res_ruimte_key)
{
var result = { res_ruimte_key: res_ruimte_key,
@@ -1192,6 +1231,7 @@ res = {
}
);
roRs.Close();
// earliest_expire_change en earliest_expire_cancel hebben zeker een goede waarde van de ruimte discipline (startdatum 1/1/1000 is vervangen).
rresult.earliest_expire_change = earliest_expire_change;
rresult.earliest_expire_cancel = earliest_expire_cancel;
@@ -1837,6 +1877,7 @@ res = {
+ " AND rdp.res_ins_discipline_key = rg.res_discipline_key "
+ " AND (fr.res_ruimte_startdatum IS NULL OR fr.res_ruimte_startdatum <= " + ora_date2 + ")"
+ " AND (fr.res_ruimte_vervaldatum IS NULL OR fr.res_ruimte_vervaldatum > " + ora_date1 + ")"
+ " AND COALESCE(l.alg_locatie_timezone, " + safe.quoted_sql(S("fac_server_timezone")) + ") = " + safe.quoted_sql(S("fac_server_timezone"))
+ sql_loc_where
+ (params.max_rooms ? " AND ROWNUM <= " + params.max_rooms : "");
@@ -2542,8 +2583,7 @@ res = {
getBloktijden: function(p_act_key, p_res_disc_key, p_resdate, p_geb_key)
{
var bloktijden = ((p_act_key && p_act_key > -1) ? res.getBloktijdenAct(p_act_key, p_resdate, p_geb_key) : []);
if (bloktijden.length == 0)
{
if (bloktijden.length == 0) {
bloktijden = res.getBloktijdenDisc(p_res_disc_key, p_resdate, p_geb_key);
}
return bloktijden;
@@ -2564,7 +2604,7 @@ res = {
bloktijden = JSON.parse(oRs("res_disc_params_intervals").Value);
oRs.close();
bloktijden = res.set_bloktijdenopdatum(bloktijden, p_resdate, p_geb_key)
bloktijden = res.set_bloktijdenopdatum(bloktijden, p_resdate, p_geb_key);
return bloktijden;
},

View File

@@ -103,6 +103,8 @@ if (!local_date_from)
server_date_to = new Date(oRs("res_rsv_ruimte_tot").Value);
local_tz = res.getRsvTimezone(rsv_ruimte_key);
oRs.Close();
local_date_from = convertToLocalTime(server_date_from, local_tz);
local_date_to = convertToLocalTime(server_date_to, local_tz);
}
else
{
@@ -522,8 +524,8 @@ if (master_act_key > 0) // we zouden kunnen controleren of master_key wijst naar
if (!rsv_ruimte_externnr || (S("msgraph_sync_level") & 6)) // Begin- en enddatum van reserveringen die extern (via Exchange) zijn gemaakt niet aanpassen, tenzij ReadWrite koppeling
{
fields.push({ dbs: "res_rsv_ruimte_van", typ: "datetime", val: server_date_from, track: (restype=="CV"? L("lcl_res_starttime_CV") : L("lcl_res_starttime")) });
fields.push({ dbs: "res_rsv_ruimte_tot", typ: "datetime", val: server_date_to, track: (restype=="CV"? L("lcl_res_endtime_CV") : L("lcl_res_endtime")) });
fields.push({ dbs: "res_rsv_ruimte_van", typ: "datetime", val: server_date_from, track: (restype=="CV"? L("lcl_res_starttime_CV") : L("lcl_res_starttime")), track_in_tz: local_tz });
fields.push({ dbs: "res_rsv_ruimte_tot", typ: "datetime", val: server_date_to, track: (restype=="CV"? L("lcl_res_endtime_CV") : L("lcl_res_endtime")), track_in_tz: local_tz });
fields.push({ dbs: "res_rsv_ruimte_omschrijving", typ: "varchar", frm: "descript", track: L("lcl_descr") });
fields.push({ dbs: "res_rsv_ruimte_opmerking", typ: "varchar", frm: "opmerk", track: L("lcl_remark"), len: 2000 });
}

View File

@@ -194,6 +194,14 @@ function res_list (pautfunction, params)
}
}
var sql_tz = "SELECT ''"
+ " FROM alg_locatie"
+ " WHERE alg_locatie_timezone IS NOT NULL"
+ " AND alg_locatie_timezone <> " + safe.quoted_sql(S("fac_server_timezone"));
var oRs_tz = Oracle.Execute(sql_tz);
var any_tz = !oRs_tz.EOF;
oRs_tz.Close();
// Berekenen is duur en niet altijd nodig
var withprices = (groupres == 4
|| groupres == 5
@@ -771,6 +779,12 @@ function res_list (pautfunction, params)
+ ", NULL ins_discipline_key"
: " , res_geg.ins_srtdeel_uitleenbaar"
+ ", res_geg.ins_discipline_key");
if (any_tz) {
sql_select += ", DECODE(l.alg_locatie_timezone"
+ " , " + safe.quoted_sql(S("fac_server_timezone")) + ", NULL"
+ " , NULL, NULL"
+ " , l.alg_locatie_timezone) alg_locatie_timezone";
}
var sql_select_obj_restype_O = sql_select
+ ", NULL alg_district_key"

View File

@@ -952,8 +952,9 @@ function make_plan_obj(disc_key, res_van, res_tot, params)
{
return $("div.grid > div.body div.labelgrid[data-disc=<%=disc_key%>].res_nofit").filter(":" + (visible ? "visible":"hidden")).each(function() {
var $this = $(this);
var show = $this.is(":visible") == false;
$("div[data-row=" + $this.attr("data-row") + "]").toggle(show);
var show = $this.is(":visible") == false;
var rowNr = $this.data("row");
$this.closest(".grid").find("div[data-row=" + rowNr + "]").toggle(show);
});
}
toggleNoFit<%=disc_key%>(true);

View File

@@ -757,7 +757,14 @@ if (options.length > 1) {
}
var buttons = [];
if (this_res.couldCreate)
var multi_tz = Session("time_zone") != S("fac_server_timezone"); // Hebben we te maken met een ruimte, gebruiker of server in een afwijkende tijdszone?
if (!multi_tz) {
var rsv_timezone = res.getRsvTimezone(rsv_ruimte_key);
multi_tz = rsv_timezone != Session("time_zone");
}
if (!multi_tz && this_res.couldCreate)
{
buttons.push( {id: "repeatbutton", title: L("lcl_res_add_deelres"), icon: "fa-clone", action: "makeMulti()" } );
if (restype == "R")
@@ -765,7 +772,7 @@ if (options.length > 1) {
if (restype == "CV") // en O??
buttons.push( {id: "addpartresbutton", title: L("lcl_res_add_deelresreservering"), icon: "fa-layer-plus", action: "ruimteErbij('" + restype + "')" } );
}
if (multiDeel && this_res.couldCreate)
if (!multi_tz && multiDeel && this_res.couldCreate)
{
buttons.push({ title: L("lcl_res_multiple_save"), icon: "fa-copy", action: "MultiSave()" });
buttons.push({ icon: "fa-print", title: L("lcl_print"), action: "res_print()" });

View File

@@ -117,8 +117,15 @@ for (var func in xfunc._funcodes) {
}
}
var geb_key = getQParamInt("geb_key", -1);
var floor_key = getQParamInt("floor_key", -1);
var geb_key = getQParamInt("geb_key", -1);
var floor_key = getQParamInt("floor_key", -1);
var local_tz = S("fac_server_timezone");
if (geb_key > -1) {
local_tz = res.getTimezoneBy(geb_key, "G");
} else if (floor_key > -1) {
local_tz = res.getTimezoneBy(floor_key, "V");
}
var avail_flrs = getQParamIntArray("avail_flrs", []);
var res_deel_key = getQParamInt("wsp_key", -1);
var showAll = getQParamInt("showall", 0) == 1;
@@ -126,8 +133,10 @@ var showAll = getQParamInt("showall", 0) == 1;
var fac_usrrap_key = getQParamInt("usrrap_key", -1); // wordt doorgegeven naar het infobord
var daylimit = getQParamInt("daylimit", 12); // na daylimit kun je voor de eerste dag niet meer reserveren, default 12:00, werkt niet icm offset
var afternoon = new Date().getHours() >= daylimit;
var dateoffset = getQParamInt("offset", afternoon?1:0); //
var local_now = convertToLocalTime(new Date(), local_tz);
var afternoon = local_now.getHours() >= daylimit;
var dateoffset = getQParamInt("offset", afternoon ? 1 : 0);
var datelimit = getQParamInt("limit", 7); // aantal te kiezen dagen tov offset
var selectmode = getQParamInt("selectmode", 0); // kiezen van het item: 0=automatisch bepalen (tekening anders lijst), 1=lijst, 2=2dtekening indien aanwezig, 3=3dtekening indien aanwezig
var fotos = getQParamInt("fotos", 1); // for selectmode 1: show photo or not
@@ -377,7 +386,7 @@ transitParam2 += "&startpage=" + startpage;
break;
case "day": titel = L("lcl_beschikbaarheid_by_day").format(safe.html(params.bld),safe.html(params.disc));
break;
case "flr": titel = L("lcl_beschikbaarheid_by_flr").format(safe.html(params.disc),safe.html(params.bld),toDateString(params.resdate).toLowerCase());
case "flr": titel = L("lcl_beschikbaarheid_by_flr").format(safe.html(params.disc),safe.html(params.bld),toDateString(params.resdate, { isLocal: true }).toLowerCase());
break;
}
Response.write("<h3><a>" + titel + "</a></h3/>");
@@ -516,15 +525,16 @@ transitParam2 += "&startpage=" + startpage;
%>
<div id='accordion'>
<%
sql = "SELECT g.alg_gebouw_werkdagen, alg_gebouw_naam "
+ " FROM alg_gebouw g"
+ " WHERE g.alg_gebouw_key = " + geb_key;
sql = "SELECT g.alg_gebouw_werkdagen, "
+ " g.alg_gebouw_naam"
+ " FROM alg_gebouw g "
+ " WHERE g.alg_gebouw_key = " + geb_key;
oRs = Oracle.Execute(sql)
var werkdagen = oRs("alg_gebouw_werkdagen").Value;
var gebouw_naam = oRs("alg_gebouw_naam").Value; // theoretisch kunnen dit er meerdere zijn, dan nog aanpassen
oRs.close();
sql = rdpt.dagbezetting_resdelen_in_aanweziggebouw_sql(res_disc_key_arr, res_deel_key, geb_key, -1, dateoffset, datelimit, null, act_key);
sql = rdpt.dagbezetting_resdelen_in_aanweziggebouw_sql(res_disc_key_arr, res_deel_key, geb_key, dateoffset, datelimit, act_key);
var oRs = Oracle.Execute(sql)
var pos = 0;
@@ -553,7 +563,7 @@ transitParam2 += "&startpage=" + startpage;
var calc_dagcapaciteit = rdpt.dagcapaciteitCalc(new Date(oRs("datum").Value), dagcapaciteit, act_key, res_disc_key_arr, geb_key);
if (!calc_dagcapaciteit)
{
__Log("No capacity on " + toDateString(oRs("datum").Value));
__Log("No capacity on " + toDateString(oRs("datum").Value, { isLocal: true }));
oRs.MoveNext();
continue;
}
@@ -588,12 +598,12 @@ transitParam2 += "&startpage=" + startpage;
}
}
var clickaction = (reserveerbaredag && (!(res_deel_key > 0) || beschikbaarheid > 0) ? "onclick='continue_with_date_bld(new Date("+ new Date(oRs("datum").Value).getTime()+"), "+oRs("ins_discipline_key").Value+");'" : "");
var noTimezoneDifferences = Session("time_zone") == S("fac_server_timezone") && local_tz == S("fac_server_timezone");
%>
<div class='iconmenu<%=clickaction ? "" : " no-action"%>'
style='width:14%; height: 12vw;' <%=clickaction%>>
<div class="iconitem">
<div class="icondate iconimg <%=bcls%>"><%=toDateString(oRs("datum").Value, false, true) %></div>
<div class="icondate iconimg <%=bcls%>"><%=toDateString(oRs("datum").Value, { pretty: noTimezoneDifferences, isLocal: true }) %></div>
<div class="res-iconlabel"><%=licon%><%=aantalitems+" "+safe.html(oRs("ins_discipline_omschrijving").Value).toLowerCase()%>
<br><%=L("lcl_mobile_resbeschikbaar")+" " +(ischild?(beschikbaarheid+ "/" + blok_per_dag):beschikbaarheid +"%") %>
</div>
@@ -613,9 +623,9 @@ transitParam2 += "&startpage=" + startpage;
// 3. KIES VERDIEPING INDIEN GEWENST EN NOG NIET BEKEND
if (resdate && floorselect == 1 && geb_key > -1 && floor_key == -1)
{
%>
%>
<div id='accordion'>
<%
<%
var sql = rdpt.mijn_verdiepingen_met_resdelen_sql(res_disc_key_arr, geb_key, ALGwritelevel, dateoffset, resdate);
var oRs = Oracle.Execute(sql)
var pos = 0;
@@ -641,7 +651,8 @@ transitParam2 += "&startpage=" + startpage;
var flr_icon = '<div class="flooravatar">'+safe.html(oRs("alg_verdieping_code").Value)+'</div>';
var sql2 = rdpt.dagbezetting_resdelen_in_gebouw_sql(res_disc_key_arr, gebkey, flrkey, dateoffset, datelimit, resdate);
var oRs2 = Oracle.Execute(sql2)
var oRs2 = Oracle.Execute(sql2);
var beschikbaarheid = ((1 - (oRs2("gevuld").Value/(dagcapaciteit*aantalitems)))*100); // 0..100
var fcls = rdpt.bezettings_class(oRs2("gevuld").Value, dagcapaciteit*aantalitems, minimumbeschikbaarheid*aantalitems);
@@ -802,7 +813,7 @@ transitParam2 += "&startpage=" + startpage;
function fnIntervallen(oRs)
{
var res = rdpt.getIntervalString(oRs("res_deel_key").Value, resdate, bloktijden);
var res = rdpt.getIntervalString(oRs("res_deel_key").Value, resdate, bloktijden, geb_key);
if (res =="") res = L("lcl_res_intervalbezet");
return res;
}
@@ -840,7 +851,7 @@ transitParam2 += "&startpage=" + startpage;
var rst = new ResultsetTable({ keyColumn: "res_deel_key",
ID: "resdltable",
sql: sql,
title: L("lcl_resdeel_beschikbaar_op").format(gebouw_naam, toDateString(resdate)),
title: L("lcl_resdeel_beschikbaar_op").format(gebouw_naam, toDateString(resdate, { isLocal: true })),
buttons: buttons,
emptySetString: L("lcl_res_niets_beschikbaar"),
showAll: showAll,

View File

@@ -9,6 +9,7 @@
rdpt = {
// Levert de 3 meest recent geboekte werkplekken op voor de gegeven catalogi
mijn_verdiepingen_met_resdelen_hist_sql: function(p_res_disc_key_arr, p_alglevel)
{
var hsql = " SELECT l.alg_locatie_plaats"
@@ -46,8 +47,8 @@ rdpt = {
+ " AND rdis.ins_discipline_verwijder IS NULL"
+ " AND w.res_discipline_key IN (" + p_res_disc_key_arr.join(",") + ")";
if (p_alglevel > -1 )
{ // Er is een scope-beperking van kracht
if (p_alglevel > -1)
{ // Er is een scope-beperking van kracht
hsql += " AND v.alg_verdieping_key IN"
+ " (SELECT alg_verdieping_key"
+ " FROM fac_v_my_floors"
@@ -70,14 +71,13 @@ rdpt = {
+ " , rdis.ins_discipline_omschrijving"
+ " ORDER BY res_rsv_ruimte_van DESC";
return "SELECT * FROM (" + hsql + ") WHERE ROWNUM < 4";
return "SELECT * FROM (" + hsql + ") WHERE ROWNUM <= 3";
},
// Selecteer gebouwen of verdiepingen waarop res_delen van deze disciplines voorkomen, met wat gegevens
// Als gebouw_key -1 is worden gebouwen geselecteerd, als er een gebouw_key gegeven is, dan de verdiepingen
mijn_verdiepingen_met_resdelen_sql: function(p_res_disc_key_arr, p_gebouw_key, p_alglevel, p_dateoffset, p_resdate)
{
var lsql = " SELECT l.alg_locatie_plaats"
+ " , l.alg_locatie_code"
+ " , g.alg_gebouw_naam"
@@ -96,7 +96,7 @@ rdpt = {
+ " , alg_v_aanweziggebouw g"
+ " , alg_v_aanwezigverdieping v"
+ " , alg_locatie l"
+ " , alg_district di"
+ " , alg_district di"
+ " WHERE di.alg_district_key = l.alg_district_key "
+ " AND g.alg_locatie_key = l.alg_locatie_key "
+ " AND plts.alg_verdieping_key = v.alg_verdieping_key"
@@ -105,8 +105,8 @@ rdpt = {
+ " AND id.ins_alg_ruimte_key = plts.alg_onroerendgoed_keys "
+ " AND id.ins_alg_ruimte_type = plts.alg_type "
+ " AND rd.res_ins_deel_key = id.ins_deel_key "
+ " AND (rd.res_deel_vervaldatum IS NULL OR rd.res_deel_vervaldatum > "
+ (p_resdate ? p_resdate.toSQL() : "SYSDATE+"+(p_dateoffset||0) ) + ")"
+ " AND ( rd.res_deel_vervaldatum IS NULL"
+ " OR rd.res_deel_vervaldatum > " + (p_resdate ? p_resdate.toSQL() : "SYSDATE + " + (p_dateoffset || 0)) + ")"
+ " AND rd.res_discipline_key = rdis.ins_discipline_key"
+ " AND rdis.ins_discipline_verwijder IS NULL"
+ " AND rd.res_discipline_key IN (" + p_res_disc_key_arr.join(",") + ")";
@@ -114,8 +114,8 @@ rdpt = {
if (p_alglevel > -1 )
{ // Er is een scope-beperking van kracht
lsql += " AND v.alg_verdieping_key IN (SELECT alg_verdieping_key FROM fac_v_my_floors "
+ " WHERE prs_perslid_key = " + user_key
+ " AND niveau = " + p_alglevel + ")";
+ " WHERE prs_perslid_key = " + user_key
+ " AND niveau = " + p_alglevel + ")";
}
lsql += " GROUP BY l.alg_locatie_plaats"
+ " , l.alg_locatie_code"
@@ -128,7 +128,7 @@ rdpt = {
+ " , v.alg_verdieping_code"
+ " , rdis.ins_discipline_key"
+ " , rdis.ins_discipline_omschrijving"
+ " ORDER BY alg_locatie_plaats, alg_gebouw_naam, ins_discipline_omschrijving, alg_verdieping_volgnr, alg_verdieping_code" ;
+ " ORDER BY alg_locatie_plaats, alg_gebouw_naam, ins_discipline_omschrijving, alg_verdieping_volgnr, alg_verdieping_code";
if (p_gebouw_key == -1)
{
@@ -155,20 +155,17 @@ rdpt = {
},
// telt het aantal reserveerbare delen van de discipline in het gebouw of de verdieping
aantal_resdelen_in_gebouw_sql: function(p_res_disc_key_arr, p_geb_key, p_flr_key, p_resdate)
aantal_resdelen_in_gebouw_sql: function(p_res_disc_key_arr, p_geb_key)
{
// Bepaal het aantal items in dit gebouw
var lsql = "SELECT COUNT (*) aantal "
+ " FROM res_v_aanwezigdeel rd, ins_v_aanwezigdeel id, alg_v_allonroerendgoed plts "
+ " WHERE id.ins_alg_ruimte_key = plts.alg_onroerendgoed_keys "
+ " AND id.ins_alg_ruimte_type = plts.alg_type "
+ " AND rd.res_ins_deel_key = id.ins_deel_key "
+ (p_flr_key > -1 ? " AND plts.alg_verdieping_key = " + p_flr_key
: " AND plts.alg_gebouw_key = " + p_geb_key
)
+ " AND rd.res_discipline_key IN (" + p_res_disc_key_arr.join(",") + ")"
+ " AND (rd.res_deel_vervaldatum IS NULL OR rd.res_deel_vervaldatum > "
+ (p_resdate ? p_resdate.toSQL() : "SYSDATE") + ")";
+ " FROM res_v_aanwezigdeel rd, ins_v_aanwezigdeel id, alg_v_allonroerendgoed plts "
+ " WHERE id.ins_alg_ruimte_key = plts.alg_onroerendgoed_keys "
+ " AND id.ins_alg_ruimte_type = plts.alg_type "
+ " AND rd.res_ins_deel_key = id.ins_deel_key "
+ " AND plts.alg_gebouw_key = " + p_geb_key
+ " AND rd.res_discipline_key IN (" + p_res_disc_key_arr.join(",") + ")"
+ " AND (rd.res_deel_vervaldatum IS NULL OR rd.res_deel_vervaldatum > SYSDATE)";
return lsql;
},
@@ -176,56 +173,83 @@ rdpt = {
// Als p_resdate is gegeven, dan wordt uiteindelijk alleen het record voor die dag daaruit geselecteerd.
// Als p_act_key is meegegeven en het is een child-activiteit dan worden alleen dagen meegenomen waar
// de master een reservering heeft
dagbezetting_resdelen_in_gebouw_sql: function (p_res_disc_key_arr, p_geb_key, p_flr_key, p_dateoffset, p_datelimit, p_resdate, p_act_key)
dagbezetting_resdelen_in_gebouw_sql: function (p_res_disc_key_arr, p_geb_key, p_flr_key, p_dateoffset, p_datelimit, p_local_resdate, p_act_key)
{
var lsql = "SELECT datum, SUM (gevuld) gevuld, MAX (aantal) aantal, MAX (vrijedag) vrijedag, MAX (weekdag) weekdag "
+ "FROM ("
+ " SELECT TRUNC (rrd.res_rsv_deel_van) datum,"
+ " SUM(rrd.res_rsv_deel_tot-rrd.res_rsv_deel_van)*24 gevuld,"
+ " vrij.mld_vrije_dagen_key vrijedag, " // >0 is vrijedag
+ " fac.getweekdaynum (res_rsv_deel_van) weekdag, " // 7 en 1 zijn weekend
+ " COUNT (*) aantal "
+ " FROM res_v_aanwezigrsv_deel rrd, "
+ " res_v_aanwezigdeel rd, "
+ " ins_v_aanwezigdeel id, "
+ " alg_v_allonroerendgoed plts, "
+ " alg_gebouw g,"
+ " mld_vrije_dagen vrij "
+ " WHERE rrd.res_deel_key = rd.res_deel_key "
+ " AND id.ins_alg_ruimte_key = plts.alg_onroerendgoed_keys "
+ " AND id.ins_alg_ruimte_type = plts.alg_type "
+ " AND vrij.mld_vrije_dagen_datum(+) = TRUNC (rrd.res_rsv_deel_van) "
+ " AND rd.res_ins_deel_key = id.ins_deel_key "
+ " AND rrd.res_rsv_deel_dirtlevel = 0" // nodig?
+ (p_flr_key > -1 ? " AND plts.alg_verdieping_key = " + p_flr_key
: " AND plts.alg_gebouw_key = " + p_geb_key)
+ " AND g.alg_gebouw_key = plts.alg_gebouw_key"
+ " AND vrij.mld_vrije_dagen_id(+) = COALESCE(g.mld_vrije_dagen_id, 'Default')"
+ " AND rd.res_discipline_key IN (" + p_res_disc_key_arr.join(",") + ")"
+ (p_resdate ? " AND TRUNC (rrd.res_rsv_deel_van) = " + p_resdate.toSQL()
: " AND TRUNC (rrd.res_rsv_deel_van) BETWEEN TRUNC (SYSDATE +"+(p_dateoffset||0)+") AND TRUNC (SYSDATE-1+"+(p_dateoffset||0)+"+"+p_datelimit+") "
)
+ " GROUP BY vrij.mld_vrije_dagen_key, TRUNC (rrd.res_rsv_deel_van), res_rsv_deel_van "
+ " UNION ALL" // de dagen zonder reserveringen
+ " SELECT TRUNC (SYSDATE + "+p_dateoffset+"+ (LEVEL - 1)) dag, 0, 0, fac.getweekdaynum (SYSDATE + "+p_dateoffset+"+(LEVEL - 1)), 0 "
+ " FROM DUAL"
+ " CONNECT BY LEVEL <= "+p_datelimit
+ " UNION ALL" // de vrije dagen daarvan
+ " SELECT mld_vrije_dagen_datum, 0, 1, 0, 0 "
+ " FROM mld_vrije_dagen vrij"
+ " , alg_gebouw g"
+ (p_flr_key > -1 ? " , alg_verdieping v" : "")
+ " WHERE vrij.mld_vrije_dagen_datum BETWEEN TRUNC (SYSDATE +"+(p_dateoffset||0)+") AND TRUNC (SYSDATE-1+"+(p_dateoffset||0)+"+"+p_datelimit+") "
+ (p_flr_key > -1 ? " AND v.alg_verdieping_key = " + p_flr_key
+ " AND v.alg_gebouw_key = g.alg_gebouw_key"
: " AND g.alg_gebouw_key = " + p_geb_key)
+ " AND vrij.mld_vrije_dagen_id = COALESCE(g.mld_vrije_dagen_id, 'Default')"
+ ")"
+ "GROUP BY datum ";
var local_tz;
if (p_flr_key > -1) {
local_tz = res.getTimezoneBy(p_flr_key, "V");
} else {
local_tz = res.getTimezoneBy(p_geb_key, "G");
}
if (p_resdate)
{
lsql = "SELECT * FROM (" + lsql + ") WHERE datum = " + p_resdate.toSQL();
function toLocalDate(expr) {
return convertToLocalTimeSQL(expr, local_tz);
}
var offsetExpr = (p_dateoffset || 0);
var localRsvDate = toLocalDate("rrd.res_rsv_deel_van");
var localResWeekday = "fac.getweekdaynum(" + localRsvDate + ")";
var localToday = "TRUNC(" + toLocalDate("SYSDATE") + ")";
var localRangeStart = localToday + " + " + offsetExpr;
var localRangeEnd = localToday + " + " + (offsetExpr + p_datelimit - 1);
var localResdateFilter, localVrijeDagFilter;
if (p_local_resdate) {
localResdateFilter = " AND TRUNC(" + localRsvDate + ") = " + p_local_resdate.toSQL();
localVrijeDagFilter = " vrij.mld_vrije_dagen_datum = " + p_local_resdate.toSQL();
} else {
localResdateFilter = " AND TRUNC(" + localRsvDate + ") BETWEEN " + localRangeStart + " AND " + localRangeEnd;
localVrijeDagFilter = " vrij.mld_vrije_dagen_datum BETWEEN " + localRangeStart + " AND " + localRangeEnd;
}
var localDayByLevel = localRangeStart + " + (LEVEL - 1)";
var lsql = "SELECT datum, SUM (gevuld) gevuld, MAX (aantal) aantal, MAX (vrijedag) vrijedag, MAX (weekdag) weekdag "
+ " FROM ("
+ " SELECT TRUNC(" + localRsvDate + ") datum,"
+ " SUM(rrd.res_rsv_deel_tot-rrd.res_rsv_deel_van)*24 gevuld,"
+ " vrij.mld_vrije_dagen_key vrijedag, "
+ " " + localResWeekday + " weekdag, "
+ " COUNT (*) aantal "
+ " FROM res_v_aanwezigrsv_deel rrd, "
+ " res_v_aanwezigdeel rd, "
+ " ins_v_aanwezigdeel id, "
+ " alg_v_allonroerendgoed plts, "
+ " alg_gebouw g,"
+ " mld_vrije_dagen vrij "
+ " WHERE rrd.res_deel_key = rd.res_deel_key "
+ " AND id.ins_alg_ruimte_key = plts.alg_onroerendgoed_keys "
+ " AND id.ins_alg_ruimte_type = plts.alg_type "
+ " AND vrij.mld_vrije_dagen_datum(+) = TRUNC(" + localRsvDate + ")"
+ " AND rd.res_ins_deel_key = id.ins_deel_key "
+ " AND rrd.res_rsv_deel_dirtlevel = 0"
+ (p_flr_key > -1 ? " AND plts.alg_verdieping_key = " + p_flr_key
: " AND plts.alg_gebouw_key = " + p_geb_key)
+ " AND g.alg_gebouw_key = plts.alg_gebouw_key"
+ " AND vrij.mld_vrije_dagen_id(+) = COALESCE(g.mld_vrije_dagen_id, 'Default')"
+ " AND rd.res_discipline_key IN (" + p_res_disc_key_arr.join(",") + ")"
+ localResdateFilter
+ " GROUP BY vrij.mld_vrije_dagen_key, TRUNC(" + localRsvDate + "), res_rsv_deel_van "
+ " UNION ALL"
+ " SELECT TRUNC(" + localDayByLevel + ") dag, 0, 0, fac.getweekdaynum(" + localDayByLevel + "), 0 "
+ " FROM DUAL"
+ " CONNECT BY LEVEL <= " + p_datelimit
+ " UNION ALL"
+ " SELECT vrij.mld_vrije_dagen_datum, 0, 1, 0, 0 "
+ " FROM mld_vrije_dagen vrij"
+ " , alg_gebouw g"
+ (p_flr_key > -1 ? " , alg_verdieping v" : "")
+ " WHERE " + localVrijeDagFilter
+ (p_flr_key > -1 ? " AND v.alg_verdieping_key = " + p_flr_key
+ " AND v.alg_gebouw_key = g.alg_gebouw_key"
: " AND g.alg_gebouw_key = " + p_geb_key)
+ " AND vrij.mld_vrije_dagen_id = COALESCE(g.mld_vrije_dagen_id, 'Default')"
+ ")"
+ " GROUP BY datum ";
if (p_local_resdate) {
lsql = "SELECT * FROM (" + lsql + ") WHERE datum = " + p_local_resdate.toSQL(); // Deze is al TRUNC'ed
}
if (p_act_key > 0)
@@ -248,13 +272,39 @@ rdpt = {
+ " )";
}
}
lsql = lsql + "ORDER BY 1";
lsql = lsql + " ORDER BY 1";
return lsql;
},
dagbezetting_resdelen_in_aanweziggebouw_sql: function (p_res_disc_key_arr, p_res_deel_key, p_geb_key, p_flr_key, p_dateoffset, p_datelimit, p_resdate, p_act_key)
dagbezetting_resdelen_in_aanweziggebouw_sql: function (p_res_disc_key_arr, p_res_deel_key, p_geb_key, p_dateoffset, p_datelimit, p_act_key)
{
var server_tz = S("fac_server_timezone");
var local_tz = res.getTimezoneBy(p_geb_key, "G") || server_tz;
function toServerDate(expr) {
return convertToServerTimeSQL(expr, local_tz);
}
function toLocalDate(expr) {
return convertToLocalTimeSQL(expr, local_tz);
}
// Deze functie converteert de gegeven expressie naar locale tijd, trunct die dan op locale dag, en converteert die naar server-tijd
function localizedTrunc(expr) {
return toServerDate("TRUNC(" + toLocalDate(expr) + ")");
}
var offsetExpr = (p_dateoffset || 0);
var localRsvDate = toLocalDate("rrd.res_rsv_deel_van");
var localRsvDateTrunced = "TRUNC(" + localRsvDate + ")";
var localResWeekday = "fac.getweekdaynum(" + toLocalDate("rrd.res_rsv_deel_van") + ")";
var localVervalDate = "TRUNC(" + toLocalDate("rd.res_deel_vervaldatum") + ")";
var serverFromLocalRangeStart = localizedTrunc("SYSDATE") + " + " + offsetExpr;
var serverFromLocalRangeEnd = localizedTrunc("SYSDATE") + " - 1 + " + offsetExpr + " + " + p_datelimit;
var serverDateFilter = " AND rrd.res_rsv_deel_van BETWEEN " + serverFromLocalRangeStart + " AND " + serverFromLocalRangeEnd;
var lsql = "SELECT datum"
+ " , ins_discipline_key"
+ " , ins_discipline_omschrijving"
@@ -265,13 +315,13 @@ rdpt = {
+ " , MAX(weekdag) weekdag"
+ " , MAX(aantal_delen) delen"
+ " FROM ("
+ " SELECT TRUNC(rrd.res_rsv_deel_van) datum"
+ " SELECT " + localRsvDateTrunced + " datum"
+ " , rdis.ins_discipline_key"
+ " , " + lcl.xsqla("rdis.ins_discipline_omschrijving", "rdis.ins_discipline_key")
+ " , rdis.ins_discipline_image"
+ " , SUM(rrd.res_rsv_deel_tot-rrd.res_rsv_deel_van)*24 gevuld"
+ " , vrij.mld_vrije_dagen_key vrijedag" // >0 is vrijedag
+ " , fac.getweekdaynum(res_rsv_deel_van) weekdag" // 7 en 1 zijn weekend
+ " , vrij.mld_vrije_dagen_key vrijedag"
+ " , " + localResWeekday + " weekdag"
+ " , COUNT(*) aantal"
+ " , 0 aantal_delen"
+ " FROM res_v_aanwezigrsv_deel rrd"
@@ -285,46 +335,44 @@ rdpt = {
+ (p_res_deel_key > -1 ? " AND rd.res_deel_key = " + p_res_deel_key : "")
+ " AND id.ins_alg_ruimte_key = plts.alg_onroerendgoed_keys"
+ " AND id.ins_alg_ruimte_type = plts.alg_type"
+ " AND vrij.mld_vrije_dagen_datum(+) = TRUNC (rrd.res_rsv_deel_van)"
+ " AND vrij.mld_vrije_dagen_datum(+) = " + localRsvDateTrunced
+ " AND rd.res_ins_deel_key = id.ins_deel_key"
+ " AND rrd.res_rsv_deel_dirtlevel = 0" // nodig?
+ " AND rrd.res_rsv_deel_dirtlevel = 0"
+ " AND rd.res_discipline_key = rdis.ins_discipline_key"
+ " AND rd.res_discipline_key IN (" + p_res_disc_key_arr.join(",") + ")"
+ (p_flr_key > -1 ? " AND plts.alg_verdieping_key = " + p_flr_key
: " AND plts.alg_gebouw_key = " + p_geb_key)
+ " AND plts.alg_gebouw_key = " + p_geb_key
+ " AND g.alg_gebouw_key = plts.alg_gebouw_key"
+ " AND vrij.mld_vrije_dagen_id(+) = COALESCE(g.mld_vrije_dagen_id, 'Default')"
+ (p_resdate ? " AND TRUNC(rrd.res_rsv_deel_van) = " + p_resdate.toSQL()
: " AND TRUNC(rrd.res_rsv_deel_van) BETWEEN TRUNC(SYSDATE +"+(p_dateoffset||0)+") AND TRUNC(SYSDATE-1+"+(p_dateoffset||0)+"+"+p_datelimit+")"
)
+ serverDateFilter
+ " AND ( rd.res_deel_vervaldatum IS NULL"
+ " OR rd.res_deel_vervaldatum > TRUNC(rrd.res_rsv_deel_van)"
+ " OR rd.res_deel_vervaldatum > rrd.res_rsv_deel_van"
+ " )"
+ " GROUP BY vrij.mld_vrije_dagen_key"
+ " , TRUNC(rrd.res_rsv_deel_van)"
+ " , " + localRsvDateTrunced
+ " , res_rsv_deel_van"
+ " , rdis.ins_discipline_key"
+ " , ins_discipline_omschrijving"
+ " , ins_discipline_image"
+ " UNION ALL" // de dagen zonder reserveringen + aantal reserveerbare eenheden
+ " UNION ALL"
+ " SELECT d.dag"
+ " , rdis.ins_discipline_key"
+ " , " + lcl.xsqla("rdis.ins_discipline_omschrijving", "rdis.ins_discipline_key")
+ " , rdis.ins_discipline_image"
+ " , 0"
+ " , 0"
+ " , d.dagnr"
+ " , fac.getweekdaynum(d.dag) dagnr"
+ " , 0"
+ " , COUNT(*)"
+ " FROM res_v_aanwezigdeel rd"
+ " , res_discipline rdis"
+ " , ins_v_aanwezigdeel id"
+ " , alg_v_allonroerendgoed plts"
+ ", (SELECT TRUNC(SYSDATE + " + p_dateoffset + "+ (LEVEL - 1)) dag"
+ " , fac.getweekdaynum(SYSDATE + "+p_dateoffset+"+(LEVEL - 1)) dagnr"
+ " FROM DUAL"
+ " CONNECT BY LEVEL <= " + p_datelimit
+ " ) d"
+ " , alg_gebouw g"
+ " , (SELECT TRUNC(" + toLocalDate("SYSDATE + " + p_dateoffset + " + (LEVEL - 1)") + ") dag"
+ " , fac.getweekdaynum(" + toLocalDate("SYSDATE + " + p_dateoffset + " + (LEVEL - 1)") + ") dagnr"
+ " FROM DUAL"
+ " CONNECT BY LEVEL <= " + p_datelimit
+ " ) d"
+ " WHERE id.ins_alg_ruimte_key = plts.alg_onroerendgoed_keys "
+ " AND id.ins_alg_ruimte_type = plts.alg_type"
+ " AND rd.res_ins_deel_key = id.ins_deel_key"
@@ -333,19 +381,17 @@ rdpt = {
)
+ " AND rd.res_discipline_key = rdis.ins_discipline_key"
+ " AND rd.res_discipline_key IN (" + p_res_disc_key_arr.join(",") +")"
+ (p_flr_key > -1 ? " AND plts.alg_verdieping_key = " + p_flr_key
: " AND plts.alg_gebouw_key = " + p_geb_key
)
+ " AND plts.alg_gebouw_key = " + p_geb_key
+ " AND g.alg_gebouw_key = plts.alg_gebouw_key"
+ " AND ( rd.res_deel_vervaldatum IS NULL"
+ " OR rd.res_deel_vervaldatum > d.dag"
+ " OR " + localVervalDate + " > d.dag"
+ " )"
+ " GROUP BY d.dag"
+ " , d.dagnr"
+ " , rdis.ins_discipline_key"
+ " , ins_discipline_omschrijving"
+ " , ins_discipline_image"
+ " UNION ALL" // de vrije dagen daarvan
+ " SELECT mld_vrije_dagen_datum"
+ " UNION ALL"
+ " SELECT vrij.mld_vrije_dagen_datum"
+ " , rdis.ins_discipline_key"
+ " , " + lcl.xsqla("rdis.ins_discipline_omschrijving", "rdis.ins_discipline_key")
+ " , rdis.ins_discipline_image"
@@ -357,17 +403,13 @@ rdpt = {
+ " FROM mld_vrije_dagen vrij"
+ " , res_discipline rdis"
+ " , alg_gebouw g"
+ (p_flr_key > -1 ? " , alg_verdieping v" : "")
+ " WHERE vrij.mld_vrije_dagen_datum BETWEEN TRUNC(SYSDATE +"+(p_dateoffset||0)+") AND TRUNC(SYSDATE-1+"+(p_dateoffset||0)+"+"+p_datelimit+")"
+ " AND rdis.ins_discipline_key IN (" + p_res_disc_key_arr.join(",") +")" // voor elke discipline die meedoet
+ (p_flr_key > -1 ? " AND v.alg_verdieping_key = " + p_flr_key
+ " AND v.alg_gebouw_key = g.alg_gebouw_key"
: " AND g.alg_gebouw_key = " + p_geb_key)
+ " WHERE vrij.mld_vrije_dagen_datum BETWEEN " + serverFromLocalRangeStart + " AND " + serverFromLocalRangeEnd
+ " AND rdis.ins_discipline_key IN (" + p_res_disc_key_arr.join(",") +")"
+ " AND g.alg_gebouw_key = " + p_geb_key
+ " AND vrij.mld_vrije_dagen_id = COALESCE(g.mld_vrije_dagen_id, 'Default')"
+ ")"
+ " GROUP BY ins_discipline_key, ins_discipline_omschrijving, ins_discipline_image, datum";
if (p_act_key > 0)
{
var sql = "SELECT res_activiteit_master_key"
@@ -381,23 +423,18 @@ rdpt = {
res_activiteit_duur = oRs("res_activiteit_duur").Value;
}
oRs.close();
if (master_act_key > 0)
{
if (master_act_key > 0) {
lsql = "SELECT * FROM (" + lsql + ")"
+ " WHERE EXISTS (SELECT 1 FROM res_rsv_ruimte"
+ " WHERE res_rsv_ruimte_verwijder IS NULL"
+ " AND res_activiteit_key = " + master_act_key
+ " AND TRUNC(res_rsv_ruimte_van) = datum"
+ " AND TRUNC(" + toLocalDate("res_rsv_ruimte_van") + ") = datum"
+ " )";
}
}
if (p_resdate)
{
lsql = "SELECT * FROM (" + lsql + ") WHERE datum = " + p_resdate.toSQL();
}
lsql += " ORDER BY ins_discipline_omschrijving, datum";
return lsql;
},
@@ -406,7 +443,26 @@ rdpt = {
// Zo kun je dus bezette plekken uitsluiten
res_deel_bezetting_op_dag_sql: function (p_res_disc_key_arr, p_geb_key, p_flr_key, p_resdate, p_maxbezet)
{
var lsql = "SELECT plaan.alg_plaatsaanduiding plaats, "
var server_tz = S("fac_server_timezone");
var local_tz = server_tz;
if (p_flr_key > -1) {
local_tz = res.getTimezoneBy(p_flr_key, "V");
} else {
local_tz = res.getTimezoneBy(p_geb_key, "G");
}
function toLocalDate(expr) {
return convertToLocalTimeSQL(expr, local_tz);
}
var localRsvDate = toLocalDate("rrd.res_rsv_deel_van");
var localRsvDateTrunced = "TRUNC(" + localRsvDate + ")";
// p_resdate is hier al de juiste (lokale) dag, TRUNC'ed
var localVervalDate = toLocalDate("rd.res_deel_vervaldatum");
var lsql = "SELECT plaan.alg_plaatsaanduiding plaats, "
+ lcl.xsql("rd.res_deel_omschrijving", "rd.res_deel_key") + " res_deel_omschrijving, "
+ " COALESCE(SUM (rrd.res_rsv_deel_tot - rrd.res_rsv_deel_van) * 24, 0) bezet, "
+ " rd.res_deel_key, "
@@ -428,13 +484,13 @@ rdpt = {
+ " AND plts.alg_onroerendgoed_keys = plaan.alg_onroerendgoed_keys "
+ " AND plts.alg_type = plaan.alg_type "
+ " AND rd.res_ins_deel_key = id.ins_deel_key "
+ " AND (rd.res_deel_vervaldatum IS NULL OR rd.res_deel_vervaldatum > "+p_resdate.toSQL()+")"
+ " AND (rd.res_deel_vervaldatum IS NULL OR " + localVervalDate + " > " + p_resdate.toSQL() + ")"
+ (p_flr_key>-1 ? " AND plts.alg_verdieping_key = " + p_flr_key
: " AND plts.alg_gebouw_key = " + p_geb_key
)
)
+ " AND rd.res_discipline_key = rdis.ins_discipline_key"
+ " AND rd.res_discipline_key IN (" + p_res_disc_key_arr.join(",") + ")"
+ " AND TRUNC (rrd.res_rsv_deel_van) = " + p_resdate.toSQL()
+ " AND " + localRsvDateTrunced + " = " + p_resdate.toSQL()
+ " GROUP BY plaan.alg_plaatsaanduiding, "
+ " rd.res_deel_omschrijving, "
+ " rd.res_deel_key, "
@@ -468,16 +524,16 @@ rdpt = {
+ " AND plts.alg_type = plaan.alg_type "
+ " AND rd.res_ins_deel_key = id.ins_deel_key "
+ " AND rd.res_discipline_key = rdis.ins_discipline_key"
+ " AND (rd.res_deel_vervaldatum IS NULL OR rd.res_deel_vervaldatum > "+p_resdate.toSQL()+")"
+ " AND (rd.res_deel_vervaldatum IS NULL OR " + localVervalDate + " > " + p_resdate.toSQL() + ")"
+ (p_flr_key>-1 ? " AND plts.alg_verdieping_key = " + p_flr_key
: " AND plts.alg_gebouw_key = " + p_geb_key
)
)
+ " AND rd.res_discipline_key IN (" + p_res_disc_key_arr.join(",") + ")"
+ " AND NOT EXISTS "
+ " (SELECT '' "
+ " FROM res_v_aanwezigrsv_deel rrd "
+ " WHERE rrd.res_deel_key = rd.res_deel_key "
+ " AND TRUNC (rrd.res_rsv_deel_van) = " + p_resdate.toSQL() +") "
+ " AND " + localRsvDateTrunced + " = " + p_resdate.toSQL() + ") "
+ " GROUP BY plaan.alg_plaatsaanduiding, "
+ " rd.res_deel_omschrijving, "
+ " rd.res_deel_key, "
@@ -488,7 +544,7 @@ rdpt = {
+ " ins_discipline_image, "
+ " rdis.ins_discipline_key, "
+ " ins_discipline_omschrijving "
+ " ORDER BY alg_verdieping_code,1,2 " ;
+ " ORDER BY alg_verdieping_code,1,2 ";
return lsql;
},
@@ -509,59 +565,92 @@ rdpt = {
// Geef de beschikbare intervallen uit p_bloktijden op p_resdate van p_res_deel_key, "" indien onbeschikbaar
getIntervalString: function (p_res_deel_key, p_resdate, p_bloktijden)
{
var lres="";
var server_tz = S("fac_server_timezone") || "";
var local_tz = server_tz;
if (p_res_deel_key > 0) {
var tzSql = "SELECT MIN(l.alg_locatie_timezone) alg_tz"
+ " FROM res_v_aanwezigdeel rd"
+ " , ins_v_aanwezigdeel id"
+ " , alg_v_allonroerendgoed plts"
+ " , alg_gebouw g"
+ " , alg_locatie l"
+ " WHERE rd.res_ins_deel_key = id.ins_deel_key"
+ " AND id.ins_alg_ruimte_key = plts.alg_onroerendgoed_keys"
+ " AND id.ins_alg_ruimte_type = plts.alg_type"
+ " AND plts.alg_gebouw_key = g.alg_gebouw_key"
+ " AND g.alg_locatie_key = l.alg_locatie_key"
+ " AND rd.res_deel_key = " + p_res_deel_key;
var tzRs = Oracle.Execute(tzSql);
var alg_tz = tzRs("alg_tz").Value;
tzRs.Close();
if (alg_tz) {
local_tz = alg_tz;
}
}
function toLocalDate(expr) {
return convertToLocalTimeSQL(expr, local_tz);
}
function toServerDate(expr) {
return convertToServerTimeSQL(expr, local_tz);
}
var lres = "";
var l_bloktijden = p_bloktijden.slice(0);
// bloktijden eerst resetten (snap niet waarom, ik heb toch een kopie?) JGL?
for (var i = 0; i < l_bloktijden.length; i++)
{
for (var i = 0; i < l_bloktijden.length; i++) {
l_bloktijden[i].bezet = false;
}
var localResVanExpr = toLocalDate("rm.res_rsv_ruimte_van");
var localResTotExpr = toLocalDate("rm.res_rsv_ruimte_tot");
// p_resdate is de lokale _dag_ (ge-TRUNCed dus)
var serverResdateRangeStart = toServerDate(p_resdate.toSQL());
var serverResdateRangeEnd = serverResdateRangeStart + " + 1";
var lsql = "SELECT rm.res_reservering_key,"
+ " rm.res_rsv_ruimte_volgnr,"
+ " rm.res_rsv_ruimte_key,"
+ " rm.res_rsv_ruimte_omschrijving,"
+ " res_rsv_ruimte_van,"
+ " res_rsv_ruimte_tot,"
+ " " + localResVanExpr + " AS res_rsv_ruimte_van,"
+ " " + localResTotExpr + " AS res_rsv_ruimte_tot,"
+ " 0 res_disc_params_preposttime"
+ " FROM res_rsv_ruimte rm,"
+ " res_rsv_deel rd"
+ " WHERE res_rsv_ruimte_van < {0}".format(p_resdate.endToSQL())
+ " AND res_rsv_ruimte_tot > {0}".format(p_resdate.beginToSQL())
+ " WHERE res_rsv_ruimte_van < " + serverResdateRangeEnd
+ " AND res_rsv_ruimte_tot > " + serverResdateRangeStart
+ " AND rd.res_rsv_ruimte_key = rm.res_rsv_ruimte_key"
+ " AND rd.res_deel_key = " + p_res_deel_key
+ " AND rm.res_rsv_ruimte_verwijder IS NULL"
+ " AND rd.res_rsv_deel_verwijder IS NULL"
+ " AND rd.res_rsv_deel_dirtlevel = 0"
+ " ORDER BY rm.res_rsv_ruimte_van"; // Eerste vooraan.
+ " ORDER BY res_rsv_ruimte_van";
// Bekijk voor dit object voor deze dag welke van de intervallen al bezet zijn
// en welke dus nog niet
var loRs = Oracle.Execute( lsql );
while (!loRs.Eof)
{
var loRs = Oracle.Execute(lsql);
while (!loRs.Eof) {
var van = new Date(loRs("res_rsv_ruimte_van").Value);
var tot = new Date(loRs("res_rsv_ruimte_tot").Value);
for (var i = 0; i < l_bloktijden.length; i++)
{
if (van < l_bloktijden[i].einddatum && tot > l_bloktijden[i].startdatum)
{
l_bloktijden[i].bezet = true;
for (var j = 0; j < l_bloktijden.length; j++) {
if (van < l_bloktijden[j].einddatum && tot > l_bloktijden[j].startdatum) {
l_bloktijden[j].bezet = true;
}
}
loRs.MoveNext();
}
loRs.Close();
for (var i = 0; i < l_bloktijden.length; i++)
{
if (!l_bloktijden[i].bezet)
lres += l_bloktijden[i].name +" | ";
for (var k = 0; k < l_bloktijden.length; k++) {
if (!l_bloktijden[k].bezet) {
lres += l_bloktijden[k].name + " | ";
}
}
if (lres.substr(lres.length-3, 3) == " | ")
lres = lres.substr(0, lres.length-3);
else
if (lres.substr(lres.length - 3, 3) === " | ") {
lres = lres.substr(0, lres.length - 3);
} else {
lres = "";
}
return lres;
},
@@ -572,8 +661,10 @@ rdpt = {
// Als act_key een subreservering is wordt zelfs gekeken of er op date een master-reservering is
dagcapaciteitCalc: function _dagcapaciteitCalc(date, dagcapaciteit, act_key, res_disc_key_arr, geb_key)
{
var begintijd = new Date(0, 0, 0, 23, 59, 0);
var eindtijd = new Date(0, 0, 0, 0, 0, 0);
var begintijd = new Date();
begintijd.setHours(23, 59, 0);
var eindtijd = new Date();
eindtijd.setHours(0, 0, 0);
var btBegintijd;
var btEindtijd;
var btArr;
@@ -586,13 +677,15 @@ rdpt = {
for (index = 0; index < bt.length; index++)
{
btArr = bt[index].begin.split(":");
btBegintijd = new Date(0, 0, 0, btArr[0], btArr[1], 0);
btBegintijd = new Date();
btBegintijd.setHours(btArr[0], btArr[1]);
if (btBegintijd.getTime() < begintijd.getTime())
{
begintijd = btBegintijd;
}
btArr = bt[index].end.split(":");
btEindtijd = new Date(0, 0, 0, btArr[0], btArr[1], 0);
btEindtijd = new Date();
btEindtijd.setHours(btArr[0], btArr[1]);
if (btEindtijd.getTime() > eindtijd.getTime())
{
eindtijd = btEindtijd;

View File

@@ -106,16 +106,23 @@ for (var func in xfunc._funcodes) {
}
}
var disc_keys = getQParamIntArray("discs", []);
var geb_key = getQParamInt("geb_key", -1);
var floor_key = getQParamInt("floor_key", -1);
var disc_keys = getQParamIntArray("discs", []);
var geb_key = getQParamInt("geb_key", -1);
var floor_key = getQParamInt("floor_key", -1);
var local_tz = S("fac_server_timezone");
if (geb_key > -1) {
local_tz = res.getTimezoneBy(geb_key, "G");
} else if (floor_key > -1) {
local_tz = res.getTimezoneBy(floor_key, "V");
}
var fac_usrrap_key = getQParamInt("usrrap_key", -1); // wordt doorgegeven naar het infobord
var startpage = getQParam("startpage", "");
var daylimit = getQParamInt("daylimit", 17); // na daylimit kun je voor de eerste dag niet meer reserveren, default 12:00, werkt niet icm offset
var afternoon = new Date().getHours() >= daylimit;
var dateoffset = getQParamInt("offset", afternoon?1:0); //
var local_now = convertToLocalTime(new Date(), local_tz);
var afternoon = local_now.getHours() >= daylimit;
var dateoffset = getQParamInt("offset", afternoon ? 1 : 0);
var datelimit = getQParamInt("limit", 7); // aantal te kiezen dagen tov offset
var selectmode = getQParamInt("selectmode", 0); // kiezen van het item: 0=automatisch bepalen (tekening anders lijst), 1=lijst, 2=2dtekening indien aanwezig, 3=3dtekening indien aanwezig
var fotos = getQParamInt("fotos", 1); // for selectmode 1: show photo or not

View File

@@ -110,14 +110,19 @@ var sql = "SELECT sa.res_srtactiviteit_prefix"
+ " AND rrr.res_ruimte_opstel_key = ro.res_ruimte_opstel_key (+)"
+ " AND rrr.res_rsv_ruimte_key = " + rsv_ruimte_key;
var oRs = Oracle.Execute(sql);
var res_van = new Date(oRs("res_rsv_ruimte_van").Value);
var res_tot = new Date(oRs("res_rsv_ruimte_tot").Value);
var server_res_van = new Date(oRs("res_rsv_ruimte_van").Value);
var server_res_tot = new Date(oRs("res_rsv_ruimte_tot").Value);
var res_ruimte_key = oRs("res_ruimte_key").Value;
var resnrtxt = oRs("resnrtxt").Value;
var hasFiat = oRs("res_rsv_ruimte_cat_appr").Value == 1;
var isCV = oRs("res_srtactiviteit_soort").Value == 1;
oRs.Close();
var local_tz = res.getRsvTimezone(rsv_ruimte_key);
function toLocalDate(expr) {
return convertToLocalTimeSQL(expr, local_tz);
}
%>
<html>
<head>
@@ -198,7 +203,8 @@ oRs.Close();
<body class="listmode">
<% var buttons = [];
if (this_res.canChangeCV)
var multi_tz = local_tz != S("fac_server_timezone") || local_tz != Session("time_zone"); // Hebben we te maken met een ruimte, gebruiker of server in een afwijkende tijdszone?
if (!multi_tz && this_res.canChangeCV)
buttons.push( { title: (this_res.hasCV ? L("lcl_change") : L("lcl_add")), icon: (this_res.hasCV ? "fa-fclt-edit" : "fa-plus"), action: "res_change()"});
if (this_res.canFiatteren)
buttons.push( {title: L("lcl_approve"), icon: "fa-check", action: "res_fiatteren()"});
@@ -273,20 +279,32 @@ oRs.Close();
function fnVantijd(oRs)
{
// Als Van en Tot verschillen tonen we de datum erbij, anders alleen de tijd
var vanDateString = (new Date(oRs("res_rsv_deel_tot").value).midnight().getTime() != new Date(oRs("res_rsv_deel_van").value).midnight().getTime() ? toDateTimeString(new Date(oRs("res_rsv_deel_van").value)) : toTimeString(new Date(oRs("res_rsv_deel_van").value)))
if (oRs("vanbinnentijd").value == 0)
var res_rsv_deel_van = oRs("local_res_rsv_deel_van").Value;
var res_rsv_deel_tot = oRs("local_res_rsv_deel_tot").Value;
// Als Van en Tot verschillen tonen we de datum erbij, anders alleen de tijd
var vanDateString = (new Date(res_rsv_deel_tot).midnight().getTime() != new Date(res_rsv_deel_van).midnight().getTime()
? toDateTimeString(res_rsv_deel_van, undefined, undefined, undefined, undefined, true)
: toTimeString(res_rsv_deel_van, undefined, true));
if (oRs("vanbinnentijd").value == 0) {
vanDateString = "<span class='outofbounds'>" + vanDateString + "</span>";
return vanDateString;
}
return vanDateString;
}
function fnTottijd(oRs)
{
// Als Van en Tot verschillen tonen we de datum erbij, anders alleen de tijd
var totDateString = (new Date(oRs("res_rsv_deel_tot").value).midnight().getTime() != new Date(oRs("res_rsv_deel_van").value).midnight().getTime() ? toDateTimeString(new Date(oRs("res_rsv_deel_tot").value)) : toTimeString(new Date(oRs("res_rsv_deel_tot").value)))
if (oRs("totbinnentijd").value == 0)
var res_rsv_deel_van = oRs("local_res_rsv_deel_van").Value;
var res_rsv_deel_tot = oRs("local_res_rsv_deel_tot").Value;
// Als Van en Tot verschillen tonen we de datum erbij, anders alleen de tijd
var totDateString = (new Date(res_rsv_deel_tot).midnight().getTime() != new Date(res_rsv_deel_van).midnight().getTime()
? toDateTimeString(res_rsv_deel_tot, undefined, undefined, undefined, undefined, true)
: toTimeString(res_rsv_deel_tot, undefined, true));
if (oRs("totbinnentijd").value == 0) {
totDateString = "<span class='outofbounds'>" + totDateString + "</span>";
return totDateString;
}
return totDateString;
}
function fnTijd(oRs)
@@ -375,6 +393,8 @@ var nonBulkFields = lcl.xsqla('rd.res_deel_omschrijving', 'rd.res_deel_key')
+ " , res.getdeelprijs(rrd.res_rsv_deel_key) res_rsv_deel_prijs" // zou je achterwege kunnen laten als !anydeelprijs
+ " , rrd.res_rsv_deel_van"
+ " , rrd.res_rsv_deel_tot"
+ " , " + toLocalDate("rrd.res_rsv_deel_van") + " local_res_rsv_deel_van"
+ " , " + toLocalDate("rrd.res_rsv_deel_tot") + " local_res_rsv_deel_tot"
+ " , rrd.res_rsv_deel_dirtlevel"
+ " , CASE WHEN k.km900 > 0 THEN 1 ELSE 0 END bewerkbaar"
+ " , rrd.res_rsv_deel_verwijder ddVerwijder"
@@ -426,6 +446,8 @@ var bulkFields = " distinct "
+ " , sel.selected * res.getdeelprijs(rrd.res_rsv_deel_key) res_rsv_deel_prijs" // zou je achterwege kunnen laten als !anydeelprijs
+ " , rrd.res_rsv_deel_van"
+ " , rrd.res_rsv_deel_tot"
+ " , " + toLocalDate("rrd.res_rsv_deel_van") + " local_res_rsv_deel_van"
+ " , " + toLocalDate("rrd.res_rsv_deel_tot") + " local_res_rsv_deel_tot"
+ " , rrd.res_rsv_deel_dirtlevel"
+ " , CASE WHEN k.km900 > 0 THEN 1 ELSE 0 END bewerkbaar"
+ " , rrd.res_rsv_deel_verwijder ddVerwijder"
@@ -527,10 +549,10 @@ var bulkFields = " distinct "
+ " AND r1.res_deel_key NOT IN ("
+ " SELECT distinct rrd.res_deel_key"
+ " FROM res_rsv_ruimte rrr, res_rsv_deel rrd, res_deel rd"
+ " WHERE ( rrr.RES_RSV_RUIMTE_VAN BETWEEN TO_DATE (" + res_van.toSQL(true) + ")"
+ " AND TO_DATE (" + res_tot.toSQL(true) + ")"
+ " OR rrr.RES_RSV_RUIMTE_TOT BETWEEN TO_DATE (" + res_van.toSQL(true) + ")"
+ " AND TO_DATE (" + res_tot.toSQL(true) + "))"
+ " WHERE ( rrr.res_rsv_ruimte_van BETWEEN TO_DATE (" + server_res_van.toSQL(true) + ")"
+ " AND TO_DATE (" + server_res_tot.toSQL(true) + ")"
+ " OR rrr.res_rsv_ruimte_tot BETWEEN TO_DATE (" + server_res_van.toSQL(true) + ")"
+ " AND TO_DATE (" + server_res_tot.toSQL(true) + "))"
+ " AND rrr.res_rsv_ruimte_key <> " + rsv_ruimte_key
+ " AND rrd.res_rsv_ruimte_key = rrr.res_rsv_ruimte_key"
+ " AND rrd.res_deel_key = rd.res_deel_key"
@@ -731,10 +753,11 @@ var bulkFields = " distinct "
+ " , ra.res_rsv_artikel_levering"
+ " , ra.res_rsv_artikel_afhalen"
+ " , rr.res_rsv_ruimte_tot"
+ " , " + toLocalDate("rr.res_rsv_ruimte_tot") + " local_res_rsv_ruimte_tot"
+ " , ra.res_rsv_artikel_verwijder ddVerwijder"
+ " , CASE "
+ " WHEN (ra.res_rsv_artikel_levering BETWEEN res_rsv_ruimte_van "
+ " AND res_rsv_ruimte_tot) "
+ " WHEN (ra.res_rsv_artikel_levering BETWEEN rr.res_rsv_ruimte_van "
+ " AND rr.res_rsv_ruimte_tot) "
+ " THEN 1 "
+ " ELSE 0 "
+ " END levbinnentijd"
@@ -799,7 +822,7 @@ var bulkFields = " distinct "
rst2.addColumn(new Column({caption: L("lcl_time"), content: fnTijd, datatype: "time", align:"center"}));
rst2.addColumn(new Column({caption: L("lcl_res_ophalen"), content: fnAfhaaltijd, datatype: "time", align:"center"}));
if (this_res.res_has_visitors)
rst2.addColumn(new Column({caption: L("lcl_to"), content: "res_rsv_ruimte_tot", datatype: "time", align:"center"}));
rst2.addColumn(new Column({caption: L("lcl_to"), content: "local_res_rsv_ruimte_tot", datatype: "time", align:"center"}));
if (anyartikelprijs)
rst2.addColumn(new Column({caption: L("lcl_r_price7"), content: "res_rsv_artikel_prijs", datatype: "currency"}));
if (resdeleted)

View File

@@ -209,6 +209,7 @@ FCLTHeader.Requires({plugins: ["jQuery"]})
}
else if (restype == "O") // zal rrr.mld_opdr_key gevuld zijn
{
// UNSUPPORTED; local_tz = ?
}
else
{ // CV
@@ -243,10 +244,9 @@ FCLTHeader.Requires({plugins: ["jQuery"]})
oRs.Close();
}
if (local_tz != S("fac_server_timezone")) {
rrr.rsv_ruimte_van = convertToLocalTime(rrr.rsv_ruimte_van, local_tz);
rrr.rsv_ruimte_tot = convertToLocalTime(rrr.rsv_ruimte_tot, local_tz);
}
// Local, zonder prefix, want we hebben de server-tijd niet nodig in dit bestand
rrr.rsv_ruimte_van = convertToLocalTime(rrr.rsv_ruimte_van, local_tz);
rrr.rsv_ruimte_tot = convertToLocalTime(rrr.rsv_ruimte_tot, local_tz);
}
%>
<script type="text/javascript">
@@ -426,8 +426,8 @@ FCLTHeader.Requires({plugins: ["jQuery"]})
var buttons = [];
if (rrr.rsv_ruimte_verwijder == null) // Anders mag je niets meer
{
if (this_res.canChange || this_res.canChangeFEExtended)
var multi_tz = local_tz != S("fac_server_timezone") || local_tz != Session("time_zone"); // Hebben we te maken met een ruimte, gebruiker of server in een afwijkende tijdszone?
if (!multi_tz && (this_res.canChange || this_res.canChangeFEExtended))
buttons.push( {title: L("lcl_change"), icon: "fa-fclt-edit", action: "res_change()"});
else if (this_res.canWriteNoShow)
buttons.push({action: "resNoShow()", title: L("lcl_res_no_show"), icon: "fa-frown"});
@@ -507,14 +507,14 @@ FCLTHeader.Requires({plugins: ["jQuery"]})
}
if (rrr.rsv_ruimte_tot.midnight().getTime() == rrr.rsv_ruimte_van.midnight().getTime())
{
ROFIELDTR("fldDateTime", L("lcl_date"), toDateString(rrr.rsv_ruimte_van, undefined, undefined, true), params);
var v_tot = (rrr.met_eindtijd ? " "+ L("lcl_tot") + " " + toTimeString(rrr.rsv_ruimte_tot, undefined, true) : "");
ROFIELDTR("fldDateTime", L("lcl_time"), toTimeString(rrr.rsv_ruimte_van, undefined, true) + v_tot, params);
ROFIELDTR("fldDateTime", L("lcl_date"), toDateString(rrr.rsv_ruimte_van, { isLocal: true }), params);
var v_tot = (rrr.met_eindtijd ? " "+ L("lcl_tot") + " " + toTimeString(rrr.rsv_ruimte_tot, { isLocal: true }) : "");
ROFIELDTR("fldDateTime", L("lcl_time"), toTimeString(rrr.rsv_ruimte_van, { isLocal: true }) + v_tot, params);
}
else // meerdaags
{
ROFIELDTR("fldDateTime", L("lcl_date"), toDateTimeString(rrr.rsv_ruimte_van, undefined, undefined, undefined, true), params);
ROFIELDTR("fldDateTime", L("lcl_res_endtime"), toDateTimeString(rrr.rsv_ruimte_tot, undefined, undefined, undefined, true), params);
ROFIELDTR("fldDateTime", L("lcl_date"), toDateTimeString(rrr.rsv_ruimte_van, { noMidnight: true, isLocal: true }), params);
ROFIELDTR("fldDateTime", L("lcl_res_endtime"), toDateTimeString(rrr.rsv_ruimte_tot, { noMidnight: true, isLocal: true }), params);
}
// if this_res.canReadNoShow??

View File

@@ -580,7 +580,7 @@ function scf_RWFIELDTR(model, fld, val, key, params)
"sg" + fld,
{ label: field.label,
srtcontrole_key: val? val.id : null,
filtercode: "foreignfiltercode" in field? field.foreignfiltercode : "",
filtercode: "foreignfiltercode" in field? field.foreignfiltercode : "PI",
urlAdd: field.urlAdd
});
}

View File

@@ -676,6 +676,11 @@ var shared = {
promptAI: function (msg, params)
{
params = params || {};
// Tijdelijk voor 2025.3 Gold A tot 2026.1
settings.overrule_setting("ai_endpoint", "https://general-foundry-prod.cognitiveservices.azure.com/openai/deployments/general-gpt4o/chat/completions?api-version=2025-01-01-preview");
settings.overrule_setting("ai_apikey", "3XUVnWTMwxOhKEj4Jnu4hj0Ifr8B9lt0PLCdhjAVxb2krGD99wpiJQQJ99BJACfhMk5XJ3w3AAAAACOGEWSl");
var result = {};
var apikey = S("ai_apikey");
if (!apikey) {
@@ -1033,8 +1038,9 @@ function _get_ParamDate(pColl, pName, defVal)
return val;
}
var val = _get_ParamInt(pColl, pName, -1);
if (val>0 && val<=8640000000000000)
if (val>0 && val<=8640000000000000) {
return new Date(val);
}
if (defVal instanceof Date)
return defVal;
@@ -1434,48 +1440,75 @@ function getUserHour(h)
// User time-zone = Session("time_zone")
// Server time-zone = S("fac_server_timezone")
// Lever de SQL op die de Datetime omzet naar de server tijdszone
function convertToServerTimeSQL(userDateTimeExpr, localTimezone) {
return convertToServerTime(userDateTimeExpr, localTimezone, true);
}
// Lever de SQL op die de Datetime omzet naar de localized tijdszone
function convertToLocalTimeSQL(serverDateTimeExpr, localTimezone) {
return convertToLocalTime(serverDateTimeExpr, localTimezone, true);
}
// Datetime van alg_locatie of user-tijdszone omzetten naar de server tijdszone
function convertToServerTime(userDateTime, localTimezone) {
function convertToServerTime(userDateTime, localTimezone, sqlOnly) {
if (!localTimezone) {
localTimezone = Session("time_zone"); // 'Local' = user timezone by default (= indien leeg)
}
return convertTimeZone(userDateTime, localTimezone, S("fac_server_timezone"));
return convertTimeZone(userDateTime, localTimezone, S("fac_server_timezone"), sqlOnly);
}
// Datetime van server tijdszone omzetten naar de alg_locatie of user-tijdszone
function convertToLocalTime(serverDateTime, localTimezone) {
function convertToLocalTime(serverDateTime, localTimezone, sqlOnly) {
if (!localTimezone) {
localTimezone = Session("time_zone"); // 'Local' = user timezone by default (= indien leeg)
}
return convertTimeZone(serverDateTime, S("fac_server_timezone"), localTimezone);
return convertTimeZone(serverDateTime, S("fac_server_timezone"), localTimezone, sqlOnly);
}
function convertTimeZone(thisDate, fromTZ, toTZ)
function convertTimeZone(thisDate, fromTZ, toTZ, sqlOnly)
{
if (!fromTZ || !toTZ || fromTZ.toUpperCase() == toTZ.toUpperCase())
return thisDate;
var sql = "SELECT CAST ("
+ "FROM_TZ (CAST ( "+thisDate.toSQL(true)+" AS TIMESTAMP), "+safe.quoted_sql(fromTZ)+")"
+ " AT TIME ZONE "+safe.quoted_sql(toTZ)+" AS DATE)"
var dateSQL = sqlOnly ? thisDate : thisDate.toSQL(true); // Bij sqlOnly wordt hier een veilige expressie verwacht
var sql = "CAST ("
+ "FROM_TZ (CAST ( " + dateSQL + " AS TIMESTAMP), " + safe.quoted_sql(fromTZ) + ")"
+ " AT TIME ZONE " + safe.quoted_sql(toTZ) + " AS DATE)";
if (sqlOnly) {
return sql;
} else {
sql = "SELECT " + sql
+ " AS newDate"
+ " FROM DUAL";
}
var oRs = Oracle.Execute(sql);
thisDate = new Date(oRs("newDate").value);
oRs.close();
return thisDate;
}
// This function should only be used to format display,
// <20> never as part of a computation.
// Als de jsDate van de user(client) afkomstig is, hoeft er geen conversie naar de user-time-zone plaats te vinden
function toTimeString(jsDate, bWithSeconds, isLocalTime)
function toTimeString(jsDate, arg2 /* bWithSeconds */, arg3 /* isLocal */)
{
if (jsDate===null)
var params = {};
if (arg2 && typeof arg2 === "object") {
// New style: toTimeString(jsDate, params)
params = arg2;
} else {
// Old style: toTimeString(jsDate, bWithSeconds, isLocal)
params = {
withSeconds: arg2,
isLocal: arg3
};
}
if (jsDate == null)
return "";
if (typeof jsDate == "object" && jsDate.type == 135/*adDBTimeStamp, oRs("datum")*/)
@@ -1495,16 +1528,29 @@ function toTimeString(jsDate, bWithSeconds, isLocalTime)
if (!jsDate)
return "";
if (!isLocalTime)
if (!params.isLocal)
jsDate = convertToLocalTime(jsDate);
ret = padout(jsDate.getHours()) + ":" + padout(jsDate.getMinutes());
if (bWithSeconds) ret += ":" + padout(jsDate.getSeconds());
if (params.withSeconds) ret += ":" + padout(jsDate.getSeconds());
return ret;
}
// Als de jsDate van de user(client) afkomstig is, hoeft er geen conversie naar de user-time-zone plaats te vinden
function toDateString(jsDate, noDay, pretty, isLocalDate)
function toDateString(jsDate, arg2 /* noDay */, arg3 /* pretty */, arg4 /* isLocal */)
{
var params = {};
if (arg2 && typeof arg2 === "object") {
// New style: toDateString(jsDate, params)
params = arg2;
} else {
// Old style: toDateString(jsDate, noDay, pretty, isLocal)
params = {
noDay: arg2,
pretty: arg3,
isLocal: arg4
};
}
var resstr = "";
var today = new Date().midnight();
var yesterday = (new Date(today))
@@ -1512,7 +1558,7 @@ function toDateString(jsDate, noDay, pretty, isLocalDate)
var tomorrow = (new Date(today));
tomorrow.setDate(today.getDate()+1);
if (jsDate===null)
if (jsDate == null)
return "";
if (typeof jsDate == "object" && jsDate.type == 135/*adDBTimeStamp, oRs("datum")*/)
@@ -1524,28 +1570,51 @@ function toDateString(jsDate, noDay, pretty, isLocalDate)
if (!jsDate)
return "";
if (!isLocalDate)
if (!params.isLocal)
jsDate = convertToLocalTime(jsDate);
if (
params.pretty &&
!params.isLocal && // Bij params.isLocal bepalen we op de plek zelf of we data 'pretty' willen tonen
Session("time_zone") != S("fac_server_timezone") // Geen pretty-dagnamen als we data uit een andere tijdszone weergeven
) {
params.pretty = false;
}
// Ik wil graag, alleen als parameter friendly?, voor de datums gisteren, vandaag en morgen de tekst Gisteren, Vandaag en Morgen opleveren
// Voor lijsten/sortering is dat vaak niet handig, maar soms is het veel begrijpelijker. Als de mogelijkheid er is, kunnen we
// geleidelijk de toepassing uitbreiden. In Lopende zaken op de portal om mee te beginnen.
if (pretty && jsDate.midnight().getTime() == today.getTime())
if (params.pretty && jsDate.midnight().getTime() == today.getTime())
resstr = L("lcl_date_today");
else if (pretty && jsDate.midnight().getTime() == yesterday.getTime())
else if (params.pretty && jsDate.midnight().getTime() == yesterday.getTime())
resstr = L("lcl_date_yesterday");
else if (pretty && jsDate.midnight().getTime() == tomorrow.getTime())
else if (params.pretty && jsDate.midnight().getTime() == tomorrow.getTime())
resstr = L("lcl_date_tomorrow");
else
resstr = (noDay?"":calendar_names.daysMin[jsDate.getDay()] + " ") +
resstr = (params.noDay?"":calendar_names.daysMin[jsDate.getDay()] + " ") +
padout(jsDate.getDate()) + "-" + padout(jsDate.getMonth() + 1) + "-" + padout(jsDate.getFullYear());
return resstr;
}
function toDateTimeString(jsDate, bWithSeconds, noDay, prettyday, noMidnight, isLocalDate)
function toDateTimeString(jsDate, arg2 /* bWithSeconds */, arg3 /* noDay */, arg4 /* prettyday */, arg5 /* noMidnight */, arg6 /* isLocalDate */)
{
if (jsDate===null)
var params = {};
if (arg2 && typeof arg2 === "object") {
// New style: toDateTimeString(jsDate, params)
params = arg2;
} else {
// Old style: toDateTimeString(jsDate, bWithSeconds, noDay, prettyday, noMidnight, isLocalDate)
params = {
withSeconds: arg2,
noDay: arg3,
prettyday: arg4,
noMidnight: arg5,
isLocal: arg6
};
}
if (jsDate == null)
return "";
if (typeof jsDate == "object" && jsDate.type == 135/*adDBTimeStamp, oRs("datum")*/)
@@ -1554,14 +1623,15 @@ function toDateTimeString(jsDate, bWithSeconds, noDay, prettyday, noMidnight, is
if (typeof jsDate == "date") // een oRs("datum").value
jsDate = new Date(jsDate);
if (!isLocalDate) {
if (!params.isLocal) {
jsDate = convertToLocalTime(jsDate);
params.isLocal = true; // Nu wel
}
if (noMidnight && jsDate.getTime() == jsDate.midnight().getTime())
return toDateString(jsDate, noDay, prettyday, true)
if (params.noMidnight && jsDate.getTime() == jsDate.midnight().getTime())
return toDateString(jsDate, params)
else
return toDateString(jsDate, noDay, prettyday, true) + " " + toTimeString(jsDate, bWithSeconds, true)
return toDateString(jsDate, params) + " " + toTimeString(jsDate, params)
}
function defaultDate(code)

View File

@@ -33,23 +33,23 @@ var sql = "SELECT mld_melding_tag_key"
+ " , TO_CHAR(mld_melding_tag_datum_tot, 'DD-MM-YYYY') mld_melding_tag_datum"
+ " FROM mld_melding_tag"
+ " WHERE mld_melding_tag_verwijder IS NULL"
+ " AND (UPPER(mld_melding_tag_naam) LIKE " + safe.quoted_sql_wild2(chars)
+ " AND (UPPER(mld_melding_tag_naam) LIKE " + safe.quoted_sql_wild2(chars)
+ " OR TO_CHAR(mld_melding_tag_datum_tot, 'DD-MM-YYYY') LIKE " + safe.quoted_sql_wild2(chars) + ")"
+ (srtdisc_key > -1 ? " AND ins_srtdiscipline_key = " + srtdisc_key : "")
+ (filtcode == "A" ? " AND mld_melding_tag_actief = 1" : "")
+ " AND ins_srtdiscipline_key IN"
+ " (SELECT di.ins_srtdiscipline_key FROM fac_v_webgebruiker fw, mld_discipline di"
+ " WHERE fac_gebruiker_alg_level_read < 9"
+ " WHERE fac_gebruiker_alg_level_read < 9"
+ " AND fac_gebruiker_prs_level_read < 9"
+ " AND fac_functie_key IN (SELECT fac_functie_key FROM fac_functie WHERE fac_functie_code IN ('WEB_MLDFOF', 'WEB_MLDBOF', 'WEB_MLDBAC'))"
+ " AND di.ins_discipline_module = 'MLD'"
+ " AND prs_perslid_key = " + user_key
+ " AND di.ins_discipline_key = fw.ins_discipline_key)"
+ "ORDER BY mld_melding_tag_datum_tot, mld_melding_tag_naam";
+ "ORDER BY mld_melding_tag_datum_tot DESC, mld_melding_tag_naam";
WriteResult2(sql, { bAll: bAll,
fldName: "mld_melding_tag_naam",
fldName: "mld_melding_tag_naam",
fldKey : "mld_melding_tag_key",
fldDesc: "mld_melding_tag_datum"} );
%>
<% ASPPAGE_END(); %>
<% ASPPAGE_END(); %>

View File

@@ -119,7 +119,7 @@ var zoeksqlstring = (verkey > 0
sql = "SELECT r.alg_ruimte_key"
+ " , " + zoeksqlstring + " naam"
+ " , r.alg_ruimte_nr"
+ " , sr.alg_srtruimte_omschrijving"
+ " , " + lcl.xsqla("sr.alg_srtruimte_omschrijving", "sr.alg_srtruimte_key")
+ " FROM alg_v_aanwezigruimte r"
+ " , alg_srtruimte sr"
+ " , alg_verdieping v"
@@ -130,7 +130,7 @@ sql = "SELECT r.alg_ruimte_key"
+ " AND v.alg_gebouw_key = g.alg_gebouw_key"
if (chars != "%")
sql += " AND (UPPER("+zoeksqlstring+") LIKE " + safe.quoted_sql_wild2(chars)
+ " OR UPPER(sr.alg_srtruimte_omschrijving) LIKE " + safe.quoted_sql_wild2(chars) + ")";
+ " OR UPPER(" + lcl.xsql("sr.alg_srtruimte_omschrijving", "sr.alg_srtruimte_key") + ") LIKE " + safe.quoted_sql_wild2(chars) + ")";
sql += filtClause.where
+ " ORDER BY g.alg_gebouw_code, v.alg_verdieping_volgnr, 2";

View File

@@ -1024,11 +1024,8 @@ async function _Suggest(inParams) {
}
}
if (isMobile) {
xDiv.ontouchstart = function() { highlight(this.sgIndex); };
} else {
xDiv.onmouseover = function() { highlight(this.sgIndex); };
}
xDiv.ontouchstart = function() { highlight(this.sgIndex); };
xDiv.onmouseover = function() { highlight(this.sgIndex); };
xDiv.onmousedown = function() {
setValues(true);

View File

@@ -155,18 +155,18 @@ function _FCLTcalendar (fieldID, params)
if (params.initTimeEmpty == 1)
var iniTime = "";
else
var iniTime = toTimeString(initDate, false, params.noConvert);
var iniTime = toTimeString(initDate, { isLocal: params.noConvert });
}
else
{
var iniTextDate = toDateString(initDate, false, false, params.noConvert);
var iniTextDate = toDateString(initDate, { isLocal: params.noConvert });
// Input type=date verwacht het formaat [YYYY-MM-DD]
var iniDateDate = new Date(initDate.getTime()-(initDate.getTimezoneOffset()*60000)).toISOString().substr(0,10);
var iniDateVal = initDate.valueOf();
if (params.initTimeEmpty == 1)
var iniTime = "";
else
var iniTime = toTimeString(initDate, false, params.noConvert);
var iniTime = toTimeString(initDate, { isLocal: params.noConvert });
}
var hiddentag = params.hidden? " style='display:none'" : ""; // Alleen op de calender, niet de tijd
if (params.readonly)
@@ -480,7 +480,11 @@ function _FCLTcalendar (fieldID, params)
}
else
{ // Native activeren
$("#time_from_<%=fieldID%>").attr("type", "time")
$("#time_from_<%=fieldID%>")
.attr("type", "time")
.on("change", function() {
$(this).trigger("focusout");
});
}
$("#time_from_<%=fieldID%>").focusout(function () { time_show_onChange('time_from_<%=fieldID%>',

View File

@@ -117,6 +117,9 @@ section#searchbody td /* voor de styling-preview */
--fclt-input-border-y: 1px;
line-height: calc(var(--fclt-td-line-height) - 2 * var(--fclt-input-padding-y) - 2 * var(--fclt-input-border-y));
}
&.flexlabel {
line-height: calc(0.8 * var(--fclt-td-line-height)); /* Ik wil eigenlijk 12px font-size en dan 1.8em => 21.6px net zoals show-mode */
}
}
/* heel algemene styles */
@@ -486,9 +489,7 @@ div.modules > div.module {
font-weight: 300;
line-height: normal;
margin: 5px;
background: var(--menuiconcolor-gradient);
background-clip: text;
-webkit-text-fill-color: transparent;
color: var(--menuiconcolor);
transition: transform var(--fclt-animation-duration-s) ease;
}
div#useroptions > div:hover, div.test,
@@ -1384,13 +1385,23 @@ td.listid
padding: 0.35em 0.65em; /* var(--bs-badge-padding-y) var(--bs-badge-padding-x); */
border-radius: var(--fclt-border-radius-lg);
}
.mldshowactie.fclt-info {
.mldshowactie:is(.fclt-info, .fclt-warning) {
display: flex;
align-items: center;
width: 100%;
padding: 0.75rem;
gap: 0.75rem;
line-height: normal;
}
:is(.fclt-info, .fclt-warning)::before {
font-size: 1.5rem;
font-family: "Font Awesome 6 Pro";
}
.fclt-info::before {
content: "\f05a";
font-family: 'Font Awesome 6 Pro';
margin-right: .25em;
}
.fclt-warning::before {
content: "\f071";
}
/* blockstyles */
@@ -1646,6 +1657,9 @@ div.filtermenukop {
/* bedoeld voor de tabs */
.ui-tab.ui-state-default {
background: var(--inactivetabbackgroundcolor);
#menutabs & {
background: #DDDDDD;
}
a,
.tabclose,
.tabpinned {
@@ -1654,11 +1668,17 @@ div.filtermenukop {
}
.ui-tab.ui-state-hover,
.ui-tab.ui-state-focus {
background-color: var(--buttonhoverbackgroundcolor);
color: var(--buttonhovercolor);
#menutabs &, & {
background-color: var(--buttonhoverbackgroundcolor);
color: var(--buttonhovercolor);
}
}
.ui-tab.ui-state-hover a {
color: var(--buttonhovercolor);
.ui-tab.ui-state-hover {
a,
.tabclose,
.tabpinned {
color: var(--buttonhovercolor);
}
}
.ui-tab.ui-state-active {
border: 1px solid #aaa;
@@ -2454,8 +2474,8 @@ div.wbackground {
overflow: hidden;
text-overflow: ellipsis;
display: -webkit-box;
-webkit-line-clamp: 5;
line-clamp: 5;
-webkit-line-clamp: 6;
line-clamp: 6;
-webkit-box-orient: vertical;
}
}
@@ -2484,6 +2504,9 @@ div.wbackground {
right: -4rem;
}
}
.fclt-news-content {
line-height: calc(1rem + 1px);
}
#mynewscontainer {
display: inline;
}
@@ -2957,16 +2980,18 @@ i + .dialogtext {
&:hover {
color: var(--buttonhovercolor);
text-decoration: none;
background: var(--buttonhoverbackgroundcolor) radial-gradient(circle, transparent 1%, var(--buttonhoverbackgroundcolor) 1%) center/15000%;
background: var(--buttonhoverbackgroundcolor) radial-gradient(circle, transparent 1%, var(--buttonhoverbackgroundcolor) 1%) center/15000%;
}
}
#buttons ul li.emphasishigh:active,
#linkOk:active, #besfavbtnall:active,
#buttons ul li.emphasismedium:active {
background-color: var(--buttonhovercolor);
color: var(--buttonhoverbackgroundcolor);
background-size: 100%;
#buttons ul li.emphasishigh,
#linkOk,
#besfavbtnall,
#buttons ul li.emphasismedium {
&:active {
background-color: var(--buttonhovercolor);
background-size: 100%;
}
}
#buttons ul li.emphasislow:active {
@@ -3597,10 +3622,15 @@ div.mldhandlinghead {
{
color: var(--tableheadercolor);
background-color: var(--tableheaderbackgroundcolor);
font-weight: normal;
border-top: 1px solid var(--fclt-color-grey-50);
border-right: 1px ridge #ccc;
border-bottom: 1px solid var(--fclt-color-grey-50);
white-space: nowrap;
padding: 2px 3px 2px 3px; /* want tfoot td = th */
font-weight: normal;
&:is(th) {
font-weight: 600;
}
}
.rstable :is(thead th,
tfoot td):first-child {
@@ -5150,7 +5180,6 @@ li.mk:hover {
background-color: var(--menukophoverbackgroundcolor)!important;
}
li.mk:hover span.menukop,
li.mk:hover span.micon i,
.withaction:hover i {
color: var(--menukophovercolor)!important;
}
@@ -5524,16 +5553,19 @@ td.bessrtdeelfoto {
}
:is(#portalmenu, .widget-type-mk, .widget-type-mi) :is(.widget-menu-image, .menuimg) i {
font-size: 4em;
background: var(--menuiconcolor-gradient);
background-clip: text; /* Gradient op tekst toepassen */
-webkit-text-fill-color: transparent; /* Tekstkleur transparant maken zodat gradient zichtbaar is */
}
#menutabs .micon i {
color: var(--menuiconcolor);
}
:is(#portalmenu, .widget-type-mk, .widget-type-mi) :is(.widget-menu-image, .menuimg) i,
#menutabs .micon i {
display: inline-block; /* Zorgt dat de icons inline met tekst blijven */
line-height: 1.2; /* Verticale uitlijning binnen icon */
padding-top: 2px; /* Ruimte boven icon */
background: var(--menuiconcolor-gradient);
background-clip: text; /* Gradient op tekst toepassen */
-webkit-text-fill-color: transparent; /* Tekstkleur transparant maken zodat gradient zichtbaar is */
transition: transform var(--fclt-animation-duration-s) ease; /* Gestandaardiseerd (fclt-card) */
transition: transform var(--fclt-animation-duration-s) ease-in-out; /* Gestandaardiseerd (fclt-card) */
}
/* ---------------------------------------------------
@@ -7163,8 +7195,8 @@ iframe.inactive {
display: flex;
justify-content: center;
align-items: center;
background-color: var(--frameheaderbackgroundcolor);
color: var(--frameheadercolor);
background-color: var(--tableheaderbackgroundcolor);
color: var(--tableheadercolor);
margin: 0.5rem;
padding: 0.5rem 1rem;
border-radius: var(--fclt-border-radius);
@@ -7443,13 +7475,24 @@ figure img {
}
section.edit-note,
.mldshowactie.fclt-info {
background-color: rgba(255, 255, 255, 0.5);
.mldshowactie:is(.fclt-info, .fclt-warning) {
border: 1px solid var(--notesbackgroundcolor);
border-radius: 0 0 var(--fclt-border-radius-lg) var(--fclt-border-radius-lg);
transition: filter 150ms ease;
}
.noti-info + .mldshowactie.fclt-info {
section.edit-note {
background-color: rgba(255, 255, 255, 0.5);
}
.mldshowactie.fclt-info {
background-color: var(--fclt-color-neutral-contrast);
color: var(--fclt-color-neutral);
}
.mldshowactie.fclt-warning {
background-color: var(--fclt-color-bad-contrast);
color: var(--fclt-color-bad);
}
.noti-info + .mldshowactie:is(.fclt-info, .fclt-warning) {
border-radius: var(--fclt-border-radius-lg);
}
@@ -7570,8 +7613,8 @@ section.edit-note.dragon {
.note-icon {
font-size: 16px;
color: var(--notesbackgroundcolor);
outline-color: var(--notesbackgroundcolor); /* Als je er naar tab't */
color: var(--textcolor);
outline-color: var(--textcolor); /* Als je er naar tab't */
margin: auto 0 auto 0.25em;
}
.note-submit-wrapper {
@@ -8201,7 +8244,7 @@ label[data-toggle-type] + input[type=checkbox] {
.notes-wrapper .note-top-button:hover {
opacity: 1;
color: #fff;
background: var(--notesbackgroundcolor) radial-gradient(circle, transparent 1%, var(--notesbackgroundcolor) 1%) center/15000%;
background: var(--notesbackgroundcolor) radial-gradient(circle, transparent 1%, var(--notesbackgroundcolor) 1%) center/15000%;
}
}

View File

@@ -8,7 +8,7 @@
Context: Vanuit ELK asp bestand
*/
var FCLTVersion="2025.3RC1";
var FCLTVersion="2025.4";
var FCLTMinDatabaseSchema="52"; // Alleen de cijfers
var custpath = rooturl + "/cust/" + customerId; // path to customer files

View File

@@ -150,7 +150,7 @@
var waarde = nodelist.nextNode().text;
var safepairs = "h1,h2,h3,h4,h5,h6,b,i,u,em,strong,small,big,th,td,tr,table,pre,code".split(",");
var safepairs = "h1,h2,h3,h4,h5,h6,b,i,u,s,em,strong,small,big,th,td,tr,table,pre,code".split(",");
var safehtml = safe.html(waarde); // Let op: vervangt *alle* \n door <br>. Dat gaan we deels later nog terugdraaien
// We hebben het wel *nodig* omdat .* niet over meerdere regels werkt (hoewel dat
// weer oplosbaar schijnt te zijn met [\s\S])
@@ -218,7 +218,8 @@
var groups = matched[i].match(new RegExp(strre, "i")); // Zonder 'g'lobal-flag
if (groups) {
if (module && key) {
var frc = '<img frc="M=' + module + ':K=' + key + '"/>';
var filename = groups[1];
var frc = '<img frc="M=' + module + ':K=' + key + ':F=' + encodeURIComponent(filename) + '"/>';
safehtml = safehtml.replace(matched[i], frc);
} else { // Dan maar strippen
safehtml = safehtml.replace(matched[i], "[Image]");
@@ -3339,7 +3340,8 @@ END:VCALENDAR
.stat-1 { background-color: #003366; color:white;}
.stat-1b { background-color: #FFC7CE; color: #CC0000;}
.stat0 { background-color: #FFA500;}
.stat2 { background-color: #FFFF00;}
.stat2 { background-color: #B9D7FF;}
.stat3 { background-color: #FFFFC8;}
.statc1 { background-color: #339933; color:white;}
.statc0 { background-color: #990000; color:white;}
</style>
@@ -3366,7 +3368,9 @@ END:VCALENDAR
if (pstatus == 0) td.innerHTML = "P"; // ingepland
if (pstatus == 0) td.style.backgroundColor = "#FFA500";
if (pstatus == 2) td.innerHTML = "S"; // gestart
if (pstatus == 2) td.style.backgroundColor = "#FFFF00";
if (pstatus == 2) td.style.backgroundColor = "#B9D7FF";
if (pstatus == 3) td.innerHTML = "U"; // in uitvoering
if (pstatus == 3) td.style.backgroundColor = "#FFFFC8";
if (ctrmodesuccess == 1) td.innerHTML = "G"; // succesvol
if (ctrmodesuccess == 1) td.style.backgroundColor = "#339933";
if (ctrmodesuccess == 1) td.style.color = "#FFFFFF";
@@ -3676,6 +3680,7 @@ END:VCALENDAR
<span class="stat-1b">T</span><span>Te laat</span>
<span class="stat0">P</span><span >Gepland</span>
<span class="stat2">S</span><span>Gestart</span>
<span class="stat3">U</span><span>In uitvoering</span>
<span class="statc1">G</span><span>Succesvol uitgevoerd</span>
<span class="statc0">F</span><span>Onsuccesvol uitgevoerd</span>
</div>

View File

@@ -457,39 +457,40 @@ FCLTHeader =
}
}
// Contrast ratio between two colors
function contrast(hex1, hex2) {
var L1 = luminance(hex1);
var L2 = luminance(hex2);
if (L1 < L2) {
var t = L1; L1 = L2; L2 = t;
}
return (L1 + 0.05) / (L2 + 0.05);
}
// Compute WCAG relative luminance
function luminance(hex) {
var c = hexToRgb(hex);
var r = c.r / 255, g = c.g / 255, b = c.b / 255;
r = r <= 0.03928 ? r / 12.92 : Math.pow((r + 0.055) / 1.055, 2.4);
g = g <= 0.03928 ? g / 12.92 : Math.pow((g + 0.055) / 1.055, 2.4);
b = b <= 0.03928 ? b / 12.92 : Math.pow((b + 0.055) / 1.055, 2.4);
return 0.2126 * r + 0.7152 * g + 0.0722 * b;
}
// Convert #RRGGBB to {r,g,b} (0<>255)
function hexToRgb(hex) {
var value = parseInt(hex.substring(1), 16);
return {
r: (value >> 16) & 255,
g: (value >> 8) & 255,
b: value & 255
};
}
// Chooses one of two colors (colorA or colorB) based on which has better contrast with a given base color
function _pickContrastColor(baseColor, colorList) {
// Convert #RRGGBB to {r,g,b} (0<>255)
function hexToRgb(hex) {
var value = parseInt(hex.substring(1), 16);
return {
r: (value >> 16) & 255,
g: (value >> 8) & 255,
b: value & 255
};
}
// Compute WCAG relative luminance
function luminance(hex) {
var c = hexToRgb(hex);
var r = c.r / 255, g = c.g / 255, b = c.b / 255;
r = r <= 0.03928 ? r / 12.92 : Math.pow((r + 0.055) / 1.055, 2.4);
g = g <= 0.03928 ? g / 12.92 : Math.pow((g + 0.055) / 1.055, 2.4);
b = b <= 0.03928 ? b / 12.92 : Math.pow((b + 0.055) / 1.055, 2.4);
return 0.2126 * r + 0.7152 * g + 0.0722 * b;
}
// Contrast ratio between two colors
function contrast(hex1, hex2) {
var L1 = luminance(hex1);
var L2 = luminance(hex2);
if (L1 < L2) {
var t = L1; L1 = L2; L2 = t;
}
return (L1 + 0.05) / (L2 + 0.05);
}
// Iterate through all colors and find the one with the highest contrast
var bestColor = null;
@@ -562,16 +563,62 @@ FCLTHeader =
}
}
var white = "#FFFFFF"
var aareonBlack = "#081326";
var mainColor = custtemplate["main-color"] || this.defaultTemplate["main-color"];
var accentColor = custtemplate["accent-color"] || this.defaultTemplate["accent-color"];
var mainColorContrast = _pickContrastColor(mainColor, ["#FFFFFF", aareonBlack, accentColor]);
var accentColorContrast = _pickContrastColor(accentColor, ["#FFFFFF", aareonBlack, mainColor]);
var mainColorContrastOptions = [white, aareonBlack, accentColor];
var mainColorContrastIndex = custtemplate["main-color-contrast"] || 0;
var mainColorContrast;
if (mainColorContrastIndex) {
mainColorContrast = mainColorContrastOptions[mainColorContrastIndex - 1];
} else {
mainColorContrast = _pickContrastColor(mainColor, mainColorContrastOptions);
}
var accentColorContrastOptions = [white, aareonBlack, mainColor];
var accentColorContrastIndex = custtemplate["accent-color-contrast"] || 0;
var accentColorContrast;
if (accentColorContrastIndex) {
accentColorContrast = accentColorContrastOptions[accentColorContrastIndex - 1];
} else {
accentColorContrast = _pickContrastColor(accentColor, accentColorContrastOptions);
}
inCss += "--main-color-contrast: " + mainColorContrast + ";\n";
inCss += "--accent-color-contrast: " + accentColorContrast + ";\n";
var frameHeaderBackgroundColorOptions = [
"#F2F2F2",
"color-mix(in srgb, var(--main-color) 10%, rgb(255, 255, 255))",
"color-mix(in srgb, var(--main-color) 50%, rgb(255, 255, 255))",
"color-mix(in srgb, var(--main-color) 90%, rgb(255, 255, 255))"
];
var frameHeaderBackgroundColorIndex = custtemplate["frameheader-bg-color"] || 0;
var frameHeaderBackgroundColor = frameHeaderBackgroundColorOptions[frameHeaderBackgroundColorIndex];
var frameHeaderColorOptions = [
"var(--headertextcolor)",
"var(--headertextcolor)",
"var(--headertextcolor)",
"var(--main-color-contrast)"
];
var frameHeaderColor = frameHeaderColorOptions[frameHeaderBackgroundColorIndex];
inCss += "--frameheaderbackgroundcolor: " + frameHeaderBackgroundColor + ";\n";
inCss += "--frameheadercolor: " + frameHeaderColor + ";\n";
var menuBackgroundColor = "#F2F2F2"; // Zie ook: variables.css
var menuiconColor = mainColor;
if (contrast(menuBackgroundColor, menuiconColor) < 3) { // Voldoet dit wel aan de WCAG? (>= 3.0)
menuiconColor = accentColor;
}
if (contrast(menuBackgroundColor, menuiconColor) < 3) { // Nu dan?
menuiconColor = aareonBlack;
}
inCss += "--menuiconcolor: " + menuiconColor + ";\n";
inCss += "}";
var outFile = _getFileByFilename.call(this, outfname);
@@ -633,7 +680,7 @@ FCLTHeader =
+ " JOIN fac_setting fs ON fs.fac_setting_key = fa.fac_audit_tabelkey"
+ " WHERE fa.fac_audit_tabelnaam = 'fac_setting'"
+ " AND fa.fac_audit_veldnaam = 'fac_setting_pvalue'"
+ " AND fs.fac_setting_name IN ('csstemplate', 'custcss')";
+ " AND fs.fac_setting_name IN ('csstemplate', 'csscust')";
var oRs = Oracle.Execute(sql);
var lastChanged = oRs("last_changed").Value;
if (lastChanged === null) {

View File

@@ -19,6 +19,7 @@ var autfunction_arr = getQParamArray("autfunction", []); // Check of user recht
var disctype = getQParamInt("disctype", -1); // Vakgroeptype.
var disc_key_arr = getQParamIntArray("disc_key_str", []); // Vakgroep Array.
var offerte = getQParamInt("offerte", -1);
var selectjustone = getQParamInt("selectjustone", 0) == 1;
var discsql_aut = "SELECT ins_discipline_key"
+ " FROM fac_v_webgebruiker g"
@@ -32,13 +33,13 @@ var discsql = "SELECT bd.ins_discipline_key"
+ " , " + lcl.xsqla('bd.ins_discipline_omschrijving','bd.ins_discipline_key')
+ " FROM bes_discipline bd"
+ " WHERE bd.ins_discipline_verwijder IS NULL"
+(disctype == 2
+(disctype <= 2
? " AND bd.ins_discipline_key IN (SELECT dp.bes_ins_discipline_key_inkoop"
+ " FROM bes_disc_params dp"
+ " WHERE dp.bes_ins_discipline_key_inkoop IS NOT NULL)"
: "")
+ " AND bd.ins_discipline_key IN (" + discsql_aut + ")"
+ (disctype > 0
+ (disctype >= 0
? " AND bd.ins_discipline_key IN (SELECT bes_ins_discipline_key"
+ " FROM bes_disc_params"
+ " WHERE bes_disc_params_bestelmode = " + disctype + ")"
@@ -51,7 +52,8 @@ var discsql = "SELECT bd.ins_discipline_key"
FCLTselectorOptions(discsql,
{ initKey: disc_key_arr.join(","),
onChange: 'updateSrtGroup("' + autfunction_arr.join(",") + '");',
emptyOption: (disc_key_arr.length == 0 ? L("lcl_search_generic") : null) // Als een disc_key_arr is meegegeven dan geen lege optie
emptyOption: (disc_key_arr.length == 0 ? L("lcl_search_generic") : null), // Als een disc_key_arr is meegegeven dan geen lege optie
selectjustone: selectjustone? true : false
});
%>
mo

View File

@@ -20,6 +20,7 @@ var module = getQParam("module", ""); // Module die de ins_srtgroep-en opvraagt
var multi = (getQParamInt("multi", 0) == 1);
var size = getQParamInt("size", 4);
var emptyOption = getQParam("emptyOption", null);
var selectjustone = getQParamInt("selectjustone", 0) == 1;
var selectfirstone = (getQParamInt("selectfirstone", 0) == 1);
var onChange = getQParam("onChange", "");
var required = (getQParamInt("required", 0) == 1);
@@ -56,10 +57,12 @@ var params = { initKey: srtgroup_arr.join(","),
if (emptyOption != null)
params.emptyOption = emptyOption;
if (selectjustone)
params.selectjustone = selectjustone;
if (selectfirstone)
params.selectfirstone = selectfirstone;
FCLTselectorOptions(sql,
params);
%>
<% ASPPAGE_END(); %>
<% ASPPAGE_END(); %>

View File

@@ -23,6 +23,7 @@ var module = getQParam("module", ""); // Module die de ins_srtgroep-en opvraagt
var multi = (getQParamInt("multi", 0) == 1);
var size = getQParamInt("size", 4);
var emptyOption = getQParam("emptyOption", null);
var selectjustone = getQParamInt("selectjustone", 0) == 1;
var selectfirstone = (getQParamInt("selectfirstone", 0) == 1);
var extraParamValue = getQParam("extraParamValue", "");
var required = (getQParamInt("required", 0) == 1);
@@ -92,6 +93,8 @@ if (extraParamValue != "")
params.extraParamValue = extraParamValue;
if (emptyOption != null)
params.emptyOption = emptyOption;
if (selectjustone)
params.selectjustone = selectjustone;
if (selectfirstone)
params.selectfirstone = selectfirstone;

View File

@@ -220,7 +220,7 @@ notes =
if (_hasUitv(u.uitv_key, i)) { // Hebben we 2 opdrachten met dezelfde uitvoerder -> dan prefixen met opdracht_nr
u.uitv_naam = L("lcl_shared_order") + " " + u.opdr_volgnr + ": " + u.uitv_naam;
}
Response.Write(_fnTogglesHtml({ to: BITROLE["UITV"], to_name: u.uitv_naam, opdr_key: u.opdr_key, uid: u.opdr_volgnr, has: 8, val: (openVraagRequired && i == 0 ? 8 : 0) }));
Response.Write(_fnTogglesHtml({ to: BITROLE["UITV"], to_name: u.uitv_naam, opdr_key: u.opdr_key, uid: u.opdr_volgnr, has: 8, val: (i == 0 ? 8 : 0) }));
}
}
}
@@ -744,7 +744,7 @@ notes =
// Melding afgemeld en attentie bij de melder.
ROFIELDTR("mldshowactie fclt-info", "", L("lcl_mld_actiecodeATTFE"), {ishtmlsafe: true, suppressEmpty: true});
else
Response.Write("<div class='mldshowactie fclt-info'> " + L("lcl_" + pmodule.toLowerCase() + "_edit_note_completed") + "</div>");
Response.Write("<div class='mldshowactie fclt-warning'> " + L("lcl_" + pmodule.toLowerCase() + "_edit_note_completed") + "</div>");
}
var form_action = pmodule.toLowerCase() + "_edit_note_save.asp"
+ "?" + pmodule.toLowerCase() + "_key=" + pkey

View File

@@ -290,7 +290,8 @@ ResultsetTable.prototype.ProcessAsXMLXSL = function()
var theSqlFlex = "";
if (this.printFlex)
theSqlFlex = getSqlFlex(flexModule.toUpperCase(), flexId, this.myRs(flexParams, oRs));
for (var cnt = 0; !oRs.EOF; cnt++)
// nooit meer dan qp_maxrows2
for (var cnt = 0; !oRs.EOF && cnt < S("qp_maxrows2"); cnt++)
{
// Vooralsnog geen flex
var elementRecord = xmlDoc.createElement("data_row");
@@ -1554,7 +1555,7 @@ function __rsProcessResultset(processParams) // processParams wordt blind aan al
// Op regel klikken om de overige regels op te halen, boven de tabel
html = "<div id='rsMaxHistoryB'><span id='rsMaxHistoryInfoB'>"
+ (cnt <= S("qp_maxrows") + nrOutOfFilter
+ (cnt <= S("qp_maxrows") + nrOutOfFilter && S("qp_maxrows") != S("qp_maxrows2")
? a_element.replace(/&collapsed=1/gi, "") // Als er op deze regel wordt geklikt moet IFRAMER niet meer dichtgeklapt worden, dus &collapsed=1 verwijderen uit de link.
: L("lcl_qp_maxrows2").format(S("qp_maxrows2"))
)
@@ -1659,7 +1660,7 @@ function __rsProcessResultset(processParams) // processParams wordt blind aan al
// Op regel klikken om de overige regels op te halen, onder de tabel
html = "\n<div id='rsMaxHistoryE'><span id='rsMaxHistoryInfoE'>"
+ (cnt <= S("qp_maxrows") + nrOutOfFilter
+ (cnt <= S("qp_maxrows") + nrOutOfFilter && S("qp_maxrows") != S("qp_maxrows2")
? a_element
: L("lcl_qp_maxrows2").format(S("qp_maxrows2"))
)

View File

@@ -205,24 +205,33 @@ function buildTrackText(typ, oldjsval, newjsval, params)
}
else
{
var stringifyParams = {};
if (typ == "datetime" || typ == "date" || typ == "time") {
if (params.track_in_tz) {
oldjsval = convertToLocalTime(oldjsval, params.track_in_tz);
newjsval = convertToLocalTime(newjsval, params.track_in_tz);
stringifyParams.isLocal = true;
}
}
switch (typ)
{
case "datetime":
{
var oldtxt = toDateTimeString(oldjsval);
var newtxt = toDateTimeString(newjsval);
var oldtxt = toDateTimeString(oldjsval, stringifyParams);
var newtxt = toDateTimeString(newjsval, stringifyParams);
break;
}
case "date":
{
var oldtxt = toDateString(oldjsval);
var newtxt = toDateString(newjsval);
var oldtxt = toDateString(oldjsval, stringifyParams);
var newtxt = toDateString(newjsval, stringifyParams);
break;
}
case "time":
{
var oldtxt = toTimeString(oldjsval);
var newtxt = toTimeString(newjsval);
var oldtxt = toTimeString(oldjsval, stringifyParams);
var newtxt = toTimeString(newjsval, stringifyParams);
break;
}
case "key": // hash foreign moet ook gedefinieerd zijn
@@ -525,10 +534,14 @@ function buildTrackingUpdate(tabel, where, xfields, params)
var lbl = tupel.field.track;
// if (params.dialect_key)
// lbl = lcl.x(tupel.field.track, params.dialect_key);
var trackParams = { foreign: tupel.field.foreign, oldjsvals: oldjsvals };
if ("track_in_tz" in tupel.field) {
trackParams.track_in_tz = tupel.field.track_in_tz;
}
if (tupel.field.buildTrackText)
var tracktxt = tupel.field.buildTrackText(tupel.field.typ, oldjsval, tupel.jsval, { foreign: tupel.field.foreign, oldjsvals: oldjsvals } );
var tracktxt = tupel.field.buildTrackText(tupel.field.typ, oldjsval, tupel.jsval, trackParams);
else
var tracktxt = lbl + ": " + buildTrackText(tupel.field.typ, oldjsval, tupel.jsval, { foreign: tupel.field.foreign, oldjsvals: oldjsvals } );
var tracktxt = lbl + ": " + buildTrackText(tupel.field.typ, oldjsval, tupel.jsval, trackParams);
trackarray.push( (params.includeName ? params.includeName + "; " : "") + tracktxt);
}
oldjsvals[tupel.field.dbs] = oldjsval;

View File

@@ -19,25 +19,24 @@ function FCLTtimezoneselector(fieldName, params)
if (typeof params == "undefined") params = {};
// Wat we opslaan is een IANA string. Door readonly hier te ondersteunen regelen we de presentatie centraal
var sql = "SELECT DISTINCT tzname,"
var sql = "SELECT tzname,"
+ " '(UTC ' || RTRIM(TZ_OFFSET(tzname), CHR(0)) || ') ' || tzname AS label"
+ " FROM V$TIMEZONE_NAMES"
+ ((params.readonly && params.initVal != "") // als die NULL is, levert dit -terecht- ook niks op, gewenst sideeffect
? " WHERE tzname = " + safe.quoted_sql(params.initVal) // alleen de initVal tonen, dit is geen key
: " WHERE tzname LIKE '%/%'" // alleen continent/stad-format
+ " AND NOT tzname LIKE '%GMT%'" // filter aliassen
+ "AND ("
+ " tzname LIKE 'Europe/%' OR"
+ " tzname LIKE 'America/%' OR"
+ " tzname LIKE 'Asia/%' OR"
+ " tzname LIKE 'Australia/%' OR"
+ " tzname LIKE 'Africa/%' OR"
+ " tzname LIKE 'Pacific/%'"
+ ")"
+ "GROUP BY tzname, TZ_OFFSET(tzname)"
+ "ORDER BY TO_NUMBER(SUBSTR(TZ_OFFSET(tzname), 1, 3)"
+ " || SUBSTR(TZ_OFFSET(tzname), 5, 2)) ASC,"
+ " tzname"
: " WHERE NOT tzname LIKE '%GMT%'" // filter aliassen
+ " AND ("
+ " tzname LIKE 'Europe/%' OR"
+ " tzname LIKE 'America/%' OR"
+ " tzname LIKE 'Asia/%' OR"
+ " tzname LIKE 'Australia/%' OR"
+ " tzname LIKE 'Africa/%' OR"
+ " tzname LIKE 'Pacific/%'" // En deze dan; [Antarctica, Atlantic, Arctic, Brazil, Canada, Chile, Indian, Mexico, US] ?
+ " )"
+ " GROUP BY tzname, TZ_OFFSET(tzname)"
+ " ORDER BY TO_NUMBER(SUBSTR(TZ_OFFSET(tzname), 1, 3)"
+ " || SUBSTR(TZ_OFFSET(tzname), 5, 2)) ASC,"
+ " tzname"
);
// de FCLTselector doet het niet lekker met initVal, readonly en suppressEmpty

View File

@@ -86,11 +86,13 @@
--fclt-color-grey-40: color-mix(in srgb, var(--aareon-urban-grey) 40%, transparent);
/* General */
--fclt-color-grey: rgb(128, 128, 128);
--fclt-color-grey-50: rgba(128, 128, 128, 0.5);
--fclt-color-bad: rgb(156, 0, 6);
--fclt-color-bad-contrast: rgb(255, 199, 206);
--fclt-color-good: rgb(0, 97, 0);
--fclt-color-good-contrast: rgb(198, 239, 206);
--fclt-color-neutral: rgb(94, 61, 0);;
--fclt-color-neutral: rgb(94, 61, 0);
--fclt-color-neutral-contrast: rgb(255, 235, 156);
--fclt-color-red: rgb(236, 24, 24);
@@ -155,7 +157,7 @@
--portalkopcolor: var(--textcolor);
--headercolor: var(--headertextcolor);
--activetabbackgroundcolor: #FEFEFE; /* 99.5% wit, 0.5% zwart */
--activetabbackgroundcolor: #FCFCFC; /* 99% wit, 1% zwart */
--activetabcolor: var(--headertextcolor);
--inactivetabbackgroundcolor: #E6E6E6; /* 90% wit, 10% zwart */;
--inactivetabcolor: var(--textcolor);
@@ -167,13 +169,13 @@
--buttonbackgroundcolormediumlow: #F2F2F2; /* 95% wit, 5% zwart */;
--buttoncolormediumlow: var(--headertextcolor);
--frameheaderbackgroundcolor: #F2F2F2; /* 95% wit, 5% zwart */;
--frameheadercolor: var(--headertextcolor); /* accent-light is licht genoeg om hoog contrast te garanderen */
/* berekend; --frameheaderbackgroundcolor: #F2F2F2; /* 95% wit, 5% zwart */;
/* berekend; --frameheadercolor: var(--headertextcolor); /* accent-light is licht genoeg om hoog contrast te garanderen */
--inlineactionbackgroundcolor: var(--main-color-contrast);
--inlineactioncolor: var(--main-color);
--menubackgroundcolor: #F2F2F2; /* 95% wit, 5% zwart */;
--menubackgroundcolor: #F2F2F2; /* 95% wit, 5% zwart, zie ook; header.inc (!) */;
--menucolor: var(--headertextcolor);
--menukophoverbackgroundcolor: #E6E6E6; /* 90% wit, 10% zwart */;
--menukophovercolor: var(--headertextcolor);

View File

@@ -199,17 +199,34 @@ function STR2Stream(xmlstr, xslfile, Stream, params)
}
else
{
var filedata = props.files[0];
var fileIndex = 0;
if (props.files.length > 1) {
var codes = flexcode.split(":");
for (var i = 0; i < codes.length && !fileIndex; i++) {
var code = codes[i].substr(0,1);
var data = codes[i].substr(2);
if (code == "F") { // Dan is; data = filename
for (var j = 0; j < props.files.length; j++) {
if (props.files[j].name == data) {
fileIndex = j;
break;
}
}
}
}
}
var filedata = props.files[fileIndex];
if (filedata.resized)
var file = filedata.resized;
else
var file = props.AttachPath + props.files[0].name;
var file = props.AttachPath + filedata.name;
if (!fso.FileExists(file))
{
__DoLog("Flexcode {0}, file {1} not found".format(flexcode, file));
var newbody = p_bodyhtml.substr(0, imgstart) + "<img src=\"MISSING_" + safe.htmlattr(props.files[0].name) + "\">" + p_bodyhtml.substr(imgend + 1);
var newbody = p_bodyhtml.substr(0, imgstart) + "<img src=\"MISSING_" + safe.htmlattr(filedata.name) + "\">" + p_bodyhtml.substr(imgend + 1);
p_bodyhtml = newbody;
}
else

View File

@@ -597,6 +597,7 @@ function SLNKDWF (myProps)
Session("lastTempW2D") = TempW2D;
}
myProps.tmRender = ((oSLNKDWF.usTimer - myProps.timerStart)/1000 - myProps.tmBuild).toFixed(0);
__Log("SlnkDWF Build="+myProps.tmBuild+"ms"+ (myProps.cached?" (was cached)":"") + "; Render="+myProps.tmRender + "ms" + (mustEnd?" (mustEnd)":""));
Response.AddHeader("SlnkDWF","B="+myProps.tmBuild+";R="+myProps.tmRender + (myProps.cached?";C=1":"") + (mustEnd?";E=1":""));
if (mustEnd)
Response.End; // We doen alles via 304

Some files were not shown because too many files have changed in this diff Show More