From e3fd3e2226188bc4adee78640e5e1b4bf5a9a72a Mon Sep 17 00:00:00 2001 From: Marcell Mars Date: Fri, 4 Jun 2021 01:38:27 +0200 Subject: [PATCH] building everything on top of iterating over keys is rarely a good idea.. --- src/App.svelte | 56 +++++++++++++++++++++----------------- src/SpHasCandidates.svelte | 10 +++---- src/SpHasTiers.svelte | 20 +++++++------- src/SpHasWhat.svelte | 35 ++++++++++++++---------- 4 files changed, 66 insertions(+), 55 deletions(-) diff --git a/src/App.svelte b/src/App.svelte index 28844dc..94b8d08 100644 --- a/src/App.svelte +++ b/src/App.svelte @@ -11,17 +11,18 @@ let title = "Foo bar"; let hases = []; + let hasesCandidates = []; let frontmatter = {} - frontmatter['triad'] = {}; - frontmatter['ascriptions'] = {}; + frontmatter['triad'] = []; + frontmatter['ascriptions'] = []; function keyUp(e) { if (e.key == "Escape") { window.history.back() } } - - function diffArrr(arr, arrr) { + + function diffArrr(arr, arrr) { let diff = new Set(arr) for (let e of arrr) { diff.delete(e) @@ -30,9 +31,10 @@ } function newHasTiers(arrgs) { - let [fmKeyType, oldFmKey, newFmKey] = arrgs.detail; - frontmatter[fmKeyType][oldFmKey]['candidates'] = METASP[newFmKey].tiers; - frontmatter[fmKeyType][oldFmKey]['tiers'] = []; + let [fmKeyType, index, oldFmKey, newFmKey] = arrgs.detail; + frontmatter[fmKeyType][index] = {'fmKey': newFmKey, 'tiers': [], 'candidates': METASP[newFmKey].tiers} + hasesCandidates = [...hasesCandidates, oldFmKey]; + hasesCandidates = hasesCandidates.filter(h => h != newFmKey); } function loadHugoPageMetadata() { @@ -57,24 +59,27 @@ } } else if (hases.includes(fmKey.toLowerCase())) { fmKeyType = 'ascriptions' + } else { + fmKeyType = 'notSandpoints' } - if (fmKeyType != "") { + if (['triad', 'ascriptions'].includes(fmKeyType)) { if (Array.isArray(fmValue)) { + let tiers = [] + let candidates = [] 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) + tiers.push(t) } else { - frontmatter[fmKeyType][fmKey]['candidates'].push(t) + candidates.push(t) } - }) + }) + frontmatter[fmKeyType].push({'fmKey': fmKey, 'tiers': tiers, 'candidates': candidates}) } } } ) + hasesCandidates = diffArrr(hases, [...frontmatter['triad'].map(t => { return t.fmKey }), ...frontmatter['ascriptions'].map(t => { return t.fmKey })]) let tkey = Object.keys(repo.frontmatter).filter(t => t.toLowerCase() == "title")[0] title = repo.frontmatter[tkey] @@ -84,17 +89,18 @@ } 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] + let [fmKeyType, index, fmKey, tier] = arrgs.detail; + frontmatter[fmKeyType][index]['fmKey'] = fmKey; + frontmatter[fmKeyType][index]['tiers'] = frontmatter[fmKeyType][index]['tiers'].filter(t => t !== tier); + frontmatter[fmKeyType][index]['candidates'] = [...frontmatter[fmKeyType][index]['candidates'], tier] } function addToTiersRemoveFromCandidates(arrgs) { - const [value, fmKeyType, fmKey] = arrgs.detail - const tier = frontmatter[fmKeyType][fmKey]['candidates'].filter(t => t.file == value) + let [fmKeyType, index, fmKey, value] = arrgs.detail; + const tier = frontmatter[fmKeyType][index]['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]) + frontmatter[fmKeyType][index]['tiers'] = [...frontmatter[fmKeyType][index]['tiers'], tier[0]] + frontmatter[fmKeyType][index]['candidates'] = frontmatter[fmKeyType][index]['candidates'].filter(t=> t != tier[0]) } } @@ -107,10 +113,10 @@ {#each Object.entries(frontmatter) as fmItems} {#if ['ascriptions', 'triad'].includes(fmItems[0])} - {#each Object.entries(fmItems[1]) as fmItem} - - - + {#each fmItems[1] as fmItem, i} + + + {/each} {/if} {/each} diff --git a/src/SpHasCandidates.svelte b/src/SpHasCandidates.svelte index 86369fc..0816a8a 100644 --- a/src/SpHasCandidates.svelte +++ b/src/SpHasCandidates.svelte @@ -1,9 +1,9 @@ -{#if candidates && candidates.length > 0} +{#if fmItem.candidates && fmItem.candidates.length > 0} diff --git a/src/SpHasTiers.svelte b/src/SpHasTiers.svelte index 3e98541..350a946 100644 --- a/src/SpHasTiers.svelte +++ b/src/SpHasTiers.svelte @@ -1,19 +1,19 @@ -{#if tiers && tiers.length >0} +{#if fmItem.tiers && fmItem.tiers.length >0}
- {#each tiers as tier, i (tier.file)} + {#each fmItem.tiers as tier, i (tier.file)}
- ({tier.title}) + ({tier.title})
- +
diff --git a/src/SpHasWhat.svelte b/src/SpHasWhat.svelte index f9dead4..ca2d74e 100644 --- a/src/SpHasWhat.svelte +++ b/src/SpHasWhat.svelte @@ -1,31 +1,36 @@ - {#each hases as has} - + {#if has == fmItem.fmKey} + + {/if} + {/each} + {#each hasesCandidates as has} + {/each}