Version 9.9 by Veronika Kocher on Friday, 04 Sep 2026 14:23

Hide last authors
Veronika Kocher 6.1 1 {{html clean="false"}}
2 <style>
3 .pp{max-width:1400px;margin:0 auto;color:#322f2b} .pp *{box-sizing:border-box}
4 .card{border:1px solid #e3ded6;border-radius:11px;background:#fcfbf8;box-shadow:0 1px 3px rgba(0,0,0,.035)}
5 .eye{font-size:12px;font-weight:700;letter-spacing:.075em;text-transform:uppercase}
6 .hero{height:125px;overflow:hidden;background:#f1eee9} .hero img{width:100%;height:100%;object-fit:cover;object-position:center 48%;display:block}
7 .grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(285px,1fr));gap:14px}
8 .check{position:relative;padding:12px 13px 12px 37px;border:1px solid #e3ded6;border-radius:8px;background:#fffdf9;color:#504a44;line-height:1.5}
9 .check:before{content:"✓";position:absolute;left:13px;top:10px;color:#e94b13;font-weight:800}
10 .info{padding:15px 17px;border:1px solid #c7e5ed;border-left:5px solid #21b6d7;background:#eaf6f9;border-radius:8px;color:#365e68}
11 .info strong{color:#2d5661} .warn{padding:15px 17px;border:1px solid #efd9cc;border-left:5px solid #e94b13;background:#fff6f1;border-radius:8px;color:#67564e} .warn strong{color:#744531}
12 .sec{margin:0 0 28px 0} .sec h3{font-size:22px;margin:0 0 6px;color:#35312d} .sec>p{color:#6a655e;line-height:1.55}
13 .role{padding:15px 16px;border:1px solid #e3ded6;border-top:4px solid #e94b13;border-radius:9px;background:#fcfbf8} .role h4{font-size:17px;margin:0 0 6px;color:#35312d} .role p{margin:0;color:#625d56;line-height:1.5}
14 .detail{margin:8px 0;border:1px solid #e3ded6;border-radius:8px;background:#fcfbf8;overflow:hidden} .detail summary{cursor:pointer;padding:12px 14px;font-weight:700;color:#403b36;background:#f3efe8} .detail[open] summary{border-bottom:1px solid #e3ded6} .detail .body{padding:14px 16px;color:#514c46;line-height:1.55}
Veronika Kocher 8.1 15 .chip{display:inline-block;padding:4px 8px;margin:3px 4px 3px 0;border-radius:14px;background:#f3efe8;border:1px solid #e3ded6;color:#5c5650;font-size:12px;text-decoration:none}.chip:hover,.chip:focus{background:#fff7f1;border-color:#e7c8b8;color:#6f3f2e;text-decoration:none}
Veronika Kocher 6.1 16 .tbl{width:100%;border-collapse:collapse;background:#fffdf9} .tbl th,.tbl td{border:1px solid #e3ded6;padding:10px 11px;vertical-align:top;text-align:left} .tbl th{background:#f3efe8;color:#403b36}
17 .linkgrid{display:grid;grid-template-columns:repeat(auto-fit,minmax(260px,1fr));gap:8px} .navlink{display:block;padding:10px 11px;border:1px solid #e9e4dc;border-left:3px solid #e94b13;border-radius:6px;background:#fffdf9;color:#252321;text-decoration:none;font-weight:600} .navlink:hover{background:#fff7f1;text-decoration:none}
18 </style>
Veronika Kocher 2.1 19
Veronika Kocher 9.1 20 <style>
21 .research-example-grid{
22 display:grid;
23 grid-template-columns:repeat(auto-fit,minmax(280px,1fr));
24 gap:14px;
25 margin-top:12px;
26 }
27 .research-example{
28 padding:16px 17px;
29 border:1px solid #e3ded6;
30 border-radius:9px;
31 background:#fcfbf8;
32 box-shadow:0 1px 3px rgba(0,0,0,.03);
33 }
34 .research-example h4{
35 font-size:18px;
36 margin:0 0 7px 0;
37 color:#35312d;
38 }
39 .research-example p{
40 margin:0 0 10px 0;
41 color:#625d56;
42 line-height:1.5;
43 }
44 .research-example a{
45 display:inline-block;
46 font-weight:700;
47 text-decoration:none;
48 }
49 .research-example a:hover,
50 .research-example a:focus{
51 text-decoration:underline;
52 }
53 </style>
54
55
Veronika Kocher 6.1 56 <div class="pp">
Veronika Kocher 2.1 57
Veronika Kocher 6.1 58 <section class="card" style="margin-bottom:18px;overflow:hidden;border-left:6px solid #e94b13;">
59 <div class="hero"><img src="https://xwiki.uni-ak.ac.at/bin/download/Service%20Navigator/Art%20%26%20Research%20Services%20Navigator/WebHome/enable.png" alt="Planning and organising an artistic or research project"></div>
60 <div style="padding:18px 21px 20px">
Veronika Kocher 9.8 61 <div class="eye" style="color:#8a4d36;margin-bottom:5px">PREPARE · PROJECT PLANNING &amp; ORGANISATION</div>
Veronika Kocher 6.1 62 <h2 style="font-size:27px;line-height:1.2;margin:0 0 8px;color:#2c2926">Build a project that can actually be hosted, funded, staffed and delivered</h2>
63 <p style="margin:0;color:#5e5953;line-height:1.6;max-width:1120px">Project planning at the Angewandte is not only a timeline and a budget. A workable project needs an artistic or research home, clear responsibilities, an appropriate funding and administrative route, and early coordination with the university structures triggered by your project.</p>
64 </div></section>
Veronika Kocher 2.1 65
Veronika Kocher 6.1 66 <div class="info" style="margin-bottom:20px"><strong>Do not contact every unit at once.</strong> Start with your <strong>academic/artistic home</strong> and, for funded or project-based art/research, <strong>Support Kunst und Forschung</strong>. Then involve other structures only when a project trigger makes them relevant: staff, money, contracts, IT, rooms, events, data, students, accessibility, international partners, etc.</div>
Veronika Kocher 2.1 67
Veronika Kocher 6.1 68 <div class="warn" style="margin-bottom:28px"><strong>Current structures can change.</strong> This page follows the current 2026 organisational structure and links to live university pages. For approvals, signatures, internal deadlines and binding procedures, confirm the current route with the responsible unit.</div>
Veronika Kocher 2.1 69
Veronika Kocher 6.1 70 <section class="sec">
71 <div class="eye" style="color:#8a4d36;margin-bottom:4px">STEP 1 · PROJECT GOVERNANCE</div>
72 <h3>Define the internal project structure before the detailed work plan</h3>
73 <p>Write down names, not just functions. One person can hold several roles in a small project, but the responsibility should still be explicit.</p>
74 <div class="grid">
75 <div class="role"><h4>Project / artistic-research lead</h4><p>Owns the concept, scope, key decisions, quality and external commitments.</p></div>
76 <div class="role"><h4>Institutional / academic home</h4><p>The institute, department, special university facility or organisational unit in which the project is anchored.</p></div>
77 <div class="role"><h4>Project administration</h4><p>Coordinates proposal documents, deadlines, funder communication, contracts, evidence and internal routing.</p></div>
78 <div class="role"><h4>Budget responsibility</h4><p>Maintains the working budget, funding conditions, approvals, cost tracking and change control.</p></div>
79 <div class="role"><h4>People / team responsibility</h4><p>Clarifies staffing, recruitment, workload, contracts, onboarding, external contributors and collaboration.</p></div>
80 <div class="role"><h4>Data / documentation responsibility</h4><p>Coordinates files, storage, backup, access, metadata, consent, documentation and handover.</p></div>
81 <div class="role"><h4>Infrastructure / production responsibility</h4><p>Coordinates rooms, workshops, equipment, IT, procurement, logistics, safety and technical dependencies.</p></div>
82 <div class="role"><h4>Communication / dissemination responsibility</h4><p>Plans public communication, publication, events, documentation, credits, visibility and audiences.</p></div>
83 <div class="role"><h4>Partner contact</h4><p>Coordinates external institutions, deliverables, budget interfaces and agreements.</p></div>
84 </div>
85 </section>
Veronika Kocher 2.1 86
Veronika Kocher 6.1 87 <section class="sec">
88 <div class="eye" style="color:#8a4d36;margin-bottom:4px">STEP 2 · INTERNAL ROUTE</div>
89 <h3>Use this order to navigate the Angewandte</h3>
90 <div class="grid">
91 <div class="check"><strong>1 · Anchor the project</strong><br>Clarify the institute, department, special university facility or organisational unit that hosts it.</div>
92 <div class="check"><strong>2 · Clarify funding / project route</strong><br>For art, research and externally funded projects, involve Support Kunst und Forschung early.</div>
93 <div class="check"><strong>3 · Trigger specialist services</strong><br>Finance, HR, Legal, IT, Facility, Events, Communication, International, Library, Studies, DEI, etc. only where needed.</div>
94 <div class="check"><strong>4 · Confirm institutional approvals</strong><br>Clarify internal deadlines, budget/HR approval, signing authority, contracts and external submission route.</div>
95 <div class="check"><strong>5 · Freeze the submission baseline</strong><br>Store the final call, approved budget, work plan, roles and submitted documents.</div>
96 <div class="check"><strong>6 · Plan change control</strong><br>Decide who must approve changes to scope, staff, budget, partners, timeline or public outputs.</div>
97 </div>
98 </section>
Veronika Kocher 2.1 99
Veronika Kocher 9.1 100
Veronika Kocher 6.1 101 <section class="sec">
Veronika Kocher 9.1 102 <div class="eye" style="color:#8a4d36;margin-bottom:4px">EXAMPLES · HOW RESEARCH IS SITUATED AT THE ANGEWANDTE</div>
103 <h3>Use existing projects to understand possible research profiles and institutional homes</h3>
104 <p>
105 The Angewandte presents research projects through several research-focus perspectives.
106 These pages are useful when you are trying to understand how a project like yours might be framed,
107 where comparable projects are located in the University, which funding programmes have been used,
108 and which institutes or research environments have hosted related work.
109 </p>
110
111 <div class="research-example-grid">
112
113 <div class="research-example" style="border-top:4px solid #e94b13;">
114 <div class="eye" style="font-size:11px;color:#8a4d36;margin-bottom:5px;">ARTISTIC RESEARCH</div>
115 <h4>Fokus Künstlerische Forschung</h4>
116 <p>
117 Examples of artistic and arts-based research projects at the Angewandte, including many projects
118 funded through FWF PEEK and related programmes. Use this page to see how artistic practice,
119 research questions, project leadership and institutional affiliation come together in funded projects.
120 </p>
121 <a href="https://dieangewandte.at/kunst_und_forschung/projekte_fokus_forschung/kuenstlerische_forschung"
122 target="_blank" rel="noopener">
123 View artistic research projects ↗
124 </a>
125 </div>
126
127 <div class="research-example" style="border-top:4px solid #21b6d7;">
128 <div class="eye" style="font-size:11px;color:#3f6871;margin-bottom:5px;">SCIENTIFIC RESEARCH</div>
129 <h4>Fokus Wissenschaftliche Forschung</h4>
130 <p>
131 Examples of scientific research across the University's institutes and fields, including FWF-funded
132 basic research, ESPRIT projects and other externally funded research. Use this page to compare project types,
133 hosts, funding programmes and disciplinary or interdisciplinary research settings.
134 </p>
135 <a href="https://dieangewandte.at/kunst_und_forschung/projekte_fokus_forschung/wissenschaftliche_forschung"
136 target="_blank" rel="noopener">
137 View scientific research projects ↗
138 </a>
139 </div>
140
141 <div class="research-example" style="border-top:4px solid #38b76a;">
142 <div class="eye" style="font-size:11px;color:#4a6c53;margin-bottom:5px;">RELATIONAL / CROSS-CUTTING RESEARCH</div>
143 <h4>Fokus Relationale Forschung</h4>
144 <p>
145 Examples of projects organised through specific calls, thematic relationships and cross-cutting research
146 frameworks, including INTRA, digital and social transformation and research-infrastructure initiatives.
147 Use this page when your project connects disciplines, infrastructures, institutions or thematic programmes.
148 </p>
149 <a href="https://dieangewandte.at/kunst_und_forschung/projekte_fokus_forschung/fokus_relationale_forschung"
150 target="_blank" rel="noopener">
151 View relational research projects ↗
152 </a>
153 </div>
154
155 </div>
156
157 <div class="info" style="margin-top:14px;">
158 <strong>How to use these examples:</strong>
159 do not copy a project's structure simply because the topic looks similar.
160 Compare the <strong>project type, host unit, funding programme, project lead, partners, duration and outputs</strong>.
161 These are the elements that help you judge whether an existing project is a useful planning reference for your own proposal.
162 </div>
163 </section>
164
165 <section class="sec">
Veronika Kocher 6.1 166 <div class="eye" style="color:#8a4d36;margin-bottom:4px">STEP 3 · WHO SHOULD I INVOLVE?</div>
167 <h3>Project-relevant structures of the Angewandte</h3>
168 <p>Not every project needs every unit. Use the trigger descriptions below.</p>
169 <details class="detail" open>
170 <summary>A · Your institute, department, workshop or special university facility — the project home</summary>
171 <div class="body">
172 <p><strong>Involve early when:</strong> the project uses the unit's name, staff time, rooms, workshops, equipment, teaching, budget, infrastructure or institutional commitments.</p>
173 <p><strong>Current institutes:</strong></p>
Veronika Kocher 8.1 174 <div><a class="chip" href="https://www.dieangewandte.at/en/institutes/architecture/institute_of_architecture" target="_blank" rel="noopener" title="Open Institute of Architecture on dieAngewandte">Institute of Architecture</a><a class="chip" href="https://www.dieangewandte.at/en/institutes/fine_arts_and_media_art" target="_blank" rel="noopener" title="Open Institute of Fine Arts & Media Art on dieAngewandte">Institute of Fine Arts &amp; Media Art</a><a class="chip" href="https://www.dieangewandte.at/en/institutes/design" target="_blank" rel="noopener" title="Open Institute of Design on dieAngewandte">Institute of Design</a><a class="chip" href="https://www.dieangewandte.at/en/ikr_institut" target="_blank" rel="noopener" title="Open Institute of Conservation and Restoration on dieAngewandte">Institute of Conservation and Restoration</a><a class="chip" href="https://www.dieangewandte.at/en/institutes/arts_and_society/institute_of_arts_and_society" target="_blank" rel="noopener" title="Open Institute of Art and Society on dieAngewandte">Institute of Art and Society</a><a class="chip" href="https://www.dieangewandte.at/en/institutes/art_and_technology" target="_blank" rel="noopener" title="Open Institute of Art and Technology on dieAngewandte">Institute of Art and Technology</a><a class="chip" href="https://www.dieangewandte.at/en/institutes/studies_in_art_and_art_education" target="_blank" rel="noopener" title="Open Institute of Art Sciences, Art Education and Art Mediation on dieAngewandte">Institute of Art Sciences, Art Education and Art Mediation</a><a class="chip" href="https://www.dieangewandte.at/languagearts" target="_blank" rel="noopener" title="Open Institute of Language Arts on dieAngewandte">Institute of Language Arts</a></div>
Veronika Kocher 6.1 175 <p style="margin-top:12px;"><strong>Special university facilities that can become project homes, partners, infrastructures or research resources:</strong></p>
Veronika Kocher 8.1 176 <div><a class="chip" href="https://www.dieangewandte.at/en/university/organisation/special_university_facilities/angewandte_interdisciplinary_laboratory" target="_blank" rel="noopener" title="Open Angewandte Interdisciplinary Lab on dieAngewandte">Angewandte Interdisciplinary Lab</a><a class="chip" href="https://www.dieangewandte.at/en/institutes/angewandte_performance_laboratory_apl" target="_blank" rel="noopener" title="Open Angewandte Performance Lab on dieAngewandte">Angewandte Performance Lab</a><a class="chip" href="https://www.dieangewandte.at/art_science_school_transformation" target="_blank" rel="noopener" title="Open Art x Science School for Transformation on dieAngewandte">Art x Science School for Transformation</a><a class="chip" href="https://www.dieangewandte.at/doctoral_centre" target="_blank" rel="noopener" title="Open Doctoral Centre on dieAngewandte">Doctoral Centre</a><a class="chip" href="https://www.dieangewandte.at/universitaet/organisation/rektorat/vizerektorin_studium_lehre_diversitaet/diversitaet_und_gleichstellung" target="_blank" rel="noopener" title="Open Diversity, Equity, Inclusion on dieAngewandte">Diversity, Equity, Inclusion</a><a class="chip" href="https://www.dieangewandte.at/en/institutes/collection_and_archive" target="_blank" rel="noopener" title="Open Art Collection and Archive on dieAngewandte">Art Collection and Archive</a><a class="chip" href="https://www.dieangewandte.at/en/university/university_gallery" target="_blank" rel="noopener" title="Open University Gallery on dieAngewandte">University Gallery</a><a class="chip" href="https://www.dieangewandte.at/institute/peterweibel" target="_blank" rel="noopener" title="Open Weibel Institute for Digital Cultures on dieAngewandte">Weibel Institute for Digital Cultures</a></div>
Veronika Kocher 6.1 177 <p style="margin-top:12px;"><a href="https://www.dieangewandte.at/universitaet/organisation" target="_blank" rel="noopener">Current university organisation</a></p>
178 </div>
179 </details><details class="detail" open>
180 <summary>B · Support Kunst und Forschung — project and funding coordination</summary>
181 <div class="body">
182 <p><strong>Use when:</strong> developing artistic, scientific or arts-based research projects; looking for funding; preparing external proposals; coordinating third-party funded projects.</p>
183 <ul>
184 <li>concept development and feedback</li>
185 <li>funding landscape and call fit</li>
186 <li>administrative and financial project co-design</li>
187 <li>coordination of funded projects and partners</li>
188 <li>support involving FWF, FFG, EU programmes, City of Vienna and other funders</li>
189 </ul>
190 <p><a href="https://www.dieangewandte.at/universitaet/organisation/planung_service_und_verwaltung/support_kunst_und_forschung" target="_blank" rel="noopener">Support Kunst und Forschung</a> · <a href="mailto:support_kf@uni-ak.ac.at">support_kf@uni-ak.ac.at</a></p>
191 </div>
192 </details><details class="detail">
193 <summary>C · Rektorat — strategy, institutional commitment and university-level responsibility</summary>
194 <div class="body">
195 <p>Most projects do <strong>not</strong> begin by contacting the Rektorat directly. It becomes relevant when a project requires university-level decisions, commitments, strategy, resources, partnerships or signing authority. Route questions through your host unit and responsible service wherever possible.</p>
196 <ul>
197 <li><strong>Rector:</strong> overall strategy, budget/personnel allocation to organisational units, institutional representation, international university partnerships, employment/service contracts and powers of attorney.</li>
198 <li><strong>Vice-Rector for Science, Research & Digitality:</strong> research strategy, artistic/scientific research support, digital development, IT & Digitalisation, Support Art & Research, University Library and doctoral admissions.</li>
199 <li><strong>Vice-Rector for Finance & Infrastructure:</strong> financial management, third-party funds management, resources, procurement/infrastructure, estates, Facility Management and Event Management.</li>
200 <li><strong>Vice-Rector for Art, Teaching & Learning:</strong> study/examination matters, teaching, teaching quality, curricular/learning issues and teaching resources.</li>
201 <li><strong>Vice-Rector for Cooperative Disciplinarity, Engagement & Innovation:</strong> international relations and partnerships, Diversity/Equity/Inclusion, International Office, AIL and Art x Science School for Transformation.</li>
202 </ul>
203 <p><a href="https://www.dieangewandte.at/universitaet/organisation/rektorat" target="_blank" rel="noopener">Current Rektorat and portfolios</a></p>
204 </div>
205 </details><details class="detail">
206 <summary>D · Finances — budget, accounting, controlling and resource planning</summary>
207 <div class="body">
208 <p><strong>Use when:</strong> the project has a budget, third-party funds, invoices, income, cost planning, co-funding, financial reporting or institutional resources.</p>
209 <ul>
210 <li><strong>Controlling:</strong> budget planning, monitoring, steering data, financial plans and reporting interfaces.</li>
211 <li><strong>Financial Accounting:</strong> university payments, creditors/debtors, service contracts/guest lectures, bookkeeping, assets, VAT/tax information and financial statements.</li>
212 <li><strong>Resource Planning:</strong> clarify current responsibilities for institutional resource planning and the project's budget route.</li>
213 </ul>
214 <p><a href="https://dieangewandte.at/universitaet/organisation/planung_service_und_verwaltung/finanzen" target="_blank" rel="noopener">Finances</a> ·
215 <a href="https://dieangewandte.at/universitaet/organisation/planung_service_und_verwaltung/finanzen/controlling" target="_blank" rel="noopener">Controlling</a> ·
216 <a href="https://dieangewandte.at/universitaet/organisation/planung_service_und_verwaltung/finanzen/finanzbuchhaltung" target="_blank" rel="noopener">Financial Accounting</a></p>
217 </div>
218 </details><details class="detail">
219 <summary>E · Personnel — staffing, contracts, workload, onboarding and team development</summary>
220 <div class="body">
221 <p><strong>Use when:</strong> the project creates or changes employment, recruits project staff, uses existing staff time, requires onboarding or needs help with team collaboration.</p>
222 <ul>
223 <li><strong>Personnel Management:</strong> employment and personnel administration; clarify the current route for project staff and contract types.</li>
224 <li><strong>Personnel Development:</strong> onboarding, team coaching, organisational development, conflict support/mediation, leadership coaching and staff development.</li>
225 <li>Clarify personnel lead times before promising start dates in a proposal.</li>
226 <li>Do not assume an external budget line automatically creates an employment route.</li>
227 </ul>
228 <p><a href="https://www.dieangewandte.at/universitaet/organisation/planung_service_und_verwaltung/personal_finanzen_recht" target="_blank" rel="noopener">Personnel</a> ·
229 <a href="https://www.dieangewandte.at/universitaet/organisation/planung_service_und_verwaltung/personalentwicklung" target="_blank" rel="noopener">Personnel Development</a></p>
230 </div>
231 </details><details class="detail">
232 <summary>F · Legal & Data Protection — contracts, rights, IP, personal data and legal risk</summary>
233 <div class="body">
234 <p><strong>Use when:</strong> agreements, external partners, licences, copyright/IP, personal data, confidentiality, complex terms or institutional legal commitments are involved.</p>
235 <ul>
236 <li><strong>Legal Department:</strong> supports university members with legal questions.</li>
237 <li><strong>Data Protection Officer:</strong> involve where personal-data processing, data-sharing, processors/platforms or other privacy questions require specialist review.</li>
238 <li>Plan legal review before the proposal deadline if funder/partner contracts are part of submission.</li>
239 </ul>
240 <p><a href="https://www.dieangewandte.at/universitaet/organisation/planung_service_und_verwaltung/recht" target="_blank" rel="noopener">Legal</a> · <a href="mailto:rechtsabteilung@uni-ak.ac.at">rechtsabteilung@uni-ak.ac.at</a></p>
241 </div>
242 </details><details class="detail">
243 <summary>G · IT & Digitalisation — systems, digital services, infrastructure and IT projects</summary>
244 <div class="body">
245 <p><strong>Use when:</strong> the project needs accounts, university IT, servers/storage, networking, specialist digital systems, integration, new software/services or a digital institutional process.</p>
246 <ul>
247 <li><strong>Base</strong></li>
248 <li><strong>ITD Project Coordination</strong></li>
249 <li><strong>Central IT Services (ZID):</strong> university-wide information and communication infrastructure, service/support, networks, servers and art-university-specific IT systems.</li>
250 </ul>
251 <p><a href="https://www.dieangewandte.at/universitaet/organisation/planung_service_und_verwaltung/it_digitalisierung" target="_blank" rel="noopener">IT & Digitalisation</a> · <a href="mailto:helpdesk@uni-ak.ac.at">helpdesk@uni-ak.ac.at</a></p>
252 </div>
253 </details><details class="detail">
254 <summary>H · Facility Management — rooms, procurement, material, building services, logistics and safety</summary>
255 <div class="body">
256 <p><strong>Use when:</strong> the project needs space, temporary rooms, equipment/material procurement, technical building requirements, logistics, deliveries, storage, access or safety coordination.</p>
257 <ul>
258 <li><strong>Procurement & Material Management:</strong> procurement advice, quotations, purchasing, orders/invoices, assets/inventory, materials.</li>
259 <li><strong>Building Technology & Safety</strong></li>
260 <li><strong>Estates & Room Coordination:</strong> room and estate coordination, centrally bookable rooms.</li>
261 <li><strong>Post & Logistics</strong></li>
262 <li><strong>Service & Operations</strong></li>
263 </ul>
264 <p><a href="https://www.dieangewandte.at/universitaet/organisation/planung_service_und_verwaltung/facility_management" target="_blank" rel="noopener">Facility Management</a> ·
265 <a href="https://www.dieangewandte.at/universitaet/organisation/planung_service_und_verwaltung/facility_management/logistik__beschaffung" target="_blank" rel="noopener">Procurement & Material Management</a> ·
266 <a href="https://www.dieangewandte.at/liegenschaften_und_raumkoordination" target="_blank" rel="noopener">Estates & Room Coordination</a></p>
267 </div>
268 </details><details class="detail">
269 <summary>I · Event Management — public events, event rooms and production coordination</summary>
270 <div class="body">
271 <p><strong>Use when:</strong> the project contains a symposium, screening, performance, public presentation, conference, major exhibition event or requires centrally managed event rooms/services.</p>
272 <ul>
273 <li>supports employees with planning and implementation of university events</li>
274 <li>supports idea and room finding, preparation, event delivery and follow-up</li>
275 <li>coordinate early with Facility Management for room/building/technical dependencies</li>
276 <li>coordinate public communication with Press & Communication</li>
277 </ul>
278 <p><a href="https://dieangewandte.at/veranstaltungsmanagement" target="_blank" rel="noopener">Event Management</a> · <a href="mailto:veranstaltungen@uni-ak.ac.at">veranstaltungen@uni-ak.ac.at</a></p>
279 </div>
280 </details><details class="detail">
281 <summary>J · Press & Communication — public visibility, media, publications, web and cooperation</summary>
282 <div class="body">
283 <p><strong>Use when:</strong> the project will represent the University publicly, needs press/media work, web/social communication, marketing, institutional publications, graphical/CI support or public cooperation communication.</p>
284 <ul>
285 <li>Press</li><li>Publications / Edition Angewandte</li><li>Cooperations</li><li>Marketing</li>
286 <li>Website / social media / newsletter</li><li>institutional visual identity / CI considerations</li>
287 </ul>
288 <p><a href="https://www.dieangewandte.at/presse_kommunikation" target="_blank" rel="noopener">Press & Communication</a></p>
289 </div>
290 </details><details class="detail">
291 <summary>K · International Office — mobility and international project context</summary>
292 <div class="body">
293 <p><strong>Use when:</strong> staff/student mobility, exchange routes, international visitors or mobility funding are part of the project.</p>
294 <p>For broader university partnerships and institutional international cooperation, the responsible Vice-Rectorate / Rectorate route may also become relevant.</p>
295 <p><a href="https://www.dieangewandte.at/studium/auslandsaufenthalte/personalmobilitaet" target="_blank" rel="noopener">International Office · staff mobility</a> · <a href="mailto:international.office@uni-ak.ac.at">international.office@uni-ak.ac.at</a></p>
296 </div>
297 </details><details class="detail">
298 <summary>L · University Library & research/discovery structures</summary>
299 <div class="body">
300 <p><strong>Use when:</strong> the project needs literature, licensed databases, research discovery, publication/repository routes or library expertise.</p>
301 <p>Also think beyond the Library where your project uses institutional collections, archives or specialist research resources: Art Collection and Archive, Weibel Institute and other special university facilities can be relevant depending on the topic.</p>
302 <p><a href="https://www.dieangewandte.at/universitaetsbibliothek" target="_blank" rel="noopener">University Library</a></p>
303 </div>
304 </details><details class="detail">
305 <summary>M · Studies, Teaching, Curricula & Doctoral Centre</summary>
306 <div class="body">
307 <p><strong>Use when:</strong> the project directly affects teaching, courses, curricula, assessment, students, graduation work or doctoral study.</p>
308 <ul>
309 <li><strong>Study Affairs:</strong> student administration and study-law processes from admission to graduation.</li>
310 <li><strong>Vice-Rector for Art, Teaching & Learning:</strong> teaching, studies/exams, teaching quality and teaching resources.</li>
311 <li><strong>Doctoral Centre:</strong> central contact for doctoral candidates; supports networking and project initiation across doctoral programmes.</li>
312 <li><strong>Quality Culture Teaching & Curriculum Workshop:</strong> involve for relevant teaching/curricular/quality-development questions according to current remit.</li>
313 </ul>
314 <p><a href="https://www.dieangewandte.at/universitaet/organisation/planung_service_und_verwaltung/studienangelegenheiten" target="_blank" rel="noopener">Study Affairs</a> ·
315 <a href="https://prod.dieangewandte.at/doktoratszentrum" target="_blank" rel="noopener">Doctoral Centre</a></p>
316 </div>
317 </details><details class="detail">
318 <summary>N · Diversity, Equity, Inclusion & Accessibility</summary>
319 <div class="body">
320 <p><strong>Use when:</strong> accessibility, inclusion, participation design, equal opportunity, diversity, disability, structural barriers or inclusive communication need to be planned into the project.</p>
321 <ul>
322 <li>DEI connects diversity, equity/inclusion and accessibility expertise.</li>
323 <li>Team Barrierefrei provides practical accessibility information and contacts for staff/students with disabilities.</li>
324 <li>For events, plan accessibility early enough to budget interpretation, technical support, accessible rooms or other measures.</li>
325 </ul>
326 <p><a href="https://www.dieangewandte.at/universitaet/organisation/rektorat/vizerektorin_studium_lehre_diversitaet/diversitaet_und_gleichstellung" target="_blank" rel="noopener">Diversity, Equity, Inclusion</a> ·
327 <a href="https://www.dieangewandte.at/barrierefrei" target="_blank" rel="noopener">Accessibility at the Angewandte</a></p>
328 </div>
329 </details><details class="detail">
330 <summary>O · University Development & Quality Culture</summary>
331 <div class="body">
332 <p><strong>Use when:</strong> the project is institution-wide, strategically relevant, develops organisational/quality processes, creates new cross-unit structures or needs connection to university development and quality culture.</p>
333 <p>For ordinary project delivery this is not a default project-administration unit. Involve it where the project's purpose genuinely touches institutional development or quality processes.</p>
334 <p><a href="mailto:uq@uni-ak.ac.at">uq@uni-ak.ac.at</a></p>
335 </div>
336 </details><details class="detail">
337 <summary>P · Equality / staff / student representation — independent advice and representation</summary>
338 <div class="body">
339 <p>These structures are not project-management offices, but they can be essential when a project raises employment, discrimination, participation or conflict questions.</p>
340 <ul>
341 <li><strong>Arbeitskreis für Gleichbehandlungsfragen (AKG):</strong> confidential contact on equality, discrimination and harassment.</li>
342 <li><strong>Works Councils:</strong> representation of artistic/scientific and general university staff in employment matters.</li>
343 <li><strong>HUFAK / Students' Union:</strong> student representation; relevant where student participation and student interests are central.</li>
344 <li><strong>Arbitration Commission:</strong> part of the University's governance/interest-representation structure; not a routine project-planning service.</li>
345 </ul>
346 <p><a href="https://dieangewandte.at/gleichbehandlung" target="_blank" rel="noopener">AKG</a> ·
347 <a href="https://www.dieangewandte.at/universitaet/organisation/interessensvertretung/betriebsrat_fuer_das_kuenstlerische_und_wissenschaftliche_personal" target="_blank" rel="noopener">Works Council artistic/scientific staff</a> ·
348 <a href="https://www.dieangewandte.at/hufak" target="_blank" rel="noopener">HUFAK</a></p>
349 </div>
350 </details>
351 </section>
Veronika Kocher 2.1 352
Veronika Kocher 6.1 353 <section class="sec">
354 <div class="eye" style="color:#8a4d36;margin-bottom:4px">STEP 4 · TRIGGER MATRIX</div>
355 <h3>If the project does this, involve these structures early</h3>
356 <table class="tbl">
357 <thead><tr><th>Project trigger</th><th>Start with</th><th>Then check</th></tr></thead>
358 <tbody><tr><td>External research / arts-based research funding</td><td>Host unit + Support Kunst und Forschung</td><td>Finances, Personnel, Legal, Rectorate route as required</td></tr><tr><td>New staff / project employment / changed workload</td><td>Host unit + Personnel</td><td>Finances, Support Kunst und Forschung, Works Council if representation advice is needed</td></tr><tr><td>Large purchase / equipment / external service</td><td>Procurement &amp; Material Management</td><td>Finances, host unit, IT or Facility depending on item</td></tr><tr><td>New software, server, database, digital platform or integration</td><td>IT &amp; Digitalisation / ZID</td><td>Data Protection, Legal, procurement, research-data planning</td></tr><tr><td>Rooms, workshop, exhibition build, building intervention</td><td>Host unit + Facility / Room Coordination</td><td>Safety, procurement, Event Management, accessibility</td></tr><tr><td>Public event / symposium / screening / performance</td><td>Event Management</td><td>Facility, Press &amp; Communication, rights, accessibility, safety</td></tr><tr><td>External contract / cooperation agreement / IP / confidentiality</td><td>Legal</td><td>Support Kunst und Forschung, Rectorate route, Finance, Data Protection</td></tr><tr><td>Personal data / participant data / interviews / recordings</td><td>Data Protection + project lead</td><td>Ethics/consent, IT/storage, Legal, funder requirements</td></tr><tr><td>Publication, media campaign, university web/social media</td><td>Press &amp; Communication</td><td>Rights/licensing, Support Kunst und Forschung, repository/library</td></tr><tr><td>International mobility</td><td>International Office</td><td>Host unit, Support Kunst und Forschung, Personnel/Finance depending on funding</td></tr><tr><td>Formal international university partnership</td><td>Host unit + responsible Rectorate route</td><td>International Office, Legal, Support Kunst und Forschung</td></tr><tr><td>Teaching / curriculum / study-law component</td><td>Host institute/department</td><td>Vice-Rector Art/Teaching/Learning, Study Affairs, quality/curriculum structures</td></tr><tr><td>Doctoral project / doctoral candidate structure</td><td>Doctoral Centre + relevant programme</td><td>Research Vice-Rectorate/admission route, Support Kunst und Forschung</td></tr><tr><td>Accessibility / inclusion / disability requirements</td><td>DEI / Team Barrierefrei</td><td>Facility, Event Management, Communication, Personnel or Study Affairs</td></tr><tr><td>Discrimination / equality / harassment concern</td><td>AKG</td><td>Independent/confidential route; other units only as appropriate</td></tr></tbody>
359 </table>
360 </section>
Veronika Kocher 2.1 361
Veronika Kocher 6.1 362 <section class="sec">
363 <div class="eye" style="color:#8a4d36;margin-bottom:4px">STEP 5 · THE ACTUAL PROJECT PLAN</div>
364 <h3>Your planning file should contain these components</h3>
365 <div class="grid">
366 <div class="check"><strong>Project Charter</strong><br>Purpose, scope, non-scope, project type, host, lead, partners, start/end, outputs.</div>
367 <div class="check"><strong>Role &amp; responsibility matrix</strong><br>Who decides, does, approves, is consulted and must be informed.</div>
368 <div class="check"><strong>Work plan</strong><br>Work packages, milestones, dependencies, decision points, public outputs and closure.</div>
369 <div class="check"><strong>Budget baseline</strong><br>Costs, funding source, co-funding, institutional resources, assumptions and contingencies.</div>
370 <div class="check"><strong>People plan</strong><br>Existing staff, new hires, external contributors, workload, contracts, onboarding and handover.</div>
371 <div class="check"><strong>Procurement / infrastructure plan</strong><br>Purchases, equipment, rooms, workshops, IT, logistics, safety and lead times.</div>
372 <div class="check"><strong>Partner plan</strong><br>Roles, budget interfaces, deliverables, agreements, IP, data, communication and escalation.</div>
373 <div class="check"><strong>Rights / ethics / data plan</strong><br>Third-party material, consent, personal data, licences, confidentiality and ethics review.</div>
374 <div class="check"><strong>Communication / event plan</strong><br>Audiences, media, publication, event needs, CI, accessibility and documentation.</div>
375 <div class="check"><strong>Risk register</strong><br>Funding, people, rights, data, schedule, supplier, technical, venue, partner and reputational risks.</div>
376 <div class="check"><strong>Decision log</strong><br>Important decisions, date, responsible person, reason and impact.</div>
377 <div class="check"><strong>Closure / handover plan</strong><br>Final files, reporting, repository/archive, equipment, accounts, access, retention and responsibilities.</div>
378 </div>
379 </section>
Veronika Kocher 2.1 380
Veronika Kocher 6.1 381 <section class="sec">
382 <div class="eye" style="color:#8a4d36;margin-bottom:4px">STEP 6 · PLAN BACKWARDS</div>
383 <h3>The external deadline is not your first deadline</h3>
384 <table class="tbl">
385 <thead><tr><th>Planning point</th><th>Question</th></tr></thead>
386 <tbody>
387 <tr><td><strong>External submission / public opening</strong></td><td>What must be complete and approved here?</td></tr>
388 <tr><td><strong>Institutional approval / signature</strong></td><td>Who needs final documents and review time?</td></tr>
389 <tr><td><strong>Legal / partner agreements</strong></td><td>What must be reviewed before submission?</td></tr>
390 <tr><td><strong>Budget / personnel / procurement review</strong></td><td>Are rates, hires, purchases and resources realistic and permitted?</td></tr>
391 <tr><td><strong>Project concept freeze</strong></td><td>When must scope, roles, work packages and outputs stop changing?</td></tr>
392 <tr><td><strong>Partner input</strong></td><td>When must partners deliver text, budgets, letters and approvals?</td></tr>
393 <tr><td><strong>Internal start</strong></td><td>When must planning begin to make all of this possible?</td></tr>
394 </tbody></table>
395 </section>
Veronika Kocher 2.1 396
Veronika Kocher 6.1 397 <section class="sec">
398 <div class="eye" style="color:#8a4d36;margin-bottom:4px">STOP &amp; CHECK</div>
399 <h3>Project-planning red flags</h3>
400 <div class="grid">
401 <div class="warn"><strong>No institutional home.</strong><br>The project uses the University's name/resources but no host unit has accepted responsibility.</div>
402 <div class="warn"><strong>External commitment without approval.</strong><br>A partner, funder, venue or supplier has been promised something before the internal route is clear.</div>
403 <div class="warn"><strong>People appear only as budget lines.</strong><br>Employment/contract routes and lead times have not been checked.</div>
404 <div class="warn"><strong>Equipment appears only as a price.</strong><br>Procurement, ownership, installation, IT, safety, maintenance and storage have not been planned.</div>
405 <div class="warn"><strong>Public output planned, rights unresolved.</strong><br>Publication/exhibition/streaming has been promised without confirming rights, consent or data protection.</div>
406 <div class="warn"><strong>No owner for project end.</strong><br>No one is responsible for final reporting, master files, repository/archive, equipment, accounts and access closure.</div>
407 </div>
408 </section>
Veronika Kocher 2.1 409
Veronika Kocher 6.1 410 <section class="sec">
411 <div class="eye" style="color:#8a4d36;margin-bottom:4px">CONTINUE PLANNING</div>
412 <h3>Related Enable topics</h3>
413 <div class="linkgrid"><a class="navlink" href="https://xwiki.uni-ak.ac.at/bin/view/Service%20Navigator/Art%20%26%20Research%20Services%20Navigator/Enable/Funding%20%26%20Funder%20Requirements/">Funding & Funder Requirements</a><a class="navlink" href="https://xwiki.uni-ak.ac.at/bin/view/Service%20Navigator/Art%20%26%20Research%20Services%20Navigator/Enable/Identify%20Your%20Data%20%26%20Research%20Outputs/">Identify Your Data & Research Outputs</a><a class="navlink" href="https://xwiki.uni-ak.ac.at/bin/view/Service%20Navigator/Art%20%26%20Research%20Services%20Navigator/Enable/Plan%20Your%20Data%20Management/">Plan Your Data Management</a><a class="navlink" href="https://xwiki.uni-ak.ac.at/bin/view/Service%20Navigator/Art%20%26%20Research%20Services%20Navigator/Enable/Copyright%2C%20Rights%20%26%20Licences/">Copyright, Rights & Licences</a><a class="navlink" href="https://xwiki.uni-ak.ac.at/bin/view/Service%20Navigator/Art%20%26%20Research%20Services%20Navigator/Enable/Data%20Protection%20%26%20Ethics/">Data Protection & Ethics</a><a class="navlink" href="https://xwiki.uni-ak.ac.at/bin/view/Service%20Navigator/Art%20%26%20Research%20Services%20Navigator/Enable/File%20Organisation%20%26%20Naming/">File Organisation & Naming</a><a class="navlink" href="https://xwiki.uni-ak.ac.at/bin/view/Service%20Navigator/Art%20%26%20Research%20Services%20Navigator/Enable/Storage%2C%20Backup%20%26%20Security/">Storage, Backup & Security</a><a class="navlink" href="https://xwiki.uni-ak.ac.at/bin/view/Service%20Navigator/Art%20%26%20Research%20Services%20Navigator/Enable/Infrastructure%2C%20Services%20%26%20Tools/">Infrastructure, Services & Tools</a><a class="navlink" href="https://xwiki.uni-ak.ac.at/bin/view/Service%20Navigator/Art%20%26%20Research%20Services%20Navigator/Enable/Collaboration%20Setup/">Collaboration Setup</a></div>
414 </section>
Veronika Kocher 2.1 415
Veronika Kocher 6.1 416 <div class="info" style="margin-bottom:14px"><strong>Need help structuring the project?</strong> For funded, artistic, scientific and arts-based research projects, Support Kunst und Forschung is a central coordination point. Bring a short project description, host unit, likely applicant, partners, duration, rough budget and the main things you need from the University.</div>
Veronika Kocher 2.1 417
Veronika Kocher 9.9 418 <!-- ARSN_TRAINING_WORKSHOPS_INCLUDE_V1_START -->
419 {{include reference="Service Navigator.Art & Research Services Navigator.Code.TrainingWorkshopsBlock" author="target" /}}
420 <!-- ARSN_TRAINING_WORKSHOPS_INCLUDE_V1_END -->
421
422 <!-- ARSN_PRACTICAL_RESOURCES_FALLBACK_V1_START -->
423 {{include reference="Service Navigator.Art & Research Services Navigator.Code.PracticalResourcesFallbackBlock" author="target" /}}
424 <!-- ARSN_PRACTICAL_RESOURCES_FALLBACK_V1_END -->
425
Veronika Kocher 4.1 426 <!-- ARSN_SEARCH_TERMS_START -->
Veronika Kocher 6.1 427 <details style="margin-top:24px;padding-top:10px;border-top:1px solid #e3ded6">
428 <summary style="cursor:pointer;color:#6a655e;font-size:13px">Search terms &amp; related topics</summary>
429 <div style="margin-top:9px;color:#5c5650;font-size:12px;line-height:1.7">project planning · project organisation · project management · project governance · roles and responsibilities · RACI · work packages · timeline · milestones · dependencies · budget planning · risk management · project host · institute · department · Rektorat · Support Kunst und Forschung · third-party funding · finance · controlling · accounting · personnel · HR · contracts · legal · data protection · IT · digital services · procurement · room planning · facility management · event management · press and communication · international cooperation · mobility · library · doctoral project · teaching · curriculum · accessibility · diversity · equality · inclusion · AKG · works council · project partners · institutional approval · signing authority · decision log · handover</div>
Veronika Kocher 4.1 430 </details>
431 <!-- ARSN_SEARCH_TERMS_END -->
Veronika Kocher 6.1 432
433 </div>
Veronika Kocher 4.1 434 {{/html}}
Veronika Kocher 8.1 435
Veronika Kocher 9.6 436 {{html clean="false"}}
437 <!-- SN_SERVICE_NAVIGATOR_MASTER_STYLE_START -->
Veronika Kocher 9.5 438
Veronika Kocher 9.6 439 <style data-sn-service-navigator-master="1">
440 /* =========================================================
441 MASTER TYPOGRAPHY
442 ========================================================= */
Veronika Kocher 9.5 443 #xwikicontent h1,
444 #xwikicontent h2,
445 #xwikicontent h3,
446 #xwikicontent h4,
447 #xwikicontent h5,
448 #xwikicontent h6,
449 #xwikicontent .box-title,
450 #xwikicontent [role="heading"],
451 #xwikicontent h1 a,
452 #xwikicontent h2 a,
453 #xwikicontent h3 a,
454 #xwikicontent h4 a,
455 #xwikicontent h5 a,
456 #xwikicontent h6 a,
457 #xwikicontent .box-title a,
458 #xwikicontent [role="heading"] a{
459 text-align:left!important;
460 text-justify:auto!important;
461 word-spacing:normal!important;
462 }
463
Veronika Kocher 9.6 464 /* =========================================================
465 COMING SOON / IN VORBEREITUNG
466 ========================================================= */
467 .sn-coming-soon-badge{
468 display:inline-block;
469 vertical-align:middle;
470 margin-left:10px;
471 padding:4px 8px;
472 border-radius:14px;
473 border:1px solid #efd9cc;
474 background:#fff4ee;
475 color:#8a4d36;
476 font-size:11px;
477 font-weight:700;
478 letter-spacing:.055em;
479 line-height:1.2;
480 white-space:nowrap;
481 }
482
483 /* =========================================================
484 NATIVE / DETAIL CALLOUT GEOMETRY
485 Preserve existing backgrounds.
486 ========================================================= */
487 #xwikicontent .arsn-info,
488 #xwikicontent .dmp-info,
489 #xwikicontent .ido-info,
490 #xwikicontent .pp-info,
491 #xwikicontent .infomessage{
Veronika Kocher 9.5 492 box-sizing:border-box!important;
Veronika Kocher 9.6 493 border-left:4px solid #21b6d7!important;
494 border-radius:8px;
Veronika Kocher 9.5 495 text-align:left!important;
496 word-spacing:normal!important;
497 }
498
Veronika Kocher 9.6 499 #xwikicontent .arsn-warn,
500 #xwikicontent .dmp-warn,
501 #xwikicontent .ido-warn,
502 #xwikicontent .pp-warn,
503 #xwikicontent .warn,
504 #xwikicontent .warning,
505 #xwikicontent .warningmessage,
Veronika Kocher 9.5 506 #xwikicontent .errormessage{
Veronika Kocher 9.6 507 box-sizing:border-box!important;
508 border-left:4px solid #e94b13!important;
509 border-radius:8px;
510 text-align:left!important;
511 word-spacing:normal!important;
Veronika Kocher 9.5 512 }
513
Veronika Kocher 9.6 514 [data-sn-master-equal-height],
515 [data-sn-master-first-row]{
Veronika Kocher 9.4 516 box-sizing:border-box;
Veronika Kocher 9.3 517 }
Veronika Kocher 9.7 518
519 /* =========================================================
520 FULL-WIDTH THREE-LINE NUMBER / TITLE / SUBTITLE BLOCKS
521 ========================================================= */
522 #xwikicontent .arsn-area-label[data-sn-three-line="1"]{
523 display:grid!important;
524 grid-template-columns:minmax(0,1fr)!important;
525 grid-auto-rows:auto!important;
526 width:100%!important;
527 max-width:none!important;
528 box-sizing:border-box!important;
529 justify-items:start!important;
530 align-items:start!important;
531 gap:2px!important;
532 text-align:left!important;
533 text-align-last:left!important;
534 text-justify:auto!important;
535 word-spacing:normal!important;
536 white-space:normal!important;
537 }
538 #xwikicontent .arsn-area-label[data-sn-three-line="1"] > .arsn-area-number,
539 #xwikicontent .arsn-area-label[data-sn-three-line="1"] > .sn-area-label-title,
540 #xwikicontent .arsn-area-label[data-sn-three-line="1"] > .arsn-area-action{
541 display:block!important;
542 width:100%!important;
543 margin:0!important;
544 text-align:left!important;
545 text-align-last:left!important;
546 text-justify:auto!important;
547 word-spacing:normal!important;
548 white-space:normal!important;
549 }
Veronika Kocher 9.3 550 </style>
Veronika Kocher 9.5 551
Veronika Kocher 9.6 552 <script data-sn-service-navigator-master="1">
Veronika Kocher 9.3 553 (function(){
554 "use strict";
555
Veronika Kocher 9.6 556 var PAGE_KIND="detail";
557 var PLACEHOLDER=false;
558 var PLACEHOLDER_LABEL="COMING SOON";
559
Veronika Kocher 9.3 560 var MOBILE_MAX=767;
Veronika Kocher 9.4 561 var ROW_TOLERANCE=6;
Veronika Kocher 9.5 562 var RESIZE_DEBOUNCE=220;
Veronika Kocher 9.3 563
564 var root=
565 document.getElementById("xwikicontent")||
566 document.querySelector(".xwiki-rendering-content")||
567 document.querySelector("main")||
568 document.body;
569
570 if(!root)return;
571
Veronika Kocher 9.6 572 var managedHeight=new Set();
573 var managedMargin=new Set();
574 var originalHeight=new WeakMap();
575 var originalMargin=new WeakMap();
Veronika Kocher 9.5 576
577 var resizeTimer=0;
Veronika Kocher 9.6 578 var running=false;
Veronika Kocher 9.5 579
Veronika Kocher 9.6 580 var THEMES=[
581 {
582 name:"BLUE",
583 accent:"#21b6d7",
584 bg:"#eaf7fb",
585 text:"#315d68",
586 labels:[
587 "HIER STARTEN",
588 "ENTSCHEIDEN",
589 "ÜBERPRÜFEN & ANPASSEN",
590 "START HERE",
591 "DECIDE",
592 "REVIEW & ADAPT"
593 ]
594 },
595 {
596 name:"RED",
597 accent:"#e94b13",
598 bg:"#fff1ec",
599 text:"#8a4d36",
600 labels:[
601 "PLANEN & ORGANISIEREN",
602 "ORGANISIEREN & DOKUMENTIEREN",
603 "PUBLIZIEREN & PRÄSENTIEREN",
604 "PLAN & ORGANISE",
605 "PLAN & ORGANIZE",
606 "ORGANISE & DOCUMENT",
607 "ORGANIZE & DOCUMENT",
608 "PUBLISH & PRESENT"
609 ]
610 },
611 {
612 name:"YELLOW",
613 accent:"#f0aa00",
614 bg:"#fff8e7",
615 text:"#785b17",
616 labels:[
617 "SCHÜTZEN & KLÄREN",
618 "STANDARDISIEREN & IDENTIFIZIEREN",
619 "ÖFFNEN, NACHNUTZEN & AUFFINDBAR MACHEN",
620 "PROTECT & CLARIFY",
621 "STANDARDISE & IDENTIFY",
622 "STANDARDIZE & IDENTIFY",
623 "OPEN, REUSE & MAKE FINDABLE"
624 ]
625 },
626 {
627 name:"GREEN",
628 accent:"#38b76a",
629 bg:"#edf9f1",
630 text:"#3f7451",
631 labels:[
632 "INFRASTRUKTUR EINRICHTEN",
633 "INFRASTRUKTUR & ZUSAMMENARBEIT EINRICHTEN",
634 "SPEICHERN & ZUGRIFF STEUERN",
635 "REPOSITORIUM, ERHALTEN & ÜBERGEBEN",
636 "SET UP INFRASTRUCTURE",
637 "SET UP INFRASTRUCTURE & COLLABORATION",
638 "STORE & CONTROL ACCESS",
639 "REPOSITORY, PRESERVE & HAND OVER"
640 ]
Veronika Kocher 9.4 641 }
Veronika Kocher 9.6 642 ];
Veronika Kocher 9.4 643
Veronika Kocher 9.6 644 function num(value){
645 var n=parseFloat(value);
646 return Number.isFinite(n)?n:0;
Veronika Kocher 9.3 647 }
648
Veronika Kocher 9.6 649 function norm(value){
650 return String(value||"")
Veronika Kocher 9.5 651 .replace(/\s+/g," ")
652 .trim()
653 .toUpperCase();
654 }
655
Veronika Kocher 9.6 656 function visible(el){
657 if(!el||el.nodeType!==1)return false;
Veronika Kocher 9.3 658
Veronika Kocher 9.6 659 var style=getComputedStyle(el);
660 var rect=el.getBoundingClientRect();
Veronika Kocher 9.5 661
662 return (
Veronika Kocher 9.6 663 style.display!=="none"&&
664 style.visibility!=="hidden"&&
665 rect.width>20&&
666 rect.height>4
Veronika Kocher 9.5 667 );
Veronika Kocher 9.3 668 }
669
Veronika Kocher 9.6 670 function saveStyle(el,map,property){
Veronika Kocher 9.4 671 if(map.has(el))return;
672
673 map.set(el,{
Veronika Kocher 9.6 674 value:el.style.getPropertyValue(property),
675 priority:el.style.getPropertyPriority(property)
Veronika Kocher 9.4 676 });
677 }
678
Veronika Kocher 9.6 679 function restoreStyle(el,map,property){
Veronika Kocher 9.4 680 var original=map.get(el);
681
682 if(original&&original.value){
683 el.style.setProperty(
684 property,
685 original.value,
686 original.priority||""
687 );
688 }else{
Veronika Kocher 9.6 689 el.style.removeProperty(property);
Veronika Kocher 9.4 690 }
691 }
692
Veronika Kocher 9.5 693 function resetRuntime(){
Veronika Kocher 9.6 694 managedHeight.forEach(function(el){
695 restoreStyle(
Veronika Kocher 9.4 696 el,
Veronika Kocher 9.6 697 originalHeight,
Veronika Kocher 9.4 698 "min-height"
699 );
700 el.removeAttribute(
Veronika Kocher 9.6 701 "data-sn-master-equal-height"
Veronika Kocher 9.4 702 );
703 });
704
Veronika Kocher 9.6 705 managedMargin.forEach(function(el){
706 restoreStyle(
Veronika Kocher 9.4 707 el,
Veronika Kocher 9.6 708 originalMargin,
Veronika Kocher 9.4 709 "margin-top"
710 );
711 el.removeAttribute(
Veronika Kocher 9.6 712 "data-sn-master-first-row"
Veronika Kocher 9.4 713 );
714 });
715
Veronika Kocher 9.6 716 managedHeight.clear();
717 managedMargin.clear();
718 }
Veronika Kocher 9.5 719
Veronika Kocher 9.6 720 function themeFor(text){
721 var value=norm(text);
Veronika Kocher 9.5 722
Veronika Kocher 9.6 723 for(var i=0;i<THEMES.length;i++){
724 for(var j=0;j<THEMES[i].labels.length;j++){
725 var label=THEMES[i].labels[j];
726
727 if(
728 value===label||
729 value.indexOf(label+" ")===0||
730 value.indexOf(label+" -")===0||
731 value.indexOf(label+" ·")===0
732 ){
733 return THEMES[i];
734 }
735 }
736 }
737
738 return null;
Veronika Kocher 9.4 739 }
740
Veronika Kocher 9.6 741 /* =======================================================
Veronika Kocher 9.7 742 BORDERLESS FILLED RED/ORANGE CTA BUTTONS
743 ======================================================= */
744
745 function colourDistance(a,b){
746 return Math.sqrt(
747 Math.pow(a[0]-b[0],2)+
748 Math.pow(a[1]-b[1],2)+
749 Math.pow(a[2]-b[2],2)
750 );
751 }
752
753 function makeFilledRedOrangeCTAsBorderless(){
754 var RED_ORANGE=[233,75,19];
755
756 Array.from(
757 root.querySelectorAll(
758 'a,button,[role="button"],input[type="submit"],input[type="button"]'
759 )
760 ).forEach(function(el){
761 if(!visible(el))return;
762
763 var style=getComputedStyle(el);
764 var rgb=parseRGB(style.backgroundColor);
765
766 if(!rgb)return;
767
768 if(
769 colourDistance(
770 rgb,
771 RED_ORANGE
772 )>55
773 ){
774 return;
775 }
776
777 var rect=el.getBoundingClientRect();
778
779 if(
780 rect.width<80||
781 rect.height<24
782 ){
783 return;
784 }
785
786 el.style.setProperty(
787 "border",
788 "none",
789 "important"
790 );
791
792 el.style.setProperty(
793 "border-left",
794 "none",
795 "important"
796 );
797
798 el.style.setProperty(
799 "border-top",
800 "none",
801 "important"
802 );
803
804 el.style.setProperty(
805 "border-right",
806 "none",
807 "important"
808 );
809
810 el.style.setProperty(
811 "border-bottom",
812 "none",
813 "important"
814 );
815
816 el.style.setProperty(
817 "box-shadow",
818 "none",
819 "important"
820 );
821 });
822 }
823
824 /* =======================================================
825 FULL-WIDTH THREE-LINE AREA LABELS
826 ======================================================= */
827
828 function compactText(value){
829 return String(value||"")
830 .replace(/\s+/g," ")
831 .trim();
832 }
833
834 function makeThreeLineAreaLabels(){
835 Array.from(
836 root.querySelectorAll(
837 ".arsn-area-label"
838 )
839 ).forEach(function(label){
840 if(
841 label.getAttribute(
842 "data-sn-three-line"
843 )==="1"
844 ){
845 return;
846 }
847
848 var number=
849 label.querySelector(
850 ":scope > .arsn-area-number"
851 );
852
853 var action=
854 label.querySelector(
855 ":scope > .arsn-area-action"
856 );
857
858 if(
859 !number||
860 !action
861 ){
862 return;
863 }
864
865 var clone=
866 label.cloneNode(true);
867
868 var cloneNumber=
869 clone.querySelector(
870 ":scope > .arsn-area-number"
871 );
872
873 var cloneAction=
874 clone.querySelector(
875 ":scope > .arsn-area-action"
876 );
877
878 if(cloneNumber){
879 cloneNumber.remove();
880 }
881
882 if(cloneAction){
883 cloneAction.remove();
884 }
885
886 var titleText=
887 compactText(
888 clone.textContent
889 );
890
891 if(!titleText){
892 return;
893 }
894
895 var numberNode=
896 number.cloneNode(true);
897
898 var actionNode=
899 action.cloneNode(true);
900
901 var titleNode=
902 document.createElement(
903 "span"
904 );
905
906 titleNode.className=
907 "sn-area-label-title";
908
909 titleNode.textContent=
910 titleText;
911
912 while(label.firstChild){
913 label.removeChild(
914 label.firstChild
915 );
916 }
917
918 label.appendChild(
919 numberNode
920 );
921
922 label.appendChild(
923 titleNode
924 );
925
926 label.appendChild(
927 actionNode
928 );
929
930 label.setAttribute(
931 "data-sn-three-line",
932 "1"
933 );
934
935 var head=
936 label.closest(
937 ".arsn-area-head"
938 );
939
940 if(head){
941 head.style.setProperty(
942 "width",
943 "100%",
944 "important"
945 );
946
947 head.style.setProperty(
948 "max-width",
949 "100%",
950 "important"
951 );
952
953 head.style.setProperty(
954 "box-sizing",
955 "border-box",
956 "important"
957 );
958 }
959 });
960 }
961
962 /* =======================================================
Veronika Kocher 9.6 963 PLACEHOLDER BADGE
964 ======================================================= */
Veronika Kocher 9.5 965
Veronika Kocher 9.6 966 function applyPlaceholderBadge(){
967 if(!PLACEHOLDER)return;
Veronika Kocher 9.5 968
969 if(
Veronika Kocher 9.6 970 document.querySelector(
971 ".sn-coming-soon-badge"
972 )
Veronika Kocher 9.5 973 ){
Veronika Kocher 9.6 974 return;
Veronika Kocher 9.5 975 }
976
Veronika Kocher 9.6 977 var title=
978 document.querySelector(
979 "#document-title"
980 )||
981 document.querySelector(
982 "h1"
983 );
Veronika Kocher 9.5 984
Veronika Kocher 9.6 985 if(!title)return;
Veronika Kocher 9.5 986
Veronika Kocher 9.6 987 var badge=
988 document.createElement(
989 "span"
990 );
991
992 badge.className=
993 "sn-coming-soon-badge";
994
995 badge.textContent=
996 PLACEHOLDER_LABEL;
997
998 badge.setAttribute(
999 "aria-label",
1000 PLACEHOLDER_LABEL
Veronika Kocher 9.5 1001 );
1002
Veronika Kocher 9.6 1003 title.appendChild(
1004 badge
1005 );
1006 }
Veronika Kocher 9.5 1007
Veronika Kocher 9.6 1008 /* =======================================================
1009 DETAIL PAGE OWN-ACCENT PROPAGATION
1010 ======================================================= */
Veronika Kocher 9.5 1011
Veronika Kocher 9.6 1012 function parseRGB(value){
1013 var match=String(value||"").match(
1014 /rgba?\(\s*([\d.]+)\s*,\s*([\d.]+)\s*,\s*([\d.]+)/i
Veronika Kocher 9.5 1015 );
Veronika Kocher 9.6 1016
1017 if(!match)return null;
1018
1019 return [
1020 Number(match[1]),
1021 Number(match[2]),
1022 Number(match[3])
1023 ];
Veronika Kocher 9.5 1024 }
1025
Veronika Kocher 9.6 1026 function distance(a,b){
1027 return Math.sqrt(
1028 Math.pow(a[0]-b[0],2)+
1029 Math.pow(a[1]-b[1],2)+
1030 Math.pow(a[2]-b[2],2)
1031 );
1032 }
Veronika Kocher 9.3 1033
Veronika Kocher 9.6 1034 function paletteMatch(cssColor){
1035 var rgb=parseRGB(cssColor);
Veronika Kocher 9.4 1036
Veronika Kocher 9.6 1037 if(!rgb)return null;
Veronika Kocher 9.4 1038
Veronika Kocher 9.6 1039 var palette=[
1040 {hex:"#21b6d7",rgb:[33,182,215]},
1041 {hex:"#e94b13",rgb:[233,75,19]},
1042 {hex:"#f0aa00",rgb:[240,170,0]},
1043 {hex:"#38b76a",rgb:[56,183,106]}
1044 ];
Veronika Kocher 9.3 1045
Veronika Kocher 9.4 1046 var best=null;
Veronika Kocher 9.6 1047 var bestDistance=Infinity;
Veronika Kocher 9.3 1048
Veronika Kocher 9.6 1049 palette.forEach(function(item){
1050 var d=distance(rgb,item.rgb);
Veronika Kocher 9.3 1051
Veronika Kocher 9.6 1052 if(d<bestDistance){
1053 best=item;
1054 bestDistance=d;
1055 }
1056 });
Veronika Kocher 9.4 1057
Veronika Kocher 9.6 1058 return bestDistance<=30
1059 ?best
1060 :null;
1061 }
Veronika Kocher 9.3 1062
Veronika Kocher 9.6 1063 function propagateDetailAccents(){
1064 if(PAGE_KIND!=="detail")return;
1065
1066 Array.from(
1067 root.querySelectorAll(
1068 ".arsn-call,.dmp-call,.ido-call,.pp-call,"+
1069 ".arsn-source,.dmp-source,.ido-source,.pp-source"
1070 )
1071 ).forEach(function(el){
1072 if(!visible(el))return;
1073
1074 var style=getComputedStyle(el);
1075
Veronika Kocher 9.4 1076 if(
Veronika Kocher 9.6 1077 num(style.borderTopWidth)>=2
Veronika Kocher 9.4 1078 ){
Veronika Kocher 9.6 1079 var match=
1080 paletteMatch(
1081 style.borderTopColor
Veronika Kocher 9.4 1082 );
1083
Veronika Kocher 9.6 1084 if(match){
1085 el.style.setProperty(
1086 "border-left",
1087 "4px solid "+match.hex,
1088 "important"
Veronika Kocher 9.4 1089 );
Veronika Kocher 9.3 1090 }
1091 }
Veronika Kocher 9.6 1092 });
Veronika Kocher 9.3 1093
Veronika Kocher 9.6 1094 // Warning families: explicit safety override.
1095 Array.from(
1096 root.querySelectorAll(
1097 ".arsn-warn,.dmp-warn,.ido-warn,.pp-warn,"+
1098 ".warn,.warning,.warningmessage,.errormessage"
1099 )
1100 ).forEach(function(el){
1101 if(!visible(el))return;
Veronika Kocher 9.3 1102
Veronika Kocher 9.6 1103 el.style.setProperty(
1104 "border-left",
1105 "4px solid #e94b13",
1106 "important"
1107 );
1108 });
Veronika Kocher 9.3 1109
Veronika Kocher 9.6 1110 // Info families: explicit orientation override.
1111 Array.from(
1112 root.querySelectorAll(
1113 ".arsn-info,.dmp-info,.ido-info,.pp-info,.infomessage"
1114 )
1115 ).forEach(function(el){
1116 if(!visible(el))return;
Veronika Kocher 9.4 1117
Veronika Kocher 9.6 1118 el.style.setProperty(
1119 "border-left",
1120 "4px solid #21b6d7",
1121 "important"
1122 );
1123 });
1124 }
Veronika Kocher 9.4 1125
Veronika Kocher 9.6 1126 /* =======================================================
1127 OVERVIEW SEMANTIC THEME PALETTE
1128 ======================================================= */
Veronika Kocher 9.4 1129
Veronika Kocher 9.6 1130 function smallestThemeHeaders(){
1131 return Array.from(
1132 root.querySelectorAll(
1133 "div,span,p,strong,h3,h4,h5,h6"
1134 )
1135 ).filter(function(el){
1136 if(!visible(el))return false;
1137 if(!themeFor(el.textContent))return false;
Veronika Kocher 9.4 1138
Veronika Kocher 9.6 1139 return !Array.from(
1140 el.children||[]
1141 ).some(function(child){
1142 return !!themeFor(
1143 child.textContent
1144 );
Veronika Kocher 9.4 1145 });
Veronika Kocher 9.6 1146 });
Veronika Kocher 9.3 1147 }
1148
Veronika Kocher 9.6 1149 function findOverviewCard(header){
1150 var node=header.parentElement;
1151 var candidates=[];
Veronika Kocher 9.4 1152
Veronika Kocher 9.6 1153 while(node&&node!==root){
1154 var rect=node.getBoundingClientRect();
1155 var style=getComputedStyle(node);
Veronika Kocher 9.4 1156
Veronika Kocher 9.6 1157 var border=
1158 num(style.borderTopWidth)+
1159 num(style.borderRightWidth)+
1160 num(style.borderBottomWidth)+
1161 num(style.borderLeftWidth);
Veronika Kocher 9.4 1162
Veronika Kocher 9.6 1163 if(
1164 rect.width>=220&&
1165 rect.width<=800&&
1166 rect.height>=120&&
1167 border>=1
1168 ){
1169 candidates.push(node);
1170 }
Veronika Kocher 9.4 1171
Veronika Kocher 9.6 1172 node=node.parentElement;
1173 }
Veronika Kocher 9.4 1174
Veronika Kocher 9.6 1175 if(!candidates.length)return null;
Veronika Kocher 9.4 1176
Veronika Kocher 9.6 1177 candidates.sort(function(a,b){
1178 return (
1179 b.getBoundingClientRect().height-
1180 a.getBoundingClientRect().height
Veronika Kocher 9.5 1181 );
Veronika Kocher 9.6 1182 });
Veronika Kocher 9.4 1183
Veronika Kocher 9.6 1184 return candidates[0];
Veronika Kocher 9.4 1185 }
1186
Veronika Kocher 9.6 1187 function rowCandidates(link,card){
1188 var result=[];
Veronika Kocher 9.5 1189 var cardRect=
1190 card.getBoundingClientRect();
Veronika Kocher 9.4 1191
Veronika Kocher 9.6 1192 var node=link;
Veronika Kocher 9.4 1193
Veronika Kocher 9.6 1194 while(node&&node!==card){
1195 if(visible(node)){
1196 var rect=
1197 node.getBoundingClientRect();
Veronika Kocher 9.4 1198
Veronika Kocher 9.6 1199 if(
1200 rect.height<=105&&
1201 rect.width>=
1202 cardRect.width*.50&&
1203 rect.width<=
1204 cardRect.width*1.03
1205 ){
1206 result.push(node);
1207 }
1208 }
Veronika Kocher 9.4 1209
Veronika Kocher 9.6 1210 node=node.parentElement;
1211 }
1212
1213 return result;
1214 }
1215
1216 function chooseOuterRow(
1217 candidates,
1218 link
1219 ){
1220 if(!candidates.length){
1221 return link;
1222 }
1223
1224 var bordered=
1225 candidates.filter(function(el){
Veronika Kocher 9.5 1226 return (
Veronika Kocher 9.6 1227 num(
1228 getComputedStyle(el)
1229 .borderLeftWidth
1230 )>=1
Veronika Kocher 9.5 1231 );
1232 });
Veronika Kocher 9.4 1233
Veronika Kocher 9.6 1234 var pool=
1235 bordered.length
1236 ?bordered
1237 :candidates;
Veronika Kocher 9.4 1238
Veronika Kocher 9.6 1239 pool.sort(function(a,b){
1240 var ar=
1241 a.getBoundingClientRect();
Veronika Kocher 9.4 1242
Veronika Kocher 9.6 1243 var br=
1244 b.getBoundingClientRect();
Veronika Kocher 9.4 1245
Veronika Kocher 9.6 1246 return (
1247 ar.left-br.left||
1248 br.width-ar.width
1249 );
1250 });
Veronika Kocher 9.4 1251
Veronika Kocher 9.6 1252 return pool[0]||link;
1253 }
Veronika Kocher 9.4 1254
Veronika Kocher 9.6 1255 function applyOverviewPalette(){
1256 if(PAGE_KIND!=="overview"){
1257 return [];
Veronika Kocher 9.5 1258 }
Veronika Kocher 9.4 1259
Veronika Kocher 9.6 1260 var headers=
1261 smallestThemeHeaders()
1262 .map(function(el){
1263 return {
1264 el:el,
1265 theme:
1266 themeFor(
1267 el.textContent
1268 ),
1269 card:
1270 findOverviewCard(
1271 el
1272 )
1273 };
Veronika Kocher 9.5 1274 })
Veronika Kocher 9.6 1275 .filter(function(row){
1276 return !!row.card;
1277 });
Veronika Kocher 9.4 1278
Veronika Kocher 9.6 1279 var unique=[];
1280 var seenHeaders=new Set();
Veronika Kocher 9.4 1281
Veronika Kocher 9.6 1282 headers.forEach(function(row){
1283 var key=
1284 row.theme.name+
1285 "|"+
1286 Math.round(
1287 row.card
1288 .getBoundingClientRect()
1289 .left
1290 )+
1291 "|"+
1292 Math.round(
1293 row.el
1294 .getBoundingClientRect()
1295 .top
1296 );
Veronika Kocher 9.4 1297
Veronika Kocher 9.6 1298 if(!seenHeaders.has(key)){
1299 seenHeaders.add(key);
1300 unique.push(row);
1301 }
1302 });
Veronika Kocher 9.4 1303
Veronika Kocher 9.6 1304 unique.forEach(function(row){
1305 var headerRect=
1306 row.el
1307 .getBoundingClientRect();
Veronika Kocher 9.4 1308
Veronika Kocher 9.6 1309 row.el.style.setProperty(
1310 "background",
1311 row.theme.bg,
1312 "important"
Veronika Kocher 9.5 1313 );
1314
Veronika Kocher 9.6 1315 row.el.style.setProperty(
1316 "color",
1317 row.theme.text,
1318 "important"
Veronika Kocher 9.5 1319 );
1320
Veronika Kocher 9.6 1321 row.el.style.setProperty(
1322 "text-align",
1323 "left",
1324 "important"
Veronika Kocher 9.5 1325 );
Veronika Kocher 9.4 1326
Veronika Kocher 9.6 1327 row.el.style.setProperty(
1328 "word-spacing",
1329 "normal",
1330 "important"
1331 );
Veronika Kocher 9.5 1332
Veronika Kocher 9.6 1333 var later=
1334 unique
1335 .filter(function(other){
1336 return (
1337 other.card===row.card&&
1338 other.el
1339 .getBoundingClientRect()
1340 .top>
1341 headerRect.top+2
1342 );
1343 })
1344 .sort(function(a,b){
1345 return (
1346 a.el
1347 .getBoundingClientRect()
1348 .top-
1349 b.el
1350 .getBoundingClientRect()
1351 .top
1352 );
1353 });
Veronika Kocher 9.5 1354
Veronika Kocher 9.6 1355 var stopTop=
1356 later.length
1357 ?later[0].el
1358 .getBoundingClientRect()
1359 .top
1360 :Infinity;
Veronika Kocher 9.5 1361
1362 Array.from(
Veronika Kocher 9.6 1363 row.card.querySelectorAll("a")
1364 ).forEach(function(link){
1365 if(!visible(link))return;
Veronika Kocher 9.5 1366
Veronika Kocher 9.6 1367 var rect=
1368 link.getBoundingClientRect();
Veronika Kocher 9.5 1369
Veronika Kocher 9.6 1370 if(
1371 rect.top<=
1372 headerRect.bottom-2||
1373 rect.top>=
1374 stopTop-2
1375 ){
1376 return;
1377 }
Veronika Kocher 9.5 1378
Veronika Kocher 9.6 1379 var candidates=
1380 rowCandidates(
1381 link,
1382 row.card
1383 );
1384
1385 var target=
1386 chooseOuterRow(
1387 candidates,
1388 link
1389 );
1390
1391 candidates.forEach(function(el){
1392 el.style.setProperty(
1393 "border-left",
1394 "0 solid transparent",
1395 "important"
1396 );
1397 });
1398
1399 target.style.setProperty(
1400 "border-left",
1401 "3px solid "+
1402 row.theme.accent,
1403 "important"
Veronika Kocher 9.5 1404 );
Veronika Kocher 9.6 1405
1406 target.style.setProperty(
1407 "box-sizing",
1408 "border-box",
1409 "important"
Veronika Kocher 9.5 1410 );
Veronika Kocher 9.4 1411 });
Veronika Kocher 9.6 1412 });
Veronika Kocher 9.4 1413
Veronika Kocher 9.6 1414 return unique;
Veronika Kocher 9.5 1415 }
Veronika Kocher 9.4 1416
Veronika Kocher 9.6 1417 /* =======================================================
1418 OVERVIEW CARD HEIGHT + FIRST THEMATIC ROW
1419 ======================================================= */
Veronika Kocher 9.5 1420
Veronika Kocher 9.6 1421 function alignOverviewCards(headers){
1422 if(
1423 PAGE_KIND!=="overview"||
1424 window.innerWidth<=MOBILE_MAX
1425 ){
1426 return;
1427 }
Veronika Kocher 9.5 1428
Veronika Kocher 9.6 1429 var cards=[];
1430 var seen=new Set();
Veronika Kocher 9.5 1431
Veronika Kocher 9.6 1432 headers.forEach(function(row){
1433 if(!seen.has(row.card)){
1434 seen.add(row.card);
1435 cards.push(row.card);
1436 }
1437 });
Veronika Kocher 9.5 1438
Veronika Kocher 9.6 1439 if(cards.length<2){
1440 return;
1441 }
Veronika Kocher 9.5 1442
Veronika Kocher 9.6 1443 // Group cards by actual top position.
1444 var groups=[];
Veronika Kocher 9.5 1445
Veronika Kocher 9.6 1446 cards.forEach(function(card){
1447 var top=
1448 card.getBoundingClientRect().top;
Veronika Kocher 9.5 1449
Veronika Kocher 9.6 1450 var group=null;
Veronika Kocher 9.5 1451
Veronika Kocher 9.6 1452 for(var i=0;i<groups.length;i++){
Veronika Kocher 9.5 1453 if(
Veronika Kocher 9.6 1454 Math.abs(
1455 groups[i].top-top
1456 )<=ROW_TOLERANCE
Veronika Kocher 9.5 1457 ){
Veronika Kocher 9.6 1458 group=groups[i];
1459 break;
Veronika Kocher 9.5 1460 }
Veronika Kocher 9.6 1461 }
Veronika Kocher 9.5 1462
Veronika Kocher 9.6 1463 if(!group){
1464 group={
1465 top:top,
1466 cards:[]
1467 };
1468 groups.push(group);
1469 }
Veronika Kocher 9.5 1470
Veronika Kocher 9.6 1471 group.cards.push(card);
1472 });
Veronika Kocher 9.5 1473
Veronika Kocher 9.6 1474 groups.forEach(function(group){
1475 if(group.cards.length<2){
1476 return;
1477 }
Veronika Kocher 9.5 1478
Veronika Kocher 9.6 1479 var firstHeaders=
1480 group.cards.map(function(card){
1481 var candidates=
1482 headers
1483 .filter(function(row){
1484 return row.card===card;
1485 })
1486 .sort(function(a,b){
1487 return (
1488 a.el
1489 .getBoundingClientRect()
1490 .top-
1491 b.el
1492 .getBoundingClientRect()
1493 .top
1494 );
1495 });
Veronika Kocher 9.5 1496
Veronika Kocher 9.6 1497 return candidates.length
1498 ?candidates[0]
1499 :null;
1500 });
Veronika Kocher 9.5 1501
Veronika Kocher 9.6 1502 if(
1503 !firstHeaders.some(function(row){
1504 return !row;
1505 })
1506 ){
1507 var targetTop=
1508 Math.max.apply(
1509 Math,
1510 firstHeaders.map(function(row){
1511 return (
1512 row.el
1513 .getBoundingClientRect()
1514 .top-
1515 row.card
1516 .getBoundingClientRect()
1517 .top
1518 );
1519 })
1520 );
Veronika Kocher 9.3 1521
Veronika Kocher 9.6 1522 firstHeaders.forEach(function(row){
1523 var relativeTop=
1524 row.el
1525 .getBoundingClientRect()
1526 .top-
1527 row.card
1528 .getBoundingClientRect()
1529 .top;
Veronika Kocher 9.4 1530
Veronika Kocher 9.6 1531 var delta=
1532 targetTop-relativeTop;
Veronika Kocher 9.4 1533
Veronika Kocher 9.6 1534 if(delta>1){
1535 saveStyle(
1536 row.el,
1537 originalMargin,
1538 "margin-top"
1539 );
Veronika Kocher 9.5 1540
Veronika Kocher 9.6 1541 var current=
1542 num(
1543 getComputedStyle(
1544 row.el
1545 ).marginTop
1546 );
Veronika Kocher 9.4 1547
Veronika Kocher 9.6 1548 row.el.style.setProperty(
1549 "margin-top",
1550 (
1551 current+delta
1552 )+"px"
1553 );
Veronika Kocher 9.4 1554
Veronika Kocher 9.6 1555 row.el.setAttribute(
1556 "data-sn-master-first-row",
1557 "1"
1558 );
Veronika Kocher 9.4 1559
Veronika Kocher 9.6 1560 managedMargin.add(
1561 row.el
1562 );
1563 }
1564 });
1565 }
Veronika Kocher 9.4 1566
Veronika Kocher 9.6 1567 var maxHeight=0;
Veronika Kocher 9.4 1568
Veronika Kocher 9.6 1569 group.cards.forEach(function(card){
1570 maxHeight=
1571 Math.max(
1572 maxHeight,
1573 card
1574 .getBoundingClientRect()
1575 .height
1576 );
1577 });
Veronika Kocher 9.4 1578
Veronika Kocher 9.6 1579 maxHeight=
1580 Math.ceil(maxHeight);
Veronika Kocher 9.4 1581
Veronika Kocher 9.6 1582 group.cards.forEach(function(card){
1583 saveStyle(
1584 card,
1585 originalHeight,
1586 "min-height"
1587 );
Veronika Kocher 9.4 1588
Veronika Kocher 9.6 1589 card.style.setProperty(
1590 "min-height",
1591 maxHeight+"px"
Veronika Kocher 9.4 1592 );
1593
Veronika Kocher 9.6 1594 card.setAttribute(
1595 "data-sn-master-equal-height",
1596 "1"
1597 );
Veronika Kocher 9.4 1598
Veronika Kocher 9.6 1599 managedHeight.add(
1600 card
1601 );
1602 });
Veronika Kocher 9.4 1603 });
1604 }
1605
Veronika Kocher 9.6 1606 /* =======================================================
1607 DETAIL GRID EQUAL HEIGHT, DESKTOP ONLY
1608 ======================================================= */
Veronika Kocher 9.4 1609
Veronika Kocher 9.6 1610 function equaliseDetailGrids(){
Veronika Kocher 9.5 1611 if(
Veronika Kocher 9.6 1612 PAGE_KIND!=="detail"||
1613 window.innerWidth<=MOBILE_MAX
Veronika Kocher 9.5 1614 ){
Veronika Kocher 9.6 1615 return;
Veronika Kocher 9.5 1616 }
Veronika Kocher 9.4 1617
Veronika Kocher 9.6 1618 var selectors=[
1619 ".arsn-grid",
1620 ".arsn-grid-2",
1621 ".arsn-grid-3",
1622 ".dmp-grid",
1623 ".ido-grid",
1624 ".pp-grid"
1625 ];
Veronika Kocher 9.4 1626
Veronika Kocher 9.6 1627 selectors.forEach(function(selector){
1628 Array.from(
1629 root.querySelectorAll(selector)
1630 ).forEach(function(grid){
1631 var children=
1632 Array.from(
1633 grid.children||[]
1634 ).filter(visible);
Veronika Kocher 9.4 1635
Veronika Kocher 9.6 1636 if(children.length<2){
1637 return;
1638 }
Veronika Kocher 9.4 1639
Veronika Kocher 9.6 1640 var groups=[];
Veronika Kocher 9.4 1641
Veronika Kocher 9.6 1642 children.forEach(function(child){
1643 var top=
1644 child
1645 .getBoundingClientRect()
1646 .top;
Veronika Kocher 9.4 1647
Veronika Kocher 9.6 1648 var group=null;
Veronika Kocher 9.4 1649
Veronika Kocher 9.6 1650 for(var i=0;i<groups.length;i++){
1651 if(
1652 Math.abs(
1653 groups[i].top-top
1654 )<=ROW_TOLERANCE
1655 ){
1656 group=groups[i];
1657 break;
1658 }
1659 }
Veronika Kocher 9.4 1660
Veronika Kocher 9.6 1661 if(!group){
1662 group={
1663 top:top,
1664 items:[]
1665 };
1666 groups.push(group);
1667 }
Veronika Kocher 9.4 1668
Veronika Kocher 9.6 1669 group.items.push(child);
1670 });
Veronika Kocher 9.4 1671
Veronika Kocher 9.6 1672 groups.forEach(function(group){
1673 if(group.items.length<2){
1674 return;
1675 }
Veronika Kocher 9.3 1676
Veronika Kocher 9.6 1677 var maxHeight=0;
Veronika Kocher 9.5 1678
Veronika Kocher 9.6 1679 group.items.forEach(function(item){
1680 maxHeight=
1681 Math.max(
1682 maxHeight,
1683 item
1684 .getBoundingClientRect()
1685 .height
1686 );
1687 });
Veronika Kocher 9.5 1688
Veronika Kocher 9.6 1689 maxHeight=
1690 Math.ceil(maxHeight);
Veronika Kocher 9.3 1691
Veronika Kocher 9.6 1692 group.items.forEach(function(item){
1693 saveStyle(
1694 item,
1695 originalHeight,
1696 "min-height"
1697 );
Veronika Kocher 9.3 1698
Veronika Kocher 9.6 1699 item.style.setProperty(
1700 "min-height",
1701 maxHeight+"px"
1702 );
Veronika Kocher 9.4 1703
Veronika Kocher 9.6 1704 item.setAttribute(
1705 "data-sn-master-equal-height",
1706 "1"
1707 );
Veronika Kocher 9.3 1708
Veronika Kocher 9.6 1709 managedHeight.add(item);
1710 });
Veronika Kocher 9.3 1711 });
Veronika Kocher 9.6 1712 });
1713 });
1714 }
Veronika Kocher 9.3 1715
Veronika Kocher 9.6 1716 /* =======================================================
1717 RUN / RESPONSIVE SCHEDULING
1718 ======================================================= */
Veronika Kocher 9.3 1719
Veronika Kocher 9.6 1720 function run(){
1721 if(running)return;
Veronika Kocher 9.3 1722
Veronika Kocher 9.6 1723 running=true;
Veronika Kocher 9.5 1724
Veronika Kocher 9.6 1725 try{
1726 resetRuntime();
1727 applyPlaceholderBadge();
1728 propagateDetailAccents();
Veronika Kocher 9.5 1729
Veronika Kocher 9.6 1730 var headers=
1731 applyOverviewPalette();
Veronika Kocher 9.5 1732
Veronika Kocher 9.7 1733 makeThreeLineAreaLabels();
1734 makeFilledRedOrangeCTAsBorderless();
1735
Veronika Kocher 9.6 1736 if(
1737 window.innerWidth>
1738 MOBILE_MAX
1739 ){
1740 alignOverviewCards(
1741 headers
1742 );
Veronika Kocher 9.3 1743
Veronika Kocher 9.6 1744 equaliseDetailGrids();
1745 }
Veronika Kocher 9.5 1746 }finally{
Veronika Kocher 9.6 1747 running=false;
Veronika Kocher 9.5 1748 }
Veronika Kocher 9.3 1749 }
1750
Veronika Kocher 9.6 1751 function onResize(){
Veronika Kocher 9.5 1752 if(resizeTimer){
1753 clearTimeout(
1754 resizeTimer
1755 );
1756 }
Veronika Kocher 9.4 1757
Veronika Kocher 9.5 1758 resizeTimer=
1759 setTimeout(
1760 function(){
1761 resizeTimer=0;
Veronika Kocher 9.6 1762 run();
Veronika Kocher 9.5 1763 },
1764 RESIZE_DEBOUNCE
1765 );
Veronika Kocher 9.3 1766 }
1767
Veronika Kocher 9.6 1768 async function waitForReady(){
1769 if(
1770 document.readyState!=="complete"
1771 ){
1772 await new Promise(function(resolve){
1773 window.addEventListener(
1774 "load",
1775 resolve,
1776 {once:true}
1777 );
1778 });
1779 }
1780
1781 if(
1782 document.fonts&&
1783 document.fonts.ready
1784 ){
1785 try{
1786 await document.fonts.ready;
1787 }catch(error){}
1788 }
1789
Veronika Kocher 9.5 1790 var images=
1791 Array.from(
1792 root.querySelectorAll("img")
1793 );
Veronika Kocher 9.3 1794
Veronika Kocher 9.6 1795 await Promise.all(
Veronika Kocher 9.5 1796 images.map(function(img){
1797 if(img.complete){
1798 return Promise.resolve();
1799 }
Veronika Kocher 9.3 1800
Veronika Kocher 9.5 1801 return new Promise(function(resolve){
1802 var done=function(){
1803 resolve();
1804 };
1805
1806 img.addEventListener(
1807 "load",
1808 done,
1809 {once:true}
1810 );
1811
1812 img.addEventListener(
1813 "error",
1814 done,
1815 {once:true}
1816 );
1817 });
1818 })
1819 );
1820
Veronika Kocher 9.6 1821 run();
Veronika Kocher 9.3 1822 }
1823
Veronika Kocher 9.6 1824 window.addEventListener(
Veronika Kocher 9.5 1825 "resize",
Veronika Kocher 9.6 1826 onResize,
Veronika Kocher 9.5 1827 {passive:true}
1828 );
1829
Veronika Kocher 9.6 1830 waitForReady();
Veronika Kocher 9.3 1831 })();
1832 </script>
Veronika Kocher 9.5 1833
Veronika Kocher 9.6 1834 <!-- SN_SERVICE_NAVIGATOR_MASTER_STYLE_END -->
1835 {{/html}}
1836