« get me outta code hell

content: gAIP{Chunk,ChunkItem,Artworks*}: layer trimming higher - hsmusic-wiki - HSMusic - static wiki software cataloguing collaborative creation
about summary refs log tree commit diff
path: root/src
diff options
context:
space:
mode:
author(quasar) nebula <qznebula@protonmail.com>2024-10-14 12:02:49 -0300
committer(quasar) nebula <qznebula@protonmail.com>2024-10-14 12:02:49 -0300
commitecc56837c381af86d06a5bb1bd0c6190b8d6013c (patch)
tree45ff072e51928420fbd8f83ab6cc16ce27e1f051 /src
parent41f0d592571f7066e785f9a4598fa48e26f1c0a0 (diff)
content: gAIP{Chunk,ChunkItem,Artworks*}: layer trimming higher
This basically reverts commit 53794015 (which introduced the
trimAnnotation slot). Behavior is pulled out of gAIPChunkItem
and into gAIPArtworksChunkItem, with slots similarly shuffled
around.
Diffstat (limited to 'src')
-rw-r--r--src/content/dependencies/generateArtistInfoPageArtworksChunk.js22
-rw-r--r--src/content/dependencies/generateArtistInfoPageArtworksChunkItem.js14
-rw-r--r--src/content/dependencies/generateArtistInfoPageArtworksChunkedList.js12
-rw-r--r--src/content/dependencies/generateArtistInfoPageChunk.js10
-rw-r--r--src/content/dependencies/generateArtistInfoPageChunkItem.js19
5 files changed, 40 insertions, 37 deletions
diff --git a/src/content/dependencies/generateArtistInfoPageArtworksChunk.js b/src/content/dependencies/generateArtistInfoPageArtworksChunk.js
index 2b10df3e..66e4204a 100644
--- a/src/content/dependencies/generateArtistInfoPageArtworksChunk.js
+++ b/src/content/dependencies/generateArtistInfoPageArtworksChunk.js
@@ -5,6 +5,8 @@ export default {
     'linkAlbum',
   ],
 
+  extraDependencies: ['html'],
+
   relations: (relation, album, contribs) => ({
     template:
       relation('generateArtistInfoPageChunk'),
@@ -24,11 +26,25 @@ export default {
         .map(contrib => contrib.date),
   }),
 
-  generate: (data, relations) =>
+  slots: {
+    filterEditsForWiki: {
+      type: 'boolean',
+      default: false,
+    },
+  },
+
+  generate: (data, relations, slots) =>
     relations.template.slots({
       mode: 'album',
       albumLink: relations.albumLink,
-      dates: data.dates,
-      items: relations.items,
+
+      dates:
+        (slots.filterEditsForWiki
+          ? Array.from({length: data.dates}, () => null)
+          : data.dates),
+
+      items:
+        relations.items.map(item =>
+          item.slot('filterEditsForWiki', slots.filterEditsForWiki)),
     }),
 };
diff --git a/src/content/dependencies/generateArtistInfoPageArtworksChunkItem.js b/src/content/dependencies/generateArtistInfoPageArtworksChunkItem.js
index e8d887b1..089cfb8d 100644
--- a/src/content/dependencies/generateArtistInfoPageArtworksChunkItem.js
+++ b/src/content/dependencies/generateArtistInfoPageArtworksChunkItem.js
@@ -39,11 +39,21 @@ export default {
       contrib.annotation,
   }),
 
-  generate: (data, relations, {html, language}) =>
+  slots: {
+    filterEditsForWiki: {
+      type: 'boolean',
+      default: false,
+    },
+  },
+
+  generate: (data, relations, slots, {html, language}) =>
     relations.template.slots({
       otherArtistLinks: relations.otherArtistLinks,
 
-      annotation: data.annotation,
+      annotation:
+        (slots.filterEditsForWiki
+          ? data.annotation?.replace(/^edits for wiki(: )?/, '')
+          : data.annotation),
 
       content:
         language.encapsulate('artistPage.creditList.entry', capsule =>
diff --git a/src/content/dependencies/generateArtistInfoPageArtworksChunkedList.js b/src/content/dependencies/generateArtistInfoPageArtworksChunkedList.js
index 2be02577..8b024147 100644
--- a/src/content/dependencies/generateArtistInfoPageArtworksChunkedList.js
+++ b/src/content/dependencies/generateArtistInfoPageArtworksChunkedList.js
@@ -65,15 +65,7 @@ export default {
   generate: (data, relations) =>
     relations.chunkedList.slots({
       chunks:
-        relations.chunks.map(chunk => {
-          if (data.filterEditsForWiki) {
-            chunk.setSlots({
-              trimAnnotations: true,
-              dates: [],
-            });
-          }
-
-          return chunk;
-        }),
+        relations.chunks.map(chunk =>
+          chunk.slot('filterEditsForWiki', data.filterEditsForWiki)),
     }),
 };
diff --git a/src/content/dependencies/generateArtistInfoPageChunk.js b/src/content/dependencies/generateArtistInfoPageChunk.js
index 820c01e0..c16d50f3 100644
--- a/src/content/dependencies/generateArtistInfoPageChunk.js
+++ b/src/content/dependencies/generateArtistInfoPageChunk.js
@@ -29,11 +29,6 @@ export default {
 
     duration: {validate: v => v.isDuration},
     durationApproximate: {type: 'boolean'},
-
-    trimAnnotations: {
-      type: 'boolean',
-      default: false,
-    },
   },
 
   generate(slots, {html, language}) {
@@ -107,10 +102,7 @@ export default {
       html.tag('dt', accentedLink),
       html.tag('dd',
         html.tag('ul',
-          slots.items
-            .map(item => item.slots({
-              trimAnnotation: slots.trimAnnotations,
-            })))),
+          slots.items)),
     ]);
   },
 };
diff --git a/src/content/dependencies/generateArtistInfoPageChunkItem.js b/src/content/dependencies/generateArtistInfoPageChunkItem.js
index 0ec7b1ec..9d406c67 100644
--- a/src/content/dependencies/generateArtistInfoPageChunkItem.js
+++ b/src/content/dependencies/generateArtistInfoPageChunkItem.js
@@ -9,18 +9,16 @@ export default {
       mutable: false,
     },
 
-    annotation: {type: 'string'},
+    annotation: {
+      type: 'html',
+      mutable: false,
+    },
 
     otherArtistLinks: {
       validate: v => v.strictArrayOf(v.isHTML),
     },
 
     rerelease: {type: 'boolean'},
-
-    trimAnnotation: {
-      type: 'boolean',
-      default: false,
-    },
   },
 
   generate: (slots, {html, language}) =>
@@ -45,15 +43,10 @@ export default {
               language.formatConjunctionList(slots.otherArtistLinks);
           }
 
-          const annotation =
-            (slots.trimAnnotation
-              ? slots.annotation?.replace(/^edits for wiki(: )?/, '')
-              : slots.annotation);
-
-          if (annotation) {
+          if (!html.isBlank(slots.annotation)) {
             anyAccent = true;
             workingCapsule += '.withAnnotation';
-            workingOptions.annotation = annotation;
+            workingOptions.annotation = slots.annotation;
           }
 
           if (anyAccent) {