Changes for page Plan Your Data Management
Last modified by Veronika Kocher on Friday, 04 Sep 2026 14:45
From version 4.7
edited by Veronika Kocher
on Wednesday, 02 Sep 2026 15:23
on Wednesday, 02 Sep 2026 15:23
Change comment:
There is no comment for this version
To version 4.8
edited by Veronika Kocher
on Thursday, 03 Sep 2026 9:18
on Thursday, 03 Sep 2026 9:18
Change comment:
There is no comment for this version
Summary
-
Page properties (1 modified, 0 added, 0 removed)
Details
- Page properties
-
- Content
-
... ... @@ -257,3 +257,237 @@ 257 257 </div> 258 258 {{/html}} 259 259 260 +{{html clean="false"}} 261 +<!-- SN_HORIZONTAL_BOX_HARMONIZER_START --> 262 +<style data-sn-horizontal-box-harmonizer="1"> 263 +[data-sn-equal-height-managed="1"]{box-sizing:border-box} 264 +@media(max-width:767px){ 265 + [data-sn-equal-height-managed="1"]{min-height:0!important} 266 +} 267 +</style> 268 +<script data-sn-horizontal-box-harmonizer="1"> 269 +(function(){ 270 + "use strict"; 271 + 272 + var MOBILE_MAX=767; 273 + var ROW_TOLERANCE=4; 274 + var MIN_W=150; 275 + var MIN_H=36; 276 + 277 + var root= 278 + document.getElementById("xwikicontent")|| 279 + document.querySelector(".xwiki-rendering-content")|| 280 + document.querySelector("main")|| 281 + document.body; 282 + 283 + if(!root)return; 284 + 285 + var managed=new Set(); 286 + var raf=0; 287 + 288 + function num(v){ 289 + var n=parseFloat(v); 290 + return Number.isFinite(n)?n:0; 291 + } 292 + 293 + function visible(el){ 294 + if(!el||el.nodeType!==1)return false; 295 + var s=getComputedStyle(el); 296 + if(s.display==="none"||s.visibility==="hidden"||Number(s.opacity)===0)return false; 297 + var r=el.getBoundingClientRect(); 298 + return r.width>=MIN_W&&r.height>=MIN_H; 299 + } 300 + 301 + function excluded(el){ 302 + return !el.matches||el.matches( 303 + "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]" 304 + ); 305 + } 306 + 307 + function namedLikeBox(el){ 308 + var c=typeof el.className==="string"?el.className:""; 309 + return /(^|[\s_-])(box|card|tile|panel|role|check|service|source|call|area|detail|resource|topic|warn|info)([\s_-]|$)/i.test(c); 310 + } 311 + 312 + function boxLike(el){ 313 + if(!visible(el)||excluded(el))return false; 314 + var s=getComputedStyle(el); 315 + var r=el.getBoundingClientRect(); 316 + var border= 317 + num(s.borderTopWidth)+num(s.borderRightWidth)+ 318 + num(s.borderBottomWidth)+num(s.borderLeftWidth); 319 + var radius=Math.max( 320 + num(s.borderTopLeftRadius),num(s.borderTopRightRadius), 321 + num(s.borderBottomLeftRadius),num(s.borderBottomRightRadius) 322 + ); 323 + var bg=s.backgroundColor&&s.backgroundColor!=="rgba(0, 0, 0, 0)"&&s.backgroundColor!=="transparent"; 324 + var shadow=s.boxShadow&&s.boxShadow!=="none"; 325 + return namedLikeBox(el)||border>=1||(bg&&radius>=3)||(shadow&&r.width>=180); 326 + } 327 + 328 + function pickTarget(child){ 329 + if(!visible(child))return null; 330 + if(boxLike(child))return child; 331 + 332 + var cr=child.getBoundingClientRect(); 333 + var q=[]; 334 + Array.from(child.children||[]).forEach(function(el){ 335 + q.push({el:el,depth:1}); 336 + }); 337 + 338 + var best=null,bestScore=-1; 339 + 340 + while(q.length){ 341 + var item=q.shift(); 342 + var el=item.el; 343 + if(!visible(el))continue; 344 + 345 + var r=el.getBoundingClientRect(); 346 + 347 + if(r.width>=cr.width*.72&&boxLike(el)){ 348 + var widthFit=1-Math.min(1,Math.abs(cr.width-r.width)/Math.max(1,cr.width)); 349 + var topFit=1-Math.min(1,Math.abs(cr.top-r.top)/80); 350 + var score=widthFit*5+topFit*2+Math.min(r.height,600)/600; 351 + if(score>bestScore){ 352 + best=el; 353 + bestScore=score; 354 + } 355 + } 356 + 357 + if(item.depth<3){ 358 + Array.from(el.children||[]).forEach(function(next){ 359 + q.push({el:next,depth:item.depth+1}); 360 + }); 361 + } 362 + } 363 + 364 + return best; 365 + } 366 + 367 + function reset(){ 368 + managed.forEach(function(el){ 369 + el.style.removeProperty("min-height"); 370 + el.removeAttribute("data-sn-equal-height-managed"); 371 + }); 372 + managed.clear(); 373 + } 374 + 375 + function horizontalLayout(parent){ 376 + if(!visible(parent))return false; 377 + var s=getComputedStyle(parent); 378 + if(s.display==="grid"||s.display==="inline-grid")return true; 379 + if(s.display==="flex"||s.display==="inline-flex"){ 380 + return s.flexDirection==="row"||s.flexDirection==="row-reverse"; 381 + } 382 + return false; 383 + } 384 + 385 + function rowGroups(entries){ 386 + var groups=[]; 387 + entries.slice().sort(function(a,b){ 388 + return a.rect.top-b.rect.top||a.rect.left-b.rect.left; 389 + }).forEach(function(entry){ 390 + var group=null; 391 + for(var i=0;i<groups.length;i++){ 392 + if(Math.abs(groups[i].top-entry.rect.top)<=ROW_TOLERANCE){ 393 + group=groups[i]; 394 + break; 395 + } 396 + } 397 + if(!group){ 398 + group={top:entry.rect.top,entries:[]}; 399 + groups.push(group); 400 + } 401 + group.entries.push(entry); 402 + }); 403 + return groups; 404 + } 405 + 406 + function run(){ 407 + reset(); 408 + 409 + if(window.innerWidth<=MOBILE_MAX)return; 410 + 411 + var parents=Array.from(root.querySelectorAll("*")).filter(function(el){ 412 + return el.children&&el.children.length>=2&&horizontalLayout(el); 413 + }); 414 + 415 + parents.forEach(function(parent){ 416 + var entries=[]; 417 + 418 + Array.from(parent.children).forEach(function(child){ 419 + if(!visible(child))return; 420 + var target=pickTarget(child); 421 + if(!target)return; 422 + entries.push({ 423 + target:target, 424 + rect:target.getBoundingClientRect() 425 + }); 426 + }); 427 + 428 + if(entries.length<2)return; 429 + 430 + rowGroups(entries).forEach(function(group){ 431 + if(group.entries.length<2)return; 432 + 433 + var lefts=group.entries.map(function(e){return e.rect.left;}).sort(function(a,b){return a-b;}); 434 + if(lefts[lefts.length-1]-lefts[0]<80)return; 435 + 436 + var targets=[]; 437 + var seen=new Set(); 438 + 439 + group.entries.forEach(function(e){ 440 + if(!seen.has(e.target)){ 441 + seen.add(e.target); 442 + targets.push(e.target); 443 + } 444 + }); 445 + 446 + if(targets.length<2)return; 447 + 448 + var max=0; 449 + targets.forEach(function(el){ 450 + max=Math.max(max,el.getBoundingClientRect().height); 451 + }); 452 + 453 + max=Math.ceil(max); 454 + if(max<MIN_H)return; 455 + 456 + targets.forEach(function(el){ 457 + el.style.setProperty("min-height",max+"px"); 458 + el.setAttribute("data-sn-equal-height-managed","1"); 459 + managed.add(el); 460 + }); 461 + }); 462 + }); 463 + } 464 + 465 + function schedule(){ 466 + if(raf)cancelAnimationFrame(raf); 467 + raf=requestAnimationFrame(function(){ 468 + raf=requestAnimationFrame(function(){ 469 + raf=0; 470 + run(); 471 + }); 472 + }); 473 + } 474 + 475 + addEventListener("resize",schedule,{passive:true}); 476 + addEventListener("load",schedule,{once:true}); 477 + 478 + root.addEventListener("click",function(){ 479 + setTimeout(schedule,0); 480 + },true); 481 + 482 + if(document.fonts&&document.fonts.ready){ 483 + document.fonts.ready.then(schedule); 484 + } 485 + 486 + schedule(); 487 + setTimeout(schedule,250); 488 + setTimeout(schedule,900); 489 +})(); 490 +</script> 491 +<!-- SN_HORIZONTAL_BOX_HARMONIZER_END --> 492 +{{/html}} 493 +