-add a session timer when user logged in
-don't give direct access to paths esp. when usr. is not logged in or that path must not be accessible
-add a short animation loading progress bar when user did some actions to a task
--create 'task sorting' feature
--create 'task search' feature
+-create 'task sorting' feature (not now, maybe when im not lazy to change a lot of code)
-when popup is open, the main window will be unaccessible
\ No newline at end of file
<div>
<div>
<input type="search" id="search" placeholder="Search task...">
- <select class="rpgui-dropdown" name="sort" id="sort">
+ <!-- <select class="rpgui-dropdown" name="sort" id="sort">
<option value="all" selected>All</option>
<option value="incomplete">Incomplete</option>
<option value="complete">Complete</option>
- </select>
+ </select> -->
</div>
<!-- action buttons for tasks -->
</div>
</main>
</div>
-
+
+ <script src="./js/search.js"></script>
<script src="./js/tasks.js"></script>
</body>
</html>
\ No newline at end of file
--- /dev/null
+function searchFilter(query){
+ const taskItems = document.querySelectorAll('.task-item');
+
+ taskItems.forEach(function(taskItem){
+ const label = taskItem.querySelector('.task-label');
+ const text = label ? label.textContent.toLowerCase() : '';
+ taskItem.style.display = text.includes(query) ? 'block' : 'none';
+ });
+}
+
+document.getElementById('search').addEventListener('input', function(){
+ query = this.value.trim().toLowerCase();
+ searchFilter(query);
+});
\ No newline at end of file
if(Array.isArray(data) && data.length > 0){
data.forEach(function(task){
const div = document.createElement('div');
+ div.classList.add('task-item');
div.innerHTML = `
<input class="rpgui-checkbox" type="checkbox" id="${task.task_id}">
- <label for="${task.task_id}">${task.task}</label>
+ <label for="${task.task_id}" class="task-label">${task.task}</label>
`;
taskBody.appendChild(div);
console.log('Message:', data.message);
setTimeout(function(){
loadTasks();
+ removeSearchInput();
}, 500);
setDisabledAttributesOnDeleteBtn();
setDisabledAttributesOnEditBtn();
console.log(data);
setTimeout(function(){
loadTasks();
+ removeSearchInput();
}, 500);
setDisabledAttributesOnEditBtn();
popupEditTaskClose();
console.log('Message:', data.message);
setTimeout(function(){
loadTasks();
+ removeSearchInput();
}, 500);
setDisabledAttributesOnDeleteBtn();
})
popupWindow.style.visibility = 'hidden';
}
+function removeSearchInput(){
+ document.getElementById('search').value = '';
+}
+
// event listeners
document.getElementById('new-task-popup-open').addEventListener('click', function(){