Commit Graph

64 Commits

Author SHA1 Message Date
David Kaltschmidt
9dafaef9a9 Force-relayout button
* new button in footer
* when clicked, forces a relayout that could help with degraded graphs
* sets a store flag that will be unset on next nodes delta update
* fixes #863
2016-02-24 15:55:36 +01:00
Simon Howe
2c626776a1 Grey out bottom of stack when there aren't 3 nodes in the stack
E.g. greying out the bottom 2/3 visual nodes if the stack actually only
has a single node.

- Server returns "node_count" for agg nodes.
2016-02-22 12:42:37 +01:00
David Kaltschmidt
476b7917e4 Let shape be determined by backend 2016-02-22 12:42:36 +01:00
Simon Howe
dcb621d7e6 Close terminal when we click "show node in its topology" 2016-01-29 13:14:47 +01:00
Simon Howe
5500c2f280 Fixes harmless exception: hitting esc with no cards open. 2016-01-29 13:14:08 +01:00
Simon Howe
bac56c6c03 Fixes terminal being closed when its node's card is closed. 2016-01-29 13:13:33 +01:00
Simon Howe
6edbd49791 Fixes pipe status when reloading page.
Correctly load in state from the url.
2016-01-21 21:15:54 +01:00
Simon Howe
d5cf3d2c59 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.
2016-01-21 16:57:22 +01:00
Simon Howe
0785d5393a Fixes pipes again
- Treat control objects that come back from the server as little
  black boxes.
- Pass our local client nodeId around more instead, use that for
  comparisons etc, (vs. inspecting the control object and doing brittle
  magic w/ the ids).
2016-01-19 16:48:35 +01:00
David Kaltschmidt
d39fd847b7 Details Panel UI Redesign
Refactored nodedetails to support multiple data sets, probably broke some tests
  Allow api requests to out-of-view topologies
  Fix ESC behavior with details panel
  Stack details panel like cards
  Details pain side-by-side
  Details panel piles
  Fix node details table header styles
  Render load and not-found captions like relatives
  Fix topology click action
  Make node detail tables sortable
  Grouped metrics for details health
  Group metrics in same style
  Link node details children
  Fix scroll issues on double-details
  Fix DESC sort order for node details table
  Save selected node labels in state - allows rendering of node labels from other topologies before details are loaded
  Change detail card UX, newest one at top, pile at bottom
  Details panel one pile w/ animation
  Sort details table nodes by metadata too
  Animate sidepanel from children too
  Fix radial layout
  Dont set origin if a node was already selected, suppresses animation
  stack effect: shift top cards to the left, shrink lower cards vertically
  Clear details card stack if sibling is selected
  Check if node is still selected on API response
  Make detail table sorters robust against non-uniform metadata
  Dont show scrollbar all the time, fix sort icon issue
  Button to show topology for relative
  Overflow metrics for details panel health
  Fix JS error when no metrics are available for container image details
  Column-based rendering of node details table
  Fix JS tests
  Review feedback (UI)
2016-01-19 16:47:05 +01:00
Simon
359ec29c09 Merge pull request #797 from weaveworks/758-independent-node-controls
Fix node controls so they behave independently across nodes
2016-01-19 14:41:37 +01:00
Simon Howe
3c5e357150 Highlight a single unconnected node on hover.
Wasn't happening before.
2016-01-13 17:01:37 +01:00
Simon Howe
5b390994b8 Fix node controls so they behave independently across nodes
If one node was busy performing an action, any other nodes controls
would also be in a 'blocked and waiting' state.
2016-01-05 19:17:10 +01:00
Simon Howe
3b2af2ae6c Terminal UI for pipes
- 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.
2015-12-10 12:52:44 +00:00
David Kaltschmidt
0c5331d33c Render hostname in UI 2015-12-04 15:45:16 +01:00
David Kaltschmidt
6b445466ef Move JS to ES2015
Refactored mixins into utils

ES2015 module exports

ES2015-style imports

WIP Fixing tests

Fixes tests after es2015 code migrations.

We we're require()ing an ES2015 module[1]. Have to make sure you account
for the .default in this case.

[1] We had to use ES5 `require` in Jest:
(https://github.com/babel/babel-jest/issues/16)
2015-12-01 14:35:22 +01:00
David Kaltschmidt
37b71487cd Disregard node details response if node is no longer selected 2015-11-25 20:01:42 +01:00
David Kaltschmidt
b1fa8a77b5 Click on node unsets loaded node details 2015-11-24 19:31:46 +01:00
David Kaltschmidt
308c1596a0 Unset previous details when deselecting a node 2015-11-13 16:05:26 +01:00
David Kaltschmidt
2eb80d79bc object-assign no longer needed under babel 6 2015-11-11 19:35:21 +01:00
David Kaltschmidt
7d5cc11d7e Enable linter for js test files 2015-11-11 19:09:40 +01:00
David Kaltschmidt
acbf8a665d Upgrade eslint, react and react-motion
* get rid of material-ui
* reduced bundle size by 20%
2015-11-11 15:51:27 +01:00
David Kaltschmidt
abcb94b1f1 UI for controls.
- Make backend address configurable via env variable
- `BACKEND_HOST=1.2.3.4:4040 npm start` points the frontend to the app on that server. Just for development
- Render control icons
  - removed close x for details panel
  - added control icons in its space
  - closing of panel still works by clicking on same node, or background
- Dont allow control while pending
- Render and auto-dismiss control error
- Make tests pass
2015-11-06 17:44:28 +00:00
David Kaltschmidt
5c086aeeb3 show message if topology is empty 2015-11-03 18:27:23 +01:00
David Kaltschmidt
cacc2e1bc3 Move testing to Jest 2015-10-26 17:49:21 +00:00
David Kaltschmidt
2d7e546ae5 Render filtered node count in status bar
* always set updated topology object when received
* track whether route was set on initial load
* removed connection count from status bar (was not deemed important)
* fixed issue where topology option changes did not affect details pane
* only show filtered nodes when count > 0
* clear nodes graph when empty topology is loaded
* also prevent JS error if nodes are hovered over that should be gone
* fixed options sync issue between graph and status bar
* implemented topology options with immutable DS
2015-09-29 08:51:56 +00:00
David Kaltschmidt
38fa82dee4 animate status bar, add Loading text 2015-09-15 16:38:31 +02:00
David Kaltschmidt
31f7a97016 setState only once in componentWillReceiveProps
setstate does not set this.state immediately, so successive function
calls cant rely on it
2015-09-11 14:42:10 +02:00
David Kaltschmidt
b49e1f55d2 Use full adjacency also for mouseover nodes 2015-09-10 15:38:03 +02:00
David Kaltschmidt
7eb6b93ee9 added test for adjacency 2015-09-09 18:44:54 +02:00
David Kaltschmidt
f764e4415e respect both ways of adjacency for selected node 2015-09-09 18:26:44 +02:00
David Kaltschmidt
2c554fe273 blur nodes that not selected nor adjacent 2015-09-09 18:12:02 +02:00
David Kaltschmidt
4fd53e3ae9 Refresh should keep topology options
fixes #457
2015-09-08 00:11:18 +02:00
David Kaltschmidt
27caf0af41 Add dropdown field for topology options, save topology option in url state
- fix nodes reset after topology option change
- set topology on click
- explicitly set default topology options
- set default topo options when topos are received
- prevent JS error on too many nodes layout abort
2015-09-07 14:25:49 +00:00
David Kaltschmidt
398fb7a6ba fix JS error on missing edge target
* replace mergeDeep with merge on node updates to set adjacency to
  updated value
* added json-loader to make json import of websocket frames easier
* console message for this was `Cannot read property 'id' of undefined`
2015-09-04 15:44:11 +02:00
David Kaltschmidt
e8ec3ed5fc fix nodes immutable after socket opens
fix for PR #410
2015-09-02 16:38:24 +02:00
David Kaltschmidt
b17d958b07 use immutable objects for storing nodes
makes checking for topology changes easier, which triggers fewer
re-renders
fix JS store tests with Immutables
only update graph if topology changed
2015-09-02 16:00:28 +02:00
David Kaltschmidt
1dccca2be7 fixed action name typo and added test 2015-08-28 13:10:58 +02:00
Tom Wilkie
bd217b10db 'Trying to reconnect..' in UI even though its connected 2015-08-25 09:51:32 +00:00
David Kaltschmidt
9c7dea8e2f cache render engines for consistent renderings
* one render engine per topology
* improves switching back and forth between topos
* might increase memory use
* roughly fixes #160
2015-08-24 18:19:14 +02:00
David Kaltschmidt
dfd158cceb close details when changing topologies
fixes #297
2015-07-14 16:16:09 +02:00
David Kaltschmidt
ea2d3f51de fixed tests after removing group state 2015-06-17 10:18:45 +02:00
David Kaltschmidt
3728682878 Removed unused grouping and explorer code 2015-06-16 18:28:19 +02:00
David
6281eff85a Merge pull request #241 from weaveworks/client-coverage
Add JS test coverage reporting to client/
2015-06-16 16:07:10 +02:00
David Kaltschmidt
3dcd3e527f start with closed websocket, so that icon loads 2015-06-16 15:49:36 +02:00
David Kaltschmidt
24bd8d1908 use karma-coverage and istanbul 2015-06-16 15:41:27 +02:00
David Kaltschmidt
35e5335359 keep nodes cache intact while websocket is closed 2015-06-16 15:15:46 +02:00
David Kaltschmidt
c87cc872ee clear nodes cache when websocket closes connection
* also show reconnection status

fixes #162
2015-06-15 18:10:02 +02:00
David Kaltschmidt
816e1e9e99 layout of sub-topologies
* uses injected static topology, see web-api-utils.js
2015-06-12 11:37:49 +02:00
David Kaltschmidt
49c1493c79 replaced console.log with debug package 2015-06-11 20:57:13 +02:00