Skip to content

Commit

Permalink
MB-12222: update ui-router to version 1.0.0 alpha0
Browse files Browse the repository at this point in the history
We have to use latest ui router because it has transitionsProvider,
we need transitionsProvider in order to properly handle transition
to the state with rbac permissions
https://github.com/angular-ui/ui-router/releases/tag/1.0.0alpha0

Old ui-router is deprecated
https://github.com/angular-ui/ui-router/releases/tag/0.2.17

Process of migrating is pretty smooth, although there are couple bugs
angular-ui/ui-router#2504
angular-ui/ui-router#2503

Change-Id: I67fc81adecf5ebf9cf294171d5583f8555696cee
Reviewed-on: http://review.couchbase.org/59318
Reviewed-by: Dave Finlay <dave.finlay@couchbase.com>
Tested-by: Dave Finlay <dave.finlay@couchbase.com>
  • Loading branch information
pavel-blagodov authored and dave-finlay committed Feb 17, 2016
1 parent 51482e2 commit cc7ef04
Show file tree
Hide file tree
Showing 8 changed files with 4,353 additions and 4,421 deletions.
63 changes: 22 additions & 41 deletions priv/public/ui/app/app.js
Original file line number Diff line number Diff line change
Expand Up @@ -10,18 +10,10 @@
'ui.bootstrap'
]).run(appRun);

function appRun($rootScope, $state, $urlRouter, mnPools, $uibModalStack, $window, $exceptionHandler, $http, $templateCache, mnPendingQueryKeeper) {
var originalOnerror = $window.onerror;
function appRun($state, $urlRouter, $exceptionHandler, mnPools, $window, $http, $templateCache, $transitions) {

var originalOnerror = $window.onerror;
$window.onerror = onError;
$rootScope.$on('$stateChangeError', onStateChangeError);
$rootScope.$on('$stateChangeStart', onStateChangeStart);
$rootScope.$on('$locationChangeSuccess', onLocationChangeSuccess);
$urlRouter.listen();
angular.forEach(angularTemplatesList, function (url) {
$http.get(url, {cache: $templateCache});
});

function onError(message, url, lineNumber, columnNumber, exception) {
$exceptionHandler({
message: message,
Expand All @@ -32,37 +24,26 @@
});
originalOnerror && originalOnerror.apply($window, Array.prototype.slice.call(arguments));
}
function onStateChangeError(event, toState, toParams, fromState, fromParams, error) {
$exceptionHandler(error);
}
function onStateChangeStart(event, toState, toParams, fromState, fromParams, error) {
if (fromState.name.indexOf('app.admin') > -1 && toState.name.indexOf('app.admin') > -1) {
if ($uibModalStack.getTop()) {
return event.preventDefault();
}
mnPools.get().then(function (pools) {
var required = (toState.data && toState.data.required) || {};
var isOnlyForEnterprise = (required.enterprise && !pools.isEnterprise);
if (isOnlyForEnterprise) {
event.preventDefault();
return $state.go('app.admin.overview');
}
});

angular.forEach(angularTemplatesList, function (url) {
$http.get(url, {cache: $templateCache});
});

mnPools.get().then(function (pools) {
if (!pools.isInitialized) {
return $state.go('app.wizard.welcome');
}
}
function onLocationChangeSuccess(event) {
event.preventDefault();
mnPools.get().then(function (pools) {
if (pools.isInitialized) {
$urlRouter.sync();
} else {
$state.go('app.wizard.welcome');
}
}, function (resp) {
switch (resp.status) {
case 401: return $state.go('app.auth');
}
});
}
}, function (resp) {
switch (resp.status) {
case 401: return $state.go('app.auth');
}
}).then(function () {
$urlRouter.listen();
$urlRouter.sync();
})

$transitions.defaultErrorHandler(function (error) {
error && $exceptionHandler(error);
});
}
})();
64 changes: 62 additions & 2 deletions priv/public/ui/app/app_config.js
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@
.module('app')
.config(appConfig);

function appConfig($httpProvider, $stateProvider, $urlRouterProvider, $uibModalProvider) {
function appConfig($httpProvider, $stateProvider, $urlRouterProvider, $uibModalProvider, $transitionsProvider) {
$httpProvider.defaults.headers.common['invalid-auth-response'] = 'on';
$httpProvider.defaults.headers.common['Cache-Control'] = 'no-cache';
$httpProvider.defaults.headers.common['Pragma'] = 'no-cache';
Expand All @@ -29,7 +29,67 @@
template: '<div ui-view="" />'
});

