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

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