Untitled

mail@pastecode.io avatar
unknown
plain_text
a year ago
8.1 kB
2
Indexable
Never
<!DOCTYPE html>
<html>
<head>
    <title>Todo List App</title>
    <style>
        body {
            font-family: Arial, sans-serif;
            margin: 0;
            padding: 0;
        }

        #sidebar {
            background-color: #f1f1f1;
            height: 100%;
            padding: 20px;
            width: 200px;
            float: left;
        }

        #content {
            margin-left: 220px;
            padding: 20px;
        }

        table {
            border-collapse: collapse;
            width: 100%;
        }

        th, td {
            text-align: left;
            padding: 8px;
        }

        th {
            background-color: #f2f2f2;
        }

        tr:nth-child(even) {
            background-color: #f2f2f2;
        }

        .button {
            background-color: #4CAF50;
            border: none;
            color: white;
            padding: 10px 20px;
            text-align: center;
            text-decoration: none;
            display: inline-block;
            font-size: 16px;
            margin-bottom: 10px;
            cursor: pointer;
        }
    </style>
</head>
<body>
    <div id="sidebar">
        <button class="button" onclick="showAddTodoForm()">Add Todo List Item</button><br>
        <button class="button" onclick="showTodoData()">Show Todo Data</button>
    </div>

    <div id="content">
        <h2>Todo List</h2>

        <div id="addTodoForm" style="display: none;">
            <h3>Add Todo Item</h3>
            <form onsubmit="addTodoItem(event)">
                <input type="text" id="taskInput" placeholder="Task" required>
                <input type="text" id="assignInput" placeholder="Assignee" required>
                <input type="submit" value="Submit">
            </form>
        </div>

        <div id="todoData" style="display: none;">
            <h3>Todo Data</h3>

            <input type="text" id="searchInput" placeholder="Search by Assignee" oninput="searchTodoData()">

            <table id="todoTable">
                <tr>
                    <th>Task</th>
                    <th>Assignee</th>
                    <th>Actions</th>
                </tr>
            </table>
        </div>

        <div id="editTodoItem" style="display: none;">
            <h3>Edit Todo Item</h3>
            <form onsubmit="event.preventDefault();">
                <input type="text" id="editTaskInput" placeholder="Task" required>
                <input type="text" id="editAssignInput" placeholder="Assignee" required>
                <button type="button" onclick="saveEditedTodoItem()">Save</button>
                <button type="button" onclick="cancelEdit()">Cancel</button>
            </form>
        </div>
    </div>

    <script>
        let todoList = [];

        function showAddTodoForm() {
            document.getElementById('addTodoForm').style.display = 'block';
            document.getElementById('todoData').style.display = 'none';
            document.getElementById('editTodoItem').style.display = 'none';
        }

        function showTodoData() {
            document.getElementById('addTodoForm').style.display = 'none';
            document.getElementById('todoData').style.display = 'block';
            document.getElementById('editTodoItem').style.display = 'none';

            displayTodoTable();
        }

        function addTodoItem(event) {
            event.preventDefault();

            const taskInput = document.getElementById('taskInput');
            const assignInput = document.getElementById('assignInput');

            const task = taskInput.value;
            const assignee = assignInput.value;

            todoList.push({ task, assignee });

            taskInput.value = '';
            assignInput.value = '';

            displayTodoTable();
        }

        function deleteTodoItem(index) {
            todoList.splice(index, 1);
            displayTodoTable();
        }

        function editTodoItem(index) {
            const taskInput = document.getElementById('editTaskInput');
            const assignInput = document.getElementById('editAssignInput');

            taskInput.value = todoList[index].task;
            assignInput.value = todoList[index].assignee;

            const saveButton = document.getElementById('editSaveButton');
            saveButton.onclick = function() {
                const newAssignee = assignInput.value;

                todoList[index].assignee = newAssignee;

                displayTodoTable();
                cancelEdit();
            };

            document.getElementById('editTodoItem').style.display = 'block';
        }

        function cancelEdit() {
            document.getElementById('editTodoItem').style.display = 'none';
        }

        function displayTodoTable() {
            const table = document.getElementById('todoTable');
            table.innerHTML = `
                <tr>
                    <th>Task</th>
                    <th>Assignee</th>
                    <th>Actions</th>
                </tr>
            `;

            for (let i = 0; i < todoList.length; i++) {
                const todoItem = todoList[i];
                const row = document.createElement('tr');

                const taskCell = document.createElement('td');
                taskCell.textContent = todoItem.task;
                row.appendChild(taskCell);

                const assigneeCell = document.createElement('td');
                assigneeCell.textContent = todoItem.assignee;
                row.appendChild(assigneeCell);

                const actionsCell = document.createElement('td');
                const editButton = document.createElement('button');
                editButton.textContent = 'Edit';
                editButton.onclick = editTodoItem.bind(null, i);
                actionsCell.appendChild(editButton);

                const deleteButton = document.createElement('button');
                deleteButton.textContent = 'Delete';
                deleteButton.onclick = deleteTodoItem.bind(null, i);
                actionsCell.appendChild(deleteButton);

                row.appendChild(actionsCell);

                table.appendChild(row);
            }
        }

        function searchTodoData() {
            const searchInput = document.getElementById('searchInput');
            const searchValue = searchInput.value.toLowerCase();

            const filteredTodoList = todoList.filter(todoItem => todoItem.assignee.toLowerCase().includes(searchValue));

            displayFilteredTodoTable(filteredTodoList);
        }

        function displayFilteredTodoTable(filteredTodoList) {
            const table = document.getElementById('todoTable');
            table.innerHTML = `
                <tr>
                    <th>Task</th>
                    <th>Assignee</th>
                    <th>Actions</th>
                </tr>
            `;

            for (let i = 0; i < filteredTodoList.length; i++) {
                const todoItem = filteredTodoList[i];
                const row = document.createElement('tr');

                const taskCell = document.createElement('td');
                taskCell.textContent = todoItem.task;
                row.appendChild(taskCell);

                const assigneeCell = document.createElement('td');
                assigneeCell.textContent = todoItem.assignee;
                row.appendChild(assigneeCell);

                const actionsCell = document.createElement('td');
                const editButton = document.createElement('button');
                editButton.textContent = 'Edit';
                editButton.onclick = editTodoItem.bind(null, i);
                actionsCell.appendChild(editButton);

                const deleteButton = document.createElement('button');
                deleteButton.textContent = 'Delete';
                deleteButton.onclick = deleteTodoItem.bind(null, i);
                actionsCell.appendChild(deleteButton);

                row.appendChild(actionsCell);

                table.appendChild(row);
            }
        }
    </script>
</body>
</html>