added animation for description and close button
This commit is contained in:
parent
7322ba5ead
commit
176dcb8d83
48
graph.js
48
graph.js
|
@ -21,14 +21,22 @@ class graph {
|
||||||
element: ['node'],
|
element: ['node'],
|
||||||
onmouseenter: ['onmouseenter'],
|
onmouseenter: ['onmouseenter'],
|
||||||
title: ['title'],
|
title: ['title'],
|
||||||
description: ['description'],
|
cover: ['cover'],
|
||||||
|
description: {
|
||||||
|
both: ['description'],
|
||||||
|
hidden: ['hidden'],
|
||||||
|
shown: ['shown']
|
||||||
|
},
|
||||||
|
close: {
|
||||||
|
both: ['close'],
|
||||||
|
hidden: ['hidden'],
|
||||||
|
shown: ['shown']
|
||||||
|
},
|
||||||
wrappers: {
|
wrappers: {
|
||||||
both: ['wrapper'],
|
both: ['wrapper'],
|
||||||
left: ['left'],
|
left: ['left'],
|
||||||
right: ['right']
|
right: ['right']
|
||||||
},
|
}
|
||||||
cover: ['cover'],
|
|
||||||
close: ['close']
|
|
||||||
},
|
},
|
||||||
connection: {
|
connection: {
|
||||||
shell: ['connections'],
|
shell: ['connections'],
|
||||||
|
@ -182,7 +190,7 @@ class graph {
|
||||||
|
|
||||||
// Инициализация описания
|
// Инициализация описания
|
||||||
const description = document.createElement('div');
|
const description = document.createElement('div');
|
||||||
description.classList.add(..._this.#operator.classes.node.description);
|
description.classList.add(..._this.#operator.classes.node.description.both, ..._this.#operator.classes.node.description.hidden);
|
||||||
if (typeof data.popup === 'string') description.title = data.popup;
|
if (typeof data.popup === 'string') description.title = data.popup;
|
||||||
|
|
||||||
// Запись анимации "выделение обводкой" (чтобы не проигрывалась при открытии страницы)
|
// Запись анимации "выделение обводкой" (чтобы не проигрывалась при открытии страницы)
|
||||||
|
@ -381,8 +389,7 @@ class graph {
|
||||||
|
|
||||||
// Инициализация кнопки закрытия
|
// Инициализация кнопки закрытия
|
||||||
const close = document.createElement('i');
|
const close = document.createElement('i');
|
||||||
close.classList.add(..._this.#operator.classes.node.close);
|
close.classList.add(..._this.#operator.classes.node.close.both, ..._this.#operator.classes.node.close.hidden);
|
||||||
close.style.display = 'none';
|
|
||||||
|
|
||||||
// Запись блокировки закрытия в случае, если был перемещён узел
|
// Запись блокировки закрытия в случае, если был перемещён узел
|
||||||
close.onmousedown = (onmousedown) => {
|
close.onmousedown = (onmousedown) => {
|
||||||
|
@ -462,15 +469,17 @@ class graph {
|
||||||
// Запись отступа заголовка (чтобы был по центру описания)
|
// Запись отступа заголовка (чтобы был по центру описания)
|
||||||
a.style.left = description.offsetWidth / 2 - a.offsetWidth / 2 + 'px';
|
a.style.left = description.offsetWidth / 2 - a.offsetWidth / 2 + 'px';
|
||||||
|
|
||||||
// Сокрытие описания (выполняется после расчёта размера потому, что иначе размер будет недоступен)
|
|
||||||
description.style.display = 'none';
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Показать описание
|
* Показать описание
|
||||||
*/
|
*/
|
||||||
this.show = () => {
|
this.show = fn => {
|
||||||
// Отображение описания и кнопки закрытия описания
|
// Отображение описания
|
||||||
description.style.display = close.style.display = null;
|
description.classList.add(..._this.#operator.classes.node.description.shown);
|
||||||
|
description.classList.remove(..._this.#operator.classes.node.description.hidden);
|
||||||
|
|
||||||
|
// Отображение кнопки закрытия
|
||||||
|
close.classList.add(..._this.#operator.classes.node.close.shown);
|
||||||
|
close.classList.remove(..._this.#operator.classes.node.close.hidden);
|
||||||
|
|
||||||
// Сдвиг кнопки закрытия описания
|
// Сдвиг кнопки закрытия описания
|
||||||
close.style.top = close.style.right = -(((description.offsetWidth - article.offsetWidth) / 4) + description.offsetWidth / 8) + 'px';
|
close.style.top = close.style.right = -(((description.offsetWidth - article.offsetWidth) / 4) + description.offsetWidth / 8) + 'px';
|
||||||
|
@ -488,9 +497,14 @@ class graph {
|
||||||
/**
|
/**
|
||||||
* Скрыть описание
|
* Скрыть описание
|
||||||
*/
|
*/
|
||||||
this.hide = () => {
|
this.hide = fn => {
|
||||||
// Скрытие описания и кнопки закрытия описания
|
// Скрытие описания
|
||||||
description.style.display = close.style.display = 'none';
|
description.classList.add(..._this.#operator.classes.node.description.hidden);
|
||||||
|
description.classList.remove(..._this.#operator.classes.node.description.shown);
|
||||||
|
|
||||||
|
// Скрытие кнопки закрытия
|
||||||
|
close.classList.add(..._this.#operator.classes.node.close.hidden);
|
||||||
|
close.classList.remove(..._this.#operator.classes.node.close.shown);
|
||||||
|
|
||||||
// Удаление всех изменённых аттрибутов
|
// Удаление всех изменённых аттрибутов
|
||||||
close.style.top = close.style.right = article.style.zIndex = close.style.zIndex = close.style.scale = close.style.opacity = null;
|
close.style.top = close.style.right = article.style.zIndex = close.style.zIndex = close.style.scale = close.style.opacity = null;
|
||||||
|
@ -532,9 +546,7 @@ class graph {
|
||||||
const description = this.element.getElementsByClassName('description')[0];
|
const description = this.element.getElementsByClassName('description')[0];
|
||||||
|
|
||||||
// Запись отступа описания (чтобы был по центру узла)
|
// Запись отступа описания (чтобы был по центру узла)
|
||||||
description.style.display = null;
|
|
||||||
description.style.marginLeft = description.style.marginTop = (this.element.offsetWidth - description.offsetWidth) / 2 + 'px';
|
description.style.marginLeft = description.style.marginTop = (this.element.offsetWidth - description.offsetWidth) / 2 + 'px';
|
||||||
description.style.display = 'none';
|
|
||||||
|
|
||||||
// Инициализация ссылки на ядро
|
// Инициализация ссылки на ядро
|
||||||
const _this = this;
|
const _this = this;
|
||||||
|
|
Loading…
Reference in New Issue