mirror of
https://github.com/weaveworks/scope.git
synced 2026-03-04 02:30:45 +00:00
- term.js - Add eslintignore - Fix color and es2015 after rebase - Fix JS test, probably deleted during conflict resolution - Moves terminal close button to top-right of window - Consitent w/ details window. - Changes padding of details window close button so both close buttons are horizonally aligned. - Terminal resizes w/ browser window. - No longer can drag window around. - Add tiny big of padding between term and node-details. - Playing w/ terminal placement. This one's more drawer-like. - Send DELETE when we close a terminal window. - Dont lint or bable JS vendor files - Ignore ctags 'tags' files. - Adds popping out terminal out into a new browser window. - Simplify code as now we've just a single terminal window. - ESC is back to close the terminal, then the details panel. - Fixes bug w/ slow response to closing the details panel. - Moving away from "drawer-style" for terminal size and position to a simple window. - Just gotta handle the case for refreshing a popped out terminal. - Stop terminal text being auto-deselected. - window resizes will still deselect. - Adds state.connected to react.scu check. - Don't delete pipe when browser closes - To allow for nicer refresh flows - scope-app will time out pipe after a while. - Keep terminal-open/closed state in the url. - shouldComponentUpdate fix to prevent deselection of text has been rolled back so gotta come up w/ another way to handle that... - Fixes terminal text-selection again. - Make pipes work for non-raw terminals too. - Move document.title updating somewhere more sensible. - Pass rawTty prop along to all terminals. - Don't render react root into doc.body - Reconnect the websocket if we lose it. - First, slightly rough, attempt at displaying if pipe has been deleted - Refactor controlPipe structure in the AppStore/hash. - Merge controlPipeId, controlPipeRaw, controlPipeStatus into a single object. - Adds a status bar to the terminal window. - Error handling in popout working again. - Don't show terminal cursor when not connected. - Simplify controlPipe status and error handling. - Don't keep the status in the hash. - Use special new action receiveControlPipeFromParams rather than adding lots of branching to receiveControlPipe. - You can reload a terminal but it doesn't exist in history stack. - Pull out terminal into its own entry point! - Fixes prod webpack build - Fixes terminal-app websocket path when running on prod. - Fixes old terminals appearing when closing a terminal. - History hacking wasn't working, this is a little simpler.
45 lines
1.1 KiB
JavaScript
45 lines
1.1 KiB
JavaScript
import page from 'page';
|
|
|
|
import { route } from '../actions/app-actions';
|
|
import AppStore from '../stores/app-store';
|
|
|
|
//
|
|
// TODO: move this logic somewhere else.
|
|
//
|
|
function shouldReplaceState(prevState, nextState) {
|
|
return (
|
|
// Opening a new terminal while an existing one is open.
|
|
(prevState.controlPipe && nextState.controlPipe) ||
|
|
// Closing a terminal.
|
|
(prevState.controlPipe && !nextState.controlPipe)
|
|
);
|
|
}
|
|
|
|
export function updateRoute() {
|
|
const state = AppStore.getAppState();
|
|
const stateUrl = JSON.stringify(state);
|
|
const dispatch = false;
|
|
const urlStateString = window.location.hash.replace('#!/state/', '') || '{}';
|
|
const prevState = JSON.parse(urlStateString);
|
|
|
|
if (shouldReplaceState(prevState, state)) {
|
|
// Replace the top of the history rather than pushing on a new item.
|
|
page.replace('/state/' + stateUrl, state, dispatch);
|
|
} else {
|
|
page.show('/state/' + stateUrl, state, dispatch);
|
|
}
|
|
}
|
|
|
|
page('/', function() {
|
|
updateRoute();
|
|
});
|
|
|
|
page('/state/:state', function(ctx) {
|
|
const state = JSON.parse(ctx.params.state);
|
|
route(state);
|
|
});
|
|
|
|
export function getRouter() {
|
|
return page;
|
|
}
|