mirror of
https://github.com/weaveworks/scope.git
synced 2026-03-02 17:50:39 +00:00
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:
@@ -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;
|
||||
|
||||
@@ -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 />
|
||||
|
||||
@@ -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>
|
||||
);
|
||||
}
|
||||
|
||||
@@ -239,6 +239,10 @@ export class AppStore extends Store {
|
||||
}).toJS();
|
||||
}
|
||||
|
||||
getTopCardNodeId() {
|
||||
return nodeDetails.last().id;
|
||||
}
|
||||
|
||||
getNodes() {
|
||||
return nodes;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user