diff --git a/public/global.css b/public/global.css index ddae25f..1281d60 100644 --- a/public/global.css +++ b/public/global.css @@ -72,12 +72,12 @@ form { margin-top: 1rem; } -label { +label, .filepath { grid-column: 1/2; text-transform: capitalize; } -input, button, textarea, .selecttier { +input, button, textarea, .selecttier, .relpath { grid-column: 2/3; } @@ -99,6 +99,7 @@ textarea { .tierline { display: flex; + align-items: baseline; } .tiertitle { @@ -110,3 +111,38 @@ textarea { margin-left: auto; padding-left: 0.2rem; } + +select { + align-self: start; + border: 0; + padding: 0.1rem; +} + +.selecttier { + margin-top: 0.5rem; +} + +.buttons button { + border: solid #999 1px; + padding: 0; + padding-left: 0.1rem; + padding-right: 0.1rem; + margin: 1px; +} + +.filepath { + font-size: large; + font-style: italic; + margin-bottom: 1rem; +} + +.relpath { + font-size: large; + font-weight: bold; +} + +.tierbox, #selecthas { + margin-top: 0.5rem; +} + + diff --git a/src/App.svelte b/src/App.svelte index 3060023..28844dc 100644 --- a/src/App.svelte +++ b/src/App.svelte @@ -9,12 +9,12 @@ let relpermalink = ""; let protocol = ""; let title = "Foo bar"; - let tiers = []; - let tier = {}; - let hastiers = ""; - let candidates = []; + let hases = []; - + let frontmatter = {} + frontmatter['triad'] = {}; + frontmatter['ascriptions'] = {}; + function keyUp(e) { if (e.key == "Escape") { window.history.back() @@ -29,14 +29,12 @@ return Array.from(diff) } - function newHasTiers(h) { - hastiers = h.detail.substring(1) - tiers = [] - if (hastiers != "Has new") { - candidates = METASP[hastiers].tiers - } + function newHasTiers(arrgs) { + let [fmKeyType, oldFmKey, newFmKey] = arrgs.detail; + frontmatter[fmKeyType][oldFmKey]['candidates'] = METASP[newFmKey].tiers; + frontmatter[fmKeyType][oldFmKey]['tiers'] = []; } - + function loadHugoPageMetadata() { var el = document.createElement('script'); el.onload = ()=> { @@ -49,40 +47,55 @@ relpermalink = repo.relpermalink protocol = document.location.protocol.substring(0,4) hases = Object.keys(METASP) + Object.entries(repo.frontmatter).forEach(([fmKey,fmValue]) => + { + let fmKeyType = '' + if (fmKey.toLowerCase().startsWith("has_")) { + if (hases.includes(fmKey.substr(4))) { + fmKeyType = 'triad' + fmKey = fmKey.substr(4) + } + } else if (hases.includes(fmKey.toLowerCase())) { + fmKeyType = 'ascriptions' + } + + if (fmKeyType != "") { + if (Array.isArray(fmValue)) { + METASP[fmKey].tiers.forEach(t => { + (fmKey in frontmatter[fmKeyType]) || (frontmatter[fmKeyType][fmKey] = {}); + ('tiers' in frontmatter[fmKeyType][fmKey]) || (frontmatter[fmKeyType][fmKey]['tiers'] = []); + ('candidates' in frontmatter[fmKeyType][fmKey]) || (frontmatter[fmKeyType][fmKey]['candidates'] = []); + if (fmValue.includes(t.file)) { + frontmatter[fmKeyType][fmKey]['tiers'].push(t) + } else { + frontmatter[fmKeyType][fmKey]['candidates'].push(t) + } + }) + } + } + } + ) + let tkey = Object.keys(repo.frontmatter).filter(t => t.toLowerCase() == "title")[0] title = repo.frontmatter[tkey] - let xastiers = Object.keys(repo.frontmatter).filter(t => t.toLowerCase().startsWith("has_")) - if (xastiers.length == 1) { - hastiers = xastiers[0].substr(4) - tiers = [] - repo.frontmatter[xastiers[0]].forEach(t => { - METASP[hastiers].tiers.forEach(f => { - if (f.file == t) { - tiers.push(f) - } - }) - }) - candidates = diffArrr(METASP[hastiers].tiers, tiers) - } } el.src = `../js/repo/${location.hash.substring(1)}.js` document.body.appendChild(el) } - function addToCandidatesRemoveFromTiers(tier) { - console.log("addToCandidates", tier.detail) - tiers = tiers.filter(t => t !== tier.detail); - candidates = [...candidates, tier.detail] + function addToCandidatesRemoveFromTiers(arrgs) { + const [tier, fmKeyType, fmKey] = arrgs.detail + frontmatter[fmKeyType][fmKey]['tiers'] = frontmatter[fmKeyType][fmKey]['tiers'].filter(t => t !== tier); + frontmatter[fmKeyType][fmKey]['candidates'] = [...frontmatter[fmKeyType][fmKey]['candidates'], tier] } - function addToTiersRemoveFromCandidates(v) { - console.log("addToTiers", v.detail) - let value = v.detail - const tier = candidates.filter(t => t.file == value) - if (tier.length > 0) { - tiers = [...tiers, tier[0]] - candidates = candidates.filter(t=> t != tier[0]) - } + function addToTiersRemoveFromCandidates(arrgs) { + const [value, fmKeyType, fmKey] = arrgs.detail + const tier = frontmatter[fmKeyType][fmKey]['candidates'].filter(t => t.file == value) + if (tier.length > 0) { + frontmatter[fmKeyType][fmKey]['tiers'] = [...frontmatter[fmKeyType][fmKey]['tiers'], tier[0]] + frontmatter[fmKeyType][fmKey]['candidates'] = frontmatter[fmKeyType][fmKey]['candidates'].filter(t=> t != tier[0]) + } } onMount(()=> {loadHugoPageMetadata()}) @@ -92,9 +105,15 @@
- - - + {#each Object.entries(frontmatter) as fmItems} + {#if ['ascriptions', 'triad'].includes(fmItems[0])} + {#each Object.entries(fmItems[1]) as fmItem} + + + + {/each} + {/if} + {/each} {#if document.location.protocol.substring(0,4) != "file"} diff --git a/src/SpHasCandidates.svelte b/src/SpHasCandidates.svelte index f078b4d..86369fc 100644 --- a/src/SpHasCandidates.svelte +++ b/src/SpHasCandidates.svelte @@ -2,6 +2,8 @@ import { createEventDispatcher } from 'svelte'; import { afterUpdate } from 'svelte'; export let candidates; + export let fmKeyType; + export let fmKey; export let value; const dispatch = createEventDispatcher(); @@ -14,12 +16,12 @@ }); $: { - dispatch("addToTiersRemoveFromCandidates", value) + dispatch("addToTiersRemoveFromCandidates", [value, fmKeyType, fmKey]) value = 1; } -{#if candidates.length > 0} +{#if candidates && candidates.length > 0} ({tier.title}) + ({tier.title})
diff --git a/src/SpHasWhat.svelte b/src/SpHasWhat.svelte index b7246e0..f9dead4 100644 --- a/src/SpHasWhat.svelte +++ b/src/SpHasWhat.svelte @@ -1,35 +1,31 @@ - {#each hases as has} - + {/each}