diff --git a/superx/edit/kern/superx_komponentenverwaltung.jsp b/superx/edit/kern/superx_komponentenverwaltung.jsp index 433c13e2..adad2831 100644 --- a/superx/edit/kern/superx_komponentenverwaltung.jsp +++ b/superx/edit/kern/superx_komponentenverwaltung.jsp @@ -416,6 +416,7 @@ boolean jobLogHasStatus = false; String dbVersionTableTag = tag("unbekannt", "warn"); String dbVersionRowsHtml = ""; String dbVersionFallbackJson = "{}"; +String dbSpecialJobsJson = "[]"; String availableVersionFallbackJson = "{}"; String availableVersionRowsHtml = ""; Map availableVersionMap = new LinkedHashMap(); @@ -537,6 +538,47 @@ try { versionJson.append("}"); dbVersionFallbackJson = versionJson.toString(); } + + // Sonderladeroutinen direkt aus etl_job lesen. Dadurch bleiben sie auch sichtbar, + // wenn /etl/list das zugehörige Modul nicht liefert. + if (tableExistsByRegclass(diagCon, "etl_job") || tableExistsByRegclass(diagCon, "public.etl_job")) { + ps = null; + rs = null; + StringBuilder specialJson = new StringBuilder(); + specialJson.append("["); + boolean firstSpecial = true; + try { + ps = diagCon.prepareStatement( + "select uniquename, caption, systeminfo_id from etl_job " + + "where right(lower(uniquename),8) = '_special' " + + "order by systeminfo_id, uniquename" + ); + rs = ps.executeQuery(); + while (rs.next()) { + String jobId = rs.getString(1); + String caption = rs.getString(2); + Object sidObj = rs.getObject(3); + if (jobId == null || jobId.trim().length() == 0) continue; + if (!firstSpecial) specialJson.append(","); + firstSpecial = false; + specialJson.append("{\"id\":\"").append(jsString(jobId.trim())).append("\""); + specialJson.append(",\"name\":\"").append(jsString(caption == null || caption.trim().length() == 0 ? jobId.trim() : caption.trim())).append("\""); + specialJson.append(",\"description\":\"\""); + specialJson.append(",\"sourceDatabase\":\"\""); + specialJson.append(",\"jobType\":\"special\""); + specialJson.append(",\"fromDatabase\":true"); + if (sidObj != null) specialJson.append(",\"systeminfoId\":").append(String.valueOf(sidObj)); + specialJson.append("}"); + } + } catch (Exception e) { + specialJson = new StringBuilder("[]"); + } finally { + try { if (rs != null) rs.close(); } catch (Exception e) { } + try { if (ps != null) ps.close(); } catch (Exception e) { } + } + if (specialJson.charAt(specialJson.length() - 1) != ']') specialJson.append("]"); + dbSpecialJobsJson = specialJson.toString(); + } } catch (Exception e) { dbDiagnosticMessage = e.getMessage(); dbInfoHtml = "Direkte DB-Prüfung" + tag("nicht verfügbar", "warn") + " " + html(e.getMessage()) + ""; @@ -567,6 +609,16 @@ body{background:#f5f7fa} .code{font-family:Consolas,Monaco,"Courier New",monospace;font-size:.78rem;background:#eef2f6;border:1px solid #dfe5ec;border-radius:5px;padding:.1rem .35rem;color:#273647;word-break:break-all} .action-cell{min-width:470px} .action-row{display:flex;flex-wrap:wrap;gap:.4rem} +.special-toggle-arrow{display:inline-block;width:.9rem;text-align:center;margin-right:.2rem;font-size:.82rem} +.special-routines-row>td{padding:.15rem .75rem .9rem .75rem!important;border-top:0!important;background:#f8fafc} +.special-routines-panel{border:1px solid #d9e5ef;border-left:4px solid #3c88b8;border-radius:8px;background:#fff;padding:.9rem 1rem;box-shadow:0 .25em .65em -.2em rgba(10,10,10,.08)} +.special-routines-head{display:flex;align-items:center;justify-content:space-between;gap:.75rem;margin-bottom:.65rem} +.special-routines-list{display:grid;gap:.55rem} +.special-routine-item{display:grid;grid-template-columns:minmax(240px,1.25fr) minmax(280px,1.75fr) auto;gap:1rem;align-items:center;padding:.7rem .8rem;border:1px solid #e7edf3;border-radius:7px;background:#fbfcfd} +.special-routine-name{font-weight:700;margin-bottom:.2rem} +.special-routine-description{font-size:.8rem;color:#697386;line-height:1.35} +.special-routine-meta{font-size:.78rem;color:#697386;line-height:1.55} +.special-routine-meta .code{margin-left:.25rem} .panel-head{display:flex;align-items:center;justify-content:space-between;gap:.75rem;margin-bottom:1rem} .panel-head h2{margin:0;font-size:1.15rem;font-weight:700} .panel-body{padding:0} @@ -586,7 +638,7 @@ pre.json{white-space:pre-wrap;word-break:break-word;background:#f2f5f8;border:1p .message{margin-bottom:1rem} .small,.muted{color:#697386}.small{font-size:.8rem;line-height:1.35} .table td,.table th{vertical-align:top} -@media(max-width:1150px){.details-grid,.kv,.plan-grid,.run-grid{grid-template-columns:1fr}.action-cell{min-width:320px}} +@media(max-width:1150px){.details-grid,.kv,.plan-grid,.run-grid,.special-routine-item{grid-template-columns:1fr}.action-cell{min-width:320px}} .diagnostics-panel{border-left:5px solid #3c88b8} .diagnostics-panel .panel-head{margin-bottom:.75rem} @@ -630,7 +682,7 @@ pre.json{white-space:pre-wrap;word-break:break-word;background:#f2f5f8;border:1p -
+
ModulStatusVersionenLetztes UpdateDatenquelleDB-VerbindungAktionen
Module werden geladen...
+ -

