diff --git a/HaDocumentV6/Reactors/EditreasonReactor.cs b/HaDocumentV6/Reactors/EditreasonReactor.cs index 8da509d..6655248 100644 --- a/HaDocumentV6/Reactors/EditreasonReactor.cs +++ b/HaDocumentV6/Reactors/EditreasonReactor.cs @@ -11,17 +11,20 @@ namespace HaDocument.Reactors { private Dictionary _intermediateReasons = new Dictionary(); private bool _normalizeWhitespace = false; - // State + // State for private string Index = ""; + // State for private string letter = ""; private string page = ""; private string line = ""; + + private Stack index; private ElementStringBinder _element = null; - internal EditreasonReactor(IReader reader, IntermediateLibrary lib, bool normalizeWhitespace) : base (reader, lib) { + internal EditreasonReactor(IReader reader, IntermediateLibrary lib, bool normalizeWhitespace) : base(reader, lib) { CreatedInstances = lib.Editreasons; index = new Stack(); _normalizeWhitespace = normalizeWhitespace; @@ -58,9 +61,9 @@ namespace HaDocument.Reactors { protected override void Listen(object sender, Tag tag) { if ( - !tag.EndTag && + !tag.EndTag && !tag.IsEmpty && - tag.Name == "editreason" && + tag.Name == "editreason" && !String.IsNullOrWhiteSpace(tag["index"]) ) { Activate(_reader, tag); @@ -151,4 +154,4 @@ namespace HaDocument.Reactors { Reset(); } } -} \ No newline at end of file +} diff --git a/HaWeb/Controllers/BriefeContoller.cs b/HaWeb/Controllers/BriefeContoller.cs index 8d73369..c2709a3 100644 --- a/HaWeb/Controllers/BriefeContoller.cs +++ b/HaWeb/Controllers/BriefeContoller.cs @@ -40,7 +40,7 @@ public class Briefecontroller : Controller { var text = lib.Letters.ContainsKey(id) ? lib.Letters[id] : null; var marginals = lib.Marginals.ContainsKey(id) ? lib.Marginals[id] : null; var tradition = lib.Traditions.ContainsKey(id) ? lib.Traditions[id] : null; - var editreasons = lib.Editreasons.ContainsKey(id) ? lib.EditreasonsByLetter[id] : null; // TODO: Order + var editreasons = lib.EditreasonsByLetter.Contains(id) ? lib.EditreasonsByLetter[id] : null; var hands = lib.Hands.ContainsKey(id) ? lib.Hands[id] : null; var nextmeta = meta != lib.MetasByDate.Last() ? lib.MetasByDate.ItemRef(lib.MetasByDate.IndexOf(meta) + 1) : null; var prevmeta = meta != lib.MetasByDate.First() ? lib.MetasByDate.ItemRef(lib.MetasByDate.IndexOf(meta) - 1) : null; @@ -76,22 +76,24 @@ public class Briefecontroller : Controller { t.Title = name; if (!String.IsNullOrWhiteSpace(t.ParsedText)) { if (texts == null) texts = new List<(string, List)>(); - if(!texts.Where(x => x.Category == category).Any()) + if (!texts.Where(x => x.Category == category).Any()) texts.Add((category, new List() { t })); else texts.Where(x => x.Category == category).First().Item2.Add(t); - } else { + } + else { model.MetaData.HasText = false; } - } else { + } + else { model.MetaData.HasText = false; } - + if (tradition != null && !String.IsNullOrWhiteSpace(tradition.Element)) { var additions = XElement.Parse(tradition.Element, LoadOptions.PreserveWhitespace).Descendants("app"); foreach (var a in additions) { - var app = a.HasAttributes && a.Attribute("ref") != null && lib.Apps.ContainsKey(a.Attribute("ref").Value) ? - lib.Apps[a.Attribute("ref").Value] : + var app = a.HasAttributes && a.Attribute("ref") != null && lib.Apps.ContainsKey(a.Attribute("ref").Value) ? + lib.Apps[a.Attribute("ref").Value] : null; if (app != null && !a.IsEmpty) { var state = HaWeb.HTMLHelpers.LetterHelpers.ParseText(lib, _readerService, a, meta, marginals, hands, editreasons); @@ -100,14 +102,14 @@ public class Briefecontroller : Controller { t.ParsedMarginals = state.ParsedMarginals; t.ParsedText = state.sb.ToString(); if (texts == null) texts = new List<(string, List)>(); - if(!texts.Where(x => x.Category == app.Category).Any()) + if (!texts.Where(x => x.Category == app.Category).Any()) texts.Add((app.Category, new List() { t })); else texts.Where(x => x.Category == app.Category).First().Item2.Add(t); } } } - + model.Texts = texts; if (System.IO.File.Exists("./wwwroot/pdf/HKB_" + id + ".pdf")) { @@ -159,7 +161,8 @@ public class Briefecontroller : Controller { HTMLHelpers.StringHelpers.GetEnumerationString(receivers.Select(x => x.Name)) )); } - } else { + } + else { if (senders.Any(x => receivers.Contains(x))) { for (var i = 0; i < receivers.Count || i < senders.Count; i++) { res.Add(( @@ -185,10 +188,10 @@ public class Briefecontroller : Controller { if (str == strlist.Last()) res += " und " + (str.Index == "1" ? "" : HTMLHelpers.TagHelpers.CreateElement("a", "", "/HKB/Person/" + str.Index)) + str.Name + (str.Index == "1" ? "" : HTMLHelpers.TagHelpers.CreateEndElement("a")); else - res += ", " + (str.Index == "1" ? "" :HTMLHelpers.TagHelpers.CreateElement("a", "", "/HKB/Person/" + str.Index)) + str.Name + (str.Index == "1" ? "" : HTMLHelpers.TagHelpers.CreateEndElement("a")); + res += ", " + (str.Index == "1" ? "" : HTMLHelpers.TagHelpers.CreateElement("a", "", "/HKB/Person/" + str.Index)) + str.Name + (str.Index == "1" ? "" : HTMLHelpers.TagHelpers.CreateEndElement("a")); else res += (str.Index == "1" ? "" : HTMLHelpers.TagHelpers.CreateElement("a", "", "/HKB/Person/" + str.Index)) + str.Name + (str.Index == "1" ? "" : HTMLHelpers.TagHelpers.CreateEndElement("a")); } return res; } -} \ No newline at end of file +} diff --git a/HaWeb/Views/Admin/Dynamic/XMLState.cshtml b/HaWeb/Views/Admin/Dynamic/XMLState.cshtml index ba91fd8..7335305 100644 --- a/HaWeb/Views/Admin/Dynamic/XMLState.cshtml +++ b/HaWeb/Views/Admin/Dynamic/XMLState.cshtml @@ -1,174 +1,199 @@ @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"; +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
-

XML-Daten

-
*@ - @if (Model.ManagedFiles != null && Model.ManagedFiles.Any()) { -
-
-
- - @if (Model.GitData != null) { -
Commit @Model.GitData.Commit.Substring(0,7)
-
@Model.GitData.PullTime
- } -
-
- @Model.ManagedFiles.Count XML-Dateien -
-
- - @* Syntax-Check cached? We provide the results. *@ - @if (Model.SyntaxCheck != null) { -
- @foreach (var f in Model.ManagedFiles) { -
- @if (Model.SyntaxCheck.ContainsKey(f.FileName) && Model.SyntaxCheck[f.FileName].Errors == null) { -
-
@f.FileName
-
@f.GetLastModified()
-
- check-bold -
-
- } else if (Model.SyntaxCheck.ContainsKey(f.FileName)) { - -
- - - - - - - @foreach (var e in Model.SyntaxCheck[f.FileName]!.Errors) { - - - - - - } -
ZeileSpalteFehler
@e.Line@e.Column@e.Message
-
- } else { - -
- @f.GetLog() -
- } -
- } -
- } - - @* No SyntaxCheck? We provide the data + a button to load *@ - else { -
- @foreach (var f in Model.ManagedFiles) { -
- @if (f.IsValid) { -
-
@f.FileName
-
@f.GetLastModified()
-
- check-bold -
-
- } else { - - } -
- @f.GetLog() -
-
- } -
- - @if (Model.ValidState) { -
- -
- } -
- } +@* TODO: Headers
+

XML-Daten

+
*@ +@if (Model.ManagedFiles != null && Model.ManagedFiles.Any()) { +
+
+
+ + @if (Model.GitData != null) { +
Commit @Model.GitData.Commit.Substring(0,7)
+
@Model.GitData.PullTime
+ }
- } else { - -
- Keine Dateien im Repository gefunden! +
+ @Model.ManagedFiles.Count XML-Dateien
- } +
- -
-
Auswahl verfügbarer Dateien
- @if(Model.HamannFiles != null && Model.HamannFiles.Any()) { -
-
- @if (!Model.ValidState) { -
-
Aktuelle Datei kann nicht geladen werden.
-
-
Fehler
-
-
- } - @foreach (var file in Model.HamannFiles) { -
- @if (Model.ActiveFile != null) { - - } else { - - } -
@file.Name
- @if (Model.ActiveFile != null && file.Name == Model.ActiveFile!.Name) { -
-
geladen
-
- } - @* // TODO Metadata - // TODO DELETE *@ -
@file.LastModified.LocalDateTime
-
- } + @* Syntax-Check cached? We provide the results. *@ + @if (Model.SyntaxCheck != null) { +
+ @foreach (var f in Model.ManagedFiles) { +
+ @if (Model.SyntaxCheck.ContainsKey(f.FileName) && Model.SyntaxCheck[f.FileName].Errors == null) { +
+
@f.FileName
+
@f.GetLastModified()
+
+ + check-bold + +
- - - - } - else { -
Keine Dateien gefunden! Es wird eine fallback-Datei verwendet!
+
+ } else if (Model.SyntaxCheck.ContainsKey(f.FileName)) { + +
+ + + + + + + @foreach (var e in Model.SyntaxCheck[f.FileName]!.Errors) { + + + + + + } +
ZeileSpalteFehler
@e.Line@e.Column@e.Message
+
+ } else { + +
+ @f.GetLog() +
+ } +
}
- + } - + @* No SyntaxCheck? We provide the data + a button to load *@ + else { +
+ @foreach (var f in Model.ManagedFiles) { +
+ @if (f.IsValid) { +
+
@f.FileName
+
@f.GetLastModified()
+
+ + check-bold + + +
+
+ } else { + + } +
+ @f.GetLog() +
+
+ } +
+ + @if (Model.ValidState) { +
+ +
+ } +
+ } +
+} else { + +
+ Keine Dateien im Repository gefunden! +
+} + + +
+
Auswahl verfügbarer Dateien
+ @if(Model.HamannFiles != null && Model.HamannFiles.Any()) { +
+
+ @if (!Model.ValidState) { +
+ +
Aktuelle Datei kann nicht geladen werden.
+
+
Fehler
+
+
+ } + @foreach (var file in Model.HamannFiles) { +
+ @if (Model.ActiveFile != null) { + + } else { + + } +
@file.Name
+ @if (Model.ActiveFile != null && file.Name == Model.ActiveFile!.Name) { +
+
geladen
+
+ } + @* // TODO Metadata + // TODO DELETE *@ +
@file.LastModified.LocalDateTime
+
+ } +
+ + +
+ } + else { +
Keine Dateien gefunden! Es wird eine fallback-Datei verwendet!
+ } +
+
+ + diff --git a/HaWeb/Views/HKB/Dynamic/Briefe.cshtml b/HaWeb/Views/HKB/Dynamic/Briefe.cshtml index d1997fa..90ca695 100644 --- a/HaWeb/Views/HKB/Dynamic/Briefe.cshtml +++ b/HaWeb/Views/HKB/Dynamic/Briefe.cshtml @@ -1,12 +1,12 @@ @model BriefeViewModel; @{ - @* var minwidth = ""; - if (Model.MinWidth) - minwidth = "ha-minwidth"; - var minwidthtrads = ""; - if (Model.MinWidthTrad) - minwidthtrads = "ha-minwidth"; *@ -} +@* var minwidth = ""; +if (Model.MinWidth) +minwidth = "ha-minwidth"; +var minwidthtrads = ""; +if (Model.MinWidthTrad) +minwidthtrads = "ha-minwidth"; *@ +}
@await Html.PartialAsync("/Views/Shared/_LetterHead.cshtml", (Model.MetaData, true, false)) @@ -15,77 +15,79 @@
@foreach (var app in Model.Texts) { - @if (app.Category != Model.DefaultCategory) - { - - } + @if (app.Category != Model.DefaultCategory) + { + + } } @if (Model.Texts != null && Model.Texts.Where(x => x.Category == Model.DefaultCategory).Any()) { - + } - +
@if (Model.PDFFilePath != null || Model.YearPDFFilePath != null) + { + + } + @if (Model.MetaData.Next != null || Model.MetaData.Prev != null) { - }
@@ -93,113 +95,117 @@
@foreach (var app in Model.Texts) { - @if (app.Category != Model.DefaultCategory) - { -
- @foreach (var text in app.Item2) - { - var mw = (text.MinWidth) ? "ha-minwidth" : ""; -
- @if (app.Item2.Count > 1 && !String.IsNullOrWhiteSpace(text.ParsedText) && !String.IsNullOrWhiteSpace(text.Title)) - { -

@text.Title

- } - @if (!String.IsNullOrWhiteSpace(text.ParsedText)) - { - @Html.Raw(text.ParsedText) - } -
- } -
+ @if (app.Category != Model.DefaultCategory) + { +
+ @foreach (var text in app.Item2) + { + var mw = (text.MinWidth) ? "ha-minwidth" : ""; +
+ @if (app.Item2.Count > 1 && !String.IsNullOrWhiteSpace(text.ParsedText) && + !String.IsNullOrWhiteSpace(text.Title)) + { +

@text.Title

+ } + @if (!String.IsNullOrWhiteSpace(text.ParsedText)) + { + @Html.Raw(text.ParsedText) + } +
} +
+ } } @if (Model.Texts != null && Model.Texts.Where(x => x.Category == Model.DefaultCategory).Any()) { -
- @foreach (var text in Model.Texts.Where(x => x.Category == Model.DefaultCategory).First().Item2) +
+ @foreach (var text in Model.Texts.Where(x => x.Category == Model.DefaultCategory).First().Item2) + { + var mw = (text.MinWidth) ? "ha-minwidth" : ""; +
+ @if (!String.IsNullOrWhiteSpace(text.ParsedText) && !String.IsNullOrWhiteSpace(text.Title)) { - var mw = (text.MinWidth) ? "ha-minwidth" : ""; -
- @if (!String.IsNullOrWhiteSpace(text.ParsedText) && !String.IsNullOrWhiteSpace(text.Title)) - { -

@text.Title

- } - @if (!String.IsNullOrWhiteSpace(text.ParsedText)) - { - @Html.Raw(text.ParsedText) - } -
+

@text.Title

} + @if (!String.IsNullOrWhiteSpace(text.ParsedText)) + { + @Html.Raw(text.ParsedText) + } +
+ } - @if (Model.ParsedHands != null && Model.ParsedHands.Any()) - { -
-

Zusätze fremder Hand

-
-
- - @foreach (var hand in Model.ParsedHands) + @if (Model.ParsedHands != null && Model.ParsedHands.Any()) + { +
+

Zusätze fremder Hand

+
+
+
+ @foreach (var hand in Model.ParsedHands) + { + + - - - +
–@hand.ParsedEnd
} -
+
@hand.ParsedStart
@if + (!String.IsNullOrEmpty(hand.ParsedEnd)) { -
-
@hand.ParsedStart
@if (!String.IsNullOrEmpty(hand.ParsedEnd)) - { -
–@hand.ParsedEnd
- } -
@Html.Raw(@hand.Person)
-
-
+ + @Html.Raw(@hand.Person) + + } +
- } +
+
+ } - @if (Model.ParsedEdits != null) - { -
-

Textkritische Anmerkungen

-
Der Brieftext wurde anhand der überlieferten Quellen (vgl. Provenienz) kritisch - geprüft. Notwendige Korrekturen gegenüber dem in ZH gedruckten Text wurden vorgenommen und sind - vollständig annotiert. Die in den beiden Auflagen von ZH angehängten Korrekturvorschläge werden - vollständig aufgelistet, werden aber nur dann im Text realisiert, sofern diese anhand überlieferter - Quellen verifiziert werden konnten.
-
-
- - @foreach (var edit in Model.ParsedEdits) + + @if (Model.ParsedEdits != null) + { +
+

Textkritische Anmerkungen

+
Der Brieftext wurde anhand der überlieferten Quellen (vgl. Provenienz) kritisch + geprüft. Notwendige Korrekturen gegenüber dem in ZH gedruckten Text wurden vorgenommen und sind + vollständig annotiert. Die in den beiden Auflagen von ZH angehängten Korrekturvorschläge werden + vollständig aufgelistet, werden aber nur dann im Text realisiert, sofern diese anhand überlieferter + Quellen verifiziert werden konnten.
+
+
+
+ @foreach (var edit in Model.ParsedEdits) + { + + - - - - +
–@edit.ParsedEnd
} -
+
@edit.ParsedStart
@if + (!String.IsNullOrEmpty(edit.ParsedEnd)) { -
-
@edit.ParsedStart
@if (!String.IsNullOrEmpty(edit.ParsedEnd)) - { -
–@edit.ParsedEnd
- } -
- @if (!String.IsNullOrWhiteSpace(edit.Text) && !String.IsNullOrWhiteSpace(edit.Preview)) - { - - @Html.Raw(@edit.Preview)] - - } - - @Html.Raw(@edit.Text) -
-
-
-
- } + + + @if (!String.IsNullOrWhiteSpace(edit.Text) && !String.IsNullOrWhiteSpace(edit.Preview)) + { + + @Html.Raw(@edit.Preview)] + + } + + + @Html.Raw(@edit.Text) + + + } +
+
+
+ } + } diff --git a/HaWeb/package-lock.json b/HaWeb/package-lock.json index cf52f19..a0522bb 100644 --- a/HaWeb/package-lock.json +++ b/HaWeb/package-lock.json @@ -8,7 +8,6 @@ "name": "haweb", "version": "0.0.0", "devDependencies": { - "@laynezh/vite-plugin-lib-assets": "^0.5.14", "autoprefixer": "^10.4.7", "cssnano": "^5.1.11", "mark.js": "^8.11.1", @@ -387,17 +386,6 @@ "node": ">=12" } }, - "node_modules/@laynezh/vite-plugin-lib-assets": { - "version": "0.5.14", - "resolved": "https://registry.npmjs.org/@laynezh/vite-plugin-lib-assets/-/vite-plugin-lib-assets-0.5.14.tgz", - "integrity": "sha512-6GDawvUde8BixyDx/MD6kXrgXyH9ETlVZJ7czRK15ojoDzki1orWKvDhOhmdEra/SUxleUDMmBqAI5m8uGtuMQ==", - "dev": true, - "dependencies": { - "escape-string-regexp": "^4.0.0", - "loader-utils": "^3.2.1", - "mrmime": "^1.0.1" - } - }, "node_modules/@nodelib/fs.scandir": { "version": "2.1.5", "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", @@ -1233,18 +1221,6 @@ "node": ">=6" } }, - "node_modules/escape-string-regexp": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", - "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", - "dev": true, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/fast-glob": { "version": "3.2.11", "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.11.tgz", @@ -1493,15 +1469,6 @@ "node": ">=10" } }, - "node_modules/loader-utils": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-3.2.1.tgz", - "integrity": "sha512-ZvFw1KWS3GVyYBYb7qkmRM/WwL2TQQBxgCK62rlvm4WpVQ23Nb4tYjApUlfjrEGvOs7KHEsmyUn75OHZrJMWPw==", - "dev": true, - "engines": { - "node": ">= 12.13.0" - } - }, "node_modules/lodash.memoize": { "version": "4.1.2", "resolved": "https://registry.npmjs.org/lodash.memoize/-/lodash.memoize-4.1.2.tgz", @@ -1554,15 +1521,6 @@ "integrity": "sha512-Jsjnk4bw3YJqYzbdyBiNsPWHPfO++UGG749Cxs6peCu5Xg4nrena6OVxOYxrQTqww0Jmwt+Ref8rggumkTLz9Q==", "dev": true }, - "node_modules/mrmime": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/mrmime/-/mrmime-1.0.1.tgz", - "integrity": "sha512-hzzEagAgDyoU1Q6yg5uI+AorQgdvMCur3FcKf7NhMKWsaYg+RnbTyHRa/9IlLF9rf455MOCtcqqrQQ83pPP7Uw==", - "dev": true, - "engines": { - "node": ">=10" - } - }, "node_modules/nanoid": { "version": "3.3.7", "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.7.tgz", @@ -2903,17 +2861,6 @@ "dev": true, "optional": true }, - "@laynezh/vite-plugin-lib-assets": { - "version": "0.5.14", - "resolved": "https://registry.npmjs.org/@laynezh/vite-plugin-lib-assets/-/vite-plugin-lib-assets-0.5.14.tgz", - "integrity": "sha512-6GDawvUde8BixyDx/MD6kXrgXyH9ETlVZJ7czRK15ojoDzki1orWKvDhOhmdEra/SUxleUDMmBqAI5m8uGtuMQ==", - "dev": true, - "requires": { - "escape-string-regexp": "^4.0.0", - "loader-utils": "^3.2.1", - "mrmime": "^1.0.1" - } - }, "@nodelib/fs.scandir": { "version": "2.1.5", "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", @@ -3471,12 +3418,6 @@ "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==", "dev": true }, - "escape-string-regexp": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", - "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", - "dev": true - }, "fast-glob": { "version": "3.2.11", "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.11.tgz", @@ -3655,12 +3596,6 @@ "integrity": "sha512-xaYmXZtTHPAw5m+xLN8ab9C+3a8YmV3asNSPOATITbtwrfbwaLJj8h66H1WMIpALCkqsIzK3h7oQ+PdX+LQ9Eg==", "dev": true }, - "loader-utils": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-3.2.1.tgz", - "integrity": "sha512-ZvFw1KWS3GVyYBYb7qkmRM/WwL2TQQBxgCK62rlvm4WpVQ23Nb4tYjApUlfjrEGvOs7KHEsmyUn75OHZrJMWPw==", - "dev": true - }, "lodash.memoize": { "version": "4.1.2", "resolved": "https://registry.npmjs.org/lodash.memoize/-/lodash.memoize-4.1.2.tgz", @@ -3707,12 +3642,6 @@ "integrity": "sha512-Jsjnk4bw3YJqYzbdyBiNsPWHPfO++UGG749Cxs6peCu5Xg4nrena6OVxOYxrQTqww0Jmwt+Ref8rggumkTLz9Q==", "dev": true }, - "mrmime": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/mrmime/-/mrmime-1.0.1.tgz", - "integrity": "sha512-hzzEagAgDyoU1Q6yg5uI+AorQgdvMCur3FcKf7NhMKWsaYg+RnbTyHRa/9IlLF9rf455MOCtcqqrQQ83pPP7Uw==", - "dev": true - }, "nanoid": { "version": "3.3.7", "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.7.tgz", diff --git a/HaWeb/wwwroot/js/filelistform.mjs b/HaWeb/wwwroot/js/filelistform.mjs index 1a8a43a..bed2a3e 100644 --- a/HaWeb/wwwroot/js/filelistform.mjs +++ b/HaWeb/wwwroot/js/filelistform.mjs @@ -1,105 +1,116 @@ -const startup_filelistform = function () { - function getCookie(name) { - var value = "; " + document.cookie; - var parts = value.split("; " + name + "="); - if (parts.length == 2) return parts.pop().split(";").shift(); - } - - const USESubmit = async function (oFormElement, file = null) { - let fd = new FormData(oFormElement); - document.getElementById("ha-filelistbutton").style.pointerEvents = "none"; - document.getElementById("ha-filelistbutton").classList.add("loading"); - await fetch(oFormElement.action, { - method: 'POST', - headers: { - 'RequestVerificationToken': getCookie('RequestVerificationToken') - }, - body: fd - }) - .then(response => response.json()) - .then(json => { - document.getElementById("ha-filelistbutton").classList.remove("loading"); - document.getElementById("ha-filelistbutton").style.pointerEvents = "auto"; - if ("Error" in json) { - document.getElementById("ha-filelistoutput").textContent = json.Error; - } - else { - location.reload(); - } - }) - .catch((e) => { - document.getElementById("ha-filelistbutton").classList.remove("loading"); - document.getElementById("ha-filelistbutton").style.pointerEvents = "auto"; - document.getElementById("ha-filelistoutput").textContent = e; - }) - } - - const GETSyntaxCheck = async function (oFormElement, file = null) { - document.getElementById("ha-scbutton").style.pointerEvents = "none"; - document.getElementById("ha-scbutton").classList.toggle("loading"); - await fetch(oFormElement.action) - .then(response => response.json()) - .then(j => { - Object.entries(j).forEach(([key, value]) => { - var e = document.getElementById(key); - if (e !== null && !e.classList.contains("red")) { - var h = e.querySelector(".ha-managedfileheader"); - var i = e.querySelector(".ha-filestatusicon"); - var a = e.querySelector(".ha-managedfileannotations"); - if (value.errors === null) { - h.classList.add("green"); - } else { - var icon = i.querySelector("svg"); - icon.remove(); - i.insertAdjacentHTML("afterbegin", 'alert-decagram-outline'); - h.classList.add("expandable"); - h.classList.add("orange"); - h.addEventListener("click", () => { - h.classList.toggle("expanded"); - }); - var t = document.createElement("table"); - var thr = document.createElement("tr"); - var thl = document.createElement("th"); - var thc = document.createElement("th"); - var thm = document.createElement("th"); - thl.append("Zeile"); - thc.append("Spalte"); - thm.append("Fehler"); - thr.append(thl, thc, thm); - t.append(thr); - value.errors.forEach((error) => { - var tr = document.createElement("tr"); - var tdl = document.createElement("td"); - var tdc = document.createElement("td"); - var tdm = document.createElement("td"); - tdl.append(error.line); - tdc.append(error.column); - tdm.append(error.message); - tr.append(tdl, tdc, tdm); - t.append(tr); - }) - a.append(t); - } - } - console.log(e, h, i, a); - }); - document.getElementById("ha-scbutton").classList.toggle("hidden"); - - }) - .catch((e) => { - console.log(e); - document.getElementById("ha-scbutton").classList.toggle("loading"); - document.getElementById("ha-scbutton").style.pointerEvents = "auto"; - }) - } - +class XMLStateHelper { + constructor() { var coll = document.getElementsByClassName("expandable"); for (let i = 0; i < coll.length; i++) { - let element = coll[i] - coll[i].addEventListener("click", () => { - element.classList.toggle("expanded"); - }); + let element = coll[i]; + coll[i].addEventListener("click", () => { + element.classList.toggle("expanded"); + }); } -}; + } + + getCookie(name) { + var value = "; " + document.cookie; + var parts = value.split("; " + name + "="); + if (parts.length == 2) return parts.pop().split(";").shift(); + } + + async POSTUsedFile(oFormElement, file = null) { + let fd = new FormData(oFormElement); + document.getElementById("ha-filelistbutton").style.pointerEvents = "none"; + document.getElementById("ha-filelistbutton").classList.add("loading"); + await fetch(oFormElement.action, { + method: "POST", + headers: { + RequestVerificationToken: this.getCookie("RequestVerificationToken"), + }, + body: fd, + }) + .then((response) => response.json()) + .then((json) => { + document + .getElementById("ha-filelistbutton") + .classList.remove("loading"); + document.getElementById("ha-filelistbutton").style.pointerEvents = + "auto"; + if ("Error" in json) { + document.getElementById("ha-filelistoutput").textContent = + json.Erroru; + } else { + location.reload(); + } + }) + .catch((e) => { + document + .getElementById("ha-filelistbutton") + .classList.remove("loading"); + document.getElementById("ha-filelistbutton").style.pointerEvents = + "auto"; + document.getElementById("ha-filelistoutput").textContent = e; + }); + } + + async GETSyntaxCheck(oFormElement, file = null) { + document.getElementById("ha-scbutton").style.pointerEvents = "none"; + document.getElementById("ha-scbutton").classList.toggle("loading"); + await fetch(oFormElement.action) + .then((response) => response.json()) + .then((j) => { + Object.entries(j).forEach(([key, value]) => { + var e = document.getElementById(key); + if (e !== null && !e.classList.contains("red")) { + var h = e.querySelector(".ha-managedfileheader"); + var i = e.querySelector(".ha-filestatusicon"); + var a = e.querySelector(".ha-managedfileannotations"); + if (value.errors === null) { + h.classList.add("green"); + } else { + var icon = i.querySelector("svg"); + icon.remove(); + i.insertAdjacentHTML( + "afterbegin", + 'alert-decagram-outline', + ); + h.classList.add("expandable"); + h.classList.add("orange"); + h.addEventListener("click", () => { + h.classList.toggle("expanded"); + }); + var t = document.createElement("table"); + var thr = document.createElement("tr"); + var thl = document.createElement("th"); + var thc = document.createElement("th"); + var thm = document.createElement("th"); + thl.append("Zeile"); + thc.append("Spalte"); + thm.append("Fehler"); + thr.append(thl, thc, thm); + t.append(thr); + value.errors.forEach((error) => { + var tr = document.createElement("tr"); + var tdl = document.createElement("td"); + var tdc = document.createElement("td"); + var tdm = document.createElement("td"); + tdl.append(error.line); + tdc.append(error.column); + tdm.append(error.message); + tr.append(tdl, tdc, tdm); + t.append(tr); + }); + a.append(t); + } + } + console.log(e, h, i, a); + }); + document.getElementById("ha-scbutton").classList.toggle("hidden"); + }) + .catch((e) => { + console.log(e); + document.getElementById("ha-scbutton").classList.toggle("loading"); + document.getElementById("ha-scbutton").style.pointerEvents = "auto"; + }); + } +} + +export { XMLStateHelper }; -export { startup_filelistform }; \ No newline at end of file diff --git a/HaWeb/wwwroot/js/main.js b/HaWeb/wwwroot/js/main.js index 67ceabe..53a2000 100644 --- a/HaWeb/wwwroot/js/main.js +++ b/HaWeb/wwwroot/js/main.js @@ -6,34 +6,35 @@ import { startup_markanchor } from "./anchor.mjs"; import { startup_mobilemenu } from "./mobilemenu.mjs"; import { startup_scrollbutton } from "./scrollbutton.mjs"; import { startup_clipboard } from "./clipboard.mjs"; -import { startup_filelistform } from "./filelistform.mjs"; +import { XMLStateHelper } from "./filelistform.mjs"; import { startup_index } from "./index.mjs"; import { startup_briefe } from "./briefe.mjs"; import { startup_websocket } from "./websocket.mjs"; import { startup_search } from "./search.mjs"; const startup_default = function () { - startup_marginals(); - startup_theme(); - startup_scrollbutton(); - startup_menu(); - startup_mobilemenu(); - startup_markanchor(); - startup_clipboard(); -} + startup_marginals(); + startup_theme(); + startup_scrollbutton(); + startup_menu(); + startup_mobilemenu(); + startup_markanchor(); + startup_clipboard(); +}; export { - startup_search, - startup_websocket, - startup_briefe, - startup_index, - startup_filelistform, - startup_default, - startup_clipboard, - startup_mobilemenu, - startup_markanchor, - startup_menu, - startup_scrollbutton, - startup_marginals, - startup_theme -}; \ No newline at end of file + startup_search, + startup_websocket, + startup_briefe, + startup_index, + XMLStateHelper, + startup_default, + startup_clipboard, + startup_mobilemenu, + startup_markanchor, + startup_menu, + startup_scrollbutton, + startup_marginals, + startup_theme, +}; +