Add support item process tracking and admin updates

This commit is contained in:
2026-10-16 16:37:51 +01:00
parent 93c86fed6e
commit 2c3fb146ab
88 changed files with 1594 additions and 642 deletions
+3 -2
View File
@@ -64,6 +64,7 @@
{
max-height: auto;
}
.sax-panel-results .sax-panel-info.DbSchema .sax-panel-messages
{
margin-bottom: 8px;
@@ -99,7 +100,7 @@
<div class="sax-panel-messages"></div>
</div>
@* Database Schema - Reference *@
@* Database Schema - Support *@
<div class="sax-panel-info DbSchema Support">
<div class="sax-header">
<div class="sax-caption">@Localiser["system.caption.database.support"]</div>
@@ -118,7 +119,7 @@
<th class="">@Localiser["label.table"]</th>
<th class="">@Localiser["label.column"]</th>
<th class="">@Localiser["label.index"]</th>
<th class="">@Localiser["label.comment"]</th>
<th class="" style="min-width:50%;">@Localiser["label.comment"]</th>
</tr>
</thead>
<tbody></tbody>
@@ -1,5 +1,4 @@
@model SaxModel_Admin
@model SaxModel_Admin
@inject Microsoft.AspNetCore.Antiforgery.IAntiforgery AntiForgery;
@inject SaxLocaliser Localiser
@*
@@ -55,7 +54,7 @@
}
@* Scripts *@
<script>
<script>
var sax = sax || { page: {}, mdl: {}, url: {}, links: {}, form: {}, data: {}, ajax: {}, msg: {}, lbl: {}, dlg: { title: {}, btn: {} }, $frm: {}, $dlg: {}, $pnl: {}, session: {}, kli: {} };
sax.url.base = '@Model.RedirectLocation.Base';
sax.url.home = '@Model.RedirectLocation.Home';
@@ -85,7 +84,7 @@
sax.kli.active = @keepLoggedIn;
sax.kli.interval = @(Sax.Config.Admin.Session.Cookie.KeepLoggedInTimeoutMillis);
sax.debugMode = @debug;
</script>
</script>
</head>
<body>
@@ -94,7 +93,7 @@
<header id="sax-page-header">
@* Navigation bar *@
<nav class="navbar navbar-expand-sm navbar-toggleable-sm navbar-light bg-white border-bottom box-shadow mb-3">
<nav class="navbar navbar-expand-sm navbar-toggleable-sm navbar-light bg-white border-bottom">
<div class="container">
<a class="navbar-brand" asp-area="" asp-controller="Home" asp-action="Index">@Localiser["home.caption.application"]</a>
<button class="navbar-toggler" type="button" data-toggle="collapse" data-target=".navbar-collapse" aria-controls="navbarSupportedContent"
@@ -104,9 +103,9 @@
<div class="navbar-collapse collapse d-sm-inline-flex flex-sm-row-reverse">
<ul class="navbar-nav flex-grow-1">
@*
<li class="nav-item">
<a class="nav-link text-dark" asp-area="" asp-controller="Home" asp-action="Index">@Localiser["home.caption.home"]</a>
</li>
<li class="nav-item">
<a class="nav-link text-dark" asp-area="" asp-controller="Home" asp-action="Index">@Localiser["home.caption.home"]</a>
</li>
*@
@if (Model.AwaitingLogin)
{
@@ -4,56 +4,91 @@
ViewData["Title"] = "System - Database";
}
<div class="container-fluid DatabaseTables">
<div class="sax-panel DatabaseTables">
<div class="sax-panel-filter">
<div class="sax-header row">
<div class="col"><div class="sax-caption">@Localiser["system.caption.database"]</div></div>
<div class="fixed row">
<div class="sax-action sax-results-refresh"><img src="~/img/action/refresh24.png" alt="@(Localiser["label.refresh"])" title="@(Localiser["label.refresh"])" /></div>
<script type="text/javascript">
</script>
<div class="sax-panel-data sax-flex">
@* Filter form - wrap header to include paging controls. *@
@using (@Html.BeginForm(FormMethod.Post, new { @id = "frmDbTableFilter", @class = "sax-form", @onSubmit = "return false;" }))
{
@* Header - Page caption, paging controls, actions. *@
<div class="sax-panel-header">
<div class="row">
<div class="col"><div class="sax-panel-caption">@Localiser["system.caption.database"]</div></div>
<div class="fixed row">
<div class="sax-action sax-results-refresh"><img src="~/img/action/refresh24.png" alt="@(Localiser["label.refresh"])" title="@(Localiser["label.refresh"])" /></div>
</div>
</div>
</div>
</div>
<div class="sax-content">
@using (@Html.BeginForm(FormMethod.Post, new { @id = "frmDbTableFilter", @class = "sax-form", @onSubmit = "return false;" }))
{
@* Filter Panel *@
<div class="sax-panel-filter">
<div class="row">
<div class="col-sm-5 col-md-3 sax-label text-left text-sm-right">@Localiser["label.instance"]</div>
<div class="col-sm-7 col-md-3 mb-sm-1 mb-md-0">@Html.DropDownListFor(model => model.DatabaseFilter.Instance, Model.GetDatabases(), new { @id = "cbDatabaseFilterInstance", @class = "DatabaseFilterInstance" })</div>
<div class="col-sm-5 col-md-3 sax-label text-left text-sm-right">@Localiser["label.search"]</div>
<div class="col-sm-7 col-md-3">@Html.TextBoxFor(model => model.DatabaseFilter.Search, new { @id = "ifDatabaseFilterSearch", @class = "DatabaseFilterSearch", @maxlength = "32" })</div>
</div>
}
</div>
}
@* Item list *@
<div class="sax-panel-item-table sax-flex">
<table class="sax-item-list">
<thead>
<tr>
<th class="width50pc pl-2">@Localiser["label.table"]</th>
<th class="width15pc center">@Localiser["label.rows"]</th>
<th class="width15pc center">@Localiser["label.columns"]</th>
<th class="width15pc center">@Localiser["label.indices"]</th>
<th class="width5pc center"></th>
</tr>
<tr><td colspan="6"><div class="sax-panel-messages"></div></td></tr>
</thead>
<tbody></tbody>
</table>
</div>
</div>
<div class="sax-panel-results">
<div class="sax-panel-messages"></div>
<div class="sax-panel-item-list"></div>
<div class="sax-panel-item-template">
<div class="sax-panel-item DatabaseTable">
<div class="sax-header row">
<div class="col">
<div class="sax-caption"><div class="sax-action TableName"></div></div>
@* Element templates *@
<div class="sax-panel-item-template">
@* Item row template - table is ignored. *@
<table>
<tr class="sax-row-item DatabaseTable">
<td class="TableName pl-1"></td>
<td class="RowCount center"></td>
<td class="ColumnCount center"></td>
<td class="IndexCount center"></td>
<td class="Actions">
<div class="right">
@* Burger menu *@
<ul class="nav navbar-nav navbar-light navbar-right sax-burger">
<li class="dropdown-toggle caret-off">
<a href="#" class="dropdown" data-toggle="dropdown" role="button" aria-haspopup="true" aria-expanded="false"><span class="sax-ellipsis-dot"></span><span class="sax-ellipsis-dot"></span><span class="sax-ellipsis-dot"></span></a>
<ul class="dropdown-menu dropdown-menu-right sax-dropdown-menu">@* Menu items will be inserted here. *@</ul>
</li>
</ul>
</div>
<div class="fixed sax-actions">
</div>
</div>
<div class="sax-content">
<div class="row">
<div class="col-sm-6">@Localiser["label.rows"]:&nbsp;<span class="RowCount"></span></div>
<div class="col-sm-6 text-right">@Localiser["label.columns"]:&nbsp;<span class="ColumnCount"></span></div>
</div>
<div class="row">
<div class="col-sm-6"></div>
<div class="col-sm-6 text-right">@Localiser["label.indices"]:&nbsp;<span class="IndexCount"></span></div>
</div>
</div>
</div>
</div>
</td>
</tr>
</table>
@* Item burger dropdown template - ul is ignored *@
<ul class="sax-dropdown-menu DatabaseTable">
<li class="sax-dropdown-item sax-action"><div class="sax-label">XXX</div></li>
</ul>
</div>
</div>
@using (@Html.BeginForm(FormMethod.Post, new { @id = "frmDbTableName", @onSubmit = "return false;" }))
{
@Html.HiddenFor(model => model.DatabaseTable.Instance, new { @class = "DatabaseTableInstance" })
@@ -76,7 +111,7 @@
@Html.HiddenFor(model => model.DatabaseTable.Instance, new { @class = "DatabaseTableInstance" })
@Html.HiddenFor(model => model.DatabaseTable.Name, new { @class = "DatabaseTableName" })
}
<table>
<table class="fullwidth">
<tr>
<td class="right pt2 pr8">Properties:</td>
<td>
@@ -87,11 +122,11 @@
<tr>
<td class="right pt2 pr8">Columns:</td>
<td>
<table class="sax-striped TableColumns">
<table class="sax-striped TableColumns fullwidth">
<tr class="sax-heading">
<td class="right pl8 pr8">Pos</td>
<td class="pl8 pr8">Name</td>
<td class="center">Format</td>
<td class="width10pc right pl8 pr8">Pos</td>
<td class="width50pc pl8 pr8">Name</td>
<td class="width50pc center">Format</td>
</tr>
</table>
</td>
@@ -99,11 +134,11 @@
<tr>
<td class="right pt2 pr8">Indices:</td>
<td>
<table class="sax-striped TableIndices">
<table class="sax-striped TableIndices fullwidth">
<tr class="sax-heading">
<td class="pl8 pr8">Name</td>
<td class="center pl8 pr8">Unique</td>
<td class="pl8 pr8">Columns</td>
<td class="width50pc pl8 pr8">Name</td>
<td class="width20pc center pl8 pr8">Unique</td>
<td class="width20pc pl8 pr8">Columns</td>
</tr>
</table>
</td>
+31 -22
View File
@@ -40,18 +40,26 @@
}
</style>
<div class="container-fluid LogFiles">
<div class="sax-panel LogFiles">
<div class="sax-panel-filter">
<div class="sax-header row">
<div class="col"><div class="sax-caption">@Localiser["system.caption.logs"]</div></div>
<div class="fixed row">
<div class="sax-action sax-results-refresh"><img src="~/img/action/refresh24.png" alt="@(Localiser["label.refresh"])" title="@(Localiser["label.refresh"])" /></div>
<div class="sax-panel-data sax-flex">
@* Filter form - wrap header to include paging controls. *@
@using (@Html.BeginForm(FormMethod.Post, new { @id = "frmLogsFilter", @class = "sax-form", @onSubmit = "return false;" }))
{
@* Header - Page caption, paging controls, actions. *@
<div class="sax-panel-header">
<div class="row">
<div class="col"><div class="sax-panel-caption">@Localiser["system.caption.logs"]</div></div>
<div class="fixed row">
<div class="sax-action sax-results-refresh"><img src="~/img/action/refresh24.png" alt="@(Localiser["label.refresh"])" title="@(Localiser["label.refresh"])" /></div>
</div>
</div>
</div>
</div>
<div class="sax-content">
@using (@Html.BeginForm(FormMethod.Post, new { @id = "frmLogsFilter", @class = "sax-form", @onSubmit = "return false;" }))
{
@* Filter Panel *@
<div class="sax-panel-filter">
<input type="hidden" name="LogsFilter.Filename" class="FilterLogFilename" />
<div class="row">
<div class="col-sm-12 row">
@@ -71,14 +79,12 @@
<div class="col-sm-8 col-md-7"><div style="max-width:200px;"><select id="cbFilterLogMonth" name="LogsFilter.Month" class="FilterLogMonth"></select></div></div>
</div>
</div>
}
</div>
</div>
</div>
}
<div class="sax-panel-results">
<div class="sax-panel-messages"></div>
@* Log file list. *@
<div class="sax-panel-info" style="min-height:120px;max-height:100%;overflow-y:auto;">
<div class="sax-panel-item-table sax-flex">
<table class="sax-item-list">
<thead>
<tr>
@@ -86,10 +92,12 @@
<th class="center">@Localiser["label.updated"]</th>
<th class="center">@Localiser["label.size"]</th>
</tr>
<tr><td colspan="6"><div class="sax-panel-messages"></div></td></tr>
</thead>
<tbody></tbody>
</table>
</div>
@* Log file template. *@
<table class="sax-panel-item-template">
<tr class="sax-panel-item LogFile pointer">
@@ -98,13 +106,14 @@
<td><div class="Size center"></div></td>
</tr>
</table>
</div>
<div id="dlgLogFile" class="sax-dialog">
<form>
<input type="hidden" class="LogFilename" />
</form>
<div class="sax-data FileData"></div>
<div id="dlgLogFile" class="sax-dialog">
<form>
<input type="hidden" class="LogFilename" />
</form>
<div class="sax-data FileData"></div>
</div>
</div>
</div>