Add tooltip for missing constituenta

This commit is contained in:
IRBorisov 2024-02-20 13:22:16 +03:00
parent 2d3403bb84
commit 24d5d723d4
2 changed files with 31 additions and 25 deletions

View File

@ -28,10 +28,10 @@ function findAliasAt(pos: number, state: EditorState) {
const globalsHoverTooltip = (items: IConstituenta[]) => { const globalsHoverTooltip = (items: IConstituenta[]) => {
return hoverTooltip((view, pos) => { return hoverTooltip((view, pos) => {
const { alias, start, end } = findAliasAt(pos, view.state); const { alias, start, end } = findAliasAt(pos, view.state);
const cst = items.find(cst => cst.alias === alias); if (!alias) {
if (!cst) {
return null; return null;
} }
const cst = items.find(cst => cst.alias === alias);
return { return {
pos: start, pos: start,
end: end, end: end,

View File

@ -124,7 +124,7 @@ export function findContainedNodes(start: number, finish: number, tree: Tree, fi
/** /**
* Create DOM tooltip for {@link Constituenta}. * Create DOM tooltip for {@link Constituenta}.
*/ */
export function domTooltipConstituenta(cst: IConstituenta) { export function domTooltipConstituenta(cst?: IConstituenta) {
const dom = document.createElement('div'); const dom = document.createElement('div');
dom.className = clsx( dom.className = clsx(
'z-tooltip', 'z-tooltip',
@ -135,32 +135,38 @@ export function domTooltipConstituenta(cst: IConstituenta) {
'text-sm' 'text-sm'
); );
const alias = document.createElement('p'); if (cst) {
alias.innerHTML = `<b>${cst.alias}:</b> ${labelCstTypification(cst)}`; const alias = document.createElement('p');
dom.appendChild(alias); alias.innerHTML = `<b>${cst.alias}:</b> ${labelCstTypification(cst)}`;
dom.appendChild(alias);
if (cst.term_resolved) { if (cst.term_resolved) {
const term = document.createElement('p'); const term = document.createElement('p');
term.innerHTML = `<b>Термин:</b> ${cst.term_resolved}`; term.innerHTML = `<b>Термин:</b> ${cst.term_resolved}`;
dom.appendChild(term); dom.appendChild(term);
} }
if (cst.definition_formal) { if (cst.definition_formal) {
const expression = document.createElement('p'); const expression = document.createElement('p');
expression.innerHTML = `<b>Выражение:</b> ${cst.definition_formal}`; expression.innerHTML = `<b>Выражение:</b> ${cst.definition_formal}`;
dom.appendChild(expression); dom.appendChild(expression);
} }
if (cst.definition_resolved) { if (cst.definition_resolved) {
const definition = document.createElement('p'); const definition = document.createElement('p');
definition.innerHTML = `<b>Определение:</b> ${cst.definition_resolved}`; definition.innerHTML = `<b>Определение:</b> ${cst.definition_resolved}`;
dom.appendChild(definition); dom.appendChild(definition);
} }
if (cst.convention) { if (cst.convention) {
const convention = document.createElement('p'); const convention = document.createElement('p');
convention.innerHTML = `<b>Конвенция:</b> ${cst.convention}`; convention.innerHTML = `<b>Конвенция:</b> ${cst.convention}`;
dom.appendChild(convention); dom.appendChild(convention);
}
} else {
const text = document.createElement('p');
text.innerText = 'Конституента не определена';
dom.appendChild(text);
} }
return { dom: dom }; return { dom: dom };
} }