refined structure for UI development

This commit is contained in:
kunw 2016-04-15 01:50:10 +08:00
parent 02cb66cd3a
commit 0d5da49175
41 changed files with 111 additions and 100 deletions

View File

@ -32,7 +32,7 @@
list-style-type: none; list-style-type: none;
} }
.switch-pane-tabs a, .switch-pane-tabs span { .switch-pane-tabs a,.switch-pane-tabs span {
display: inline-block; display: inline-block;
text-decoration: none; text-decoration: none;
float: left; float: left;

View File

@ -0,0 +1,5 @@
<ul class="switch-pane-tabs" role="tablist">
<li><a role="presentation" href="#repositories" aria-controls="repositories" role="tab" data-toggle="tab">Repositories</a><span class="gutter">|</span></li>
<li><a role="presentation" href="#users" aria-controls="users" role="tab" data-toggle="tab">Users</a><span class="gutter">|</span></li>
<li><a role="presentation" href="#logs" aria-controls="logs" role="tab" data-toggle="tab">Logs</a></li>
</ul>

View File

@ -1,3 +1,4 @@
<ul class="nav-custom"> <ul class="nav-custom">
<li ng-repeat="tab in tabs"><a href="//tab.url//">//tab.name//</a></li> <li><a href="/ng/dashboard">Dashboard</a></li>
<li><a href="/ng/project">Project</a></li>
</ul> </ul>

View File

@ -8,29 +8,42 @@
function navigationTab() { function navigationTab() {
var directive = { var directive = {
restrict: 'EA', restrict: 'E',
scope: { templateUrl: getTemplateUrl,
"tabs": "=" link: link,
}, controller: controller
templateUrl: '/static/ng/resources/js/components/navigation-tab.directive.html',
link: link
} }
return directive; return directive;
function link(scope, element, attrs) { function getTemplateUrl(element, attrs) {
element return '/static/ng/resources/js/components/'+ attrs.templateUrl;
.on('mouseover', mouseover) }
.on('mouseout', mouseout);
function link(scope, element, attrs, ctrl) {
if (attrs.templateUrl.indexOf("navigation-tab") >= 0) {
element.find('a[href$="' + ctrl.location + '"]').addClass('active');
}
if (attrs.templateUrl.indexOf("navigation-details") >= 0) {
element.find('a:first').addClass('active');
}
function mouseover(event) { element.on('click', click);
function click(event) {
element.find('a').removeClass('active');
$(event.target).addClass('active'); $(event.target).addClass('active');
} }
function mouseout(event) { }
$(event.target).removeClass('active');
} controller.$inject = ['$window'];
function controller($window) {
var vm = this;
vm.location = $window.location.pathname;
} }
} }

View File

@ -2,14 +2,6 @@
'use strict'; 'use strict';
angular angular
.module('harbor.app') .module('harbor.app');
.constant('navigationTabs', navigationTabs);
function navigationTabs() {
var data = [
{name: "Dashboard", url: "/ng/dashboard"},
{name: "My Projects", url: "/ng/project"}];
return data;
}
})(); })();

View File

@ -2,24 +2,6 @@
'use strict'; 'use strict';
angular angular
.module('harbor.app') .module('harbor.app');
.run(CurrentUser);
CurrentUser.$inject = ['CurrentUserService', '$log'];
function CurrentUser(CurrentUserService, $log) {
CurrentUserService()
.then(getCurrentUserComplete)
.catch(getCurrentUserFailed);
function getCurrentUserComplete(data) {
$log.info(data.data);
}
function getCurrentUserFailed(e){
$log.info(e);
}
}
})(); })();

View File

@ -3,6 +3,8 @@
angular angular
.module('harbor.app', [ .module('harbor.app', [
'harbor.services.user', 'harbor.services.user',
'harbor.session',
'harbor.header', 'harbor.header',
'harbor.index']); 'harbor.details'
]);
})(); })();

View File

@ -1,17 +0,0 @@
(function() {
'use strict';
angular
.module('harbor.header')
.controller('NavigationController', NavigationController);
NavigationController.$inject = ['navigationTabs'];
function NavigationController(navigationTabs) {
var vm = this;
vm.tabs = navigationTabs();
}
})();

View File

@ -1,7 +0,0 @@
(function() {
'use strict';
angular
.module('harbor.index');
})();

View File

@ -1,6 +0,0 @@
(function() {
'use strict';
angular
.module('harbor.index', []);
})();

View File

@ -1,6 +1,8 @@
(function() { (function() {
'use strict'; 'use strict';
angular angular
.module('harbor.services', []); .module('harbor.details', []);
})(); })();

View File

@ -1,8 +0,0 @@
(function() {
'use strict';
angular
.module('harbor.services');
})();

View File

