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