71 lines
3.0 KiB
HTML
71 lines
3.0 KiB
HTML
<!doctype html>
|
|
<html lang="ko" xmlns:th="http://www.thymeleaf.org">
|
|
<head th:replace="~{fragments/layout :: head('정형 데이터 조회')}"></head>
|
|
<body>
|
|
<nav th:replace="~{fragments/layout :: nav}"></nav>
|
|
<main class="container py-4">
|
|
<div class="page-title">
|
|
<h1>정형 데이터 조회</h1>
|
|
<details class="explanation-details">
|
|
<summary>도움말</summary>
|
|
<p>환경 설정에 등록된 <span th:text="${product.dataName()}">업무 데이터</span> 객체를 읽기 전용으로 조회합니다. 임의 SQL이나 수정 기능은 제공하지 않습니다.</p>
|
|
<p class="mb-0">한 번에 최대 50건까지만 표시합니다.</p>
|
|
</details>
|
|
</div>
|
|
|
|
<div class="alert alert-warning">
|
|
이 화면은 관리자용 원장 미리보기입니다. 사용자별 행 접근 적용 결과는 <a href="/probe">접근 검증</a>에서 확인하세요.
|
|
</div>
|
|
|
|
<section class="content-band">
|
|
<div class="section-heading">
|
|
<div>
|
|
<h2>조회할 업무 데이터 선택</h2>
|
|
<p class="section-subtitle"><code th:text="${catalogOwner}">OWNER</code> 스키마에서 환경 설정으로 승인한 TABLE/VIEW만 표시합니다.</p>
|
|
</div>
|
|
</div>
|
|
<div class="structured-table-grid">
|
|
<a th:each="entry : ${tables}"
|
|
class="structured-table-card"
|
|
th:classappend="${entry.key() == selectedKey} ? ' is-selected'"
|
|
th:href="@{/structured-data(table=${entry.key()})}">
|
|
<strong th:text="${entry.businessName()}">직원 원장</strong>
|
|
<code th:text="${entry.tableName()}">OBJECT_NAME</code>
|
|
<small><span th:text="${entry.objectType()}">TABLE</span> · <span th:text="${entry.description()}">업무 데이터</span></small>
|
|
</a>
|
|
</div>
|
|
</section>
|
|
|
|
<div class="alert alert-danger" th:if="${errorMessage}" th:text="${errorMessage}"></div>
|
|
|
|
<section class="content-band" th:if="${preview}">
|
|
<div class="section-heading">
|
|
<div>
|
|
<h2 th:text="${preview.table().businessName()}">직원 원장</h2>
|
|
<p class="section-subtitle">
|
|
<code th:text="${catalogOwner + '.' + preview.table().tableName()}">OWNER.OBJECT_NAME</code>
|
|
<span th:text="${' · 최대 ' + preview.rowLimit() + '건'}"> · 최대 50건</span>
|
|
</p>
|
|
</div>
|
|
</div>
|
|
<div class="table-responsive structured-data-result">
|
|
<table class="table table-sm align-middle">
|
|
<thead>
|
|
<tr><th th:each="column : ${preview.columns()}" th:text="${column}">COLUMN</th></tr>
|
|
</thead>
|
|
<tbody>
|
|
<tr th:each="row : ${preview.rows()}">
|
|
<td th:each="column : ${preview.columns()}"
|
|
th:text="${row.get(column) == null ? '-' : row.get(column)}">value</td>
|
|
</tr>
|
|
<tr th:if="${#lists.isEmpty(preview.rows())}">
|
|
<td class="text-muted" th:attr="colspan=${#lists.size(preview.columns())}">표시할 데이터가 없습니다.</td>
|
|
</tr>
|
|
</tbody>
|
|
</table>
|
|
</div>
|
|
</section>
|
|
</main>
|
|
</body>
|
|
</html>
|