@ -0,0 +1,38 @@
(function() {
'use strict';
angular
.module('harbor.session')
.controller('CurrentUserController', CurrentUserController)
.directive('currentUser', currentUser);
CurrentUserController.$inject = ['CurrentUserService', '$log', '$window'];
function CurrentUserController(CurrentUserService, $log, $window) {
CurrentUserService()
.then(getCurrentUserComplete)
.catch(getCurrentUserFailed);
function getCurrentUserComplete(data) {
$log.info('login success');
}
function getCurrentUserFailed(e){
if(e.status == 401) {
$window.location = '/ng';
}
}
}
function currentUser() {
var directive = {
restrict: 'A',
controller: CurrentUserController,
bindToController: true
}
return directive;
}
})();

View File

@ -0,0 +1,10 @@
(function() {
'use strict';
angular
.module('harbor.session', [
'harbor.services.user'
]);
})();

View File

@ -1,4 +1,4 @@
<div class="container-fluid container-fluid-custom"> <div class="container-fluid container-fluid-custom" current-user>
<div class="container"> <div class="container">
<div class="row row-custom"> <div class="row row-custom">
<div class="col-xs-4 col-md-4"> <div class="col-xs-4 col-md-4">

View File

@ -6,17 +6,19 @@
<h4 class="page-header">My Projects<span class="gutter">|</span><a href="#" class="title-color">Public Projects</a></h4> <h4 class="page-header">My Projects<span class="gutter">|</span><a href="#" class="title-color">Public Projects</a></h4>
<div class="switch-pane"> <div class="switch-pane">
<div class="switch-pane-projects">myrepo</div> <div class="switch-pane-projects">myrepo</div>
<ul class="switch-pane-tabs" role="tablist"> <navigation-tab template-url="navigation-details.directive.html"></navigation-tab>
<!--ul class="switch-pane-tabs" role="tablist">
<li><a role="presentation" href="#repositories" aria-controls="repositories" role="tab" data-toggle="tab">Repositories</a><span class="gutter">|</span></li> <li><a role="presentation" href="#repositories" aria-controls="repositories" role="tab" data-toggle="tab">Repositories</a><span class="gutter">|</span></li>
<li><a role="presentation" href="#users" aria-controls="users" role="tab" data-toggle="tab">Users</a><span class="gutter">|</span></li> <li><a role="presentation" href="#users" aria-controls="users" role="tab" data-toggle="tab">Users</a><span class="gutter">|</span></li>
<li><a role="presentation" href="#logs" aria-controls="logs" role="tab" data-toggle="tab">Logs</a></li> <li><a role="presentation" href="#logs" aria-controls="logs" role="tab" data-toggle="tab">Logs</a></li>
</ul> </ul-->
</div> </div>
<div class="switch-pane-drop-down" style="visibility: visible;"> <div class="switch-pane-drop-down" style="visibility: hidden;">
<div class="row"> <div class="row">
<div class="col-xs-12 col-md-12"> <div class="col-xs-12 col-md-12">
<div class="panel panel-default"> <div class="panel panel-default">
<div class="form-inline search-projects"> <div class="form-inline search-projects">
<div class="input-group"> <div class="input-group">
<input type="text" class="form-control search-icon" placeholder="" size="30"> <input type="text" class="form-control search-icon" placeholder="" size="30">
</div> </div>

View File

@ -34,8 +34,8 @@
</li> </li>
</ul--> </ul-->
<ul class="nav navbar-nav navbar-right"> <ul class="nav navbar-nav navbar-right">
<li ng-controller="NavigationController as vm"> <li>
<navigation-tab tabs="vm.tabs"></navigation-tab> <navigation-tab template-url="navigation-tab.directive.html"></navigation-tab>
</li> </li>
<li> <li>
<form class="navbar-form pull-right" role="search"> <form class="navbar-form pull-right" role="search">

View File

@ -28,12 +28,14 @@
<script src="/static/ng/resources/js/harbor.initialize.js"></script> <script src="/static/ng/resources/js/harbor.initialize.js"></script>
<script src="/static/ng/resources/js/harbor.constants.js"></script> <script src="/static/ng/resources/js/harbor.constants.js"></script>
<script src="/static/ng/resources/js/session/session.module.js"></script>
<script src="/static/ng/resources/js/session/session.current-user.js"></script>
<script src="/static/ng/resources/js/services/user/services.user.module.js"></script> <script src="/static/ng/resources/js/services/user/services.user.module.js"></script>
<script src="/static/ng/resources/js/services/user/services.current-user.js"></script> <script src="/static/ng/resources/js/services/user/services.current-user.js"></script>
<script src="/static/ng/resources/js/header/header.module.js"></script> <script src="/static/ng/resources/js/layout/header/header.module.js"></script>
<script src="/static/ng/resources/js/header/navigation.controllers.js"></script>
<script src="/static/ng/resources/js/index/index.module.js"></script> <script src="/static/ng/resources/js/layout/details/details.module.js"></script>
<script src="/static/ng/resources/js/components/navigation-tab.directive.js"></script> <script src="/static/ng/resources/js/components/navigation-tab.directive.js"></script>