server {
listen 80;
server_name localhost;
location / {
root /var/www/html;
index index.php;
}
location /metrics {
stub_status;
allow 127.0.0.1;
deny all;
}
location ~ \.php$ {
root /var/www/html;
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME /var/www/html$fastcgi_script_name;
include fastcgi_params;
}
}
<div
onAnimationStart={e => console.log('onAnimationStart')}
onAnimationIteration={e => console.log('onAnimationIteration')}
onAnimationEnd={e => console.log('onAnimationEnd')}
/>
@echo off
set "path_bin_1=d:\TEMP\test.exe"
call :testname
echo "%path_bin_1%"
echo "%filename%"
pause
exit
REM тело функции располагаем в конце после оператора exit чтобы предотвратить выполнение в потоке.
:testname
echo "%path_bin_1%"
for /F "delims=" %%a in ("%path_bin_1%") do (
set file=%%~fa
set filepath=%%~dpa
set filename=%%~nxa
)
exit /B
const deleteButton = document.querySelectorAll('.column__card-button');
const addButton = document.querySelector('.add_card')
const cardContent = document.querySelector('.column__card-content_add')
const columns = document.querySelectorAll('.column')
const columnTitle = document.querySelector('.column_title')
const mainContainer = document.querySelector('.main_container')
const toDoContainer = document.querySelector('.todo_container')
let actualCard = null;
const tasks = document.querySelectorAll('.column__card')
const areatxt = document.getElementById('textareaid')
addButton.addEventListener('click', function() {
let columnCardText = areatxt.value;
areatxt.value = ''
const newColumnCard = `<div class="column__card" draggable="true"><div
class="column__card-content">${columnCardText}</div><button class="column__card-button"></button></div>`
columnTitle.insertAdjacentHTML("afterEnd", newColumnCard);
//updateLocalStorage()
});
mainContainer.addEventListener('click', function(event) {
if (event.target.classList.contains('column__card-button')) {
const card = event.target.closest('.column__card');
if (card) {
card.remove();
}
}
//updateLocalStorage()
});
function dragStart(e) {
actualCard = e.target
e.target.classList.add("is-dragging");
};
function dragEnd(e) {
this.classList.remove('hovered');
};
function dragEnter(e) {
e.preventDefault();
this.classList.add('hovered');
};
function dragLeave() {
this.classList.remove('hovered');
};
function dragOver(e) {
e.preventDefault();
const activeElement = mainContainer.querySelector(`.is-dragging`);
const currentElement = e.target;
const isMoveable = activeElement !== currentElement && currentElement.classList.contains(`column__card`);
if (!isMoveable) {
if (e.target.classList.contains("column") && !this.contains(actualCard)) {
this.appendChild(actualCard);
}
return;
}
// e.clientY — вертикальная координата курсора в момент,
// когда сработало событие
const nextElement = getNextElement(e.clientY, currentElement);
// Проверяем, нужно ли менять элементы местами
if (
nextElement &&
activeElement === nextElement.previousElementSibling ||
activeElement === nextElement
) {
return;
}
this.insertBefore(activeElement, nextElement);
};
const getNextElement = (cursorPosition, currentElement) => {
// Получаем объект с размерами и координатами
const currentElementCoord = currentElement.getBoundingClientRect();
// Находим вертикальную координату центра текущего элемента
const currentElementCenter = currentElementCoord.y + currentElementCoord.height / 2;
// Если курсор выше центра элемента, возвращаем текущий элемент
// В ином случае — следующий DOM-элемент
const nextElement = (cursorPosition < currentElementCenter) ?
currentElement :
currentElement.nextElementSibling;
return nextElement;
};
for (const column of columns) {
column.addEventListener('dragenter', dragEnter);
column.addEventListener('dragleave', dragLeave);
column.addEventListener('dragover', dragOver);
column.addEventListener('drop', drop);
column.addEventListener('dragstart', dragStart);
column.addEventListener('dragend', dragEnd);
}
function drop(e) {
e.preventDefault();
actualCard.classList.remove("is-dragging");
actualCard = null;
this.classList.remove('hovered');
//updateLocalStorage();
};
volumes:
- ./initDatabase1:/docker-entrypoint-initdb.d
volumes:
- ./initDatabase2:/docker-entrypoint-initdb.d
return new Array(ingredient.count).fill(null).map((_, index) => <Meat key={index} />);