refactor intermittent failure endpoints and add query param serializer
to provide query param validation. Add tree and bug_id validation in
view. Refactor redux fetch actions to catch all errors. Add error
message component using bootstrap alerts.
Two instances have been left using lodash for now, since `Math.max()`
does not preserve `Date()` objects unlike lodash. These cases have
been converted to use the tree-shaking compatible import form.
The dates were all off because the toShortDateStr function
expects timestamps in seconds, but we were passing
milliseconds. Just need to divide by 1000.
* Remove vestigial pinboard service file
* Test cleanup: hanging commas, arrow functions, quotes, etc.
* Fix async job tests. Using .then meant they sometimes didn't
return before the test run completedand would throw a warning
AND not execute the test ``expect``.
* Fix resultset tests fetching
Some models changed to use ``fetch`` so we needed to use
``fetchMock`` instead of ``$httpBackend`` for setting expected results.
* Fix warnings in bugfiler tests: We needed to pass some dummy objects
for PropTypes that are required.
* Fix warnings in JobGroup tests: We needed to pass some dummy objects
for PropTypes that are required here, too.
* Prevent flicker when switching from Perfherder to Treeherder
The page would reload an extra time while the route gets changed.
This way, we set it to the default route directly.
* Cleanup displayed message when an invalid "repo" param is set
* Improve the logic in _checkFieldFilters
* Have Perfherder use React login
This somewhat improves the accessibility of Treeherder for blind users, as a screen reader can read the title attribute, and the user doesn't need to open each log to find the status.
Using components based on react-linkify, we can replace all
usages of dangerouslySetInnerHtml. This also allowed us
to remove a few related helper functions.
enable no-danger eslint rule
Also convert term resultState back to resultStatus
I had wanted to migrate to using "resultState" instead, as it
seemed more descriptive of what it is. But the filter params
are using "resultStatus" and it would not be worth
the effort to migrate. It doesn't really matter, but I want to be
consistent to remove confusion, so moving these terms back
to "resultStatus"-ish names.