Project Planning & Organisation
.pp{max-width:1400px;margin:0 auto;color:#322f2b} .pp *{box-sizing:border-box}
.card{border:1px solid #e3ded6;border-radius:11px;background:#fcfbf8;box-shadow:0 1px 3px rgba(0,0,0,.035)}
.eye{font-size:12px;font-weight:700;letter-spacing:.075em;text-transform:uppercase}
.hero{height:125px;overflow:hidden;background:#f1eee9} .hero img{width:100%;height:100%;object-fit:cover;object-position:center 48%;display:block}
.grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(285px,1fr));gap:14px}
.check{position:relative;padding:12px 13px 12px 37px;border:1px solid #e3ded6;border-radius:8px;background:#fffdf9;color:#504a44;line-height:1.5}
.check:before{content:"✓";position:absolute;left:13px;top:10px;color:#e94b13;font-weight:800}
.info{padding:15px 17px;border:1px solid #c7e5ed;border-left:5px solid #21b6d7;background:#eaf6f9;border-radius:8px;color:#365e68}
.info strong{color:#2d5661} .warn{padding:15px 17px;border:1px solid #efd9cc;border-left:5px solid #e94b13;background:#fff6f1;border-radius:8px;color:#67564e} .warn strong{color:#744531}
.sec{margin:0 0 28px 0} .sec h3{font-size:22px;margin:0 0 6px;color:#35312d} .sec>p{color:#6a655e;line-height:1.55}
.role{padding:15px 16px;border:1px solid #e3ded6;border-top:4px solid #e94b13;border-radius:9px;background:#fcfbf8} .role h4{font-size:17px;margin:0 0 6px;color:#35312d} .role p{margin:0;color:#625d56;line-height:1.5}
.detail{margin:8px 0;border:1px solid #e3ded6;border-radius:8px;background:#fcfbf8;overflow:hidden} .detail summary{cursor:pointer;padding:12px 14px;font-weight:700;color:#403b36;background:#f3efe8} .detail[open] summary{border-bottom:1px solid #e3ded6} .detail .body{padding:14px 16px;color:#514c46;line-height:1.55}
.chip{display:inline-block;padding:4px 8px;margin:3px 4px 3px 0;border-radius:14px;background:#f3efe8;border:1px solid #e3ded6;color:#5c5650;font-size:12px;text-decoration:none}.chip:hover,.chip:focus{background:#fff7f1;border-color:#e7c8b8;color:#6f3f2e;text-decoration:none}
.tbl{width:100%;border-collapse:collapse;background:#fffdf9} .tbl th,.tbl td{border:1px solid #e3ded6;padding:10px 11px;vertical-align:top;text-align:left} .tbl th{background:#f3efe8;color:#403b36}
.linkgrid{display:grid;grid-template-columns:repeat(auto-fit,minmax(260px,1fr));gap:8px} .navlink{display:block;padding:10px 11px;border:1px solid #e9e4dc;border-left:3px solid #e94b13;border-radius:6px;background:#fffdf9;color:#252321;text-decoration:none;font-weight:600} .navlink:hover{background:#fff7f1;text-decoration:none}
.research-example-grid{
display:grid;
grid-template-columns:repeat(auto-fit,minmax(280px,1fr));
gap:14px;
margin-top:12px;
}
.research-example{
padding:16px 17px;
border:1px solid #e3ded6;
border-radius:9px;
background:#fcfbf8;
box-shadow:0 1px 3px rgba(0,0,0,.03);
}
.research-example h4{
font-size:18px;
margin:0 0 7px 0;
color:#35312d;
}
.research-example p{
margin:0 0 10px 0;
color:#625d56;
line-height:1.5;
}
.research-example a{
display:inline-block;
font-weight:700;
text-decoration:none;
}
.research-example a:hover,
.research-example a:focus{
text-decoration:underline;
}
Define the internal project structure before the detailed work plan
Write down names, not just functions. One person can hold several roles in a small project, but the responsibility should still be explicit.
Project / artistic-research lead
Owns the concept, scope, key decisions, quality and external commitments.
Institutional / academic home
The institute, department, special university facility or organisational unit in which the project is anchored.
Project administration
Coordinates proposal documents, deadlines, funder communication, contracts, evidence and internal routing.
Budget responsibility
Maintains the working budget, funding conditions, approvals, cost tracking and change control.
People / team responsibility
Clarifies staffing, recruitment, workload, contracts, onboarding, external contributors and collaboration.
Data / documentation responsibility
Coordinates files, storage, backup, access, metadata, consent, documentation and handover.
Infrastructure / production responsibility
Coordinates rooms, workshops, equipment, IT, procurement, logistics, safety and technical dependencies.
Communication / dissemination responsibility
Plans public communication, publication, events, documentation, credits, visibility and audiences.
Partner contact
Coordinates external institutions, deliverables, budget interfaces and agreements.
Use this order to navigate the Angewandte
Clarify the institute, department, special university facility or organisational unit that hosts it.
For art, research and externally funded projects, involve Support Kunst und Forschung early.
Finance, HR, Legal, IT, Facility, Events, Communication, International, Library, Studies, DEI, etc. only where needed.
Clarify internal deadlines, budget/HR approval, signing authority, contracts and external submission route.
Store the final call, approved budget, work plan, roles and submitted documents.
Decide who must approve changes to scope, staff, budget, partners, timeline or public outputs.
Use existing projects to understand possible research profiles and institutional homes
The Angewandte presents research projects through several research-focus perspectives. These pages are useful when you are trying to understand how a project like yours might be framed, where comparable projects are located in the University, which funding programmes have been used, and which institutes or research environments have hosted related work.
Fokus Künstlerische Forschung
Examples of artistic and arts-based research projects at the Angewandte, including many projects funded through FWF PEEK and related programmes. Use this page to see how artistic practice, research questions, project leadership and institutional affiliation come together in funded projects.
View artistic research projects ↗Fokus Wissenschaftliche Forschung
Examples of scientific research across the University's institutes and fields, including FWF-funded basic research, ESPRIT projects and other externally funded research. Use this page to compare project types, hosts, funding programmes and disciplinary or interdisciplinary research settings.
View scientific research projects ↗Fokus Relationale Forschung
Examples of projects organised through specific calls, thematic relationships and cross-cutting research frameworks, including INTRA, digital and social transformation and research-infrastructure initiatives. Use this page when your project connects disciplines, infrastructures, institutions or thematic programmes.
View relational research projects ↗Project-relevant structures of the Angewandte
Not every project needs every unit. Use the trigger descriptions below.
A · Your institute, department, workshop or special university facility — the project home
Involve early when: the project uses the unit's name, staff time, rooms, workshops, equipment, teaching, budget, infrastructure or institutional commitments.
Current institutes:
Special university facilities that can become project homes, partners, infrastructures or research resources:
B · Support Kunst und Forschung — project and funding coordination
Use when: developing artistic, scientific or arts-based research projects; looking for funding; preparing external proposals; coordinating third-party funded projects.
- concept development and feedback
- funding landscape and call fit
- administrative and financial project co-design
- coordination of funded projects and partners
- support involving FWF, FFG, EU programmes, City of Vienna and other funders
C · Rektorat — strategy, institutional commitment and university-level responsibility
Most projects do not begin by contacting the Rektorat directly. It becomes relevant when a project requires university-level decisions, commitments, strategy, resources, partnerships or signing authority. Route questions through your host unit and responsible service wherever possible.
- Rector: overall strategy, budget/personnel allocation to organisational units, institutional representation, international university partnerships, employment/service contracts and powers of attorney.
- Vice-Rector for Science, Research & Digitality: research strategy, artistic/scientific research support, digital development, IT & Digitalisation, Support Art & Research, University Library and doctoral admissions.
- Vice-Rector for Finance & Infrastructure: financial management, third-party funds management, resources, procurement/infrastructure, estates, Facility Management and Event Management.
- Vice-Rector for Art, Teaching & Learning: study/examination matters, teaching, teaching quality, curricular/learning issues and teaching resources.
- Vice-Rector for Cooperative Disciplinarity, Engagement & Innovation: international relations and partnerships, Diversity/Equity/Inclusion, International Office, AIL and Art x Science School for Transformation.
D · Finances — budget, accounting, controlling and resource planning
Use when: the project has a budget, third-party funds, invoices, income, cost planning, co-funding, financial reporting or institutional resources.
- Controlling: budget planning, monitoring, steering data, financial plans and reporting interfaces.
- Financial Accounting: university payments, creditors/debtors, service contracts/guest lectures, bookkeeping, assets, VAT/tax information and financial statements.
- Resource Planning: clarify current responsibilities for institutional resource planning and the project's budget route.
E · Personnel — staffing, contracts, workload, onboarding and team development
Use when: the project creates or changes employment, recruits project staff, uses existing staff time, requires onboarding or needs help with team collaboration.
- Personnel Management: employment and personnel administration; clarify the current route for project staff and contract types.
- Personnel Development: onboarding, team coaching, organisational development, conflict support/mediation, leadership coaching and staff development.
- Clarify personnel lead times before promising start dates in a proposal.
- Do not assume an external budget line automatically creates an employment route.
F · Legal & Data Protection — contracts, rights, IP, personal data and legal risk
Use when: agreements, external partners, licences, copyright/IP, personal data, confidentiality, complex terms or institutional legal commitments are involved.
- Legal Department: supports university members with legal questions.
- Data Protection Officer: involve where personal-data processing, data-sharing, processors/platforms or other privacy questions require specialist review.
- Plan legal review before the proposal deadline if funder/partner contracts are part of submission.
G · IT & Digitalisation — systems, digital services, infrastructure and IT projects
Use when: the project needs accounts, university IT, servers/storage, networking, specialist digital systems, integration, new software/services or a digital institutional process.
- Base
- ITD Project Coordination
- Central IT Services (ZID): university-wide information and communication infrastructure, service/support, networks, servers and art-university-specific IT systems.
H · Facility Management — rooms, procurement, material, building services, logistics and safety
Use when: the project needs space, temporary rooms, equipment/material procurement, technical building requirements, logistics, deliveries, storage, access or safety coordination.
- Procurement & Material Management: procurement advice, quotations, purchasing, orders/invoices, assets/inventory, materials.
- Building Technology & Safety
- Estates & Room Coordination: room and estate coordination, centrally bookable rooms.
- Post & Logistics
- Service & Operations
Facility Management · Procurement & Material Management · Estates & Room Coordination
I · Event Management — public events, event rooms and production coordination
Use when: the project contains a symposium, screening, performance, public presentation, conference, major exhibition event or requires centrally managed event rooms/services.
- supports employees with planning and implementation of university events
- supports idea and room finding, preparation, event delivery and follow-up
- coordinate early with Facility Management for room/building/technical dependencies
- coordinate public communication with Press & Communication
J · Press & Communication — public visibility, media, publications, web and cooperation
Use when: the project will represent the University publicly, needs press/media work, web/social communication, marketing, institutional publications, graphical/CI support or public cooperation communication.
- Press
- Publications / Edition Angewandte
- Cooperations
- Marketing
- Website / social media / newsletter
- institutional visual identity / CI considerations
K · International Office — mobility and international project context
Use when: staff/student mobility, exchange routes, international visitors or mobility funding are part of the project.
For broader university partnerships and institutional international cooperation, the responsible Vice-Rectorate / Rectorate route may also become relevant.
International Office · staff mobility · international.office@uni-ak.ac.at
L · University Library & research/discovery structures
Use when: the project needs literature, licensed databases, research discovery, publication/repository routes or library expertise.
Also think beyond the Library where your project uses institutional collections, archives or specialist research resources: Art Collection and Archive, Weibel Institute and other special university facilities can be relevant depending on the topic.
M · Studies, Teaching, Curricula & Doctoral Centre
Use when: the project directly affects teaching, courses, curricula, assessment, students, graduation work or doctoral study.
- Study Affairs: student administration and study-law processes from admission to graduation.
- Vice-Rector for Art, Teaching & Learning: teaching, studies/exams, teaching quality and teaching resources.
- Doctoral Centre: central contact for doctoral candidates; supports networking and project initiation across doctoral programmes.
- Quality Culture Teaching & Curriculum Workshop: involve for relevant teaching/curricular/quality-development questions according to current remit.
N · Diversity, Equity, Inclusion & Accessibility
Use when: accessibility, inclusion, participation design, equal opportunity, diversity, disability, structural barriers or inclusive communication need to be planned into the project.
- DEI connects diversity, equity/inclusion and accessibility expertise.
- Team Barrierefrei provides practical accessibility information and contacts for staff/students with disabilities.
- For events, plan accessibility early enough to budget interpretation, technical support, accessible rooms or other measures.
Diversity, Equity, Inclusion · Accessibility at the Angewandte
O · University Development & Quality Culture
Use when: the project is institution-wide, strategically relevant, develops organisational/quality processes, creates new cross-unit structures or needs connection to university development and quality culture.
For ordinary project delivery this is not a default project-administration unit. Involve it where the project's purpose genuinely touches institutional development or quality processes.
P · Equality / staff / student representation — independent advice and representation
These structures are not project-management offices, but they can be essential when a project raises employment, discrimination, participation or conflict questions.
- Arbeitskreis für Gleichbehandlungsfragen (AKG): confidential contact on equality, discrimination and harassment.
- Works Councils: representation of artistic/scientific and general university staff in employment matters.
- HUFAK / Students' Union: student representation; relevant where student participation and student interests are central.
- Arbitration Commission: part of the University's governance/interest-representation structure; not a routine project-planning service.
If the project does this, involve these structures early
| Project trigger | Start with | Then check |
|---|---|---|
| External research / arts-based research funding | Host unit + Support Kunst und Forschung | Finances, Personnel, Legal, Rectorate route as required |
| New staff / project employment / changed workload | Host unit + Personnel | Finances, Support Kunst und Forschung, Works Council if representation advice is needed |
| Large purchase / equipment / external service | Procurement & Material Management | Finances, host unit, IT or Facility depending on item |
| New software, server, database, digital platform or integration | IT & Digitalisation / ZID | Data Protection, Legal, procurement, research-data planning |
| Rooms, workshop, exhibition build, building intervention | Host unit + Facility / Room Coordination | Safety, procurement, Event Management, accessibility |
| Public event / symposium / screening / performance | Event Management | Facility, Press & Communication, rights, accessibility, safety |
| External contract / cooperation agreement / IP / confidentiality | Legal | Support Kunst und Forschung, Rectorate route, Finance, Data Protection |
| Personal data / participant data / interviews / recordings | Data Protection + project lead | Ethics/consent, IT/storage, Legal, funder requirements |
| Publication, media campaign, university web/social media | Press & Communication | Rights/licensing, Support Kunst und Forschung, repository/library |
| International mobility | International Office | Host unit, Support Kunst und Forschung, Personnel/Finance depending on funding |
| Formal international university partnership | Host unit + responsible Rectorate route | International Office, Legal, Support Kunst und Forschung |
| Teaching / curriculum / study-law component | Host institute/department | Vice-Rector Art/Teaching/Learning, Study Affairs, quality/curriculum structures |
| Doctoral project / doctoral candidate structure | Doctoral Centre + relevant programme | Research Vice-Rectorate/admission route, Support Kunst und Forschung |
| Accessibility / inclusion / disability requirements | DEI / Team Barrierefrei | Facility, Event Management, Communication, Personnel or Study Affairs |
| Discrimination / equality / harassment concern | AKG | Independent/confidential route; other units only as appropriate |
Your planning file should contain these components
Purpose, scope, non-scope, project type, host, lead, partners, start/end, outputs.
Who decides, does, approves, is consulted and must be informed.
Work packages, milestones, dependencies, decision points, public outputs and closure.
Costs, funding source, co-funding, institutional resources, assumptions and contingencies.
Existing staff, new hires, external contributors, workload, contracts, onboarding and handover.
Purchases, equipment, rooms, workshops, IT, logistics, safety and lead times.
Roles, budget interfaces, deliverables, agreements, IP, data, communication and escalation.
Third-party material, consent, personal data, licences, confidentiality and ethics review.
Audiences, media, publication, event needs, CI, accessibility and documentation.
Funding, people, rights, data, schedule, supplier, technical, venue, partner and reputational risks.
Important decisions, date, responsible person, reason and impact.
Final files, reporting, repository/archive, equipment, accounts, access, retention and responsibilities.
The external deadline is not your first deadline
| Planning point | Question |
|---|---|
| External submission / public opening | What must be complete and approved here? |
| Institutional approval / signature | Who needs final documents and review time? |
| Legal / partner agreements | What must be reviewed before submission? |
| Budget / personnel / procurement review | Are rates, hires, purchases and resources realistic and permitted? |
| Project concept freeze | When must scope, roles, work packages and outputs stop changing? |
| Partner input | When must partners deliver text, budgets, letters and approvals? |
| Internal start | When must planning begin to make all of this possible? |
Project-planning red flags
The project uses the University's name/resources but no host unit has accepted responsibility.
A partner, funder, venue or supplier has been promised something before the internal route is clear.
Employment/contract routes and lead times have not been checked.
Procurement, ownership, installation, IT, safety, maintenance and storage have not been planned.
Publication/exhibition/streaming has been promised without confirming rights, consent or data protection.
No one is responsible for final reporting, master files, repository/archive, equipment, accounts and access closure.
Related Enable topics
Search terms & related topics
[data-sn-equal-height-managed],
[data-sn-first-section-aligned]{
box-sizing:border-box;
}
(function(){
"use strict";
var MOBILE_MAX=767;
var ROW_TOLERANCE=6;
var MIN_W=150;
var MIN_H=36;
var MAX_PARENT_CHILDREN=16;
var SEARCH_DEPTH=5;
var root=
document.getElementById("xwikicontent")||
document.querySelector(".xwiki-rendering-content")||
document.querySelector("main")||
document.body;
if(!root)return;
var heightManaged=new Set();
var sectionManaged=new Set();
var originalMinHeight=new WeakMap();
var originalMarginTop=new WeakMap();
var raf=0;
function num(v){
var n=parseFloat(v);
return Number.isFinite(n)?n:0;
}
function visible(el,minW,minH){
if(!el||el.nodeType!==1)return false;
var s=getComputedStyle(el);
if(
s.display==="none"||
s.visibility==="hidden"||
Number(s.opacity)===0
){
return false;
}
var r=el.getBoundingClientRect();
return (
r.width>=(minW||1)&&
r.height>=(minH||1)
);
}
function excluded(el){
return (
!el.matches||
el.matches(
"button,input,select,textarea,option,label,img,svg,canvas,table,thead,tbody,tfoot,tr,td,th,summary,script,style,noscript,template,.btn,.chip,[role=button]"
)
);
}
function namedLikeBox(el){
var c=
typeof el.className==="string"
? el.className
: "";
return /(^|[s_-])(box|card|tile|panel|role|check|service|source|call|area|detail|resource|topic|warn|info)([s_-]|$)/i.test(c);
}
function boxLike(el){
if(!visible(el,MIN_W,MIN_H)||excluded(el))return false;
var s=getComputedStyle(el);
var r=el.getBoundingClientRect();
var border=
num(s.borderTopWidth)+
num(s.borderRightWidth)+
num(s.borderBottomWidth)+
num(s.borderLeftWidth);
var radius=Math.max(
num(s.borderTopLeftRadius),
num(s.borderTopRightRadius),
num(s.borderBottomLeftRadius),
num(s.borderBottomRightRadius)
);
var bg=
s.backgroundColor&&
s.backgroundColor!=="rgba(0, 0, 0, 0)"&&
s.backgroundColor!=="transparent";
var shadow=
s.boxShadow&&
s.boxShadow!=="none";
return (
namedLikeBox(el)||
border>=1||
(bg&&radius>=3)||
(shadow&&r.width>=180)
);
}
function saveOriginal(el,map,property){
if(map.has(el))return;
map.set(el,{
value:el.style.getPropertyValue(property),
priority:el.style.getPropertyPriority(property)
});
}
function restoreOriginal(el,map,property){
var original=map.get(el);
if(original&&original.value){
el.style.setProperty(
property,
original.value,
original.priority||""
);
}else{
el.style.removeProperty(property);
}
}
function reset(){
heightManaged.forEach(function(el){
restoreOriginal(
el,
originalMinHeight,
"min-height"
);
el.removeAttribute(
"data-sn-equal-height-managed"
);
});
sectionManaged.forEach(function(el){
restoreOriginal(
el,
originalMarginTop,
"margin-top"
);
el.removeAttribute(
"data-sn-first-section-aligned"
);
});
heightManaged.clear();
sectionManaged.clear();
}
function pickTarget(child){
if(!visible(child,MIN_W,MIN_H))return null;
if(boxLike(child)){
return child;
}
var cr=child.getBoundingClientRect();
var q=[];
Array.from(child.children||[]).forEach(function(el){
q.push({el:el,depth:1});
});
var best=null;
var bestScore=-Infinity;
while(q.length){
var item=q.shift();
var el=item.el;
if(!visible(el,MIN_W,MIN_H))continue;
var r=el.getBoundingClientRect();
if(
r.width>=cr.width*.68&&
boxLike(el)
){
var widthFit=
1-Math.min(
1,
Math.abs(cr.width-r.width)/
Math.max(1,cr.width)
);
var topFit=
1-Math.min(
1,
Math.abs(cr.top-r.top)/100
);
var score=
widthFit*6+
topFit*3+
Math.min(r.height,900)/450+
Math.min(r.width*r.height,900000)/900000;
if(score>bestScore){
best=el;
bestScore=score;
}
}
if(item.depth0;});
if(widths.length<2)return false;
var minWidth=Math.min.apply(Math,widths);
var maxWidth=Math.max.apply(Math,widths);
return (
maxWidth/
Math.max(1,minWidth)<=
1.9
);
}
function normalizeText(text){
return String(text||"")
.replace(/s+/g," ")
.trim()
.toUpperCase();
}
function exactKnownFirstSection(el){
var text=normalizeText(el.textContent);
return (
text==="HIER STARTEN"||
text==="ORGANISIEREN & DOKUMENTIEREN"||
text==="ENTSCHEIDEN"||
text==="START HERE"||
text==="GET STARTED"||
text==="ORGANISE & DOCUMENT"||
text==="ORGANIZE & DOCUMENT"||
text==="DECIDE"
);
}
function visuallyFirstSectionBar(card){
var cardRect=card.getBoundingClientRect();
var candidates=[];
Array.from(
card.querySelectorAll(
"div,p,span,strong,h3,h4,h5,h6"
)
).forEach(function(el){
if(!visible(el,20,6))return;
if(excluded(el))return;
var r=el.getBoundingClientRect();
var relativeTop=r.top-cardRect.top;
if(
relativeTop<45||
relativeTop>cardRect.height*.72
){
return;
}
var widthRatio=
r.width/
Math.max(1,cardRect.width);
if(
widthRatio<.55||
widthRatio>1.05||
r.height>54
){
return;
}
var text=normalizeText(el.textContent);
if(
text.length<2||
text.length>90
){
return;
}
var style=getComputedStyle(el);
var bg=
style.backgroundColor&&
style.backgroundColor!=="rgba(0, 0, 0, 0)"&&
style.backgroundColor!=="transparent";
var border=
num(style.borderTopWidth)+
num(style.borderRightWidth)+
num(style.borderBottomWidth)+
num(style.borderLeftWidth);
var mostlyUpper=
text.length>=3&&
text===text.toUpperCase();
var exact=exactKnownFirstSection(el);
var score=
(exact?20:0)+
(bg?6:0)+
(border>=1?2:0)+
(mostlyUpper?4:0)+
(num(style.fontWeight)>=600?1:0);
if(score>=7){
candidates.push({
el:el,
relativeTop:relativeTop,
width:r.width,
score:score
});
}
});
if(!candidates.length)return null;
candidates.sort(function(a,b){
if(a.score!==b.score)return b.score-a.score;
if(Math.abs(a.relativeTop-b.relativeTop)>3){
return a.relativeTop-b.relativeTop;
}
return b.width-a.width;
});
// For exact known labels always prefer the earliest exact match.
var exacts=candidates.filter(function(c){
return exactKnownFirstSection(c.el);
});
if(exacts.length){
exacts.sort(function(a,b){
return a.relativeTop-b.relativeTop||b.width-a.width;
});
return exacts[0].el;
}
// Generic fallback: earliest high-confidence bar.
candidates.sort(function(a,b){
return a.relativeTop-b.relativeTop||b.score-a.score||b.width-a.width;
});
return candidates[0].el;
}
function alignFirstSections(cards){
var rows=
cards.map(function(card){
var bar=
visuallyFirstSectionBar(card);
if(!bar)return null;
var cardRect=
card.getBoundingClientRect();
var barRect=
bar.getBoundingClientRect();
return {
card:card,
bar:bar,
relativeTop:
barRect.top-cardRect.top,
label:
normalizeText(bar.textContent)
};
});
// Conservative: only align when every card in the horizontal row
// has a reliable first section bar.
if(
rows.some(function(row){
return !row;
})
){
return null;
}
var targetTop=
Math.max.apply(
Math,
rows.map(function(row){
return row.relativeTop;
})
);
rows.forEach(function(row){
var delta=
targetTop-
row.relativeTop;
if(delta<=1)return;
saveOriginal(
row.bar,
originalMarginTop,
"margin-top"
);
var currentMargin=
num(
getComputedStyle(
row.bar
).marginTop
);
row.bar.style.setProperty(
"margin-top",
(
currentMargin+
delta
)+"px"
);
row.bar.setAttribute(
"data-sn-first-section-aligned",
"4"
);
sectionManaged.add(row.bar);
});
return {
labels:
rows.map(function(row){
return row.label;
}),
targetRelativeTop:
Math.round(targetTop)
};
}
function applyGroup(group){
if(!validHorizontalGroup(group)){
return null;
}
var cards=[];
var seen=new Set();
group.entries.forEach(function(entry){
if(!seen.has(entry.target)){
seen.add(entry.target);
cards.push(entry.target);
}
});
if(cards.length<2)return null;
var firstSection=
alignFirstSections(cards);
// The section alignment can change natural card heights.
// Measure only afterwards.
var maxHeight=0;
cards.forEach(function(card){
maxHeight=Math.max(
maxHeight,
card.getBoundingClientRect().height
);
});
maxHeight=Math.ceil(maxHeight);
if(maxHeight=2&&
parent.children.length<=MAX_PARENT_CHILDREN
);
});
var touched=new Set();
parents.forEach(function(parent){
var entries=[];
Array.from(parent.children).forEach(function(child){
if(!visible(child,MIN_W,MIN_H))return;
var target=pickTarget(child);
if(!target)return;
entries.push({
target:target,
rect:target.getBoundingClientRect()
});
});
if(entries.length<2)return;
groupsByVisualRow(entries).forEach(function(group){
if(!validHorizontalGroup(group))return;
var signature=
group.entries.map(function(entry){
return entry.target;
});
if(
!signature.some(function(el){
return !touched.has(el);
})
){
return;
}
var applied=
applyGroup(group);
if(applied){
signature.forEach(function(el){
touched.add(el);
});
}
});
});
}
function schedule(){
if(raf)cancelAnimationFrame(raf);
raf=requestAnimationFrame(function(){
raf=requestAnimationFrame(function(){
raf=0;
run();
});
});
}
addEventListener("resize",schedule,{passive:true});
addEventListener("load",schedule,{once:true});
root.addEventListener(
"click",
function(){
setTimeout(schedule,0);
},
true
);
Array.from(root.querySelectorAll("img")).forEach(function(img){
if(!img.complete){
img.addEventListener("load",schedule,{once:true});
}
});
if(document.fonts&&document.fonts.ready){
document.fonts.ready.then(schedule);
}
schedule();
setTimeout(schedule,200);
setTimeout(schedule,650);
setTimeout(schedule,1400);
})();
