Version 9.8 by Veronika Kocher on Thursday, 03 Sep 2026 15:54

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 4.1 418 <!-- ARSN_SEARCH_TERMS_START -->
Veronika Kocher 6.1 419 <details style="margin-top:24px;padding-top:10px;border-top:1px solid #e3ded6">
420 <summary style="cursor:pointer;color:#6a655e;font-size:13px">Search terms &amp; related topics</summary>
421 <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 422 </details>
423 <!-- ARSN_SEARCH_TERMS_END -->
Veronika Kocher 6.1 424
425 </div>
Veronika Kocher 4.1 426 {{/html}}
Veronika Kocher 8.1 427
Veronika Kocher 9.6 428 {{html clean="false"}}
429 <!-- SN_SERVICE_NAVIGATOR_MASTER_STYLE_START -->
Veronika Kocher 9.5 430
Veronika Kocher 9.6 431 <style data-sn-service-navigator-master="1">
432 /* =========================================================
433 MASTER TYPOGRAPHY
434 ========================================================= */
Veronika Kocher 9.5 435 #xwikicontent h1,
436 #xwikicontent h2,
437 #xwikicontent h3,
438 #xwikicontent h4,
439 #xwikicontent h5,
440 #xwikicontent h6,
441 #xwikicontent .box-title,
442 #xwikicontent [role="heading"],
443 #xwikicontent h1 a,
444 #xwikicontent h2 a,
445 #xwikicontent h3 a,
446 #xwikicontent h4 a,
447 #xwikicontent h5 a,
448 #xwikicontent h6 a,
449 #xwikicontent .box-title a,
450 #xwikicontent [role="heading"] a{
451 text-align:left!important;
452 text-justify:auto!important;
453 word-spacing:normal!important;
454 }
455
Veronika Kocher 9.6 456 /* =========================================================
457 COMING SOON / IN VORBEREITUNG
458 ========================================================= */
459 .sn-coming-soon-badge{
460 display:inline-block;
461 vertical-align:middle;
462 margin-left:10px;
463 padding:4px 8px;
464 border-radius:14px;
465 border:1px solid #efd9cc;
466 background:#fff4ee;
467 color:#8a4d36;
468 font-size:11px;
469 font-weight:700;
470 letter-spacing:.055em;
471 line-height:1.2;
472 white-space:nowrap;
473 }
474
475 /* =========================================================
476 NATIVE / DETAIL CALLOUT GEOMETRY
477 Preserve existing backgrounds.
478 ========================================================= */
479 #xwikicontent .arsn-info,
480 #xwikicontent .dmp-info,
481 #xwikicontent .ido-info,
482 #xwikicontent .pp-info,
483 #xwikicontent .infomessage{
Veronika Kocher 9.5 484 box-sizing:border-box!important;
Veronika Kocher 9.6 485 border-left:4px solid #21b6d7!important;
486 border-radius:8px;
Veronika Kocher 9.5 487 text-align:left!important;
488 word-spacing:normal!important;
489 }
490
Veronika Kocher 9.6 491 #xwikicontent .arsn-warn,
492 #xwikicontent .dmp-warn,
493 #xwikicontent .ido-warn,
494 #xwikicontent .pp-warn,
495 #xwikicontent .warn,
496 #xwikicontent .warning,
497 #xwikicontent .warningmessage,
Veronika Kocher 9.5 498 #xwikicontent .errormessage{
Veronika Kocher 9.6 499 box-sizing:border-box!important;
500 border-left:4px solid #e94b13!important;
501 border-radius:8px;
502 text-align:left!important;
503 word-spacing:normal!important;
Veronika Kocher 9.5 504 }
505
Veronika Kocher 9.6 506 [data-sn-master-equal-height],
507 [data-sn-master-first-row]{
Veronika Kocher 9.4 508 box-sizing:border-box;
Veronika Kocher 9.3 509 }
Veronika Kocher 9.7 510
511 /* =========================================================
512 FULL-WIDTH THREE-LINE NUMBER / TITLE / SUBTITLE BLOCKS
513 ========================================================= */
514 #xwikicontent .arsn-area-label[data-sn-three-line="1"]{
515 display:grid!important;
516 grid-template-columns:minmax(0,1fr)!important;
517 grid-auto-rows:auto!important;
518 width:100%!important;
519 max-width:none!important;
520 box-sizing:border-box!important;
521 justify-items:start!important;
522 align-items:start!important;
523 gap:2px!important;
524 text-align:left!important;
525 text-align-last:left!important;
526 text-justify:auto!important;
527 word-spacing:normal!important;
528 white-space:normal!important;
529 }
530 #xwikicontent .arsn-area-label[data-sn-three-line="1"] > .arsn-area-number,
531 #xwikicontent .arsn-area-label[data-sn-three-line="1"] > .sn-area-label-title,
532 #xwikicontent .arsn-area-label[data-sn-three-line="1"] > .arsn-area-action{
533 display:block!important;
534 width:100%!important;
535 margin:0!important;
536 text-align:left!important;
537 text-align-last:left!important;
538 text-justify:auto!important;
539 word-spacing:normal!important;
540 white-space:normal!important;
541 }
Veronika Kocher 9.3 542 </style>
Veronika Kocher 9.5 543
Veronika Kocher 9.6 544 <script data-sn-service-navigator-master="1">
Veronika Kocher 9.3 545 (function(){
546 "use strict";
547
Veronika Kocher 9.6 548 var PAGE_KIND="detail";
549 var PLACEHOLDER=false;
550 var PLACEHOLDER_LABEL="COMING SOON";
551
Veronika Kocher 9.3 552 var MOBILE_MAX=767;
Veronika Kocher 9.4 553 var ROW_TOLERANCE=6;
Veronika Kocher 9.5 554 var RESIZE_DEBOUNCE=220;
Veronika Kocher 9.3 555
556 var root=
557 document.getElementById("xwikicontent")||
558 document.querySelector(".xwiki-rendering-content")||
559 document.querySelector("main")||
560 document.body;
561
562 if(!root)return;
563
Veronika Kocher 9.6 564 var managedHeight=new Set();
565 var managedMargin=new Set();
566 var originalHeight=new WeakMap();
567 var originalMargin=new WeakMap();
Veronika Kocher 9.5 568
569 var resizeTimer=0;
Veronika Kocher 9.6 570 var running=false;
Veronika Kocher 9.5 571
Veronika Kocher 9.6 572 var THEMES=[
573 {
574 name:"BLUE",
575 accent:"#21b6d7",
576 bg:"#eaf7fb",
577 text:"#315d68",
578 labels:[
579 "HIER STARTEN",
580 "ENTSCHEIDEN",
581 "ÜBERPRÜFEN & ANPASSEN",
582 "START HERE",
583 "DECIDE",
584 "REVIEW & ADAPT"
585 ]
586 },
587 {
588 name:"RED",
589 accent:"#e94b13",
590 bg:"#fff1ec",
591 text:"#8a4d36",
592 labels:[
593 "PLANEN & ORGANISIEREN",
594 "ORGANISIEREN & DOKUMENTIEREN",
595 "PUBLIZIEREN & PRÄSENTIEREN",
596 "PLAN & ORGANISE",
597 "PLAN & ORGANIZE",
598 "ORGANISE & DOCUMENT",
599 "ORGANIZE & DOCUMENT",
600 "PUBLISH & PRESENT"
601 ]
602 },
603 {
604 name:"YELLOW",
605 accent:"#f0aa00",
606 bg:"#fff8e7",
607 text:"#785b17",
608 labels:[
609 "SCHÜTZEN & KLÄREN",
610 "STANDARDISIEREN & IDENTIFIZIEREN",
611 "ÖFFNEN, NACHNUTZEN & AUFFINDBAR MACHEN",
612 "PROTECT & CLARIFY",
613 "STANDARDISE & IDENTIFY",
614 "STANDARDIZE & IDENTIFY",
615 "OPEN, REUSE & MAKE FINDABLE"
616 ]
617 },
618 {
619 name:"GREEN",
620 accent:"#38b76a",
621 bg:"#edf9f1",
622 text:"#3f7451",
623 labels:[
624 "INFRASTRUKTUR EINRICHTEN",
625 "INFRASTRUKTUR & ZUSAMMENARBEIT EINRICHTEN",
626 "SPEICHERN & ZUGRIFF STEUERN",
627 "REPOSITORIUM, ERHALTEN & ÜBERGEBEN",
628 "SET UP INFRASTRUCTURE",
629 "SET UP INFRASTRUCTURE & COLLABORATION",
630 "STORE & CONTROL ACCESS",
631 "REPOSITORY, PRESERVE & HAND OVER"
632 ]
Veronika Kocher 9.4 633 }
Veronika Kocher 9.6 634 ];
Veronika Kocher 9.4 635
Veronika Kocher 9.6 636 function num(value){
637 var n=parseFloat(value);
638 return Number.isFinite(n)?n:0;
Veronika Kocher 9.3 639 }
640
Veronika Kocher 9.6 641 function norm(value){
642 return String(value||"")
Veronika Kocher 9.5 643 .replace(/\s+/g," ")
644 .trim()
645 .toUpperCase();
646 }
647
Veronika Kocher 9.6 648 function visible(el){
649 if(!el||el.nodeType!==1)return false;
Veronika Kocher 9.3 650
Veronika Kocher 9.6 651 var style=getComputedStyle(el);
652 var rect=el.getBoundingClientRect();
Veronika Kocher 9.5 653
654 return (
Veronika Kocher 9.6 655 style.display!=="none"&&
656 style.visibility!=="hidden"&&
657 rect.width>20&&
658 rect.height>4
Veronika Kocher 9.5 659 );
Veronika Kocher 9.3 660 }
661
Veronika Kocher 9.6 662 function saveStyle(el,map,property){
Veronika Kocher 9.4 663 if(map.has(el))return;
664
665 map.set(el,{
Veronika Kocher 9.6 666 value:el.style.getPropertyValue(property),
667 priority:el.style.getPropertyPriority(property)
Veronika Kocher 9.4 668 });
669 }
670
Veronika Kocher 9.6 671 function restoreStyle(el,map,property){
Veronika Kocher 9.4 672 var original=map.get(el);
673
674 if(original&&original.value){
675 el.style.setProperty(
676 property,
677 original.value,
678 original.priority||""
679 );
680 }else{
Veronika Kocher 9.6 681 el.style.removeProperty(property);
Veronika Kocher 9.4 682 }
683 }
684
Veronika Kocher 9.5 685 function resetRuntime(){
Veronika Kocher 9.6 686 managedHeight.forEach(function(el){
687 restoreStyle(
Veronika Kocher 9.4 688 el,
Veronika Kocher 9.6 689 originalHeight,
Veronika Kocher 9.4 690 "min-height"
691 );
692 el.removeAttribute(
Veronika Kocher 9.6 693 "data-sn-master-equal-height"
Veronika Kocher 9.4 694 );
695 });
696
Veronika Kocher 9.6 697 managedMargin.forEach(function(el){
698 restoreStyle(
Veronika Kocher 9.4 699 el,
Veronika Kocher 9.6 700 originalMargin,
Veronika Kocher 9.4 701 "margin-top"
702 );
703 el.removeAttribute(
Veronika Kocher 9.6 704 "data-sn-master-first-row"
Veronika Kocher 9.4 705 );
706 });
707
Veronika Kocher 9.6 708 managedHeight.clear();
709 managedMargin.clear();
710 }
Veronika Kocher 9.5 711
Veronika Kocher 9.6 712 function themeFor(text){
713 var value=norm(text);
Veronika Kocher 9.5 714
Veronika Kocher 9.6 715 for(var i=0;i<THEMES.length;i++){
716 for(var j=0;j<THEMES[i].labels.length;j++){
717 var label=THEMES[i].labels[j];
718
719 if(
720 value===label||
721 value.indexOf(label+" ")===0||
722 value.indexOf(label+" -")===0||
723 value.indexOf(label+" ·")===0
724 ){
725 return THEMES[i];
726 }
727 }
728 }
729
730 return null;
Veronika Kocher 9.4 731 }
732
Veronika Kocher 9.6 733 /* =======================================================
Veronika Kocher 9.7 734 BORDERLESS FILLED RED/ORANGE CTA BUTTONS
735 ======================================================= */
736
737 function colourDistance(a,b){
738 return Math.sqrt(
739 Math.pow(a[0]-b[0],2)+
740 Math.pow(a[1]-b[1],2)+
741 Math.pow(a[2]-b[2],2)
742 );
743 }
744
745 function makeFilledRedOrangeCTAsBorderless(){
746 var RED_ORANGE=[233,75,19];
747
748 Array.from(
749 root.querySelectorAll(
750 'a,button,[role="button"],input[type="submit"],input[type="button"]'
751 )
752 ).forEach(function(el){
753 if(!visible(el))return;
754
755 var style=getComputedStyle(el);
756 var rgb=parseRGB(style.backgroundColor);
757
758 if(!rgb)return;
759
760 if(
761 colourDistance(
762 rgb,
763 RED_ORANGE
764 )>55
765 ){
766 return;
767 }
768
769 var rect=el.getBoundingClientRect();
770
771 if(
772 rect.width<80||
773 rect.height<24
774 ){
775 return;
776 }
777
778 el.style.setProperty(
779 "border",
780 "none",
781 "important"
782 );
783
784 el.style.setProperty(
785 "border-left",
786 "none",
787 "important"
788 );
789
790 el.style.setProperty(
791 "border-top",
792 "none",
793 "important"
794 );
795
796 el.style.setProperty(
797 "border-right",
798 "none",
799 "important"
800 );
801
802 el.style.setProperty(
803 "border-bottom",
804 "none",
805 "important"
806 );
807
808 el.style.setProperty(
809 "box-shadow",
810 "none",
811 "important"
812 );
813 });
814 }
815
816 /* =======================================================
817 FULL-WIDTH THREE-LINE AREA LABELS
818 ======================================================= */
819
820 function compactText(value){
821 return String(value||"")
822 .replace(/\s+/g," ")
823 .trim();
824 }
825
826 function makeThreeLineAreaLabels(){
827 Array.from(
828 root.querySelectorAll(
829 ".arsn-area-label"
830 )
831 ).forEach(function(label){
832 if(
833 label.getAttribute(
834 "data-sn-three-line"
835 )==="1"
836 ){
837 return;
838 }
839
840 var number=
841 label.querySelector(
842 ":scope > .arsn-area-number"
843 );
844
845 var action=
846 label.querySelector(
847 ":scope > .arsn-area-action"
848 );
849
850 if(
851 !number||
852 !action
853 ){
854 return;
855 }
856
857 var clone=
858 label.cloneNode(true);
859
860 var cloneNumber=
861 clone.querySelector(
862 ":scope > .arsn-area-number"
863 );
864
865 var cloneAction=
866 clone.querySelector(
867 ":scope > .arsn-area-action"
868 );
869
870 if(cloneNumber){
871 cloneNumber.remove();
872 }
873
874 if(cloneAction){
875 cloneAction.remove();
876 }
877
878 var titleText=
879 compactText(
880 clone.textContent
881 );
882
883 if(!titleText){
884 return;
885 }
886
887 var numberNode=
888 number.cloneNode(true);
889
890 var actionNode=
891 action.cloneNode(true);
892
893 var titleNode=
894 document.createElement(
895 "span"
896 );
897
898 titleNode.className=
899 "sn-area-label-title";
900
901 titleNode.textContent=
902 titleText;
903
904 while(label.firstChild){
905 label.removeChild(
906 label.firstChild
907 );
908 }
909
910 label.appendChild(
911 numberNode
912 );
913
914 label.appendChild(
915 titleNode
916 );
917
918 label.appendChild(
919 actionNode
920 );
921
922 label.setAttribute(
923 "data-sn-three-line",
924 "1"
925 );
926
927 var head=
928 label.closest(
929 ".arsn-area-head"
930 );
931
932 if(head){
933 head.style.setProperty(
934 "width",
935 "100%",
936 "important"
937 );
938
939 head.style.setProperty(
940 "max-width",
941 "100%",
942 "important"
943 );
944
945 head.style.setProperty(
946 "box-sizing",
947 "border-box",
948 "important"
949 );
950 }
951 });
952 }
953
954 /* =======================================================
Veronika Kocher 9.6 955 PLACEHOLDER BADGE
956 ======================================================= */
Veronika Kocher 9.5 957
Veronika Kocher 9.6 958 function applyPlaceholderBadge(){
959 if(!PLACEHOLDER)return;
Veronika Kocher 9.5 960
961 if(
Veronika Kocher 9.6 962 document.querySelector(
963 ".sn-coming-soon-badge"
964 )
Veronika Kocher 9.5 965 ){
Veronika Kocher 9.6 966 return;
Veronika Kocher 9.5 967 }
968
Veronika Kocher 9.6 969 var title=
970 document.querySelector(
971 "#document-title"
972 )||
973 document.querySelector(
974 "h1"
975 );
Veronika Kocher 9.5 976
Veronika Kocher 9.6 977 if(!title)return;
Veronika Kocher 9.5 978
Veronika Kocher 9.6 979 var badge=
980 document.createElement(
981 "span"
982 );
983
984 badge.className=
985 "sn-coming-soon-badge";
986
987 badge.textContent=
988 PLACEHOLDER_LABEL;
989
990 badge.setAttribute(
991 "aria-label",
992 PLACEHOLDER_LABEL
Veronika Kocher 9.5 993 );
994
Veronika Kocher 9.6 995 title.appendChild(
996 badge
997 );
998 }
Veronika Kocher 9.5 999
Veronika Kocher 9.6 1000 /* =======================================================
1001 DETAIL PAGE OWN-ACCENT PROPAGATION
1002 ======================================================= */
Veronika Kocher 9.5 1003
Veronika Kocher 9.6 1004 function parseRGB(value){
1005 var match=String(value||"").match(
1006 /rgba?\(\s*([\d.]+)\s*,\s*([\d.]+)\s*,\s*([\d.]+)/i
Veronika Kocher 9.5 1007 );
Veronika Kocher 9.6 1008
1009 if(!match)return null;
1010
1011 return [
1012 Number(match[1]),
1013 Number(match[2]),
1014 Number(match[3])
1015 ];
Veronika Kocher 9.5 1016 }
1017
Veronika Kocher 9.6 1018 function distance(a,b){
1019 return Math.sqrt(
1020 Math.pow(a[0]-b[0],2)+
1021 Math.pow(a[1]-b[1],2)+
1022 Math.pow(a[2]-b[2],2)
1023 );
1024 }
Veronika Kocher 9.3 1025
Veronika Kocher 9.6 1026 function paletteMatch(cssColor){
1027 var rgb=parseRGB(cssColor);
Veronika Kocher 9.4 1028
Veronika Kocher 9.6 1029 if(!rgb)return null;
Veronika Kocher 9.4 1030
Veronika Kocher 9.6 1031 var palette=[
1032 {hex:"#21b6d7",rgb:[33,182,215]},
1033 {hex:"#e94b13",rgb:[233,75,19]},
1034 {hex:"#f0aa00",rgb:[240,170,0]},
1035 {hex:"#38b76a",rgb:[56,183,106]}
1036 ];
Veronika Kocher 9.3 1037
Veronika Kocher 9.4 1038 var best=null;
Veronika Kocher 9.6 1039 var bestDistance=Infinity;
Veronika Kocher 9.3 1040
Veronika Kocher 9.6 1041 palette.forEach(function(item){
1042 var d=distance(rgb,item.rgb);
Veronika Kocher 9.3 1043
Veronika Kocher 9.6 1044 if(d<bestDistance){
1045 best=item;
1046 bestDistance=d;
1047 }
1048 });
Veronika Kocher 9.4 1049
Veronika Kocher 9.6 1050 return bestDistance<=30
1051 ?best
1052 :null;
1053 }
Veronika Kocher 9.3 1054
Veronika Kocher 9.6 1055 function propagateDetailAccents(){
1056 if(PAGE_KIND!=="detail")return;
1057
1058 Array.from(
1059 root.querySelectorAll(
1060 ".arsn-call,.dmp-call,.ido-call,.pp-call,"+
1061 ".arsn-source,.dmp-source,.ido-source,.pp-source"
1062 )
1063 ).forEach(function(el){
1064 if(!visible(el))return;
1065
1066 var style=getComputedStyle(el);
1067
Veronika Kocher 9.4 1068 if(
Veronika Kocher 9.6 1069 num(style.borderTopWidth)>=2
Veronika Kocher 9.4 1070 ){
Veronika Kocher 9.6 1071 var match=
1072 paletteMatch(
1073 style.borderTopColor
Veronika Kocher 9.4 1074 );
1075
Veronika Kocher 9.6 1076 if(match){
1077 el.style.setProperty(
1078 "border-left",
1079 "4px solid "+match.hex,
1080 "important"
Veronika Kocher 9.4 1081 );
Veronika Kocher 9.3 1082 }
1083 }
Veronika Kocher 9.6 1084 });
Veronika Kocher 9.3 1085
Veronika Kocher 9.6 1086 // Warning families: explicit safety override.
1087 Array.from(
1088 root.querySelectorAll(
1089 ".arsn-warn,.dmp-warn,.ido-warn,.pp-warn,"+
1090 ".warn,.warning,.warningmessage,.errormessage"
1091 )
1092 ).forEach(function(el){
1093 if(!visible(el))return;
Veronika Kocher 9.3 1094
Veronika Kocher 9.6 1095 el.style.setProperty(
1096 "border-left",
1097 "4px solid #e94b13",
1098 "important"
1099 );
1100 });
Veronika Kocher 9.3 1101
Veronika Kocher 9.6 1102 // Info families: explicit orientation override.
1103 Array.from(
1104 root.querySelectorAll(
1105 ".arsn-info,.dmp-info,.ido-info,.pp-info,.infomessage"
1106 )
1107 ).forEach(function(el){
1108 if(!visible(el))return;
Veronika Kocher 9.4 1109
Veronika Kocher 9.6 1110 el.style.setProperty(
1111 "border-left",
1112 "4px solid #21b6d7",
1113 "important"
1114 );
1115 });
1116 }
Veronika Kocher 9.4 1117
Veronika Kocher 9.6 1118 /* =======================================================
1119 OVERVIEW SEMANTIC THEME PALETTE
1120 ======================================================= */
Veronika Kocher 9.4 1121
Veronika Kocher 9.6 1122 function smallestThemeHeaders(){
1123 return Array.from(
1124 root.querySelectorAll(
1125 "div,span,p,strong,h3,h4,h5,h6"
1126 )
1127 ).filter(function(el){
1128 if(!visible(el))return false;
1129 if(!themeFor(el.textContent))return false;
Veronika Kocher 9.4 1130
Veronika Kocher 9.6 1131 return !Array.from(
1132 el.children||[]
1133 ).some(function(child){
1134 return !!themeFor(
1135 child.textContent
1136 );
Veronika Kocher 9.4 1137 });
Veronika Kocher 9.6 1138 });
Veronika Kocher 9.3 1139 }
1140
Veronika Kocher 9.6 1141 function findOverviewCard(header){
1142 var node=header.parentElement;
1143 var candidates=[];
Veronika Kocher 9.4 1144
Veronika Kocher 9.6 1145 while(node&&node!==root){
1146 var rect=node.getBoundingClientRect();
1147 var style=getComputedStyle(node);
Veronika Kocher 9.4 1148
Veronika Kocher 9.6 1149 var border=
1150 num(style.borderTopWidth)+
1151 num(style.borderRightWidth)+
1152 num(style.borderBottomWidth)+
1153 num(style.borderLeftWidth);
Veronika Kocher 9.4 1154
Veronika Kocher 9.6 1155 if(
1156 rect.width>=220&&
1157 rect.width<=800&&
1158 rect.height>=120&&
1159 border>=1
1160 ){
1161 candidates.push(node);
1162 }
Veronika Kocher 9.4 1163
Veronika Kocher 9.6 1164 node=node.parentElement;
1165 }
Veronika Kocher 9.4 1166
Veronika Kocher 9.6 1167 if(!candidates.length)return null;
Veronika Kocher 9.4 1168
Veronika Kocher 9.6 1169 candidates.sort(function(a,b){
1170 return (
1171 b.getBoundingClientRect().height-
1172 a.getBoundingClientRect().height
Veronika Kocher 9.5 1173 );
Veronika Kocher 9.6 1174 });
Veronika Kocher 9.4 1175
Veronika Kocher 9.6 1176 return candidates[0];
Veronika Kocher 9.4 1177 }
1178
Veronika Kocher 9.6 1179 function rowCandidates(link,card){
1180 var result=[];
Veronika Kocher 9.5 1181 var cardRect=
1182 card.getBoundingClientRect();
Veronika Kocher 9.4 1183
Veronika Kocher 9.6 1184 var node=link;
Veronika Kocher 9.4 1185
Veronika Kocher 9.6 1186 while(node&&node!==card){
1187 if(visible(node)){
1188 var rect=
1189 node.getBoundingClientRect();
Veronika Kocher 9.4 1190
Veronika Kocher 9.6 1191 if(
1192 rect.height<=105&&
1193 rect.width>=
1194 cardRect.width*.50&&
1195 rect.width<=
1196 cardRect.width*1.03
1197 ){
1198 result.push(node);
1199 }
1200 }
Veronika Kocher 9.4 1201
Veronika Kocher 9.6 1202 node=node.parentElement;
1203 }
1204
1205 return result;
1206 }
1207
1208 function chooseOuterRow(
1209 candidates,
1210 link
1211 ){
1212 if(!candidates.length){
1213 return link;
1214 }
1215
1216 var bordered=
1217 candidates.filter(function(el){
Veronika Kocher 9.5 1218 return (
Veronika Kocher 9.6 1219 num(
1220 getComputedStyle(el)
1221 .borderLeftWidth
1222 )>=1
Veronika Kocher 9.5 1223 );
1224 });
Veronika Kocher 9.4 1225
Veronika Kocher 9.6 1226 var pool=
1227 bordered.length
1228 ?bordered
1229 :candidates;
Veronika Kocher 9.4 1230
Veronika Kocher 9.6 1231 pool.sort(function(a,b){
1232 var ar=
1233 a.getBoundingClientRect();
Veronika Kocher 9.4 1234
Veronika Kocher 9.6 1235 var br=
1236 b.getBoundingClientRect();
Veronika Kocher 9.4 1237
Veronika Kocher 9.6 1238 return (
1239 ar.left-br.left||
1240 br.width-ar.width
1241 );
1242 });
Veronika Kocher 9.4 1243
Veronika Kocher 9.6 1244 return pool[0]||link;
1245 }
Veronika Kocher 9.4 1246
Veronika Kocher 9.6 1247 function applyOverviewPalette(){
1248 if(PAGE_KIND!=="overview"){
1249 return [];
Veronika Kocher 9.5 1250 }
Veronika Kocher 9.4 1251
Veronika Kocher 9.6 1252 var headers=
1253 smallestThemeHeaders()
1254 .map(function(el){
1255 return {
1256 el:el,
1257 theme:
1258 themeFor(
1259 el.textContent
1260 ),
1261 card:
1262 findOverviewCard(
1263 el
1264 )
1265 };
Veronika Kocher 9.5 1266 })
Veronika Kocher 9.6 1267 .filter(function(row){
1268 return !!row.card;
1269 });
Veronika Kocher 9.4 1270
Veronika Kocher 9.6 1271 var unique=[];
1272 var seenHeaders=new Set();
Veronika Kocher 9.4 1273
Veronika Kocher 9.6 1274 headers.forEach(function(row){
1275 var key=
1276 row.theme.name+
1277 "|"+
1278 Math.round(
1279 row.card
1280 .getBoundingClientRect()
1281 .left
1282 )+
1283 "|"+
1284 Math.round(
1285 row.el
1286 .getBoundingClientRect()
1287 .top
1288 );
Veronika Kocher 9.4 1289
Veronika Kocher 9.6 1290 if(!seenHeaders.has(key)){
1291 seenHeaders.add(key);
1292 unique.push(row);
1293 }
1294 });
Veronika Kocher 9.4 1295
Veronika Kocher 9.6 1296 unique.forEach(function(row){
1297 var headerRect=
1298 row.el
1299 .getBoundingClientRect();
Veronika Kocher 9.4 1300
Veronika Kocher 9.6 1301 row.el.style.setProperty(
1302 "background",
1303 row.theme.bg,
1304 "important"
Veronika Kocher 9.5 1305 );
1306
Veronika Kocher 9.6 1307 row.el.style.setProperty(
1308 "color",
1309 row.theme.text,
1310 "important"
Veronika Kocher 9.5 1311 );
1312
Veronika Kocher 9.6 1313 row.el.style.setProperty(
1314 "text-align",
1315 "left",
1316 "important"
Veronika Kocher 9.5 1317 );
Veronika Kocher 9.4 1318
Veronika Kocher 9.6 1319 row.el.style.setProperty(
1320 "word-spacing",
1321 "normal",
1322 "important"
1323 );
Veronika Kocher 9.5 1324
Veronika Kocher 9.6 1325 var later=
1326 unique
1327 .filter(function(other){
1328 return (
1329 other.card===row.card&&
1330 other.el
1331 .getBoundingClientRect()
1332 .top>
1333 headerRect.top+2
1334 );
1335 })
1336 .sort(function(a,b){
1337 return (
1338 a.el
1339 .getBoundingClientRect()
1340 .top-
1341 b.el
1342 .getBoundingClientRect()
1343 .top
1344 );
1345 });
Veronika Kocher 9.5 1346
Veronika Kocher 9.6 1347 var stopTop=
1348 later.length
1349 ?later[0].el
1350 .getBoundingClientRect()
1351 .top
1352 :Infinity;
Veronika Kocher 9.5 1353
1354 Array.from(
Veronika Kocher 9.6 1355 row.card.querySelectorAll("a")
1356 ).forEach(function(link){
1357 if(!visible(link))return;
Veronika Kocher 9.5 1358
Veronika Kocher 9.6 1359 var rect=
1360 link.getBoundingClientRect();
Veronika Kocher 9.5 1361
Veronika Kocher 9.6 1362 if(
1363 rect.top<=
1364 headerRect.bottom-2||
1365 rect.top>=
1366 stopTop-2
1367 ){
1368 return;
1369 }
Veronika Kocher 9.5 1370
Veronika Kocher 9.6 1371 var candidates=
1372 rowCandidates(
1373 link,
1374 row.card
1375 );
1376
1377 var target=
1378 chooseOuterRow(
1379 candidates,
1380 link
1381 );
1382
1383 candidates.forEach(function(el){
1384 el.style.setProperty(
1385 "border-left",
1386 "0 solid transparent",
1387 "important"
1388 );
1389 });
1390
1391 target.style.setProperty(
1392 "border-left",
1393 "3px solid "+
1394 row.theme.accent,
1395 "important"
Veronika Kocher 9.5 1396 );
Veronika Kocher 9.6 1397
1398 target.style.setProperty(
1399 "box-sizing",
1400 "border-box",
1401 "important"
Veronika Kocher 9.5 1402 );
Veronika Kocher 9.4 1403 });
Veronika Kocher 9.6 1404 });
Veronika Kocher 9.4 1405
Veronika Kocher 9.6 1406 return unique;
Veronika Kocher 9.5 1407 }
Veronika Kocher 9.4 1408
Veronika Kocher 9.6 1409 /* =======================================================
1410 OVERVIEW CARD HEIGHT + FIRST THEMATIC ROW
1411 ======================================================= */
Veronika Kocher 9.5 1412
Veronika Kocher 9.6 1413 function alignOverviewCards(headers){
1414 if(
1415 PAGE_KIND!=="overview"||
1416 window.innerWidth<=MOBILE_MAX
1417 ){
1418 return;
1419 }
Veronika Kocher 9.5 1420
Veronika Kocher 9.6 1421 var cards=[];
1422 var seen=new Set();
Veronika Kocher 9.5 1423
Veronika Kocher 9.6 1424 headers.forEach(function(row){
1425 if(!seen.has(row.card)){
1426 seen.add(row.card);
1427 cards.push(row.card);
1428 }
1429 });
Veronika Kocher 9.5 1430
Veronika Kocher 9.6 1431 if(cards.length<2){
1432 return;
1433 }
Veronika Kocher 9.5 1434
Veronika Kocher 9.6 1435 // Group cards by actual top position.
1436 var groups=[];
Veronika Kocher 9.5 1437
Veronika Kocher 9.6 1438 cards.forEach(function(card){
1439 var top=
1440 card.getBoundingClientRect().top;
Veronika Kocher 9.5 1441
Veronika Kocher 9.6 1442 var group=null;
Veronika Kocher 9.5 1443
Veronika Kocher 9.6 1444 for(var i=0;i<groups.length;i++){
Veronika Kocher 9.5 1445 if(
Veronika Kocher 9.6 1446 Math.abs(
1447 groups[i].top-top
1448 )<=ROW_TOLERANCE
Veronika Kocher 9.5 1449 ){
Veronika Kocher 9.6 1450 group=groups[i];
1451 break;
Veronika Kocher 9.5 1452 }
Veronika Kocher 9.6 1453 }
Veronika Kocher 9.5 1454
Veronika Kocher 9.6 1455 if(!group){
1456 group={
1457 top:top,
1458 cards:[]
1459 };
1460 groups.push(group);
1461 }
Veronika Kocher 9.5 1462
Veronika Kocher 9.6 1463 group.cards.push(card);
1464 });
Veronika Kocher 9.5 1465
Veronika Kocher 9.6 1466 groups.forEach(function(group){
1467 if(group.cards.length<2){
1468 return;
1469 }
Veronika Kocher 9.5 1470
Veronika Kocher 9.6 1471 var firstHeaders=
1472 group.cards.map(function(card){
1473 var candidates=
1474 headers
1475 .filter(function(row){
1476 return row.card===card;
1477 })
1478 .sort(function(a,b){
1479 return (
1480 a.el
1481 .getBoundingClientRect()
1482 .top-
1483 b.el
1484 .getBoundingClientRect()
1485 .top
1486 );
1487 });
Veronika Kocher 9.5 1488
Veronika Kocher 9.6 1489 return candidates.length
1490 ?candidates[0]
1491 :null;
1492 });
Veronika Kocher 9.5 1493
Veronika Kocher 9.6 1494 if(
1495 !firstHeaders.some(function(row){
1496 return !row;
1497 })
1498 ){
1499 var targetTop=
1500 Math.max.apply(
1501 Math,
1502 firstHeaders.map(function(row){
1503 return (
1504 row.el
1505 .getBoundingClientRect()
1506 .top-
1507 row.card
1508 .getBoundingClientRect()
1509 .top
1510 );
1511 })
1512 );
Veronika Kocher 9.3 1513
Veronika Kocher 9.6 1514 firstHeaders.forEach(function(row){
1515 var relativeTop=
1516 row.el
1517 .getBoundingClientRect()
1518 .top-
1519 row.card
1520 .getBoundingClientRect()
1521 .top;
Veronika Kocher 9.4 1522
Veronika Kocher 9.6 1523 var delta=
1524 targetTop-relativeTop;
Veronika Kocher 9.4 1525
Veronika Kocher 9.6 1526 if(delta>1){
1527 saveStyle(
1528 row.el,
1529 originalMargin,
1530 "margin-top"
1531 );
Veronika Kocher 9.5 1532
Veronika Kocher 9.6 1533 var current=
1534 num(
1535 getComputedStyle(
1536 row.el
1537 ).marginTop
1538 );
Veronika Kocher 9.4 1539
Veronika Kocher 9.6 1540 row.el.style.setProperty(
1541 "margin-top",
1542 (
1543 current+delta
1544 )+"px"
1545 );
Veronika Kocher 9.4 1546
Veronika Kocher 9.6 1547 row.el.setAttribute(
1548 "data-sn-master-first-row",
1549 "1"
1550 );
Veronika Kocher 9.4 1551
Veronika Kocher 9.6 1552 managedMargin.add(
1553 row.el
1554 );
1555 }
1556 });
1557 }
Veronika Kocher 9.4 1558
Veronika Kocher 9.6 1559 var maxHeight=0;
Veronika Kocher 9.4 1560
Veronika Kocher 9.6 1561 group.cards.forEach(function(card){
1562 maxHeight=
1563 Math.max(
1564 maxHeight,
1565 card
1566 .getBoundingClientRect()
1567 .height
1568 );
1569 });
Veronika Kocher 9.4 1570
Veronika Kocher 9.6 1571 maxHeight=
1572 Math.ceil(maxHeight);
Veronika Kocher 9.4 1573
Veronika Kocher 9.6 1574 group.cards.forEach(function(card){
1575 saveStyle(
1576 card,
1577 originalHeight,
1578 "min-height"
1579 );
Veronika Kocher 9.4 1580
Veronika Kocher 9.6 1581 card.style.setProperty(
1582 "min-height",
1583 maxHeight+"px"
Veronika Kocher 9.4 1584 );
1585
Veronika Kocher 9.6 1586 card.setAttribute(
1587 "data-sn-master-equal-height",
1588 "1"
1589 );
Veronika Kocher 9.4 1590
Veronika Kocher 9.6 1591 managedHeight.add(
1592 card
1593 );
1594 });
Veronika Kocher 9.4 1595 });
1596 }
1597
Veronika Kocher 9.6 1598 /* =======================================================
1599 DETAIL GRID EQUAL HEIGHT, DESKTOP ONLY
1600 ======================================================= */
Veronika Kocher 9.4 1601
Veronika Kocher 9.6 1602 function equaliseDetailGrids(){
Veronika Kocher 9.5 1603 if(
Veronika Kocher 9.6 1604 PAGE_KIND!=="detail"||
1605 window.innerWidth<=MOBILE_MAX
Veronika Kocher 9.5 1606 ){
Veronika Kocher 9.6 1607 return;
Veronika Kocher 9.5 1608 }
Veronika Kocher 9.4 1609
Veronika Kocher 9.6 1610 var selectors=[
1611 ".arsn-grid",
1612 ".arsn-grid-2",
1613 ".arsn-grid-3",
1614 ".dmp-grid",
1615 ".ido-grid",
1616 ".pp-grid"
1617 ];
Veronika Kocher 9.4 1618
Veronika Kocher 9.6 1619 selectors.forEach(function(selector){
1620 Array.from(
1621 root.querySelectorAll(selector)
1622 ).forEach(function(grid){
1623 var children=
1624 Array.from(
1625 grid.children||[]
1626 ).filter(visible);
Veronika Kocher 9.4 1627
Veronika Kocher 9.6 1628 if(children.length<2){
1629 return;
1630 }
Veronika Kocher 9.4 1631
Veronika Kocher 9.6 1632 var groups=[];
Veronika Kocher 9.4 1633
Veronika Kocher 9.6 1634 children.forEach(function(child){
1635 var top=
1636 child
1637 .getBoundingClientRect()
1638 .top;
Veronika Kocher 9.4 1639
Veronika Kocher 9.6 1640 var group=null;
Veronika Kocher 9.4 1641
Veronika Kocher 9.6 1642 for(var i=0;i<groups.length;i++){
1643 if(
1644 Math.abs(
1645 groups[i].top-top
1646 )<=ROW_TOLERANCE
1647 ){
1648 group=groups[i];
1649 break;
1650 }
1651 }
Veronika Kocher 9.4 1652
Veronika Kocher 9.6 1653 if(!group){
1654 group={
1655 top:top,
1656 items:[]
1657 };
1658 groups.push(group);
1659 }
Veronika Kocher 9.4 1660
Veronika Kocher 9.6 1661 group.items.push(child);
1662 });
Veronika Kocher 9.4 1663
Veronika Kocher 9.6 1664 groups.forEach(function(group){
1665 if(group.items.length<2){
1666 return;
1667 }
Veronika Kocher 9.3 1668
Veronika Kocher 9.6 1669 var maxHeight=0;
Veronika Kocher 9.5 1670
Veronika Kocher 9.6 1671 group.items.forEach(function(item){
1672 maxHeight=
1673 Math.max(
1674 maxHeight,
1675 item
1676 .getBoundingClientRect()
1677 .height
1678 );
1679 });
Veronika Kocher 9.5 1680
Veronika Kocher 9.6 1681 maxHeight=
1682 Math.ceil(maxHeight);
Veronika Kocher 9.3 1683
Veronika Kocher 9.6 1684 group.items.forEach(function(item){
1685 saveStyle(
1686 item,
1687 originalHeight,
1688 "min-height"
1689 );
Veronika Kocher 9.3 1690
Veronika Kocher 9.6 1691 item.style.setProperty(
1692 "min-height",
1693 maxHeight+"px"
1694 );
Veronika Kocher 9.4 1695
Veronika Kocher 9.6 1696 item.setAttribute(
1697 "data-sn-master-equal-height",
1698 "1"
1699 );
Veronika Kocher 9.3 1700
Veronika Kocher 9.6 1701 managedHeight.add(item);
1702 });
Veronika Kocher 9.3 1703 });
Veronika Kocher 9.6 1704 });
1705 });
1706 }
Veronika Kocher 9.3 1707
Veronika Kocher 9.6 1708 /* =======================================================
1709 RUN / RESPONSIVE SCHEDULING
1710 ======================================================= */
Veronika Kocher 9.3 1711
Veronika Kocher 9.6 1712 function run(){
1713 if(running)return;
Veronika Kocher 9.3 1714
Veronika Kocher 9.6 1715 running=true;
Veronika Kocher 9.5 1716
Veronika Kocher 9.6 1717 try{
1718 resetRuntime();
1719 applyPlaceholderBadge();
1720 propagateDetailAccents();
Veronika Kocher 9.5 1721
Veronika Kocher 9.6 1722 var headers=
1723 applyOverviewPalette();
Veronika Kocher 9.5 1724
Veronika Kocher 9.7 1725 makeThreeLineAreaLabels();
1726 makeFilledRedOrangeCTAsBorderless();
1727
Veronika Kocher 9.6 1728 if(
1729 window.innerWidth>
1730 MOBILE_MAX
1731 ){
1732 alignOverviewCards(
1733 headers
1734 );
Veronika Kocher 9.3 1735
Veronika Kocher 9.6 1736 equaliseDetailGrids();
1737 }
Veronika Kocher 9.5 1738 }finally{
Veronika Kocher 9.6 1739 running=false;
Veronika Kocher 9.5 1740 }
Veronika Kocher 9.3 1741 }
1742
Veronika Kocher 9.6 1743 function onResize(){
Veronika Kocher 9.5 1744 if(resizeTimer){
1745 clearTimeout(
1746 resizeTimer
1747 );
1748 }
Veronika Kocher 9.4 1749
Veronika Kocher 9.5 1750 resizeTimer=
1751 setTimeout(
1752 function(){
1753 resizeTimer=0;
Veronika Kocher 9.6 1754 run();
Veronika Kocher 9.5 1755 },
1756 RESIZE_DEBOUNCE
1757 );
Veronika Kocher 9.3 1758 }
1759
Veronika Kocher 9.6 1760 async function waitForReady(){
1761 if(
1762 document.readyState!=="complete"
1763 ){
1764 await new Promise(function(resolve){
1765 window.addEventListener(
1766 "load",
1767 resolve,
1768 {once:true}
1769 );
1770 });
1771 }
1772
1773 if(
1774 document.fonts&&
1775 document.fonts.ready
1776 ){
1777 try{
1778 await document.fonts.ready;
1779 }catch(error){}
1780 }
1781
Veronika Kocher 9.5 1782 var images=
1783 Array.from(
1784 root.querySelectorAll("img")
1785 );
Veronika Kocher 9.3 1786
Veronika Kocher 9.6 1787 await Promise.all(
Veronika Kocher 9.5 1788 images.map(function(img){
1789 if(img.complete){
1790 return Promise.resolve();
1791 }
Veronika Kocher 9.3 1792
Veronika Kocher 9.5 1793 return new Promise(function(resolve){
1794 var done=function(){
1795 resolve();
1796 };
1797
1798 img.addEventListener(
1799 "load",
1800 done,
1801 {once:true}
1802 );
1803
1804 img.addEventListener(
1805 "error",
1806 done,
1807 {once:true}
1808 );
1809 });
1810 })
1811 );
1812
Veronika Kocher 9.6 1813 run();
Veronika Kocher 9.3 1814 }
1815
Veronika Kocher 9.6 1816 window.addEventListener(
Veronika Kocher 9.5 1817 "resize",
Veronika Kocher 9.6 1818 onResize,
Veronika Kocher 9.5 1819 {passive:true}
1820 );
1821
Veronika Kocher 9.6 1822 waitForReady();
Veronika Kocher 9.3 1823 })();
1824 </script>
Veronika Kocher 9.5 1825
Veronika Kocher 9.6 1826 <!-- SN_SERVICE_NAVIGATOR_MASTER_STYLE_END -->
1827 {{/html}}
1828