Add Engelsman, Kruising types and rebuild Overwegbevloering diagram
Three new inspection types based on analyzed reference diagrams: - Engelsman (half/heel): 5-section layout with DWL/BAL scoring - Kruising (incl. ingesloten): 4-section layout with DWL/BAL scoring - Overwegbevloering: rebuilt as spatial diagram with 14 photo positions (sticker, spoorbord, 6x lage km, 6x hoge km) Wissel subtype detection from SOORT field in SAP XML. Shared DWL/BAL logic via usesDwlBal() helper. Section maps per type. Overview photo export now includes all types.
This commit is contained in:
parent
6162b1b644
commit
684b89b8fc
|
|
@ -82,12 +82,18 @@
|
||||||
.header-grid.wissel-only,
|
.header-grid.wissel-only,
|
||||||
.header-grid.overweg-only,
|
.header-grid.overweg-only,
|
||||||
.header-grid.spoor-only { display: none; }
|
.header-grid.spoor-only { display: none; }
|
||||||
body.type-wissel .header-grid.wissel-only { display: grid; }
|
body.type-wissel .header-grid.wissel-only,
|
||||||
|
body.type-engelsman .header-grid.wissel-only,
|
||||||
|
body.type-kruising .header-grid.wissel-only { display: grid; }
|
||||||
body.type-overweg .header-grid.overweg-only { display: grid; }
|
body.type-overweg .header-grid.overweg-only { display: grid; }
|
||||||
body.type-spoor .header-grid.spoor-only { display: grid; }
|
body.type-spoor .header-grid.spoor-only { display: grid; }
|
||||||
|
|
||||||
.wissel-overview { display: none; }
|
.wissel-overview,
|
||||||
|
.engelsman-overview,
|
||||||
|
.kruising-overview { display: none; }
|
||||||
body.type-wissel .wissel-overview { display: grid; }
|
body.type-wissel .wissel-overview { display: grid; }
|
||||||
|
body.type-engelsman .engelsman-overview { display: grid; }
|
||||||
|
body.type-kruising .kruising-overview { display: grid; }
|
||||||
|
|
||||||
.overweg-overview { display: none; }
|
.overweg-overview { display: none; }
|
||||||
body.type-overweg .overweg-overview { display: block; }
|
body.type-overweg .overweg-overview { display: block; }
|
||||||
|
|
@ -97,17 +103,50 @@ body.type-spoor .spoor-overview { display: block; }
|
||||||
|
|
||||||
.instruction-box.wissel-only,
|
.instruction-box.wissel-only,
|
||||||
.instruction-box.overweg-only,
|
.instruction-box.overweg-only,
|
||||||
.instruction-box.spoor-only { display: none; }
|
.instruction-box.spoor-only,
|
||||||
|
.instruction-box.engelsman-only,
|
||||||
|
.instruction-box.kruising-only { display: none; }
|
||||||
body.type-wissel .instruction-box.wissel-only { display: block; }
|
body.type-wissel .instruction-box.wissel-only { display: block; }
|
||||||
body.type-overweg .instruction-box.overweg-only { display: block; }
|
body.type-overweg .instruction-box.overweg-only { display: block; }
|
||||||
body.type-spoor .instruction-box.spoor-only { display: block; }
|
body.type-spoor .instruction-box.spoor-only { display: block; }
|
||||||
|
body.type-engelsman .instruction-box.engelsman-only { display: block; }
|
||||||
|
body.type-kruising .instruction-box.kruising-only { display: block; }
|
||||||
|
|
||||||
.svg-link-row { display: none; }
|
.svg-link-row { display: none; }
|
||||||
body.type-wissel .svg-link-row { display: block; }
|
body.type-wissel .svg-link-row { display: block; }
|
||||||
|
|
||||||
|
/* Overwegbevloering spatial diagram */
|
||||||
|
.ow-special-row {
|
||||||
|
display: flex; justify-content: center; gap: 24px; padding: 12px 0;
|
||||||
|
border-bottom: 1px solid #ddd; margin-bottom: 8px;
|
||||||
|
}
|
||||||
|
.ow-diagram {
|
||||||
|
display: grid; grid-template-columns: 100px 1fr 100px;
|
||||||
|
gap: 0; max-width: 700px; margin: 0 auto; min-height: 320px;
|
||||||
|
}
|
||||||
|
.ow-side {
|
||||||
|
display: flex; flex-direction: column; align-items: center;
|
||||||
|
justify-content: space-around; padding: 4px 0;
|
||||||
|
}
|
||||||
|
.ow-km-label {
|
||||||
|
font-size: 10px; font-weight: 700; color: var(--prorail-blue);
|
||||||
|
writing-mode: vertical-rl; text-orientation: mixed;
|
||||||
|
letter-spacing: 0.5px; margin-bottom: 8px;
|
||||||
|
}
|
||||||
|
.ow-center {
|
||||||
|
position: relative; display: flex; align-items: center; justify-content: center;
|
||||||
|
}
|
||||||
|
.ow-crossing-svg { width: 100%; height: 100%; max-height: 360px; }
|
||||||
|
.ow-weg-label {
|
||||||
|
position: absolute; font-size: 11px; font-weight: 700; color: #666;
|
||||||
|
left: 50%; transform: translateX(-50%);
|
||||||
|
}
|
||||||
|
.ow-weg-top { top: 4px; }
|
||||||
|
.ow-weg-bottom { bottom: 4px; }
|
||||||
|
|
||||||
|
/* Generic photo grid for spoor overview */
|
||||||
.ov-photo-grid {
|
.ov-photo-grid {
|
||||||
display: grid; grid-template-columns: repeat(3, 1fr);
|
display: flex; justify-content: center; gap: 24px; padding: 16px 0;
|
||||||
gap: 12px; max-width: 500px; margin: 0 auto; padding: 16px 0;
|
|
||||||
}
|
}
|
||||||
.ov-photo-grid .capture-label { padding: 12px 8px; }
|
.ov-photo-grid .capture-label { padding: 12px 8px; }
|
||||||
|
|
||||||
|
|
@ -240,9 +279,21 @@ body.type-wissel .svg-link-row { display: block; }
|
||||||
position: relative; border: 1px solid #aaa; display: flex; flex-direction: column;
|
position: relative; border: 1px solid #aaa; display: flex; flex-direction: column;
|
||||||
justify-content: center; align-items: center; min-height: 140px; overflow: hidden;
|
justify-content: center; align-items: center; min-height: 140px; overflow: hidden;
|
||||||
}
|
}
|
||||||
.section-strip.puntstuk { background: var(--section-punt); border-radius: 4px 4px 0 0; }
|
.section-strip.puntstuk { background: var(--section-punt); }
|
||||||
.section-strip.midden { background: var(--section-midden); }
|
.section-strip.midden { background: var(--section-midden); }
|
||||||
.section-strip.tong { background: var(--section-tong); border-radius: 0 0 4px 4px; }
|
.section-strip.tong { background: var(--section-tong); }
|
||||||
|
.section-strip.kruisstuk { background: #80deea; }
|
||||||
|
|
||||||
|
.eng-nr-label {
|
||||||
|
font-size: 11px; font-weight: 700; color: var(--prorail-blue);
|
||||||
|
text-align: center; align-self: center;
|
||||||
|
}
|
||||||
|
|
||||||
|
.engelsman-overview, .kruising-overview {
|
||||||
|
grid-template-columns: 110px 1fr 110px;
|
||||||
|
grid-template-rows: auto;
|
||||||
|
gap: 0; max-width: 700px; margin: 0 auto 16px auto; align-items: stretch;
|
||||||
|
}
|
||||||
.section-strip .section-name {
|
.section-strip .section-name {
|
||||||
font-size: 13px; font-weight: 700; color: var(--prorail-blue);
|
font-size: 13px; font-weight: 700; color: var(--prorail-blue);
|
||||||
text-align: center; z-index: 1; text-shadow: 0 0 4px rgba(255,255,255,0.8);
|
text-align: center; z-index: 1; text-shadow: 0 0 4px rgba(255,255,255,0.8);
|
||||||
|
|
|
||||||
|
|
@ -49,6 +49,8 @@
|
||||||
<div class="filter-btns">
|
<div class="filter-btns">
|
||||||
<button class="filter-btn active" data-filter="alle">Alle</button>
|
<button class="filter-btn active" data-filter="alle">Alle</button>
|
||||||
<button class="filter-btn" data-filter="Wissel">Wissels</button>
|
<button class="filter-btn" data-filter="Wissel">Wissels</button>
|
||||||
|
<button class="filter-btn" data-filter="Engelsman">Engelsman</button>
|
||||||
|
<button class="filter-btn" data-filter="Kruising">Kruising</button>
|
||||||
<button class="filter-btn" data-filter="Overwegbevloering">Overwegen</button>
|
<button class="filter-btn" data-filter="Overwegbevloering">Overwegen</button>
|
||||||
<button class="filter-btn" data-filter="Spoor">Spoor</button>
|
<button class="filter-btn" data-filter="Spoor">Spoor</button>
|
||||||
<button class="filter-btn" data-filter="open">Nog open</button>
|
<button class="filter-btn" data-filter="open">Nog open</button>
|
||||||
|
|
@ -220,6 +222,18 @@
|
||||||
Foto's met bijzonderheden dienen in het opmerkingen-veld begeleid te worden
|
Foto's met bijzonderheden dienen in het opmerkingen-veld begeleid te worden
|
||||||
in combinatie met het fotonummer.
|
in combinatie met het fotonummer.
|
||||||
</div>
|
</div>
|
||||||
|
<div class="instruction-box engelsman-only">
|
||||||
|
<strong>Instructie:</strong> Eerste foto bevat het bordje met het wisselnummer.
|
||||||
|
Daarna dienen de foto's buitenom of rechtsom in volgorde te worden gemaakt.
|
||||||
|
Foto's met bijzonderheden dienen in het opmerkingen-veld begeleid te worden
|
||||||
|
in combinatie met het fotonummer.
|
||||||
|
</div>
|
||||||
|
<div class="instruction-box kruising-only">
|
||||||
|
<strong>Instructie:</strong> Eerste foto bevat het bordje met het wisselnummer.
|
||||||
|
Daarna dienen de foto's links of rechtsom in volgorde te worden gemaakt.
|
||||||
|
Foto's met bijzonderheden dienen in het opmerkingen-veld begeleid te worden
|
||||||
|
in combinatie met het fotonummer.
|
||||||
|
</div>
|
||||||
<div class="instruction-box spoor-only">
|
<div class="instruction-box spoor-only">
|
||||||
<strong>Instructie:</strong> Maak overzichtsfoto's vanuit beide richtingen van het spoorvak.
|
<strong>Instructie:</strong> Maak overzichtsfoto's vanuit beide richtingen van het spoorvak.
|
||||||
Maak per beoordeeld segment minimaal een foto via de beoordelingstabel.
|
Maak per beoordeeld segment minimaal een foto via de beoordelingstabel.
|
||||||
|
|
@ -275,38 +289,105 @@
|
||||||
</label>
|
</label>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
<div class="engelsman-overview">
|
||||||
|
<div class="ovz-row">
|
||||||
|
<label class="capture-label" data-pos="ovz_eng_tl"><div class="cap-icon"><svg width="22" height="22" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><path d="M23 19a2 2 0 0 1-2 2H3a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h4l2-3h6l2 3h4a2 2 0 0 1 2 2z"/><circle cx="12" cy="13" r="4"/></svg><span class="cap-badge" id="cbadge_ovz_eng_tl"></span></div><span class="cap-text">Overzichtsfoto</span><span class="cap-arrow lg">↘</span><input type="file" accept="image/*" capture="environment" data-pos="ovz_eng_tl"></label>
|
||||||
|
<div class="flex-spacer"></div>
|
||||||
|
<span class="eng-nr-label">Hoogste wisselnummer</span>
|
||||||
|
<div class="flex-spacer"></div>
|
||||||
|
<label class="capture-label" data-pos="ovz_eng_tr"><div class="cap-icon"><svg width="22" height="22" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><path d="M23 19a2 2 0 0 1-2 2H3a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h4l2-3h6l2 3h4a2 2 0 0 1 2 2z"/><circle cx="12" cy="13" r="4"/></svg><span class="cap-badge" id="cbadge_ovz_eng_tr"></span></div><span class="cap-text">Overzichtsfoto</span><span class="cap-arrow lg">↙</span><input type="file" accept="image/*" capture="environment" data-pos="ovz_eng_tr"></label>
|
||||||
|
</div>
|
||||||
|
<div class="side-labels left"><label class="capture-label" data-pos="foto_eng_s5_l"><div class="cap-icon"><svg width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><path d="M23 19a2 2 0 0 1-2 2H3a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h4l2-3h6l2 3h4a2 2 0 0 1 2 2z"/><circle cx="12" cy="13" r="4"/></svg><span class="cap-badge" id="cbadge_foto_eng_s5_l"></span></div><span class="cap-text">Foto</span><span class="cap-arrow"></span><input type="file" accept="image/*" capture="environment" data-pos="foto_eng_s5_l"></label></div>
|
||||||
|
<div class="section-strip puntstuk"><div class="section-name">Puntstuk</div><div class="section-sub">gedeelte</div><div class="section-sub sm">Sectie 5</div></div>
|
||||||
|
<div class="side-labels right"><label class="capture-label" data-pos="foto_eng_s5_r"><div class="cap-icon"><svg width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><path d="M23 19a2 2 0 0 1-2 2H3a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h4l2-3h6l2 3h4a2 2 0 0 1 2 2z"/><circle cx="12" cy="13" r="4"/></svg><span class="cap-badge" id="cbadge_foto_eng_s5_r"></span></div><span class="cap-text">Foto</span><span class="cap-arrow"></span><input type="file" accept="image/*" capture="environment" data-pos="foto_eng_s5_r"></label></div>
|
||||||
|
<div class="side-labels left"><label class="capture-label" data-pos="foto_eng_s4_l"><div class="cap-icon"><svg width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><path d="M23 19a2 2 0 0 1-2 2H3a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h4l2-3h6l2 3h4a2 2 0 0 1 2 2z"/><circle cx="12" cy="13" r="4"/></svg><span class="cap-badge" id="cbadge_foto_eng_s4_l"></span></div><span class="cap-text">Foto</span><span class="cap-arrow"></span><input type="file" accept="image/*" capture="environment" data-pos="foto_eng_s4_l"></label></div>
|
||||||
|
<div class="section-strip kruisstuk"><div class="section-name">Kruisstuk</div><div class="section-sub">gedeelte</div><div class="section-sub sm">Sectie 4</div></div>
|
||||||
|
<div class="side-labels right"><label class="capture-label" data-pos="foto_eng_s4_r"><div class="cap-icon"><svg width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><path d="M23 19a2 2 0 0 1-2 2H3a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h4l2-3h6l2 3h4a2 2 0 0 1 2 2z"/><circle cx="12" cy="13" r="4"/></svg><span class="cap-badge" id="cbadge_foto_eng_s4_r"></span></div><span class="cap-text">Foto</span><span class="cap-arrow"></span><input type="file" accept="image/*" capture="environment" data-pos="foto_eng_s4_r"></label></div>
|
||||||
|
<div class="side-labels left"><label class="capture-label" data-pos="foto_eng_s3_l"><div class="cap-icon"><svg width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><path d="M23 19a2 2 0 0 1-2 2H3a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h4l2-3h6l2 3h4a2 2 0 0 1 2 2z"/><circle cx="12" cy="13" r="4"/></svg><span class="cap-badge" id="cbadge_foto_eng_s3_l"></span></div><span class="cap-text">Foto</span><span class="cap-arrow"></span><input type="file" accept="image/*" capture="environment" data-pos="foto_eng_s3_l"></label></div>
|
||||||
|
<div class="section-strip midden"><div class="section-name">Midden-</div><div class="section-name">gedeelte</div><div class="section-sub sm">Sectie 3</div></div>
|
||||||
|
<div class="side-labels right"><label class="capture-label" data-pos="foto_eng_s3_r"><div class="cap-icon"><svg width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><path d="M23 19a2 2 0 0 1-2 2H3a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h4l2-3h6l2 3h4a2 2 0 0 1 2 2z"/><circle cx="12" cy="13" r="4"/></svg><span class="cap-badge" id="cbadge_foto_eng_s3_r"></span></div><span class="cap-text">Foto</span><span class="cap-arrow"></span><input type="file" accept="image/*" capture="environment" data-pos="foto_eng_s3_r"></label></div>
|
||||||
|
<div class="side-labels left"><label class="capture-label" data-pos="foto_eng_s2_l"><div class="cap-icon"><svg width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><path d="M23 19a2 2 0 0 1-2 2H3a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h4l2-3h6l2 3h4a2 2 0 0 1 2 2z"/><circle cx="12" cy="13" r="4"/></svg><span class="cap-badge" id="cbadge_foto_eng_s2_l"></span></div><span class="cap-text">Foto</span><span class="cap-arrow"></span><input type="file" accept="image/*" capture="environment" data-pos="foto_eng_s2_l"></label></div>
|
||||||
|
<div class="section-strip tong"><div class="section-name">Tong-</div><div class="section-name">beweging</div><div class="section-sub sm">Sectie 2</div></div>
|
||||||
|
<div class="side-labels right"><label class="capture-label" data-pos="foto_eng_s2_r"><div class="cap-icon"><svg width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><path d="M23 19a2 2 0 0 1-2 2H3a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h4l2-3h6l2 3h4a2 2 0 0 1 2 2z"/><circle cx="12" cy="13" r="4"/></svg><span class="cap-badge" id="cbadge_foto_eng_s2_r"></span></div><span class="cap-text">Foto</span><span class="cap-arrow"></span><input type="file" accept="image/*" capture="environment" data-pos="foto_eng_s2_r"></label></div>
|
||||||
|
<div class="side-labels left"><label class="capture-label" data-pos="foto_eng_s1_l"><div class="cap-icon"><svg width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><path d="M23 19a2 2 0 0 1-2 2H3a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h4l2-3h6l2 3h4a2 2 0 0 1 2 2z"/><circle cx="12" cy="13" r="4"/></svg><span class="cap-badge" id="cbadge_foto_eng_s1_l"></span></div><span class="cap-text">Foto</span><span class="cap-arrow"></span><input type="file" accept="image/*" capture="environment" data-pos="foto_eng_s1_l"></label></div>
|
||||||
|
<div class="section-strip puntstuk"><div class="section-name">Puntstuk</div><div class="section-sub">gedeelte</div><div class="section-sub sm">Sectie 1</div></div>
|
||||||
|
<div class="side-labels right"><label class="capture-label" data-pos="foto_eng_s1_r"><div class="cap-icon"><svg width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><path d="M23 19a2 2 0 0 1-2 2H3a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h4l2-3h6l2 3h4a2 2 0 0 1 2 2z"/><circle cx="12" cy="13" r="4"/></svg><span class="cap-badge" id="cbadge_foto_eng_s1_r"></span></div><span class="cap-text">Foto</span><span class="cap-arrow"></span><input type="file" accept="image/*" capture="environment" data-pos="foto_eng_s1_r"></label></div>
|
||||||
|
<div class="ovz-row">
|
||||||
|
<label class="capture-label" data-pos="ovz_eng_bl"><div class="cap-icon"><svg width="22" height="22" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><path d="M23 19a2 2 0 0 1-2 2H3a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h4l2-3h6l2 3h4a2 2 0 0 1 2 2z"/><circle cx="12" cy="13" r="4"/></svg><span class="cap-badge" id="cbadge_ovz_eng_bl"></span></div><span class="cap-text">Overzichtsfoto</span><span class="cap-arrow lg">↗</span><input type="file" accept="image/*" capture="environment" data-pos="ovz_eng_bl"></label>
|
||||||
|
<div class="flex-spacer"></div>
|
||||||
|
<span class="eng-nr-label">Laagste wisselnummer</span>
|
||||||
|
<div class="flex-spacer"></div>
|
||||||
|
<label class="capture-label" data-pos="ovz_eng_br"><div class="cap-icon"><svg width="22" height="22" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><path d="M23 19a2 2 0 0 1-2 2H3a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h4l2-3h6l2 3h4a2 2 0 0 1 2 2z"/><circle cx="12" cy="13" r="4"/></svg><span class="cap-badge" id="cbadge_ovz_eng_br"></span></div><span class="cap-text">Overzichtsfoto</span><span class="cap-arrow lg">↖</span><input type="file" accept="image/*" capture="environment" data-pos="ovz_eng_br"></label>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="kruising-overview">
|
||||||
|
<div class="ovz-row">
|
||||||
|
<label class="capture-label" data-pos="ovz_kr_tl"><div class="cap-icon"><svg width="22" height="22" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><path d="M23 19a2 2 0 0 1-2 2H3a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h4l2-3h6l2 3h4a2 2 0 0 1 2 2z"/><circle cx="12" cy="13" r="4"/></svg><span class="cap-badge" id="cbadge_ovz_kr_tl"></span></div><span class="cap-text">Overzichtsfoto</span><span class="cap-arrow lg">↘</span><input type="file" accept="image/*" capture="environment" data-pos="ovz_kr_tl"></label>
|
||||||
|
<div class="flex-spacer"></div>
|
||||||
|
<span class="eng-nr-label">Laagste wisselnummer</span>
|
||||||
|
<div class="flex-spacer"></div>
|
||||||
|
<label class="capture-label" data-pos="ovz_kr_tr"><div class="cap-icon"><svg width="22" height="22" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><path d="M23 19a2 2 0 0 1-2 2H3a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h4l2-3h6l2 3h4a2 2 0 0 1 2 2z"/><circle cx="12" cy="13" r="4"/></svg><span class="cap-badge" id="cbadge_ovz_kr_tr"></span></div><span class="cap-text">Overzichtsfoto</span><span class="cap-arrow lg">↙</span><input type="file" accept="image/*" capture="environment" data-pos="ovz_kr_tr"></label>
|
||||||
|
</div>
|
||||||
|
<div class="side-labels left"><label class="capture-label" data-pos="foto_kr_s4_l"><div class="cap-icon"><svg width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><path d="M23 19a2 2 0 0 1-2 2H3a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h4l2-3h6l2 3h4a2 2 0 0 1 2 2z"/><circle cx="12" cy="13" r="4"/></svg><span class="cap-badge" id="cbadge_foto_kr_s4_l"></span></div><span class="cap-text">Foto</span><span class="cap-arrow"></span><input type="file" accept="image/*" capture="environment" data-pos="foto_kr_s4_l"></label></div>
|
||||||
|
<div class="section-strip puntstuk"><div class="section-name">Puntstuk</div><div class="section-sub">gedeelte</div><div class="section-sub sm">Sectie 4</div></div>
|
||||||
|
<div class="side-labels right"><label class="capture-label" data-pos="foto_kr_s4_r"><div class="cap-icon"><svg width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><path d="M23 19a2 2 0 0 1-2 2H3a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h4l2-3h6l2 3h4a2 2 0 0 1 2 2z"/><circle cx="12" cy="13" r="4"/></svg><span class="cap-badge" id="cbadge_foto_kr_s4_r"></span></div><span class="cap-text">Foto</span><span class="cap-arrow"></span><input type="file" accept="image/*" capture="environment" data-pos="foto_kr_s4_r"></label></div>
|
||||||
|
<div class="side-labels left"><label class="capture-label" data-pos="foto_kr_s3_l"><div class="cap-icon"><svg width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><path d="M23 19a2 2 0 0 1-2 2H3a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h4l2-3h6l2 3h4a2 2 0 0 1 2 2z"/><circle cx="12" cy="13" r="4"/></svg><span class="cap-badge" id="cbadge_foto_kr_s3_l"></span></div><span class="cap-text">Foto</span><span class="cap-arrow"></span><input type="file" accept="image/*" capture="environment" data-pos="foto_kr_s3_l"></label></div>
|
||||||
|
<div class="section-strip kruisstuk"><div class="section-name">Kruisstuk</div><div class="section-sub">gedeelte</div><div class="section-sub sm">Sectie 3</div></div>
|
||||||
|
<div class="side-labels right"><label class="capture-label" data-pos="foto_kr_s3_r"><div class="cap-icon"><svg width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><path d="M23 19a2 2 0 0 1-2 2H3a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h4l2-3h6l2 3h4a2 2 0 0 1 2 2z"/><circle cx="12" cy="13" r="4"/></svg><span class="cap-badge" id="cbadge_foto_kr_s3_r"></span></div><span class="cap-text">Foto</span><span class="cap-arrow"></span><input type="file" accept="image/*" capture="environment" data-pos="foto_kr_s3_r"></label></div>
|
||||||
|
<div class="side-labels left"><label class="capture-label" data-pos="foto_kr_s2_l"><div class="cap-icon"><svg width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><path d="M23 19a2 2 0 0 1-2 2H3a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h4l2-3h6l2 3h4a2 2 0 0 1 2 2z"/><circle cx="12" cy="13" r="4"/></svg><span class="cap-badge" id="cbadge_foto_kr_s2_l"></span></div><span class="cap-text">Foto</span><span class="cap-arrow"></span><input type="file" accept="image/*" capture="environment" data-pos="foto_kr_s2_l"></label></div>
|
||||||
|
<div class="section-strip midden"><div class="section-name">Midden-</div><div class="section-name">gedeelte</div><div class="section-sub sm">Sectie 2</div></div>
|
||||||
|
<div class="side-labels right"><label class="capture-label" data-pos="foto_kr_s2_r"><div class="cap-icon"><svg width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><path d="M23 19a2 2 0 0 1-2 2H3a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h4l2-3h6l2 3h4a2 2 0 0 1 2 2z"/><circle cx="12" cy="13" r="4"/></svg><span class="cap-badge" id="cbadge_foto_kr_s2_r"></span></div><span class="cap-text">Foto</span><span class="cap-arrow"></span><input type="file" accept="image/*" capture="environment" data-pos="foto_kr_s2_r"></label></div>
|
||||||
|
<div class="side-labels left"><label class="capture-label" data-pos="foto_kr_s1_l"><div class="cap-icon"><svg width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><path d="M23 19a2 2 0 0 1-2 2H3a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h4l2-3h6l2 3h4a2 2 0 0 1 2 2z"/><circle cx="12" cy="13" r="4"/></svg><span class="cap-badge" id="cbadge_foto_kr_s1_l"></span></div><span class="cap-text">Foto</span><span class="cap-arrow"></span><input type="file" accept="image/*" capture="environment" data-pos="foto_kr_s1_l"></label></div>
|
||||||
|
<div class="section-strip puntstuk"><div class="section-name">Puntstuk</div><div class="section-sub">gedeelte</div><div class="section-sub sm">Sectie 1</div></div>
|
||||||
|
<div class="side-labels right"><label class="capture-label" data-pos="foto_kr_s1_r"><div class="cap-icon"><svg width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><path d="M23 19a2 2 0 0 1-2 2H3a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h4l2-3h6l2 3h4a2 2 0 0 1 2 2z"/><circle cx="12" cy="13" r="4"/></svg><span class="cap-badge" id="cbadge_foto_kr_s1_r"></span></div><span class="cap-text">Foto</span><span class="cap-arrow"></span><input type="file" accept="image/*" capture="environment" data-pos="foto_kr_s1_r"></label></div>
|
||||||
|
<div class="ovz-row">
|
||||||
|
<label class="capture-label" data-pos="ovz_kr_bl"><div class="cap-icon"><svg width="22" height="22" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><path d="M23 19a2 2 0 0 1-2 2H3a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h4l2-3h6l2 3h4a2 2 0 0 1 2 2z"/><circle cx="12" cy="13" r="4"/></svg><span class="cap-badge" id="cbadge_ovz_kr_bl"></span></div><span class="cap-text">Overzichtsfoto</span><span class="cap-arrow lg">↗</span><input type="file" accept="image/*" capture="environment" data-pos="ovz_kr_bl"></label>
|
||||||
|
<div class="flex-spacer"></div>
|
||||||
|
<span class="eng-nr-label">Laagste wisselnummer + kruisnummerbord</span>
|
||||||
|
<div class="flex-spacer"></div>
|
||||||
|
<label class="capture-label" data-pos="ovz_kr_br"><div class="cap-icon"><svg width="22" height="22" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><path d="M23 19a2 2 0 0 1-2 2H3a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h4l2-3h6l2 3h4a2 2 0 0 1 2 2z"/><circle cx="12" cy="13" r="4"/></svg><span class="cap-badge" id="cbadge_ovz_kr_br"></span></div><span class="cap-text">Overzichtsfoto</span><span class="cap-arrow lg">↖</span><input type="file" accept="image/*" capture="environment" data-pos="ovz_kr_br"></label>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
<div class="overweg-overview">
|
<div class="overweg-overview">
|
||||||
<div class="ov-photo-grid">
|
<div class="ow-special-row">
|
||||||
<label class="capture-label" data-pos="ovz_ow_1">
|
<label class="capture-label" data-pos="foto_ow_sticker"><div class="cap-icon"><svg width="22" height="22" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><path d="M23 19a2 2 0 0 1-2 2H3a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h4l2-3h6l2 3h4a2 2 0 0 1 2 2z"/><circle cx="12" cy="13" r="4"/></svg><span class="cap-badge" id="cbadge_foto_ow_sticker"></span></div><span class="cap-text">Foto 1: Sticker<br>overwegpaal</span><input type="file" accept="image/*" capture="environment" data-pos="foto_ow_sticker"></label>
|
||||||
<div class="cap-icon"><svg width="22" height="22" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><path d="M23 19a2 2 0 0 1-2 2H3a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h4l2-3h6l2 3h4a2 2 0 0 1 2 2z"/><circle cx="12" cy="13" r="4"/></svg><span class="cap-badge" id="cbadge_ovz_ow_1"></span></div>
|
<label class="capture-label" data-pos="foto_ow_spoorbord"><div class="cap-icon"><svg width="22" height="22" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><path d="M23 19a2 2 0 0 1-2 2H3a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h4l2-3h6l2 3h4a2 2 0 0 1 2 2z"/><circle cx="12" cy="13" r="4"/></svg><span class="cap-badge" id="cbadge_foto_ow_spoorbord"></span></div><span class="cap-text">Foto 2: Spoor-<br>naambordje</span><input type="file" accept="image/*" capture="environment" data-pos="foto_ow_spoorbord"></label>
|
||||||
<span class="cap-text">Overzichtsfoto 1</span>
|
</div>
|
||||||
<input type="file" accept="image/*" capture="environment" data-pos="ovz_ow_1">
|
<div class="ow-diagram">
|
||||||
</label>
|
<div class="ow-side">
|
||||||
<label class="capture-label" data-pos="ovz_ow_2">
|
<span class="ow-km-label">Lage kilometrering</span>
|
||||||
<div class="cap-icon"><svg width="22" height="22" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><path d="M23 19a2 2 0 0 1-2 2H3a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h4l2-3h6l2 3h4a2 2 0 0 1 2 2z"/><circle cx="12" cy="13" r="4"/></svg><span class="cap-badge" id="cbadge_ovz_ow_2"></span></div>
|
<label class="capture-label" data-pos="foto_ow_lk_1"><div class="cap-icon"><svg width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><path d="M23 19a2 2 0 0 1-2 2H3a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h4l2-3h6l2 3h4a2 2 0 0 1 2 2z"/><circle cx="12" cy="13" r="4"/></svg><span class="cap-badge" id="cbadge_foto_ow_lk_1"></span></div><span class="cap-text">Foto</span><input type="file" accept="image/*" capture="environment" data-pos="foto_ow_lk_1"></label>
|
||||||
<span class="cap-text">Overzichtsfoto 2</span>
|
<label class="capture-label" data-pos="foto_ow_lk_2"><div class="cap-icon"><svg width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><path d="M23 19a2 2 0 0 1-2 2H3a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h4l2-3h6l2 3h4a2 2 0 0 1 2 2z"/><circle cx="12" cy="13" r="4"/></svg><span class="cap-badge" id="cbadge_foto_ow_lk_2"></span></div><span class="cap-text">Foto</span><input type="file" accept="image/*" capture="environment" data-pos="foto_ow_lk_2"></label>
|
||||||
<input type="file" accept="image/*" capture="environment" data-pos="ovz_ow_2">
|
<label class="capture-label" data-pos="foto_ow_lk_3"><div class="cap-icon"><svg width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><path d="M23 19a2 2 0 0 1-2 2H3a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h4l2-3h6l2 3h4a2 2 0 0 1 2 2z"/><circle cx="12" cy="13" r="4"/></svg><span class="cap-badge" id="cbadge_foto_ow_lk_3"></span></div><span class="cap-text">Foto</span><input type="file" accept="image/*" capture="environment" data-pos="foto_ow_lk_3"></label>
|
||||||
</label>
|
<label class="capture-label" data-pos="foto_ow_lk_4"><div class="cap-icon"><svg width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><path d="M23 19a2 2 0 0 1-2 2H3a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h4l2-3h6l2 3h4a2 2 0 0 1 2 2z"/><circle cx="12" cy="13" r="4"/></svg><span class="cap-badge" id="cbadge_foto_ow_lk_4"></span></div><span class="cap-text">Foto</span><input type="file" accept="image/*" capture="environment" data-pos="foto_ow_lk_4"></label>
|
||||||
<label class="capture-label" data-pos="foto_ligging_spoor">
|
<label class="capture-label" data-pos="foto_ow_lk_5"><div class="cap-icon"><svg width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><path d="M23 19a2 2 0 0 1-2 2H3a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h4l2-3h6l2 3h4a2 2 0 0 1 2 2z"/><circle cx="12" cy="13" r="4"/></svg><span class="cap-badge" id="cbadge_foto_ow_lk_5"></span></div><span class="cap-text">Foto</span><input type="file" accept="image/*" capture="environment" data-pos="foto_ow_lk_5"></label>
|
||||||
<div class="cap-icon"><svg width="22" height="22" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><path d="M23 19a2 2 0 0 1-2 2H3a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h4l2-3h6l2 3h4a2 2 0 0 1 2 2z"/><circle cx="12" cy="13" r="4"/></svg><span class="cap-badge" id="cbadge_foto_ligging_spoor"></span></div>
|
<label class="capture-label" data-pos="foto_ow_lk_6"><div class="cap-icon"><svg width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><path d="M23 19a2 2 0 0 1-2 2H3a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h4l2-3h6l2 3h4a2 2 0 0 1 2 2z"/><circle cx="12" cy="13" r="4"/></svg><span class="cap-badge" id="cbadge_foto_ow_lk_6"></span></div><span class="cap-text">Foto</span><input type="file" accept="image/*" capture="environment" data-pos="foto_ow_lk_6"></label>
|
||||||
<span class="cap-text">Ligging spoor</span>
|
</div>
|
||||||
<input type="file" accept="image/*" capture="environment" data-pos="foto_ligging_spoor">
|
<div class="ow-center">
|
||||||
</label>
|
<svg class="ow-crossing-svg" viewBox="0 0 200 400" preserveAspectRatio="xMidYMid meet">
|
||||||
<label class="capture-label" data-pos="foto_ligging_bevl">
|
<line x1="0" y1="180" x2="200" y2="180" stroke="#555" stroke-width="3"/>
|
||||||
<div class="cap-icon"><svg width="22" height="22" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><path d="M23 19a2 2 0 0 1-2 2H3a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h4l2-3h6l2 3h4a2 2 0 0 1 2 2z"/><circle cx="12" cy="13" r="4"/></svg><span class="cap-badge" id="cbadge_foto_ligging_bevl"></span></div>
|
<line x1="0" y1="220" x2="200" y2="220" stroke="#555" stroke-width="3"/>
|
||||||
<span class="cap-text">Ligging bevloering</span>
|
<line x1="0" y1="160" x2="200" y2="160" stroke="#8B7355" stroke-width="2" opacity="0.4"/>
|
||||||
<input type="file" accept="image/*" capture="environment" data-pos="foto_ligging_bevl">
|
<line x1="0" y1="170" x2="200" y2="170" stroke="#8B7355" stroke-width="2" opacity="0.4"/>
|
||||||
</label>
|
<line x1="0" y1="230" x2="200" y2="230" stroke="#8B7355" stroke-width="2" opacity="0.4"/>
|
||||||
<label class="capture-label" data-pos="foto_constr_kwal">
|
<line x1="0" y1="240" x2="200" y2="240" stroke="#8B7355" stroke-width="2" opacity="0.4"/>
|
||||||
<div class="cap-icon"><svg width="22" height="22" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><path d="M23 19a2 2 0 0 1-2 2H3a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h4l2-3h6l2 3h4a2 2 0 0 1 2 2z"/><circle cx="12" cy="13" r="4"/></svg><span class="cap-badge" id="cbadge_foto_constr_kwal"></span></div>
|
<line x1="90" y1="0" x2="90" y2="400" stroke="#999" stroke-width="1.5" stroke-dasharray="6,4"/>
|
||||||
<span class="cap-text">Constructieve kwaliteit</span>
|
<line x1="110" y1="0" x2="110" y2="400" stroke="#999" stroke-width="1.5" stroke-dasharray="6,4"/>
|
||||||
<input type="file" accept="image/*" capture="environment" data-pos="foto_constr_kwal">
|
<rect x="70" y="160" width="60" height="80" rx="4" fill="rgba(100,180,255,0.3)" stroke="#4a9fd9" stroke-width="1.5"/>
|
||||||
</label>
|
<text x="100" y="204" text-anchor="middle" font-size="11" fill="#555" font-weight="600">Overweg</text>
|
||||||
<label class="capture-label" data-pos="foto_wegverharding">
|
</svg>
|
||||||
<div class="cap-icon"><svg width="22" height="22" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><path d="M23 19a2 2 0 0 1-2 2H3a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h4l2-3h6l2 3h4a2 2 0 0 1 2 2z"/><circle cx="12" cy="13" r="4"/></svg><span class="cap-badge" id="cbadge_foto_wegverharding"></span></div>
|
<span class="ow-weg-label ow-weg-top">Weg</span>
|
||||||
<span class="cap-text">Wegverharding</span>
|
<span class="ow-weg-label ow-weg-bottom">Weg</span>
|
||||||
<input type="file" accept="image/*" capture="environment" data-pos="foto_wegverharding">
|
</div>
|
||||||
</label>
|
<div class="ow-side">
|
||||||
|
<span class="ow-km-label">Hoge kilometrering</span>
|
||||||
|
<label class="capture-label" data-pos="foto_ow_hk_1"><div class="cap-icon"><svg width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><path d="M23 19a2 2 0 0 1-2 2H3a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h4l2-3h6l2 3h4a2 2 0 0 1 2 2z"/><circle cx="12" cy="13" r="4"/></svg><span class="cap-badge" id="cbadge_foto_ow_hk_1"></span></div><span class="cap-text">Foto</span><input type="file" accept="image/*" capture="environment" data-pos="foto_ow_hk_1"></label>
|
||||||
|
<label class="capture-label" data-pos="foto_ow_hk_2"><div class="cap-icon"><svg width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><path d="M23 19a2 2 0 0 1-2 2H3a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h4l2-3h6l2 3h4a2 2 0 0 1 2 2z"/><circle cx="12" cy="13" r="4"/></svg><span class="cap-badge" id="cbadge_foto_ow_hk_2"></span></div><span class="cap-text">Foto</span><input type="file" accept="image/*" capture="environment" data-pos="foto_ow_hk_2"></label>
|
||||||
|
<label class="capture-label" data-pos="foto_ow_hk_3"><div class="cap-icon"><svg width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><path d="M23 19a2 2 0 0 1-2 2H3a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h4l2-3h6l2 3h4a2 2 0 0 1 2 2z"/><circle cx="12" cy="13" r="4"/></svg><span class="cap-badge" id="cbadge_foto_ow_hk_3"></span></div><span class="cap-text">Foto</span><input type="file" accept="image/*" capture="environment" data-pos="foto_ow_hk_3"></label>
|
||||||
|
<label class="capture-label" data-pos="foto_ow_hk_4"><div class="cap-icon"><svg width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><path d="M23 19a2 2 0 0 1-2 2H3a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h4l2-3h6l2 3h4a2 2 0 0 1 2 2z"/><circle cx="12" cy="13" r="4"/></svg><span class="cap-badge" id="cbadge_foto_ow_hk_4"></span></div><span class="cap-text">Foto</span><input type="file" accept="image/*" capture="environment" data-pos="foto_ow_hk_4"></label>
|
||||||
|
<label class="capture-label" data-pos="foto_ow_hk_5"><div class="cap-icon"><svg width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><path d="M23 19a2 2 0 0 1-2 2H3a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h4l2-3h6l2 3h4a2 2 0 0 1 2 2z"/><circle cx="12" cy="13" r="4"/></svg><span class="cap-badge" id="cbadge_foto_ow_hk_5"></span></div><span class="cap-text">Foto</span><input type="file" accept="image/*" capture="environment" data-pos="foto_ow_hk_5"></label>
|
||||||
|
<label class="capture-label" data-pos="foto_ow_hk_6"><div class="cap-icon"><svg width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><path d="M23 19a2 2 0 0 1-2 2H3a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h4l2-3h6l2 3h4a2 2 0 0 1 2 2z"/><circle cx="12" cy="13" r="4"/></svg><span class="cap-badge" id="cbadge_foto_ow_hk_6"></span></div><span class="cap-text">Foto</span><input type="file" accept="image/*" capture="environment" data-pos="foto_ow_hk_6"></label>
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="spoor-overview">
|
<div class="spoor-overview">
|
||||||
|
|
|
||||||
|
|
@ -4,7 +4,7 @@
|
||||||
x.push('<BEOORDELINGEN>');
|
x.push('<BEOORDELINGEN>');
|
||||||
for (var [nr, data] of Object.entries(fd.scores)) {
|
for (var [nr, data] of Object.entries(fd.scores)) {
|
||||||
var fNrs = (fd.photos[nr] || []).map(function (_, i) { return fd.orderNr + '_loc' + nr + '_foto' + (i + 1); }).join('; ');
|
var fNrs = (fd.photos[nr] || []).map(function (_, i) { return fd.orderNr + '_loc' + nr + '_foto' + (i + 1); }).join('; ');
|
||||||
if (type === D.TYPE_WISSEL) {
|
if (D.usesDwlBal(type)) {
|
||||||
x.push('<WISSEL_SCORE><NR>' + nr + '</NR><DWL_SCORE>' + I.esc(data.dwl || '') + '</DWL_SCORE><BAL_SCORE>' + I.esc(data.bal || '') + '</BAL_SCORE><FOTO_NR>' + I.esc(fNrs) + '</FOTO_NR><OPMERKING>' + I.esc(data.opm || '') + '</OPMERKING></WISSEL_SCORE>');
|
x.push('<WISSEL_SCORE><NR>' + nr + '</NR><DWL_SCORE>' + I.esc(data.dwl || '') + '</DWL_SCORE><BAL_SCORE>' + I.esc(data.bal || '') + '</BAL_SCORE><FOTO_NR>' + I.esc(fNrs) + '</FOTO_NR><OPMERKING>' + I.esc(data.opm || '') + '</OPMERKING></WISSEL_SCORE>');
|
||||||
} else if (type === D.TYPE_OVERWEG) {
|
} else if (type === D.TYPE_OVERWEG) {
|
||||||
x.push('<OVERWEG_SCORE><LOCATIE>' + I.esc(data.locatie || '') + '</LOCATIE><SCORE>' + I.esc(data.score || '') + '</SCORE></OVERWEG_SCORE>');
|
x.push('<OVERWEG_SCORE><LOCATIE>' + I.esc(data.locatie || '') + '</LOCATIE><SCORE>' + I.esc(data.score || '') + '</SCORE></OVERWEG_SCORE>');
|
||||||
|
|
@ -25,7 +25,8 @@
|
||||||
x.push('<TECH_JAAR>' + I.esc(document.getElementById('inp_techjaar').value) + '</TECH_JAAR>');
|
x.push('<TECH_JAAR>' + I.esc(document.getElementById('inp_techjaar').value) + '</TECH_JAAR>');
|
||||||
x.push('<INSP_JAAR>' + I.esc(document.getElementById('inp_inspjaar').value) + '</INSP_JAAR>');
|
x.push('<INSP_JAAR>' + I.esc(document.getElementById('inp_inspjaar').value) + '</INSP_JAAR>');
|
||||||
x.push('<OPMERKING>' + I.esc(document.getElementById('inp_opmerkingen').value) + '</OPMERKING>');
|
x.push('<OPMERKING>' + I.esc(document.getElementById('inp_opmerkingen').value) + '</OPMERKING>');
|
||||||
if (fd.type === D.TYPE_WISSEL) {
|
var hasOvPhotos = Object.values(fd.overviewPhotos).some(function (p) { return p.length > 0; });
|
||||||
|
if (hasOvPhotos) {
|
||||||
x.push('<OVERZICHTFOTOS>');
|
x.push('<OVERZICHTFOTOS>');
|
||||||
for (var [pos, photos] of Object.entries(fd.overviewPhotos)) {
|
for (var [pos, photos] of Object.entries(fd.overviewPhotos)) {
|
||||||
photos.forEach(function (_, i) {
|
photos.forEach(function (_, i) {
|
||||||
|
|
|
||||||
|
|
@ -11,25 +11,30 @@
|
||||||
A.applyFormType = function (type) {
|
A.applyFormType = function (type) {
|
||||||
A.state.formData.type = type;
|
A.state.formData.type = type;
|
||||||
var body = document.body;
|
var body = document.body;
|
||||||
body.classList.remove('type-wissel', 'type-overweg', 'type-spoor');
|
body.classList.remove('type-wissel', 'type-overweg', 'type-spoor', 'type-engelsman', 'type-kruising');
|
||||||
body.classList.add('type-' + type);
|
body.classList.add('type-' + type);
|
||||||
|
|
||||||
var thead = document.getElementById('assessmentHead');
|
var thead = document.getElementById('assessmentHead');
|
||||||
if (type === D.TYPE_WISSEL) {
|
var titles = {};
|
||||||
thead.innerHTML = '<tr><th class="nr-col">Nr</th><th class="loc-col">Locatie in wissel</th><th class="score-col">DWL Score</th><th class="score-col">BAL Score</th><th class="foto-col">Foto\'s</th><th class="opm-col">Opmerkingen</th></tr>';
|
titles[D.TYPE_WISSEL] = 'Duimstokformulier Gewoon of Symmetrisch wissel';
|
||||||
document.getElementById('formTitle').textContent = 'Duimstokformulier Gewoon of Symmetrisch wissel';
|
titles[D.TYPE_ENGELSMAN] = 'Duimstokformulier Half of Heel Engelsman';
|
||||||
|
titles[D.TYPE_KRUISING] = 'Duimstokformulier Kruising';
|
||||||
|
titles[D.TYPE_OVERWEG] = 'Duimstokformulier Overwegbevloering';
|
||||||
|
titles[D.TYPE_SPOOR] = 'Duimstokformulier Spoor';
|
||||||
|
|
||||||
|
if (D.usesDwlBal(type)) {
|
||||||
|
thead.innerHTML = '<tr><th class="nr-col">Nr</th><th class="loc-col">Locatie</th><th class="score-col">DWL Score</th><th class="score-col">BAL Score</th><th class="foto-col">Foto\'s</th><th class="opm-col">Opmerkingen</th></tr>';
|
||||||
} else if (type === D.TYPE_OVERWEG) {
|
} else if (type === D.TYPE_OVERWEG) {
|
||||||
thead.innerHTML = '<tr><th class="loc-col">Locatie</th><th class="score-col">Score</th><th class="foto-col">Foto\'s</th><th class="opm-col">Opmerkingen</th></tr>';
|
thead.innerHTML = '<tr><th class="loc-col">Locatie</th><th class="score-col">Score</th><th class="foto-col">Foto\'s</th><th class="opm-col">Opmerkingen</th></tr>';
|
||||||
document.getElementById('formTitle').textContent = 'Duimstokformulier Overwegbevloering';
|
|
||||||
} else if (type === D.TYPE_SPOOR) {
|
} else if (type === D.TYPE_SPOOR) {
|
||||||
thead.innerHTML = '<tr><th class="nr-col">Nr</th><th>KM van</th><th>KM tot</th><th>Lengte</th><th class="score-col">Score</th><th class="foto-col">Foto\'s</th><th class="opm-col">Opmerkingen</th></tr>';
|
thead.innerHTML = '<tr><th class="nr-col">Nr</th><th>KM van</th><th>KM tot</th><th>Lengte</th><th class="score-col">Score</th><th class="foto-col">Foto\'s</th><th class="opm-col">Opmerkingen</th></tr>';
|
||||||
document.getElementById('formTitle').textContent = 'Duimstokformulier Spoor';
|
|
||||||
}
|
}
|
||||||
|
document.getElementById('formTitle').textContent = titles[type] || 'Duimstokformulier';
|
||||||
};
|
};
|
||||||
|
|
||||||
A.resetForm = function () {
|
A.resetForm = function () {
|
||||||
A.state.formData = A.emptyFormData();
|
A.state.formData = A.emptyFormData();
|
||||||
document.body.classList.remove('type-wissel', 'type-overweg', 'type-spoor');
|
document.body.classList.remove('type-wissel', 'type-overweg', 'type-spoor', 'type-engelsman', 'type-kruising');
|
||||||
document.querySelectorAll('.header-grid .value').forEach(el => el.textContent = '');
|
document.querySelectorAll('.header-grid .value').forEach(el => el.textContent = '');
|
||||||
document.querySelectorAll('#hdr_taakomschrijving, #hdr_aanleiding').forEach(el => el.textContent = '');
|
document.querySelectorAll('#hdr_taakomschrijving, #hdr_aanleiding').forEach(el => el.textContent = '');
|
||||||
document.getElementById('inp_inspecteur').value = '';
|
document.getElementById('inp_inspecteur').value = '';
|
||||||
|
|
@ -83,16 +88,17 @@
|
||||||
btn.addEventListener('click', () => A.openPhotoModal(+btn.dataset.nr, btn.dataset.loc)));
|
btn.addEventListener('click', () => A.openPhotoModal(+btn.dataset.nr, btn.dataset.loc)));
|
||||||
}
|
}
|
||||||
|
|
||||||
A.buildWisselAssessment = function (scoreElements) {
|
A.buildWisselAssessment = function (scoreElements, type) {
|
||||||
var tbody = document.getElementById('assessmentBody');
|
var tbody = document.getElementById('assessmentBody');
|
||||||
tbody.innerHTML = '';
|
tbody.innerHTML = '';
|
||||||
var currentSection = '';
|
var currentSection = '';
|
||||||
|
var assessType = type || A.state.formData.type;
|
||||||
scoreElements.forEach(el => {
|
scoreElements.forEach(el => {
|
||||||
var nr = parseInt(el.querySelector('NR').textContent.trim());
|
var nr = parseInt(el.querySelector('NR').textContent.trim());
|
||||||
var locatie = el.querySelector('LOCATIE').textContent.trim();
|
var locatie = el.querySelector('LOCATIE').textContent.trim();
|
||||||
var dwlScore = el.querySelector('DWL_SCORE').textContent.trim();
|
var dwlScore = el.querySelector('DWL_SCORE').textContent.trim();
|
||||||
var balScore = el.querySelector('BAL_SCORE').textContent.trim();
|
var balScore = el.querySelector('BAL_SCORE').textContent.trim();
|
||||||
var section = D.getSectionForNr(nr);
|
var section = D.getSectionForNr(nr, assessType);
|
||||||
if (section && section !== currentSection) {
|
if (section && section !== currentSection) {
|
||||||
currentSection = section;
|
currentSection = section;
|
||||||
var sr = document.createElement('tr');
|
var sr = document.createElement('tr');
|
||||||
|
|
@ -174,7 +180,7 @@
|
||||||
};
|
};
|
||||||
|
|
||||||
A.buildAssessmentForType = function (type, scoreElements) {
|
A.buildAssessmentForType = function (type, scoreElements) {
|
||||||
if (type === D.TYPE_WISSEL) A.buildWisselAssessment(scoreElements);
|
if (D.usesDwlBal(type)) A.buildWisselAssessment(scoreElements, type);
|
||||||
else if (type === D.TYPE_OVERWEG) A.buildOverwegAssessment(scoreElements);
|
else if (type === D.TYPE_OVERWEG) A.buildOverwegAssessment(scoreElements);
|
||||||
else if (type === D.TYPE_SPOOR) A.buildSpoorAssessment(scoreElements);
|
else if (type === D.TYPE_SPOOR) A.buildSpoorAssessment(scoreElements);
|
||||||
};
|
};
|
||||||
|
|
@ -208,7 +214,7 @@
|
||||||
A.updateTotaalscore = function () {
|
A.updateTotaalscore = function () {
|
||||||
var type = A.state.formData.type;
|
var type = A.state.formData.type;
|
||||||
var worst;
|
var worst;
|
||||||
if (type === D.TYPE_WISSEL) {
|
if (D.usesDwlBal(type)) {
|
||||||
worst = D.computeWorstScore(A.state.formData.scores);
|
worst = D.computeWorstScore(A.state.formData.scores);
|
||||||
} else {
|
} else {
|
||||||
var order = ['', ...D.SCORE_VALUES];
|
var order = ['', ...D.SCORE_VALUES];
|
||||||
|
|
|
||||||
|
|
@ -11,6 +11,9 @@
|
||||||
|
|
||||||
var eqart = getText('EQART');
|
var eqart = getText('EQART');
|
||||||
var type = D.typeFromEqart(eqart);
|
var type = D.typeFromEqart(eqart);
|
||||||
|
if (type === D.TYPE_WISSEL) {
|
||||||
|
type = D.typeFromWisselSoort(getText('SOORT'));
|
||||||
|
}
|
||||||
A.applyFormType(type);
|
A.applyFormType(type);
|
||||||
|
|
||||||
var orderNr = getText('AUFNR_VORNR');
|
var orderNr = getText('AUFNR_VORNR');
|
||||||
|
|
@ -31,7 +34,7 @@
|
||||||
setIfExists('hdr_taakomschrijving', getText('LTXA1'));
|
setIfExists('hdr_taakomschrijving', getText('LTXA1'));
|
||||||
setIfExists('hdr_aanleiding', getText('KURZTEXT'));
|
setIfExists('hdr_aanleiding', getText('KURZTEXT'));
|
||||||
|
|
||||||
if (type === D.TYPE_WISSEL) {
|
if (D.usesDwlBal(type)) {
|
||||||
setIfExists('hdr_wisselnr', getText('WISSELNR') || getText('EQFNR_EQUI'));
|
setIfExists('hdr_wisselnr', getText('WISSELNR') || getText('EQFNR_EQUI'));
|
||||||
setIfExists('hdr_soort', getText('SOORT'));
|
setIfExists('hdr_soort', getText('SOORT'));
|
||||||
setIfExists('hdr_hoekverhouding', getText('HOEKVERHOUDING'));
|
setIfExists('hdr_hoekverhouding', getText('HOEKVERHOUDING'));
|
||||||
|
|
@ -67,7 +70,7 @@
|
||||||
if (getText('INSP_JAAR')) document.getElementById('inp_inspjaar').value = getText('INSP_JAAR');
|
if (getText('INSP_JAAR')) document.getElementById('inp_inspjaar').value = getText('INSP_JAAR');
|
||||||
if (getText('OPMERKING')) document.getElementById('inp_opmerkingen').value = getText('OPMERKING');
|
if (getText('OPMERKING')) document.getElementById('inp_opmerkingen').value = getText('OPMERKING');
|
||||||
|
|
||||||
if (type === D.TYPE_WISSEL) A.buildWisselAssessment(xml.querySelectorAll('WISSEL_SCORE'));
|
if (D.usesDwlBal(type)) A.buildWisselAssessment(xml.querySelectorAll('WISSEL_SCORE'), type);
|
||||||
else if (type === D.TYPE_OVERWEG) A.buildOverwegAssessment(xml.querySelectorAll('OVERWEG_SCORE'));
|
else if (type === D.TYPE_OVERWEG) A.buildOverwegAssessment(xml.querySelectorAll('OVERWEG_SCORE'));
|
||||||
else if (type === D.TYPE_SPOOR) A.buildSpoorAssessment(xml.querySelectorAll('SPOOR_STUK'));
|
else if (type === D.TYPE_SPOOR) A.buildSpoorAssessment(xml.querySelectorAll('SPOOR_STUK'));
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -2,17 +2,26 @@
|
||||||
D.TYPE_WISSEL = 'wissel';
|
D.TYPE_WISSEL = 'wissel';
|
||||||
D.TYPE_OVERWEG = 'overweg';
|
D.TYPE_OVERWEG = 'overweg';
|
||||||
D.TYPE_SPOOR = 'spoor';
|
D.TYPE_SPOOR = 'spoor';
|
||||||
|
D.TYPE_ENGELSMAN = 'engelsman';
|
||||||
|
D.TYPE_KRUISING = 'kruising';
|
||||||
|
|
||||||
D.EQART_TO_TYPE = {
|
D.EQART_TO_TYPE = {
|
||||||
'WISSEL': D.TYPE_WISSEL,
|
'WISSEL': D.TYPE_WISSEL,
|
||||||
'OVERWBEVL': D.TYPE_OVERWEG,
|
'OVERWBEVL': D.TYPE_OVERWEG,
|
||||||
'SPOORDWL': D.TYPE_SPOOR
|
'SPOORDWL': D.TYPE_SPOOR,
|
||||||
|
'ENGELSMAN': D.TYPE_ENGELSMAN,
|
||||||
|
'KRUISING': D.TYPE_KRUISING
|
||||||
};
|
};
|
||||||
|
|
||||||
D.OBJECTSOORT_TO_TYPE = {
|
D.OBJECTSOORT_TO_TYPE = {
|
||||||
'Wissel': D.TYPE_WISSEL,
|
'Wissel': D.TYPE_WISSEL,
|
||||||
'Overwegbevloering': D.TYPE_OVERWEG,
|
'Overwegbevloering': D.TYPE_OVERWEG,
|
||||||
'Spoor': D.TYPE_SPOOR
|
'Spoor': D.TYPE_SPOOR,
|
||||||
|
'Engelsman': D.TYPE_ENGELSMAN,
|
||||||
|
'Half Engelsman': D.TYPE_ENGELSMAN,
|
||||||
|
'Heel Engelsman': D.TYPE_ENGELSMAN,
|
||||||
|
'Kruising': D.TYPE_KRUISING,
|
||||||
|
'Ingesloten kruising': D.TYPE_KRUISING
|
||||||
};
|
};
|
||||||
|
|
||||||
D.typeFromEqart = function (eqart) {
|
D.typeFromEqart = function (eqart) {
|
||||||
|
|
@ -23,10 +32,21 @@
|
||||||
return D.OBJECTSOORT_TO_TYPE[objectsoort] || D.TYPE_WISSEL;
|
return D.OBJECTSOORT_TO_TYPE[objectsoort] || D.TYPE_WISSEL;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
D.typeFromWisselSoort = function (soort) {
|
||||||
|
soort = (soort || '').toLowerCase();
|
||||||
|
if (soort.indexOf('engelsman') >= 0) return D.TYPE_ENGELSMAN;
|
||||||
|
if (soort.indexOf('kruising') >= 0) return D.TYPE_KRUISING;
|
||||||
|
return D.TYPE_WISSEL;
|
||||||
|
};
|
||||||
|
|
||||||
D.OVERWEG_LOCATIONS = [
|
D.OVERWEG_LOCATIONS = [
|
||||||
'Ligging spoor',
|
'Ligging spoor',
|
||||||
'Ligging bevloering',
|
'Ligging bevloering',
|
||||||
'Constructieve kwaliteit',
|
'Constructieve kwaliteit',
|
||||||
'Wegverharding'
|
'Wegverharding'
|
||||||
];
|
];
|
||||||
|
|
||||||
|
D.usesDwlBal = function (type) {
|
||||||
|
return type === D.TYPE_WISSEL || type === D.TYPE_ENGELSMAN || type === D.TYPE_KRUISING;
|
||||||
|
};
|
||||||
})(window.App.Domain);
|
})(window.App.Domain);
|
||||||
|
|
|
||||||
|
|
@ -1,12 +1,34 @@
|
||||||
(function (D) {
|
(function (D) {
|
||||||
D.sectionMap = {
|
D.wisselSectionMap = {
|
||||||
'Sectie 1: Tongbeweging': [1, 2, 3, 4],
|
'Sectie 1: Tongbeweging': [1, 2, 3, 4],
|
||||||
'Sectie 2: Middengedeelte': [5, 6, 7, 8, 9, 10],
|
'Sectie 2: Middengedeelte': [5, 6, 7, 8, 9, 10],
|
||||||
'Sectie 3: Puntstuk gedeelte': [11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23]
|
'Sectie 3: Puntstuk gedeelte': [11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23]
|
||||||
};
|
};
|
||||||
|
|
||||||
D.getSectionForNr = function (nr) {
|
D.engelsmanSectionMap = {
|
||||||
for (const [section, nrs] of Object.entries(D.sectionMap)) {
|
'Sectie 1: Puntstuk gedeelte (boven)': [1, 2, 3, 4, 5],
|
||||||
|
'Sectie 2: Kruisstuk gedeelte': [6, 7, 8, 9, 10],
|
||||||
|
'Sectie 3: Middengedeelte': [11, 12, 13, 14, 15, 16],
|
||||||
|
'Sectie 4: Tongbeweging': [17, 18, 19, 20, 21, 22],
|
||||||
|
'Sectie 5: Puntstuk gedeelte (onder)': [23, 24, 25, 26, 27, 28, 29, 30]
|
||||||
|
};
|
||||||
|
|
||||||
|
D.kruisingSectionMap = {
|
||||||
|
'Sectie 1: Puntstuk gedeelte (boven)': [1, 2, 3, 4, 5, 6],
|
||||||
|
'Sectie 2: Kruisstuk gedeelte': [7, 8, 9, 10, 11, 12],
|
||||||
|
'Sectie 3: Middengedeelte': [13, 14, 15, 16, 17, 18],
|
||||||
|
'Sectie 4: Puntstuk gedeelte (onder)': [19, 20, 21, 22, 23, 24]
|
||||||
|
};
|
||||||
|
|
||||||
|
D.sectionMapForType = function (type) {
|
||||||
|
if (type === 'engelsman') return D.engelsmanSectionMap;
|
||||||
|
if (type === 'kruising') return D.kruisingSectionMap;
|
||||||
|
return D.wisselSectionMap;
|
||||||
|
};
|
||||||
|
|
||||||
|
D.getSectionForNr = function (nr, type) {
|
||||||
|
var map = D.sectionMapForType(type);
|
||||||
|
for (const [section, nrs] of Object.entries(map)) {
|
||||||
if (nrs.includes(nr)) return section;
|
if (nrs.includes(nr)) return section;
|
||||||
}
|
}
|
||||||
return null;
|
return null;
|
||||||
|
|
@ -18,9 +40,26 @@
|
||||||
foto_s3_l: 'Foto Puntstuk L', foto_s3_r: 'Foto Puntstuk R',
|
foto_s3_l: 'Foto Puntstuk L', foto_s3_r: 'Foto Puntstuk R',
|
||||||
foto_s2_l: 'Foto Midden L', foto_s2_r: 'Foto Midden R',
|
foto_s2_l: 'Foto Midden L', foto_s2_r: 'Foto Midden R',
|
||||||
foto_s1_l: 'Foto Tong L', foto_s1_r: 'Foto Tong R',
|
foto_s1_l: 'Foto Tong L', foto_s1_r: 'Foto Tong R',
|
||||||
ovz_ow_1: 'Overzichtsfoto 1', ovz_ow_2: 'Overzichtsfoto 2',
|
foto_ow_sticker: 'Sticker overwegpaal', foto_ow_spoorbord: 'Spoornaambordje',
|
||||||
foto_ligging_spoor: 'Ligging spoor', foto_ligging_bevl: 'Ligging bevloering',
|
foto_ow_lk_1: 'Lage km foto 1', foto_ow_lk_2: 'Lage km foto 2',
|
||||||
foto_constr_kwal: 'Constructieve kwaliteit', foto_wegverharding: 'Wegverharding',
|
foto_ow_lk_3: 'Lage km foto 3', foto_ow_lk_4: 'Lage km foto 4',
|
||||||
ovz_sp_1: 'Overzichtsfoto begin', ovz_sp_2: 'Overzichtsfoto einde'
|
foto_ow_lk_5: 'Lage km foto 5', foto_ow_lk_6: 'Lage km foto 6',
|
||||||
|
foto_ow_hk_1: 'Hoge km foto 1', foto_ow_hk_2: 'Hoge km foto 2',
|
||||||
|
foto_ow_hk_3: 'Hoge km foto 3', foto_ow_hk_4: 'Hoge km foto 4',
|
||||||
|
foto_ow_hk_5: 'Hoge km foto 5', foto_ow_hk_6: 'Hoge km foto 6',
|
||||||
|
ovz_sp_1: 'Overzichtsfoto begin', ovz_sp_2: 'Overzichtsfoto einde',
|
||||||
|
ovz_eng_tl: 'Overzichtsfoto LB', ovz_eng_tr: 'Overzichtsfoto RB',
|
||||||
|
ovz_eng_bl: 'Overzichtsfoto LO', ovz_eng_br: 'Overzichtsfoto RO',
|
||||||
|
foto_eng_s5_l: 'Foto Puntstuk boven L', foto_eng_s5_r: 'Foto Puntstuk boven R',
|
||||||
|
foto_eng_s4_l: 'Foto Kruisstuk L', foto_eng_s4_r: 'Foto Kruisstuk R',
|
||||||
|
foto_eng_s3_l: 'Foto Midden L', foto_eng_s3_r: 'Foto Midden R',
|
||||||
|
foto_eng_s2_l: 'Foto Tong L', foto_eng_s2_r: 'Foto Tong R',
|
||||||
|
foto_eng_s1_l: 'Foto Puntstuk onder L', foto_eng_s1_r: 'Foto Puntstuk onder R',
|
||||||
|
ovz_kr_tl: 'Overzichtsfoto LB', ovz_kr_tr: 'Overzichtsfoto RB',
|
||||||
|
ovz_kr_bl: 'Overzichtsfoto LO', ovz_kr_br: 'Overzichtsfoto RO',
|
||||||
|
foto_kr_s4_l: 'Foto Puntstuk boven L', foto_kr_s4_r: 'Foto Puntstuk boven R',
|
||||||
|
foto_kr_s3_l: 'Foto Kruisstuk L', foto_kr_s3_r: 'Foto Kruisstuk R',
|
||||||
|
foto_kr_s2_l: 'Foto Midden L', foto_kr_s2_r: 'Foto Midden R',
|
||||||
|
foto_kr_s1_l: 'Foto Puntstuk onder L', foto_kr_s1_r: 'Foto Puntstuk onder R'
|
||||||
};
|
};
|
||||||
})(window.App.Domain);
|
})(window.App.Domain);
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue