Migrate router and <app-view> to React (#4525)

* Migrate router and <app-view> to React: skeleton

* Update layout on route change

* Start moving page routes from angular to react

* Move page routes to react except of public dashboard and visualization embed)

* Move public dashboard and visualization embed routes to React

* Replace $route/$routeParams usages

* Some cleanup

* Replace AngularJS $location service with implementation based on history library

* Minor fix to how ApplicationView handles route change

* Explicitly use global layout for each page instead of handling related stuff in ApplicationArea component

* Error handling

* Remove AngularJS and related dependencies

* Move Parameter factory method to a separate file

* Fix CSS (replace custom components with classes)

* Fix: keep other url parts when updating location partially; refine code

* Fix tests

* Make router work in multi-org mode (respect <base> tag)

* Optimzation: don't resolve route if path didn't change

* Fix search input in header; error handling improvement (handle more errors in pages; global error handler for unhandled errors; dialog dismiss 'unhandled rejection' errors)

* Fix page keys; fix navigateTo calls (third parameter not available)

* Use relative links

* Router: ignore location REPLACE events, resolve only on PUSH/POP

* Fix tests

* Remove unused jQuery reference

* Show error from backend when creating Destination

* Remove route.resolve where not necessary (used constant values)

* New Query page: keep state on saving, reload when creating another new query

* Use currentRoute.key instead of hard-coded keys for page components

* Tidy up Router

* Tidy up location service

* Fix tests

* Don't add parameters changes to browser's history

* Fix test (improved fix)

Co-authored-by: Gabriel Dutra <nesk.frz@gmail.com>
This commit is contained in:
Levko Kravets
2020-01-20 20:56:37 +02:00
committed by GitHub
parent a891160b4d
commit a682265e13
114 changed files with 2237 additions and 1975 deletions

View File

@@ -1,12 +1,4 @@
import { isNull, isObject, isFunction, isUndefined, isEqual, has, omit, isArray, each } from "lodash";
import {
TextParameter,
NumberParameter,
EnumParameter,
QueryBasedDropdownParameter,
DateParameter,
DateRangeParameter,
} from ".";
class Parameter {
constructor(parameter, parentQueryId) {
@@ -23,27 +15,6 @@ class Parameter {
this.urlPrefix = "p_";
}
static create(param, parentQueryId) {
switch (param.type) {
case "number":
return new NumberParameter(param, parentQueryId);
case "enum":
return new EnumParameter(param, parentQueryId);
case "query":
return new QueryBasedDropdownParameter(param, parentQueryId);
case "date":
case "datetime-local":
case "datetime-with-seconds":
return new DateParameter(param, parentQueryId);
case "date-range":
case "datetime-range":
case "datetime-range-with-seconds":
return new DateRangeParameter(param, parentQueryId);
default:
return new TextParameter({ ...param, type: "text" }, parentQueryId);
}
}
static getExecutionValue(param, extra = {}) {
if (!isObject(param) || !isFunction(param.getExecutionValue)) {
return null;
@@ -73,10 +44,6 @@ class Parameter {
return this.$$value;
}
clone() {
return Parameter.create(this, this.parentQueryId);
}
isEmptyValue(value) {
return isNull(this.normalizeValue(value));
}