summaryrefslogtreecommitdiff
path: root/src/main/resources/templates/configs.html
blob: 1ac4a265923363667cc39b494fb90814de06d4b4 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
<!DOCTYPE html>
<html lang="de" xmlns:th="http://www.thymeleaf.org">
<head>
    <meta charset="UTF-8">
    <title>ETL-Prozessor</title>
    <link rel="stylesheet" th:href="@{/style.css}" />
</head>
<body>
    <div th:replace="~{fragments.html :: nav}"></div>
    <main>
        <h1>Konfiguration</h1>

        <div class="tabs">
            <button class="tab active" onclick="selectTab(this, 'common');">Allgemeine Informationen</button>
            <button class="tab" onclick="selectTab(this, 'security');">Sicherheit</button>
            <button class="tab" onclick="selectTab(this, 'transformation');">Transformationen</button>
        </div>

        <div id="common" class="tabcontent active">
            <section>
                <h2>🔧 Allgemeine Konfiguration</h2>
                <table class="config-table">
                    <thead>
                    <tr>
                        <th>Name</th>
                        <th>Wert</th>
                    </tr>
                    </thead>
                    <tbody>
                        <tr>
                            <td>Pseudonym erzeugt über</td>
                            <td>[[ ${pseudonymGenerator} ]]</td>
                        </tr>
                        <tr>
                            <td>MTBFile-Sender</td>
                            <td>[[ ${mtbFileSender} ]]</td>
                        </tr>
                        <tr>
                            <td th:if="${mtbFileSender.startsWith('Rest')}">REST-Endpunkt</td>
                            <td th:if="${mtbFileSender.startsWith('Kafka')}">Kafka-Broker und Topics</td>
                            <td>[[ ${mtbFileEndpoint} ]]</td>
                        </tr>
                    </tbody>
                </table>
            </section>

            <section hx-ext="sse" th:sse-connect="@{/configs/events}">
                <div th:insert="~{configs/connectionAvailable.html}" th:hx-get="@{/configs?connectionAvailable}" hx-trigger="sse:connection-available">
                </div>
            </section>
        </div>

        <div id="security" class="tabcontent">
            <section th:insert="~{configs/tokens.html}">
            </section>

            <section th:insert="~{configs/userroles.html}">
            </section>
        </div>

        <div id="transformation" class="tabcontent">
            <section>
                <h2><span th:if="${not transformations.isEmpty()}">✅</span><span th:if="${transformations.isEmpty()}">⛔</span> Transformationen</h2>

                <h3>Syntax</h3>
                Hier einige Beispiele zum Syntax des JSON-Path
                <ul>
                    <li style="padding: 0.6rem 0;"><span class="bg-path">diagnoses[*].icdO3T.version</span>: Ersetze die ICD-O3T-Version in allen Diagnosen, z.B. zur Version der deutschen Übersetzung</li>
                    <li style="padding: 0.6rem 0;"><span class="bg-path">patient.gender</span>: Ersetze das Geschlecht des Patienten, z.B. in das von bwHC verlangte Format</li>
                </ul>

                <h3>Konfigurierte Transformationen</h3>
                <th:block th:if="${transformations.isEmpty()}">
                <p>
                    Keine konfigurierten Transformationen.
                </p>
                </th:block>
                <th:block th:if="${not transformations.isEmpty()}">
                <p>
                    Hier sehen Sie eine Übersicht der konfigurierten Transformationen.
                </p>

                <table class="config-table">
                    <thead>
                    <tr>
                        <th>JSON-Path</th>
                        <th>Transformation von &rArr; nach</th>
                    </tr>
                    </thead>
                    <tbody>
                    <tr th:each="transformation : ${transformations}">
                        <td>
                            <span class="bg-path" title="Ersetze Wert(e) an dieser Stelle im MTB-File">[[ ${transformation.path} ]]</span>
                        </td>
                        <td>
                            <span class="bg-from" title="Ersetze immer dann, wenn dieser Wert enthalten ist">[[ ${transformation.existingValue} ]]</span>
                            <strong>&rArr;</strong>
                            <span class="bg-to" title="Ersetze durch diesen Wert">[[ ${transformation.newValue} ]]</span>
                        </td>
                    </tr>
                    </tbody>
                </table>
                </th:block>
            </section>
        </div>
    </main>
    <script th:src="@{/scripts.js}"></script>
    <script th:src="@{/webjars/htmx.org/dist/htmx.min.js}"></script>
    <script th:src="@{/webjars/htmx.org/dist/ext/sse.js}"></script>
    <script>
        function selectTab(self, elem) {
            Array.from(document.getElementsByClassName('tab')).forEach(e => e.className = 'tab');
            self.className = 'tab active';

            Array.from(document.getElementsByClassName('tabcontent')).forEach(e => e.className = 'tabcontent');
            document.getElementById(elem).className = 'tabcontent active';
        }
    </script>
</body>
</html>