« get me outta code hell

hsmusic-wiki - HSMusic - static wiki software cataloguing collaborative creation
about summary refs log tree commit diff
diff options
context:
space:
mode:
-rw-r--r--src/content/dependencies/generateAdditionalFilesListChunk.js53
-rw-r--r--src/content/dependencies/generateContributionTooltipChronologySection.js10
-rw-r--r--src/content/dependencies/linkAnythingMan.js2
-rw-r--r--src/data/things/additional-file/AdditionalFile.js14
-rw-r--r--src/strings-default.yaml3
5 files changed, 30 insertions, 52 deletions
diff --git a/src/content/dependencies/generateAdditionalFilesListChunk.js b/src/content/dependencies/generateAdditionalFilesListChunk.js
index 18d5b894..75bac56a 100644
--- a/src/content/dependencies/generateAdditionalFilesListChunk.js
+++ b/src/content/dependencies/generateAdditionalFilesListChunk.js
@@ -1,47 +1,6 @@
-import {compareArrays, stitchArrays} from '#sugar';
+import {stitchArrays} from '#sugar';
 
 export default {
-  query(file) {
-    const query = {};
-
-    const album =
-      (file.thing.isTrack
-        ? file.thing.album
-     : file.thing.isAlbum
-        ? file.thing
-        : []);
-
-    // Consider all presented additional file lists, not just ones
-    // of the same type as this chunk/list.
-    const nearbyAdditionalFiles =
-      (album
-        ? [...album.additionalFiles,
-           ...album.tracks.flatMap(track => [
-              ...track.additionalFiles,
-              ...track.sheetMusicFiles,
-              ...track.midiProjectFiles,
-            ])]
-        : []);
-
-    const contribsMatch = (a, b) =>
-      compareArrays(
-        a.artistContribs.map(contrib => contrib.artist),
-        b.artistContribs.map(contrib => contrib.artist),
-        {checkOrder: false});
-
-    if (
-      nearbyAdditionalFiles.every(x => contribsMatch(x, file)) &&
-      nearbyAdditionalFiles.every(x => contribsMatch(x, x.thing)) &&
-      nearbyAdditionalFiles.every(x => contribsMatch(x, album))
-    ) {
-      query.contextContribs = file.thing.artistContribs;
-    } else {
-      query.contextContribs = [];
-    }
-
-    return query;
-  },
-
   relations: (relation, query, file) => ({
     description:
       relation('transformContent', file.description),
@@ -51,7 +10,7 @@ export default {
         .map(filename => relation('linkAdditionalFile', file, filename)),
 
     artistCredit:
-      relation('generateArtistCredit', file.artistContribs, query.contextContribs),
+      relation('generateArtistCredit', file.artistContribs, []),
   }),
 
   data: (_query, file) => ({
@@ -98,6 +57,14 @@ export default {
                   relations.artistCredit.setSlots({
                     normalStringKey:
                       entryCapsule + '.credit',
+
+                    showAnnotation: true,
+                    showExternalLinks: true,
+                    showChronology: true,
+
+                    chronologyKind:
+                      // Sorry, lol
+                      slots.string.replace(/s$/, ''),
                   });
 
                   if (!html.isBlank(relations.artistCredit)) {
diff --git a/src/content/dependencies/generateContributionTooltipChronologySection.js b/src/content/dependencies/generateContributionTooltipChronologySection.js
index 0cabc877..58bbddd0 100644
--- a/src/content/dependencies/generateContributionTooltipChronologySection.js
+++ b/src/content/dependencies/generateContributionTooltipChronologySection.js
@@ -3,7 +3,15 @@ function getName(thing) {
     return null;
   }
 
-  if (thing.isArtwork || thing.isMusicVideo) {
+  if (thing.isAdditionalFile) {
+    return thing.thing.name;
+  }
+
+  if (thing.isArtwork) {
+    return thing.thing.name;
+  }
+
+  if (thing.isMusicVideo) {
     return thing.thing.name;
   }
 
diff --git a/src/content/dependencies/linkAnythingMan.js b/src/content/dependencies/linkAnythingMan.js
index 6efa5fe1..d37c47e0 100644
--- a/src/content/dependencies/linkAnythingMan.js
+++ b/src/content/dependencies/linkAnythingMan.js
@@ -11,6 +11,8 @@ export default {
         ? relation('linkTrack', thing)
      : thing.isMusicVideo
         ? relation('linkAnythingMan', thing.thing)
+     : thing.isAdditionalFile
+        ? relation('linkAnythingMan', thing.thing)
         : null),
   }),
 
diff --git a/src/data/things/additional-file/AdditionalFile.js b/src/data/things/additional-file/AdditionalFile.js
index d137c741..7efc68d7 100644
--- a/src/data/things/additional-file/AdditionalFile.js
+++ b/src/data/things/additional-file/AdditionalFile.js
@@ -6,8 +6,9 @@ import Thing from '#thing';
 import {isString, validateArrayItems} from '#validators';
 import {parseContributors} from '#yaml';
 
-import {exposeConstant, exposeUpdateValueOrContinue}
+import {exposeConstant, exposeDependency, exposeUpdateValueOrContinue}
   from '#composite/control-flow';
+import {withPropertyFromObject} from '#composite/data';
 import {contributionList, contentString, simpleString, soupyFind, thing}
   from '#composite/wiki-properties';
 
@@ -46,13 +47,10 @@ export class AdditionalFile extends Thing {
 
     isAdditionalFile: exposeConstant(V(true)),
 
-    // The date property is generally expected by contributions.
-    // Additional files don't actually support dates, but provide a null
-    // value for convenience.
-    date: {
-      flags: {expose: true},
-      expose: {compute: () => null},
-    },
+    date: [
+      withPropertyFromObject('thing', V('date')),
+      exposeDependency('#thing.date'),
+    ],
   });
 
   static [Thing.yamlDocumentSpec] = {
diff --git a/src/strings-default.yaml b/src/strings-default.yaml
index 18f93187..2f50fe9b 100644
--- a/src/strings-default.yaml
+++ b/src/strings-default.yaml
@@ -836,9 +836,12 @@ misc:
         bannerArt: "banner art"
         coverArt: "cover art"
         flash: "flash"
+        midiProjectFile: "midi / project file"
+        miscellaneousAdditionalFile: "additional file"
         musicVideo: "music video"
         musicVideoContribution: "video contribution"
         release: "release"
+        sheetMusicFile: "sheet music file"
         track: "track"
         trackArt: "track art"
         trackContribution: "track contribution"