mirror of
https://github.com/Theodor-Springmann-Stiftung/hamann-ausgabe-core.git
synced 2025-10-29 09:15:33 +00:00
170 lines
8.0 KiB
Plaintext
170 lines
8.0 KiB
Plaintext
@model XMLStateViewModel;
|
|
@{
|
|
ViewData["Title"] = "Syntax-Check & Dateien";
|
|
ViewData["SEODescription"] = "Johann Georg Hamann: Kommentierte Briefausgabe, Hg. v. Leonard Keidel und Janina Reibold. Durchsuchbare Online-Ausgabe der Briefe von und an Johann Georg Hamann.";
|
|
ViewData["showCredits"] = "false";
|
|
}
|
|
|
|
@* TODO: Headers <div class="ha-xmlstateheader">
|
|
<h1>XML-Daten</h1>
|
|
</div> *@
|
|
@if (Model.ManagedFiles != null && Model.ManagedFiles.Any()) {
|
|
<div class="ha-managedfiles">
|
|
<div class="ha-repo">
|
|
<div class="ha-repodata">
|
|
<div><a href="https://github.com/Theodor-Springmann-Stiftung/hamann-xml">Repository →</a></div>
|
|
@if (Model.GitData != null) {
|
|
<div>Commit @Model.GitData.Commit.Substring(0,7)</div>
|
|
<div>@Model.GitData.PullTime</div>
|
|
}
|
|
</div>
|
|
<div class="ha-repofilecount">
|
|
@Model.ManagedFiles.Count XML-Dateien
|
|
</div>
|
|
</div>
|
|
|
|
@* Syntax-Check cached? We provide the results. *@
|
|
@if (Model.SyntaxCheck != null) {
|
|
<div class="ha-managedfileslist">
|
|
@foreach (var f in Model.ManagedFiles) {
|
|
<div class="ha-managedfile" id="@f.FileName">
|
|
@if (Model.SyntaxCheck.ContainsKey(f.FileName) && Model.SyntaxCheck[f.FileName].Errors == null) {
|
|
<div class="ha-managedfileheader green">
|
|
<div>@f.FileName</div>
|
|
<div>@f.GetLastModified()</div>
|
|
<div class="ha-filestatusicon">
|
|
<svg xmlns="http://www.w3.org/2000/svg" fill="currentColor" viewBox="0 0 24 24"><title>check-bold</title><path fill="currentColor" d="M9,20.42L2.79,14.21L5.62,11.38L9,14.77L18.88,4.88L21.71,7.71L9,20.42Z" /></svg>
|
|
</div>
|
|
</div>
|
|
} else if (Model.SyntaxCheck.ContainsKey(f.FileName)) {
|
|
<div class="ha-managedfileheader expandable orange">
|
|
<div>@f.FileName</div>
|
|
<div>@f.GetLastModified()</div>
|
|
<div class="ha-filestatusicon">
|
|
<svg xmlns="http://www.w3.org/2000/svg" fill="currentColor" viewBox="0 0 24 24"><title>alert-decagram-outline</title><path d="M23,12L20.56,14.78L20.9,18.46L17.29,19.28L15.4,22.46L12,21L8.6,22.47L6.71,19.29L3.1,18.47L3.44,14.78L1,12L3.44,9.21L3.1,5.53L6.71,4.72L8.6,1.54L12,3L15.4,1.54L17.29,4.72L20.9,5.54L20.56,9.22L23,12M20.33,12L18.5,9.89L18.74,7.1L16,6.5L14.58,4.07L12,5.18L9.42,4.07L8,6.5L5.26,7.09L5.5,9.88L3.67,12L5.5,14.1L5.26,16.9L8,17.5L9.42,19.93L12,18.81L14.58,19.92L16,17.5L18.74,16.89L18.5,14.1L20.33,12M11,15H13V17H11V15M11,7H13V13H11V7" /></svg> </div>
|
|
</div>
|
|
<div class="ha-managedfileannotations">
|
|
<table>
|
|
<tr>
|
|
<th>Zeile</th>
|
|
<th>Spalte</th>
|
|
<th>Fehler</th>
|
|
</tr>
|
|
@foreach (var e in Model.SyntaxCheck[f.FileName]!.Errors) {
|
|
<tr>
|
|
<td>@e.Line</td>
|
|
<td>@e.Column</td>
|
|
<td>@e.Message</td>
|
|
</tr>
|
|
}
|
|
</table>
|
|
</div>
|
|
} else {
|
|
<div class="ha-managedfileheader expandable expanded red">
|
|
<div>@f.FileName</div>
|
|
<div>@f.GetLastModified()</div>
|
|
<div class="ha-filestatusicon">
|
|
<svg xmlns="http://www.w3.org/2000/svg" fill="currentColor" viewBox="0 0 24 24"><title>close-thick</title><path d="M20 6.91L17.09 4L12 9.09L6.91 4L4 6.91L9.09 12L4 17.09L6.91 20L12 14.91L17.09 20L20 17.09L14.91 12L20 6.91Z" /></svg>
|
|
</div>
|
|
</div>
|
|
<div class="ha-managedfileannotations">
|
|
@f.GetLog()
|
|
</div>
|
|
}
|
|
</div>
|
|
}
|
|
</div>
|
|
}
|
|
|
|
@* No SyntaxCheck? We provide the data + a button to load *@
|
|
else {
|
|
<div class="ha-managedfileslist">
|
|
@foreach (var f in Model.ManagedFiles) {
|
|
<div class="ha-managedfile" id="@f.FileName">
|
|
@if (f.IsValid) {
|
|
<div class="ha-managedfileheader">
|
|
<div>@f.FileName</div>
|
|
<div>@f.GetLastModified()</div>
|
|
<div class="ha-filestatusicon">
|
|
<svg xmlns="http://www.w3.org/2000/svg" fill="currentColor" viewBox="0 0 24 24"><title>check-bold</title><path fill="currentColor" d="M9,20.42L2.79,14.21L5.62,11.38L9,14.77L18.88,4.88L21.71,7.71L9,20.42Z" /></svg>
|
|
</div>
|
|
</div>
|
|
} else {
|
|
<div class="ha-managedfileheader expandable expanded red">
|
|
<div>@f.FileName</div>
|
|
<div>@f.GetLastModified()</div>
|
|
<div class="ha-filestatusicon">
|
|
<svg xmlns="http://www.w3.org/2000/svg" fill="currentColor" viewBox="0 0 24 24"><title>close-thick</title><path d="M20 6.91L17.09 4L12 9.09L6.91 4L4 6.91L9.09 12L4 17.09L6.91 20L12 14.91L17.09 20L20 17.09L14.91 12L20 6.91Z" /></svg>
|
|
</div>
|
|
</div>
|
|
}
|
|
<div class="ha-managedfileannotations">
|
|
@f.GetLog()
|
|
</div>
|
|
</div>
|
|
}
|
|
</div>
|
|
<feature name="SyntaxCheck">
|
|
@if (Model.ValidState) {
|
|
<form class="ha-selectfilesform" asp-controller="API" asp-action="GetSyntaxCheck" onsubmit="GETSyntaxCheck(this);return false;" method="get">
|
|
<button type="submit" class="ha-scbutton" id="ha-scbutton" >
|
|
Verweise & IDs prüfen
|
|
</button>
|
|
</form>
|
|
}
|
|
</feature>
|
|
}
|
|
</div>
|
|
} else {
|
|
|
|
<div class="ha-managedfilesnotfound">
|
|
Keine Dateien im Repository gefunden!
|
|
</div>
|
|
}
|
|
|
|
<feature name="LocalPublishService">
|
|
<div class="ha-filelistfieldset">
|
|
<div class="ha-filelistlegend">Auswahl verfügbarer Dateien</div>
|
|
@if(Model.HamannFiles != null && Model.HamannFiles.Any()) {
|
|
<form class="ha-selectfilesform" id="selecthamannfilesform" asp-controller="API" asp-action="SetInProduction" method="post" onsubmit="USESubmit(this);return false;" enctype="application/x-www-form-urlencoded">
|
|
<div class="ha-filelistlist">
|
|
@if (!Model.ValidState) {
|
|
<div class="ha-filelistfile">
|
|
<input type="radio" disabled><div class="ha-filelistname"> Aktuelle Datei kann nicht geladen werden.</div>
|
|
<div class="ha-filelistusedproduction">
|
|
<div class="ha-filelistproduction hue-rotate-180">Fehler</div>
|
|
</div>
|
|
</div>
|
|
}
|
|
@foreach (var file in Model.HamannFiles) {
|
|
<div class="ha-filelistfile">
|
|
@if (Model.ActiveFile != null) {
|
|
<input type="radio" id="@file.Name" name="file" value="@file.Name" @(file.Name == @Model.ActiveFile!.Name ? "checked='checked'" : "")>
|
|
} else {
|
|
<input type="radio" id="@file.Name" name="file" value="@file.Name">
|
|
}
|
|
<div class="ha-filelistname">@file.Name</div>
|
|
@if (Model.ActiveFile != null && file.Name == Model.ActiveFile!.Name) {
|
|
<div class="ha-filelistusedproduction">
|
|
<div class="ha-filelistproduction">geladen</div>
|
|
</div>
|
|
}
|
|
@* // TODO Metadata
|
|
// TODO DELETE *@
|
|
<div class="ha-filelistmodified">@file.LastModified.LocalDateTime</div>
|
|
</div>
|
|
}
|
|
</div>
|
|
<output id ="ha-filelistoutput"></output>
|
|
<button type="submit" class="ha-filelistbutton" id="ha-filelistbutton" >
|
|
Laden
|
|
<div class="ha-lds-ellipsis-load" id="ha-lds-ellipsis-load"></div>
|
|
</button>
|
|
</form>
|
|
}
|
|
else {
|
|
<div>Keine Dateien gefunden! Es wird eine fallback-Datei verwendet!</div>
|
|
}
|
|
</div>
|
|
</feature>
|
|
<script defer src="/js/filelistform.js" asp-append-version="true"></script> |