Version 5.11 by Veronika Kocher on Thursday, 03 Sep 2026 13:04

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">
29 <div class="ido-eye" style="color:#8a4d36;margin-bottom:5px">ENABLE · IDENTIFY DATA &amp; RESEARCH OUTPUTS</div>
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 }
346 </style>
Veronika Kocher 5.10 347
Veronika Kocher 5.11 348 <script data-sn-service-navigator-master="1">
Veronika Kocher 5.8 349 (function(){
350 "use strict";
351
Veronika Kocher 5.11 352 var PAGE_KIND="detail";
353 var PLACEHOLDER=false;
354 var PLACEHOLDER_LABEL="COMING SOON";
355
Veronika Kocher 5.8 356 var MOBILE_MAX=767;
Veronika Kocher 5.9 357 var ROW_TOLERANCE=6;
Veronika Kocher 5.10 358 var RESIZE_DEBOUNCE=220;
Veronika Kocher 5.8 359
360 var root=
361 document.getElementById("xwikicontent")||
362 document.querySelector(".xwiki-rendering-content")||
363 document.querySelector("main")||
364 document.body;
365
366 if(!root)return;
367
Veronika Kocher 5.11 368 var managedHeight=new Set();
369 var managedMargin=new Set();
370 var originalHeight=new WeakMap();
371 var originalMargin=new WeakMap();
Veronika Kocher 5.10 372
373 var resizeTimer=0;
Veronika Kocher 5.11 374 var running=false;
Veronika Kocher 5.10 375
Veronika Kocher 5.11 376 var THEMES=[
377 {
378 name:"BLUE",
379 accent:"#21b6d7",
380 bg:"#eaf7fb",
381 text:"#315d68",
382 labels:[
383 "HIER STARTEN",
384 "ENTSCHEIDEN",
385 "ÜBERPRÜFEN & ANPASSEN",
386 "START HERE",
387 "DECIDE",
388 "REVIEW & ADAPT"
389 ]
390 },
391 {
392 name:"RED",
393 accent:"#e94b13",
394 bg:"#fff1ec",
395 text:"#8a4d36",
396 labels:[
397 "PLANEN & ORGANISIEREN",
398 "ORGANISIEREN & DOKUMENTIEREN",
399 "PUBLIZIEREN & PRÄSENTIEREN",
400 "PLAN & ORGANISE",
401 "PLAN & ORGANIZE",
402 "ORGANISE & DOCUMENT",
403 "ORGANIZE & DOCUMENT",
404 "PUBLISH & PRESENT"
405 ]
406 },
407 {
408 name:"YELLOW",
409 accent:"#f0aa00",
410 bg:"#fff8e7",
411 text:"#785b17",
412 labels:[
413 "SCHÜTZEN & KLÄREN",
414 "STANDARDISIEREN & IDENTIFIZIEREN",
415 "ÖFFNEN, NACHNUTZEN & AUFFINDBAR MACHEN",
416 "PROTECT & CLARIFY",
417 "STANDARDISE & IDENTIFY",
418 "STANDARDIZE & IDENTIFY",
419 "OPEN, REUSE & MAKE FINDABLE"
420 ]
421 },
422 {
423 name:"GREEN",
424 accent:"#38b76a",
425 bg:"#edf9f1",
426 text:"#3f7451",
427 labels:[
428 "INFRASTRUKTUR EINRICHTEN",
429 "INFRASTRUKTUR & ZUSAMMENARBEIT EINRICHTEN",
430 "SPEICHERN & ZUGRIFF STEUERN",
431 "REPOSITORIUM, ERHALTEN & ÜBERGEBEN",
432 "SET UP INFRASTRUCTURE",
433 "SET UP INFRASTRUCTURE & COLLABORATION",
434 "STORE & CONTROL ACCESS",
435 "REPOSITORY, PRESERVE & HAND OVER"
436 ]
Veronika Kocher 5.9 437 }
Veronika Kocher 5.11 438 ];
Veronika Kocher 5.9 439
Veronika Kocher 5.11 440 function num(value){
441 var n=parseFloat(value);
442 return Number.isFinite(n)?n:0;
Veronika Kocher 5.8 443 }
444
Veronika Kocher 5.11 445 function norm(value){
446 return String(value||"")
Veronika Kocher 5.10 447 .replace(/\s+/g," ")
448 .trim()
449 .toUpperCase();
450 }
451
Veronika Kocher 5.11 452 function visible(el){
453 if(!el||el.nodeType!==1)return false;
Veronika Kocher 5.8 454
Veronika Kocher 5.11 455 var style=getComputedStyle(el);
456 var rect=el.getBoundingClientRect();
Veronika Kocher 5.10 457
458 return (
Veronika Kocher 5.11 459 style.display!=="none"&&
460 style.visibility!=="hidden"&&
461 rect.width>20&&
462 rect.height>4
Veronika Kocher 5.10 463 );
Veronika Kocher 5.8 464 }
465
Veronika Kocher 5.11 466 function saveStyle(el,map,property){
Veronika Kocher 5.9 467 if(map.has(el))return;
468
469 map.set(el,{
Veronika Kocher 5.11 470 value:el.style.getPropertyValue(property),
471 priority:el.style.getPropertyPriority(property)
Veronika Kocher 5.9 472 });
473 }
474
Veronika Kocher 5.11 475 function restoreStyle(el,map,property){
Veronika Kocher 5.9 476 var original=map.get(el);
477
478 if(original&&original.value){
479 el.style.setProperty(
480 property,
481 original.value,
482 original.priority||""
483 );
484 }else{
Veronika Kocher 5.11 485 el.style.removeProperty(property);
Veronika Kocher 5.9 486 }
487 }
488
Veronika Kocher 5.10 489 function resetRuntime(){
Veronika Kocher 5.11 490 managedHeight.forEach(function(el){
491 restoreStyle(
Veronika Kocher 5.9 492 el,
Veronika Kocher 5.11 493 originalHeight,
Veronika Kocher 5.9 494 "min-height"
495 );
496 el.removeAttribute(
Veronika Kocher 5.11 497 "data-sn-master-equal-height"
Veronika Kocher 5.9 498 );
499 });
500
Veronika Kocher 5.11 501 managedMargin.forEach(function(el){
502 restoreStyle(
Veronika Kocher 5.9 503 el,
Veronika Kocher 5.11 504 originalMargin,
Veronika Kocher 5.9 505 "margin-top"
506 );
507 el.removeAttribute(
Veronika Kocher 5.11 508 "data-sn-master-first-row"
Veronika Kocher 5.9 509 );
510 });
511
Veronika Kocher 5.11 512 managedHeight.clear();
513 managedMargin.clear();
514 }
Veronika Kocher 5.10 515
Veronika Kocher 5.11 516 function themeFor(text){
517 var value=norm(text);
Veronika Kocher 5.10 518
Veronika Kocher 5.11 519 for(var i=0;i<THEMES.length;i++){
520 for(var j=0;j<THEMES[i].labels.length;j++){
521 var label=THEMES[i].labels[j];
522
523 if(
524 value===label||
525 value.indexOf(label+" ")===0||
526 value.indexOf(label+" -")===0||
527 value.indexOf(label+" ·")===0
528 ){
529 return THEMES[i];
530 }
531 }
532 }
533
534 return null;
Veronika Kocher 5.9 535 }
536
Veronika Kocher 5.11 537 /* =======================================================
538 PLACEHOLDER BADGE
539 ======================================================= */
Veronika Kocher 5.10 540
Veronika Kocher 5.11 541 function applyPlaceholderBadge(){
542 if(!PLACEHOLDER)return;
Veronika Kocher 5.10 543
544 if(
Veronika Kocher 5.11 545 document.querySelector(
546 ".sn-coming-soon-badge"
547 )
Veronika Kocher 5.10 548 ){
Veronika Kocher 5.11 549 return;
Veronika Kocher 5.10 550 }
551
Veronika Kocher 5.11 552 var title=
553 document.querySelector(
554 "#document-title"
555 )||
556 document.querySelector(
557 "h1"
558 );
Veronika Kocher 5.10 559
Veronika Kocher 5.11 560 if(!title)return;
Veronika Kocher 5.10 561
Veronika Kocher 5.11 562 var badge=
563 document.createElement(
564 "span"
565 );
566
567 badge.className=
568 "sn-coming-soon-badge";
569
570 badge.textContent=
571 PLACEHOLDER_LABEL;
572
573 badge.setAttribute(
574 "aria-label",
575 PLACEHOLDER_LABEL
Veronika Kocher 5.10 576 );
577
Veronika Kocher 5.11 578 title.appendChild(
579 badge
580 );
581 }
Veronika Kocher 5.10 582
Veronika Kocher 5.11 583 /* =======================================================
584 DETAIL PAGE OWN-ACCENT PROPAGATION
585 ======================================================= */
Veronika Kocher 5.10 586
Veronika Kocher 5.11 587 function parseRGB(value){
588 var match=String(value||"").match(
589 /rgba?\(\s*([\d.]+)\s*,\s*([\d.]+)\s*,\s*([\d.]+)/i
Veronika Kocher 5.10 590 );
Veronika Kocher 5.11 591
592 if(!match)return null;
593
594 return [
595 Number(match[1]),
596 Number(match[2]),
597 Number(match[3])
598 ];
Veronika Kocher 5.10 599 }
600
Veronika Kocher 5.11 601 function distance(a,b){
602 return Math.sqrt(
603 Math.pow(a[0]-b[0],2)+
604 Math.pow(a[1]-b[1],2)+
605 Math.pow(a[2]-b[2],2)
606 );
607 }
Veronika Kocher 5.8 608
Veronika Kocher 5.11 609 function paletteMatch(cssColor){
610 var rgb=parseRGB(cssColor);
Veronika Kocher 5.9 611
Veronika Kocher 5.11 612 if(!rgb)return null;
Veronika Kocher 5.9 613
Veronika Kocher 5.11 614 var palette=[
615 {hex:"#21b6d7",rgb:[33,182,215]},
616 {hex:"#e94b13",rgb:[233,75,19]},
617 {hex:"#f0aa00",rgb:[240,170,0]},
618 {hex:"#38b76a",rgb:[56,183,106]}
619 ];
Veronika Kocher 5.8 620
Veronika Kocher 5.9 621 var best=null;
Veronika Kocher 5.11 622 var bestDistance=Infinity;
Veronika Kocher 5.8 623
Veronika Kocher 5.11 624 palette.forEach(function(item){
625 var d=distance(rgb,item.rgb);
Veronika Kocher 5.8 626
Veronika Kocher 5.11 627 if(d<bestDistance){
628 best=item;
629 bestDistance=d;
630 }
631 });
Veronika Kocher 5.9 632
Veronika Kocher 5.11 633 return bestDistance<=30
634 ?best
635 :null;
636 }
Veronika Kocher 5.8 637
Veronika Kocher 5.11 638 function propagateDetailAccents(){
639 if(PAGE_KIND!=="detail")return;
640
641 Array.from(
642 root.querySelectorAll(
643 ".arsn-call,.dmp-call,.ido-call,.pp-call,"+
644 ".arsn-source,.dmp-source,.ido-source,.pp-source"
645 )
646 ).forEach(function(el){
647 if(!visible(el))return;
648
649 var style=getComputedStyle(el);
650
Veronika Kocher 5.9 651 if(
Veronika Kocher 5.11 652 num(style.borderTopWidth)>=2
Veronika Kocher 5.9 653 ){
Veronika Kocher 5.11 654 var match=
655 paletteMatch(
656 style.borderTopColor
Veronika Kocher 5.9 657 );
658
Veronika Kocher 5.11 659 if(match){
660 el.style.setProperty(
661 "border-left",
662 "4px solid "+match.hex,
663 "important"
Veronika Kocher 5.9 664 );
Veronika Kocher 5.8 665 }
666 }
Veronika Kocher 5.11 667 });
Veronika Kocher 5.8 668
Veronika Kocher 5.11 669 // Warning families: explicit safety override.
670 Array.from(
671 root.querySelectorAll(
672 ".arsn-warn,.dmp-warn,.ido-warn,.pp-warn,"+
673 ".warn,.warning,.warningmessage,.errormessage"
674 )
675 ).forEach(function(el){
676 if(!visible(el))return;
Veronika Kocher 5.8 677
Veronika Kocher 5.11 678 el.style.setProperty(
679 "border-left",
680 "4px solid #e94b13",
681 "important"
682 );
683 });
Veronika Kocher 5.8 684
Veronika Kocher 5.11 685 // Info families: explicit orientation override.
686 Array.from(
687 root.querySelectorAll(
688 ".arsn-info,.dmp-info,.ido-info,.pp-info,.infomessage"
689 )
690 ).forEach(function(el){
691 if(!visible(el))return;
Veronika Kocher 5.9 692
Veronika Kocher 5.11 693 el.style.setProperty(
694 "border-left",
695 "4px solid #21b6d7",
696 "important"
697 );
698 });
699 }
Veronika Kocher 5.9 700
Veronika Kocher 5.11 701 /* =======================================================
702 OVERVIEW SEMANTIC THEME PALETTE
703 ======================================================= */
Veronika Kocher 5.9 704
Veronika Kocher 5.11 705 function smallestThemeHeaders(){
706 return Array.from(
707 root.querySelectorAll(
708 "div,span,p,strong,h3,h4,h5,h6"
709 )
710 ).filter(function(el){
711 if(!visible(el))return false;
712 if(!themeFor(el.textContent))return false;
Veronika Kocher 5.9 713
Veronika Kocher 5.11 714 return !Array.from(
715 el.children||[]
716 ).some(function(child){
717 return !!themeFor(
718 child.textContent
719 );
Veronika Kocher 5.9 720 });
Veronika Kocher 5.11 721 });
Veronika Kocher 5.8 722 }
723
Veronika Kocher 5.11 724 function findOverviewCard(header){
725 var node=header.parentElement;
726 var candidates=[];
Veronika Kocher 5.9 727
Veronika Kocher 5.11 728 while(node&&node!==root){
729 var rect=node.getBoundingClientRect();
730 var style=getComputedStyle(node);
Veronika Kocher 5.9 731
Veronika Kocher 5.11 732 var border=
733 num(style.borderTopWidth)+
734 num(style.borderRightWidth)+
735 num(style.borderBottomWidth)+
736 num(style.borderLeftWidth);
Veronika Kocher 5.9 737
Veronika Kocher 5.11 738 if(
739 rect.width>=220&&
740 rect.width<=800&&
741 rect.height>=120&&
742 border>=1
743 ){
744 candidates.push(node);
745 }
Veronika Kocher 5.9 746
Veronika Kocher 5.11 747 node=node.parentElement;
748 }
Veronika Kocher 5.9 749
Veronika Kocher 5.11 750 if(!candidates.length)return null;
Veronika Kocher 5.9 751
Veronika Kocher 5.11 752 candidates.sort(function(a,b){
753 return (
754 b.getBoundingClientRect().height-
755 a.getBoundingClientRect().height
Veronika Kocher 5.10 756 );
Veronika Kocher 5.11 757 });
Veronika Kocher 5.9 758
Veronika Kocher 5.11 759 return candidates[0];
Veronika Kocher 5.9 760 }
761
Veronika Kocher 5.11 762 function rowCandidates(link,card){
763 var result=[];
Veronika Kocher 5.10 764 var cardRect=
765 card.getBoundingClientRect();
Veronika Kocher 5.9 766
Veronika Kocher 5.11 767 var node=link;
Veronika Kocher 5.9 768
Veronika Kocher 5.11 769 while(node&&node!==card){
770 if(visible(node)){
771 var rect=
772 node.getBoundingClientRect();
Veronika Kocher 5.9 773
Veronika Kocher 5.11 774 if(
775 rect.height<=105&&
776 rect.width>=
777 cardRect.width*.50&&
778 rect.width<=
779 cardRect.width*1.03
780 ){
781 result.push(node);
782 }
783 }
Veronika Kocher 5.9 784
Veronika Kocher 5.11 785 node=node.parentElement;
786 }
787
788 return result;
789 }
790
791 function chooseOuterRow(
792 candidates,
793 link
794 ){
795 if(!candidates.length){
796 return link;
797 }
798
799 var bordered=
800 candidates.filter(function(el){
Veronika Kocher 5.10 801 return (
Veronika Kocher 5.11 802 num(
803 getComputedStyle(el)
804 .borderLeftWidth
805 )>=1
Veronika Kocher 5.10 806 );
807 });
Veronika Kocher 5.9 808
Veronika Kocher 5.11 809 var pool=
810 bordered.length
811 ?bordered
812 :candidates;
Veronika Kocher 5.9 813
Veronika Kocher 5.11 814 pool.sort(function(a,b){
815 var ar=
816 a.getBoundingClientRect();
Veronika Kocher 5.9 817
Veronika Kocher 5.11 818 var br=
819 b.getBoundingClientRect();
Veronika Kocher 5.9 820
Veronika Kocher 5.11 821 return (
822 ar.left-br.left||
823 br.width-ar.width
824 );
825 });
Veronika Kocher 5.9 826
Veronika Kocher 5.11 827 return pool[0]||link;
828 }
Veronika Kocher 5.9 829
Veronika Kocher 5.11 830 function applyOverviewPalette(){
831 if(PAGE_KIND!=="overview"){
832 return [];
Veronika Kocher 5.10 833 }
Veronika Kocher 5.9 834
Veronika Kocher 5.11 835 var headers=
836 smallestThemeHeaders()
837 .map(function(el){
838 return {
839 el:el,
840 theme:
841 themeFor(
842 el.textContent
843 ),
844 card:
845 findOverviewCard(
846 el
847 )
848 };
Veronika Kocher 5.10 849 })
Veronika Kocher 5.11 850 .filter(function(row){
851 return !!row.card;
852 });
Veronika Kocher 5.9 853
Veronika Kocher 5.11 854 var unique=[];
855 var seenHeaders=new Set();
Veronika Kocher 5.9 856
Veronika Kocher 5.11 857 headers.forEach(function(row){
858 var key=
859 row.theme.name+
860 "|"+
861 Math.round(
862 row.card
863 .getBoundingClientRect()
864 .left
865 )+
866 "|"+
867 Math.round(
868 row.el
869 .getBoundingClientRect()
870 .top
871 );
Veronika Kocher 5.9 872
Veronika Kocher 5.11 873 if(!seenHeaders.has(key)){
874 seenHeaders.add(key);
875 unique.push(row);
876 }
877 });
Veronika Kocher 5.9 878
Veronika Kocher 5.11 879 unique.forEach(function(row){
880 var headerRect=
881 row.el
882 .getBoundingClientRect();
Veronika Kocher 5.9 883
Veronika Kocher 5.11 884 row.el.style.setProperty(
885 "background",
886 row.theme.bg,
887 "important"
Veronika Kocher 5.10 888 );
889
Veronika Kocher 5.11 890 row.el.style.setProperty(
891 "color",
892 row.theme.text,
893 "important"
Veronika Kocher 5.10 894 );
895
Veronika Kocher 5.11 896 row.el.style.setProperty(
897 "text-align",
898 "left",
899 "important"
Veronika Kocher 5.10 900 );
Veronika Kocher 5.9 901
Veronika Kocher 5.11 902 row.el.style.setProperty(
903 "word-spacing",
904 "normal",
905 "important"
906 );
Veronika Kocher 5.10 907
Veronika Kocher 5.11 908 var later=
909 unique
910 .filter(function(other){
911 return (
912 other.card===row.card&&
913 other.el
914 .getBoundingClientRect()
915 .top>
916 headerRect.top+2
917 );
918 })
919 .sort(function(a,b){
920 return (
921 a.el
922 .getBoundingClientRect()
923 .top-
924 b.el
925 .getBoundingClientRect()
926 .top
927 );
928 });
Veronika Kocher 5.10 929
Veronika Kocher 5.11 930 var stopTop=
931 later.length
932 ?later[0].el
933 .getBoundingClientRect()
934 .top
935 :Infinity;
Veronika Kocher 5.10 936
937 Array.from(
Veronika Kocher 5.11 938 row.card.querySelectorAll("a")
939 ).forEach(function(link){
940 if(!visible(link))return;
Veronika Kocher 5.10 941
Veronika Kocher 5.11 942 var rect=
943 link.getBoundingClientRect();
Veronika Kocher 5.10 944
Veronika Kocher 5.11 945 if(
946 rect.top<=
947 headerRect.bottom-2||
948 rect.top>=
949 stopTop-2
950 ){
951 return;
952 }
Veronika Kocher 5.10 953
Veronika Kocher 5.11 954 var candidates=
955 rowCandidates(
956 link,
957 row.card
958 );
959
960 var target=
961 chooseOuterRow(
962 candidates,
963 link
964 );
965
966 candidates.forEach(function(el){
967 el.style.setProperty(
968 "border-left",
969 "0 solid transparent",
970 "important"
971 );
972 });
973
974 target.style.setProperty(
975 "border-left",
976 "3px solid "+
977 row.theme.accent,
978 "important"
Veronika Kocher 5.10 979 );
Veronika Kocher 5.11 980
981 target.style.setProperty(
982 "box-sizing",
983 "border-box",
984 "important"
Veronika Kocher 5.10 985 );
Veronika Kocher 5.9 986 });
Veronika Kocher 5.11 987 });
Veronika Kocher 5.9 988
Veronika Kocher 5.11 989 return unique;
Veronika Kocher 5.10 990 }
Veronika Kocher 5.9 991
Veronika Kocher 5.11 992 /* =======================================================
993 OVERVIEW CARD HEIGHT + FIRST THEMATIC ROW
994 ======================================================= */
Veronika Kocher 5.10 995
Veronika Kocher 5.11 996 function alignOverviewCards(headers){
997 if(
998 PAGE_KIND!=="overview"||
999 window.innerWidth<=MOBILE_MAX
1000 ){
1001 return;
1002 }
Veronika Kocher 5.10 1003
Veronika Kocher 5.11 1004 var cards=[];
1005 var seen=new Set();
Veronika Kocher 5.10 1006
Veronika Kocher 5.11 1007 headers.forEach(function(row){
1008 if(!seen.has(row.card)){
1009 seen.add(row.card);
1010 cards.push(row.card);
1011 }
1012 });
Veronika Kocher 5.10 1013
Veronika Kocher 5.11 1014 if(cards.length<2){
1015 return;
1016 }
Veronika Kocher 5.10 1017
Veronika Kocher 5.11 1018 // Group cards by actual top position.
1019 var groups=[];
Veronika Kocher 5.10 1020
Veronika Kocher 5.11 1021 cards.forEach(function(card){
1022 var top=
1023 card.getBoundingClientRect().top;
Veronika Kocher 5.10 1024
Veronika Kocher 5.11 1025 var group=null;
Veronika Kocher 5.10 1026
Veronika Kocher 5.11 1027 for(var i=0;i<groups.length;i++){
Veronika Kocher 5.10 1028 if(
Veronika Kocher 5.11 1029 Math.abs(
1030 groups[i].top-top
1031 )<=ROW_TOLERANCE
Veronika Kocher 5.10 1032 ){
Veronika Kocher 5.11 1033 group=groups[i];
1034 break;
Veronika Kocher 5.10 1035 }
Veronika Kocher 5.11 1036 }
Veronika Kocher 5.10 1037
Veronika Kocher 5.11 1038 if(!group){
1039 group={
1040 top:top,
1041 cards:[]
1042 };
1043 groups.push(group);
1044 }
Veronika Kocher 5.10 1045
Veronika Kocher 5.11 1046 group.cards.push(card);
1047 });
Veronika Kocher 5.10 1048
Veronika Kocher 5.11 1049 groups.forEach(function(group){
1050 if(group.cards.length<2){
1051 return;
1052 }
Veronika Kocher 5.10 1053
Veronika Kocher 5.11 1054 var firstHeaders=
1055 group.cards.map(function(card){
1056 var candidates=
1057 headers
1058 .filter(function(row){
1059 return row.card===card;
1060 })
1061 .sort(function(a,b){
1062 return (
1063 a.el
1064 .getBoundingClientRect()
1065 .top-
1066 b.el
1067 .getBoundingClientRect()
1068 .top
1069 );
1070 });
Veronika Kocher 5.10 1071
Veronika Kocher 5.11 1072 return candidates.length
1073 ?candidates[0]
1074 :null;
1075 });
Veronika Kocher 5.10 1076
Veronika Kocher 5.11 1077 if(
1078 !firstHeaders.some(function(row){
1079 return !row;
1080 })
1081 ){
1082 var targetTop=
1083 Math.max.apply(
1084 Math,
1085 firstHeaders.map(function(row){
1086 return (
1087 row.el
1088 .getBoundingClientRect()
1089 .top-
1090 row.card
1091 .getBoundingClientRect()
1092 .top
1093 );
1094 })
1095 );
Veronika Kocher 5.8 1096
Veronika Kocher 5.11 1097 firstHeaders.forEach(function(row){
1098 var relativeTop=
1099 row.el
1100 .getBoundingClientRect()
1101 .top-
1102 row.card
1103 .getBoundingClientRect()
1104 .top;
Veronika Kocher 5.9 1105
Veronika Kocher 5.11 1106 var delta=
1107 targetTop-relativeTop;
Veronika Kocher 5.9 1108
Veronika Kocher 5.11 1109 if(delta>1){
1110 saveStyle(
1111 row.el,
1112 originalMargin,
1113 "margin-top"
1114 );
Veronika Kocher 5.10 1115
Veronika Kocher 5.11 1116 var current=
1117 num(
1118 getComputedStyle(
1119 row.el
1120 ).marginTop
1121 );
Veronika Kocher 5.9 1122
Veronika Kocher 5.11 1123 row.el.style.setProperty(
1124 "margin-top",
1125 (
1126 current+delta
1127 )+"px"
1128 );
Veronika Kocher 5.9 1129
Veronika Kocher 5.11 1130 row.el.setAttribute(
1131 "data-sn-master-first-row",
1132 "1"
1133 );
Veronika Kocher 5.9 1134
Veronika Kocher 5.11 1135 managedMargin.add(
1136 row.el
1137 );
1138 }
1139 });
1140 }
Veronika Kocher 5.9 1141
Veronika Kocher 5.11 1142 var maxHeight=0;
Veronika Kocher 5.9 1143
Veronika Kocher 5.11 1144 group.cards.forEach(function(card){
1145 maxHeight=
1146 Math.max(
1147 maxHeight,
1148 card
1149 .getBoundingClientRect()
1150 .height
1151 );
1152 });
Veronika Kocher 5.9 1153
Veronika Kocher 5.11 1154 maxHeight=
1155 Math.ceil(maxHeight);
Veronika Kocher 5.9 1156
Veronika Kocher 5.11 1157 group.cards.forEach(function(card){
1158 saveStyle(
1159 card,
1160 originalHeight,
1161 "min-height"
1162 );
Veronika Kocher 5.9 1163
Veronika Kocher 5.11 1164 card.style.setProperty(
1165 "min-height",
1166 maxHeight+"px"
Veronika Kocher 5.9 1167 );
1168
Veronika Kocher 5.11 1169 card.setAttribute(
1170 "data-sn-master-equal-height",
1171 "1"
1172 );
Veronika Kocher 5.9 1173
Veronika Kocher 5.11 1174 managedHeight.add(
1175 card
1176 );
1177 });
Veronika Kocher 5.9 1178 });
1179 }
1180
Veronika Kocher 5.11 1181 /* =======================================================
1182 DETAIL GRID EQUAL HEIGHT, DESKTOP ONLY
1183 ======================================================= */
Veronika Kocher 5.9 1184
Veronika Kocher 5.11 1185 function equaliseDetailGrids(){
Veronika Kocher 5.10 1186 if(
Veronika Kocher 5.11 1187 PAGE_KIND!=="detail"||
1188 window.innerWidth<=MOBILE_MAX
Veronika Kocher 5.10 1189 ){
Veronika Kocher 5.11 1190 return;
Veronika Kocher 5.10 1191 }
Veronika Kocher 5.9 1192
Veronika Kocher 5.11 1193 var selectors=[
1194 ".arsn-grid",
1195 ".arsn-grid-2",
1196 ".arsn-grid-3",
1197 ".dmp-grid",
1198 ".ido-grid",
1199 ".pp-grid"
1200 ];
Veronika Kocher 5.9 1201
Veronika Kocher 5.11 1202 selectors.forEach(function(selector){
1203 Array.from(
1204 root.querySelectorAll(selector)
1205 ).forEach(function(grid){
1206 var children=
1207 Array.from(
1208 grid.children||[]
1209 ).filter(visible);
Veronika Kocher 5.9 1210
Veronika Kocher 5.11 1211 if(children.length<2){
1212 return;
1213 }
Veronika Kocher 5.9 1214
Veronika Kocher 5.11 1215 var groups=[];
Veronika Kocher 5.9 1216
Veronika Kocher 5.11 1217 children.forEach(function(child){
1218 var top=
1219 child
1220 .getBoundingClientRect()
1221 .top;
Veronika Kocher 5.9 1222
Veronika Kocher 5.11 1223 var group=null;
Veronika Kocher 5.9 1224
Veronika Kocher 5.11 1225 for(var i=0;i<groups.length;i++){
1226 if(
1227 Math.abs(
1228 groups[i].top-top
1229 )<=ROW_TOLERANCE
1230 ){
1231 group=groups[i];
1232 break;
1233 }
1234 }
Veronika Kocher 5.9 1235
Veronika Kocher 5.11 1236 if(!group){
1237 group={
1238 top:top,
1239 items:[]
1240 };
1241 groups.push(group);
1242 }
Veronika Kocher 5.9 1243
Veronika Kocher 5.11 1244 group.items.push(child);
1245 });
Veronika Kocher 5.9 1246
Veronika Kocher 5.11 1247 groups.forEach(function(group){
1248 if(group.items.length<2){
1249 return;
1250 }
Veronika Kocher 5.8 1251
Veronika Kocher 5.11 1252 var maxHeight=0;
Veronika Kocher 5.10 1253
Veronika Kocher 5.11 1254 group.items.forEach(function(item){
1255 maxHeight=
1256 Math.max(
1257 maxHeight,
1258 item
1259 .getBoundingClientRect()
1260 .height
1261 );
1262 });
Veronika Kocher 5.10 1263
Veronika Kocher 5.11 1264 maxHeight=
1265 Math.ceil(maxHeight);
Veronika Kocher 5.8 1266
Veronika Kocher 5.11 1267 group.items.forEach(function(item){
1268 saveStyle(
1269 item,
1270 originalHeight,
1271 "min-height"
1272 );
Veronika Kocher 5.8 1273
Veronika Kocher 5.11 1274 item.style.setProperty(
1275 "min-height",
1276 maxHeight+"px"
1277 );
Veronika Kocher 5.9 1278
Veronika Kocher 5.11 1279 item.setAttribute(
1280 "data-sn-master-equal-height",
1281 "1"
1282 );
Veronika Kocher 5.8 1283
Veronika Kocher 5.11 1284 managedHeight.add(item);
1285 });
Veronika Kocher 5.8 1286 });
Veronika Kocher 5.11 1287 });
1288 });
1289 }
Veronika Kocher 5.8 1290
Veronika Kocher 5.11 1291 /* =======================================================
1292 RUN / RESPONSIVE SCHEDULING
1293 ======================================================= */
Veronika Kocher 5.8 1294
Veronika Kocher 5.11 1295 function run(){
1296 if(running)return;
Veronika Kocher 5.8 1297
Veronika Kocher 5.11 1298 running=true;
Veronika Kocher 5.10 1299
Veronika Kocher 5.11 1300 try{
1301 resetRuntime();
1302 applyPlaceholderBadge();
1303 propagateDetailAccents();
Veronika Kocher 5.10 1304
Veronika Kocher 5.11 1305 var headers=
1306 applyOverviewPalette();
Veronika Kocher 5.10 1307
Veronika Kocher 5.11 1308 if(
1309 window.innerWidth>
1310 MOBILE_MAX
1311 ){
1312 alignOverviewCards(
1313 headers
1314 );
Veronika Kocher 5.8 1315
Veronika Kocher 5.11 1316 equaliseDetailGrids();
1317 }
Veronika Kocher 5.10 1318 }finally{
Veronika Kocher 5.11 1319 running=false;
Veronika Kocher 5.10 1320 }
Veronika Kocher 5.8 1321 }
1322
Veronika Kocher 5.11 1323 function onResize(){
Veronika Kocher 5.10 1324 if(resizeTimer){
1325 clearTimeout(
1326 resizeTimer
1327 );
1328 }
Veronika Kocher 5.9 1329
Veronika Kocher 5.10 1330 resizeTimer=
1331 setTimeout(
1332 function(){
1333 resizeTimer=0;
Veronika Kocher 5.11 1334 run();
Veronika Kocher 5.10 1335 },
1336 RESIZE_DEBOUNCE
1337 );
Veronika Kocher 5.8 1338 }
1339
Veronika Kocher 5.11 1340 async function waitForReady(){
1341 if(
1342 document.readyState!=="complete"
1343 ){
1344 await new Promise(function(resolve){
1345 window.addEventListener(
1346 "load",
1347 resolve,
1348 {once:true}
1349 );
1350 });
1351 }
1352
1353 if(
1354 document.fonts&&
1355 document.fonts.ready
1356 ){
1357 try{
1358 await document.fonts.ready;
1359 }catch(error){}
1360 }
1361
Veronika Kocher 5.10 1362 var images=
1363 Array.from(
1364 root.querySelectorAll("img")
1365 );
Veronika Kocher 5.8 1366
Veronika Kocher 5.11 1367 await Promise.all(
Veronika Kocher 5.10 1368 images.map(function(img){
1369 if(img.complete){
1370 return Promise.resolve();
1371 }
Veronika Kocher 5.8 1372
Veronika Kocher 5.10 1373 return new Promise(function(resolve){
1374 var done=function(){
1375 resolve();
1376 };
1377
1378 img.addEventListener(
1379 "load",
1380 done,
1381 {once:true}
1382 );
1383
1384 img.addEventListener(
1385 "error",
1386 done,
1387 {once:true}
1388 );
1389 });
1390 })
1391 );
1392
Veronika Kocher 5.11 1393 run();
Veronika Kocher 5.8 1394 }
1395
Veronika Kocher 5.11 1396 window.addEventListener(
Veronika Kocher 5.10 1397 "resize",
Veronika Kocher 5.11 1398 onResize,
Veronika Kocher 5.10 1399 {passive:true}
1400 );
1401
Veronika Kocher 5.11 1402 waitForReady();
Veronika Kocher 5.8 1403 })();
1404 </script>
Veronika Kocher 5.10 1405
Veronika Kocher 5.11 1406 <!-- SN_SERVICE_NAVIGATOR_MASTER_STYLE_END -->
1407 {{/html}}
1408