Skip to content

Commit 52e183a

Browse files
Redo design and refactor
1 parent cafc5aa commit 52e183a

File tree

4 files changed

+21
-23
lines changed

4 files changed

+21
-23
lines changed

EssentialCSharp.Web/Services/SiteMappingDto.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55
public class SiteMappingDto
66
{
77
public required int Level { get; set; }
8-
public required List<string> Keys { get; set; }
8+
public required string Key { get; set; }
99
public required string Href { get; set; }
1010
public required string Title { get; set; }
1111
public required IEnumerable<SiteMappingDto> Items { get; set; }

EssentialCSharp.Web/Services/SiteMappingService.cs

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -17,15 +17,15 @@ public IEnumerable<SiteMappingDto> GetTocData()
1717
{
1818
return SiteMappings.GroupBy(x => x.ChapterNumber).OrderBy(x => x.Key).Select(x =>
1919
{
20-
IEnumerable<SiteMapping> orderedX = x.OrderBy(i => i.PageNumber).ThenBy(i => i.OrderOnPage);
21-
SiteMapping firstX = orderedX.First();
20+
IEnumerable<SiteMapping> orderedGrouping = x.OrderBy(i => i.PageNumber).ThenBy(i => i.OrderOnPage);
21+
SiteMapping firstElement = orderedGrouping.First();
2222
return new SiteMappingDto()
2323
{
2424
Level = 0,
25-
Keys = [firstX.Keys.First()],
26-
Href = $"{firstX.Keys.First()}#{firstX.AnchorId}",
27-
Title = $"Chapter {x.Key}: {firstX.ChapterTitle}",
28-
Items = GetItems(orderedX.Skip(1), 1)
25+
Key = firstElement.Keys.First(),
26+
Href = $"{firstElement.Keys.First()}#{firstElement.AnchorId}",
27+
Title = $"Chapter {x.Key}: {firstElement.ChapterTitle}",
28+
Items = GetItems(orderedGrouping.Skip(1), 1)
2929
};
3030
}
3131
);
@@ -42,7 +42,7 @@ private static IEnumerable<SiteMappingDto> GetItems(IEnumerable<SiteMapping> cha
4242
.Select(i => new SiteMappingDto()
4343
{
4444
Level = indentLevel,
45-
Keys = i.Keys,
45+
Key = i.Keys.First(),
4646
Href = $"{i.Keys.First()}#{i.AnchorId}",
4747
Title = i.RawHeading,
4848
// Any children of this node will be /after/ this node,

EssentialCSharp.Web/Views/Shared/_Layout.cshtml

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -277,25 +277,25 @@
277277
@* Recursive vue component template for rendering the table of contents. *@
278278
<template id="toc-tree">
279279
<li v-if="item.items.length">
280-
<details :open="expandedTocs.has(item.keys)"
281-
v-on:toggle="!$event.target.open ? expandedTocs.delete(item.keys) : expandedTocs.add(item.keys)">
280+
<details :open="expandedTocs.has(item.key)"
281+
v-on:toggle="!$event.target.open ? expandedTocs.delete(item.key) : expandedTocs.add(item.key)">
282282
<summary :class="{
283283
'toc-content' : item.level==0,
284284
'nested' : item.level>
285285
0,
286-
'current-section': currentPage.some(p => JSON.stringify(p.keys) == JSON.stringify(item.keys)),
286+
'current-section': currentPage.some(p => p.key == item.key),
287287
}" :href="item.href">{{item.title}}
288288
</summary>
289289
<ul>
290290
<li :class="{
291291
['indent-level-' + (item.level+1)]: true,
292292
'current-li' : currentPage.some(p=>
293-
JSON.stringify(p.keys) == JSON.stringify(item.keys)) && !currentPage.some(p => p.level > item.level),
293+
p.key == item.key) && !currentPage.some(p => p.level > item.level),
294294
}" >
295295
<a class="section-link" :class="{
296296
['indent-level-' + (item.level+1)]: true,
297297
'current-section' : currentPage.some(p=>
298-
JSON.stringify(p.keys) == JSON.stringify(item.keys)) && !currentPage.some(p => p.level > item.level),
298+
p.key == item.key) && !currentPage.some(p => p.level > item.level),
299299
}" :href="item.href"> Introduction
300300
</a>
301301
</li>
@@ -307,12 +307,12 @@
307307
<li v-else :class="{
308308
['indent-level-' + (item.level+1)]: true,
309309
'current-li' : currentPage.some(p=>
310-
JSON.stringify(p.keys) == JSON.stringify(item.keys)) && !currentPage.some(p => p.level > item.level),
310+
p.key == item.key) && !currentPage.some(p => p.level > item.level),
311311
}" >
312312
<a class="section-link" :class="{
313313
['indent-level-' + (item.level)]: true,
314314
'current-section' : currentPage.some(p=>
315-
JSON.stringify(p.keys) == JSON.stringify(item.keys)),
315+
p.key == item.key),
316316
}" :href="item.href"> {{item.title}}
317317
</a>
318318
</li>

EssentialCSharp.Web/wwwroot/js/site.js

Lines changed: 6 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ import { useWindowSize } from "vue-window-size";
1212
/**
1313
* @typedef {Object} TocItem
1414
* @prop {number} [level]
15-
* @prop {string[]} [keys]
15+
* @prop {string} [key]
1616
* @prop {string} [href]
1717
* @prop {string} [title]
1818
* @prop {TocItem[]} [items]
@@ -83,10 +83,8 @@ function findCurrentPage(path, items) {
8383
if (window.location.href.endsWith("/" + item.href)) {
8484
return itemPath;
8585
}
86-
for (let key of item.keys) {
87-
if (window.location.href.endsWith("/" + key)) {
88-
return itemPath;
89-
}
86+
if (window.location.href.endsWith("/" + item.key)) {
87+
return itemPath;
9088
}
9189

9290
const recursivePath = findCurrentPage(itemPath, item.items);
@@ -201,7 +199,7 @@ const app = createApp({
201199
const sectionTitle = ref(currentPage?.[0]?.title || "Essential C#");
202200
const expandedTocs = reactive(new Set());
203201
for (const item of currentPage) {
204-
expandedTocs.add(item.keys);
202+
expandedTocs.add(item.key);
205203
}
206204

207205
// hide the sidebar when resizing to small screen
@@ -271,15 +269,15 @@ const app = createApp({
271269
expandedTocs.clear();
272270
// If a search query is removed, open the TOC for the current page.
273271
for (const item of currentPage) {
274-
expandedTocs.add(item.keys);
272+
expandedTocs.add(item.key);
275273
}
276274
}
277275
else {
278276
expandedTocs.clear();
279277
const query = normalizeString(newQuery);
280278
tocData.forEach(item => {
281279
if (filterItem(item, query)) {
282-
expandedTocs.add(item.keys);
280+
expandedTocs.add(item.key);
283281
}
284282
});
285283
}

0 commit comments

Comments
 (0)