Änderungen von Dokument Art & Research Services Navigator
Zuletzt geändert von Veronika Kocher am Freitag, 18 Sep. 2026 16:47
Von Version 11.1
bearbeitet von Veronika Kocher
am Donnerstag, 03 Sep. 2026 13:08
am Donnerstag, 03 Sep. 2026 13:08
Änderungskommentar:
Es gibt keinen Kommentar für diese Version
Auf Version 8.1
bearbeitet von Veronika Kocher
am Donnerstag, 03 Sep. 2026 8:58
am Donnerstag, 03 Sep. 2026 8:58
Änderungskommentar:
Es gibt keinen Kommentar für diese Version
Zusammenfassung
-
Seiteneigenschaften (1 geändert, 0 hinzugefügt, 0 gelöscht)
Details
- Seiteneigenschaften
-
- Inhalt
-
... ... @@ -2,8 +2,9 @@ 2 2 3 3 Der **Service-Navigator Kunst & Forschung** hilft dir, für jede Phase deines Projekts die passende Orientierung, Services und Ressourcen zu finden. 4 4 5 -{{info title="Unterstützung für dein Projekt:"}} 6 - 5 +{{info title="Unterstützung für dein Projekt: 6 +"}} 7 + 7 7 **Support Kunst und Forschung (SKF)** begleitet Projekt- und Fördervorhaben und arbeitet je nach Bedarf mit den passenden Services der Universität zusammen. 8 8 9 9 Der Navigator führt dich entlang der Projektphasen zu den Angeboten und Ansprechstellen, die für dein Vorhaben relevant sind. ... ... @@ -634,1148 +634,3 @@ 634 634 {{/info}} 635 635 ))) 636 636 637 -{{html clean="false"}} 638 -<!-- SN_SERVICE_NAVIGATOR_MASTER_STYLE_START --> 639 - 640 -<style data-sn-service-navigator-master="1"> 641 -/* ========================================================= 642 - MASTER TYPOGRAPHY 643 - ========================================================= */ 644 -#xwikicontent h1, 645 -#xwikicontent h2, 646 -#xwikicontent h3, 647 -#xwikicontent h4, 648 -#xwikicontent h5, 649 -#xwikicontent h6, 650 -#xwikicontent .box-title, 651 -#xwikicontent [role="heading"], 652 -#xwikicontent h1 a, 653 -#xwikicontent h2 a, 654 -#xwikicontent h3 a, 655 -#xwikicontent h4 a, 656 -#xwikicontent h5 a, 657 -#xwikicontent h6 a, 658 -#xwikicontent .box-title a, 659 -#xwikicontent [role="heading"] a{ 660 - text-align:left!important; 661 - text-justify:auto!important; 662 - word-spacing:normal!important; 663 -} 664 - 665 -/* ========================================================= 666 - COMING SOON / IN VORBEREITUNG 667 - ========================================================= */ 668 -.sn-coming-soon-badge{ 669 - display:inline-block; 670 - vertical-align:middle; 671 - margin-left:10px; 672 - padding:4px 8px; 673 - border-radius:14px; 674 - border:1px solid #efd9cc; 675 - background:#fff4ee; 676 - color:#8a4d36; 677 - font-size:11px; 678 - font-weight:700; 679 - letter-spacing:.055em; 680 - line-height:1.2; 681 - white-space:nowrap; 682 -} 683 - 684 -/* ========================================================= 685 - NATIVE / DETAIL CALLOUT GEOMETRY 686 - Preserve existing backgrounds. 687 - ========================================================= */ 688 -#xwikicontent .arsn-info, 689 -#xwikicontent .dmp-info, 690 -#xwikicontent .ido-info, 691 -#xwikicontent .pp-info, 692 -#xwikicontent .infomessage{ 693 - box-sizing:border-box!important; 694 - border-left:4px solid #21b6d7!important; 695 - border-radius:8px; 696 - text-align:left!important; 697 - word-spacing:normal!important; 698 -} 699 - 700 -#xwikicontent .arsn-warn, 701 -#xwikicontent .dmp-warn, 702 -#xwikicontent .ido-warn, 703 -#xwikicontent .pp-warn, 704 -#xwikicontent .warn, 705 -#xwikicontent .warning, 706 -#xwikicontent .warningmessage, 707 -#xwikicontent .errormessage{ 708 - box-sizing:border-box!important; 709 - border-left:4px solid #e94b13!important; 710 - border-radius:8px; 711 - text-align:left!important; 712 - word-spacing:normal!important; 713 -} 714 - 715 -[data-sn-master-equal-height], 716 -[data-sn-master-first-row]{ 717 - box-sizing:border-box; 718 -} 719 -</style> 720 - 721 -<script data-sn-service-navigator-master="1"> 722 -(function(){ 723 - "use strict"; 724 - 725 - var PAGE_KIND="overview"; 726 - var PLACEHOLDER=false; 727 - var PLACEHOLDER_LABEL="IN VORBEREITUNG"; 728 - 729 - var MOBILE_MAX=767; 730 - var ROW_TOLERANCE=6; 731 - var RESIZE_DEBOUNCE=220; 732 - 733 - var root= 734 - document.getElementById("xwikicontent")|| 735 - document.querySelector(".xwiki-rendering-content")|| 736 - document.querySelector("main")|| 737 - document.body; 738 - 739 - if(!root)return; 740 - 741 - var managedHeight=new Set(); 742 - var managedMargin=new Set(); 743 - var originalHeight=new WeakMap(); 744 - var originalMargin=new WeakMap(); 745 - 746 - var resizeTimer=0; 747 - var running=false; 748 - 749 - var THEMES=[ 750 - { 751 - name:"BLUE", 752 - accent:"#21b6d7", 753 - bg:"#eaf7fb", 754 - text:"#315d68", 755 - labels:[ 756 - "HIER STARTEN", 757 - "ENTSCHEIDEN", 758 - "ÜBERPRÜFEN & ANPASSEN", 759 - "START HERE", 760 - "DECIDE", 761 - "REVIEW & ADAPT" 762 - ] 763 - }, 764 - { 765 - name:"RED", 766 - accent:"#e94b13", 767 - bg:"#fff1ec", 768 - text:"#8a4d36", 769 - labels:[ 770 - "PLANEN & ORGANISIEREN", 771 - "ORGANISIEREN & DOKUMENTIEREN", 772 - "PUBLIZIEREN & PRÄSENTIEREN", 773 - "PLAN & ORGANISE", 774 - "PLAN & ORGANIZE", 775 - "ORGANISE & DOCUMENT", 776 - "ORGANIZE & DOCUMENT", 777 - "PUBLISH & PRESENT" 778 - ] 779 - }, 780 - { 781 - name:"YELLOW", 782 - accent:"#f0aa00", 783 - bg:"#fff8e7", 784 - text:"#785b17", 785 - labels:[ 786 - "SCHÜTZEN & KLÄREN", 787 - "STANDARDISIEREN & IDENTIFIZIEREN", 788 - "ÖFFNEN, NACHNUTZEN & AUFFINDBAR MACHEN", 789 - "PROTECT & CLARIFY", 790 - "STANDARDISE & IDENTIFY", 791 - "STANDARDIZE & IDENTIFY", 792 - "OPEN, REUSE & MAKE FINDABLE" 793 - ] 794 - }, 795 - { 796 - name:"GREEN", 797 - accent:"#38b76a", 798 - bg:"#edf9f1", 799 - text:"#3f7451", 800 - labels:[ 801 - "INFRASTRUKTUR EINRICHTEN", 802 - "INFRASTRUKTUR & ZUSAMMENARBEIT EINRICHTEN", 803 - "SPEICHERN & ZUGRIFF STEUERN", 804 - "REPOSITORIUM, ERHALTEN & ÜBERGEBEN", 805 - "SET UP INFRASTRUCTURE", 806 - "SET UP INFRASTRUCTURE & COLLABORATION", 807 - "STORE & CONTROL ACCESS", 808 - "REPOSITORY, PRESERVE & HAND OVER" 809 - ] 810 - } 811 - ]; 812 - 813 - function num(value){ 814 - var n=parseFloat(value); 815 - return Number.isFinite(n)?n:0; 816 - } 817 - 818 - function norm(value){ 819 - return String(value||"") 820 - .replace(/\s+/g," ") 821 - .trim() 822 - .toUpperCase(); 823 - } 824 - 825 - function visible(el){ 826 - if(!el||el.nodeType!==1)return false; 827 - 828 - var style=getComputedStyle(el); 829 - var rect=el.getBoundingClientRect(); 830 - 831 - return ( 832 - style.display!=="none"&& 833 - style.visibility!=="hidden"&& 834 - rect.width>20&& 835 - rect.height>4 836 - ); 837 - } 838 - 839 - function saveStyle(el,map,property){ 840 - if(map.has(el))return; 841 - 842 - map.set(el,{ 843 - value:el.style.getPropertyValue(property), 844 - priority:el.style.getPropertyPriority(property) 845 - }); 846 - } 847 - 848 - function restoreStyle(el,map,property){ 849 - var original=map.get(el); 850 - 851 - if(original&&original.value){ 852 - el.style.setProperty( 853 - property, 854 - original.value, 855 - original.priority||"" 856 - ); 857 - }else{ 858 - el.style.removeProperty(property); 859 - } 860 - } 861 - 862 - function resetRuntime(){ 863 - managedHeight.forEach(function(el){ 864 - restoreStyle( 865 - el, 866 - originalHeight, 867 - "min-height" 868 - ); 869 - el.removeAttribute( 870 - "data-sn-master-equal-height" 871 - ); 872 - }); 873 - 874 - managedMargin.forEach(function(el){ 875 - restoreStyle( 876 - el, 877 - originalMargin, 878 - "margin-top" 879 - ); 880 - el.removeAttribute( 881 - "data-sn-master-first-row" 882 - ); 883 - }); 884 - 885 - managedHeight.clear(); 886 - managedMargin.clear(); 887 - } 888 - 889 - function themeFor(text){ 890 - var value=norm(text); 891 - 892 - for(var i=0;i<THEMES.length;i++){ 893 - for(var j=0;j<THEMES[i].labels.length;j++){ 894 - var label=THEMES[i].labels[j]; 895 - 896 - if( 897 - value===label|| 898 - value.indexOf(label+" ")===0|| 899 - value.indexOf(label+" -")===0|| 900 - value.indexOf(label+" ·")===0 901 - ){ 902 - return THEMES[i]; 903 - } 904 - } 905 - } 906 - 907 - return null; 908 - } 909 - 910 - /* ======================================================= 911 - PLACEHOLDER BADGE 912 - ======================================================= */ 913 - 914 - function applyPlaceholderBadge(){ 915 - if(!PLACEHOLDER)return; 916 - 917 - if( 918 - document.querySelector( 919 - ".sn-coming-soon-badge" 920 - ) 921 - ){ 922 - return; 923 - } 924 - 925 - var title= 926 - document.querySelector( 927 - "#document-title" 928 - )|| 929 - document.querySelector( 930 - "h1" 931 - ); 932 - 933 - if(!title)return; 934 - 935 - var badge= 936 - document.createElement( 937 - "span" 938 - ); 939 - 940 - badge.className= 941 - "sn-coming-soon-badge"; 942 - 943 - badge.textContent= 944 - PLACEHOLDER_LABEL; 945 - 946 - badge.setAttribute( 947 - "aria-label", 948 - PLACEHOLDER_LABEL 949 - ); 950 - 951 - title.appendChild( 952 - badge 953 - ); 954 - } 955 - 956 - /* ======================================================= 957 - DETAIL PAGE OWN-ACCENT PROPAGATION 958 - ======================================================= */ 959 - 960 - function parseRGB(value){ 961 - var match=String(value||"").match( 962 - /rgba?\(\s*([\d.]+)\s*,\s*([\d.]+)\s*,\s*([\d.]+)/i 963 - ); 964 - 965 - if(!match)return null; 966 - 967 - return [ 968 - Number(match[1]), 969 - Number(match[2]), 970 - Number(match[3]) 971 - ]; 972 - } 973 - 974 - function distance(a,b){ 975 - return Math.sqrt( 976 - Math.pow(a[0]-b[0],2)+ 977 - Math.pow(a[1]-b[1],2)+ 978 - Math.pow(a[2]-b[2],2) 979 - ); 980 - } 981 - 982 - function paletteMatch(cssColor){ 983 - var rgb=parseRGB(cssColor); 984 - 985 - if(!rgb)return null; 986 - 987 - var palette=[ 988 - {hex:"#21b6d7",rgb:[33,182,215]}, 989 - {hex:"#e94b13",rgb:[233,75,19]}, 990 - {hex:"#f0aa00",rgb:[240,170,0]}, 991 - {hex:"#38b76a",rgb:[56,183,106]} 992 - ]; 993 - 994 - var best=null; 995 - var bestDistance=Infinity; 996 - 997 - palette.forEach(function(item){ 998 - var d=distance(rgb,item.rgb); 999 - 1000 - if(d<bestDistance){ 1001 - best=item; 1002 - bestDistance=d; 1003 - } 1004 - }); 1005 - 1006 - return bestDistance<=30 1007 - ?best 1008 - :null; 1009 - } 1010 - 1011 - function propagateDetailAccents(){ 1012 - if(PAGE_KIND!=="detail")return; 1013 - 1014 - Array.from( 1015 - root.querySelectorAll( 1016 - ".arsn-call,.dmp-call,.ido-call,.pp-call,"+ 1017 - ".arsn-source,.dmp-source,.ido-source,.pp-source" 1018 - ) 1019 - ).forEach(function(el){ 1020 - if(!visible(el))return; 1021 - 1022 - var style=getComputedStyle(el); 1023 - 1024 - if( 1025 - num(style.borderTopWidth)>=2 1026 - ){ 1027 - var match= 1028 - paletteMatch( 1029 - style.borderTopColor 1030 - ); 1031 - 1032 - if(match){ 1033 - el.style.setProperty( 1034 - "border-left", 1035 - "4px solid "+match.hex, 1036 - "important" 1037 - ); 1038 - } 1039 - } 1040 - }); 1041 - 1042 - // Warning families: explicit safety override. 1043 - Array.from( 1044 - root.querySelectorAll( 1045 - ".arsn-warn,.dmp-warn,.ido-warn,.pp-warn,"+ 1046 - ".warn,.warning,.warningmessage,.errormessage" 1047 - ) 1048 - ).forEach(function(el){ 1049 - if(!visible(el))return; 1050 - 1051 - el.style.setProperty( 1052 - "border-left", 1053 - "4px solid #e94b13", 1054 - "important" 1055 - ); 1056 - }); 1057 - 1058 - // Info families: explicit orientation override. 1059 - Array.from( 1060 - root.querySelectorAll( 1061 - ".arsn-info,.dmp-info,.ido-info,.pp-info,.infomessage" 1062 - ) 1063 - ).forEach(function(el){ 1064 - if(!visible(el))return; 1065 - 1066 - el.style.setProperty( 1067 - "border-left", 1068 - "4px solid #21b6d7", 1069 - "important" 1070 - ); 1071 - }); 1072 - } 1073 - 1074 - /* ======================================================= 1075 - OVERVIEW SEMANTIC THEME PALETTE 1076 - ======================================================= */ 1077 - 1078 - function smallestThemeHeaders(){ 1079 - return Array.from( 1080 - root.querySelectorAll( 1081 - "div,span,p,strong,h3,h4,h5,h6" 1082 - ) 1083 - ).filter(function(el){ 1084 - if(!visible(el))return false; 1085 - if(!themeFor(el.textContent))return false; 1086 - 1087 - return !Array.from( 1088 - el.children||[] 1089 - ).some(function(child){ 1090 - return !!themeFor( 1091 - child.textContent 1092 - ); 1093 - }); 1094 - }); 1095 - } 1096 - 1097 - function findOverviewCard(header){ 1098 - var node=header.parentElement; 1099 - var candidates=[]; 1100 - 1101 - while(node&&node!==root){ 1102 - var rect=node.getBoundingClientRect(); 1103 - var style=getComputedStyle(node); 1104 - 1105 - var border= 1106 - num(style.borderTopWidth)+ 1107 - num(style.borderRightWidth)+ 1108 - num(style.borderBottomWidth)+ 1109 - num(style.borderLeftWidth); 1110 - 1111 - if( 1112 - rect.width>=220&& 1113 - rect.width<=800&& 1114 - rect.height>=120&& 1115 - border>=1 1116 - ){ 1117 - candidates.push(node); 1118 - } 1119 - 1120 - node=node.parentElement; 1121 - } 1122 - 1123 - if(!candidates.length)return null; 1124 - 1125 - candidates.sort(function(a,b){ 1126 - return ( 1127 - b.getBoundingClientRect().height- 1128 - a.getBoundingClientRect().height 1129 - ); 1130 - }); 1131 - 1132 - return candidates[0]; 1133 - } 1134 - 1135 - function rowCandidates(link,card){ 1136 - var result=[]; 1137 - var cardRect= 1138 - card.getBoundingClientRect(); 1139 - 1140 - var node=link; 1141 - 1142 - while(node&&node!==card){ 1143 - if(visible(node)){ 1144 - var rect= 1145 - node.getBoundingClientRect(); 1146 - 1147 - if( 1148 - rect.height<=105&& 1149 - rect.width>= 1150 - cardRect.width*.50&& 1151 - rect.width<= 1152 - cardRect.width*1.03 1153 - ){ 1154 - result.push(node); 1155 - } 1156 - } 1157 - 1158 - node=node.parentElement; 1159 - } 1160 - 1161 - return result; 1162 - } 1163 - 1164 - function chooseOuterRow( 1165 - candidates, 1166 - link 1167 - ){ 1168 - if(!candidates.length){ 1169 - return link; 1170 - } 1171 - 1172 - var bordered= 1173 - candidates.filter(function(el){ 1174 - return ( 1175 - num( 1176 - getComputedStyle(el) 1177 - .borderLeftWidth 1178 - )>=1 1179 - ); 1180 - }); 1181 - 1182 - var pool= 1183 - bordered.length 1184 - ?bordered 1185 - :candidates; 1186 - 1187 - pool.sort(function(a,b){ 1188 - var ar= 1189 - a.getBoundingClientRect(); 1190 - 1191 - var br= 1192 - b.getBoundingClientRect(); 1193 - 1194 - return ( 1195 - ar.left-br.left|| 1196 - br.width-ar.width 1197 - ); 1198 - }); 1199 - 1200 - return pool[0]||link; 1201 - } 1202 - 1203 - function applyOverviewPalette(){ 1204 - if(PAGE_KIND!=="overview"){ 1205 - return []; 1206 - } 1207 - 1208 - var headers= 1209 - smallestThemeHeaders() 1210 - .map(function(el){ 1211 - return { 1212 - el:el, 1213 - theme: 1214 - themeFor( 1215 - el.textContent 1216 - ), 1217 - card: 1218 - findOverviewCard( 1219 - el 1220 - ) 1221 - }; 1222 - }) 1223 - .filter(function(row){ 1224 - return !!row.card; 1225 - }); 1226 - 1227 - var unique=[]; 1228 - var seenHeaders=new Set(); 1229 - 1230 - headers.forEach(function(row){ 1231 - var key= 1232 - row.theme.name+ 1233 - "|"+ 1234 - Math.round( 1235 - row.card 1236 - .getBoundingClientRect() 1237 - .left 1238 - )+ 1239 - "|"+ 1240 - Math.round( 1241 - row.el 1242 - .getBoundingClientRect() 1243 - .top 1244 - ); 1245 - 1246 - if(!seenHeaders.has(key)){ 1247 - seenHeaders.add(key); 1248 - unique.push(row); 1249 - } 1250 - }); 1251 - 1252 - unique.forEach(function(row){ 1253 - var headerRect= 1254 - row.el 1255 - .getBoundingClientRect(); 1256 - 1257 - row.el.style.setProperty( 1258 - "background", 1259 - row.theme.bg, 1260 - "important" 1261 - ); 1262 - 1263 - row.el.style.setProperty( 1264 - "color", 1265 - row.theme.text, 1266 - "important" 1267 - ); 1268 - 1269 - row.el.style.setProperty( 1270 - "text-align", 1271 - "left", 1272 - "important" 1273 - ); 1274 - 1275 - row.el.style.setProperty( 1276 - "word-spacing", 1277 - "normal", 1278 - "important" 1279 - ); 1280 - 1281 - var later= 1282 - unique 1283 - .filter(function(other){ 1284 - return ( 1285 - other.card===row.card&& 1286 - other.el 1287 - .getBoundingClientRect() 1288 - .top> 1289 - headerRect.top+2 1290 - ); 1291 - }) 1292 - .sort(function(a,b){ 1293 - return ( 1294 - a.el 1295 - .getBoundingClientRect() 1296 - .top- 1297 - b.el 1298 - .getBoundingClientRect() 1299 - .top 1300 - ); 1301 - }); 1302 - 1303 - var stopTop= 1304 - later.length 1305 - ?later[0].el 1306 - .getBoundingClientRect() 1307 - .top 1308 - :Infinity; 1309 - 1310 - Array.from( 1311 - row.card.querySelectorAll("a") 1312 - ).forEach(function(link){ 1313 - if(!visible(link))return; 1314 - 1315 - var rect= 1316 - link.getBoundingClientRect(); 1317 - 1318 - if( 1319 - rect.top<= 1320 - headerRect.bottom-2|| 1321 - rect.top>= 1322 - stopTop-2 1323 - ){ 1324 - return; 1325 - } 1326 - 1327 - var candidates= 1328 - rowCandidates( 1329 - link, 1330 - row.card 1331 - ); 1332 - 1333 - var target= 1334 - chooseOuterRow( 1335 - candidates, 1336 - link 1337 - ); 1338 - 1339 - candidates.forEach(function(el){ 1340 - el.style.setProperty( 1341 - "border-left", 1342 - "0 solid transparent", 1343 - "important" 1344 - ); 1345 - }); 1346 - 1347 - target.style.setProperty( 1348 - "border-left", 1349 - "3px solid "+ 1350 - row.theme.accent, 1351 - "important" 1352 - ); 1353 - 1354 - target.style.setProperty( 1355 - "box-sizing", 1356 - "border-box", 1357 - "important" 1358 - ); 1359 - }); 1360 - }); 1361 - 1362 - return unique; 1363 - } 1364 - 1365 - /* ======================================================= 1366 - OVERVIEW CARD HEIGHT + FIRST THEMATIC ROW 1367 - ======================================================= */ 1368 - 1369 - function alignOverviewCards(headers){ 1370 - if( 1371 - PAGE_KIND!=="overview"|| 1372 - window.innerWidth<=MOBILE_MAX 1373 - ){ 1374 - return; 1375 - } 1376 - 1377 - var cards=[]; 1378 - var seen=new Set(); 1379 - 1380 - headers.forEach(function(row){ 1381 - if(!seen.has(row.card)){ 1382 - seen.add(row.card); 1383 - cards.push(row.card); 1384 - } 1385 - }); 1386 - 1387 - if(cards.length<2){ 1388 - return; 1389 - } 1390 - 1391 - // Group cards by actual top position. 1392 - var groups=[]; 1393 - 1394 - cards.forEach(function(card){ 1395 - var top= 1396 - card.getBoundingClientRect().top; 1397 - 1398 - var group=null; 1399 - 1400 - for(var i=0;i<groups.length;i++){ 1401 - if( 1402 - Math.abs( 1403 - groups[i].top-top 1404 - )<=ROW_TOLERANCE 1405 - ){ 1406 - group=groups[i]; 1407 - break; 1408 - } 1409 - } 1410 - 1411 - if(!group){ 1412 - group={ 1413 - top:top, 1414 - cards:[] 1415 - }; 1416 - groups.push(group); 1417 - } 1418 - 1419 - group.cards.push(card); 1420 - }); 1421 - 1422 - groups.forEach(function(group){ 1423 - if(group.cards.length<2){ 1424 - return; 1425 - } 1426 - 1427 - var firstHeaders= 1428 - group.cards.map(function(card){ 1429 - var candidates= 1430 - headers 1431 - .filter(function(row){ 1432 - return row.card===card; 1433 - }) 1434 - .sort(function(a,b){ 1435 - return ( 1436 - a.el 1437 - .getBoundingClientRect() 1438 - .top- 1439 - b.el 1440 - .getBoundingClientRect() 1441 - .top 1442 - ); 1443 - }); 1444 - 1445 - return candidates.length 1446 - ?candidates[0] 1447 - :null; 1448 - }); 1449 - 1450 - if( 1451 - !firstHeaders.some(function(row){ 1452 - return !row; 1453 - }) 1454 - ){ 1455 - var targetTop= 1456 - Math.max.apply( 1457 - Math, 1458 - firstHeaders.map(function(row){ 1459 - return ( 1460 - row.el 1461 - .getBoundingClientRect() 1462 - .top- 1463 - row.card 1464 - .getBoundingClientRect() 1465 - .top 1466 - ); 1467 - }) 1468 - ); 1469 - 1470 - firstHeaders.forEach(function(row){ 1471 - var relativeTop= 1472 - row.el 1473 - .getBoundingClientRect() 1474 - .top- 1475 - row.card 1476 - .getBoundingClientRect() 1477 - .top; 1478 - 1479 - var delta= 1480 - targetTop-relativeTop; 1481 - 1482 - if(delta>1){ 1483 - saveStyle( 1484 - row.el, 1485 - originalMargin, 1486 - "margin-top" 1487 - ); 1488 - 1489 - var current= 1490 - num( 1491 - getComputedStyle( 1492 - row.el 1493 - ).marginTop 1494 - ); 1495 - 1496 - row.el.style.setProperty( 1497 - "margin-top", 1498 - ( 1499 - current+delta 1500 - )+"px" 1501 - ); 1502 - 1503 - row.el.setAttribute( 1504 - "data-sn-master-first-row", 1505 - "1" 1506 - ); 1507 - 1508 - managedMargin.add( 1509 - row.el 1510 - ); 1511 - } 1512 - }); 1513 - } 1514 - 1515 - var maxHeight=0; 1516 - 1517 - group.cards.forEach(function(card){ 1518 - maxHeight= 1519 - Math.max( 1520 - maxHeight, 1521 - card 1522 - .getBoundingClientRect() 1523 - .height 1524 - ); 1525 - }); 1526 - 1527 - maxHeight= 1528 - Math.ceil(maxHeight); 1529 - 1530 - group.cards.forEach(function(card){ 1531 - saveStyle( 1532 - card, 1533 - originalHeight, 1534 - "min-height" 1535 - ); 1536 - 1537 - card.style.setProperty( 1538 - "min-height", 1539 - maxHeight+"px" 1540 - ); 1541 - 1542 - card.setAttribute( 1543 - "data-sn-master-equal-height", 1544 - "1" 1545 - ); 1546 - 1547 - managedHeight.add( 1548 - card 1549 - ); 1550 - }); 1551 - }); 1552 - } 1553 - 1554 - /* ======================================================= 1555 - DETAIL GRID EQUAL HEIGHT, DESKTOP ONLY 1556 - ======================================================= */ 1557 - 1558 - function equaliseDetailGrids(){ 1559 - if( 1560 - PAGE_KIND!=="detail"|| 1561 - window.innerWidth<=MOBILE_MAX 1562 - ){ 1563 - return; 1564 - } 1565 - 1566 - var selectors=[ 1567 - ".arsn-grid", 1568 - ".arsn-grid-2", 1569 - ".arsn-grid-3", 1570 - ".dmp-grid", 1571 - ".ido-grid", 1572 - ".pp-grid" 1573 - ]; 1574 - 1575 - selectors.forEach(function(selector){ 1576 - Array.from( 1577 - root.querySelectorAll(selector) 1578 - ).forEach(function(grid){ 1579 - var children= 1580 - Array.from( 1581 - grid.children||[] 1582 - ).filter(visible); 1583 - 1584 - if(children.length<2){ 1585 - return; 1586 - } 1587 - 1588 - var groups=[]; 1589 - 1590 - children.forEach(function(child){ 1591 - var top= 1592 - child 1593 - .getBoundingClientRect() 1594 - .top; 1595 - 1596 - var group=null; 1597 - 1598 - for(var i=0;i<groups.length;i++){ 1599 - if( 1600 - Math.abs( 1601 - groups[i].top-top 1602 - )<=ROW_TOLERANCE 1603 - ){ 1604 - group=groups[i]; 1605 - break; 1606 - } 1607 - } 1608 - 1609 - if(!group){ 1610 - group={ 1611 - top:top, 1612 - items:[] 1613 - }; 1614 - groups.push(group); 1615 - } 1616 - 1617 - group.items.push(child); 1618 - }); 1619 - 1620 - groups.forEach(function(group){ 1621 - if(group.items.length<2){ 1622 - return; 1623 - } 1624 - 1625 - var maxHeight=0; 1626 - 1627 - group.items.forEach(function(item){ 1628 - maxHeight= 1629 - Math.max( 1630 - maxHeight, 1631 - item 1632 - .getBoundingClientRect() 1633 - .height 1634 - ); 1635 - }); 1636 - 1637 - maxHeight= 1638 - Math.ceil(maxHeight); 1639 - 1640 - group.items.forEach(function(item){ 1641 - saveStyle( 1642 - item, 1643 - originalHeight, 1644 - "min-height" 1645 - ); 1646 - 1647 - item.style.setProperty( 1648 - "min-height", 1649 - maxHeight+"px" 1650 - ); 1651 - 1652 - item.setAttribute( 1653 - "data-sn-master-equal-height", 1654 - "1" 1655 - ); 1656 - 1657 - managedHeight.add(item); 1658 - }); 1659 - }); 1660 - }); 1661 - }); 1662 - } 1663 - 1664 - /* ======================================================= 1665 - RUN / RESPONSIVE SCHEDULING 1666 - ======================================================= */ 1667 - 1668 - function run(){ 1669 - if(running)return; 1670 - 1671 - running=true; 1672 - 1673 - try{ 1674 - resetRuntime(); 1675 - applyPlaceholderBadge(); 1676 - propagateDetailAccents(); 1677 - 1678 - var headers= 1679 - applyOverviewPalette(); 1680 - 1681 - if( 1682 - window.innerWidth> 1683 - MOBILE_MAX 1684 - ){ 1685 - alignOverviewCards( 1686 - headers 1687 - ); 1688 - 1689 - equaliseDetailGrids(); 1690 - } 1691 - }finally{ 1692 - running=false; 1693 - } 1694 - } 1695 - 1696 - function onResize(){ 1697 - if(resizeTimer){ 1698 - clearTimeout( 1699 - resizeTimer 1700 - ); 1701 - } 1702 - 1703 - resizeTimer= 1704 - setTimeout( 1705 - function(){ 1706 - resizeTimer=0; 1707 - run(); 1708 - }, 1709 - RESIZE_DEBOUNCE 1710 - ); 1711 - } 1712 - 1713 - async function waitForReady(){ 1714 - if( 1715 - document.readyState!=="complete" 1716 - ){ 1717 - await new Promise(function(resolve){ 1718 - window.addEventListener( 1719 - "load", 1720 - resolve, 1721 - {once:true} 1722 - ); 1723 - }); 1724 - } 1725 - 1726 - if( 1727 - document.fonts&& 1728 - document.fonts.ready 1729 - ){ 1730 - try{ 1731 - await document.fonts.ready; 1732 - }catch(error){} 1733 - } 1734 - 1735 - var images= 1736 - Array.from( 1737 - root.querySelectorAll("img") 1738 - ); 1739 - 1740 - await Promise.all( 1741 - images.map(function(img){ 1742 - if(img.complete){ 1743 - return Promise.resolve(); 1744 - } 1745 - 1746 - return new Promise(function(resolve){ 1747 - var done=function(){ 1748 - resolve(); 1749 - }; 1750 - 1751 - img.addEventListener( 1752 - "load", 1753 - done, 1754 - {once:true} 1755 - ); 1756 - 1757 - img.addEventListener( 1758 - "error", 1759 - done, 1760 - {once:true} 1761 - ); 1762 - }); 1763 - }) 1764 - ); 1765 - 1766 - run(); 1767 - } 1768 - 1769 - window.addEventListener( 1770 - "resize", 1771 - onResize, 1772 - {passive:true} 1773 - ); 1774 - 1775 - waitForReady(); 1776 -})(); 1777 -</script> 1778 - 1779 -<!-- SN_SERVICE_NAVIGATOR_MASTER_STYLE_END --> 1780 -{{/html}} 1781 -