$transitionsProvider.onBefore({
to: "app.admin.**",
from: "app.admin.**"
}, function ($uibModalStack) {
return !$uibModalStack.getTop();
});
$transitionsProvider.onBefore({
to: "app.admin.**",
from: "app.auth"
}, function (mnPools) {
return mnPools.get().then(function () {
return true;
}, function (resp) {
switch (resp.status) {
case 401: return false;
}
});
});
$transitionsProvider.onBefore({
from: "app.wizard.**",
to: "app.auth"
}, function (mnPools) {
return mnPools.get().then(function (pools) {
return pools.isInitialized;
});
});
$transitionsProvider.onBefore({
from: "app.admin.**",
to: "app.auth"
}, function (mnPools) {
return mnPools.get().then(function () {
return false;
}, function (resp) {
switch (resp.status) {
case 401: return true;
}
});
});
$transitionsProvider.onStart({
to: function (state) {
return state.data && state.data.permissions;
}
}, function ($state, $parse, mnPermissions, $transition$) {
return mnPermissions.check().then(function() {
if (!$parse($transition$.to().data.permissions)(mnPermissions.export)) {
return false;
}
});
});
$transitionsProvider.onStart({
to: function (state) {
return state.data && state.data.required && state.data.required.enterprise;
}
}, function ($state, mnPools) {
return mnPools.get().then(function (pools) {
if (!pools.isEnterprise) {
return false;
}
});
});

$urlRouterProvider.deferIntercept();
$urlRouterProvider.otherwise('/overview');
}
})();
6 changes: 3 additions & 3 deletions priv/public/ui/app/components/mn_helper.js
Original file line number Diff line number Diff line change
Expand Up @@ -71,11 +71,11 @@
var stateParams = {};
if ($scope.isDetailsOpened(hashValue)) {
stateParams[hashKey] = _.difference(currentlyOpened, [String(hashValue)]);
$state.go(stateName, stateParams, {notify: false});
$state.go(stateName, stateParams);
} else {
currentlyOpened.push(String(hashValue));
stateParams[hashKey] = currentlyOpened;
$state.go(stateName, stateParams, {notify: false});
$state.go(stateName, stateParams);
}
};
}
Expand All @@ -87,7 +87,7 @@
}
function reloadState() {
mnPendingQueryKeeper.cancelAllQueries();
$state.transitionTo($state.current, $stateParams, {reload: true, inherit: true, notify: true});
$state.transitionTo($state.current, $stateParams, {reload: true, inherit: true});
}
}
}
Expand Down
3 changes: 3 additions & 0 deletions priv/public/ui/app/mn_admin/mn_admin_config.js
Original file line number Diff line number Diff line change
Expand Up @@ -121,6 +121,7 @@
.state('app.admin.analytics.list', {
abstract: true,
url: '?openedStatsBlock',
// reloadOnSearch: false, should be uncomented after this fix will be merget https://github.com/angular-ui/ui-router/issues/2470
params: {
openedStatsBlock: {
array: true
Expand Down Expand Up @@ -169,6 +170,7 @@
array: true
}
},
reloadOnSearch: false,
views: {
"": {
controller: 'mnBucketsController as bucketsCtl',
Expand Down Expand Up @@ -196,6 +198,7 @@
array: true
}
},
reloadOnSearch: false,
views: {
"" : {
controller: 'mnServersListController as serversListCtl',
Expand Down
7 changes: 4 additions & 3 deletions priv/public/ui/app/mn_admin/mn_indexes/mn_indexes_config.js
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,9 @@
value: null
}
},
resolve: {
setDefaultBucketName: mnHelperProvider.setDefaultBucketName("viewsBucket", 'app.admin.indexes.views.list')
},
templateUrl: 'app/mn_admin/mn_indexes/mn_views/mn_views.html',
controller: 'mnViewsController as viewsCtl'
})
Expand All @@ -32,9 +35,6 @@
value: 'development'
}
},
resolve: {
setDefaultBucketName: mnHelperProvider.setDefaultBucketName("viewsBucket", 'app.admin.indexes.views.list')
},
controller: 'mnViewsListController as viewsListCtl',
templateUrl: 'app/mn_admin/mn_indexes/mn_views/list/mn_views_list.html'
})
Expand Down Expand Up @@ -64,6 +64,7 @@
array: true
}
},
reloadOnSearch: false,
controller: "mnGsiController as gsiCtl",
templateUrl: "app/mn_admin/mn_indexes/mn_gsi/mn_gsi.html"
});
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -32,6 +32,9 @@
}

function buildViewUrl(params) {
if (!params || !params.documentId) {
return;
}
var params = _.clone(params);
if (params.documentId.slice(0, "_design/".length) === "_design/") {
params.documentId = "_design/" + encodeURIComponent(params.documentId.slice("_design/".length));
Expand Down
3 changes: 1 addition & 2 deletions priv/public/ui/app/mn_auth/mn_auth_config.js
Original file line number Diff line number Diff line change
Expand Up @@ -9,9 +9,8 @@

function mnAuthConfig($stateProvider, $httpProvider, $urlRouterProvider) {
$httpProvider.interceptors.push(['$q', '$injector', interceptorOf401]);
$urlRouterProvider.when('', '/auth');
$urlRouterProvider.when('/', '/auth');
$stateProvider.state('app.auth', {
url: "/auth",
templateUrl: 'app/mn_auth/mn_auth.html',
controller: 'mnAuthController as authCtl'
});
Expand Down
Loading

0 comments on commit cc7ef04

Please sign in to comment.