Merge "[CORD-772] Onboarding GUI Extensions and persisting them in xos-core"
diff --git a/conf/app/app.config.production.js b/conf/app/app.config.production.js
index 8f5bd5a..cf92947 100644
--- a/conf/app/app.config.production.js
+++ b/conf/app/app.config.production.js
@@ -1,5 +1,5 @@
angular.module('app')
.constant('AppConfig', {
- apiEndpoint: '/spa/api',
+ apiEndpoint: '/xosapi/v1',
websocketClient: '/'
});
diff --git a/conf/browsersync-dist.conf.js b/conf/browsersync-dist.conf.js
index cbefe1d..d80f1ef 100644
--- a/conf/browsersync-dist.conf.js
+++ b/conf/browsersync-dist.conf.js
@@ -1,4 +1,5 @@
const conf = require('./gulp.conf');
+const proxy = require('./proxy');
module.exports = function () {
return {
@@ -6,10 +7,18 @@
baseDir: [
conf.paths.dist
],
+ middleware: function(req, res, next){
+ if (req.url.indexOf('xosapi') !== -1) {
+ proxy.web(req, res);
+ }
+ else{
+ next();
+ }
+ },
routes: {
"/spa": "./dist"
}
},
- open: false
+ open: true
};
};
diff --git a/conf/browsersync.conf.js b/conf/browsersync.conf.js
index e8c38fa..dd7acd5 100644
--- a/conf/browsersync.conf.js
+++ b/conf/browsersync.conf.js
@@ -1,18 +1,5 @@
const conf = require('./gulp.conf');
-const httpProxy = require('http-proxy');
-
-// TODO move the proxy config in a separate file and share with browsersync.dist.js
-
-const proxy = httpProxy.createProxyServer({
- target: 'http://xos.dev:9101'
-});
-
-proxy.on('error', function(error, req, res) {
- res.writeHead(500, {
- 'Content-Type': 'text/plain'
- });
- console.error('[Proxy]', error);
-});
+const proxy = require('./proxy');
module.exports = function () {
return {
diff --git a/conf/proxy.js b/conf/proxy.js
new file mode 100644
index 0000000..daec1a8
--- /dev/null
+++ b/conf/proxy.js
@@ -0,0 +1,14 @@
+const httpProxy = require('http-proxy');
+
+const proxy = httpProxy.createProxyServer({
+ target: 'http://xos.dev:9101'
+});
+
+proxy.on('error', function(error, req, res) {
+ res.writeHead(500, {
+ 'Content-Type': 'text/plain'
+ });
+ console.error('[Proxy]', error);
+});
+
+module.exports = proxy;
\ No newline at end of file
diff --git a/src/app/core/nav/nav.ts b/src/app/core/nav/nav.ts
index f537e5e..2082efb 100644
--- a/src/app/core/nav/nav.ts
+++ b/src/app/core/nav/nav.ts
@@ -21,10 +21,6 @@
private XosSidePanel: IXosSidePanelService,
private XosComponentInjector: IXosComponentInjectorService
) {
- // NOTE we'll need to have:
- // - Base routes (defined from configuration based on BRAND)
- // - Autogenerated routes (nested somewhere)
- // - Service Routes (dynamically added)
this.routes = [];
this.$scope.$watch(() => this.navigationService.query(), (routes) => {
this.routes = routes;
diff --git a/src/app/datasources/helpers/model-discoverer.service.ts b/src/app/datasources/helpers/model-discoverer.service.ts
index deaed33..da6f265 100644
--- a/src/app/datasources/helpers/model-discoverer.service.ts
+++ b/src/app/datasources/helpers/model-discoverer.service.ts
@@ -62,6 +62,7 @@
const pArray = [];
_.forEach(modelsDef, (model: IXosModeldef) => {
+ this.$log.debug(`[XosModelDiscovererService] Loading: ${model.name}`);
let p = this.cacheModelEntries(model)
.then(model => {
return this.addState(model);
@@ -167,15 +168,20 @@
},
component: 'xosCrud',
};
- this.XosRuntimeStates.addState(
- this.stateNameFromModel(model),
- state
- );
- // extend model
- model.clientUrl = `${this.serviceNameFromAppName(model.app)}${clientUrl}`;
+ try {
+ this.XosRuntimeStates.addState(
+ this.stateNameFromModel(model),
+ state
+ );
- d.resolve(model);
+ // extend model
+ model.clientUrl = `${this.serviceNameFromAppName(model.app)}${clientUrl}`;
+
+ d.resolve(model);
+ } catch (e) {
+ d.reject(e);
+ }
return d.promise;
}
@@ -186,13 +192,17 @@
const parentState: string = this.getParentStateFromModel(model);
- this.XosNavigationService.add({
- label: this.ConfigHelpers.pluralize(model.name),
- state: stateName,
- parent: parentState
- });
+ try {
+ this.XosNavigationService.add({
+ label: this.ConfigHelpers.pluralize(model.name),
+ state: stateName,
+ parent: parentState
+ });
+ d.resolve(model);
+ } catch (e) {
+ d.reject(e);
+ }
- d.resolve(model);
return d.promise;
}