Implement modal opening for tokens in markup; replace popup actions with modal invocations for display sets and findings
This commit is contained in:
@@ -374,6 +374,29 @@
|
|||||||
}, 10);
|
}, 10);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Try to open a modal for a token (prefer page-specific modal loaders)
|
||||||
|
function openModalForToken(element){
|
||||||
|
var type = element.getAttribute('data-type'); var pk = element.getAttribute('data-pk'); var label = element.getAttribute('data-label') || element.textContent || '';
|
||||||
|
var url = getDetailUrl(type, pk);
|
||||||
|
try{
|
||||||
|
if(type === 'displayset'){
|
||||||
|
if(typeof window.loadDisplaysetModal === 'function'){
|
||||||
|
window.loadDisplaysetModal(url, pk); return;
|
||||||
|
}
|
||||||
|
var dsBtn = document.querySelector('.view-displayset-modal[data-ds-id="'+pk+'"]');
|
||||||
|
if(dsBtn){ dsBtn.click(); return; }
|
||||||
|
}
|
||||||
|
if(type === 'seriesfinding' || type === 'finding'){
|
||||||
|
if(typeof window.loadFindingModal === 'function'){
|
||||||
|
window.loadFindingModal(pk, url); return;
|
||||||
|
}
|
||||||
|
var fBtn = document.querySelector('.view-finding-modal[data-finding-id="'+pk+'"]');
|
||||||
|
if(fBtn){ fBtn.click(); return; }
|
||||||
|
}
|
||||||
|
}catch(e){ console.warn('error invoking page modal loader', e); }
|
||||||
|
if(url) showModalForUrl(url, label);
|
||||||
|
}
|
||||||
|
|
||||||
// Replace tokens in text nodes with styled spans
|
// Replace tokens in text nodes with styled spans
|
||||||
function renderMarkupTokens(root){
|
function renderMarkupTokens(root){
|
||||||
injectMarkupStyles();
|
injectMarkupStyles();
|
||||||
@@ -397,7 +420,7 @@
|
|||||||
else if(type === 'displayset') span.className += ' badge bg-success text-white';
|
else if(type === 'displayset') span.className += ' badge bg-success text-white';
|
||||||
else span.className += ' badge bg-info text-dark';
|
else span.className += ' badge bg-info text-dark';
|
||||||
span.textContent = label ? label : (type + ':' + pk);
|
span.textContent = label ? label : (type + ':' + pk);
|
||||||
span.addEventListener('click', function(e){ e.stopPropagation(); showPopupFor(span); });
|
span.addEventListener('click', function(e){ e.stopPropagation(); openModalForToken(span); });
|
||||||
a.parentNode.replaceChild(span, a);
|
a.parentNode.replaceChild(span, a);
|
||||||
}catch(e){}
|
}catch(e){}
|
||||||
});
|
});
|
||||||
@@ -426,7 +449,7 @@
|
|||||||
else if(type === 'displayset') span.className += ' badge bg-success text-white';
|
else if(type === 'displayset') span.className += ' badge bg-success text-white';
|
||||||
else span.className += ' badge bg-info text-dark';
|
else span.className += ' badge bg-info text-dark';
|
||||||
span.textContent = label ? label : (type + ':' + pk);
|
span.textContent = label ? label : (type + ':' + pk);
|
||||||
span.addEventListener('click', function(e){ e.stopPropagation(); showPopupFor(span); });
|
span.addEventListener('click', function(e){ e.stopPropagation(); openModalForToken(span); });
|
||||||
frag.appendChild(span);
|
frag.appendChild(span);
|
||||||
lastIndex = re.lastIndex;
|
lastIndex = re.lastIndex;
|
||||||
}
|
}
|
||||||
@@ -445,7 +468,7 @@
|
|||||||
var type = span.getAttribute('data-type') || '';
|
var type = span.getAttribute('data-type') || '';
|
||||||
var pk = span.getAttribute('data-pk') || '';
|
var pk = span.getAttribute('data-pk') || '';
|
||||||
var label = span.getAttribute('data-label') || span.textContent || '';
|
var label = span.getAttribute('data-label') || span.textContent || '';
|
||||||
span.addEventListener('click', function(e){ e.stopPropagation(); showPopupFor(span); });
|
span.addEventListener('click', function(e){ e.stopPropagation(); openModalForToken(span); });
|
||||||
}catch(e){}
|
}catch(e){}
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user