summaryrefslogtreecommitdiff
path: root/frontend
diff options
context:
space:
mode:
Diffstat (limited to 'frontend')
-rw-r--r--frontend/app/views/index/components/graph.form.js46
-rw-r--r--frontend/site/index.js2
-rw-r--r--frontend/site/viewer/viewer.container.js25
3 files changed, 58 insertions, 15 deletions
diff --git a/frontend/app/views/index/components/graph.form.js b/frontend/app/views/index/components/graph.form.js
index 4b3a7af..5710beb 100644
--- a/frontend/app/views/index/components/graph.form.js
+++ b/frontend/app/views/index/components/graph.form.js
@@ -10,6 +10,9 @@ const newGraph = () => ({
title: '',
username: session('username'),
description: '',
+ settings: {
+ custom_header: "",
+ }
})
export default class GraphForm extends Component {
@@ -20,6 +23,14 @@ export default class GraphForm extends Component {
errorFields: new Set([]),
}
+ constructor(props){
+ super(props)
+ this.handleChange = this.handleChange.bind(this)
+ this.handleSettingsChange = this.handleSettingsChange.bind(this)
+ this.handleSettingsSelect = this.handleSettingsSelect.bind(this)
+ this.handleSubmit = this.handleSubmit.bind(this)
+ }
+
componentDidMount() {
const { data, isNew } = this.props
const title = isNew ? 'new project' : 'editing ' + data.title
@@ -54,6 +65,23 @@ export default class GraphForm extends Component {
})
}
+ handleSettingsChange(e) {
+ const { name, value } = e.target
+ this.handleSettingsSelect(name, value)
+ }
+
+ handleSettingsSelect(name, value) {
+ this.setState({
+ data: {
+ ...this.state.data,
+ settings: {
+ ...this.state.data.settings,
+ [name]: value,
+ }
+ }
+ })
+ }
+
handleSelect(name, value) {
const { errorFields } = this.state
if (errorFields.has(name)) {
@@ -73,7 +101,7 @@ export default class GraphForm extends Component {
const { isNew, onSubmit } = this.props
const { data } = this.state
const requiredKeys = "title username path description".split(" ")
- const validKeys = "title username path description".split(" ")
+ const validKeys = "title username path description settings".split(" ")
const validData = validKeys.reduce((a,b) => { a[b] = data[b]; return a }, {})
const errorFields = requiredKeys.filter(key => !validData[key])
if (errorFields.length) {
@@ -104,7 +132,7 @@ export default class GraphForm extends Component {
required
data={data}
error={errorFields.has('path')}
- onChange={this.handleChange.bind(this)}
+ onChange={this.handleChange}
autoComplete="off"
/>
<LabelDescription>
@@ -118,7 +146,7 @@ export default class GraphForm extends Component {
required
data={data}
error={errorFields.has('title')}
- onChange={this.handleChange.bind(this)}
+ onChange={this.handleChange}
autoComplete="off"
/>
<TextInput
@@ -127,18 +155,24 @@ export default class GraphForm extends Component {
required
data={data}
error={errorFields.has('username')}
- onChange={this.handleChange.bind(this)}
+ onChange={this.handleChange}
autoComplete="off"
/>
<TextArea
title="Description"
name="description"
data={data}
- onChange={this.handleChange.bind(this)}
+ onChange={this.handleChange}
+ />
+ <TextArea
+ title="Header tags"
+ name="custom_header"
+ data={data.settings}
+ onChange={this.handleSettingsChange}
/>
<SubmitButton
title={submitTitle}
- onClick={this.handleSubmit.bind(this)}
+ onClick={this.handleSubmit}
/>
{!!errorFields.size &&
<label>
diff --git a/frontend/site/index.js b/frontend/site/index.js
index 337d362..6d80528 100644
--- a/frontend/site/index.js
+++ b/frontend/site/index.js
@@ -4,7 +4,7 @@ import { Provider } from 'react-redux'
import './site.css'
-import App from 'site/app'
+import App from './APP_TARGET'
import { store, history } from 'site/store'
diff --git a/frontend/site/viewer/viewer.container.js b/frontend/site/viewer/viewer.container.js
index 52eb114..7d8a71b 100644
--- a/frontend/site/viewer/viewer.container.js
+++ b/frontend/site/viewer/viewer.container.js
@@ -15,6 +15,7 @@ class ViewerContainer extends Component {
page: {},
bounds: { width: window.innerWidth, height: window.innerHeight },
roadblock: false,
+ unloaded: false,
popups: {},
hidden: {},
time: 0,
@@ -36,6 +37,11 @@ class ViewerContainer extends Component {
if (this.props.graph !== prevProps.graph || this.props.location.pathname !== prevProps.location.pathname) {
this.load()
}
+ if (this.props.interactive && (this.props.interactive !== prevProps.interactive)) {
+ this.setState({ roadblock: false })
+ this.props.audio.player.playPage(this.state.page)
+ this.resetTimer(this.state.page)
+ }
}
componentWillUnmount() {
@@ -44,14 +50,18 @@ class ViewerContainer extends Component {
}
load() {
- const { graph_name, page_name } = this.props.match.params
+ const { page_name } = this.props.match.params
+ const { pages, home_page, path: graph_name } = this.props.graph
const page_path = ["", graph_name, page_name].join('/')
- const { pages, home_page } = this.props.graph
+ // if ((!page_path in pages) || page_name === 'index.html') {
+ // this.setState({ unloaded: true })
+ // return
+ // }
const page = pages[page_path] || pages[home_page]
if (!this.props.interactive && hasAutoplay(page)) {
- this.setState({ page, popups: {}, hidden: {}, roadblock: true })
+ this.setState({ page, popups: {}, hidden: {}, roadblock: true, unloaded: false })
} else {
- this.setState({ page, popups: {}, hidden: {}, roadblock: false })
+ this.setState({ page, popups: {}, hidden: {}, roadblock: false, unloaded: false })
actions.site.interact()
this.props.audio.player.playPage(page)
this.resetTimer(page)
@@ -144,6 +154,9 @@ class ViewerContainer extends Component {
render() {
const { page, audio, popups, hidden, time } = this.state
+ if (this.state.unloaded) {
+ return null
+ }
if (this.state.roadblock) {
return this.renderRoadblock()
}
@@ -193,11 +206,7 @@ class ViewerContainer extends Component {
}
removeRoadblock() {
- console.log("remove roadblock")
actions.site.interact()
- this.setState({ roadblock: false })
- this.props.audio.player.playPage(this.state.page)
- this.resetTimer(this.state.page)
}
renderRoadblock() {