Commit Graph

144 Commits

Author SHA1 Message Date
John Cowen a4f51ed144
Merge pull request #4280 from hashicorp/bugfix/encode-all-svg-colors
Encode all the hexcodes
2018-07-03 10:44:36 +01:00
John Cowen 04308c8e8d Move testing doubles to use data embedded in the HTML vs HTTP/fetch
Previously `api-double` usage in ember would require a bunch of `fetch`
requests to pull in the 'api double', this had a number of disadvantages.

1. The doubles needed to be available via HTTP, which meant a short term
solution of rsyncing the double files over to `public` in order to be served
over HTTP. An alternative to that would have been figuring out how to serve
something straight from `node_modules`, which would have been preferable.

2. ember/testem would not serve dot files (so anything starting with a
., like `.config`. To solve this via ember/testem would have involved
digging in to understand how to enable the serving of dot files.

3. ember/testem automatically rewrote urls for non-existant files to
folders, i.e. adding a slash for you, so `/v1/connect/intentions` would
be rewritten to `/v1/connect/intentions/`. This is undesirable, and
solving this via ember/testem would have involved digging deep to
disable that.

Serving the files via HTTP has now changed. The double files are now
embedded into the HTML has 'embedded templates' that can be found by
using the url of the file and a simple `querySelector`. This of course
only happens during testing and means I can fully control the 'serving'
of the doubles now, so I can say goodbye to the need to move files
around, worry about the need to serve dotfiles and the undesirable
trailing slashes rewriting. Winner!

Find the files and embedding them is done using a straightforward
recursive-readdir-sync (the `content-for` functionality is a synchronous
api) as oppose to getting stuck into `broccoli`.
2018-07-02 19:02:16 +01:00
John Cowen 6738f9ab71 Tweak vocabulary to match new step vocab 2018-07-02 16:49:13 +01:00
John Cowen b3386ec749 Encode all the hexcodes 2018-06-26 10:48:26 +01:00
mkeeler 1da3c42867 Merge remote-tracking branch 'connect/f-connect' 2018-06-25 19:42:51 +00:00
John Cowen cb11361511 Change the appearance of `*` for intention listings
1. Use 'All Services (*)' as opposed to '*'
2. Set 'Destination' in teh same bold font as 'Source'
3. Ensure you can search for all services by using '*' or 'All Services
(*)'
2018-06-25 12:26:18 -07:00
John Cowen 9e3f3780fa Check for NOT connect-proxy 2018-06-25 12:25:40 -07:00
John Cowen ceabb8b439 Filter Source and Destination menus by Kind 2018-06-25 12:25:40 -07:00
John Cowen 2f56c6e1be Fix linting typo, caused the selection of future services to break 2018-06-25 12:25:40 -07:00
John Cowen b351c170a7 Move intentions menu item to after ACLs 2018-06-25 12:25:37 -07:00
John Cowen 4280c78330 Lint 2018-06-25 12:25:16 -07:00
John Cowen 181cb6e1b5 Icons in the filter bar 2018-06-25 12:25:15 -07:00
John Cowen 90f01ffbd8 Validate all the things, all the time 2018-06-25 12:25:15 -07:00
John Cowen cd67636bb8 More detailed error messages for duplicate intentions 2018-06-25 12:25:15 -07:00
John Cowen 1c4b1ee798 Only offer to create a future service if the name doesn't already exist 2018-06-25 12:25:15 -07:00
John Cowen f914a760fc Make sure future services are available when editing intentions 2018-06-25 12:25:15 -07:00
John Cowen e51a8fd5c1 Add support for specifying future services and wildcards 2018-06-25 12:25:15 -07:00
John Cowen c110338cfa Tie up real endpoints 2018-06-25 12:25:15 -07:00
John Cowen 87d128971c Switch to single selects rather than inputs 2018-06-25 12:25:15 -07:00
John Cowen 33d823c53d Have a look at power select for select elements 2018-06-25 12:25:14 -07:00
John Cowen 5d5936fba6 Add intentions actions mixin 2018-06-25 12:25:14 -07:00
John Cowen 5263d04317 Remove SourceType for the moment 2018-06-25 12:25:14 -07:00
John Cowen 15d01f1d90 Include logger for generated tests 2018-06-25 12:25:14 -07:00
John Cowen 96ea5b799a WIP: First draft intentions
1. Listing, filtering by action and searching by source name and
destination name
2. Edit/Create page, edits ping the API double fine, need to work through
creates and deletes
3. Currently uses a `Precedence` intention keyname that doesn't yet
exist in the real API
2018-06-25 12:25:14 -07:00
John Cowen 4756d97c9a WIP: Logger 2018-06-25 12:25:14 -07:00
John Cowen 7f821cbd17 Reset `<html class>` after every test, back to its original static value 2018-06-25 12:11:01 +01:00
John Cowen 25f90fbcdd Make sure the dc menu is as useful as possible when things go wrong
1. Check the dc's model for both dcs list and the requested dc.
2. If the dc model doesn't exist use and empty array for dcs and a fake
dc with the Name 'Error' as we can't even trust what is in the
`paramsFor`
2018-06-22 17:23:00 +01:00
John Cowen ca33085ad2
Merge branch 'master' into feature/ui-node-ports-for-service 2018-06-22 17:17:03 +01:00
John Cowen 4db6f80de6
Merge pull request #4251 from hashicorp/bugfix/ui-null-tokens
Ensure a blank/empty token is sent if the localStorage kv doesn't exist
2018-06-22 16:36:20 +01:00
John Cowen 9861201c3c
Merge pull request #4253 from hashicorp/feature/ui-clearer-tags
UI - Clearer tags
2018-06-22 09:24:13 +01:00
John Cowen 57e7ab7ef8
Merge pull request #4259 from hashicorp/feature/failing-ttl-test
[BUGFIX] UI - Make sure lock session TTLs are shown
2018-06-21 20:33:03 +01:00
John Cowen 3325872daf Add a beforeModel hook at dc/index to auto transition to services 2018-06-21 12:49:00 +01:00
John Cowen b0805ffa4e Merge remote-tracking branch 'shilov/master' into feature/failing-ttl-test 2018-06-21 11:14:01 +01:00
John Cowen 2c495a9382 Fix up following rebase, use array of strings rather than its own func 2018-06-21 11:06:45 +01:00
John Cowen 6d55c7a98c Add a failing test to show that lock session TTL's are not shown 2018-06-21 10:56:38 +01:00
Matt Keeler 3c63d3dbb0
Merge pull request #4245 from hashicorp/release-build-updates
Release build updates
2018-06-20 21:01:36 -04:00
John Cowen 224aa2733d Add missing scss file 2018-06-20 15:33:42 +01:00
John Cowen 5dd79165b8 Make sure the updated tag view doesn't break the tests 2018-06-20 15:26:22 +01:00
John Cowen d64528665d Use the pill styling elsewhere...
TODO: Probably change the %tag to %pill now I've remembered the word I was
looking for!
2018-06-20 15:14:16 +01:00
John Cowen 4de710f0ec Make sure token is set to blank if nothing is typed in settings 2018-06-20 14:38:54 +01:00
John Cowen fb5c2f737b Add a reusable %tag and use it for the ACL 'tags' ready to use elsewhere 2018-06-20 14:01:42 +01:00
John Cowen edc67aba44 Make sure the colon doesn't wrap with lots of tags 2018-06-20 13:44:36 +01:00
John Cowen cd45c420c6 Add port the service is running on for each node in the service view 2018-06-20 13:08:59 +01:00
John Cowen 2aaacd3ff4 Ensure a blank token is sent if the localStorage kv doesn't exist 2018-06-20 10:32:35 +01:00
John Cowen 43a6ebc7bd
Merge pull request #4247 from hashicorp/feature/acl-sort-by-name
UI - Sort ACL tokens by name
2018-06-20 09:18:36 +01:00
John Cowen 5016899964
Merge pull request #4242 from hashicorp/feature/ui-code-editor-autosizing
Sets code editor height to be automatic (growable), with a reasonable min height
2018-06-20 09:18:14 +01:00
John Cowen 452888e6ad
Merge branch 'master' into bugfix/gh-4203-multi-tags 2018-06-20 09:17:23 +01:00
John Cowen 145c05aeb2
Merge pull request #4228 from hashicorp/feature/minor-css-amends
UI - minor css amends
2018-06-20 09:15:34 +01:00
Matt Keeler 5c9275c60b Update ui-v2 makefile to handle updating node_modules when needed
Also dont include the dist and node_modules folders in the build context.
2018-06-19 13:51:49 -04:00
John Cowen 0e3d855734 Sort ACL tokens by name 2018-06-19 10:51:31 +01:00
John Cowen 6bae5e431c Make sure the body background is white 2018-06-19 10:25:41 +01:00
Stanley Shilov 51731e13be Sessions TTL should be of type string in ui-v2 2018-06-18 13:41:22 -05:00
John Cowen 7cd5e413ee Sets code editor height to be auto, with a reasonable min height 2018-06-18 19:07:57 +01:00
John Cowen b7a15e6616 Ensure all tags for a service are listed on the service detail page 2018-06-18 15:38:52 +01:00
Matt Keeler 3884d10de4 Add rsync so the ui can build again
Also add back the init target to the ui-v2 makefile
2018-06-15 14:44:14 -04:00
Matt Keeler 9653a66f92 Merge remote-tracking branch 'origin/master' into release-build-updates
# Conflicts:
#	scripts/consul-builder/Dockerfile
#	ui-v2/GNUmakefile
2018-06-15 14:40:09 -04:00
John Cowen 81cb065a04 Move the rsync dependency to the test scripts for now.
1. You only need the fixtures for testing, don't force rsync on people
for just building
2. Eventually this will go and be replaced by something broccoli-y
2018-06-15 16:11:14 +01:00
John Cowen 3d1f4e59a8 Find a way to test pre-ember load
1. Also add index.html things to test/index.html
2. Use content-for to hedge against keeping content in sync (requires an
addon)
3. Test passes but only when run on its own, as we need to rely on
content in the QUnit runner, theoretically it is not running our test in
isolation. Skipping the test for the moment so we don't have a filaing
test when all run together
2018-06-15 13:56:45 +01:00
John Cowen 3ef05bd719 Move healthcheck text down by 1px 2018-06-14 17:19:46 +01:00
John Cowen 7f7325e05e Ensure startup/load image is removed if you hit an error on first load 2018-06-14 17:19:45 +01:00
John Cowen 597538354f
Merge pull request #4225 from hashicorp/bugfix/hide-anon-acl-delete
[BUGFIX] Remove anonymous ACL delete button in the listing
2018-06-14 16:58:07 +01:00
John Cowen 9aa86d892d Add test for not showing the delete button for the first acl...
Also, change the action group page objects to use data-test attributes
instead of last-child which isn't reliable (and stay consistent)
2018-06-14 15:01:54 +01:00
John Cowen 8a1c361e17 Disable the delete button in the acl list for the anon token only 2018-06-14 13:34:38 +01:00
John Cowen 143e1b7b37 Add a test for searching by token 2018-06-14 13:15:56 +01:00
John Cowen bf30902812 Add searching ACL's by token 2018-06-14 13:06:02 +01:00
John Cowen 92fff1f736 Comment up custom visitable and add a couple of comments to be clearer 2018-06-12 11:24:36 +01:00
John Cowen 26e69d2ad1 Use defaultValue for making sure Name is at least '' 2018-06-12 11:24:36 +01:00
John Cowen edea43e8a0 Prevent being able to submit a create form with empty values 2018-06-12 11:24:36 +01:00
John Cowen b29d2acb08 Explicitly sort by Key after folder/file 2018-06-12 11:24:36 +01:00
John Cowen e34eec4bef Remove buts 2018-06-12 11:24:36 +01:00
John Cowen 29196d3f49 Make this steps file the same as the others...
WIP: Ideally all of these would go
2018-06-12 11:24:36 +01:00
John Cowen 6e993ecc10 Make sure KV clicking is tested (WIP) 2018-06-12 11:24:36 +01:00
John Cowen dec7883b5e Tweak vocab 2018-06-12 11:24:36 +01:00
John Cowen d3651097ea Add a couple more unit tests for the utils folder 2018-06-12 11:24:36 +01:00
John Cowen e92fce188a Upgrade consul-api-double 2018-06-12 11:24:36 +01:00
John Cowen 0558e4a401 Add some delete testing to KV and ACL 2018-06-12 11:24:36 +01:00
John Cowen 817aef9f5c QSA doesn't like searching with sibling selectors, make a `sibling` 2018-06-12 11:24:36 +01:00
John Cowen cfc05fb413 Make sure `didAppear` and therefore `resize` is called on change
Tables need to calculate their sizing depending on other things in the
DOM. When a table is in a tab panel, some of these things aren't visible
and therefore some values are zero during `didInsertElement`.

This commit ensures that the resize calc of the table is performed when
it's parent tab is clicked (and therefore when the table 'appears')
2018-06-12 11:24:36 +01:00
John Cowen 433ba16f17 WIP: Make sure I can get the values I need to calculate sizing
`rect.top` is zero until the tab panel becomes visible, resize will need
to be called when the tab is clicked also
2018-06-12 11:24:36 +01:00
John Cowen c909c00f6c Remove some pauses 2018-06-12 11:24:36 +01:00
John Cowen 19a686ac7a Move testing bits to hashicorp org, also..
Go with `rsync` over `cp` for putting the api double into public for the
moment
2018-06-12 11:24:35 +01:00
John Cowen 2a95e8177e Bump 2018-06-12 11:24:35 +01:00
John Cowen db1275f2eb WIP: Feature/acceptance tests 2018-06-12 11:24:35 +01:00
John Cowen 47730f96ea Fix tear down click handler problem in tests
It's not obvious what "the way" to teardown window event handlers is in
Ember. The datacenter-picker is permanently in the app during usage, but
in tests I'm assuming it gets added and removed lots.

So when you run the tests, as the tests aren't run in an isolated runner
the QUnit test runner ends up with a click handler on it, So if you
click on the test runner one of the tests will fail.

The failure is related to there not being an element with a `.contains`
method. So this checks that the element is truthy first, i.e. it exists.
If it doesn't it just bails out.
2018-06-12 11:24:35 +01:00
John Cowen 284f9bd33d Use `this.element` for context, thus avoiding jQuery, plus..
Add comments for clarity
2018-06-12 11:24:35 +01:00
John Cowen b0f33c132f Tweak placeholder text to add 'port' 2018-06-12 11:24:35 +01:00
John Cowen d38a25bb9a Adds filtering to the KV listing page 2018-06-12 11:24:35 +01:00
John Cowen c1742a89dd Prevent action groups from being cutoff by the footer
1. Calculate where group is going to be, if it will get cut off, then
dropup instead of down
2. As the action group can now drop up, the z-index should be higher
than the previous rows, so add a top z-index higher than the others and
use that when opened
2018-06-12 11:24:35 +01:00
John Cowen 9c43498354 Auto calculate the height of the tables depending on the space left
Additionally make the footer lookup more unique seeing as we are in js
here
2018-06-12 11:24:35 +01:00
John Cowen fddc36f02f Change KV inputs to textareas, also JSON > CODE
As the input field was used for KV's it looked like you couldn't save
multiline KV's. Changed to textarea so you can see the multilines.

Also, JSON is slightly misleading as clicking the toggle doesn't
necessarily mean 'I'm going to edit some JSON' it means I want the code
editor with syntax highlighting, so renamed the toggle to say 'Code'
2018-06-12 11:24:35 +01:00
John Cowen b9c23dee69 Enable searching by port in the Node > [Service] listing 2018-06-12 11:24:35 +01:00
Matt Keeler d7a0d61e7d Initial progress on build system updates 2018-06-08 10:20:54 -04:00
John Cowen cec146d2a3
Session Delete confirmation button and KV console error message (#4109)
Fix session invalidation in table confirmation dialog, plus console error message when deleting deep KV's
2018-05-11 16:25:35 +01:00
John Cowen ca15998b51
UI V2 (#4086)
* Move settings to use the same service/route API as the rest of the app

* Put some ideas down for unit testing on adapters

* Favour `Model` over `Entity`

* Move away from using `reopen` to using Mixins

* Amend messages, comment/document some usage

* Make sure the returns are consistent in normalizePayload, also

Add some todo's in to remind me to think consider this further at a
later date. For example, is normalizePayload to be a hook or an
overridable method

* Start stripping back the HTML to semantics

* Use a variable rather than chaining

* Remove unused helpers

* Start picking through the new designs, start with listing pages

* First draft HTML for every page

* Making progress on the CSS

* Keep plugging away at the catalog css

* Looking at scrolling

* Wire up filtering

* Sort out filter counting, more or less done a few outstanding

* Start knocking the forms into shape

* Add in codemirror

* Keep moving forwards with the form like layouts

* Start looking at ACL editing page, add footer in

* Pull the filters back in, look at an autoresizer for scroll views

* First draft toggles

* 2nd draft healthcheck icons

* Tweak node healthcheck icons

* Looking at healthcheck detail icons

* Tweak the filter-bar and add selections to the in content tabs

* Add ACL create, pill-like acl type highlight

* Tweaking the main nav some more

* Working on the filter-bar and freetext-filter

* Masonry layout

* Stick with `checks` instead of healthy/unhealthy

* Fix up the filter numbers/counts

* Use the thead for a measure

* First draft tomography back in

* First draft DC dropdown

* Add a temporary create buttong to kv's

* Move KV and ACL to use a create page

* Move tags

* Run through old tests

* Injectable server

* Start adding test attributes

* Add some page objects

* More test attributes and pages

* Acl filter objects

* Add a page.. page object

* Clickable items in lists

* Add rest/spread babel plugin, remove mirage for now

* Add fix for ember-collection

* Keep track of acl filters

* ember-cli-page-object

* ember-test-selectors

* ui: update version of ui compile deps

* Update static assets

* Centralize radiogroup helper

* Rejig KV's and begin to clean it up

* Work around lack of Tags for the moment..

* Some little css tweaks and start to remove possibles

* Working on the dc page and incidentals

1. Sort the datacenter-picker list
2. Add a selected state to the datacenter-picker
3. Make dc an {Name: dc}
4. Add an env helper to get to 'env vars' from within templates

* Click outside stuff for the datacenter-picker, is-active on nav

* Make sure the dropdown CTA can be active

* Bump ember add pluralize helper

* Little try at sass based custom queries

* Rejig tablular collection so it deals with resizing, actions

1. WIP: start building actions dropdowns
2. Move tabular collection to deal with resizing to rule out differences

* First draft actions dropdowns

* Add ports, selectable IP's

* Flash messages, plus general cleanup/consistency

1. Add ember-cli-flash for flash messages
2. Move everything to get() instead of item.get
3. Spotted a few things that weren't consistent

* DOn't go lower than zero

* First draft vertical menu

* Missed a get, tweak dropmenu tick

* Big cleanup

1. this.get(), this.set() > get(), set()
2. assign > {...{}, ...{}}
3. Seperator > separator

* WIP: settings

* Moved things into a ui-v2 folder

* Decide on a way to do the settings page whilst maintaining the url + dc's

* Start some error pages

* Remove base64 polyfill

* Tie in settings, fix atob bug, tweak layout css

* Centralize confirmations into a component

* Allow switching between the old and new UI with the CONSUL_UI_BETA env var

Currently all the assets are packaged into a single AssetFS and a prefix is configured to switch between the two.

* Attempt at some updates to integrate the v2 ui build into the main infrastructure

* Add redirect to index.html for unknown paths

* Allow redictor to /index.html for new ui when using -ui-dir

* Take ACLs to the correct place on save

* First pass breadcrumbs

* Remove datacenter selector on the index page

* Tweak overall layout

* Make buttons 'resets'

* Tweak last DC stuff

* Validations plus kv keyname viewing tweaks

* Pull sessions back in

* Tweak the env vars to be more reusable

* Move isAnon to the view

* No items and disabled acl css

* ACL and KV details

1. Unauthorized page
2. Make sure the ACL is always selected when it needs it
3. Check record deletion with a changeset

* Few more acl tweaks/corrections

* Add no items view to node > services

* Tags for node > services

* Make sure we have tags

* Fix up the labels on the tomography graph

* Add node link (agent) to kv sessions

* Duplicate up `create` for KV 'root creation'

* Safety check for health checks

* Fix up the grids

* Truncate td a's, fix kv columns

* Watch for spaces in KV id's

* Move actions to their own mixins for now at least

* Link reset to settings incase I want to type it in

* Tweak error page

* Cleanup healthcheck icons in service listing

* Centralize errors and make getting back easier

* Nice numbers

* Compact buttons

* Some incidental css cleanups

* Use 'Key / Value' for root

* Tweak tomography layout

* Fix single healthcheck unhealthy resource

* Get loading screen ready

* Fix healthy healthcheck tick

* Everything in header starts white

* First draft loader

* Refactor the entire backend to use proper unique keys, plus..

1. Make unique keys form dc + slug (uid)
2. Fun with errors...

* Tweak header colors

* Add noopener noreferrer to external links

* Add supers to setupController

* Implement cloning, using ember-data...

* Move the more expensive down the switch order

* First draft empty record cleanup..

* Add the cusomt store test

* Temporarily use the htmlSafe prototype to remove the console warning

* Encode hashes in urls

* Go back to using title for errors for now

* Start removing unused bulma

* Lint

* WIP: Start looking at failing tests

* Remove single redirect test

* Finish off error message styling

* Add full ember-data cache invalidation to avoid stale data...

* Add uncolorable warning icons

* More info icon

* Rearrange single service, plus tag printing

* Logo

* No quotes

* Add a simple startup logo

* Tweak healthcheck statuses

* Fix border-color for healthchecks

* Tweak node tabs

* Catch 401 ACL errors and rethrow with the provided error message

* Remove old acl unauth and error routes

* Missed a super

* Make 'All' refer to number of checks, not services

* Remove ember-resizer, add autoprefixer

* Don't show tomography if its not worth it, viewify it more also

* Little model cleanup

* Chevrons

* Find a way to reliably set the class of html from the view

* Consistent html

* Make sure session id's are visible as long as possible

* Fix single service check count

* Add filters and searchs to the query string

* Don't remember the selected tab

* Change text

* Eror tweaking

* Use chevrons on all breadcrumbs even in kv's

* Clean up a file

* Tweak some messaging

* Makesure the footer overlays whats in the page

* Tweak KV errors

* Move json toggle over to the right

* feedback-dialog along with copy buttons

* Better confirmation dialogs

* Add git sha comment

* Same title as old UI

* Allow defaults

* Make sure value is a string

* WIP: Scrolling dropdowns/confirmations

* Add to kv's

* Remove set

* First pass trace

* Better table rows

* Pull over the hashi code editor styles

* Editor tweaks

* Responsive tabs

* Add number formatting to tomography

* Review whats left todo

* Lint

* Add a coordinate ember data triplet

* Bump in a v2.0.0

* Update old tests

* Get coverage working again

* Make sure query keys are also encoded

* Don't test console.error

* Unit test some more utils

* Tweak the size of the tabular collections

* Clean up gitignore

* Fix copy button rollovers

* Get healthcheck 'icon icons' onto the text baseline

* Tweak healthcheck padding and alignment

* Make sure commas kick in in rtt, probably never get to that

* Improve vertical menu

* Tweak dropdown active state to not have a bg

* Tweak paddings

* Search entire string not just 'startsWith'

* Button states

* Most buttons have 1px border

* More button tweaks

* You can only view kv folders

* CSS cleanup reduction

* Form input states and little cleanup

* More CSS reduction

* Sort checks by importance

* Fix click outside on datacenter picker

* Make sure table th's also auto calculate properly

* Make sure `json` isn't remembered in KV editing

* Fix recursive deletion in KV's

* Centralize size

* Catch updateRecord

* Don't double envode

* model > item consistency

* Action loading and ACL tweaks

* Add settings dependencies to acl tests

* Better loading

* utf-8 base64 encode/decode

* Don't hang off a prototype for htmlSafe

* Missing base64 files...

* Get atob/btoa polyfill right

* Shadowy rollovers

* Disabled button styling for primaries

* autofocuses only onload for now

* Fix footer centering

* Beginning of 'notices'

* Remove the isLocked disabling as we are letting you do what the API does

* Don't forget the documentation link for sessions

* Updates are more likely

* Use exported constant

* Dont export redirectFS and a few other PR updates

* Remove the old bootstrap config which was used for the old UI skin

* Use curlies for multiple properties
2018-05-10 19:52:53 +01:00