3.0.0.3 Control Repository Schema & Logs.

This commit is contained in:
Andy Howard
2025-02-10 18:25:40 +00:00
parent 75185ed302
commit a7bec4e806
36 changed files with 1272 additions and 94 deletions
@@ -126,11 +126,11 @@
<table class="sbc-item-list">
<thead>
<tr>
<th class="">@Localiser["label.schema"]</th>
<th class="">@Localiser["label.table"]</th>
<th class="">@Localiser["label.column"]</th>
<th class="">@Localiser["label.index"]</th>
<th class="" style="min-width:50%;">@Localiser["label.comment"]</th>
<th class="width10pc">@Localiser["label.schema"]</th>
<th class="width20pc">@Localiser["label.table"]</th>
<th class="width20pc">@Localiser["label.column"]</th>
<th class="width20pc">@Localiser["label.index"]</th>
<th class="width30pc">@Localiser["label.comment"]</th>
</tr>
</thead>
<tbody></tbody>
@@ -0,0 +1,112 @@
@* Instance - Repository Database Schema *@
@model Model_System
@inject SbmLocaliser Localiser
@{
ViewData["Title"] = "Instance - Repository Database Schema";
Model.AdditionalFiles_JS.Add("js/sbc-ins-rep-sch.js");
}
<div class="sbc-panel Schema fullheight">
<script type="text/javascript">
sbc.msg.dbSchemaValid = '@Localiser.GetJavascriptText("msg.database.schema.valid")';
</script>
<div class="sbc-panel-data sbc-flex">
@* Filter form - wrap header to include paging controls. *@
@using (@Html.BeginForm(FormMethod.Post, new { @id = "frmSchemaFilter", @class = "sbc-form", @onSubmit = "return false;" }))
{
<div class="sbc-panel-header">
<div class="row">
<div class="fixed">
@* <partial name="~/Views/Common/ResultsPaging.cshtml" /> *@
</div>
<div class="col center"><div class="sbc-panel-caption">@Localiser["caption.database.core"]</div></div>
<div class="fixed">
@* Burger menu *@
<ul class="nav navbar-nav navbar-dark navbar-right sbc-burger">
<li class="dropdown-toggle caret-off">
<a href="#" class="dropdown" data-toggle="dropdown" role="button" aria-haspopup="true" aria-expanded="false"><span class="navbar-toggler-icon"></span></a>
<ul class="dropdown-menu dropdown-menu-right sbc-dropdown-menu">@* Menu items will be inserted here. *@</ul>
</li>
</ul>
</div>
</div>
</div>
@* Filter Panel *@
<div class="sbc-panel-filter">
@Html.HiddenFor(model => model.DatabaseFilter.Instance, new { @id = "", @class = "FilterInstance" })
<div class="row">
<div class="col-sm-4 row pb4">
<div class="col-sm-5 sbc-label text-left text-sm-right">@Localiser["label.context"]</div>
<div class="col-sm-7">
@Html.DropDownListFor(model => model.DatabaseFilter.Context, Model.GetInstanceContextsForSelect(), "", new { @id = "", @class = "FilterContext" })
</div>
</div>
<div class="col-sm-4 row pb4">
<div class="col-sm-5 sbc-label text-left text-sm-right">@Localiser["label.search"]</div>
<div class="col-sm-7">
@Html.TextBoxFor(model => model.DatabaseFilter.Search, new { @id = "", @class = "FilterSearch", @maxlength = "32" })
</div>
</div>
</div>
</div>
}
<div class="sbc-panel-item-table sbc-flex">
<table class="sbc-item-list">
<thead>
<tr>
<th class="width10pc">@Localiser["label.schema"]</th>
<th class="width20pc">@Localiser["label.table"]</th>
<th class="width20pc">@Localiser["label.column"]</th>
<th class="width20pc">@Localiser["label.index"]</th>
<th class="width25pc">@Localiser["label.comment"]</th>
<th class="width5pc"></th>
</tr>
<tr><td colspan="6"><div class="sbc-panel-messages"></div></td></tr>
</thead>
<tbody></tbody>
</table>
</div>
@* Element templates *@
<div class="sbc-panel-item-template">
@* Filter Burger option template - ul is ignored *@
<ul class="sbc-dropdown-menu SchemaFilter">
<li class="sbc-dropdown-item sbc-action"><div class="sbc-label">XXX</div></li>
</ul>
@* Schema row template - table is ignored. *@
<table class="">
<tr class="sbc-row-item SchemaItem">
<td class=""><div class="SchemaName"></div></td>
<td class=""><div class="TableName"></div></td>
<td class=""><div class="ColumnName"></div></td>
<td class=""><div class="IndexName"></div></td>
<td class=""><div class="Comment"></div></td>
<td>
<div class="right">
@* Burger menu *@
<ul class="nav navbar-nav navbar-light navbar-right sbc-burger">
<li class="dropdown-toggle caret-off">
<a href="#" class="dropdown" data-toggle="dropdown" role="button" aria-haspopup="true" aria-expanded="false"><span class="sbc-ellipsis-dot"></span><span class="sbc-ellipsis-dot"></span><span class="sbc-ellipsis-dot"></span></a>
<ul class="dropdown-menu dropdown-menu-right sbc-dropdown-menu">@* Menu items will be inserted here. *@</ul>
</li>
</ul>
</div>
</td>
</tr>
</table>
@* Item Burger option template - ul is ignored *@
<ul class="sbc-dropdown-menu Schema">
<li class="sbc-dropdown-item sbc-action"><div class="sbc-label">XXX</div></li>
</ul>
</div>
</div>
</div>
@@ -1,9 +1,9 @@
@* Instance - Core Database*@
@model Model_CoreDatabase
@* Instance - Repository Database Tables *@
@model Model_RepositoryDatabase
@inject SbmLocaliser Localiser
@{
ViewData["Title"] = "Instance - Core Database";
Model.AdditionalFiles_JS.Add("js/sbc-ins-coredb.js");
ViewData["Title"] = "Instance - Repository Database Tables";
Model.AdditionalFiles_JS.Add("js/sbc-ins-rep-db.js");
}
<div class="sbc-panel Tables fullheight">
@@ -128,7 +128,8 @@
<div class="dropdown-menu" aria-labelledby="navbarDropdown">
<div class="dropdown-item text-dark sbc-action" onclick="sbc.goToPage('Instance/Owner');">@Localiser["label.owners"]</div>
<div class="dropdown-item text-dark sbc-action" onclick="sbc.goToPage('Instance/Repository');">@Localiser["label.repositories"]</div>
<div class="dropdown-item text-dark sbc-action" onclick="sbc.goToPage('Instance/CoreDatabase');">@Localiser["label.database.core"]</div>
<div class="dropdown-item text-dark sbc-action" onclick="sbc.goToPage('Instance/Repository/Database/Tables');">@Localiser["label.repository.database"]</div>
<div class="dropdown-item text-dark sbc-action" onclick="sbc.goToPage('Instance/Repository/Database/Schema');">@Localiser["label.repository.schema"]</div>
</div>
</li>
@@ -148,7 +149,7 @@
@Localiser["label.system"]
</a>
<div class="dropdown-menu" aria-labelledby="navbarDropdown">
<div class="dropdown-item text-dark sbc-action" onclick="sbc.goToPage('System/Database');">@Localiser["label.database"]</div>
@* <div class="dropdown-item text-dark sbc-action" onclick="sbc.goToPage('System/Database');">@Localiser["label.database"]</div> *@
<div class="dropdown-item text-dark sbc-action" onclick="sbc.goToPage('System/Logs');">@Localiser["label.logs"]</div>
</div>
</li>
@@ -0,0 +1,120 @@
@model Model_System
@inject SbmLocaliser Localiser
@{
ViewData["Title"] = "System - Logs";
Model.AdditionalFiles_JS.Add("js/sbc-sys-logs.js");
}
<style>
#dlgLogFile .FileData
{
font-family: Courier New, Courier, monospace;
font-size: 10px;
color: slategray;
overflow-x: auto;
overflow-y: auto;
}
#dlgLogFile .FileData .tab
{
padding-left: 16px;
}
#dlgLogFile .FileData .tab2
{
padding-left: 32px;
}
#dlgLogFile .FileData .err
{
color: darkred;
}
#dlgLogFile .FileData .wrn
{
color: darkorange;
}
#dlgLogFile .FileData .inf
{
color: darkGreen;
}
</style>
<div class="sbc-panel LogFiles">
<script type="text/javascript">
</script>
<div class="sbc-panel-data">
<div class="sbc-panel-header row">
<div class="fixed"></div>
<div class="col center"><div class="sbc-panel-caption">@Localiser["system.caption.logs"]</div></div>
<div class="fixed row">
<div class="sbc-action sbc-results-refresh"><img src="~/img/action/refresh24.png" alt="@(Localiser["label.refresh"])" title="@(Localiser["label.refresh"])" /></div>
</div>
</div>
<div class="sbc-panel-filter">
@using (@Html.BeginForm(FormMethod.Post, new { @id = "frmLogsFilter", @class = "sbc-form", @onSubmit = "return false;" }))
{
<input type="hidden" name="LogsFilter.Filename" class="FilterLogFilename" />
<div class="row">
<div class="col-sm-12 row mb-1">
<div class="col-sm-4 col-md-3 sbc-label text-left text-sm-right" style="padding-top:2px;">@Localiser["label.root.folder"]</div>
<div class="col-sm-8 col-md-9 sbc-value mt-1 bold">@(Model.LoggingRootFolder)</div>
</div>
<div class="col-sm-12 col-md-4 row">
<div class="col-sm-4 col-md-5 sbc-label text-left text-sm-right">@Localiser["label.folder"]</div>
<div class="col-sm-8 col-md-7 mb-1"><div style="max-width:200px;"><select id="cbFilterLogFolder" name="LogsFilter.Folder" class="FilterLogFolder"></select></div></div>
</div>
<div class="col-sm-12 col-md-4 row">
<div class="col-sm-4 col-md-5 sbc-label text-left text-sm-right">@Localiser["label.year"]</div>
<div class="col-sm-8 col-md-7 mb-1"><div style="max-width:200px;"><select id="cbFilterLogYear" name="LogsFilter.Year" class="FilterLogYear"></select></div></div>
</div>
<div class="col-sm-12 col-md-4 row">
<div class="col-sm-4 col-md-5 sbc-label text-left text-sm-right">@Localiser["label.month"]</div>
<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 class="sbc-panel-results">
<div class="sbc-panel-messages"></div>
@* Log file list. *@
<div class="sbc-panel-info" style="min-height:120px;max-height:100%;overflow-y:auto;">
<table class="sbc-item-list">
<thead>
<tr>
<th class="pl-2">@Localiser["label.file"]</th>
<th class="center">@Localiser["label.updated"]</th>
<th class="center">@Localiser["label.size"]</th>
</tr>
</thead>
<tbody></tbody>
</table>
</div>
@* Log file template. *@
<table class="sbc-panel-item-template">
<tr class="sbc-panel-item LogFile pointer">
<td><div class="Filename pl-2 pt-1"></div></td>
<td><div class="Updated center"></div></td>
<td><div class="Size center"></div></td>
</tr>
</table>
</div>
</div>
<div id="dlgLogFile" class="sbc-dialog">
<form>
<input type="hidden" class="LogFilename" />
</form>
<div class="sbc-data FileData"></div>
</div>
</div>
<script>
sbc.data.logFolder = '@(Localiser.EscapeJavascriptText(Model.LogsFilter.Folder))';
sbc.data.logYear = '@(Localiser.EscapeJavascriptText(Model.LogsFilter.Year))';
sbc.data.logMonth = '@(Localiser.EscapeJavascriptText(Model.LogsFilter.Month))';
</script>
@@ -6,4 +6,5 @@
@using Sarand.BusinessMgr.Web.Control.Models.Account
@using Sarand.BusinessMgr.Web.Control.Models.Instance
@using Sarand.BusinessMgr.Web.Control.Models.Param
@using Sarand.BusinessMgr.Web.Control.Models.System
@addTagHelper *, Microsoft.AspNetCore.Mvc.TagHelpers