Last modified by Veronika Kocher on Friday, 04 Sep 2026 14:45

Hide last authors
Veronika Kocher 5.7 1 {{html clean="false"}}
2 <style>
3 .ido{max-width:1400px;margin:0 auto;color:#322f2b}.ido *{box-sizing:border-box}
4 .ido-card{border:1px solid #e3ded6;border-radius:11px;background:#fcfbf8;box-shadow:0 1px 3px rgba(0,0,0,.035)}
5 .ido-eye{font-size:12px;font-weight:700;letter-spacing:.075em;text-transform:uppercase}
6 .ido-hero{height:125px;overflow:hidden;background:#f1eee9}.ido-hero img{width:100%;height:100%;object-fit:cover;object-position:center 48%;display:block}
7 .ido-sec{margin:0 0 30px}.ido-sec h3{font-size:22px;margin:0 0 7px;color:#35312d}.ido-sec>p{color:#6a655e;line-height:1.58;max-width:1180px}
8 .ido-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(270px,1fr));gap:14px}
9 .ido-type{padding:15px 16px;border:1px solid #e3ded6;border-radius:9px;background:#fcfbf8}.ido-type h4{font-size:17px;margin:0 0 6px;color:#35312d}.ido-type p{margin:0;color:#625d56;line-height:1.5}.ido-type ul{margin:8px 0 0 19px;padding:0;color:#625d56;line-height:1.5}
10 .ido-check{position:relative;padding:12px 13px 12px 37px;border:1px solid #e3ded6;border-radius:8px;background:#fffdf9;color:#504a44;line-height:1.5}.ido-check:before{content:"✓";position:absolute;left:13px;top:10px;color:#e94b13;font-weight:800}
11 .ido-info{padding:15px 17px;border:1px solid #c7e5ed;border-left:5px solid #21b6d7;background:#eaf6f9;border-radius:8px;color:#365e68;line-height:1.55}.ido-info strong{color:#2d5661}
12 .ido-warn{padding:15px 17px;border:1px solid #efd9cc;border-left:5px solid #e94b13;background:#fff6f1;border-radius:8px;color:#67564e;line-height:1.55}.ido-warn strong{color:#744531}
13 .ido-rights{padding:15px 17px;border:1px solid #efdca7;border-left:5px solid #f0aa00;background:#fff9e9;border-radius:8px;color:#665a38;line-height:1.55}.ido-rights strong{color:#6d571c}
14 .ido-store{padding:15px 17px;border:1px solid #cfe8d8;border-left:5px solid #38b76a;background:#eff9f2;border-radius:8px;color:#45614e;line-height:1.55}.ido-store strong{color:#35543f}
15 .ido-tablewrap{overflow-x:auto;border-radius:9px}.ido-tbl{width:100%;border-collapse:collapse;background:#fffdf9;min-width:820px}.ido-tbl th,.ido-tbl td{border:1px solid #e3ded6;padding:10px 11px;vertical-align:top;text-align:left;line-height:1.45}.ido-tbl th{background:#f3efe8;color:#403b36}.ido-tbl td{color:#56504a}
16 .ido-step{padding:15px 16px;border:1px solid #e3ded6;border-top:4px solid #e94b13;border-radius:9px;background:#fcfbf8}.ido-step .n{font-size:12px;font-weight:800;color:#8a4d36;letter-spacing:.06em}.ido-step h4{font-size:17px;margin:3px 0 6px;color:#35312d}.ido-step p{margin:0;color:#625d56;line-height:1.5}
17 .ido-example{padding:15px 16px;border:1px solid #e3ded6;border-radius:9px;background:#fcfbf8}.ido-example h4{font-size:17px;margin:0 0 6px;color:#35312d}.ido-example p{margin:0;color:#625d56;line-height:1.5}
18 .ido-linkgrid{display:grid;grid-template-columns:repeat(auto-fit,minmax(260px,1fr));gap:8px}.ido-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;line-height:1.35}.ido-navlink:hover,.ido-navlink:focus{background:#fff7f1;text-decoration:none}
19 .ido-service{display:block;padding:14px 15px;border:1px solid #e3ded6;border-radius:9px;background:#fcfbf8;color:#322f2b;text-decoration:none}.ido-service:hover,.ido-service:focus{background:#fffdf9;text-decoration:none}.ido-service strong{display:block;margin-bottom:4px}.ido-service span{display:block;color:#625d56;line-height:1.45;font-weight:400}
20 .ido-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}
21 @media(max-width:680px){.ido-hero{height:105px}.ido-sec h3{font-size:20px}}
22 </style>
Veronika Kocher 2.1 23
Veronika Kocher 5.7 24 <div class="ido">
Veronika Kocher 2.1 25
Veronika Kocher 5.7 26 <section class="ido-card" style="margin-bottom:18px;overflow:hidden;border-left:6px solid #e94b13;">
27 <div class="ido-hero"><img src="https://xwiki.uni-ak.ac.at/bin/download/Service%20Navigator/Art%20%26%20Research%20Services%20Navigator/WebHome/enable.png" alt="Research materials, documentation and project outputs"></div>
28 <div style="padding:18px 21px 20px">
Veronika Kocher 5.13 29 <div class="ido-eye" style="color:#8a4d36;margin-bottom:5px">PREPARE · IDENTIFY DATA &amp; RESEARCH OUTPUTS</div>
Veronika Kocher 5.7 30 <h2 style="font-size:27px;line-height:1.2;margin:0 0 8px;color:#2c2926">Know what your project creates, collects, reuses and needs to keep</h2>
31 <p style="margin:0;color:#5e5953;line-height:1.6;max-width:1160px">Before you can plan storage, rights, data protection, documentation, publication or preservation, you need a realistic inventory of the materials and outputs your project will work with. In artistic research this often includes much more than conventional “research data”: source material, physical objects, sketches, recordings, software, process documentation, performances, installations and the records that make them understandable later.</p>
32 </div>
33 </section>
Veronika Kocher 2.1 34
Veronika Kocher 5.7 35 <div class="ido-info" style="margin-bottom:16px"><strong>Start with types, not individual files.</strong> You do not need to list every photograph or document now. Identify the categories your project will create, collect or reuse, then record how each category needs to be handled.</div>
Veronika Kocher 2.1 36
Veronika Kocher 5.7 37 <div class="ido-rights" style="margin-bottom:28px"><strong>Do not force everything into the label “data”.</strong> Different disciplines and funders use the term differently. For planning purposes, inventory <strong>data, materials, documentation and research/artistic outputs</strong> together, then distinguish what each item actually is and what rules apply to it.</div>
Veronika Kocher 2.1 38
Veronika Kocher 5.7 39 <section class="ido-sec">
40 <div class="ido-eye" style="color:#8a4d36;margin-bottom:4px">STEP 1 · MAP THE MATERIAL LANDSCAPE</div>
41 <h3>Identify five kinds of project material</h3>
42 <p>A single item can belong to more than one category. The purpose is not perfect classification; it is to make sure nothing important disappears from your planning.</p>
43 <div class="ido-grid">
Veronika Kocher 2.1 44
Veronika Kocher 5.7 45 <div class="ido-type" style="border-top:4px solid #21b6d7">
46 <h4>1 · Inputs &amp; reused source material</h4>
47 <p>Material that already exists before your project uses it.</p>
48 <ul>
49 <li>texts, images, films, music, archives and collections</li>
50 <li>existing datasets, databases and corpora</li>
51 <li>third-party code, software, models or templates</li>
52 <li>found material, objects, samples or reference works</li>
53 </ul>
54 </div>
Veronika Kocher 2.1 55
Veronika Kocher 5.7 56 <div class="ido-type" style="border-top:4px solid #21b6d7">
57 <h4>2 · Data or evidence created / collected</h4>
58 <p>Recorded material produced through your research or artistic process.</p>
59 <ul>
60 <li>interviews, surveys, observations and field notes</li>
61 <li>audio, video, photographs and scans</li>
62 <li>measurements, sensor logs and experimental records</li>
63 <li>annotations, transcripts, structured datasets or databases</li>
64 </ul>
65 </div>
Veronika Kocher 2.1 66
Veronika Kocher 5.7 67 <div class="ido-type" style="border-top:4px solid #e94b13">
68 <h4>3 · Process &amp; project documentation</h4>
69 <p>Records that explain how the work developed and how decisions were made.</p>
70 <ul>
71 <li>sketches, notebooks, rehearsal records and drafts</li>
72 <li>production files, technical plans and installation instructions</li>
73 <li>decision logs, version histories and provenance records</li>
74 <li>documentation of methods, workflows and transformations</li>
75 </ul>
76 </div>
Veronika Kocher 2.1 77
Veronika Kocher 5.7 78 <div class="ido-type" style="border-top:4px solid #f0aa00">
79 <h4>4 · Research &amp; artistic outputs</h4>
80 <p>What the project intends to deliver, publish, present or make available.</p>
81 <ul>
82 <li>artworks, performances, exhibitions and installations</li>
83 <li>publications, articles, books, catalogues and theses</li>
84 <li>films, audio works, scores, designs and prototypes</li>
85 <li>datasets, software, code, models, websites or teaching resources</li>
86 </ul>
87 </div>
Veronika Kocher 2.1 88
Veronika Kocher 5.7 89 <div class="ido-type" style="border-top:4px solid #38b76a">
90 <h4>5 · Administrative &amp; evidential records</h4>
91 <p>Records that may not be research outputs but are still needed for accountability or project closure.</p>
92 <ul>
93 <li>agreements, consent records and permissions</li>
94 <li>funder deliverables and reporting evidence</li>
95 <li>procurement, equipment or partner documentation</li>
96 <li>records of approvals, responsibilities and handover</li>
97 </ul>
98 </div>
Veronika Kocher 2.1 99
Veronika Kocher 5.7 100 </div>
101 </section>
Veronika Kocher 2.1 102
Veronika Kocher 5.7 103 <section class="ido-sec">
104 <div class="ido-eye" style="color:#8a4d36;margin-bottom:4px">STEP 2 · BUILD A WORKING INVENTORY</div>
105 <h3>Record one row for each material or output type</h3>
106 <p>Your inventory is the bridge between the project idea and the practical decisions that follow. It should be specific enough to reveal risks, dependencies and responsibilities, but simple enough to maintain.</p>
Veronika Kocher 2.1 107
Veronika Kocher 5.7 108 <div class="ido-tablewrap">
109 <table class="ido-tbl">
110 <thead>
111 <tr><th>Inventory field</th><th>Record</th><th>Why it matters</th></tr>
112 </thead>
113 <tbody>
114 <tr><td><strong>Type / name</strong></td><td>A recognisable category such as “interview recordings”, “installation CAD files” or “final exhibition documentation”.</td><td>Creates a shared vocabulary for the team.</td></tr>
115 <tr><td><strong>Origin</strong></td><td>Created, collected, commissioned, received from a partner, or reused from a third party.</td><td>Origin affects rights, provenance and responsibilities.</td></tr>
116 <tr><td><strong>Format / material</strong></td><td>File formats, software dependencies, physical material, analogue carrier or specialist equipment needed.</td><td>Reveals technical and preservation dependencies.</td></tr>
117 <tr><td><strong>Scale</strong></td><td>Approximate quantity, duration, file size, number of objects or expected growth.</td><td>Helps plan storage, transfer, backup and costs.</td></tr>
118 <tr><td><strong>People &amp; sensitivity</strong></td><td>Whether it contains personal, confidential, culturally sensitive, restricted or otherwise sensitive material.</td><td>Determines access and protection requirements.</td></tr>
119 <tr><td><strong>Rights / permissions</strong></td><td>Who owns it, what licence applies, what permissions or consent exist, and what is still unresolved.</td><td>Determines what can be reused, published or shared.</td></tr>
120 <tr><td><strong>Working location</strong></td><td>Where the active copy is stored or the physical item is kept.</td><td>Makes responsibility and risk visible.</td></tr>
121 <tr><td><strong>Master / authoritative version</strong></td><td>Which file, object or record is the master and how it is distinguished from working or derivative copies.</td><td>Prevents ambiguity at handover and publication.</td></tr>
122 <tr><td><strong>Metadata / provenance</strong></td><td>What information is needed to understand source, creator, date, context, method, version and relationships.</td><td>Makes the material interpretable and reusable later.</td></tr>
123 <tr><td><strong>Lifecycle decision</strong></td><td>Keep, discard, restrict, share, publish, deposit, archive or preserve — and who decides.</td><td>Connects current work to project closure and long-term access.</td></tr>
124 </tbody>
125 </table>
126 </div>
Veronika Kocher 2.1 127
Veronika Kocher 5.7 128 <div class="ido-info" style="margin-top:14px"><strong>Useful minimum:</strong> if you can answer <em>what it is, where it came from, who is responsible, where the master is, whether it is sensitive, what rights apply and what should happen to it at project end</em>, you already have a strong first inventory.</div>
129 </section>
Veronika Kocher 5.6 130
Veronika Kocher 5.7 131 <section class="ido-sec">
132 <div class="ido-eye" style="color:#8a4d36;margin-bottom:4px">STEP 3 · MAKE ARTISTIC PROCESSES VISIBLE</div>
133 <h3>Identify the documentation that will make the work understandable later</h3>
134 <p>For performative, spatial, process-based, participatory or otherwise ephemeral work, the work itself and its documentation are not the same thing. Decide deliberately what needs to be captured and what status that documentation has.</p>
Veronika Kocher 2.1 135
Veronika Kocher 5.7 136 <div class="ido-grid">
137 <div class="ido-example">
138 <h4>Performance / live work</h4>
139 <p>Possible records include score or script, rehearsal material, technical rider, stage or spatial plan, photographs, audio/video documentation, performer credits, audience/participant permissions and a description of the realised event.</p>
140 </div>
141 <div class="ido-example">
142 <h4>Installation / exhibition</h4>
143 <p>Possible records include concept material, plans, CAD/3D files, component lists, media masters, installation instructions, equipment dependencies, views of the installed work, labels/credits and de-installation or re-installation information.</p>
144 </div>
145 <div class="ido-example">
146 <h4>Design / architecture / making</h4>
147 <p>Possible records include research sources, drawings, models, prototypes, material tests, fabrication files, technical specifications, photographs, iterations, decisions and final presentation files.</p>
148 </div>
149 <div class="ido-example">
150 <h4>Participatory / interview-based work</h4>
151 <p>Possible records include recruitment or participant information, consent/permissions, recordings, transcripts, participant-created material, field notes, coding/analysis, access restrictions and public-facing outputs.</p>
152 </div>
153 <div class="ido-example">
154 <h4>Digital / computational work</h4>
155 <p>Possible records include source code, dependencies, configuration, datasets, training or processing inputs, documentation, build/export files, version information, licences and the environment needed to reproduce or understand the work.</p>
156 </div>
157 <div class="ido-example">
158 <h4>Publication / film / audio</h4>
159 <p>Possible records include research material, source assets, edit/project files, rights documentation, captions/subtitles, credits, high-resolution or preservation masters, distribution derivatives and publication metadata.</p>
160 </div>
161 </div>
162 </section>
Veronika Kocher 2.1 163
Veronika Kocher 5.7 164 <section class="ido-sec">
165 <div class="ido-eye" style="color:#8a4d36;margin-bottom:4px">STEP 4 · DISTINGUISH WHAT MUST NOT BE MIXED</div>
166 <h3>These distinctions prevent problems later</h3>
167 <div class="ido-grid">
168 <div class="ido-rights"><strong>Created vs. reused.</strong><br>Material you create and third-party material may have very different rights and licence conditions.</div>
169 <div class="ido-info"><strong>Working file vs. master.</strong><br>A convenient editing copy is not automatically the authoritative or preservation-quality version.</div>
170 <div class="ido-info"><strong>Documentation vs. artwork/output.</strong><br>A photograph of a performance may document the work without being the work itself. Record the relationship explicitly.</div>
171 <div class="ido-warn"><strong>Public vs. restricted.</strong><br>A project may publish some outputs while keeping personal, confidential, embargoed or rights-restricted source material closed.</div>
172 <div class="ido-store"><strong>Storage vs. preservation.</strong><br>A file being stored today does not mean it can still be opened, understood or trusted years later.</div>
173 <div class="ido-rights"><strong>Retention vs. sharing.</strong><br>You may need to retain material for accountability while having no permission or reason to make it public.</div>
174 </div>
175 </section>
Veronika Kocher 2.1 176
Veronika Kocher 5.7 177 <section class="ido-sec">
178 <div class="ido-eye" style="color:#8a4d36;margin-bottom:4px">STEP 5 · RUN THE PROJECT INVENTORY</div>
179 <h3>A practical sequence for the team</h3>
180 <div class="ido-grid">
181 <div class="ido-step"><div class="n">01</div><h4>List expected types</h4><p>Start from the proposal, work packages, methods, artistic process, deliverables and public outputs.</p></div>
182 <div class="ido-step"><div class="n">02</div><h4>Add reused material</h4><p>Include archives, existing datasets, third-party images/media, code, partner material and other inputs.</p></div>
183 <div class="ido-step"><div class="n">03</div><h4>Mark sensitive categories</h4><p>Identify personal, confidential, restricted, culturally sensitive or otherwise protected material early.</p></div>
184 <div class="ido-step"><div class="n">04</div><h4>Identify masters</h4><p>Decide which files or objects will be authoritative and how versions/derivatives will be distinguished.</p></div>
185 <div class="ido-step"><div class="n">05</div><h4>Record rights &amp; permissions</h4><p>Note ownership, licences, consent, partner terms and unresolved rights before dissemination is planned.</p></div>
186 <div class="ido-step"><div class="n">06</div><h4>Estimate scale &amp; dependencies</h4><p>Flag large volumes, specialist formats, software, hardware, equipment, physical storage and transfer needs.</p></div>
187 <div class="ido-step"><div class="n">07</div><h4>Connect to storage &amp; DMP</h4><p>Use the inventory to assign working locations, access rules, backup, documentation and lifecycle actions.</p></div>
188 <div class="ido-step"><div class="n">08</div><h4>Review at milestones</h4><p>Update the inventory when methods, partners, outputs, formats, rights, people or publication plans change.</p></div>
189 </div>
190 </section>
Veronika Kocher 2.1 191
Veronika Kocher 5.7 192 <section class="ido-sec">
193 <div class="ido-eye" style="color:#8a4d36;margin-bottom:4px">KEY QUESTIONS</div>
194 <h3>Questions every project should be able to answer</h3>
195 <div class="ido-grid">
196 <div class="ido-check">What existing material will we reuse, and under what conditions?</div>
197 <div class="ido-check">What new data, records, objects or documentation will we create or collect?</div>
198 <div class="ido-check">Which outputs are contractual/funder deliverables and which are additional project outputs?</div>
199 <div class="ido-check">What is digital, analogue, physical, spatial or dependent on specialist software/equipment?</div>
200 <div class="ido-check">Which material contains personal, confidential, restricted or sensitive information?</div>
201 <div class="ido-check">Who owns or controls each type, and what permissions/licences are needed?</div>
202 <div class="ido-check">Which version will be the master or authoritative record?</div>
203 <div class="ido-check">What metadata or contextual information is needed to understand the material later?</div>
204 <div class="ido-check">What should be shared, restricted, retained, discarded, deposited or preserved at project end?</div>
205 <div class="ido-check">Who is responsible for each decision and for the final handover?</div>
206 </div>
207 </section>
Veronika Kocher 2.1 208
Veronika Kocher 5.7 209 <section class="ido-sec">
210 <div class="ido-eye" style="color:#8a4d36;margin-bottom:4px">STOP &amp; CHECK</div>
211 <h3>Common inventory gaps</h3>
212 <div class="ido-grid">
213 <div class="ido-warn"><strong>Only final deliverables are listed.</strong><br>Source material, process documentation and research evidence are missing from the plan.</div>
214 <div class="ido-warn"><strong>“Everything is in the cloud.”</strong><br>No one has identified the actual service, owner, access model, backup or master copy.</div>
215 <div class="ido-warn"><strong>Ephemeral work has no documentation strategy.</strong><br>The project may finish without enough information to understand, present or preserve what happened.</div>
216 <div class="ido-warn"><strong>Third-party material has no provenance.</strong><br>Source, creator, licence or permission cannot be reconstructed later.</div>
217 <div class="ido-warn"><strong>Personal or confidential material is mixed with publication files.</strong><br>Access decisions become difficult and accidental disclosure becomes more likely.</div>
218 <div class="ido-warn"><strong>The master is unclear.</strong><br>Several exports or copies exist but no authoritative version has been designated.</div>
219 <div class="ido-warn"><strong>Physical objects are absent from the data plan.</strong><br>Location, ownership, condition, documentation or handover responsibilities have not been recorded.</div>
220 <div class="ido-warn"><strong>Specialist formats are treated as self-explanatory.</strong><br>Software, hardware, plugins or context needed to reopen the work are not documented.</div>
221 </div>
222 </section>
Veronika Kocher 4.1 223
Veronika Kocher 5.7 224 <section class="ido-sec">
225 <div class="ido-eye" style="color:#8a4d36;margin-bottom:4px">SERVICES &amp; TOOLS</div>
226 <h3>Use the inventory to involve the right support</h3>
227 <div class="ido-grid">
228 <a class="ido-service" href="https://www.dieangewandte.at/universitaet/organisation/planung_service_und_verwaltung/support_kunst_und_forschung" target="_blank" rel="noopener"><strong>Support Kunst und Forschung ↗</strong><span>Use for project/funder requirements, deliverables, proposal planning and project coordination.</span></a>
229 <a class="ido-service" href="https://www.dieangewandte.at/universitaetsbibliothek" target="_blank" rel="noopener"><strong>University Library ↗</strong><span>Use for research/discovery support and questions around publication, repository and information resources.</span></a>
230 <a class="ido-service" href="https://phaidra.bibliothek.uni-ak.ac.at/" target="_blank" rel="noopener"><strong>Angewandte Repository ↗</strong><span>Explore the institutional repository route for digital research and artistic outputs that are suitable for deposit.</span></a>
231 <a class="ido-service" href="https://xwiki.uni-ak.ac.at/bin/view/Service%20Navigator/Art%20%26%20Research%20Services%20Navigator/Enable/Plan%20Your%20Data%20Management/"><strong>Plan Your Data Management</strong><span>Turn the inventory into decisions about storage, access, backup, documentation, sharing and preservation.</span></a>
232 <a class="ido-service" href="https://xwiki.uni-ak.ac.at/bin/view/Service%20Navigator/Art%20%26%20Research%20Services%20Navigator/Enable/Data%20Protection%20%26%20Ethics/"><strong>Data Protection &amp; Ethics</strong><span>Use when people, personal data, consent, participants or ethical questions are involved.</span></a>
233 <a class="ido-service" href="https://xwiki.uni-ak.ac.at/bin/view/Service%20Navigator/Art%20%26%20Research%20Services%20Navigator/Enable/Copyright%2C%20Rights%20%26%20Licences/"><strong>Copyright, Rights &amp; Licences</strong><span>Clarify ownership, third-party material, permissions, licences and reuse conditions.</span></a>
234 </div>
235 </section>
236
237 <section class="ido-sec">
238 <div class="ido-eye" style="color:#8a4d36;margin-bottom:4px">NEXT · TURN THE INVENTORY INTO A PLAN</div>
239 <h3>Related Service Navigator topics</h3>
240 <div class="ido-linkgrid">
241 <a class="ido-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>
242 <a class="ido-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 &amp; Naming</a>
243 <a class="ido-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 &amp; Security</a>
244 <a class="ido-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 &amp; Tools</a>
245 <a class="ido-navlink" href="https://xwiki.uni-ak.ac.at/bin/view/Service%20Navigator/Art%20%26%20Research%20Services%20Navigator/Work%20%26%20Manage/Document%20Metadata%20%26%20Provenance/">Document Processes, Metadata &amp; Provenance</a>
246 <a class="ido-navlink" href="https://xwiki.uni-ak.ac.at/bin/view/Service%20Navigator/Art%20%26%20Research%20Services%20Navigator/Work%20%26%20Manage/Manage%20Versions%20%26%20Master%20Files/">Manage Versions &amp; Master Files</a>
247 <a class="ido-navlink" href="https://xwiki.uni-ak.ac.at/bin/view/Service%20Navigator/Art%20%26%20Research%20Services%20Navigator/Publish%20%26%20Share/Decide%20What%20to%20Share/">Decide What to Share</a>
248 <a class="ido-navlink" href="https://xwiki.uni-ak.ac.at/bin/view/Service%20Navigator/Art%20%26%20Research%20Services%20Navigator/Publish%20%26%20Share/Preserve%20Data%20%26%20Artistic%20Outputs/">Preserve Data &amp; Artistic Outputs</a>
249 </div>
250 </section>
251
252 <div class="ido-info" style="margin-bottom:14px"><strong>Need help deciding what belongs in the inventory?</strong> Bring a one-paragraph project description, your planned methods/activities, expected outputs, likely source material and any funder requirements. For funded art/research projects, Support Kunst und Forschung can help connect these elements to the wider project plan.</div>
253
Veronika Kocher 5.15 254 <!-- ARSN_TRAINING_WORKSHOPS_V2_START -->
255 <section class="arsn-training-workshops" data-arsn-training-workshops="v2" style="margin:27px 0 22px 0;">
256 <div style="padding:16px 18px;background:#eef8fa;border:1px solid #cfe8ef;border-left:5px solid #21b6d7;border-radius:9px;">
257 <div style="font-size:12px;font-weight:700;letter-spacing:.075em;text-transform:uppercase;color:#3f6871;margin-bottom:5px;">TRAINING &amp; WORKSHOPS</div>
258 <h3 style="font-size:20px;line-height:1.3;margin:0 0 7px;color:#35312d;text-align:left;">Training, workshops &amp; consultation sessions</h3>
259 <p style="margin:0 0 10px;color:#5e5953;line-height:1.55;">Relevant opportunities for this topic will be shown here automatically from the central calendar.</p>
260 <span data-arsn-coming-soon="true" style="display:inline-block;padding:4px 9px;border-radius:14px;background:#fff4ee;border:1px solid #efd9cc;color:#8a4d36;font-size:11px;font-weight:700;letter-spacing:.065em;line-height:1.2;">COMING SOON</span>
261 </div>
262 </section>
263 <!-- ARSN_TRAINING_WORKSHOPS_V2_END -->
Veronika Kocher 5.14 264
Veronika Kocher 5.15 265 <!-- ARSN_PRACTICAL_RESOURCES_V2_START -->
266 <section class="arsn-practical-resources" data-arsn-practical-resources="v2" style="margin:0 0 27px;">
267 <div style="font-size:12px;font-weight:700;letter-spacing:.075em;text-transform:uppercase;color:#8a4d36;margin-bottom:4px;">USEFUL MATERIALS</div>
268 <h3 style="font-size:22px;line-height:1.25;margin:0 0 8px;color:#35312d;text-align:left;">Practical Resources</h3>
269 <p style="margin:0 0 12px;color:#5e5953;line-height:1.55;">Use practical resources when you need a concise overview, a step-by-step procedure or a ready-to-use project aid.</p>
270 <div class="arsn-resource-grid" style="display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px;">
271 <div style="padding:15px 16px;background:#fcfbf8;border:1px solid #e3ded6;border-top:3px solid #21b6d7;border-radius:9px;"><strong>Info Sheets</strong><br><span data-arsn-coming-soon="true" style="display:inline-block;margin:6px 0 8px;padding:4px 9px;border-radius:14px;background:#fff4ee;border:1px solid #efd9cc;color:#8a4d36;font-size:11px;font-weight:700;letter-spacing:.065em;">COMING SOON</span><div style="color:#625d56;line-height:1.45;">Short reference guides for common questions and decisions.</div></div>
272 <div style="padding:15px 16px;background:#fcfbf8;border:1px solid #e3ded6;border-top:3px solid #e94b13;border-radius:9px;"><strong>Tutorials</strong><br><span data-arsn-coming-soon="true" style="display:inline-block;margin:6px 0 8px;padding:4px 9px;border-radius:14px;background:#fff4ee;border:1px solid #efd9cc;color:#8a4d36;font-size:11px;font-weight:700;letter-spacing:.065em;">COMING SOON</span><div style="color:#625d56;line-height:1.45;">Step-by-step guidance for specific tasks and workflows.</div></div>
273 <div style="padding:15px 16px;background:#fcfbf8;border:1px solid #e3ded6;border-top:3px solid #38b76a;border-radius:9px;"><strong>Checklists &amp; Templates</strong><br><span data-arsn-coming-soon="true" style="display:inline-block;margin:6px 0 8px;padding:4px 9px;border-radius:14px;background:#fff4ee;border:1px solid #efd9cc;color:#8a4d36;font-size:11px;font-weight:700;letter-spacing:.065em;">COMING SOON</span><div style="color:#625d56;line-height:1.45;">Ready-to-use checklists and templates for planning, managing and closing projects.</div></div>
274 </div>
275 <style>@media(max-width:767px){.arsn-resource-grid{grid-template-columns:1fr!important}}</style>
276 </section>
277 <!-- ARSN_PRACTICAL_RESOURCES_V2_END -->
Veronika Kocher 5.14 278
Veronika Kocher 4.1 279 <!-- ARSN_SEARCH_TERMS_START -->
Veronika Kocher 5.7 280 <details style="margin-top:24px;padding-top:10px;border-top:1px solid #e3ded6">
281 <summary style="cursor:pointer;color:#6a655e;font-size:13px">Search terms &amp; related topics</summary>
282 <div style="margin-top:9px;color:#5c5650;font-size:12px;line-height:1.7">research data · artistic research data · research outputs · artistic outputs · project materials · source material · reused data · third-party material · documentation · process documentation · performance documentation · installation documentation · interviews · recordings · photographs · video · audio · datasets · databases · software · source code · models · prototypes · physical objects · analogue material · master files · authoritative version · provenance · metadata · rights · copyright · licences · consent · personal data · sensitive data · confidential data · file formats · storage · backup · preservation · repository · data management plan · DMP · deliverables · funder requirements · project inventory · output inventory · handover</div>
Veronika Kocher 4.1 283 </details>
284 <!-- ARSN_SEARCH_TERMS_END -->
Veronika Kocher 5.7 285
286 </div>
Veronika Kocher 4.1 287 {{/html}}
Veronika Kocher 5.7 288
Veronika Kocher 5.11 289 {{html clean="false"}}
290 <!-- SN_SERVICE_NAVIGATOR_MASTER_STYLE_START -->
Veronika Kocher 5.10 291
Veronika Kocher 5.11 292 <style data-sn-service-navigator-master="1">
293 /* =========================================================
294 MASTER TYPOGRAPHY
295 ========================================================= */
Veronika Kocher 5.10 296 #xwikicontent h1,
297 #xwikicontent h2,
298 #xwikicontent h3,
299 #xwikicontent h4,
300 #xwikicontent h5,
301 #xwikicontent h6,
302 #xwikicontent .box-title,
303 #xwikicontent [role="heading"],
304 #xwikicontent h1 a,
305 #xwikicontent h2 a,
306 #xwikicontent h3 a,
307 #xwikicontent h4 a,
308 #xwikicontent h5 a,
309 #xwikicontent h6 a,
310 #xwikicontent .box-title a,
311 #xwikicontent [role="heading"] a{
312 text-align:left!important;
313 text-justify:auto!important;
314 word-spacing:normal!important;
315 }
316
Veronika Kocher 5.11 317 /* =========================================================
318 COMING SOON / IN VORBEREITUNG
319 ========================================================= */
320 .sn-coming-soon-badge{
321 display:inline-block;
322 vertical-align:middle;
323 margin-left:10px;
324 padding:4px 8px;
325 border-radius:14px;
326 border:1px solid #efd9cc;
327 background:#fff4ee;
328 color:#8a4d36;
329 font-size:11px;
330 font-weight:700;
331 letter-spacing:.055em;
332 line-height:1.2;
333 white-space:nowrap;
334 }
335
336 /* =========================================================
337 NATIVE / DETAIL CALLOUT GEOMETRY
338 Preserve existing backgrounds.
339 ========================================================= */
340 #xwikicontent .arsn-info,
341 #xwikicontent .dmp-info,
342 #xwikicontent .ido-info,
343 #xwikicontent .pp-info,
344 #xwikicontent .infomessage{
Veronika Kocher 5.10 345 box-sizing:border-box!important;
Veronika Kocher 5.11 346 border-left:4px solid #21b6d7!important;
347 border-radius:8px;
Veronika Kocher 5.10 348 text-align:left!important;
349 word-spacing:normal!important;
350 }
351
Veronika Kocher 5.11 352 #xwikicontent .arsn-warn,
353 #xwikicontent .dmp-warn,
354 #xwikicontent .ido-warn,
355 #xwikicontent .pp-warn,
356 #xwikicontent .warn,
357 #xwikicontent .warning,
358 #xwikicontent .warningmessage,
Veronika Kocher 5.10 359 #xwikicontent .errormessage{
Veronika Kocher 5.11 360 box-sizing:border-box!important;
361 border-left:4px solid #e94b13!important;
362 border-radius:8px;
363 text-align:left!important;
364 word-spacing:normal!important;
Veronika Kocher 5.10 365 }
366
Veronika Kocher 5.11 367 [data-sn-master-equal-height],
368 [data-sn-master-first-row]{
Veronika Kocher 5.9 369 box-sizing:border-box;
Veronika Kocher 5.8 370 }
Veronika Kocher 5.12 371
372 /* =========================================================
373 FULL-WIDTH THREE-LINE NUMBER / TITLE / SUBTITLE BLOCKS
374 ========================================================= */
375 #xwikicontent .arsn-area-label[data-sn-three-line="1"]{
376 display:grid!important;
377 grid-template-columns:minmax(0,1fr)!important;
378 grid-auto-rows:auto!important;
379 width:100%!important;
380 max-width:none!important;
381 box-sizing:border-box!important;
382 justify-items:start!important;
383 align-items:start!important;
384 gap:2px!important;
385 text-align:left!important;
386 text-align-last:left!important;
387 text-justify:auto!important;
388 word-spacing:normal!important;
389 white-space:normal!important;
390 }
391 #xwikicontent .arsn-area-label[data-sn-three-line="1"] > .arsn-area-number,
392 #xwikicontent .arsn-area-label[data-sn-three-line="1"] > .sn-area-label-title,
393 #xwikicontent .arsn-area-label[data-sn-three-line="1"] > .arsn-area-action{
394 display:block!important;
395 width:100%!important;
396 margin:0!important;
397 text-align:left!important;
398 text-align-last:left!important;
399 text-justify:auto!important;
400 word-spacing:normal!important;
401 white-space:normal!important;
402 }
Veronika Kocher 5.8 403 </style>
Veronika Kocher 5.10 404
Veronika Kocher 5.11 405 <script data-sn-service-navigator-master="1">
Veronika Kocher 5.8 406 (function(){
407 "use strict";
408
Veronika Kocher 5.11 409 var PAGE_KIND="detail";
410 var PLACEHOLDER=false;
411 var PLACEHOLDER_LABEL="COMING SOON";
412
Veronika Kocher 5.8 413 var MOBILE_MAX=767;
Veronika Kocher 5.9 414 var ROW_TOLERANCE=6;
Veronika Kocher 5.10 415 var RESIZE_DEBOUNCE=220;
Veronika Kocher 5.8 416
417 var root=
418 document.getElementById("xwikicontent")||
419 document.querySelector(".xwiki-rendering-content")||
420 document.querySelector("main")||
421 document.body;
422
423 if(!root)return;
424
Veronika Kocher 5.11 425 var managedHeight=new Set();
426 var managedMargin=new Set();
427 var originalHeight=new WeakMap();
428 var originalMargin=new WeakMap();
Veronika Kocher 5.10 429
430 var resizeTimer=0;
Veronika Kocher 5.11 431 var running=false;
Veronika Kocher 5.10 432
Veronika Kocher 5.11 433 var THEMES=[
434 {
435 name:"BLUE",
436 accent:"#21b6d7",
437 bg:"#eaf7fb",
438 text:"#315d68",
439 labels:[
440 "HIER STARTEN",
441 "ENTSCHEIDEN",
442 "ÜBERPRÜFEN & ANPASSEN",
443 "START HERE",
444 "DECIDE",
445 "REVIEW & ADAPT"
446 ]
447 },
448 {
449 name:"RED",
450 accent:"#e94b13",
451 bg:"#fff1ec",
452 text:"#8a4d36",
453 labels:[
454 "PLANEN & ORGANISIEREN",
455 "ORGANISIEREN & DOKUMENTIEREN",
456 "PUBLIZIEREN & PRÄSENTIEREN",
457 "PLAN & ORGANISE",
458 "PLAN & ORGANIZE",
459 "ORGANISE & DOCUMENT",
460 "ORGANIZE & DOCUMENT",
461 "PUBLISH & PRESENT"
462 ]
463 },
464 {
465 name:"YELLOW",
466 accent:"#f0aa00",
467 bg:"#fff8e7",
468 text:"#785b17",
469 labels:[
470 "SCHÜTZEN & KLÄREN",
471 "STANDARDISIEREN & IDENTIFIZIEREN",
472 "ÖFFNEN, NACHNUTZEN & AUFFINDBAR MACHEN",
473 "PROTECT & CLARIFY",
474 "STANDARDISE & IDENTIFY",
475 "STANDARDIZE & IDENTIFY",
476 "OPEN, REUSE & MAKE FINDABLE"
477 ]
478 },
479 {
480 name:"GREEN",
481 accent:"#38b76a",
482 bg:"#edf9f1",
483 text:"#3f7451",
484 labels:[
485 "INFRASTRUKTUR EINRICHTEN",
486 "INFRASTRUKTUR & ZUSAMMENARBEIT EINRICHTEN",
487 "SPEICHERN & ZUGRIFF STEUERN",
488 "REPOSITORIUM, ERHALTEN & ÜBERGEBEN",
489 "SET UP INFRASTRUCTURE",
490 "SET UP INFRASTRUCTURE & COLLABORATION",
491 "STORE & CONTROL ACCESS",
492 "REPOSITORY, PRESERVE & HAND OVER"
493 ]
Veronika Kocher 5.9 494 }
Veronika Kocher 5.11 495 ];
Veronika Kocher 5.9 496
Veronika Kocher 5.11 497 function num(value){
498 var n=parseFloat(value);
499 return Number.isFinite(n)?n:0;
Veronika Kocher 5.8 500 }
501
Veronika Kocher 5.11 502 function norm(value){
503 return String(value||"")
Veronika Kocher 5.10 504 .replace(/\s+/g," ")
505 .trim()
506 .toUpperCase();
507 }
508
Veronika Kocher 5.11 509 function visible(el){
510 if(!el||el.nodeType!==1)return false;
Veronika Kocher 5.8 511
Veronika Kocher 5.11 512 var style=getComputedStyle(el);
513 var rect=el.getBoundingClientRect();
Veronika Kocher 5.10 514
515 return (
Veronika Kocher 5.11 516 style.display!=="none"&&
517 style.visibility!=="hidden"&&
518 rect.width>20&&
519 rect.height>4
Veronika Kocher 5.10 520 );
Veronika Kocher 5.8 521 }
522
Veronika Kocher 5.11 523 function saveStyle(el,map,property){
Veronika Kocher 5.9 524 if(map.has(el))return;
525
526 map.set(el,{
Veronika Kocher 5.11 527 value:el.style.getPropertyValue(property),
528 priority:el.style.getPropertyPriority(property)
Veronika Kocher 5.9 529 });
530 }
531
Veronika Kocher 5.11 532 function restoreStyle(el,map,property){
Veronika Kocher 5.9 533 var original=map.get(el);
534
535 if(original&&original.value){
536 el.style.setProperty(
537 property,
538 original.value,
539 original.priority||""
540 );
541 }else{
Veronika Kocher 5.11 542 el.style.removeProperty(property);
Veronika Kocher 5.9 543 }
544 }
545
Veronika Kocher 5.10 546 function resetRuntime(){
Veronika Kocher 5.11 547 managedHeight.forEach(function(el){
548 restoreStyle(
Veronika Kocher 5.9 549 el,
Veronika Kocher 5.11 550 originalHeight,
Veronika Kocher 5.9 551 "min-height"
552 );
553 el.removeAttribute(
Veronika Kocher 5.11 554 "data-sn-master-equal-height"
Veronika Kocher 5.9 555 );
556 });
557
Veronika Kocher 5.11 558 managedMargin.forEach(function(el){
559 restoreStyle(
Veronika Kocher 5.9 560 el,
Veronika Kocher 5.11 561 originalMargin,
Veronika Kocher 5.9 562 "margin-top"
563 );
564 el.removeAttribute(
Veronika Kocher 5.11 565 "data-sn-master-first-row"
Veronika Kocher 5.9 566 );
567 });
568
Veronika Kocher 5.11 569 managedHeight.clear();
570 managedMargin.clear();
571 }
Veronika Kocher 5.10 572
Veronika Kocher 5.11 573 function themeFor(text){
574 var value=norm(text);
Veronika Kocher 5.10 575
Veronika Kocher 5.11 576 for(var i=0;i<THEMES.length;i++){
577 for(var j=0;j<THEMES[i].labels.length;j++){
578 var label=THEMES[i].labels[j];
579
580 if(
581 value===label||
582 value.indexOf(label+" ")===0||
583 value.indexOf(label+" -")===0||
584 value.indexOf(label+" ·")===0
585 ){
586 return THEMES[i];
587 }
588 }
589 }
590
591 return null;
Veronika Kocher 5.9 592 }
593
Veronika Kocher 5.11 594 /* =======================================================
Veronika Kocher 5.12 595 BORDERLESS FILLED RED/ORANGE CTA BUTTONS
596 ======================================================= */
597
598 function colourDistance(a,b){
599 return Math.sqrt(
600 Math.pow(a[0]-b[0],2)+
601 Math.pow(a[1]-b[1],2)+
602 Math.pow(a[2]-b[2],2)
603 );
604 }
605
606 function makeFilledRedOrangeCTAsBorderless(){
607 var RED_ORANGE=[233,75,19];
608
609 Array.from(
610 root.querySelectorAll(
611 'a,button,[role="button"],input[type="submit"],input[type="button"]'
612 )
613 ).forEach(function(el){
614 if(!visible(el))return;
615
616 var style=getComputedStyle(el);
617 var rgb=parseRGB(style.backgroundColor);
618
619 if(!rgb)return;
620
621 if(
622 colourDistance(
623 rgb,
624 RED_ORANGE
625 )>55
626 ){
627 return;
628 }
629
630 var rect=el.getBoundingClientRect();
631
632 if(
633 rect.width<80||
634 rect.height<24
635 ){
636 return;
637 }
638
639 el.style.setProperty(
640 "border",
641 "none",
642 "important"
643 );
644
645 el.style.setProperty(
646 "border-left",
647 "none",
648 "important"
649 );
650
651 el.style.setProperty(
652 "border-top",
653 "none",
654 "important"
655 );
656
657 el.style.setProperty(
658 "border-right",
659 "none",
660 "important"
661 );
662
663 el.style.setProperty(
664 "border-bottom",
665 "none",
666 "important"
667 );
668
669 el.style.setProperty(
670 "box-shadow",
671 "none",
672 "important"
673 );
674 });
675 }
676
677 /* =======================================================
678 FULL-WIDTH THREE-LINE AREA LABELS
679 ======================================================= */
680
681 function compactText(value){
682 return String(value||"")
683 .replace(/\s+/g," ")
684 .trim();
685 }
686
687 function makeThreeLineAreaLabels(){
688 Array.from(
689 root.querySelectorAll(
690 ".arsn-area-label"
691 )
692 ).forEach(function(label){
693 if(
694 label.getAttribute(
695 "data-sn-three-line"
696 )==="1"
697 ){
698 return;
699 }
700
701 var number=
702 label.querySelector(
703 ":scope > .arsn-area-number"
704 );
705
706 var action=
707 label.querySelector(
708 ":scope > .arsn-area-action"
709 );
710
711 if(
712 !number||
713 !action
714 ){
715 return;
716 }
717
718 var clone=
719 label.cloneNode(true);
720
721 var cloneNumber=
722 clone.querySelector(
723 ":scope > .arsn-area-number"
724 );
725
726 var cloneAction=
727 clone.querySelector(
728 ":scope > .arsn-area-action"
729 );
730
731 if(cloneNumber){
732 cloneNumber.remove();
733 }
734
735 if(cloneAction){
736 cloneAction.remove();
737 }
738
739 var titleText=
740 compactText(
741 clone.textContent
742 );
743
744 if(!titleText){
745 return;
746 }
747
748 var numberNode=
749 number.cloneNode(true);
750
751 var actionNode=
752 action.cloneNode(true);
753
754 var titleNode=
755 document.createElement(
756 "span"
757 );
758
759 titleNode.className=
760 "sn-area-label-title";
761
762 titleNode.textContent=
763 titleText;
764
765 while(label.firstChild){
766 label.removeChild(
767 label.firstChild
768 );
769 }
770
771 label.appendChild(
772 numberNode
773 );
774
775 label.appendChild(
776 titleNode
777 );
778
779 label.appendChild(
780 actionNode
781 );
782
783 label.setAttribute(
784 "data-sn-three-line",
785 "1"
786 );
787
788 var head=
789 label.closest(
790 ".arsn-area-head"
791 );
792
793 if(head){
794 head.style.setProperty(
795 "width",
796 "100%",
797 "important"
798 );
799
800 head.style.setProperty(
801 "max-width",
802 "100%",
803 "important"
804 );
805
806 head.style.setProperty(
807 "box-sizing",
808 "border-box",
809 "important"
810 );
811 }
812 });
813 }
814
815 /* =======================================================
Veronika Kocher 5.11 816 PLACEHOLDER BADGE
817 ======================================================= */
Veronika Kocher 5.10 818
Veronika Kocher 5.11 819 function applyPlaceholderBadge(){
820 if(!PLACEHOLDER)return;
Veronika Kocher 5.10 821
822 if(
Veronika Kocher 5.11 823 document.querySelector(
824 ".sn-coming-soon-badge"
825 )
Veronika Kocher 5.10 826 ){
Veronika Kocher 5.11 827 return;
Veronika Kocher 5.10 828 }
829
Veronika Kocher 5.11 830 var title=
831 document.querySelector(
832 "#document-title"
833 )||
834 document.querySelector(
835 "h1"
836 );
Veronika Kocher 5.10 837
Veronika Kocher 5.11 838 if(!title)return;
Veronika Kocher 5.10 839
Veronika Kocher 5.11 840 var badge=
841 document.createElement(
842 "span"
843 );
844
845 badge.className=
846 "sn-coming-soon-badge";
847
848 badge.textContent=
849 PLACEHOLDER_LABEL;
850
851 badge.setAttribute(
852 "aria-label",
853 PLACEHOLDER_LABEL
Veronika Kocher 5.10 854 );
855
Veronika Kocher 5.11 856 title.appendChild(
857 badge
858 );
859 }
Veronika Kocher 5.10 860
Veronika Kocher 5.11 861 /* =======================================================
862 DETAIL PAGE OWN-ACCENT PROPAGATION
863 ======================================================= */
Veronika Kocher 5.10 864
Veronika Kocher 5.11 865 function parseRGB(value){
866 var match=String(value||"").match(
867 /rgba?\(\s*([\d.]+)\s*,\s*([\d.]+)\s*,\s*([\d.]+)/i
Veronika Kocher 5.10 868 );
Veronika Kocher 5.11 869
870 if(!match)return null;
871
872 return [
873 Number(match[1]),
874 Number(match[2]),
875 Number(match[3])
876 ];
Veronika Kocher 5.10 877 }
878
Veronika Kocher 5.11 879 function distance(a,b){
880 return Math.sqrt(
881 Math.pow(a[0]-b[0],2)+
882 Math.pow(a[1]-b[1],2)+
883 Math.pow(a[2]-b[2],2)
884 );
885 }
Veronika Kocher 5.8 886
Veronika Kocher 5.11 887 function paletteMatch(cssColor){
888 var rgb=parseRGB(cssColor);
Veronika Kocher 5.9 889
Veronika Kocher 5.11 890 if(!rgb)return null;
Veronika Kocher 5.9 891
Veronika Kocher 5.11 892 var palette=[
893 {hex:"#21b6d7",rgb:[33,182,215]},
894 {hex:"#e94b13",rgb:[233,75,19]},
895 {hex:"#f0aa00",rgb:[240,170,0]},
896 {hex:"#38b76a",rgb:[56,183,106]}
897 ];
Veronika Kocher 5.8 898
Veronika Kocher 5.9 899 var best=null;
Veronika Kocher 5.11 900 var bestDistance=Infinity;
Veronika Kocher 5.8 901
Veronika Kocher 5.11 902 palette.forEach(function(item){
903 var d=distance(rgb,item.rgb);
Veronika Kocher 5.8 904
Veronika Kocher 5.11 905 if(d<bestDistance){
906 best=item;
907 bestDistance=d;
908 }
909 });
Veronika Kocher 5.9 910
Veronika Kocher 5.11 911 return bestDistance<=30
912 ?best
913 :null;
914 }
Veronika Kocher 5.8 915
Veronika Kocher 5.11 916 function propagateDetailAccents(){
917 if(PAGE_KIND!=="detail")return;
918
919 Array.from(
920 root.querySelectorAll(
921 ".arsn-call,.dmp-call,.ido-call,.pp-call,"+
922 ".arsn-source,.dmp-source,.ido-source,.pp-source"
923 )
924 ).forEach(function(el){
925 if(!visible(el))return;
926
927 var style=getComputedStyle(el);
928
Veronika Kocher 5.9 929 if(
Veronika Kocher 5.11 930 num(style.borderTopWidth)>=2
Veronika Kocher 5.9 931 ){
Veronika Kocher 5.11 932 var match=
933 paletteMatch(
934 style.borderTopColor
Veronika Kocher 5.9 935 );
936
Veronika Kocher 5.11 937 if(match){
938 el.style.setProperty(
939 "border-left",
940 "4px solid "+match.hex,
941 "important"
Veronika Kocher 5.9 942 );
Veronika Kocher 5.8 943 }
944 }
Veronika Kocher 5.11 945 });
Veronika Kocher 5.8 946
Veronika Kocher 5.11 947 // Warning families: explicit safety override.
948 Array.from(
949 root.querySelectorAll(
950 ".arsn-warn,.dmp-warn,.ido-warn,.pp-warn,"+
951 ".warn,.warning,.warningmessage,.errormessage"
952 )
953 ).forEach(function(el){
954 if(!visible(el))return;
Veronika Kocher 5.8 955
Veronika Kocher 5.11 956 el.style.setProperty(
957 "border-left",
958 "4px solid #e94b13",
959 "important"
960 );
961 });
Veronika Kocher 5.8 962
Veronika Kocher 5.11 963 // Info families: explicit orientation override.
964 Array.from(
965 root.querySelectorAll(
966 ".arsn-info,.dmp-info,.ido-info,.pp-info,.infomessage"
967 )
968 ).forEach(function(el){
969 if(!visible(el))return;
Veronika Kocher 5.9 970
Veronika Kocher 5.11 971 el.style.setProperty(
972 "border-left",
973 "4px solid #21b6d7",
974 "important"
975 );
976 });
977 }
Veronika Kocher 5.9 978
Veronika Kocher 5.11 979 /* =======================================================
980 OVERVIEW SEMANTIC THEME PALETTE
981 ======================================================= */
Veronika Kocher 5.9 982
Veronika Kocher 5.11 983 function smallestThemeHeaders(){
984 return Array.from(
985 root.querySelectorAll(
986 "div,span,p,strong,h3,h4,h5,h6"
987 )
988 ).filter(function(el){
989 if(!visible(el))return false;
990 if(!themeFor(el.textContent))return false;
Veronika Kocher 5.9 991
Veronika Kocher 5.11 992 return !Array.from(
993 el.children||[]
994 ).some(function(child){
995 return !!themeFor(
996 child.textContent
997 );
Veronika Kocher 5.9 998 });
Veronika Kocher 5.11 999 });
Veronika Kocher 5.8 1000 }
1001
Veronika Kocher 5.11 1002 function findOverviewCard(header){
1003 var node=header.parentElement;
1004 var candidates=[];
Veronika Kocher 5.9 1005
Veronika Kocher 5.11 1006 while(node&&node!==root){
1007 var rect=node.getBoundingClientRect();
1008 var style=getComputedStyle(node);
Veronika Kocher 5.9 1009
Veronika Kocher 5.11 1010 var border=
1011 num(style.borderTopWidth)+
1012 num(style.borderRightWidth)+
1013 num(style.borderBottomWidth)+
1014 num(style.borderLeftWidth);
Veronika Kocher 5.9 1015
Veronika Kocher 5.11 1016 if(
1017 rect.width>=220&&
1018 rect.width<=800&&
1019 rect.height>=120&&
1020 border>=1
1021 ){
1022 candidates.push(node);
1023 }
Veronika Kocher 5.9 1024
Veronika Kocher 5.11 1025 node=node.parentElement;
1026 }
Veronika Kocher 5.9 1027
Veronika Kocher 5.11 1028 if(!candidates.length)return null;
Veronika Kocher 5.9 1029
Veronika Kocher 5.11 1030 candidates.sort(function(a,b){
1031 return (
1032 b.getBoundingClientRect().height-
1033 a.getBoundingClientRect().height
Veronika Kocher 5.10 1034 );
Veronika Kocher 5.11 1035 });
Veronika Kocher 5.9 1036
Veronika Kocher 5.11 1037 return candidates[0];
Veronika Kocher 5.9 1038 }
1039
Veronika Kocher 5.11 1040 function rowCandidates(link,card){
1041 var result=[];
Veronika Kocher 5.10 1042 var cardRect=
1043 card.getBoundingClientRect();
Veronika Kocher 5.9 1044
Veronika Kocher 5.11 1045 var node=link;
Veronika Kocher 5.9 1046
Veronika Kocher 5.11 1047 while(node&&node!==card){
1048 if(visible(node)){
1049 var rect=
1050 node.getBoundingClientRect();
Veronika Kocher 5.9 1051
Veronika Kocher 5.11 1052 if(
1053 rect.height<=105&&
1054 rect.width>=
1055 cardRect.width*.50&&
1056 rect.width<=
1057 cardRect.width*1.03
1058 ){
1059 result.push(node);
1060 }
1061 }
Veronika Kocher 5.9 1062
Veronika Kocher 5.11 1063 node=node.parentElement;
1064 }
1065
1066 return result;
1067 }
1068
1069 function chooseOuterRow(
1070 candidates,
1071 link
1072 ){
1073 if(!candidates.length){
1074 return link;
1075 }
1076
1077 var bordered=
1078 candidates.filter(function(el){
Veronika Kocher 5.10 1079 return (
Veronika Kocher 5.11 1080 num(
1081 getComputedStyle(el)
1082 .borderLeftWidth
1083 )>=1
Veronika Kocher 5.10 1084 );
1085 });
Veronika Kocher 5.9 1086
Veronika Kocher 5.11 1087 var pool=
1088 bordered.length
1089 ?bordered
1090 :candidates;
Veronika Kocher 5.9 1091
Veronika Kocher 5.11 1092 pool.sort(function(a,b){
1093 var ar=
1094 a.getBoundingClientRect();
Veronika Kocher 5.9 1095
Veronika Kocher 5.11 1096 var br=
1097 b.getBoundingClientRect();
Veronika Kocher 5.9 1098
Veronika Kocher 5.11 1099 return (
1100 ar.left-br.left||
1101 br.width-ar.width
1102 );
1103 });
Veronika Kocher 5.9 1104
Veronika Kocher 5.11 1105 return pool[0]||link;
1106 }
Veronika Kocher 5.9 1107
Veronika Kocher 5.11 1108 function applyOverviewPalette(){
1109 if(PAGE_KIND!=="overview"){
1110 return [];
Veronika Kocher 5.10 1111 }
Veronika Kocher 5.9 1112
Veronika Kocher 5.11 1113 var headers=
1114 smallestThemeHeaders()
1115 .map(function(el){
1116 return {
1117 el:el,
1118 theme:
1119 themeFor(
1120 el.textContent
1121 ),
1122 card:
1123 findOverviewCard(
1124 el
1125 )
1126 };
Veronika Kocher 5.10 1127 })
Veronika Kocher 5.11 1128 .filter(function(row){
1129 return !!row.card;
1130 });
Veronika Kocher 5.9 1131
Veronika Kocher 5.11 1132 var unique=[];
1133 var seenHeaders=new Set();
Veronika Kocher 5.9 1134
Veronika Kocher 5.11 1135 headers.forEach(function(row){
1136 var key=
1137 row.theme.name+
1138 "|"+
1139 Math.round(
1140 row.card
1141 .getBoundingClientRect()
1142 .left
1143 )+
1144 "|"+
1145 Math.round(
1146 row.el
1147 .getBoundingClientRect()
1148 .top
1149 );
Veronika Kocher 5.9 1150
Veronika Kocher 5.11 1151 if(!seenHeaders.has(key)){
1152 seenHeaders.add(key);
1153 unique.push(row);
1154 }
1155 });
Veronika Kocher 5.9 1156
Veronika Kocher 5.11 1157 unique.forEach(function(row){
1158 var headerRect=
1159 row.el
1160 .getBoundingClientRect();
Veronika Kocher 5.9 1161
Veronika Kocher 5.11 1162 row.el.style.setProperty(
1163 "background",
1164 row.theme.bg,
1165 "important"
Veronika Kocher 5.10 1166 );
1167
Veronika Kocher 5.11 1168 row.el.style.setProperty(
1169 "color",
1170 row.theme.text,
1171 "important"
Veronika Kocher 5.10 1172 );
1173
Veronika Kocher 5.11 1174 row.el.style.setProperty(
1175 "text-align",
1176 "left",
1177 "important"
Veronika Kocher 5.10 1178 );
Veronika Kocher 5.9 1179
Veronika Kocher 5.11 1180 row.el.style.setProperty(
1181 "word-spacing",
1182 "normal",
1183 "important"
1184 );
Veronika Kocher 5.10 1185
Veronika Kocher 5.11 1186 var later=
1187 unique
1188 .filter(function(other){
1189 return (
1190 other.card===row.card&&
1191 other.el
1192 .getBoundingClientRect()
1193 .top>
1194 headerRect.top+2
1195 );
1196 })
1197 .sort(function(a,b){
1198 return (
1199 a.el
1200 .getBoundingClientRect()
1201 .top-
1202 b.el
1203 .getBoundingClientRect()
1204 .top
1205 );
1206 });
Veronika Kocher 5.10 1207
Veronika Kocher 5.11 1208 var stopTop=
1209 later.length
1210 ?later[0].el
1211 .getBoundingClientRect()
1212 .top
1213 :Infinity;
Veronika Kocher 5.10 1214
1215 Array.from(
Veronika Kocher 5.11 1216 row.card.querySelectorAll("a")
1217 ).forEach(function(link){
1218 if(!visible(link))return;
Veronika Kocher 5.10 1219
Veronika Kocher 5.11 1220 var rect=
1221 link.getBoundingClientRect();
Veronika Kocher 5.10 1222
Veronika Kocher 5.11 1223 if(
1224 rect.top<=
1225 headerRect.bottom-2||
1226 rect.top>=
1227 stopTop-2
1228 ){
1229 return;
1230 }
Veronika Kocher 5.10 1231
Veronika Kocher 5.11 1232 var candidates=
1233 rowCandidates(
1234 link,
1235 row.card
1236 );
1237
1238 var target=
1239 chooseOuterRow(
1240 candidates,
1241 link
1242 );
1243
1244 candidates.forEach(function(el){
1245 el.style.setProperty(
1246 "border-left",
1247 "0 solid transparent",
1248 "important"
1249 );
1250 });
1251
1252 target.style.setProperty(
1253 "border-left",
1254 "3px solid "+
1255 row.theme.accent,
1256 "important"
Veronika Kocher 5.10 1257 );
Veronika Kocher 5.11 1258
1259 target.style.setProperty(
1260 "box-sizing",
1261 "border-box",
1262 "important"
Veronika Kocher 5.10 1263 );
Veronika Kocher 5.9 1264 });
Veronika Kocher 5.11 1265 });
Veronika Kocher 5.9 1266
Veronika Kocher 5.11 1267 return unique;
Veronika Kocher 5.10 1268 }
Veronika Kocher 5.9 1269
Veronika Kocher 5.11 1270 /* =======================================================
1271 OVERVIEW CARD HEIGHT + FIRST THEMATIC ROW
1272 ======================================================= */
Veronika Kocher 5.10 1273
Veronika Kocher 5.11 1274 function alignOverviewCards(headers){
1275 if(
1276 PAGE_KIND!=="overview"||
1277 window.innerWidth<=MOBILE_MAX
1278 ){
1279 return;
1280 }
Veronika Kocher 5.10 1281
Veronika Kocher 5.11 1282 var cards=[];
1283 var seen=new Set();
Veronika Kocher 5.10 1284
Veronika Kocher 5.11 1285 headers.forEach(function(row){
1286 if(!seen.has(row.card)){
1287 seen.add(row.card);
1288 cards.push(row.card);
1289 }
1290 });
Veronika Kocher 5.10 1291
Veronika Kocher 5.11 1292 if(cards.length<2){
1293 return;
1294 }
Veronika Kocher 5.10 1295
Veronika Kocher 5.11 1296 // Group cards by actual top position.
1297 var groups=[];
Veronika Kocher 5.10 1298
Veronika Kocher 5.11 1299 cards.forEach(function(card){
1300 var top=
1301 card.getBoundingClientRect().top;
Veronika Kocher 5.10 1302
Veronika Kocher 5.11 1303 var group=null;
Veronika Kocher 5.10 1304
Veronika Kocher 5.11 1305 for(var i=0;i<groups.length;i++){
Veronika Kocher 5.10 1306 if(
Veronika Kocher 5.11 1307 Math.abs(
1308 groups[i].top-top
1309 )<=ROW_TOLERANCE
Veronika Kocher 5.10 1310 ){
Veronika Kocher 5.11 1311 group=groups[i];
1312 break;
Veronika Kocher 5.10 1313 }
Veronika Kocher 5.11 1314 }
Veronika Kocher 5.10 1315
Veronika Kocher 5.11 1316 if(!group){
1317 group={
1318 top:top,
1319 cards:[]
1320 };
1321 groups.push(group);
1322 }
Veronika Kocher 5.10 1323
Veronika Kocher 5.11 1324 group.cards.push(card);
1325 });
Veronika Kocher 5.10 1326
Veronika Kocher 5.11 1327 groups.forEach(function(group){
1328 if(group.cards.length<2){
1329 return;
1330 }
Veronika Kocher 5.10 1331
Veronika Kocher 5.11 1332 var firstHeaders=
1333 group.cards.map(function(card){
1334 var candidates=
1335 headers
1336 .filter(function(row){
1337 return row.card===card;
1338 })
1339 .sort(function(a,b){
1340 return (
1341 a.el
1342 .getBoundingClientRect()
1343 .top-
1344 b.el
1345 .getBoundingClientRect()
1346 .top
1347 );
1348 });
Veronika Kocher 5.10 1349
Veronika Kocher 5.11 1350 return candidates.length
1351 ?candidates[0]
1352 :null;
1353 });
Veronika Kocher 5.10 1354
Veronika Kocher 5.11 1355 if(
1356 !firstHeaders.some(function(row){
1357 return !row;
1358 })
1359 ){
1360 var targetTop=
1361 Math.max.apply(
1362 Math,
1363 firstHeaders.map(function(row){
1364 return (
1365 row.el
1366 .getBoundingClientRect()
1367 .top-
1368 row.card
1369 .getBoundingClientRect()
1370 .top
1371 );
1372 })
1373 );
Veronika Kocher 5.8 1374
Veronika Kocher 5.11 1375 firstHeaders.forEach(function(row){
1376 var relativeTop=
1377 row.el
1378 .getBoundingClientRect()
1379 .top-
1380 row.card
1381 .getBoundingClientRect()
1382 .top;
Veronika Kocher 5.9 1383
Veronika Kocher 5.11 1384 var delta=
1385 targetTop-relativeTop;
Veronika Kocher 5.9 1386
Veronika Kocher 5.11 1387 if(delta>1){
1388 saveStyle(
1389 row.el,
1390 originalMargin,
1391 "margin-top"
1392 );
Veronika Kocher 5.10 1393
Veronika Kocher 5.11 1394 var current=
1395 num(
1396 getComputedStyle(
1397 row.el
1398 ).marginTop
1399 );
Veronika Kocher 5.9 1400
Veronika Kocher 5.11 1401 row.el.style.setProperty(
1402 "margin-top",
1403 (
1404 current+delta
1405 )+"px"
1406 );
Veronika Kocher 5.9 1407
Veronika Kocher 5.11 1408 row.el.setAttribute(
1409 "data-sn-master-first-row",
1410 "1"
1411 );
Veronika Kocher 5.9 1412
Veronika Kocher 5.11 1413 managedMargin.add(
1414 row.el
1415 );
1416 }
1417 });
1418 }
Veronika Kocher 5.9 1419
Veronika Kocher 5.11 1420 var maxHeight=0;
Veronika Kocher 5.9 1421
Veronika Kocher 5.11 1422 group.cards.forEach(function(card){
1423 maxHeight=
1424 Math.max(
1425 maxHeight,
1426 card
1427 .getBoundingClientRect()
1428 .height
1429 );
1430 });
Veronika Kocher 5.9 1431
Veronika Kocher 5.11 1432 maxHeight=
1433 Math.ceil(maxHeight);
Veronika Kocher 5.9 1434
Veronika Kocher 5.11 1435 group.cards.forEach(function(card){
1436 saveStyle(
1437 card,
1438 originalHeight,
1439 "min-height"
1440 );
Veronika Kocher 5.9 1441
Veronika Kocher 5.11 1442 card.style.setProperty(
1443 "min-height",
1444 maxHeight+"px"
Veronika Kocher 5.9 1445 );
1446
Veronika Kocher 5.11 1447 card.setAttribute(
1448 "data-sn-master-equal-height",
1449 "1"
1450 );
Veronika Kocher 5.9 1451
Veronika Kocher 5.11 1452 managedHeight.add(
1453 card
1454 );
1455 });
Veronika Kocher 5.9 1456 });
1457 }
1458
Veronika Kocher 5.11 1459 /* =======================================================
1460 DETAIL GRID EQUAL HEIGHT, DESKTOP ONLY
1461 ======================================================= */
Veronika Kocher 5.9 1462
Veronika Kocher 5.11 1463 function equaliseDetailGrids(){
Veronika Kocher 5.10 1464 if(
Veronika Kocher 5.11 1465 PAGE_KIND!=="detail"||
1466 window.innerWidth<=MOBILE_MAX
Veronika Kocher 5.10 1467 ){
Veronika Kocher 5.11 1468 return;
Veronika Kocher 5.10 1469 }
Veronika Kocher 5.9 1470
Veronika Kocher 5.11 1471 var selectors=[
1472 ".arsn-grid",
1473 ".arsn-grid-2",
1474 ".arsn-grid-3",
1475 ".dmp-grid",
1476 ".ido-grid",
1477 ".pp-grid"
1478 ];
Veronika Kocher 5.9 1479
Veronika Kocher 5.11 1480 selectors.forEach(function(selector){
1481 Array.from(
1482 root.querySelectorAll(selector)
1483 ).forEach(function(grid){
1484 var children=
1485 Array.from(
1486 grid.children||[]
1487 ).filter(visible);
Veronika Kocher 5.9 1488
Veronika Kocher 5.11 1489 if(children.length<2){
1490 return;
1491 }
Veronika Kocher 5.9 1492
Veronika Kocher 5.11 1493 var groups=[];
Veronika Kocher 5.9 1494
Veronika Kocher 5.11 1495 children.forEach(function(child){
1496 var top=
1497 child
1498 .getBoundingClientRect()
1499 .top;
Veronika Kocher 5.9 1500
Veronika Kocher 5.11 1501 var group=null;
Veronika Kocher 5.9 1502
Veronika Kocher 5.11 1503 for(var i=0;i<groups.length;i++){
1504 if(
1505 Math.abs(
1506 groups[i].top-top
1507 )<=ROW_TOLERANCE
1508 ){
1509 group=groups[i];
1510 break;
1511 }
1512 }
Veronika Kocher 5.9 1513
Veronika Kocher 5.11 1514 if(!group){
1515 group={
1516 top:top,
1517 items:[]
1518 };
1519 groups.push(group);
1520 }
Veronika Kocher 5.9 1521
Veronika Kocher 5.11 1522 group.items.push(child);
1523 });
Veronika Kocher 5.9 1524
Veronika Kocher 5.11 1525 groups.forEach(function(group){
1526 if(group.items.length<2){
1527 return;
1528 }
Veronika Kocher 5.8 1529
Veronika Kocher 5.11 1530 var maxHeight=0;
Veronika Kocher 5.10 1531
Veronika Kocher 5.11 1532 group.items.forEach(function(item){
1533 maxHeight=
1534 Math.max(
1535 maxHeight,
1536 item
1537 .getBoundingClientRect()
1538 .height
1539 );
1540 });
Veronika Kocher 5.10 1541
Veronika Kocher 5.11 1542 maxHeight=
1543 Math.ceil(maxHeight);
Veronika Kocher 5.8 1544
Veronika Kocher 5.11 1545 group.items.forEach(function(item){
1546 saveStyle(
1547 item,
1548 originalHeight,
1549 "min-height"
1550 );
Veronika Kocher 5.8 1551
Veronika Kocher 5.11 1552 item.style.setProperty(
1553 "min-height",
1554 maxHeight+"px"
1555 );
Veronika Kocher 5.9 1556
Veronika Kocher 5.11 1557 item.setAttribute(
1558 "data-sn-master-equal-height",
1559 "1"
1560 );
Veronika Kocher 5.8 1561
Veronika Kocher 5.11 1562 managedHeight.add(item);
1563 });
Veronika Kocher 5.8 1564 });
Veronika Kocher 5.11 1565 });
1566 });
1567 }
Veronika Kocher 5.8 1568
Veronika Kocher 5.11 1569 /* =======================================================
1570 RUN / RESPONSIVE SCHEDULING
1571 ======================================================= */
Veronika Kocher 5.8 1572
Veronika Kocher 5.11 1573 function run(){
1574 if(running)return;
Veronika Kocher 5.8 1575
Veronika Kocher 5.11 1576 running=true;
Veronika Kocher 5.10 1577
Veronika Kocher 5.11 1578 try{
1579 resetRuntime();
1580 applyPlaceholderBadge();
1581 propagateDetailAccents();
Veronika Kocher 5.10 1582
Veronika Kocher 5.11 1583 var headers=
1584 applyOverviewPalette();
Veronika Kocher 5.10 1585
Veronika Kocher 5.12 1586 makeThreeLineAreaLabels();
1587 makeFilledRedOrangeCTAsBorderless();
1588
Veronika Kocher 5.11 1589 if(
1590 window.innerWidth>
1591 MOBILE_MAX
1592 ){
1593 alignOverviewCards(
1594 headers
1595 );
Veronika Kocher 5.8 1596
Veronika Kocher 5.11 1597 equaliseDetailGrids();
1598 }
Veronika Kocher 5.10 1599 }finally{
Veronika Kocher 5.11 1600 running=false;
Veronika Kocher 5.10 1601 }
Veronika Kocher 5.8 1602 }
1603
Veronika Kocher 5.11 1604 function onResize(){
Veronika Kocher 5.10 1605 if(resizeTimer){
1606 clearTimeout(
1607 resizeTimer
1608 );
1609 }
Veronika Kocher 5.9 1610
Veronika Kocher 5.10 1611 resizeTimer=
1612 setTimeout(
1613 function(){
1614 resizeTimer=0;
Veronika Kocher 5.11 1615 run();
Veronika Kocher 5.10 1616 },
1617 RESIZE_DEBOUNCE
1618 );
Veronika Kocher 5.8 1619 }
1620
Veronika Kocher 5.11 1621 async function waitForReady(){
1622 if(
1623 document.readyState!=="complete"
1624 ){
1625 await new Promise(function(resolve){
1626 window.addEventListener(
1627 "load",
1628 resolve,
1629 {once:true}
1630 );
1631 });
1632 }
1633
1634 if(
1635 document.fonts&&
1636 document.fonts.ready
1637 ){
1638 try{
1639 await document.fonts.ready;
1640 }catch(error){}
1641 }
1642
Veronika Kocher 5.10 1643 var images=
1644 Array.from(
1645 root.querySelectorAll("img")
1646 );
Veronika Kocher 5.8 1647
Veronika Kocher 5.11 1648 await Promise.all(
Veronika Kocher 5.10 1649 images.map(function(img){
1650 if(img.complete){
1651 return Promise.resolve();
1652 }
Veronika Kocher 5.8 1653
Veronika Kocher 5.10 1654 return new Promise(function(resolve){
1655 var done=function(){
1656 resolve();
1657 };
1658
1659 img.addEventListener(
1660 "load",
1661 done,
1662 {once:true}
1663 );
1664
1665 img.addEventListener(
1666 "error",
1667 done,
1668 {once:true}
1669 );
1670 });
1671 })
1672 );
1673
Veronika Kocher 5.11 1674 run();
Veronika Kocher 5.8 1675 }
1676
Veronika Kocher 5.11 1677 window.addEventListener(
Veronika Kocher 5.10 1678 "resize",
Veronika Kocher 5.11 1679 onResize,
Veronika Kocher 5.10 1680 {passive:true}
1681 );
1682
Veronika Kocher 5.11 1683 waitForReady();
Veronika Kocher 5.8 1684 })();
1685 </script>
Veronika Kocher 5.10 1686
Veronika Kocher 5.11 1687 <!-- SN_SERVICE_NAVIGATOR_MASTER_STYLE_END -->
1688 {{/html}}
1689