diff options
| author | Paul-Christian Volkmer | 2024-03-05 10:24:25 +0100 |
|---|---|---|
| committer | Paul-Christian Volkmer | 2024-03-05 10:24:25 +0100 |
| commit | 4bfe7dc69861c47b752f1f6d415f504d5518a03d (patch) | |
| tree | 60369bf8c4cd718fc127a1aa31e7edfffb7a3ab9 /src/main | |
| parent | 0aec5e44794d6458ee9b8d7b086922aec89aefeb (diff) | |
style: layout and style changes for config page
Diffstat (limited to 'src/main')
| -rw-r--r-- | src/main/resources/static/style.css | 26 | ||||
| -rw-r--r-- | src/main/resources/templates/configs.html | 165 |
2 files changed, 119 insertions, 72 deletions
diff --git a/src/main/resources/static/style.css b/src/main/resources/static/style.css index 81c61eb..1dd68ed 100644 --- a/src/main/resources/static/style.css +++ b/src/main/resources/static/style.css @@ -631,6 +631,32 @@ input.inline:focus-visible { color: var(--bg-red); } +.tab { + padding: 1em; + border: none; + border-radius: 3px 3px 0 0; + cursor: pointer; + transition: all 0.2s; + + font-weight: bold; +} + +.tab:hover, +.tab.active { + background: var(--table-border); +} + +.tabcontent { + border: 1px solid var(--table-border); + border-radius: 0 .5em .5em .5em; + display: none; + padding: 1em; +} + +.tabcontent.active { + display: block; +} + a.reload { display: none; position: absolute; diff --git a/src/main/resources/templates/configs.html b/src/main/resources/templates/configs.html index 3e8aa9e..1ac4a26 100644 --- a/src/main/resources/templates/configs.html +++ b/src/main/resources/templates/configs.html @@ -10,90 +10,111 @@ <main> <h1>Konfiguration</h1> - <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> + <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> - <td th:if="${mtbFileSender.startsWith('Rest')}">REST-Endpunkt</td> - <td th:if="${mtbFileSender.startsWith('Kafka')}">Kafka-Broker und Topics</td> - <td>[[ ${mtbFileEndpoint} ]]</td> + <th>Name</th> + <th>Wert</th> </tr> - </tbody> - </table> - </section> + </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 th:insert="~{configs/tokens.html}"> - </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> - <section th:insert="~{configs/userroles.html}"> - </section> + <div id="security" class="tabcontent"> + <section th:insert="~{configs/tokens.html}"> + </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> + <section th:insert="~{configs/userroles.html}"> + </section> + </div> - <section> - <h2><span th:if="${not transformations.isEmpty()}">✅</span><span th:if="${transformations.isEmpty()}">⛔</span> Transformationen</h2> + <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>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> + <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 ⇒ 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>⇒</strong> - <span class="bg-to" title="Ersetze durch diesen Wert">[[ ${transformation.newValue} ]]</span> - </td> - </tr> - </tbody> - </table> - </th:block> - </section> + <table class="config-table"> + <thead> + <tr> + <th>JSON-Path</th> + <th>Transformation von ⇒ 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>⇒</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>
\ No newline at end of file |
