« get me outta code hell

data: Artwork.dimensions - hsmusic-wiki - HSMusic - static wiki software cataloguing collaborative creation
about summary refs log tree commit diff
path: root/src/data
diff options
context:
space:
mode:
author(quasar) nebula <qznebula@protonmail.com>2025-04-10 13:53:22 -0300
committer(quasar) nebula <qznebula@protonmail.com>2025-04-10 16:02:43 -0300
commitadfdef1310578fb990a302b8004590c3fcec1d53 (patch)
tree5bdaf93c39487fbccd4e5591c0a4e8e828df91fd /src/data
parent37d8572baa3e77e28a0f4df320fcbfa44b751cb8 (diff)
data: Artwork.dimensions
Diffstat (limited to 'src/data')
-rw-r--r--src/data/composite/wiki-data/withConstitutedArtwork.js4
-rw-r--r--src/data/composite/wiki-properties/constitutibleArtwork.js2
-rw-r--r--src/data/composite/wiki-properties/constitutibleArtworkList.js2
-rw-r--r--src/data/things/album.js3
-rw-r--r--src/data/things/artwork.js24
-rw-r--r--src/data/things/track.js1
-rw-r--r--src/data/yaml.js2
7 files changed, 38 insertions, 0 deletions
diff --git a/src/data/composite/wiki-data/withConstitutedArtwork.js b/src/data/composite/wiki-data/withConstitutedArtwork.js
index 16faa2a9..ab3c45e0 100644
--- a/src/data/composite/wiki-data/withConstitutedArtwork.js
+++ b/src/data/composite/wiki-data/withConstitutedArtwork.js
@@ -6,6 +6,7 @@ export default templateCompositeFrom({
   annotation: `withConstitutedArtwork`,
 
   inputs: {
+    dimensionsFromThingProperty: input({type: 'string', acceptsNull: true}),
     fileExtensionFromThingProperty: input({type: 'string'}),
     artistContribsFromThingProperty: input({type: 'string'}),
     artistContribsArtistProperty: input({type: 'string'}),
@@ -18,6 +19,7 @@ export default templateCompositeFrom({
     {
       dependencies: [
         input.myself(),
+        input('dimensionsFromThingProperty'),
         input('fileExtensionFromThingProperty'),
         input('artistContribsFromThingProperty'),
         input('artistContribsArtistProperty'),
@@ -26,6 +28,7 @@ export default templateCompositeFrom({
 
       compute: (continuation, {
         [input.myself()]: myself,
+        [input('dimensionsFromThingProperty')]: dimensionsFromThingProperty,
         [input('fileExtensionFromThingProperty')]: fileExtensionFromThingProperty,
         [input('artistContribsFromThingProperty')]: artistContribsFromThingProperty,
         [input('artistContribsArtistProperty')]: artistContribsArtistProperty,
@@ -34,6 +37,7 @@ export default templateCompositeFrom({
         ['#constitutedArtwork']:
           Object.assign(new thingConstructors.Artwork, {
             thing: myself,
+            dimensionsFromThingProperty,
             fileExtensionFromThingProperty,
             artistContribsFromThingProperty,
             artistContribsArtistProperty,
diff --git a/src/data/composite/wiki-properties/constitutibleArtwork.js b/src/data/composite/wiki-properties/constitutibleArtwork.js
index fc5612ba..870e44c7 100644
--- a/src/data/composite/wiki-properties/constitutibleArtwork.js
+++ b/src/data/composite/wiki-properties/constitutibleArtwork.js
@@ -17,6 +17,7 @@ const template = templateCompositeFrom({
   compose: false,
 
   inputs: {
+    dimensionsFromThingProperty: input({type: 'string', acceptsNull: true}),
     fileExtensionFromThingProperty: input({type: 'string'}),
     artistContribsFromThingProperty: input({type: 'string'}),
     artistContribsArtistProperty: input({type: 'string'}),
@@ -32,6 +33,7 @@ const template = templateCompositeFrom({
     }),
 
     withConstitutedArtwork({
+      dimensionsFromThingProperty: input('dimensionsFromThingProperty'),
       fileExtensionFromThingProperty: input('fileExtensionFromThingProperty'),
       artistContribsFromThingProperty: input('artistContribsFromThingProperty'),
       artistContribsArtistProperty: input('artistContribsArtistProperty'),
diff --git a/src/data/composite/wiki-properties/constitutibleArtworkList.js b/src/data/composite/wiki-properties/constitutibleArtworkList.js
index 7fc4bbc0..6a48cba8 100644
--- a/src/data/composite/wiki-properties/constitutibleArtworkList.js
+++ b/src/data/composite/wiki-properties/constitutibleArtworkList.js
@@ -16,6 +16,7 @@ const template = templateCompositeFrom({
   compose: false,
 
   inputs: {
+    dimensionsFromThingProperty: input({type: 'string', acceptsNull: true}),
     fileExtensionFromThingProperty: input({type: 'string'}),
     artistContribsFromThingProperty: input({type: 'string'}),
     artistContribsArtistProperty: input({type: 'string'}),
@@ -31,6 +32,7 @@ const template = templateCompositeFrom({
     }),
 
     withConstitutedArtwork({
+      dimensionsFromThingProperty: input('dimensionsFromThingProperty'),
       fileExtensionFromThingProperty: input('fileExtensionFromThingProperty'),
       artistContribsFromThingProperty: input('artistContribsFromThingProperty'),
       artistContribsArtistProperty: input('artistContribsArtistProperty'),
diff --git a/src/data/things/album.js b/src/data/things/album.js
index e0d9884f..7c85366a 100644
--- a/src/data/things/album.js
+++ b/src/data/things/album.js
@@ -500,6 +500,7 @@ export class Album extends Thing {
         property: 'coverArtworks',
         transform:
           parseArtwork({
+            dimensionsFromThingProperty: 'coverArtDimensions',
             fileExtensionFromThingProperty: 'coverArtFileExtension',
             dateFromThingProperty: 'coverArtDate',
             artistContribsFromThingProperty: 'coverArtistContribs',
@@ -512,6 +513,7 @@ export class Album extends Thing {
         transform:
           parseArtwork({
             single: true,
+            dimensionsFromThingProperty: 'bannerDimensions',
             fileExtensionFromThingProperty: 'bannerFileExtension',
             dateFromThingProperty: 'date',
             artistContribsFromThingProperty: 'bannerArtistContribs',
@@ -524,6 +526,7 @@ export class Album extends Thing {
         transform:
           parseArtwork({
             single: true,
+            dimensionsFromThingProperty: null,
             fileExtensionFromThingProperty: 'wallpaperFileExtension',
             dateFromThingProperty: 'date',
             artistContribsFromThingProperty: 'wallpaperArtistContribs',
diff --git a/src/data/things/artwork.js b/src/data/things/artwork.js
index fabbf625..93f238f2 100644
--- a/src/data/things/artwork.js
+++ b/src/data/things/artwork.js
@@ -9,6 +9,7 @@ import {
   isContentString,
   isContributionList,
   isDate,
+  isDimensions,
   isFileExtension,
   optional,
   validateArrayItems,
@@ -112,6 +113,29 @@ export class Artwork extends Thing {
       }),
     ],
 
+    dimensionsFromThingProperty: simpleString(),
+
+    dimensions: [
+      exposeUpdateValueOrContinue({
+        validate: input.value(isDimensions),
+      }),
+
+      withPropertyFromObject({
+        object: 'thing',
+        property: 'dimensionsFromThingProperty',
+      }).outputs({
+        ['#value']: '#dimensionsFromThing',
+      }),
+
+      exposeDependencyOrContinue({
+        dependency: '#dimensionsFromThing',
+      }),
+
+      exposeConstant({
+        value: input.value(null),
+      }),
+    ],
+
     artistContribsFromThingProperty: simpleString(),
     artistContribsArtistProperty: simpleString(),
 
diff --git a/src/data/things/track.js b/src/data/things/track.js
index c2ba503b..4f5d7a59 100644
--- a/src/data/things/track.js
+++ b/src/data/things/track.js
@@ -528,6 +528,7 @@ export class Track extends Thing {
         property: 'trackArtworks',
         transform:
           parseArtwork({
+            dimensionsFromThingProperty: 'coverArtDimensions',
             fileExtensionFromThingProperty: 'coverArtFileExtension',
             dateFromThingProperty: 'coverArtDate',
             artistContribsFromThingProperty: 'coverArtistContribs',
diff --git a/src/data/yaml.js b/src/data/yaml.js
index f5944a99..07dbe882 100644
--- a/src/data/yaml.js
+++ b/src/data/yaml.js
@@ -791,12 +791,14 @@ export function parseAnnotatedReferences(entries, {
 
 export function parseArtwork({
   single = false,
+  dimensionsFromThingProperty,
   fileExtensionFromThingProperty,
   dateFromThingProperty,
   artistContribsFromThingProperty,
   artistContribsArtistProperty,
 }) {
   const provide = {
+    dimensionsFromThingProperty,
     fileExtensionFromThingProperty,
     dateFromThingProperty,
     artistContribsFromThingProperty,