86 lines
3.9 KiB
Python
86 lines
3.9 KiB
Python
|
|
import re
|
||
|
|
|
||
|
|
with open('app/modules/sag/templates/detail.html', 'r', encoding='utf-8') as f:
|
||
|
|
html = f.read()
|
||
|
|
|
||
|
|
pattern = re.compile(r"document\.querySelectorAll\('\[data-module\]'\)\.forEach\(\(el\) => \{.*?updateRightColumnVisibility\(\);", re.DOTALL)
|
||
|
|
|
||
|
|
new_code = """document.querySelectorAll('[data-module]').forEach((el) => {
|
||
|
|
const moduleName = el.getAttribute('data-module');
|
||
|
|
const hasContent = moduleHasContent(el);
|
||
|
|
const isTimeModule = moduleName === 'time';
|
||
|
|
const shouldCompactWhenEmpty = moduleName !== 'wiki' && moduleName !== 'pipeline' && !isTimeModule;
|
||
|
|
const pref = modulePrefs[moduleName];
|
||
|
|
const tabButton = document.querySelector(`[data-module-tab="${moduleName}"]`);
|
||
|
|
|
||
|
|
// Helper til at skjule eller vise modulet og dets mb-3 indpakning
|
||
|
|
const setVisibility = (visible) => {
|
||
|
|
let wrapper = null;
|
||
|
|
if (el.parentElement) {
|
||
|
|
const isMB3 = el.parentElement.classList.contains('mb-3');
|
||
|
|
const isRowCol12 = el.parentElement.classList.contains('col-12') && el.parentElement.parentElement && el.parentElement.parentElement.classList.contains('row');
|
||
|
|
if (isMB3) wrapper = el.parentElement;
|
||
|
|
else if (isRowCol12) wrapper = el.parentElement.parentElement;
|
||
|
|
}
|
||
|
|
|
||
|
|
if (visible) {
|
||
|
|
el.classList.remove('d-none');
|
||
|
|
if (wrapper && wrapper.classList.contains('d-none')) {
|
||
|
|
wrapper.classList.remove('d-none');
|
||
|
|
}
|
||
|
|
if (tabButton && tabButton.classList.contains('d-none')) {
|
||
|
|
tabButton.classList.remove('d-none');
|
||
|
|
}
|
||
|
|
} else {
|
||
|
|
el.classList.add('d-none');
|
||
|
|
if (wrapper && !wrapper.classList.contains('d-none')) wrapper.classList.add('d-none');
|
||
|
|
if (tabButton && !tabButton.classList.contains('d-none')) tabButton.classList.add('d-none');
|
||
|
|
}
|
||
|
|
};
|
||
|
|
|
||
|
|
// Altid vis time (tid)
|
||
|
|
if (isTimeModule) {
|
||
|
|
setVisibility(true);
|
||
|
|
el.classList.remove('module-empty-compact');
|
||
|
|
return;
|
||
|
|
}
|
||
|
|
|
||
|
|
// HVIS specifik præference deaktiverer den - Skjul den! Uanset content.
|
||
|
|
if (pref === false) {
|
||
|
|
setVisibility(false);
|
||
|
|
el.classList.remove('module-empty-compact');
|
||
|
|
return;
|
||
|
|
}
|
||
|
|
|
||
|
|
// HVIS specifik præference aktiverer den (brugervalg)
|
||
|
|
if (pref === true) {
|
||
|
|
setVisibility(true);
|
||
|
|
el.classList.toggle('module-empty-compact', shouldCompactWhenEmpty && !hasContent);
|
||
|
|
return;
|
||
|
|
}
|
||
|
|
|
||
|
|
// Default logic (ingen brugervalg) - har den content, så vis den
|
||
|
|
if (hasContent) {
|
||
|
|
setVisibility(true);
|
||
|
|
el.classList.remove('module-empty-compact');
|
||
|
|
return;
|
||
|
|
}
|
||
|
|
|
||
|
|
// Default logic - ingen content: se på layout defaults
|
||
|
|
if (standardModuleSet.has(moduleName)) {
|
||
|
|
setVisibility(true);
|
||
|
|
el.classList.toggle('module-empty-compact', shouldCompactWhenEmpty);
|
||
|
|
} else {
|
||
|
|
setVisibility(false);
|
||
|
|
el.classList.remove('module-empty-compact');
|
||
|
|
}
|
||
|
|
});
|
||
|
|
|
||
|
|
updateRightColumnVisibility();"""
|
||
|
|
|
||
|
|
html, count = pattern.subn(new_code, html)
|
||
|
|
print(f"Replaced {count} instances.")
|
||
|
|
|
||
|
|
with open('app/modules/sag/templates/detail.html', 'w', encoding='utf-8') as f:
|
||
|
|
f.write(html)
|