diff options
author | Jesse Plamondon-Willard <github@jplamondonw.com> | 2018-02-25 01:26:03 -0500 |
---|---|---|
committer | Jesse Plamondon-Willard <github@jplamondonw.com> | 2018-02-25 01:26:03 -0500 |
commit | f65e618cd90e1721bd3a1df7f2af2478429bf7ba (patch) | |
tree | 2a1ebc426924b37e133bb51e61a5af63f26828c3 /src/SMAPI.Web/Views | |
parent | d70d449c5c99e68677e83c66bdaf300be6b71ee2 (diff) | |
download | SMAPI-f65e618cd90e1721bd3a1df7f2af2478429bf7ba.tar.gz SMAPI-f65e618cd90e1721bd3a1df7f2af2478429bf7ba.tar.bz2 SMAPI-f65e618cd90e1721bd3a1df7f2af2478429bf7ba.zip |
fix blank page when uploading a log in some cases
Diffstat (limited to 'src/SMAPI.Web/Views')
-rw-r--r-- | src/SMAPI.Web/Views/LogParser/Index.cshtml | 15 |
1 files changed, 11 insertions, 4 deletions
diff --git a/src/SMAPI.Web/Views/LogParser/Index.cshtml b/src/SMAPI.Web/Views/LogParser/Index.cshtml index 20e20ee1..be9f74a0 100644 --- a/src/SMAPI.Web/Views/LogParser/Index.cshtml +++ b/src/SMAPI.Web/Views/LogParser/Index.cshtml @@ -1,11 +1,18 @@ @{ ViewData["Title"] = "SMAPI log parser"; - Dictionary<string, LogModInfo[]> contentPacks = Model.ParsedLog?.Mods + IDictionary<string, LogModInfo[]> contentPacks = Model.ParsedLog?.Mods ?.GroupBy(mod => mod.ContentPackFor) .Where(group => group.Key != null) .ToDictionary(group => group.Key, group => group.ToArray()); + + Regex slugInvalidCharPattern = new Regex("[^a-z0-9]", RegexOptions.Compiled | RegexOptions.IgnoreCase); + string GetSlug(string modName) + { + return slugInvalidCharPattern.Replace(modName, ""); + } } +@using System.Text.RegularExpressions @using Newtonsoft.Json @using StardewModdingAPI.Web.Framework.LogParsing.Models @model StardewModdingAPI.Web.ViewModels.LogParserModel @@ -19,7 +26,7 @@ smapi.logParser({ logStarted: new Date(@Json.Serialize(Model.ParsedLog?.Timestamp)), showPopup: @Json.Serialize(Model.ParsedLog == null), - showMods: @Json.Serialize(Model.ParsedLog?.Mods?.ToDictionary(p => p.Name, p => true), new JsonSerializerSettings { Formatting = Formatting.None }), + showMods: @Json.Serialize(Model.ParsedLog?.Mods?.ToDictionary(p => GetSlug(p.Name), p => true), new JsonSerializerSettings { Formatting = Formatting.None }), showLevels: { trace: false, debug: false, @@ -76,8 +83,8 @@ </caption> @foreach (var mod in Model.ParsedLog.Mods.Where(p => p.ContentPackFor == null)) { - <tr v-on:click="toggleMod('@mod.Name')" class="mod-entry" v-bind:class="{ hidden: !showMods['@mod.Name'] }"> - <td><input type="checkbox" v-bind:checked="showMods['@mod.Name']" v-if="anyModsHidden" /></td> + <tr v-on:click="toggleMod('@GetSlug(mod.Name)')" class="mod-entry" v-bind:class="{ hidden: !showMods['@GetSlug(mod.Name)'] }"> + <td><input type="checkbox" v-bind:checked="showMods['@GetSlug(mod.Name)']" v-if="anyModsHidden" /></td> <td> @mod.Name @if (contentPacks != null && contentPacks.TryGetValue(mod.Name, out LogModInfo[] contentPackList)) |