import React, { Component } from 'react'
import _ from 'lodash'
import Nav from './FlowView/Nav'
import { Request, Response, ErrorView as Error } from './FlowView/Messages'
import Details from './FlowView/Details'
import Prompt from './Prompt'
export default class FlowView extends Component {
static allTabs = { Request, Response, Error, Details }
constructor(props, context) {
super(props, context)
this.state = { prompt: false }
this.closePrompt = this.closePrompt.bind(this)
this.selectTab = this.selectTab.bind(this)
}
getTabs() {
return ['request', 'response', 'error'].filter(k => this.props.flow[k]).concat(['details'])
}
nextTab(increment) {
const tabs = this.getTabs()
// JS modulo operator doesn't correct negative numbers, make sure that we are positive.
this.selectTab(tabs[(tabs.indexOf(this.props.tab) + increment + tabs.length) % tabs.length])
}
selectTab(panel) {
this.props.updateLocation(`/flows/${this.props.flow.id}/${panel}`)
}
closePrompt(edit) {
this.setState({ prompt: false })
if (edit && this.tabComponent) {
this.tabComponent.edit(edit)
}
}
promptEdit() {
let options
switch (this.props.tab) {
case 'request':
options = [
'method',
'url',
{ text: 'http version', key: 'v' },
'header'
]
break
case 'response':
options = [
{ text: 'http version', key: 'v' },
'code',
'message',
'header'
]
break
case 'details':
return
default:
throw 'Unknown tab for edit: ' + this.props.tab
}
this.setState({ prompt: { options, done: this.closePrompt } })
}
render() {
const tabs = this.getTabs()
let { flow, tab: active, updateFlow } = this.props
if (tabs.indexOf(active) < 0) {
if (active === 'response' && flow.error) {
active = 'error'
} else if (active === 'error' && flow.response) {
active = 'response'
} else {
active = tabs[0]
}
}
const Tab = FlowView.allTabs[_.capitalize(active)]
return (
this.tabComponent = tab } flow={flow} updateFlow={updateFlow} />
{this.state.prompt && (
)}
)
}
}
521822a37e4cfb4'>root/scripts/redboot-script.plblob: e2d126470577465619d1073c1dca7526e41999a9 (
plain)