{"id":55,"date":"2024-10-23T15:19:22","date_gmt":"2024-10-23T15:19:22","guid":{"rendered":"https:\/\/aramis-tnc.ch\/?page_id=55"},"modified":"2024-11-10T08:32:54","modified_gmt":"2024-11-10T08:32:54","slug":"xpt-extended-project-tool","status":"publish","type":"page","link":"https:\/\/aramis-tnc.ch\/index.php\/sample-page\/xpt-extended-project-tool\/","title":{"rendered":"XPT &#8211; Extended Project Tool"},"content":{"rendered":"\n<!DOCTYPE html>\n<html lang=\"de\">\n<head>\n    <meta charset=\"UTF-8\">\n    <meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\">\n    <meta name=\"description\" content=\"Passwortgesch\u00fctzte Seite\">\n    <title>Passwortgesch\u00fctzte Seite<\/title>\n    <style>\n        body {\n            font-family: Arial, sans-serif;\n            background-color: #f4f4f4;\n            color: #333;\n            text-align: center;\n            padding: 50px;\n        }\n        #protected-content {\n            display: none;\n        }\n        #login-box {\n            display: flex;\n            flex-direction: column;\n            align-items: center;\n        }\n        input {\n            padding: 10px;\n            margin: 10px;\n            border: 1px solid #ccc;\n            border-radius: 4px;\n        }\n        button {\n            padding: 10px 20px;\n            background-color: #2c3e50;\n            color: white;\n            border: none;\n            border-radius: 4px;\n            cursor: pointer;\n        }\n        button:hover {\n            background-color: #1e2b38;\n        }\n        h1 {\n            margin-bottom: 30px;\n        }\n    <\/style>\n<\/head>\n<body>\n\n<div id=\"login-box\">\n    <h1>Geben Sie das Passwort ein<\/h1>\n    <input type=\"password\" id=\"password\" placeholder=\"Passwort\">\n    <button onclick=\"checkPassword()\">Login<\/button>\n    <p id=\"error-message\" style=\"color: red; display: none;\">Falsches Passwort, Tabelle sichtbar, aber keine Datenmanipulation m\u00f6glich.<\/p>\n<\/div>\n\n<div id=\"protected-content\">\n    <p>Sie haben erfolgreich das Passwort eingegeben.<\/p>\n<p> <\/p>\n<p> <\/p>\n<p> <\/p>\n<\/div>\n\n<script>\n    function checkPassword() {\n        var password = document.getElementById('password').value;\n        if (password === 'XPT') {\n            document.getElementById('login-box').style.display = 'none';\n            document.getElementById('protected-content').style.display = 'block';\n        } else {\n            document.getElementById('error-message').style.display = 'block';\n        }\n    }\n<\/script>\n\n<\/body>\n<\/html>\n\n\n\n<!DOCTYPE html>\n<html lang=\"de\">\n<head>\n    <meta charset=\"UTF-8\">\n    <meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\">\n    <title>Entwicklungstasks \u00dcbersicht<\/title>\n    <style>\n        body {\n            font-family: Arial, sans-serif;\n            background-color: yellow;\n            color: black;\n        }\n        table {\n            width: 100%;\n            border-collapse: collapse;\n        }\n        th, td {\n            padding: 8px;\n            text-align: left;\n        }\n        th {\n            background-color: black;\n            color: yellow;\n        }\n        .summary-row {\n            background-color: grey;\n            font-weight: bold;\n        }\n        .total-row {\n            background-color: lightblue;\n            font-weight: bold;\n        }\n        .task-row:hover {\n            cursor: pointer;\n            background-color: lightgrey;\n        }\n        #taskDetailScreen, #managerListScreen {\n            display: none;\n            background-color: blue;\n            color: white;\n            padding: 20px;\n            position: absolute;\n            top: 20%;\n            left: 25%;\n            width: 50%;\n            border: 2px solid yellow;\n            box-shadow: 0px 0px 15px rgba(0, 0, 0, 0.5);\n        }\n        .detail-row {\n            display: flex;\n            justify-content: flex-start;\n            margin-bottom: 10px;\n        }\n        .detail-row span:nth-child(1) {\n            min-width: 150px;\n            text-align: left;\n        }\n        .detail-row span:nth-child(2) {\n            color: red;\n            margin-left: 40px;\n            text-align: left;\n        }\n        .back-button {\n            background-color: yellow;\n            color: black;\n            padding: 10px;\n            font-weight: bold;\n            border: none;\n            cursor: pointer;\n        }\n        .manager-link {\n            color: black;\n            text-decoration: underline;\n            cursor: pointer;\n        }\n    <\/style>\n<\/head>\n<body>\n\n<h2>Entwicklungstasks \u00dcbersicht<\/h2>\n\n<table id=\"taskTable\">\n    <thead>\n        <tr>\n            <th>Tasknummer<\/th>\n            <th>Taskart<\/th>\n            <th>Kurztext<\/th>\n            <th>Entwickler<\/th>\n            <th>Geplanter Aufwand<\/th>\n            <th>Tats\u00e4chlicher Aufwand<\/th>\n            <th>Entwicklungsleiter<\/th>\n        <\/tr>\n    <\/thead>\n    <tbody><\/tbody>\n<\/table>\n\n<div id=\"taskDetailScreen\">\n    <h3>Task Details<\/h3>\n    <div id=\"taskDetailContent\"><\/div>\n    <button class=\"back-button\" onclick=\"closeDetail()\">Back 2 XPT<\/button>\n<\/div>\n\n<div id=\"managerListScreen\">\n    <h3>Liste der Entwicklungsleiter<\/h3>\n    <div id=\"managerListContent\"><\/div>\n    <button class=\"back-button\" onclick=\"closeManagerList()\">Zur\u00fcck zur \u00dcbersicht<\/button>\n<\/div>\n\n<script>\n    const tasks = [\n        { tasknummer: \"T001\", taskart: \"Feature\", kurztext: \"Login Implementierung\", entwickler: \"Alice\", geplanterAufwand: 10, tatAufwand: 12, entwicklungsleiter: \"Bob\" },\n        { tasknummer: \"T002\", taskart: \"Feature\", kurztext: \"Benutzerprofil\", entwickler: \"Charlie\", geplanterAufwand: 8, tatAufwand: 9, entwicklungsleiter: \"Bob\" },\n        { tasknummer: \"T003\", taskart: \"Bugfix\", kurztext: \"Fehler in Login\", entwickler: \"Alice\", geplanterAufwand: 4, tatAufwand: 5, entwicklungsleiter: \"Bob\" },\n        { tasknummer: \"T004\", taskart: \"Bugfix\", kurztext: \"Datenbankproblem\", entwickler: \"David\", geplanterAufwand: 6, tatAufwand: 7, entwicklungsleiter: \"Eve\" },\n        { tasknummer: \"T005\", taskart: \"Optimierung\", kurztext: \"Code Refactoring\", entwickler: \"Charlie\", geplanterAufwand: 10, tatAufwand: 8, entwicklungsleiter: \"Eve\" }\n    ];\n\n    const taskTableBody = document.getElementById(\"taskTable\").querySelector(\"tbody\");\n    let previousTaskart = null;\n    let currentTaskSummary = { gepl: 0, tat: 0 };\n\n    tasks.forEach((task, index) => {\n        if (previousTaskart && previousTaskart !== task.taskart) {\n            appendSummaryRow(previousTaskart, currentTaskSummary);\n            currentTaskSummary = { gepl: 0, tat: 0 };\n        }\n        appendTaskRow(task);\n        currentTaskSummary.gepl += task.geplanterAufwand;\n        currentTaskSummary.tat += task.tatAufwand;\n        previousTaskart = task.taskart;\n    });\n    appendSummaryRow(previousTaskart, currentTaskSummary);\n    appendTotalRow();\n\n    function appendTaskRow(task) {\n        const row = document.createElement(\"tr\");\n        row.className = \"task-row\";\n        row.addEventListener(\"click\", () => showTaskDetail(task));\n\n        row.innerHTML = `\n            <td>${task.tasknummer}<\/td>\n            <td>${task.taskart}<\/td>\n            <td>${task.kurztext}<\/td>\n            <td>${task.entwickler}<\/td>\n            <td>${task.geplanterAufwand} Working hours<\/td>\n            <td>${task.tatAufwand} Working hours<\/td>\n            <td><span class=\"manager-link\" onclick=\"showManagerList(event)\">${task.entwicklungsleiter}<\/span><\/td>\n        `;\n        taskTableBody.appendChild(row);\n    }\n\n    function appendSummaryRow(taskart, summary) {\n        const row = document.createElement(\"tr\");\n        row.className = \"summary-row\";\n        row.innerHTML = `\n            <td colspan=\"4\">Zwischensumme f\u00fcr ${taskart}<\/td>\n            <td>${summary.gepl} Working hours<\/td>\n            <td>${summary.tat} Working hours<\/td>\n            <td><\/td>\n        `;\n        taskTableBody.appendChild(row);\n    }\n\n    function appendTotalRow() {\n        const totalGepl = tasks.reduce((sum, task) => sum + task.geplanterAufwand, 0);\n        const totalTat = tasks.reduce((sum, task) => sum + task.tatAufwand, 0);\n\n        const row = document.createElement(\"tr\");\n        row.className = \"total-row\";\n        row.innerHTML = `\n            <td colspan=\"4\">Gesamtsumme aller Taskarten<\/td>\n            <td>${totalGepl} Working hours<\/td>\n            <td>${totalTat} Working hours<\/td>\n            <td><\/td>\n        `;\n        taskTableBody.appendChild(row);\n    }\n\n    function showTaskDetail(task) {\n        const detailContent = document.getElementById(\"taskDetailContent\");\n        detailContent.innerHTML = `\n            <div class=\"detail-row\"><span>Tasknummer:<\/span><span>${task.tasknummer}<\/span><\/div>\n            <div class=\"detail-row\"><span>Taskart:<\/span><span>${task.taskart}<\/span><\/div>\n            <div class=\"detail-row\"><span>Kurztext:<\/span><span>${task.kurztext}<\/span><\/div>\n            <div class=\"detail-row\"><span>Entwickler:<\/span><span>${task.entwickler}<\/span><\/div>\n            <div class=\"detail-row\"><span>Geplanter Aufwand:<\/span><span>${task.geplanterAufwand} Working hours<\/span><\/div>\n            <div class=\"detail-row\"><span>Tats\u00e4chlicher Aufwand:<\/span><span>${task.tatAufwand} Working hours<\/span><\/div>\n            <div class=\"detail-row\"><span>Entwicklungsleiter:<\/span><span>${task.entwicklungsleiter}<\/span><\/div>\n        `;\n        document.getElementById(\"taskDetailScreen\").style.display = \"block\";\n    }\n\n    function showManagerList(event) {\n        event.stopPropagation();\n        const managers = [...new Set(tasks.map(task => task.entwicklungsleiter))];\n        const managerListContent = document.getElementById(\"managerListContent\");\n\n        managerListContent.innerHTML = managers.map(manager => `<div>${manager}<\/div>`).join(\"\");\n        document.getElementById(\"managerListScreen\").style.display = \"block\";\n    }\n\n    function closeDetail() {\n        document.getElementById(\"taskDetailScreen\").style.display = \"none\";\n    }\n\n    function closeManagerList() {\n        document.getElementById(\"managerListScreen\").style.display = \"none\";\n    }\n<\/script>\n\n<\/body>\n<\/html>\n\n","protected":false},"excerpt":{"rendered":"<p>Passwortgesch\u00fctzte Seite Geben Sie das Passwort ein Login Falsches Passwort, Tabelle sichtbar, aber keine Datenmanipulation m\u00f6glich. Sie haben erfolgreich das Passwort eingegeben. Entwicklungstasks \u00dcbersicht Entwicklungstasks \u00dcbersicht Tasknummer Taskart Kurztext Entwickler Geplanter Aufwand Tats\u00e4chlicher Aufwand Entwicklungsleiter Task Details Back 2 XPT Liste der Entwicklungsleiter Zur\u00fcck zur \u00dcbersicht<\/p>\n","protected":false},"author":1,"featured_media":0,"parent":2,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"footnotes":""},"class_list":["post-55","page","type-page","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/aramis-tnc.ch\/index.php\/wp-json\/wp\/v2\/pages\/55","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/aramis-tnc.ch\/index.php\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/aramis-tnc.ch\/index.php\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/aramis-tnc.ch\/index.php\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/aramis-tnc.ch\/index.php\/wp-json\/wp\/v2\/comments?post=55"}],"version-history":[{"count":21,"href":"https:\/\/aramis-tnc.ch\/index.php\/wp-json\/wp\/v2\/pages\/55\/revisions"}],"predecessor-version":[{"id":154,"href":"https:\/\/aramis-tnc.ch\/index.php\/wp-json\/wp\/v2\/pages\/55\/revisions\/154"}],"up":[{"embeddable":true,"href":"https:\/\/aramis-tnc.ch\/index.php\/wp-json\/wp\/v2\/pages\/2"}],"wp:attachment":[{"href":"https:\/\/aramis-tnc.ch\/index.php\/wp-json\/wp\/v2\/media?parent=55"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}