Skip to content
Snippets Groups Projects
Commit 055237b6 authored by Kyle Doherty's avatar Kyle Doherty
Browse files

single entry into app

parent df33e3d6
Branches
Tags
No related merge requests found
......@@ -24,7 +24,15 @@ var Corvus = angular.module('corvus', [
'corvus.operator', // this is a short term hack
'corvus.reserve',
'corvus.search',
'corvus.user'
'corvus.user',
'corvusadmin.index.controllers',
'corvusadmin.databases',
'corvusadmin.datasets',
'corvusadmin.emailreport',
'corvusadmin.people',
'corvusadmin.query',
'corvusadmin.annotation',
'corvusadmin.search'
]);
Corvus.config(['$routeProvider', '$locationProvider', function($routeProvider, $locationProvider) {
$locationProvider.html5Mode({
......@@ -44,6 +52,17 @@ Corvus.config(['$routeProvider', '$locationProvider', function($routeProvider, $
}
});
// admin routes
$routeProvider.when('/:orgSlug/admin/', {
templateUrl: '/app/admin/home.html',
controller: 'AdminHome'
});
$routeProvider.when('/:orgSlug/admin/test_login_form', {
templateUrl: '/app/admin/test_login_form.html',
controller: 'TestLoginForm'
});
// TODO: we need an appropriate homepage or something to show in this situation
$routeProvider.otherwise({
redirectTo: '/user/edit_current'
......
......@@ -23,13 +23,6 @@ CorvusControllers.controller('Corvus', ['$scope', '$location', 'CorvusCore', 'Co
$scope.currentOrg = undefined;
$scope.alerts = CorvusAlert.alerts;
$scope.navShowing = false;
//keep track of changes to the hash so we can update the UI accordingly (i.e. to show comments)
$scope.$on("$locationChangeSuccess", function() {
$scope.hash = $location.hash();
$scope.navShowing = false;
});
$scope.$on("appstate:user", function (event, user) {
// change in current user
......@@ -85,3 +78,17 @@ CorvusControllers.controller('SearchBox', ['$scope', '$location', function($scop
CorvusControllers.controller('Unauthorized', ['$scope', '$location', function($scope, $location) {
}]);
CorvusControllers.controller('Nav', ['$scope', '$routeParams', '$location', function($scope, $routeParams, $location) {
$scope.nav = 'main'
$scope.$on('$routeChangeSuccess', function () {
if($routeParams.orgSlug && $location.path().indexOf('admin') > 0) {
$scope.nav = 'admin'
} else if ($location.path().indexOf('setup') >0 ) {
$scope.nav = 'setup'
} else {
$scope.nav = 'main'
}
});
}]);
......@@ -14,83 +14,127 @@
</head>
<body ng-controller="Corvus">
<nav class="CoreNav clearfix" ng-class="{'CoreNav--showing' : navShowing }">
<div class="col col-sm-12">
<div class="NavItem Dropdown float-left" dropdown on-toggle="toggled(open)">
<span class="NavItem-text" ng-bind="currentOrg.name"></span>
<span dropdown-toggle ng-if="user.is_multi_org">
<cv-chevron-down-icon width="8px" height="8px"></cv-chevron-down-icon>
</span>
<ul class="Dropdown-content">
<li ng-repeat="organization in memberOf()">
<a class="link block py1" href="#" ng-click="changeCurrOrg(organization.slug)">{{organization.name}}</a>
</li>
</ul>
</div>
<ul class="float-left ml4">
<li class="inline-block">
<a class="NavItem NavItem-withIcon" cv-org-href="/dash/" selectable-nav-item="dashboards">
<div class="IconWrapper">
<cv-dashboards-icon></cv-dashboards-icon>
</div>
<span class="NavItem-text">Dashboards</span>
</a>
</li>
<li class="inline-block">
<a class="NavItem NavItem-withIcon" cv-org-href="/card/" selectable-nav-item="cards">
<div class="IconWrapper">
<cv-cards-icon></cv-cards-icon>
</div>
<span class="NavItem-text">Cards</span>
</a>
</li>
<li class="inline-block">
<a class="NavItem NavItem-withIcon" cv-org-href="/explore/" selectable-nav-item="explore">
<div class="IconWrapper">
<cv-explore-icon></cv-explore-icon>
</div>
<span class="NavItem-text">Explore</span>
</a>
</li>
</ul>
<ul class="float-right">
<li class="SearchNav NavItem mr4" selectable-nav-item="search">
<form class="Search" ng-submit="submit()" ng-controller="SearchBox">
<input class="Search-field" type="text" placeholder="Search" ng-model="searchText">
<a class="Search-button">
<cv-search-icon width="16px" height="16px" ng-click="submit()"></cv-search-icon>
</a>
</form>
</li>
<li class="Dropdown inline-block" dropdown on-toggle="toggled(open)">
<a class="NavItem" selectable-nav-item="settings" dropdown-toggle>
<span class="NavItem-text" ng-if="!user.first_name">Me</span>
<span class="NavItem-text" ng-if="user.first_name">{{user.first_name}}</span>
<div ng-controller="Nav">
<nav class="CoreNav clearfix" ng-show="nav == 'main'">
<div class="col col-sm-12">
<div class="NavItem Dropdown float-left" dropdown on-toggle="toggled(open)">
<span class="NavItem-text" ng-bind="currentOrg.name"></span>
<span dropdown-toggle ng-if="user.is_multi_org">
<cv-chevron-down-icon width="8px" height="8px"></cv-chevron-down-icon>
</a>
<ul class="Dropdown-content right">
<li class="" ><a class="link" href="/user/edit_current">Account Settings</a></li>
<li class="" ><a class="link" ng-if="userIsAdmin" cv-org-href="/admin/" target="_self">Admin</a></li>
<li class="" ><a class="link" href="/auth/logout" target="_self">Logout</a></li>
</span>
<ul class="Dropdown-content">
<li ng-repeat="organization in memberOf()">
<a class="link block py1" href="#" ng-click="changeCurrOrg(organization.slug)">{{organization.name}}</a>
</li>
</ul>
</div>
<ul class="float-left ml4">
<li class="inline-block">
<a class="NavItem NavItem-withIcon" cv-org-href="/dash/" selectable-nav-item="dashboards">
<div class="IconWrapper">
<cv-dashboards-icon></cv-dashboards-icon>
</div>
<span class="NavItem-text">Dashboards</span>
</a>
</li>
<li class="inline-block">
<a class="NavItem NavItem-withIcon" cv-org-href="/card/" selectable-nav-item="cards">
<div class="IconWrapper">
<cv-cards-icon></cv-cards-icon>
</div>
<span class="NavItem-text">Cards</span>
</a>
</li>
<li class="inline-block">
<a class="NavItem NavItem-withIcon" cv-org-href="/explore/" selectable-nav-item="explore">
<div class="IconWrapper">
<cv-explore-icon></cv-explore-icon>
</div>
<span class="NavItem-text">Explore</span>
</a>
</li>
</ul>
<ul class="float-right">
<li class="SearchNav NavItem mr4" selectable-nav-item="search">
<form class="Search" ng-submit="submit()" ng-controller="SearchBox">
<input class="Search-field" type="text" placeholder="Search" ng-model="searchText">
<a class="Search-button">
<cv-search-icon width="16px" height="16px" ng-click="submit()"></cv-search-icon>
</a>
</form>
</li>
<li class="Dropdown inline-block" dropdown on-toggle="toggled(open)">
<a class="NavItem" selectable-nav-item="settings" dropdown-toggle>
<span class="NavItem-text" ng-if="!user.first_name">Me</span>
<span class="NavItem-text" ng-if="user.first_name">{{user.first_name}}</span>
<cv-chevron-down-icon width="8px" height="8px"></cv-chevron-down-icon>
</a>
<ul class="Dropdown-content right">
<li class="" ><a class="link" href="/user/edit_current">Account Settings</a></li>
<li class="" ><a class="link" ng-if="userIsAdmin" cv-org-href="/admin/">Admin</a></li>
<li class="" ><a class="link" href="/auth/logout" target="_self">Logout</a></li>
</ul>
</li>
</ul>
</li>
</ul>
</div>
</nav>
</div>
</nav>
<nav ng-show="nav == 'admin'">
<div class="border-bottom bg-white py1">
<div class="wrapper">
<label class="Select" ng-if="user.is_multi_org">
<select ng-change="changeCurrOrg(currentOrgSlug)" ng-model="currentOrgSlug" ng-options="organization.slug as organization.name for organization in adminOf()"></select>
</select>
</label>
<a cv-org-href="/admin/">
<h3 class="AdminPageTitle my2 inline-block">
<span ng-bind="currentOrg.name" ng-if="!user.is_multi_org"></span>- Admin
</h3>
</a>
<div class="mx1 my2 float-right">
<a class="inline-block" cv-org-href="/">Exit Admin</a>
</div>
</div>
</div>
</nav>
<nav class="my4 col col-sm-3" ng-show="nav == 'admin'">
<ul class="CoreNav">
<li>
<a class="NavItem" cv-org-href="/admin/">Organization</a>
</li>
<li>
<a class="NavItem" cv-org-href="/admin/people/">People</a>
</li>
<li>
<a class="NavItem" cv-org-href="/admin/databases">Databases</a>
</li>
<li>
<a class="NavItem" cv-org-href="/admin/datasets">Datasets</a>
</li>
<li>
<a class="NavItem" cv-org-href="/admin/emailreport/">Email Reports</a>
</li>
<li>
<a class="NavItem" cv-org-href="/admin/query/run/">Query</a>
<ul class="ContextNav">
<li>
<a class="NavItem" cv-org-href="/admin/query/run">Run Query</a>
</li>
<li>
<a class="NavItem" cv-org-href="/admin/query/">Saved Queries</a>
</li>
</ul>
</li>
<li>
<a class="NavItem" cv-org-href="/admin/search">Search</a>
</li>
</ul>
</nav>
</div>
<div class="MainContent">
<div ng-view></div>
</div>
<a class="CoreNav-trigger hide-md" ng-class="{ 'CoreNav--showing' : navShowing }" href="#" ng-click="navShowing = !navShowing">
<div class="CoreNav-triggerIconClose text-white" ng-class="{ 'CoreNav--showing' : navShowing }">
<cv-close-icon width="18px" height="18px"></cv-close-icon>
</div>
<div class="CoreNav-triggerIconOpen text-white" ng-class="{ 'CoreNav--showing' : navShowing }">
<cv-list-icon width="18px" height="18px"></cv-close-icon>
</div>
</a>
<div class="CoreNav-showingBg hide-sm" ng-class="{ 'CoreNav--showing': navShowing }" ng-click="navShowing = !navShowing"></div>
</body>
<!-- JS INCLUDES -->
......
......@@ -10,8 +10,7 @@
(fn [_]
(resp/file-response file)))
(let [index (serve-file "frontend_client/index.html")
admin (serve-file "frontend_client/admin_index.html")]
(let [index (serve-file "frontend_client/index.html")]
(defroutes routes
(GET "/" [] index) ; ^/$ -> index.html
(context "/api" [] api/routes) ; ^/api/ -> API routes
......@@ -19,5 +18,4 @@
(route/files "/" {:root "frontend_client/app"}) ; ^/app/ -> static files under frontend_client/app
(route/not-found {:status 404 ; return 404 for anything else starting with ^/app/ that doesn't exist
:body "Not found."}))
(GET "/:org-slug/admin/*" [] admin) ; ^/org/admin/* -> admin_index.html
(GET "*" [] index))) ; Anything else (e.g. /user/edit_current) should serve up index.html; Angular app will handle the rest
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment