Commit graph

1136 commits

Author SHA1 Message Date
Michael Lange 8deea899c1 Model the notification pattern as a page object component 2020-01-23 16:34:30 -08:00
Michael Lange 7edbf5ff58 Clear all notifications when resetting the controller 2020-01-23 16:34:29 -08:00
Michael Lange ae85882ca7 Switch drain popover checkboxes for toggles 2020-01-23 16:34:29 -08:00
Michael Lange 54d33f9ad7 Toggle bugs: focus and multiline alignment 2020-01-23 16:34:28 -08:00
Michael Lange 76bfed5f25 Swap the eligiblity checkbox out for a toggle 2020-01-23 16:34:27 -08:00
Michael Lange 95e6068d5d New toggle component 2020-01-23 16:34:27 -08:00
Michael Lange faa15bc581 Force drain button in the drain info box 2020-01-23 16:34:26 -08:00
Michael Lange 82a62089b3 Make outline buttons have a solid white background 2020-01-23 16:34:25 -08:00
Michael Lange 80642b8868 Modifiers to the two-step-button 2020-01-23 16:34:25 -08:00
Michael Lange 7097591281 Drain stop and update and notifications 2020-01-23 16:34:24 -08:00
Michael Lange 9c9c6b08c3 Drain complete notification 2020-01-23 16:34:24 -08:00
Michael Lange 8b19a19908 Fill out the metrics and time since values in the drain summary 2020-01-23 16:34:23 -08:00
Michael Lange 35671a3bd4 Fill in the drain strategy ribbon values 2020-01-23 16:34:22 -08:00
Michael Lange 6e3e8d01e2 Stub out all the markup for the new drain strategy view 2020-01-23 16:34:22 -08:00
Michael Lange 47924d05d3 Polish for the drain popover 2020-01-23 16:34:21 -08:00
Michael Lange deb1dc7ffe Refactor parseDuration to support multi-character units 2020-01-23 16:34:20 -08:00
Michael Lange c5e662a751 Test coverage for the parse duration util 2020-01-23 16:34:20 -08:00
Michael Lange 395ba979a7 Extract the duration parsing into a util 2020-01-23 16:34:19 -08:00
Michael Lange fd16612be3 Factor out the drain popover and implement its behaviors 2020-01-23 16:34:18 -08:00
Michael Lange d13af1bcb5 Add triggerClass support to the popover menu 2020-01-23 16:34:18 -08:00
Michael Lange ada745a59f Let dropdowns assume their full width 2020-01-23 16:34:17 -08:00
Michael Lange a3f32e61c1 Initial layout of the drain options popover 2020-01-23 16:34:16 -08:00
Michael Lange d1cf0e1054 More form styles as needed for the drain form 2020-01-23 16:34:16 -08:00
Michael Lange 01d0efb317 Multiline modifier for tooltips 2020-01-23 16:34:15 -08:00
Michael Lange 75c9e80251 Update the dropdown styles to be more similar to button styles 2020-01-23 16:34:14 -08:00
Michael Lange 20f83da76a PopoverMenu component 2020-01-23 16:34:14 -08:00
Michael Lange e685179c99 Eligibility toggling behavior 2020-01-23 16:34:13 -08:00
Michael Lange bfa34d5273 Update the underlying node model when toggling eligibility in mirage 2020-01-23 16:34:12 -08:00
Michael Lange a8af3d67be Add tooltip to the eligibility control 2020-01-23 16:34:11 -08:00
Michael Lange 47daa980a5 Reformat the client detail page to use the two-row header design 2020-01-23 16:34:11 -08:00
Michael Lange c8e29c7060 cancelDrain adapter method 2020-01-23 16:34:10 -08:00
Michael Lange b162fa8a28 Update drain methods to properly wrap DrainSpec params 2020-01-23 16:34:09 -08:00
Michael Lange dae33efa1d drain and forceDrain adapter methods 2020-01-23 16:34:09 -08:00
Michael Lange 85066eee07 Mock the drain endpoint 2020-01-23 16:34:08 -08:00
Michael Lange 321b5fb6e6 Add isMigrating property to the allocation model 2020-01-23 16:34:07 -08:00
Michael Lange aad8536949 Implement eligibility toggling in the data layer 2020-01-23 16:34:07 -08:00
Michael Lange 94955c8b08 Mock the eligibility endpoint in mirage 2020-01-23 16:34:06 -08:00
Buck Doyle 576bcf554f
UI: Migrate to Storybook (#6507)
I originally planned to add component documentation, but as this dragged on and I found that JSDoc-to-Markdown sometimes needed hand-tuning, I decided to skip it and focus on replicating what was already present in Freestyle. Adding documentation is a finite task that can be revisited in the future.

My goal was to migrate everything from Freestyle with as few changes as possible. Some adaptations that I found necessary:
• the DelayedArray and DelayedTruth utilities that delay component rendering until slightly after initial render because without them:
  ◦ charts were rendering with zero width
  ◦ the JSON viewer was rendering with empty content
• Storybook in Ember renders components in a routerless/controllerless context by default, so some component stories needed changes:
  ◦ table pagination/sorting stories access to query params, which necessitates some reaching into Ember internals to start routing and dynamically generate a Storybook route/controller to render components into
  ◦ some stories have a faux controller as part of their Storybook context that hosts setInterval-linked dynamic computed properties
• some jiggery-pokery with anchor tags
  ◦ inert href='#' had to become href='javascript:;
  ◦ links that are actually meant to navigate need target='_parent' so they don’t navigate inside the Storybook iframe

Maybe some of these could be addressed by fixes in ember-cli-storybook but I’m wary of digging around in there any more than I already have, as I’ve lost a lot of time to Storybook confusion and frustrations already 😞

The STORYBOOK=true environment variable tweaks some environment settings to get things working as expected in the Storybook context.

I chose to:
• use angle bracket invocation within stories rather than have to migrate them soon after having moved to Storybook
• keep Freestyle around for now for its palette and typeface components
2020-01-21 15:46:32 -06:00
Buck Doyle 66ab14144a
ui: Change Run Job availability based on ACLs (#5944)
This builds on API changes in #6017 and #6021 to conditionally turn off the
“Run Job” button based on the current token’s capabilities, or the capabilities
of the anonymous policy if no token is present.

If you try to visit the job-run route directly, it redirects to the job list.
2020-01-20 14:57:01 -06:00
Drew Bailey f97d2e96c1
refactor api profile methods
comment why we ignore errors parsing params
2020-01-09 15:15:12 -05:00
Buck Doyle 6ff6a41df8
Fix flapping status light test (#6852)
I unintentionally introduced a flapping test in #6817. The
draining status of the node will be randomly chosen and
that flag takes precedence over eligibility. This forces
the draining flag to be false rather than random so the
test should no longer flap.

See here for an example failure:
https://circleci.com/gh/hashicorp/nomad/26368
2019-12-13 09:02:02 -06:00
Buck Doyle 09067b4eb7
UI: Fix client sorting (#6817)
There are two changes here, and some caveats/commentary:

1. The “State“ table column was actually sorting only by status. The state was not an actual property, just something calculated in each client row, as a product of status, isEligible, and isDraining. This PR adds isDraining as a component of compositeState so it can be used for sorting.

2. The Sortable mixin declares dependent keys that cause the sort to be live-updating, but only if the members of the array change, such as if a new client is added, but not if any of the sortable properties change. This PR adds a SortableFactory function that generates a mixin whose listSorted computed property includes dependent keys for the sortable properties, so the table will live-update if any of the sortable properties change, not just the array members. There’s a warning if you use SortableFactory without dependent keys and via the original Sortable interface, so we can eventually migrate away from it.
2019-12-12 13:06:54 -06:00
Michael Lange ed8fd28a10
Merge pull request #6808 from hashicorp/b-ui/unclosed-log-streams
UI: Unclosed log streams
2019-12-12 10:55:49 -08:00
Tim Gross 74a01477fd
Merge pull request #6631 from hashicorp/dependabot/npm_and_yarn/ui/lodash.mergewith-4.6.2
Bump lodash.mergewith from 4.6.1 to 4.6.2 in /ui
2019-12-09 09:47:14 -05:00
Tim Gross 06e30473c0
Merge pull request #6629 from hashicorp/dependabot/npm_and_yarn/ui/lodash.defaultsdeep-4.6.1
Bump lodash.defaultsdeep from 4.6.0 to 4.6.1 in /ui
2019-12-09 09:47:05 -05:00
dependabot[bot] 28ff457228
Bump lodash.mergewith from 4.6.1 to 4.6.2 in /ui
Bumps [lodash.mergewith](https://github.com/lodash/lodash) from 4.6.1 to 4.6.2.
- [Release notes](https://github.com/lodash/lodash/releases)
- [Commits](https://github.com/lodash/lodash/commits)

Signed-off-by: dependabot[bot] <support@github.com>
2019-12-09 13:37:45 +00:00
Tim Gross 7ab879f347
Merge pull request #6628 from hashicorp/dependabot/npm_and_yarn/ui/handlebars-4.1.2
Bump handlebars from 4.1.1 to 4.1.2 in /ui
2019-12-09 08:37:10 -05:00
Tim Gross 48608acd37
Bump fstream from 1.0.11 to 1.0.12 in /ui (#6630)
Bumps [fstream](https://github.com/npm/fstream) from 1.0.11 to 1.0.12.
- [Release notes](https://github.com/npm/fstream/releases)
- [Commits](https://github.com/npm/fstream/compare/v1.0.11...v1.0.12)

Signed-off-by: dependabot[bot] <support@github.com>
2019-12-09 08:36:57 -05:00
dependabot[bot] 0d89b2f5ea Bump lodash.merge from 4.6.1 to 4.6.2 in /ui (#6632)
Bumps [lodash.merge](https://github.com/lodash/lodash) from 4.6.1 to 4.6.2.
- [Release notes](https://github.com/lodash/lodash/releases)
- [Commits](https://github.com/lodash/lodash/commits)

Signed-off-by: dependabot[bot] <support@github.com>
2019-12-09 08:36:44 -05:00
dependabot[bot] 12e34aef1d
Bump lodash.defaultsdeep from 4.6.0 to 4.6.1 in /ui
Bumps [lodash.defaultsdeep](https://github.com/lodash/lodash) from 4.6.0 to 4.6.1.
- [Release notes](https://github.com/lodash/lodash/releases)
- [Commits](https://github.com/lodash/lodash/compare/4.6.0...4.6.1)

Signed-off-by: dependabot[bot] <support@github.com>
2019-12-06 14:13:32 +00:00
dependabot[bot] 66ff8a191f
Bump handlebars from 4.1.1 to 4.1.2 in /ui
Bumps [handlebars](https://github.com/wycats/handlebars.js) from 4.1.1 to 4.1.2.
- [Release notes](https://github.com/wycats/handlebars.js/releases)
- [Changelog](https://github.com/wycats/handlebars.js/blob/master/release-notes.md)
- [Commits](https://github.com/wycats/handlebars.js/compare/v4.1.1...v4.1.2)

Signed-off-by: dependabot[bot] <support@github.com>
2019-12-06 14:13:27 +00:00
dependabot[bot] 2020fbc7a4
Bump fstream from 1.0.11 to 1.0.12 in /ui
Bumps [fstream](https://github.com/npm/fstream) from 1.0.11 to 1.0.12.
- [Release notes](https://github.com/npm/fstream/releases)
- [Commits](https://github.com/npm/fstream/compare/v1.0.11...v1.0.12)

Signed-off-by: dependabot[bot] <support@github.com>
2019-12-06 14:13:19 +00:00
Michael Lange 13d9e5ead7 Don't initialize variables before you need them 2019-12-05 10:51:51 -08:00
Michael Lange 2c6392ff1e Light test coverage for the stream-logger class 2019-12-05 00:19:36 -08:00
Michael Lange 9504d10ce7 Fix a race condition where a response sent after the logger stops never gets canceled 2019-12-05 00:19:35 -08:00
Buck Doyle 5b4b4740b2 Update ivy-codemirror to unreleased commit
This addon hasn’t been released in a while but we’d like to
get the fix for this bug that’s causing an inability to
copy long documents in Firefox:
https://github.com/codemirror/CodeMirror/issues/2703

It also includes a deprecation fix:
https://github.com/IvyApp/ivy-codemirror/pull/40
2019-10-25 10:34:02 -05:00
Buck Doyle e525ff99d3
Remove inverse block for list-pagination (#6523)
As the angle bracket invocation RFC says:

> There is no dedicated syntax for passing an "else" block
> directly. If needed, that can be passed using the named
> blocks syntax.

https://github.com/emberjs/rfcs/blob/master/text/0311-angle-bracket-invocation.md#block

Unfortunately, using a contextual component doesn’t help as
the yield inside that component will still result in content
rendering that would show when the source isn’t empty. So
we decided to change the interface so you have to check
whether the source is empty before using it, which aligns with
how list-table works.
2019-10-24 07:05:43 -05:00
Buck Doyle 9b2fb14e51
UI: Update Ember to 3.12 LTS (#6419)
This is mostly deprecation fixes and blueprint changes. There
are some dependency updates too; the changes to Ember
Basic Dropdown necessitated changing it to angle bracket
component invocation. The conversion of the rest of the
templates will happen separately.
2019-10-15 13:32:58 -05:00
Michael Lange d6bbd0f9e5 Use max-width to ensure the width rule is observed in Firefox 2019-10-10 10:34:33 -07:00
Buck Doyle 9a3a6c3f62
UI: Update to Ember 3.8 LTS (#5968) 2019-10-08 13:44:19 -05:00
Buck Doyle 5da134d074
UI: Change Mirage data to be stable in development (#6389)
This sets a default-but-query-configurable Faker seed in development,
via faker-seed. It also changes uses of Math.random to use Faker’s
randomness so auto-generated data remains stable in development.
2019-10-03 09:13:08 -05:00
Buck Doyle 75aa2e36ee
UI: Change factories to be more dynamic (#6387)
I noticed while working on #6166 that some of the factory properties
that used Faker’s randomisation features are using their output
rather than a function that would call the randomiser. This means that
the randomisation happens once and the value is used for every model
generated by the factory. This wraps the randomiser calls in functions
so different models can have different values.
2019-09-30 09:44:22 -05:00
Buck Doyle 8950626c55
UI: Update Mirage to 1.1.2 (#6166) 2019-09-26 13:47:07 -05:00
Buck Doyle 1a47a11c95
UI: Restore proxy tag tests (#6360)
The recurring problem here was that sometimes the factories would
generate more than one task, and it was random whether the task
with the proxy task would be the first in the list. This ensures
that the proxy task is always first so the tests can run again.
2019-09-26 11:50:01 -05:00
Buck Doyle f55d95694c
UI: Remove proxy tag tests again (#6359)
I thought #6343 would fix the flapping but it didn’t 😞
2019-09-20 15:27:33 -05:00
Buck Doyle d707038429
UI: Fix Connect proxy tag (#6343)
This fixes a race condition in the pseudo-relationship between a
TaskState and a Task that was causing the Consul Connect proxy tag
to sometimes show on the wrong task. There’s no direct Ember Data-style
relationship between a TaskState and its Task; instead, it’s determined
by searching for a Task with the matching name. The related Task was
sometimes stored before everything was ready and not recalculated when
the name became known. This ensures the relationship is accurate if the
TaskState’s name property changes.
2019-09-19 08:09:49 -05:00
Mahmood Ali f82f45c026 add some ui development tips 2019-09-17 08:51:24 -04:00
Mahmood Ali e33437635d
Merge pull request #6327 from hashicorp/b-ui-alloc-no-services
ui: protect against no services
2019-09-17 06:33:52 -04:00
Michael Lange 96b91ff6ec
Merge pull request #6274 from hashicorp/f-ui/restore-headless-testing
UI: Restore local headless testing
2019-09-17 00:15:41 -07:00
Mahmood Ali 16f7a3f31b ui: protect against nil services
Protect against case where an alloc has no services and avoid
dereferencing null.

Here, we ensure that the model and test serializers mimic the API by
having nil TaskGroup.Services instead of an empty array.
2019-09-16 16:50:30 -04:00
Buck Doyle 4ca5662895
UI: Remove Connect proxy tag tests again (#6284)
This semi-reverts #6275, as the tests are intermittently
failing in CI.
2019-09-05 14:34:47 -05:00
Buck Doyle dc43dbdad2
UI: Restore Connect proxy tag tests (#6275)
These are the tests skipped in #6271.
2019-09-05 14:09:32 -05:00
Buck Doyle ee0e74186f
UI: Move kind property to task (#6271)
I put this property in the wrong place. 

I’ve found how to fix the mock API in the tests but
they’re failing to pass with headless Chrome only,
so they’re skipped for now.
2019-09-05 13:14:54 -05:00
Buck Doyle 24b0be1625 Restore local headless testing
I’ve been unable to use ember test without --server for a
while. This brings in the fix from ember-cli/ember-cli#8774
2019-09-05 11:24:05 -05:00
Buck Doyle ec65c8e260
Add handling for not-running task filesystem query (#6267) 2019-09-04 17:38:26 -05:00
Buck Doyle b5e5798e54
UI: add Consul Connect features (#6108) 2019-09-04 09:39:56 -05:00
Buck Doyle 49b9dd5b9b
UI: Add creation time to evaluations table (#6050) 2019-08-22 08:11:24 -05:00
Michael Lange 74c9b1ac60
Merge pull request #5871 from hashicorp/f-ui/alloc-fs
UI: Allocation file system explorer
2019-08-20 10:18:23 -07:00
Michael Lange 1e620953e4 Remove the temporary allocationFileExplorer mirage scenario 2019-08-20 09:40:49 -07:00
Buck Doyle ed652051d4
Add ability to control Mirage logging via query (#6105)
This lets us turn Mirage logging on without editing any
files, which makes it easier to switch between branches.
2019-08-20 08:36:08 -05:00
Michael Lange 9b669d7e38 Use the standard empty state when a dir is empty 2019-08-19 17:16:26 -07:00
Michael Lange fd6d5b274f
Merge pull request #6048 from hashicorp/f-ui/alloc-fs-files
UI: Alloc FS: File Viewer
2019-08-19 10:36:28 -07:00
Michael Lange 836e7426b8 Encode characters in file paths to ensure proper URIs 2019-08-14 12:54:11 -07:00
Michael Lange 38fce53936 Prevent a change in height when switching from a dir to a file 2019-08-08 15:41:47 -07:00
Michael Lange 2ed18864df Limit the width of the right page layout column
This was causing elements to flow off the page, since the element was
assuming 100% but also had a 250px margin for the left column.

This had previously been "fixed" by setting overflow-x: auto, but that
resulted in tooltips from being clipped.

This is a better solution to the same problem.
2019-08-08 10:00:48 -07:00
Buck Doyle 58f6e5d286
Fix navigation via clicking recent allocation row (#6087)
This fixes the recent allocation rows to navigate when clicking within them
rather than just on the link, which matches the cursor behaviour.
2019-08-08 09:26:46 -05:00
Michael Lange ee079a1220 Test that the client is contacted correctly, and the server is used as a fallback 2019-08-07 17:35:43 -07:00
Michael Lange ae8913910c Always preload the alloc node so the client can be dialed first 2019-08-07 17:35:15 -07:00
Michael Lange 8cb6a20f8f Include all client fs endpoints in the hosts block 2019-08-07 17:34:41 -07:00
Michael Lange 02c9ab1582 Add additional troublesome characters to the alloc-file name factory 2019-08-07 15:29:57 -07:00
Michael Lange 3dc7dec246 Make a dedicated fs-breadcrumbs component 2019-08-07 15:29:14 -07:00
Michael Lange 2ff4027496 Minor fixes from code review 2019-08-07 15:11:32 -07:00
Michael Lange 992fa8f741 Use a data-uri instead of an image for the image-file-test 2019-08-07 15:08:38 -07:00
Buck Doyle 2bfbc2b41b
Remove transition animation from sort arrows (#6067)
It may be an Ember bug: in some circumstances, the
ember-transitioning-in class was persisting in table
sort links even after the transition completed. This
changes the transition animations to be targeted only
for breadcrumbs and directory links.
2019-08-06 09:55:35 -05:00
Buck Doyle 88b708f188
Add page titles to filesystem routes (#6024) 2019-08-01 11:17:46 -05:00
Michael Lange e84604fcdb Update factory-based fs tests to sort properly 2019-07-31 01:41:00 -07:00
Michael Lange 7780713bfa Remove errant server logging line 2019-07-31 01:40:39 -07:00
Michael Lange 951570e72a fixup-integrate-file-component 2019-07-31 01:39:59 -07:00
Michael Lange 6f519c9037 Add file mocks to every mirage scenario 2019-07-30 17:25:50 -07:00
Michael Lange fb0428fef3 Test coverage for task-file component 2019-07-30 17:25:49 -07:00