diff --git a/.DS_Store b/.DS_Store new file mode 100644 index 0000000..2d20ba4 Binary files /dev/null and b/.DS_Store differ diff --git a/.idea/.gitignore b/.idea/.gitignore new file mode 100644 index 0000000..b58b603 --- /dev/null +++ b/.idea/.gitignore @@ -0,0 +1,5 @@ +# Default ignored files +/shelf/ +/workspace.xml +# Editor-based HTTP Client requests +/httpRequests/ diff --git a/.idea/inspectionProfiles/Project_Default.xml b/.idea/inspectionProfiles/Project_Default.xml new file mode 100644 index 0000000..ed6a004 --- /dev/null +++ b/.idea/inspectionProfiles/Project_Default.xml @@ -0,0 +1,10 @@ + + + + \ No newline at end of file diff --git a/.idea/marvel.iml b/.idea/marvel.iml new file mode 100644 index 0000000..24643cc --- /dev/null +++ b/.idea/marvel.iml @@ -0,0 +1,12 @@ + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/misc.xml b/.idea/misc.xml new file mode 100644 index 0000000..28a804d --- /dev/null +++ b/.idea/misc.xml @@ -0,0 +1,6 @@ + + + + + \ No newline at end of file diff --git a/.idea/modules.xml b/.idea/modules.xml new file mode 100644 index 0000000..53b27fa --- /dev/null +++ b/.idea/modules.xml @@ -0,0 +1,8 @@ + + + + + + + + \ No newline at end of file diff --git a/.idea/vcs.xml b/.idea/vcs.xml new file mode 100644 index 0000000..94a25f7 --- /dev/null +++ b/.idea/vcs.xml @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/index.html b/index.html new file mode 100644 index 0000000..9b2f948 --- /dev/null +++ b/index.html @@ -0,0 +1,67 @@ + + + + + + + + MARVEL CINEMATIC UNIVERSE + + + + + + + + + + + + + + + + + + + + + + + diff --git a/mycss.css b/mycss.css new file mode 100644 index 0000000..7cdd572 --- /dev/null +++ b/mycss.css @@ -0,0 +1,101 @@ +body{ + /* background-image:url("wallpaper.png"); + background-size:cover; + background-repeat:no-repeat;*/ + background-color: #202020; + color: #FFFFFF; +} +#phase1 { + /* width: 600px; */ + width: auto; + height: 1100px; + + background-color: rgb(248, 248, 248); + margin: auto +} +#phase2 { + /* width: 600px; */ + width: auto; + height: 1100px; + + background-color: rgb(248, 248, 248); + margin: auto +} +#phase3 { + /* width: 600px; */ + width: auto; + height: 1100px; + + background-color: rgb(248, 248, 248); + margin: auto +} +#characters{ + width: auto; + height: 1000px; + background-color: #202020; + margin: auto +} +#heroes{ + position: relative; + width: auto; + height: 1000px; + + background-color: #202020; + margin: auto +} +#avengers{ + width: auto; + height: 800px; + + background-color: #202020; + margin: auto +} +#villain{ + width: auto; + height: 900px; + + background-color: #202020; + margin: auto +} +#title_phase { + text-align: center; + font-family: 'Courier 10 Pitch', sans-serif; +} +.site-header{ + text-align: center; + font-family: 'Courier 10 Pitch', sans-serif; + font-weight: normal; + font-size: x-large; + background-color: #202020; + height: 165px; +} +.column { + float: left; + width: 33%; +} +#legend-container{ + padding: 5px; + +} +.relation { + display: inline-block; + width: 80px; + height: 17px; + margin-bottom: 6px; + font-size: x-large +} +.bg-light { + background-color: #FFFFFF!important; +} +.btn{ + font-family: 'Courier 10 Pitch', sans-serif; + font-weight: normal; + font-size: x-large; + + +} +.btn-light { + background-color: #FFFFFF; + color: #FA000B; + border-color: #FFFFFF; +} \ No newline at end of file diff --git a/scripts/main_2.js b/scripts/main_2.js new file mode 100644 index 0000000..8837fe4 --- /dev/null +++ b/scripts/main_2.js @@ -0,0 +1,1783 @@ +/********************************************************* DATA VARIABLES ************************************************/ +var nodes = [ + { + "id": "tonys", + "label": "Iron Man", + "movies": [ + "av1", + "av2", + "av3", + "ca3", + "hk1", + "im1", + "im2", + "im3", + "sm1" + ], + "type": "b", + "level": 1, + "img": "https://terrigen-cdn-dev.marvel.com/content/prod/1x/002irm_ons_crd_03.jpg" + }, + { + "id": "stever", + "label": "Captain America", + "movies": [ + "av1", + "av2", + "av3", + "ca1", + "ca2", + "ca3" + ], + "type": "b", + "level": 1, + "img": "https://terrigen-cdn-dev.marvel.com/content/prod/1x/003cap_ons_crd_03.jpg" + }, + { + "id": "bruceb", + "label": "Hulk", + "movies": [ + "av1", + "av2", + "av3", + "hk1", + "im3", + "th3" + ], + "type": "b", + "level": 1, + "img": "https://terrigen-cdn-dev.marvel.com/content/prod/1x/006hbb_ons_crd_03.jpg" + }, + { + "id": "thor", + "label": "Thor", + "movies": [ + "av1", + "av2", + "av3", + "th1", + "th2", + "th3", + "ds1" + ], + "type": "b", + "level": 1, + "img": "https://terrigen-cdn-dev.marvel.com/content/prod/1x/004tho_ons_crd_03.jpg" + }, + { + "id": "blackw", + "label": "Black Widow", + "movies": [ + "av1", + "av2", + "av3", + "ca2", + "ca3", + "im2" + ], + "type": "b", + "level": 1, + "img": "https://terrigen-cdn-dev.marvel.com/content/prod/1x/011blw_ons_crd_03.jpg" + }, + { + "id": "rhody", + "label": "War Machine", + "movies": [ + "av2", + "av3", + "ca3", + "im1", + "im2", + "im3" + ], + "type": "b", + "level": 1, + "img": "https://terrigen-cdn-dev.marvel.com/content/prod/1x/042wmr_ons_crd_03.jpg" + }, + { + "id": "hawke", + "label": "Hawkeye", + "movies": [ + "av1", + "av2", + "av3", + "ca3", + "th1" + ], + "type": "b", + "level": 1, + "img": "https://terrigen-cdn-dev.marvel.com/content/prod/1x/018hcb_ons_crd_02.jpg" + }, + { + "id": "falcon", + "label": "Falcon", + "movies": [ + "am1", + "av2", + "av3", + "ca2", + "ca3" + ], + "type": "b", + "level": 1, + "img": "https://terrigen-cdn-dev.marvel.com/content/prod/1x/014fal_ons_crd_02.jpg" + }, + { + "id": "vision", + "label": "Vision", + "movies": [ + "av2", + "av3", + "ca3" + ], + "type": "b", + "level": 1, + "img": "https://terrigen-cdn-dev.marvel.com/content/prod/1x/013vis_ons_crd_01-1.jpg" + }, + { + "id": "wandam", + "label": "Wanda Maximoff", + "movies": [ + "av2", + "av3", + "ca3" + ], + "type": "b", + "level": 1, + "img": "https://terrigen-cdn-dev.marvel.com/content/prod/1x/012scw_ons_crd_02.jpg" + }, + { + "id": "heimdall", + "label": "Heimdall", + "movies": [ + "av2", + "th1", + "th2", + "th3" + ], + "type": "b", + "level": 1, + "img": "https://terrigen-cdn-dev.marvel.com/content/prod/1x/116hdl_ons_crd_01-1.jpg" + }, + { + "id": "nickf", + "label": "Nick Fury", + "movies": [ + "av1", + "av2", + "ca1", + "ca2", + "im1", + "im2", + "th1" + ], + "type": "b", + "level": 1, + "img": "https://terrigen-cdn-dev.marvel.com/content/prod/1x/284nfy_ons_crd_01.jpg" + }, + { + "id": "loki", + "label": "Loki", + "movies": [ + "av1", + "av3", + "th1", + "th2", + "th3" + ], + "type": "b", + "level": 1, + "img": "https://terrigen-cdn-dev.marvel.com/content/prod/1x/017lok_ons_crd_02.jpg" + }, + { + "id": "bucky", + "label": "Winter Soldier", + "movies": [ + "av3", + "bp1", + "ca1", + "ca2", + "ca3" + ], + "type": "b", + "level": 1, + "img": "https://terrigen-cdn-dev.marvel.com/content/prod/1x/015wsb_ons_crd_02.jpg" + }, + { + "id": "tchalla", + "label": "Black Panther", + "movies": [ + "av3", + "bp1", + "ca3" + ], + "type": "b", + "level": 1, + "img": "https://terrigen-cdn-dev.marvel.com/content/prod/1x/007blp_ons_crd_02.jpg" + }, + { + "id": "peterq", + "label": "Star-Lord", + "movies": [ + "av3", + "gotg1", + "gotg2" + ], + "type": "b", + "level": 1, + "img": "https://terrigen-cdn-dev.marvel.com/content/prod/1x/021slq_ons_crd_02.jpg" + }, + { + "id": "gamora", + "label": "Gamora", + "movies": [ + "av3", + "gotg1", + "gotg2" + ], + "type": "b", + "level": 1, + "img": "https://terrigen-cdn-dev.marvel.com/content/prod/1x/022gam_ons_crd_01-1.jpg" + }, + { + "id": "drax", + "label": "Drax", + "movies": [ + "av3", + "gotg1", + "gotg2" + ], + "type": "b", + "level": 1, + "img": "https://terrigen-cdn-dev.marvel.com/content/prod/1x/025drx_ons_crd_02.jpg" + }, + { + "id": "rocket", + "label": "Rocket", + "movies": [ + "av3", + "gotg1", + "gotg2" + ], + "type": "b", + "level": 1, + "img": "https://terrigen-cdn-dev.marvel.com/content/prod/1x/023rra_ons_crd_03.jpg" + }, + { + "id": "groota", + "label": "Groot", + "movies": [ + "av3", + "gotg1", + "gotg2" + ], + "type": "b", + "level": 1, + "img": "https://terrigen-cdn-dev.marvel.com/content/prod/1x/024grt_ons_crd_01-1.jpg" + }, + { + "id": "nebula", + "label": "Nebula", + "movies": [ + "av3", + "gotg1", + "gotg2" + ], + "type": "b", + "level": 1, + "img": "https://terrigen-cdn-dev.marvel.com/content/prod/1x/043neb_ons_crd_03.jpg" + }, + { + "id": "mantis", + "label": "Mantis", + "movies": [ + "av3", + "gotg2" + ], + "type": "b", + "level": 1, + "img": "https://terrigen-cdn-dev.marvel.com/content/prod/1x/045mts_ons_crd_02.jpg" + }, + { + "id": "scottl", + "label": "Ant-Man", + "movies": [ + "am1", + "av3", + "ca3" + ], + "type": "b", + "level": 1, + "img": "https://terrigen-cdn-dev.marvel.com/content/prod/1x/010ant_ons_crd_04.jpg" + }, + { + "id": "stephens", + "label": "Doctor Strange", + "movies": [ + "av3", + "ds1", + "th3" + ], + "type": "b", + "level": 1, + "img": "https://terrigen-cdn-dev.marvel.com/content/prod/1x/009drs_ons_crd_02.jpg" + }, + { + "id": "peterp", + "label": "Spider-Man", + "movies": [ + "av3", + "ca3", + "sm1" + ], + "type": "b", + "level": 1, + "img": "https://terrigen-cdn-dev.marvel.com/content/prod/1x/005smp_ons_crd_02.jpg" + }, + { + "id": "im1", + "level": 2, + "label": "Iron Man", + "type": "a", + "img": "https://graphics.straitstimes.com/STI/STIMEDIA/Interactives/2018/04/marvel-cinematic-universe-whos-who-interactive/images_doc/marvel/nodeIcons/im1.png", + "phase": "1" + }, + { + "id": "hk1", + "level": 2, + "label": "The Incredible Hulk", + "type": "a", + "img": "https://graphics.straitstimes.com/STI/STIMEDIA/Interactives/2018/04/marvel-cinematic-universe-whos-who-interactive/images_doc/marvel/nodeIcons/hk1.png", + "phase": "1" + }, + { + "id": "im2", + "level": 2, + "label": "Iron Man 2", + "type": "a", + "img": "https://graphics.straitstimes.com/STI/STIMEDIA/Interactives/2018/04/marvel-cinematic-universe-whos-who-interactive/images_doc/marvel/nodeIcons/im2.png", + "phase": "1" + }, + { + "id": "th1", + "level": 2, + "label": "Thor", + "type": "a", + "img": "https://graphics.straitstimes.com/STI/STIMEDIA/Interactives/2018/04/marvel-cinematic-universe-whos-who-interactive/images_doc/marvel/nodeIcons/th1.png", + "phase": "1" + }, + { + "id": "ca1", + "level": 2, + "label": "Captain America: The First Avenger", + "type": "a", + "img": "https://graphics.straitstimes.com/STI/STIMEDIA/Interactives/2018/04/marvel-cinematic-universe-whos-who-interactive/images_doc/marvel/nodeIcons/ca1.png", + "phase": "1" + }, + { + "id": "ca2", + "level": 2, + "label": "Captain America: The Winter Soldier", + "type": "a", + "img": "https://graphics.straitstimes.com/STI/STIMEDIA/Interactives/2018/04/marvel-cinematic-universe-whos-who-interactive/images_doc/marvel/nodeIcons/ca2.png", + "phase": "2" + }, + { + "id": "av1", + "level": 2, + "label": "Marvel's The Avengers", + "type": "a", + "img": "https://graphics.straitstimes.com/STI/STIMEDIA/Interactives/2018/04/marvel-cinematic-universe-whos-who-interactive/images_doc/marvel/nodeIcons/av1.png", + "phase": "1" + }, + + { + "id": "th3", + "level": 2, + "label": "Thor: Ragnarok", + "type": "a", + "img": "https://graphics.straitstimes.com/STI/STIMEDIA/Interactives/2018/04/marvel-cinematic-universe-whos-who-interactive/images_doc/marvel/nodeIcons/th3.png", + "phase": "3" + }, + { + "id": "th2", + "level": 2, + "label": "Thor: The Dark World", + "type": "a", + "img": "https://graphics.straitstimes.com/STI/STIMEDIA/Interactives/2018/04/marvel-cinematic-universe-whos-who-interactive/images_doc/marvel/nodeIcons/th2.png", + "phase": "2" + }, + { + "id": "gotg1", + "level": 2, + "label": "Guardians Of The Galaxy", + "type": "a", + "img": "https://graphics.straitstimes.com/STI/STIMEDIA/Interactives/2018/04/marvel-cinematic-universe-whos-who-interactive/images_doc/marvel/nodeIcons/gotg1.png", + "phase": "2" + }, + { + "id": "av2", + "level": 2, + "label": "Avengers: Age Of Ultron", + "type": "a", + "img": "https://graphics.straitstimes.com/STI/STIMEDIA/Interactives/2018/04/marvel-cinematic-universe-whos-who-interactive/images_doc/marvel/nodeIcons/av2.png", + "phase": "2" + }, + + { + "id": "ca3", + "level": 2, + "label": "Captain America: Civil War", + "type": "a", + "img": "https://graphics.straitstimes.com/STI/STIMEDIA/Interactives/2018/04/marvel-cinematic-universe-whos-who-interactive/images_doc/marvel/nodeIcons/ca3.png", + "phase": "3" + }, + { + "id": "im3", + "level": 2, + "label": "Iron Man 3", + "type": "a", + "img": "https://graphics.straitstimes.com/STI/STIMEDIA/Interactives/2018/04/marvel-cinematic-universe-whos-who-interactive/images_doc/marvel/nodeIcons/im3.png", + "phase": "2" + }, + { + "id": "ds1", + "level": 2, + "label": "Doctor Strange", + "type": "a", + "img": "https://graphics.straitstimes.com/STI/STIMEDIA/Interactives/2018/04/marvel-cinematic-universe-whos-who-interactive/images_doc/marvel/nodeIcons/ds1.png", + "phase": "3" + }, + { + "id": "gotg2", + "level": 2, + "label": "Guardians Of The Galaxy Vol. 2", + "type": "a", + "img": "https://graphics.straitstimes.com/STI/STIMEDIA/Interactives/2018/04/marvel-cinematic-universe-whos-who-interactive/images_doc/marvel/nodeIcons/gotg2.png", + "phase": "3" + }, + + { + "id": "am1", + "level": 2, + "label": "Ant-Man", + "type": "a", + "img": "https://graphics.straitstimes.com/STI/STIMEDIA/Interactives/2018/04/marvel-cinematic-universe-whos-who-interactive/images_doc/marvel/nodeIcons/am1.png", + "phase": "2" + }, + { + "id": "bp1", + "level": 2, + "label": "Black Panther", + "type": "a", + "img": "https://graphics.straitstimes.com/STI/STIMEDIA/Interactives/2018/04/marvel-cinematic-universe-whos-who-interactive/images_doc/marvel/nodeIcons/bp1.png", + "phase": "3" + }, + { + "id": "av3", + "level": 2, + "label": "Avengers: Infinity War", + "type": "a", + "img": "https://graphics.straitstimes.com/STI/STIMEDIA/Interactives/2018/04/marvel-cinematic-universe-whos-who-interactive/images_doc/marvel/nodeIcons/av3.png", + "phase": "3" + }, + { + "id": "sm1", + "level": 2, + "label": "Spider-Man: Homecoming", + "type": "a", + "img": "https://graphics.straitstimes.com/STI/STIMEDIA/Interactives/2018/04/marvel-cinematic-universe-whos-who-interactive/images_doc/marvel/nodeIcons/sm1.png", + "phase": "3" + } + +]; + +var links = [ + { + "source": "av1", + "target": "tonys", + "color": "#FA000B" + }, + { + "source": "av2", + "target": "tonys", + "color": "#9CDDC8" + }, + { + "source": "av3", + "target": "tonys", + "color": "#BE5ADF" + }, + { + "source": "ca3", + "target": "tonys", + "color": "#BE5ADF" + }, + { + "source": "hk1", + "target": "tonys", + "color": "#FA000B" + }, + { + "source": "av3", + "target": "hawke", + "color": "#BE5ADF" + }, + { + "source": "im1", + "target": "tonys", + "color": "#FA000B" + }, + { + "source": "im2", + "target": "tonys", + "color": "#FA000B" + }, + { + "source": "im3", + "target": "tonys", + "color": "#9CDDC8" + }, + { + "source": "sm1", + "target": "tonys", + "color": "#BE5ADF" + }, + { + "source": "av1", + "target": "stever", + "color": "#FA000B" + }, + { + "source": "av2", + "target": "stever", + "color": "#9CDDC8" + }, + { + "source": "av3", + "target": "stever", + "color": "#BE5ADF" + }, + { + "source": "ca1", + "target": "stever", + "color": "#FA000B" + }, + { + "source": "ca2", + "target": "stever", + "color": "#9CDDC8" + }, + { + "source": "ca3", + "target": "stever", + "color": "#BE5ADF" + }, + { + "source": "av1", + "target": "bruceb", + "color": "#FA000B" + }, + { + "source": "av2", + "target": "bruceb", + "color": "#9CDDC8" + }, + { + "source": "av3", + "target": "bruceb", + "color": "#BE5ADF" + }, + { + "source": "hk1", + "target": "bruceb", + "color": "#FA000B" + }, + { + "source": "im3", + "target": "bruceb", + "color": "#9CDDC8" + }, + { + "source": "th3", + "target": "bruceb", + "color": "#BE5ADF" + }, + { + "source": "av1", + "target": "thor", + "color": "#FA000B" + }, + { + "source": "av2", + "target": "thor", + "color": "#9CDDC8" + }, + { + "source": "av3", + "target": "thor", + "color": "#BE5ADF" + }, + { + "source": "th1", + "target": "thor", + "color": "#FA000B" + }, + { + "source": "th2", + "target": "thor", + "color": "#9CDDC8" + }, + { + "source": "th3", + "target": "thor", + "color": "#BE5ADF" + }, + { + "source": "ds1", + "target": "thor", + "color": "#BE5ADF" + }, + { + "source": "av1", + "target": "blackw", + "color": "#FA000B" + }, + { + "source": "av2", + "target": "blackw", + "color": "#9CDDC8" + }, + { + "source": "av3", + "target": "blackw", + "color": "#BE5ADF" + }, + { + "source": "ca2", + "target": "blackw", + "color": "#9CDDC8" + }, + { + "source": "ca3", + "target": "blackw", + "color": "#BE5ADF" + }, + { + "source": "im2", + "target": "blackw", + "color": "#FA000B" + }, + { + "source": "av2", + "target": "rhody", + "color": "#9CDDC8" + }, + { + "source": "av3", + "target": "rhody", + "color": "#BE5ADF" + }, + { + "source": "ca3", + "target": "rhody", + "color": "#BE5ADF" + }, + { + "source": "im1", + "target": "rhody", + "color": "#FA000B" + }, + { + "source": "im2", + "target": "rhody", + "color": "#FA000B" + }, + { + "source": "im3", + "target": "rhody", + "color": "#9CDDC8" + }, + { + "source": "av1", + "target": "hawke", + "color": "#FA000B" + }, + { + "source": "av2", + "target": "hawke", + "color": "#9CDDC8" + }, + { + "source": "ca3", + "target": "hawke", + "color": "#BE5ADF" + }, + { + "source": "th1", + "target": "hawke", + "color": "#FA000B" + }, + { + "source": "av1", + "target": "nickf", + "color": "#FA000B" + }, + { + "source": "av2", + "target": "nickf", + "color": "#9CDDC8" + }, + { + "source": "ca1", + "target": "nickf", + "color": "#FA000B" + }, + { + "source": "ca2", + "target": "nickf", + "color": "#9CDDC8" + }, + { + "source": "im1", + "target": "nickf", + "color": "#FA000B" + }, + { + "source": "im2", + "target": "nickf", + "color": "#FA000B" + }, + { + "source": "th1", + "target": "nickf", + "color": "#FA000B" + }, + { + "source": "am1", + "target": "falcon", + "color": "#9CDDC8" + }, + { + "source": "av2", + "target": "falcon", + "color": "#9CDDC8" + }, + { + "source": "av3", + "target": "falcon", + "color": "#BE5ADF" + }, + { + "source": "ca2", + "target": "falcon", + "color": "#9CDDC8" + }, + { + "source": "ca3", + "target": "falcon", + "color": "#BE5ADF" + }, + { + "source": "av2", + "target": "vision", + "color": "#9CDDC8" + }, + { + "source": "av3", + "target": "vision", + "color": "#BE5ADF" + }, + { + "source": "ca3", + "target": "vision", + "color": "#BE5ADF" + }, + { + "source": "av2", + "target": "wandam", + "color": "#9CDDC8" + }, + { + "source": "av3", + "target": "wandam", + "color": "#BE5ADF" + }, + { + "source": "ca3", + "target": "wandam", + "color": "#BE5ADF" + }, + { + "source": "av2", + "target": "heimdall", + "color": "#9CDDC8" + }, + { + "source": "th1", + "target": "heimdall", + "color": "#FA000B" + }, + { + "source": "th2", + "target": "heimdall", + "color": "#9CDDC8" + }, + { + "source": "th3", + "target": "heimdall", + "color": "#BE5ADF" + }, + { + "source": "av1", + "target": "loki", + "color": "#FA000B" + }, + { + "source": "av3", + "target": "loki", + "color": "#BE5ADF" + }, + { + "source": "th1", + "target": "loki", + "color": "#FA000B" + }, + { + "source": "th2", + "target": "loki", + "color": "#9CDDC8" + }, + { + "source": "th3", + "target": "loki", + "color": "#BE5ADF" + }, + { + "source": "av3", + "target": "bucky", + "color": "#BE5ADF" + }, + { + "source": "bp1", + "target": "bucky", + "color": "#BE5ADF" + }, + { + "source": "ca1", + "target": "bucky", + "color": "#FA000B" + }, + { + "source": "ca2", + "target": "bucky", + "color": "#9CDDC8" + }, + { + "source": "ca3", + "target": "bucky", + "color": "#BE5ADF" + }, + { + "source": "av3", + "target": "tchalla", + "color": "#BE5ADF" + }, + { + "source": "bp1", + "target": "tchalla", + "color": "#BE5ADF" + }, + { + "source": "ca3", + "target": "tchalla", + "color": "#BE5ADF" + }, + { + "source": "av3", + "target": "peterq", + "color": "#BE5ADF" + }, + { + "source": "gotg1", + "target": "peterq", + "color": "#9CDDC8" + }, + { + "source": "gotg2", + "target": "peterq", + "color": "#BE5ADF" + }, + { + "source": "av3", + "target": "gamora", + "color": "#BE5ADF" + }, + { + "source": "gotg1", + "target": "gamora", + "color": "#9CDDC8" + }, + { + "source": "gotg2", + "target": "gamora", + "color": "#BE5ADF" + }, + { + "source": "av3", + "target": "drax", + "color": "#BE5ADF" + }, + { + "source": "gotg1", + "target": "drax", + "color": "#9CDDC8" + }, + { + "source": "gotg2", + "target": "drax", + "color": "#BE5ADF" + }, + { + "source": "av3", + "target": "rocket", + "color": "#BE5ADF" + }, + { + "source": "gotg1", + "target": "rocket", + "color": "#9CDDC8" + }, + { + "source": "gotg2", + "target": "rocket", + "color": "#BE5ADF" + }, + { + "source": "av3", + "target": "groota", + "color": "#BE5ADF" + }, + { + "source": "gotg1", + "target": "groota", + "color": "#9CDDC8" + }, + { + "source": "gotg2", + "target": "groota", + "color": "#BE5ADF" + }, + { + "source": "av3", + "target": "nebula", + "color": "#BE5ADF" + }, + { + "source": "gotg1", + "target": "nebula", + "color": "#9CDDC8" + }, + { + "source": "gotg2", + "target": "nebula", + "color": "#BE5ADF" + }, + { + "source": "av3", + "target": "mantis", + "color": "#BE5ADF" + }, + { + "source": "gotg2", + "target": "mantis", + "color": "#BE5ADF" + }, + { + "source": "am1", + "target": "scottl", + "color": "#9CDDC8" + }, + { + "source": "av3", + "target": "scottl", + "color": "#BE5ADF" + }, + { + "source": "ca3", + "target": "scottl", + "color": "#BE5ADF" + }, + { + "source": "av3", + "target": "stephens", + "color": "#BE5ADF" + }, + { + "source": "ds1", + "target": "stephens", + "color": "#BE5ADF" + }, + { + "source": "th3", + "target": "stephens", + "color": "#BE5ADF" + }, + { + "source": "av3", + "target": "peterp", + "color": "#BE5ADF" + }, + { + "source": "ca3", + "target": "peterp", + "color": "#BE5ADF" + }, + { + "source": "sm1", + "target": "peterp", + "color": "#BE5ADF" + } +]; + +/********************************************************* VARIABLES ************************************************/ + +var svg = d3.select('svg'); +var HERO = 'b' +var MOVIE = 'a' + +var neighbors; +var resetted_graph = true; +var selected_nodes = []; + +var labels = []; +var label_links = []; +var labels_g; + +var nei = []; +var lista = []; +var link_ok = []; +var clicked = false + +var text_elems; +var node_elems; +var rect_elems; +var link_elems = svg.append("g") + .attr("class", "links") + .selectAll("line") + .data(links) + .enter() + .append("line") + .attr('class', function (d) { + return d.source + d.target + }) + .attr("stroke-width", 1) + .attr("stroke", "rgba(220, 220, 220, 0.2)") + +var linkForce = d3 + .forceLink() + .id(function (link) { + return link.id + }) + .strength(function (link) { + return 0 + }) + +var simulation = d3.forceSimulation(nodes) + .force('link', linkForce) + .force('charge', d3.forceManyBody().strength(-50)) + .force("collide", d3.forceCollide().radius(15).iterations(10)) + .force("r", d3.forceRadial(function (d) { + if (d.type === MOVIE) + return 200 + return 300 + })) + +var dragDrop = d3.drag().on('start', function (node) { + node.fx = node.x + node.fy = node.y +}).on('drag', function (node) { + simulation.alphaTarget(1).restart() + node.fx = d3.event.x + node.fy = d3.event.y +}).on('end', function (node) { + if (!d3.event.active) { + simulation.alphaTarget(0) + } + node.fx = null + node.fy = null +}) + + +svg.call( + d3.zoom() + .scaleExtent([.1, 4]) + .on("zoom", function () { + svg.attr("transform", d3.event.transform); + }) +); + +/********************************************************* FUNCTIONS ************************************************/ + +function create_defs_links() { + var hero_defs = d3.select('svg').append("defs"); + + let indice = 0; + for (key in nodes) { + var pattern = hero_defs.append('pattern') + .attr('id', "image" + indice.toString()) + .attr('x', '0%') + .attr('y', '0%') + .attr('height', '100%') + .attr('width', '100%') + .attr('viewBox', "0 0 512 512"); + + var image = pattern.append('image') + .attr('x', '0%') + .attr('y', '0%') + .attr('height', '512') + .attr('width', '512') + .attr('xlink:href', nodes[key].img); + + let label = { + id: nodes[key].id + '_label', + radius: 5, + label: nodes[key].label, + type: nodes[key].type + } + + labels.push(label) + + label_links.push({ + source: nodes[key], + target: label, + strenght: 1 + }) + + indice++; + } +} + + +function get_node_neighbors(node) { + let neighbors = [] + neighbors.push(node) + links.forEach(function (d) { + if (d.target.id === node.id) + neighbors.push(d.source) + else if (d.source.id === node.id) + neighbors.push(d.target) + }) + return neighbors +} + + +function bool_link_neighbor(node, link) { + return link.target.id === node.id || link.source.id === node.id +} + + +function get_image(node, neighbors) { + return "url(#image" + nodes.indexOf(node) + ")" +} + + +function get_link_color(node, link) { + if (!link_ok.includes(link)) { + if (bool_link_neighbor(node, link)) { + //console.log(node) + link_ok.push(link) + return link.color + } + return 'transparent' + } else { + return link.color + } +} + + +function get_clean_link_color(node, link) { + if (bool_link_neighbor(node, link)) + return link.color + return 'transparent' +} + + +function reset_link_color(node, link) { + return 'rgba(220, 220, 220, 0.2)' +} + + +function create_simulation(type, x, y) { + simulation = d3.forceSimulation() + .force('link', linkForce) + .force('charge', d3.forceManyBody().strength(-50)) + .force("collide", d3.forceCollide().radius(15).iterations(10)) + .force("r", d3.forceRadial(function (d) { + if (d.type === type) { + if (x !== undefined) + return x; + return 200; + } + if (y !== undefined) + return y; + return 300 + })) + generate_simulation() + simulation.force("link").links(links); +} + + +function select_node(selectedNode, visible) { + selected_nodes.push(selectedNode) + /*if (selected_nodes.length === 3) + selected_nodes.shift()*/ + + neighbors = get_node_neighbors(selectedNode) + + /*if (selectedNode.type === HERO) + create_simulation(HERO) + if (selectedNode.type === MOVIE) + create_simulation(MOVIE)*/ + + node_elems + .attr('fill', function (node) { + return get_image(node, neighbors) + }) + .attr('r', 15) + + text_elems + .attr("font-size", function (node) { + return 12 + }) + + link_elems + .attr('stroke', function (link) { + return get_link_color(selectedNode, link) + }) +} + + +/*function create_useful_links() { + let tutti = [] + let link + for (var node in nei) { + let app = get_node_neighbors(nei[node]) + for (var elem in app) + tutti.push([app[elem]]) + } + + svg.select(".links") + .selectAll("line") + .data(tutti) + .enter() + .append("line") + .attr('class', function (d) { + return d.source + d.target + }) + .attr("stroke-width", 1) + .attr("stroke", function (d) { + + if (get_links(d) !== undefined) { + console.log(get_links(d).color) + return get_links(d).color + } + }) + .attr('x1', function (d) { + if (get_links(d) !== undefined) + return get_links(d).source.x + }) + .attr('y1', function (d) { + if (get_links(d) !== undefined) + return get_links(d).source.y + }) + .attr('x2', function (d) { + if (get_links(d) !== undefined) + return get_links(d).target.x + }) + .attr('y2', function (d) { + if (get_links(d) !== undefined) + return get_links(d).target.y + }) + +}*/ + + +/*function get_links(node) { + let valore + for (var link in links) { + //for (var node in nei) { + //console.log(links[link].target.id) + if (links[link].source.id === node.id || links[link].target.id === node.id) { + console.log(links[link]) + valore = links[link] + } + //} + } + console.log(valore) + return valore +}*/ + + +function create_labels() { + labels_g = + svg.append("g") + .attr("class", "labels") + + rect_elems = + labels_g.selectAll("circle") + .data(nodes) + .enter() + .append("circle") + .attr('id', function (d, i) { + return 'label_circle' + i + }) + + text_elems = + labels_g.selectAll('text') + .data(nodes) + .enter() + .append("text") + .attr('id', function (d, i) { + return 'label' + i + }) + .text(function (d) { + return d.label; + }) + .attr("font-size", 12) + .attr("fill", '#F7AF63') +} + + +function create_useful_labels(lista, i) { + + labels_g = + svg.append("g") + .attr("class", "labels") + + rect_elems = + labels_g.selectAll("circle") + .data(lista) + .enter() + .append("circle") + .attr('id', function (d, i) { + + return 'label_circle' + i + }) + + text_elems = + labels_g.selectAll('text') + .data(lista) + .enter() + .append("text") + .attr('id', function (d, i) { + return 'label' + d.index + }) + .text(function (d) { + //console.log(d) + return d.label; + }) + .attr("font-size", 12) + .attr("fill", 'white') +} + + +function create_nodeElements() { + node_elems = + svg.append("g") + .attr("class", "nodes") + .selectAll("circle") + .data(nodes) + .enter() + .append("circle") + .attr('id', function (d, i) { + return 'nodeElement' + i + }) + .attr('class', 'radius') + .attr("r", 15) + .attr("fill", get_image) + .attr('stroke', 'steelblue') + .attr('stroke-width', '0.75') + .call(dragDrop) + .on("mouseover", function (d, i) { + highlight_node(nei, d, i) + }) + .on("mouseout", function (d, i) { + reset_highlighted_node(d, i) + }) + .on('click', function (d, i) { + + if (nei.indexOf(d) < 0) + nei.push(d) + light_ring(d) + }) + + var button = d3.select('#vai') + /*.attr("class", "bottone") + .append('rect') + .attr('id', 'vai') + .attr('x', 400) + .attr('y', 400) + .attr('height', 40) + .attr('width', 40) + .attr('fill', '#FFFFFF')*/ + .on('click', function (d, i) { + clicked = true + //if (nei.length > 1) { + d3.selectAll('line').attr('stroke', 'transparent') + d3.selectAll('.labels').remove() + link_ok = [] + + for (var elem in nei) { + let vicini = get_node_neighbors(nei[elem]) + for (var x in vicini) + lista.push(vicini[x]) + } + + create_useful_labels(lista, i) + /*text_elems + .attr('style', 'visibility: visible;') + .attr("font-size", function (node) { + if (lista.includes(node)) { + console.log(node) + return 12 + } + return 0 + })*/ + + for (var nodo in nei) { + select_node(nei[nodo], false) + } + console.log(nei) + if (nei[0].type === HERO) + create_simulation(HERO) + if (nei[0].type === MOVIE) + create_simulation(MOVIE) + + /*} else if (nei.length === 1) { + //nei = get_node_neighbors(d) + d3.selectAll('.labels').remove() + create_useful_single_labels(nei[0], i) + text_elems + .attr('style', 'visibility: visible; white-space: pre-line;') + .attr("font-size", function (node) { + if (get_node_neighbors(nei[0]).includes(node)) return 12 + return 0 + }) + select_single_node(nei[0], false) + }*/ + nei = [] + lista = [] + }) + //nei = [] + +} + + +/*function create_useful_single_labels(d, i) { + neighbors = get_node_neighbors(d) + + labels_g = + svg.append("g") + .attr("class", "labels") + + rect_elems = + labels_g.selectAll("circle") + .data(neighbors) + .enter() + .append("circle") + .attr('id', function (d, i) { + return 'label_circle' + i + }) + + text_elems = + labels_g.selectAll('text') + .data(neighbors) + .enter() + .append("text") + .attr('id', function (d, i) { + return 'label' + i + }) + .text(function (d) { + return d.label; + }) + .attr("font-size", 12) + .attr("fill", 'white') +}*/ + + +/*function select_single_node(selectedNode, visible) { + selected_nodes.push(selectedNode) + if (selected_nodes.length === 3) + selected_nodes.shift() + + resetted_graph = false + neighbors = get_node_neighbors(selectedNode) + + if (selectedNode.type === HERO) + create_simulation(HERO) + else + create_simulation(MOVIE) + + node_elems + .attr('fill', function (node) { + return get_image(node, neighbors) + }) + .attr('r', 15) + + text_elems + .attr("font-size", function (node) { + if (neighbors.includes(node)) return 12 + return 0 + }) + + link_elems + .attr('stroke', function (link) { + return get_clean_link_color(selectedNode, link) + }) +}*/ + + +function light_ring(node) { + + node_elems + /*.attr('r', function (node) { + if (nei.includes(node)){ + console.log(nei, node) + return 25 + } + return 15 + })*/ + .attr('stroke', function (node) { + if (nei.includes(node)) + return 'red' + return 'steelblue' + }) + .attr('stroke-width', function (node) { + if (nei.includes(node)) + return '1.0' + return '0.75' + }) + + /*text_elems + .attr("x", function (node) { + if (nei.includes(node)) + return node.x + 35 + return node.x + 20 + })*/ +} + + +function create_node_label(nei, d) { + var current = [d] + + if (nei.indexOf(d) < 0) { + svg.select('.labels') + .data(current) + .append("text") + .attr('id', function (d, i) { + return 'label' + '1000' + }) + .text(function (d) { + return d.label; + }) + .attr("font-size", 12) + .attr("fill", 'white') + .attr('x', function (d) { + return d.x + 20 + }) + .attr('y', function (d) { + return d.y + }) + } +} + + +function highlight_node(nei, d, i) { + if (clicked === false) + link_elems.attr('stroke', 'transparent') + + neighbors = get_node_neighbors(d) + + if (selected_nodes.length === 0) { + simulation.force("collide", d3.forceCollide().radius(20).iterations(10)) + + node_elems + .attr('fill', function (node) { + return get_image(node, neighbors) + }) + + text_elems + .attr('style', 'visibility: visible;') + .attr("font-size", function (node) { + if (neighbors.includes(node)) return 18 + return 0 + }) + .attr("x", function (node) { + return node.x + 25 + }) + + rect_elems + .attr('style', 'visibility: visible;') + + node_elems + .attr('r', function (node) { + if (neighbors.includes(node)) return 20 + return 0 + }) + + link_elems + .attr('stroke', function (link) { + return get_clean_link_color(d, link) + }) + } else { + create_node_label(nei, d) + } + return 0 +} + + +function reset_highlighted_node(d, i) { + node_elems.attr('r', 15) + + if (selected_nodes.length === 0) { + d3.select('#label' + i).style('fill', '#FFFFFF') + + text_elems + .attr("font-size", 12) + .attr('x', function (node) { + if (nei.includes(node)) + return node.x + 25 + return node.x + 20 + }) + + link_elems + .attr('stroke', function (d) { + return reset_link_color(d) + }) + } else if (!neighbors.includes(d)) { + svg.selectAll('#label1000').remove() + } else { + svg.selectAll('#label1000').remove() + } +} + + +function generate_simulation() { + simulation + .nodes(nodes) + .on('tick', () => { + node_elems + .attr('cx', function (node) { + return node.x + }) + .attr('cy', function (node) { + return node.y + }) + + text_elems + .attr('x', function (node) { + return node.x + 20 + }) + .attr('y', function (node) { + return node.y + }) + + rect_elems + .attr('cx', function (node) { + return node.x + 15 + }) + .attr('cy', function (node) { + return node.y + }) + + link_elems + .attr('x1', function (link) { + return link.source.x + }) + .attr('y1', function (link) { + return link.source.y + }) + .attr('x2', function (link) { + return link.target.x + }) + .attr('y2', function (link) { + return link.target.y + }) + }) + +} + + +var logo = d3.select('#logo'); +logo.on('click', function () { + + svg.selectAll('g').remove() + svg.selectAll('defs').remove() + + link_elems = svg.append("g") + .attr("class", "links") + .selectAll("line") + .data(links) + .enter() + .append("line") + .attr("stroke-width", 1) + .attr("stroke", "rgba(220, 220, 220, 0.2)") + + + var linkForce = d3 + .forceLink() + .id(function (link) { + return link.id + }) + .strength(function (link) { + return 0 + }) + + var simulation = d3.forceSimulation(nodes) + .force('link', linkForce) + .force('charge', d3.forceManyBody().strength(-50)) + .force("collide", d3.forceCollide().radius(15).iterations(10)) + .force("r", d3.forceRadial(function (d) { + if (d.type === MOVIE) + return 200 + return 300 + })) + + var dragDrop = d3.drag().on('start', function (node) { + node.fx = node.x + node.fy = node.y + }).on('drag', function (node) { + simulation.alphaTarget(1).restart() + node.fx = d3.event.x + node.fy = d3.event.y + }).on('end', function (node) { + if (!d3.event.active) { + simulation.alphaTarget(0) + } + node.fx = null + node.fy = null + }) + + selected_nodes = [] + nei = [] + neighbors = [] + lista = [] + clicked = false + + create_defs_links(); + create_nodeElements(); + create_labels(); + + generate_simulation(); + simulation.force("link").links(links); +}) + +/********************************************************* MAIN ************************************************/ + +create_defs_links() +create_nodeElements(); +create_labels(); + +generate_simulation(); +simulation.force("link").links(links); diff --git a/static/Marvel's_Avengers_Assemble_opening_logo.png b/static/Marvel's_Avengers_Assemble_opening_logo.png new file mode 100644 index 0000000..2a7ee4d Binary files /dev/null and b/static/Marvel's_Avengers_Assemble_opening_logo.png differ diff --git a/static/infinity_gauntlet_png_by_stark3879_dcqnxuc-fullview.png b/static/infinity_gauntlet_png_by_stark3879_dcqnxuc-fullview.png new file mode 100644 index 0000000..942ddf9 Binary files /dev/null and b/static/infinity_gauntlet_png_by_stark3879_dcqnxuc-fullview.png differ diff --git a/static/logos/marvel.png b/static/logos/marvel.png new file mode 100644 index 0000000..adf4884 Binary files /dev/null and b/static/logos/marvel.png differ diff --git a/static/logos/marvel_logo.png b/static/logos/marvel_logo.png new file mode 100644 index 0000000..ec6edac Binary files /dev/null and b/static/logos/marvel_logo.png differ diff --git a/static/logos/marvel_rit.png b/static/logos/marvel_rit.png new file mode 100644 index 0000000..b557dd9 Binary files /dev/null and b/static/logos/marvel_rit.png differ