From 8eb9ab9477b9c7beb6b2f04a17ca80d30ad70292 Mon Sep 17 00:00:00 2001 From: suroh Date: Mon, 4 Dec 2023 23:07:00 +0100 Subject: [PATCH] updated images data --- public/data/images.json | 663 ++++++++++++++++++++--- public/data/music_sound_unpublished.json | 44 +- scripts/files2json.js | 33 +- scripts/watcher.js | 64 --- src/App.js | 15 +- src/api/Router.js | 2 +- src/components/VerticalCard.js | 2 +- src/views/images.js | 20 +- 8 files changed, 666 insertions(+), 177 deletions(-) delete mode 100644 scripts/watcher.js diff --git a/public/data/images.json b/public/data/images.json index 0c83b7a..f0f81e0 100644 --- a/public/data/images.json +++ b/public/data/images.json @@ -1,132 +1,653 @@ [ { - "title": "1 MeredithMonk 1972 Paris", + "title": "Scores", "parent_dir": "images", - "media": "1_MeredithMonk_1972_Paris", + "media": "1_Scores", + "order": "1", "images": [ { - "title": "MeredithMonk 1972 ParisScore01", - "media": "MeredithMonk_1972_ParisScore01.jpg", - "thumb": "MeredithMonk_1972_ParisScore01.thumb.jpg" + "title": "Handwritten Score for 'Paris' (1972)", + "details": "Page 1", + "media": "1_Handwritten Score for 'Paris' (1972)_Page 1.png", + "thumb": "1_Handwritten Score for 'Paris' (1972)_Page 1.thumb.png" }, { - "title": "MeredithMonk 1972 ParisScore02", - "media": "MeredithMonk_1972_ParisScore02.jpg", - "thumb": "MeredithMonk_1972_ParisScore02.thumb.jpg" + "title": "Handwritten Score for 'Paris' (1972)", + "details": "Page 2", + "media": "2_Handwritten Score for 'Paris' (1972)_Page 2.png", + "thumb": "2_Handwritten Score for 'Paris' (1972)_Page 2.thumb.png" }, { - "title": "MeredithMonk 1972 ParisScore03", - "media": "MeredithMonk_1972_ParisScore03.jpg", - "thumb": "MeredithMonk_1972_ParisScore03.thumb.jpg" + "title": "Handwritten Score for 'Paris' (1972)", + "details": "Page 3", + "media": "3_Handwritten Score for 'Paris' (1972)_Page 3.png", + "thumb": "3_Handwritten Score for 'Paris' (1972)_Page 3.thumb.png" }, { - "title": "MeredithMonk 1972 ParisScore04", - "media": "MeredithMonk_1972_ParisScore04.jpg", - "thumb": "MeredithMonk_1972_ParisScore04.thumb.jpg" + "title": "Handwritten Score for 'Paris' (1972)", + "details": "Page 4", + "media": "4_Handwritten Score for 'Paris' (1972)_Page 4.png", + "thumb": "4_Handwritten Score for 'Paris' (1972)_Page 4.thumb.png" } ] }, { - "title": "2 Series of Watercolors (Untitled Studies), 1970-1986", + "title": "Watercolors - Untitled Studies (1970-1986)", "parent_dir": "images", - "media": "2_Series of Watercolors (Untitled Studies), 1970-1986. (photographed 2007 Eileen Costa)", + "media": "2_Watercolors - Untitled Studies (1970-1986)", + "order": "2", "images": [ { - "title": "001", - "media": "001.jpg", - "thumb": "001.thumb.jpg" + "title": "Study 1", + "details": "Series of Watercolors", + "media": "1_Study 1_Series of Watercolors.jpg", + "thumb": "1_Study 1_Series of Watercolors.thumb.jpg" }, { - "title": "002", - "media": "002.jpg", - "thumb": "002.thumb.jpg" + "title": "Study 2", + "details": "Series of Watercolors", + "media": "2_Study 2_Series of Watercolors.jpg", + "thumb": "2_Study 2_Series of Watercolors.thumb.jpg" }, { - "title": "003", - "media": "003.jpg", - "thumb": "003.thumb.jpg" + "title": "Study 3", + "details": "Series of Watercolors", + "media": "3_Study 3_Series of Watercolors.jpg", + "thumb": "3_Study 3_Series of Watercolors.thumb.jpg" }, { - "title": "004", - "media": "004.jpg", - "thumb": "004.thumb.jpg" + "title": "Study 4", + "details": "Series of Watercolors", + "media": "4_Study 4_Series of Watercolors.jpg", + "thumb": "4_Study 4_Series of Watercolors.thumb.jpg" }, { - "title": "005", - "media": "005.jpg", - "thumb": "005.thumb.jpg" + "title": "Study 5", + "details": "Series of Watercolors", + "media": "5_Study 5_Series of Watercolors.jpg", + "thumb": "5_Study 5_Series of Watercolors.thumb.jpg" }, { - "title": "006", - "media": "006.jpg", - "thumb": "006.thumb.jpg" + "title": "Study 6", + "details": "Series of Watercolors", + "media": "6_Study 6_Series of Watercolors.jpg", + "thumb": "6_Study 6_Series of Watercolors.thumb.jpg" }, { - "title": "007", - "media": "007.jpg", - "thumb": "007.thumb.jpg" + "title": "Study 7", + "details": "Series of Watercolors", + "media": "7_Study 7_Series of Watercolors.jpg", + "thumb": "7_Study 7_Series of Watercolors.thumb.jpg" }, { - "title": "008", - "media": "008.jpg", - "thumb": "008.thumb.jpg" + "title": "Study 8", + "details": "Series of Watercolors", + "media": "8_Study 8_Series of Watercolors.jpg", + "thumb": "8_Study 8_Series of Watercolors.thumb.jpg" }, { - "title": "009", - "media": "009.jpg", - "thumb": "009.thumb.jpg" + "title": "Study 9", + "details": "Series of Watercolors", + "media": "9_Study 9_Series of Watercolors.jpg", + "thumb": "9_Study 9_Series of Watercolors.thumb.jpg" }, { - "title": "010", - "media": "010.jpg", - "thumb": "010.thumb.jpg" + "title": "Study 10", + "details": "Series of Watercolors", + "media": "10_Study 10_Series of Watercolors.jpg", + "thumb": "10_Study 10_Series of Watercolors.thumb.jpg" }, { - "title": "011", - "media": "011.jpg", - "thumb": "011.thumb.jpg" + "title": "Study 11", + "details": "Series of Watercolors", + "media": "11_Study 11_Series of Watercolors.jpg", + "thumb": "11_Study 11_Series of Watercolors.thumb.jpg" } ] }, { - "title": "3 Posters", + "title": "Posters", "parent_dir": "images", "media": "3_Posters", + "order": "3", "images": [ { - "title": "04 MERCY 2002", - "media": "04_MERCY_2002.jpg", - "thumb": "04_MERCY_2002.thumb.jpg" + "title": "Vessel: an opera epic (1971)", + "details": "site-specific locations, NYC, October 1971 Design/drawing by Meredith Monk with print by Monica Moseley", + "media": "6_Vessel: an opera epic (1971)_site-specific locations, NYC, October 1971 Design/drawing by Meredith Monk with print by Monica Moseley.jpg", + "thumb": "6_Vessel: an opera epic (1971)_site-specific locations, NYC, October 1971 Design/drawing by Meredith Monk with print by Monica Moseley.thumb.jpg" }, { - "title": "122 THE GAMES", - "media": "122_THE_GAMES.jpg", - "thumb": "122_THE_GAMES.thumb.jpg" + "title": "Quarry: an opera in three movements (1976)", + "details": "La MaMa Annex, NYC, April 1976 Design/drawing by Meredith Monk with print by Monica Moseley", + "media": "1_Quarry: an opera in three movements (1976)_La MaMa Annex, NYC, April 1976 Design/drawing by Meredith Monk with print by Monica Moseley.jpg", + "thumb": "1_Quarry: an opera in three movements (1976)_La MaMa Annex, NYC, April 1976 Design/drawing by Meredith Monk with print by Monica Moseley.thumb.jpg" }, { - "title": "146 Songs from the Hill Town Hall", - "media": "146_Songs_from_the_Hill_Town_Hall.jpg", - "thumb": "146_Songs_from_the_Hill_Town_Hall.thumb.jpg" + "title": "Songs from the Hill and Tablet (1976)", + "details": "Town Hall, NYC, October 1976, Design/Drawing by Meredith Monk with print by Monica Moseley", + "media": "5_Songs from the Hill and Tablet (1976)_Town Hall, NYC, October 1976, Design/Drawing by Meredith Monk with print by Monica Moseley.jpg", + "thumb": "5_Songs from the Hill and Tablet (1976)_Town Hall, NYC, October 1976, Design/Drawing by Meredith Monk with print by Monica Moseley.thumb.jpg" }, { - "title": "153 Vessel 2", - "media": "153_Vessel_2.jpg", - "thumb": "153_Vessel_2.thumb.jpg" + "title": "The Games: a science fiction opera (1983)", + "details": "Schaubühne am Lehniner Platz, Berlin, Germany Designed by Meredith Monk, Ping Chong and Yoshio Yabara", + "media": "2_The Games: a science fiction opera (1983)_Schaubühne am Lehniner Platz, Berlin, Germany Designed by Meredith Monk, Ping Chong and Yoshio Yabara.jpg", + "thumb": "2_The Games: a science fiction opera (1983)_Schaubühne am Lehniner Platz, Berlin, Germany Designed by Meredith Monk, Ping Chong and Yoshio Yabara.thumb.jpg" }, { - "title": "57 IMPERMENANCE MAP", - "media": "57_IMPERMENANCE_MAP.jpg", - "thumb": "57_IMPERMENANCE_MAP.thumb.jpg" + "title": "ATLAS: an opera in three parts (1991)", + "details": "World premiere flyer 1991", + "media": "3_ATLAS: an opera in three parts (1991)_World premiere flyer 1991.png", + "thumb": "3_ATLAS: an opera in three parts (1991)_World premiere flyer 1991.thumb.png" }, { - "title": "ATLAS world premiere flyer 1991", - "media": "ATLAS world premiere flyer 1991.jpg", - "thumb": "ATLAS world premiere flyer 1991.thumb.jpg" + "title": "mercy (2002)", + "details": "Brooklyn Academy of Music (BAM), New York, December 2002", + "media": "4_mercy (2002)_Brooklyn Academy of Music (BAM), New York, December 2002.jpg", + "thumb": "4_mercy (2002)_Brooklyn Academy of Music (BAM), New York, December 2002.thumb.jpg" + } + ] + }, + { + "title": "Map", + "parent_dir": "images", + "media": "4_Map", + "order": "4", + "images": [ + { + "title": "impermanence (2008)", + "details": "Special edition print", + "media": "1_impermanence (2008)_Special edition print.jpg", + "thumb": "1_impermanence (2008)_Special edition print.thumb.jpg" + } + ] + }, + { + "title": "Indra's Net - Scores and Music Fragments", + "parent_dir": "images", + "media": "5_Indra's Net - Scores and Music Fragments", + "order": "5", + "images": [ + { + "title": "Melody themes 1 (2019)", + "media": "59_Melody themes 1 (2019).png", + "thumb": "59_Melody themes 1 (2019).thumb.png" }, { - "title": "Quarry 1976 LaMama original poster", - "media": "Quarry_1976_LaMama_original poster.jpg", - "thumb": "Quarry_1976_LaMama_original poster.thumb.jpg" + "title": "Melody themes 3-6 (2019)", + "media": "60_Melody themes 3-6 (2019).png", + "thumb": "60_Melody themes 3-6 (2019).thumb.png" + }, + { + "title": "Melody themes 5 (2019)", + "media": "61_Melody themes 5 (2019).png", + "thumb": "61_Melody themes 5 (2019).thumb.png" + }, + { + "title": "Melody themes 6 continued (2019)", + "media": "62_Melody themes 6 continued (2019).png", + "thumb": "62_Melody themes 6 continued (2019).thumb.png" + }, + { + "title": ""Anthem" full score (2023)", + "details": "Page 01", + "media": "01_"Anthem" full score (2023)_Page 01.png", + "thumb": "01_"Anthem" full score (2023)_Page 01.thumb.png" + }, + { + "title": ""Anthem" full score (2023)", + "details": "Page 02", + "media": "02_"Anthem" full score (2023)_Page 02.png", + "thumb": "02_"Anthem" full score (2023)_Page 02.thumb.png" + }, + { + "title": ""Anthem" full score (2023)", + "details": "Page 03", + "media": "03_"Anthem" full score (2023)_ Page 03.png", + "thumb": "03_"Anthem" full score (2023)_ Page 03.thumb.png" + }, + { + "title": ""Anthem" full score (2023)", + "details": "Page_04", + "media": "04_"Anthem" full score (2023)_Page_04.png", + "thumb": "04_"Anthem" full score (2023)_Page_04.thumb.png" + }, + { + "title": ""Anthem" full score (2023)", + "details": "Page_05", + "media": "05_"Anthem" full score (2023)_Page_05.png", + "thumb": "05_"Anthem" full score (2023)_Page_05.thumb.png" + }, + { + "title": ""Anthem" full score (2023)", + "details": "Page_06", + "media": "06_"Anthem" full score (2023)_Page_06.png", + "thumb": "06_"Anthem" full score (2023)_Page_06.thumb.png" + }, + { + "title": ""Anthem" full score (2023)", + "details": "Page_07", + "media": "07_"Anthem" full score (2023)_Page_07.png", + "thumb": "07_"Anthem" full score (2023)_Page_07.thumb.png" + }, + { + "title": ""Anthem" full score (2023)", + "details": "Page_08", + "media": "08_"Anthem" full score (2023)_Page_08.png", + "thumb": "08_"Anthem" full score (2023)_Page_08.thumb.png" + }, + { + "title": ""Anthem" full score (2023)", + "details": "Page_09", + "media": "09_"Anthem" full score (2023)_Page_09.png", + "thumb": "09_"Anthem" full score (2023)_Page_09.thumb.png" + }, + { + "title": ""Anthem" full score (2023)", + "details": "Page_10", + "media": "10_"Anthem" full score (2023)_Page_10.png", + "thumb": "10_"Anthem" full score (2023)_Page_10.thumb.png" + }, + { + "title": " "Anthem" full score (2023)", + "details": "Page_11", + "media": "11_ "Anthem" full score (2023)_Page_11.png", + "thumb": "11_ "Anthem" full score (2023)_Page_11.thumb.png" + }, + { + "title": ""Anthem" full score (2023)", + "details": "Page_12", + "media": "12_"Anthem" full score (2023)_Page_12.png", + "thumb": "12_"Anthem" full score (2023)_Page_12.thumb.png" + }, + { + "title": ""Anthem" full score (2023)", + "details": "Page_13", + "media": "13_"Anthem" full score (2023)_Page_13.png", + "thumb": "13_"Anthem" full score (2023)_Page_13.thumb.png" + }, + { + "title": ""Anthem" full score (2023)", + "details": "Page_14", + "media": "14_"Anthem" full score (2023)_Page_14.png", + "thumb": "14_"Anthem" full score (2023)_Page_14.thumb.png" + }, + { + "title": ""Anthem" full score (2023)", + "details": "Page_15", + "media": "15_"Anthem" full score (2023)_Page_15.png", + "thumb": "15_"Anthem" full score (2023)_Page_15.thumb.png" + }, + { + "title": ""Anthem" full score (2023)", + "details": "Page_16", + "media": "16_"Anthem" full score (2023)_Page_16.png", + "thumb": "16_"Anthem" full score (2023)_Page_16.thumb.png" + }, + { + "title": ""Anthem" full score (2023)", + "details": "Page_17", + "media": "17_"Anthem" full score (2023)_Page_17.png", + "thumb": "17_"Anthem" full score (2023)_Page_17.thumb.png" + }, + { + "title": ""Anthem" full score (2023)", + "details": "Page_18", + "media": "18_"Anthem" full score (2023)_Page_18.png", + "thumb": "18_"Anthem" full score (2023)_Page_18.thumb.png" + }, + { + "title": ""Anthem" full score (2023)", + "details": "Page_19", + "media": "19_"Anthem" full score (2023)_Page_19.png", + "thumb": "19_"Anthem" full score (2023)_Page_19.thumb.png" + }, + { + "title": ""Anthem" full score (2023)", + "details": "Page_20", + "media": "20_"Anthem" full score (2023)_Page_20.png", + "thumb": "20_"Anthem" full score (2023)_Page_20.thumb.png" + }, + { + "title": ""Anthem" full score (2023)", + "details": "Page_21", + "media": "21_"Anthem" full score (2023)_Page_21.png", + "thumb": "21_"Anthem" full score (2023)_Page_21.thumb.png" + }, + { + "title": ""Anthem" full score (2023)", + "details": "Page_22", + "media": "22_"Anthem" full score (2023)_Page_22.png", + "thumb": "22_"Anthem" full score (2023)_Page_22.thumb.png" + }, + { + "title": ""Anthem" full score (2023)", + "details": "Page_23", + "media": "23_"Anthem" full score (2023)_Page_23.png", + "thumb": "23_"Anthem" full score (2023)_Page_23.thumb.png" + }, + { + "title": ""Anthem" full score (2023)", + "details": "Page_24", + "media": "24_"Anthem" full score (2023)_Page_24.png", + "thumb": "24_"Anthem" full score (2023)_Page_24.thumb.png" + }, + { + "title": ""Anthem" full score (2023)", + "details": "Page_25", + "media": "25_"Anthem" full score (2023)_Page_25.png", + "thumb": "25_"Anthem" full score (2023)_Page_25.thumb.png" + }, + { + "title": ""Anthem" full score (2023)", + "details": "Page_26", + "media": "26_"Anthem" full score (2023)_Page_26.png", + "thumb": "26_"Anthem" full score (2023)_Page_26.thumb.png" + }, + { + "title": ""Anthem" full score (2023)", + "details": "Page_27", + "media": "27_"Anthem" full score (2023)_Page_27.png", + "thumb": "27_"Anthem" full score (2023)_Page_27.thumb.png" + }, + { + "title": ""Anthem" full score (2023)", + "details": "Page_28", + "media": "28_"Anthem" full score (2023)_Page_28.png", + "thumb": "28_"Anthem" full score (2023)_Page_28.thumb.png" + }, + { + "title": ""Anthem" full score (2023)", + "details": "Page_29", + "media": "29_"Anthem" full score (2023)_Page_29.png", + "thumb": "29_"Anthem" full score (2023)_Page_29.thumb.png" + }, + { + "title": ""Rotation" full score (2023)", + "details": "Page_01", + "media": "30_/Rotation/ full score (2023)_Page_01.png", + "thumb": "30_/Rotation/ full score (2023)_Page_01.thumb.png" + }, + { + "title": ""Rotation" full score (2023)", + "details": "Page_02", + "media": "31_/Rotation/ full score (2023)_Page_02.png", + "thumb": "31_/Rotation/ full score (2023)_Page_02.thumb.png" + }, + { + "title": ""Rotation" full score (2023)", + "details": "Page_03", + "media": "32_/Rotation/ full score (2023)_Page_03.png", + "thumb": "32_/Rotation/ full score (2023)_Page_03.thumb.png" + }, + { + "title": ""Rotation" full score (2023)", + "details": "Page_04", + "media": "33_/Rotation/ full score (2023)_Page_04.png", + "thumb": "33_/Rotation/ full score (2023)_Page_04.thumb.png" + }, + { + "title": ""Rotation" full score (2023)", + "details": "Page_05", + "media": "34_/Rotation/ full score (2023)_Page_05.png", + "thumb": "34_/Rotation/ full score (2023)_Page_05.thumb.png" + }, + { + "title": ""Rotation" full score (2023)", + "details": "Page_06", + "media": "35_/Rotation/ full score (2023)_Page_06.png", + "thumb": "35_/Rotation/ full score (2023)_Page_06.thumb.png" + }, + { + "title": ""Rotation" full score (2023)", + "details": "Page_07", + "media": "36_/Rotation/ full score (2023)_Page_07.png", + "thumb": "36_/Rotation/ full score (2023)_Page_07.thumb.png" + }, + { + "title": ""Rotation" full score (2023)", + "details": "Page_08", + "media": "37_/Rotation/ full score (2023)_Page_08.png", + "thumb": "37_/Rotation/ full score (2023)_Page_08.thumb.png" + }, + { + "title": ""Rotation" full score (2023)", + "details": "Page_09", + "media": "38_/Rotation/ full score (2023)_Page_09.png", + "thumb": "38_/Rotation/ full score (2023)_Page_09.thumb.png" + }, + { + "title": ""Rotation" full score (2023)", + "details": "Page_10", + "media": "39_/Rotation/ full score (2023)_Page_10.png", + "thumb": "39_/Rotation/ full score (2023)_Page_10.thumb.png" + }, + { + "title": ""Rotation" full score (2023)", + "details": "Page_11", + "media": "40_/Rotation/ full score (2023)_Page_11.png", + "thumb": "40_/Rotation/ full score (2023)_Page_11.thumb.png" + }, + { + "title": ""Rotation" full score (2023)", + "details": "Page_12", + "media": "41_/Rotation/ full score (2023)_Page_12.png", + "thumb": "41_/Rotation/ full score (2023)_Page_12.thumb.png" + }, + { + "title": ""Rotation" full score (2023)", + "details": "Page_13", + "media": "42_/Rotation/ full score (2023)_Page_13.png", + "thumb": "42_/Rotation/ full score (2023)_Page_13.thumb.png" + }, + { + "title": ""Rotation" full score (2023)", + "details": "Page_14", + "media": "43_/Rotation/ full score (2023)_Page_14.png", + "thumb": "43_/Rotation/ full score (2023)_Page_14.thumb.png" + }, + { + "title": ""Rotation" full score (2023)", + "details": "Page_15", + "media": "44_/Rotation/ full score (2023)_Page_15.png", + "thumb": "44_/Rotation/ full score (2023)_Page_15.thumb.png" + }, + { + "title": ""Rotation" full score (2023)", + "details": "Page_16", + "media": "45_/Rotation/ full score (2023)_Page_16.png", + "thumb": "45_/Rotation/ full score (2023)_Page_16.thumb.png" + }, + { + "title": ""Rotation" full score (2023)", + "details": "Page_17", + "media": "46_/Rotation/ full score (2023)_Page_17.png", + "thumb": "46_/Rotation/ full score (2023)_Page_17.thumb.png" + }, + { + "title": ""Rotation" full score (2023)", + "details": "Page_18", + "media": "47_/Rotation/ full score (2023)_Page_18.png", + "thumb": "47_/Rotation/ full score (2023)_Page_18.thumb.png" + }, + { + "title": ""Rotation" full score (2023)", + "details": "Page_19", + "media": "48_/Rotation/ full score (2023)_Page_19.png", + "thumb": "48_/Rotation/ full score (2023)_Page_19.thumb.png" + }, + { + "title": ""Rotation" full score (2023)", + "details": "Page_20", + "media": "49_/Rotation/ full score (2023)_Page_20.png", + "thumb": "49_/Rotation/ full score (2023)_Page_20.thumb.png" + }, + { + "title": ""Rotation" full score (2023)", + "details": "Page_21", + "media": "50_/Rotation/ full score (2023)_Page_21.png", + "thumb": "50_/Rotation/ full score (2023)_Page_21.thumb.png" + }, + { + "title": ""Rotation" full score (2023)", + "details": "Page_22", + "media": "51_/Rotation/ full score (2023)_Page_22.png", + "thumb": "51_/Rotation/ full score (2023)_Page_22.thumb.png" + }, + { + "title": ""Rotation" full score (2023)", + "details": "Page_23", + "media": "52_/Rotation/ full score (2023)_Page_23.png", + "thumb": "52_/Rotation/ full score (2023)_Page_23.thumb.png" + }, + { + "title": "Chord structure for the beginning of "Rotation" (2013)", + "media": "53_Chord structure for the beginning of /Rotation/ (2013).jpg", + "thumb": "53_Chord structure for the beginning of /Rotation/ (2013).thumb.jpg" + }, + { + "title": ""Jewels" sections music material (2013)", + "media": "54_/Jewels/ sections music material (2013).jpg", + "thumb": "54_/Jewels/ sections music material (2013).thumb.jpg" + }, + { + "title": ""Jewel 2" and "Jewel 4" (2019)", + "media": "55_/Jewel 2/ and /Jewel 4/ (2019).png", + "thumb": "55_/Jewel 2/ and /Jewel 4/ (2019).thumb.png" + }, + { + "title": ""Jewel 3" (2019)", + "media": "56_/Jewel 3/ (2019).png", + "thumb": "56_/Jewel 3/ (2019).thumb.png" + }, + { + "title": ""Jewel 5" and "Jewel 4" (2017-2019)", + "media": "57_/Jewel 5/ and /Jewel 4/ (2017-2019).png", + "thumb": "57_/Jewel 5/ and /Jewel 4/ (2017-2019).thumb.png" + }, + { + "title": ""Jewel 5" with syllables (2021)", + "media": "58_/Jewel 5/ with syllables (2021).png", + "thumb": "58_/Jewel 5/ with syllables (2021).thumb.png" + }, + { + "title": ""Rotation" vocal chain (2019)", + "media": "63_/Rotation/ vocal chain (2019).png", + "thumb": "63_/Rotation/ vocal chain (2019).thumb.png" + } + ] + }, + { + "title": "Indra's Net - Notebooks", + "parent_dir": "images", + "media": "6_Indra's Net - Notebooks", + "order": "6", + "images": [ + { + "title": "on sound", + "details": "continued (2018-2020)", + "media": "02_on sound, continued (2018-2020).png", + "thumb": "02_on sound, continued (2018-2020).thumb.png" + }, + { + "title": "variations for rehearsals", + "details": "on sound dimensions (2018-2020)", + "media": "05_variations for rehearsals, on sound dimensions (2018-2020).png", + "thumb": "05_variations for rehearsals, on sound dimensions (2018-2020).thumb.png" + }, + { + "title": "on "Rotation" (2018-2020)", + "media": "06_on /Rotation/ (2018-2020).png", + "thumb": "06_on /Rotation/ (2018-2020).thumb.png" + }, + { + "title": ""Indra's Net" form 2 (2020-2022)", + "media": "07_/Indra's Net/ form 2 (2020-2022).png", + "thumb": "07_/Indra's Net/ form 2 (2020-2022).thumb.png" + }, + { + "title": ""Rotation" - Indra principles (2020-2022)", + "media": "08_/Rotation/ - Indra principles (2020-2022).png", + "thumb": "08_/Rotation/ - Indra principles (2020-2022).thumb.png" + }, + { + "title": "on sound (2018-2020)", + "media": "01_on sound (2018-2020).png", + "thumb": "01_on sound (2018-2020).thumb.png" + }, + { + "title": "on time (2018-2020)", + "media": "03_on time (2018-2020).png", + "thumb": "03_on time (2018-2020).thumb.png" + }, + { + "title": "images for projection (2018-2020)", + "media": "04_images for projection (2018-2020).png", + "thumb": "04_images for projection (2018-2020).thumb.png" + }, + { + "title": "films for projection (2023)", + "media": "09_films for projection (2023).png", + "thumb": "09_films for projection (2023).thumb.png" + }, + { + "title": "for Film A and Film B (2023)", + "media": "10_for Film A and Film B (2023).png", + "thumb": "10_for Film A and Film B (2023).thumb.png" + }, + { + "title": "movement ideas (2023)", + "media": "11_movement ideas (2023).png", + "thumb": "11_movement ideas (2023).thumb.png" + }, + { + "title": "for Film I (2023)", + "media": "12_for Film I (2023).png", + "thumb": "12_for Film I (2023).thumb.png" + }, + { + "title": "sections and films chart (2023)", + "media": "13_sections and films chart (2023).png", + "thumb": "13_sections and films chart (2023).thumb.png" + } + ] + }, + { + "title": "Indra's Net - Visual Script", + "parent_dir": "images", + "media": "7_Indra's Net - Visual Script", + "order": "7", + "images": [ + { + "title": "for performances at the Holland Festival (2023) Page 1", + "media": "01_for performances at the Holland Festival (2023) Page 1.jpg", + "thumb": "01_for performances at the Holland Festival (2023) Page 1.thumb.jpg" + }, + { + "title": "for performances at the Holland Festival (2023) Page 2", + "media": "02_for performances at the Holland Festival (2023) Page 2.jpg", + "thumb": "02_for performances at the Holland Festival (2023) Page 2.thumb.jpg" + }, + { + "title": "for performances at the Holland Festival (2023) Page 3", + "media": "03_for performances at the Holland Festival (2023) Page 3.jpg", + "thumb": "03_for performances at the Holland Festival (2023) Page 3.thumb.jpg" + }, + { + "title": "for performances at the Holland Festival (2023) Page 4", + "media": "04_for performances at the Holland Festival (2023) Page 4.jpg", + "thumb": "04_for performances at the Holland Festival (2023) Page 4.thumb.jpg" + }, + { + "title": "for performances at the Holland Festival (2023) Page 5", + "media": "05_for performances at the Holland Festival (2023) Page 5.jpg", + "thumb": "05_for performances at the Holland Festival (2023) Page 5.thumb.jpg" + }, + { + "title": "for performances at the Holland Festival (2023) Page 6", + "media": "06_for performances at the Holland Festival (2023) Page 6.jpg", + "thumb": "06_for performances at the Holland Festival (2023) Page 6.thumb.jpg" } ] } diff --git a/public/data/music_sound_unpublished.json b/public/data/music_sound_unpublished.json index 51029b0..1d72586 100644 --- a/public/data/music_sound_unpublished.json +++ b/public/data/music_sound_unpublished.json @@ -50,91 +50,91 @@ "album": true, "tracks": [ { - "title": "01 Announcer MM speaks Porch 1", + "title": "Announcer MM speaks Porch 1", "media": "01 Announcer_MM speaks_Porch_1.mp3" }, { - "title": "02 Mesa", + "title": "Mesa", "media": "02 Mesa.mp3" }, { - "title": "03 Jade (Old Woman's Song)", + "title": "Jade (Old Woman's Song)", "media": "03 Jade (Old Woman's Song).mp3" }, { - "title": "04 Wa-lie-oh", + "title": "Wa-lie-oh", "media": "04 Wa-lie-oh.mp3" }, { - "title": "05 Insect", + "title": "Insect", "media": "05 Insect.mp3" }, { - "title": "06 Descending", + "title": "Descending", "media": "06 Descending.mp3" }, { - "title": "07 Silo (Drone)", + "title": "Silo (Drone)", "media": "07 Silo (Drone).mp3" }, { - "title": "08 Breath Song", + "title": "Breath Song", "media": "08 Breath Song.mp3" }, { - "title": "09 Bird Code", + "title": "Bird Code", "media": "09 Bird Code.mp3" }, { - "title": "10 Lullaby #4", + "title": "Lullaby #4", "media": "10 Lullaby #4.mp3" }, { - "title": "11 Prairie Ghost", + "title": "Prairie Ghost", "media": "11 Prairie Ghost.mp3" }, { - "title": "12 Prairie Ghost", + "title": "Prairie Ghost", "media": "12 Prairie Ghost.mp3" }, { - "title": "13 Jew's Harp", + "title": "Jew's Harp", "media": "13 Jew's Harp.mp3" }, { - "title": "14 Scared Song", + "title": "Scared Song", "media": "14 Scared Song.mp3" }, { - "title": "15 Travelling", + "title": "Travelling", "media": "15 Travelling.mp3" }, { - "title": "16 I Don't Know", + "title": "I Don't Know", "media": "16 I Don't Know.mp3" }, { - "title": "17 I Don't Know cont-", + "title": "I Don't Know cont-", "media": "17 I Don't Know cont-.mp3" }, { - "title": "18 Window in 7's Double Fiesta", + "title": "Window in 7's Double Fiesta", "media": "18 Window in 7's_Double Fiesta.mp3" }, { - "title": "19 Double Fiesta cont", + "title": "Double Fiesta cont", "media": "19 Double Fiesta cont.mp3" }, { - "title": "20 Do You Be", + "title": "Do You Be", "media": "20 Do You Be.mp3" }, { - "title": "21 Ellis Island", + "title": "Ellis Island", "media": "21 Ellis Island.mp3" }, { - "title": "22 The Tale", + "title": "The Tale", "media": "22 The Tale.mp3" } ] diff --git a/scripts/files2json.js b/scripts/files2json.js index f211519..eaaf607 100644 --- a/scripts/files2json.js +++ b/scripts/files2json.js @@ -180,7 +180,7 @@ Other flags } if (order) { - const idx = m.match(/\d+/)[0] || 0 + const idx = m.match(/\d+/) ? m.match(/\d+/)[0] : 0 _r.order = idx _r.title = _r.title.replace(/^\d+\W*_*/, '') } @@ -208,14 +208,29 @@ Other flags let files = await fs.readdir(rDir) // filterout any rogue folders // generate the metadata for each file - files = files.filter(f => f.match(/\.[^/.]+$/)) + files = files.filter(f => f.match(/(? { - const { title, details } = genMetadata(f, formatted == 'recurse' || formatted == 'both', false) - return { title, details, media: f } + const { title, details } = genMetadata(f, formatted == 'recurse' || formatted == 'both', false) + return { title, details, media: f } + }) + + // sort files by leading nuber (if exists) + files.sort((a, b) => { + const valA = a.title.match(/\d+/) ? a.title.match(/\d+/)[0] : 0 + const valB = b.title.match(/\d+/) ? b.title.match(/\d+/)[0] : 0 + return parseInt(valA) - parseInt(valB) + }) + + // remove leading number from tile & + // sanitize title for html unicode characters + files.forEach(f => { + f.title = f.title.replace(/^\d+(\s+|_)/, '') + f.title = f.title.replaceAll('/', '"') }) // if images only if (imagesOnly) { + // setup object per image in array _r.images = files.filter(f => !f.media.match(/\.thumb\.[^/.]{1,4}$/i)) } else { @@ -260,24 +275,28 @@ Other flags } } -function genMetadata(dir, formatted) { +function genMetadata(path, formatted) { let title, details + const cleanPath = path.replace(/^\d+(_|.)/, '') // if formatted flag set if (formatted) { // split the incoming name from the map on the '_' // and set the first element to title, and the second to details - let [ t, _, d ] = dir.split(/(,|_)(.+)/s) + let [ t, _, d ] = cleanPath.split(/(,|_)(.+)/s) // assign to return object title = t details = d ? d.replace(/\.+(mp\d|m\dv)$/i, '').trim() : '' } else { // else just set title to filename without extensions - const name = dir.replace(/\.\S{3,4}$/, '') + const name = cleanPath.replace(/\.\S{3,4}$/, '') title = name.replace(/_/g, ' ') } + title = title.replace(/\.\w+$/, '') + details = details ? details.replace(/\.\w+$/, '') : undefined + return { title, details } } diff --git a/scripts/watcher.js b/scripts/watcher.js deleted file mode 100644 index 0c117ec..0000000 --- a/scripts/watcher.js +++ /dev/null @@ -1,64 +0,0 @@ -import fs from 'fs/promises' -import path from 'path' -import { watch } from 'chokidar' - -function main() { - let watchDir = '' - let sections = [] - - process.argv.forEach((val, i) => { - switch (val) { - case '-i': - watchDir = process.argv[i + 1] || '' - break - - default: - break - } - }) - - if (!watchDir) { - console.error('no directory passed') - } - - const w = watch(watchDir, { - persistent: true, - awaitWriteFinish: { - stabilityThreshold: 2000, - pollInterval: 100 - }, - }) - - w.on('ready',() => { - console.log('Watching', watchDir, 'for changes.') - // check each section against json file - console.log(sections) - - - }) - - w.on('add', (filePath) => { - fileAddedHandler(filePath, sections) - }) - - w.on('change', path => console.log(`File ${path} has been changed`)) - w.on('unlink', path => console.log(`File ${path} has been removed`)) -} - -function fileAddedHandler(filePath, array) { - let section, media - - let fp = filePath.replace(/^\.+/, '') - fp = path.parse(fp).dir.split(path.sep) - console.log(fp) - - // 5 is recurse 4 is not - console.log(fp[3], fp.length) - section = fp[3] - media = fp[4] - - console.log(media) -} - - -main() diff --git a/src/App.js b/src/App.js index 5237c52..6779a01 100644 --- a/src/App.js +++ b/src/App.js @@ -1,6 +1,5 @@ import { LitElement, css, html, unsafeCSS } from 'lit' import Router from './api/Router.js' -import { Task } from '@lit-labs/task' import MainCSS from './assets/styles/main.scss?inline' @@ -39,6 +38,8 @@ export class App extends LitElement { img.src = src this.dialogEl.appendChild(img) + detail.details = 'some details to add to the image to see if this aligns properly' + if (detail.details) { const div = document.createElement('div') const p = document.createElement('p') @@ -77,6 +78,14 @@ export class App extends LitElement { dialog { margin: auto; border: none; + outline: none; + display: grid; + grid-template-rows: minmax(0em, 1fr) auto; + max-height: calc(100vmin - 2em); + + > * { + margin-inline: auto; + } & div { padding-block-start: 1em; @@ -85,8 +94,8 @@ export class App extends LitElement { & img { display: block; - max-height: calc(100vmin - 2em); - max-width: calc(100vmin - 2em); + height: 100%; + object-fit: contain; } } diff --git a/src/api/Router.js b/src/api/Router.js index b008279..b75dffe 100644 --- a/src/api/Router.js +++ b/src/api/Router.js @@ -115,7 +115,7 @@ export default new Router({ title: 'Scores, Posters, Ephemera', short: 'images', icon: 'camera', - disabled: true, + disabled: false, plugins: [ lazy(() => import('../views/images.js')) ], diff --git a/src/components/VerticalCard.js b/src/components/VerticalCard.js index 83253e2..ed968e4 100644 --- a/src/components/VerticalCard.js +++ b/src/components/VerticalCard.js @@ -31,7 +31,7 @@ class VerticalCard extends LitElement { return html`
- +