summaryrefslogtreecommitdiff
path: root/frontend
diff options
context:
space:
mode:
Diffstat (limited to 'frontend')
-rw-r--r--frontend/site/projects/museum/constants.js40
-rw-r--r--frontend/site/projects/museum/views/nav.overlay.js2
-rw-r--r--frontend/site/projects/museum/views/petros.nav.css15
-rw-r--r--frontend/site/projects/museum/views/petros.nav.js101
4 files changed, 150 insertions, 8 deletions
diff --git a/frontend/site/projects/museum/constants.js b/frontend/site/projects/museum/constants.js
index e9bb4f4..ac73faf 100644
--- a/frontend/site/projects/museum/constants.js
+++ b/frontend/site/projects/museum/constants.js
@@ -10,23 +10,31 @@ export const ARTISTS = {
petros: {
name: "Petros Moris",
location: {
- en: "Athens, Greece",
- de: "Athens, Greece",
+ en: "Abandoned textile factory, Laurium, Greece",
+ de: "Verlassene Textilfabrik, Laurium, Greece",
},
start: "petros-1",
- homepage: "http://petrosmoris.com/",
+ homepage: "https://petrosmoris.com/",
bio: {
- en: `<p>TBD</p>`,
+ en: `<p>Petros Moris (b. 1986) is an artist based in Athens. His work develops through sculpture, writing and digital media, contemplating the dynamics between manifestations of memory and the anthropogenic concept of the future. He has been nominated for the Deste Prize 2015 and has been awarded the SNF Artists Fellowship, the Onassis Foundation Scholarship, and the Delfina Foundation Residency. He has presented solo exhibitions in galleries and art spaces including Radio Athènes (Athens), Galeria Duarte Sequiera (Braga), Project Native Informant (London), Point Centre for Contemporary Art (Nicosia), Union Pacific (London), LilyRobert Gallery (Paris), ROOM E-10 27 (Berlin), SPACE (London), The Cyprus Embassy (Athens), and Onassis Culture (Athens). He has participated in group exhibitions including the <i>2019 Singapore Biennale</i> (Singapore), the <i>New Museum Triennial - Songs for Sabotage</i> (New York), <i>The Tides of the Century</i> (Ocean Flower Island Museum, Hainan), the <i>7th Thessaloniki Biennale</i> (Thessaloniki), <i>Still Here Tomorrow</i> (Stavros Niarchos Foundation, Athens), <i>Digital Gothic</i> (Centre d'art Contemporain, Delme), <i>Tomorrows</i> (Le Lieu Unique, Nantes), <i>Geometries</i> (Onassis Culture, Athens), <i>The Same River Twice & The Equilibrists</i> (Deste X New Museum, Benaki Museum Athens), the <i>2021 Athens Biennale - Eclipse</i> (Athens). He has curated exhibitions and events at the Chisenhale Gallery, the Whitechapel Gallery, and Circuits and Currents as part of the curatorial collectives SIM and Radical Reading. He has been part of the art collective KERNEL and co-runs the publication project AM.</p>`,
de: `<p>TBD</p>`,
},
statement: {
- en: `<p>TBD</p>`,
+ en: `<p>
+ <i>Oracle</i> occurs in a derelict textile factory in Laurium, a seaside town in Attica that used to be a significant silver mine territory since antiquity, the main source of ancient Athenian wealth and naval power. Those mines were reworked from the late 19th century to the 1980’s for ore extraction, an activity that left its grave environmental impact on the area’s soil to this day. Once part of the local industrial economy that collapsed before the turn of the millennium, this specific industrial ruin was recently leaked to be the future site of a datacenter complex to be built by one of the so-called “Big Five” multinational information technology corporations for the purpose of running dedicated Cloud, IoT and AI services.
+ </p>
+ <p>
+ Sculptural appearances inhabit the entropic spaces of this industrial ghost site, hybrids between human-resembling and non-human facial forms, seeding from chimeric compositions between archaeological photogrammetric scans and online-found threedimensional models referencing contemporary technocultures. Their metallic materiality reflects the local geological heritage and the mineral composition of the electronic hardware that enables the uncanny machinic intelligence and the haunting abstraction of computational operations. The digital interface of <i>Oracle</i> is permeated by a haunting soundtrack composed by Bill Kouligas, and becomes infiltrated by formations of visual coding and synthetic written language generated by simulated processes of pattern recognition, predictive mutations, and artificial apophenia. The physical and psychic underground space is still the origin of such forms of contemporary oracular production, where the ancient practices of hallucination deriving from subterranean chemical fumes gave their place to the extractivism of minerals and psychosocial data that feeds the deep-dreaming of the algorithmic Cloud.
+ </p>
+ <p>
+ As a place of memory and a place to become, an assemblage of mythological, historical, and technological entities, a generative process, or a resulting outcome left for interpretation, <i>Oracle</i> becomes a mediative entanglement of collapsing timelines, of imaginaries and anxieties bound to technological, socioeconomic and environmental transformation.
+ </p>`,
de: `<p>TBD</p>`,
},
- image: "/thelastmuseum/static/media/last-museum/artist-bio/nora.jpg",
+ image: "/thelastmuseum/static/media/last-museum/artist-bio/petros.jpg",
globePosition: {
- top: "15.1%",
- left: "47.7%",
+ top: "23.7%",
+ left: "51.1%",
},
},
nora: {
@@ -671,6 +679,14 @@ export const CREDITS_STRINGS = {
artist_credits_1: {
en: `
+ <b>Petros Moris</b><br/>
+ <i>Oracle</i><br/>
+ Location: Abandoned textile factory, Laurium, Greece<br/>
+ Cinematography: Petros Moris<br/>
+ Soundtrack: Bill Kouligas<br/>
+ With thanks to: Lito Kattou, Giagkos Papadopoulos, Foivos Tsimpourlas<br/>
+ <br/>
+ <br/>
<b>Charles Stankievech</b><br/>
<i>The Glass Key</i><br/>
Cinematography, Soundtrack, LIDAR and Ionospheric Recordings, Hypercard Programming: Charles Stankievech<br/>
@@ -693,6 +709,14 @@ export const CREDITS_STRINGS = {
<br/>
`,
de: `
+ <b>Petros Moris</b><br/>
+ <i>Oracle</i><br/>
+ Location: Verlassene Textilfabrik, Laurium, Greece<br/>
+ Videografie: Petros Moris<br/>
+ Soundtrack: Bill Kouligas<br/>
+ Mit Dank an: Lito Kattou, Giagkos Papadopoulos, Foivos Tsimpourlas<br/>
+ <br/>
+ <br/>
<b>Charles Stankievech</b><br/>
<i>The Glass Key</i><br/>
Location: Cosmic Ray Research Station, kanadische Rocky Mountains (Wintersonnenwende)<br />
diff --git a/frontend/site/projects/museum/views/nav.overlay.js b/frontend/site/projects/museum/views/nav.overlay.js
index 921f751..ab62941 100644
--- a/frontend/site/projects/museum/views/nav.overlay.js
+++ b/frontend/site/projects/museum/views/nav.overlay.js
@@ -19,6 +19,7 @@ import LandscapeWarning from './landscape.warning'
import TextOverlay from './text.overlay'
import JakrawalLinks from './jakrawal.links'
+import PetrosNav from './petros.nav'
import TitlesOverlay from './titles.overlay'
import Flash from './flash'
import Marquee from './marquee'
@@ -266,6 +267,7 @@ class NavOverlay extends Component {
return (
<div className="museum-nav">
<JakrawalLinks location={this.props.location} match={this.props.match} />
+ <PetrosNav location={this.props.location} match={this.props.match} />
{showCounter && <Counter />}
<TextOverlay location={this.props.location} match={this.props.match} />
{showFooter && (
diff --git a/frontend/site/projects/museum/views/petros.nav.css b/frontend/site/projects/museum/views/petros.nav.css
new file mode 100644
index 0000000..2cd6271
--- /dev/null
+++ b/frontend/site/projects/museum/views/petros.nav.css
@@ -0,0 +1,15 @@
+.petros-left {
+ position: absolute;
+ bottom: 20px;
+ left: 20px;
+}
+.petros-right {
+ position: absolute;
+ bottom: 20px;
+ right: 20px;
+}
+.petros-text {
+ position: absolute;
+ top: 20px;
+ right: 20px;
+}
diff --git a/frontend/site/projects/museum/views/petros.nav.js b/frontend/site/projects/museum/views/petros.nav.js
new file mode 100644
index 0000000..ebabf51
--- /dev/null
+++ b/frontend/site/projects/museum/views/petros.nav.js
@@ -0,0 +1,101 @@
+/**
+ * Navigation for Petros Moris "Oracle"
+ */
+
+import React, { Component } from 'react'
+import { connect } from 'react-redux'
+
+import './petros.nav.css'
+
+import { history } from "site/store"
+import { preloadImage } from 'app/utils'
+
+const RESET_STATE = {
+}
+
+const LOADING_TIMEOUT = 15000
+const ADVANCE_TIMEOUT = 40000
+
+class PetrosNav extends Component {
+ state = {
+ ...RESET_STATE
+ }
+
+ constructor(props) {
+ super(props)
+ this.handleEnter = this.handleEnter.bind(this)
+ this.handleLeave = this.handleLeave.bind(this)
+ }
+
+ componentDidMount() {
+ if (this.props.interactive) {
+ this.load()
+ }
+ }
+
+ componentDidUpdate(prevProps) {
+ if (
+ (this.props.interactive && this.props.interactive !== prevProps.interactive)
+ || this.props.location.pathname !== prevProps.location.pathname
+ ) {
+ this.load(prevProps.match && prevProps.match.params)
+ }
+ }
+
+ load(lastParams) {
+ const { page_name } = this.props.match.params
+ const page_partz = page_name.split("-")
+ const isPetros = page_partz[0] === 'petros'
+ const index = parseInt(page_partz[1])
+
+ if (!isPetros) {
+ clearTimeout(this.autoadvanceTimeout)
+ clearTimeout(this.timeout)
+ this.setState({
+ ...RESET_STATE,
+ })
+ return
+ }
+ preloadImage(`/thelastmuseum/static/media/last-museum/petros-moris/OracleTextButton${index}-White.png`)
+ preloadImage(`/thelastmuseum/static/media/last-museum/petros-moris/OracleTextButton${index}.png`)
+ preloadImage(`/thelastmuseum/static/media/last-museum/petros-moris/NavBW${index}.png`)
+ preloadImage(`/thelastmuseum/static/media/last-museum/petros-moris/NavB${index}.png`)
+ this.setState({
+ ...RESET_STATE,
+ index
+ })
+ }
+
+ handleEnter(event) {
+ const side = event.target.className.split('-')
+ this.setState({ hovering: side })
+ }
+ handleLeave(event) {
+ this.setState({ hovering: side })
+ }
+ handleClickText() {
+
+ }
+ navigate() {
+ // history.push(`/thelastmuseum/nilthamrong-${this.state.lateralLink}`)
+ }
+
+ render() {
+ const { index } = this.state
+ if (!this.props.interactive || (!index)) return null
+ return (
+ <div>
+ <img className="petros-text" onMouseEnter={this.handleEnter} onMouseLeave={this.handleLeave} onClick={this.handleClickText} />
+ <img className="petros-left" onMouseEnter={this.handleEnter} onMouseLeave={this.handleLeave} onClick={this.navigate} />
+ <img className="petros-right" onMouseEnter={this.handleEnter} onMouseLeave={this.handleLeave} onClick={this.navigate} />
+ </div>
+ )
+ }
+}
+
+const mapStateToProps = state => ({
+ interactive: state.site.interactive,
+ popups: state.site.popups,
+})
+
+export default connect(mapStateToProps)(PetrosNav)