Aktueller Lauf

JobExecutionId
-
Job
-
Status
Kein aktiver Lauf bekannt.
Fortschritt
-
+

Aktueller Lauf

JobExecutionId
-
Job
-
Status
Kein aktiver Lauf bekannt.
Fortschritt
-

Log-Ausgabe

Noch kein Log geladen.
Noch kein Lauf gestartet.
diff --git a/superx/edit/kern/sx_repository_list.jsp b/superx/edit/kern/sx_repository_list.jsp index e2225a3f..9e455a58 100644 --- a/superx/edit/kern/sx_repository_list.jsp +++ b/superx/edit/kern/sx_repository_list.jsp @@ -1,7 +1,7 @@ <%@ taglib uri="/WEB-INF/dbforms.tld" prefix="db" %> <%@page pageEncoding="utf-8" contentType="text/html; charset=UTF-8" %> - + @@ -49,12 +49,10 @@ if(mandantobject != null) //der superx-Default-Mandant ist bei dbforms ein Leerstring if(mandantenid.equals("default")) mandantenid=""; -String db_form_name="sx_repository"; +String db_form_name="sx_repository_list"; String erlaubt="0"; %> - <%@ include file="/edit/check_authentication.inc" %> - <% if(erlaubt.equals("0")) { @@ -74,7 +72,6 @@ keyfieldsused=kf.toString();

-Logo
<% if(!mandantenid.equals("default") && !mandantenid.equals("")) out.println("Mandant: " + mandantenid +""); %>

@@ -90,6 +87,16 @@ if(sachgebiete_id != null && !sachgebiete_id.equals("null")){ filter +="sachgebiete_id="+sachgebiete_id; } %> + +<% +String art = request.getParameter("art"); +if(art != null && !art.equals("null")){ + if (!filter.isEmpty()) { + filter += ","; + } + filter +=",art="+art; +} +%> @@ -99,7 +106,11 @@ dbConnectionName="<%= mandantenid %>" > + @@ -107,11 +118,16 @@ dbConnectionName="<%= mandantenid %>" > + +
-Details + + + +Details
-<% + + <% sql = "select tid, name from sachgebiete order by name;"; %> + +<% if(currentRow_sx_repository != null) { %>?sachgebiete_id=<%= sachgebiete_id %>&tid=" onClick="javascript:neu=window.open('<%= response.encodeURL("/superx/edit/kern/sx_repository_edit.jsp") %>?sachgebiete_id=<%= sachgebiete_id %>&tid=','_blank','directories=no,location=no,menubar=no,toolbar=no,scrollbars=yes,resizable=yes,width=800,height=600'); return false;">Details<% @@ -124,4 +140,4 @@ dbConnectionName="<%= mandantenid %>" >