58 lines
2.1 KiB
JavaScript
58 lines
2.1 KiB
JavaScript
document.addEventListener('DOMContentLoaded', () => {
|
|
const searchInput = document.getElementById('tableSearch');
|
|
const rows = Array.from(document.querySelectorAll('.js-search-row'));
|
|
|
|
if (searchInput && rows.length) {
|
|
searchInput.addEventListener('input', (event) => {
|
|
const query = event.target.value.trim().toLowerCase();
|
|
rows.forEach((row) => {
|
|
const text = row.textContent.toLowerCase();
|
|
row.style.display = text.includes(query) ? '' : 'none';
|
|
});
|
|
});
|
|
}
|
|
|
|
const syncScorePreview = (container) => {
|
|
const targetInput = container.querySelector('.js-score-target');
|
|
const currentInput = container.querySelector('.js-score-current');
|
|
const output = container.querySelector('.js-score-output');
|
|
|
|
if (!targetInput || !currentInput || !output) {
|
|
return;
|
|
}
|
|
|
|
const render = () => {
|
|
const target = parseFloat(targetInput.value || '0');
|
|
const current = parseFloat(currentInput.value || '0');
|
|
let score = 0;
|
|
if (target > 0) {
|
|
score = Math.max(0, Math.min(100, (current / target) * 100));
|
|
}
|
|
output.textContent = `${score.toFixed(1).replace('.0', '')}%`;
|
|
};
|
|
|
|
['input', 'change'].forEach((eventName) => {
|
|
targetInput.addEventListener(eventName, render);
|
|
currentInput.addEventListener(eventName, render);
|
|
});
|
|
render();
|
|
};
|
|
|
|
document.querySelectorAll('#okrCreateForm, #okrReviewForm').forEach(syncScorePreview);
|
|
|
|
const sidebar = document.getElementById('sidebarMenu');
|
|
const sidebarToggle = document.getElementById('sidebarToggle');
|
|
if (sidebar && sidebarToggle) {
|
|
sidebarToggle.addEventListener('click', () => {
|
|
sidebar.classList.toggle('is-open');
|
|
});
|
|
}
|
|
|
|
document.querySelectorAll('[data-auto-dismiss="true"]').forEach((alertEl) => {
|
|
window.setTimeout(() => {
|
|
alertEl.classList.add('fade');
|
|
alertEl.classList.remove('show');
|
|
}, 3200);
|
|
});
|
|
});
|