Fixes exec/attach from the 2nd+ card.

- Also fixes strange issue where hitting ESC while a terminal was
  active, would update the route, reload the top card, and break the
  terminal connection status.
This commit is contained in:
Simon Howe
2016-01-21 16:57:22 +01:00
parent bfa40f9f4b
commit d5cf3d2c59
4 changed files with 16 additions and 10 deletions

View File

@@ -159,11 +159,12 @@ export function hitEsc() {
type: ActionTypes.CLICK_CLOSE_TERMINAL,
pipeId: controlPipe.id
});
updateRoute();
// Dont deselect node on ESC if there is a controlPipe (keep terminal open)
} else if (AppStore.getSelectedNodeId() && !controlPipe) {
} else if (AppStore.getTopCardNodeId() && !controlPipe) {
AppDispatcher.dispatch({type: ActionTypes.DESELECT_NODE});
updateRoute();
}
updateRoute();
}
export function leaveEdge(edgeId) {
@@ -242,7 +243,7 @@ export function receiveControlPipeFromParams(pipeId, rawTty) {
}
export function receiveControlPipe(pipeId, nodeId, rawTty) {
if (nodeId !== AppStore.getSelectedNodeId()) {
if (nodeId !== AppStore.getTopCardNodeId()) {
log('Node was deselected before we could set up control!');
deletePipe(pipeId);
return;

View File

@@ -87,7 +87,7 @@ export default class App extends React.Component {
{showingTerminal && <EmbeddedTerminal
pipe={this.state.controlPipe}
nodeId={this.state.controlPipe.nodeId}
nodes={this.state.nodes} />}
details={this.state.nodeDetails} />}
<div className="header">
<Logo />

View File

@@ -3,18 +3,19 @@ import React from 'react';
import { getNodeColor, getNodeColorDark } from '../utils/color-utils';
import Terminal from './terminal';
export default function EmeddedTerminal({pipe, nodeId, nodes}) {
const node = nodes.get(nodeId);
const titleBarColor = node && getNodeColorDark(node.get('rank'), node.get('label_major'));
const statusBarColor = node && getNodeColor(node.get('rank'), node.get('label_major'));
const title = node && node.get('label_major');
export default function EmeddedTerminal({pipe, nodeId, details}) {
const node = details.get(nodeId);
const d = node && node.details;
const titleBarColor = d && getNodeColorDark(d.rank, d.label_major);
const statusBarColor = d && getNodeColor(d.rank, d.label_major);
const title = d && d.label_major;
// React unmount/remounts when key changes, this is important for cleaning up
// the term.js and creating a new one for the new pipe.
return (
<div className="terminal-embedded">
<Terminal key={pipe.id} pipe={pipe} titleBarColor={titleBarColor}
statusBarColor={statusBarColor} title={title} />
statusBarColor={statusBarColor} title={title} />
</div>
);
}

View File

@@ -239,6 +239,10 @@ export class AppStore extends Store {
}).toJS();
}
getTopCardNodeId() {
return nodeDetails.last().id;
}
getNodes() {
return nodes;
}