Added custom stylesheets

This commit is contained in:
Fergal Moran
2014-03-31 09:28:33 +01:00
parent 2023a63781
commit 3d2e823cf7
43 changed files with 12187 additions and 284 deletions

Binary file not shown.

After

Width:  |  Height:  |  Size: 14 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 19 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 23 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 11 KiB

BIN
app/images/bs/avatar.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 9.8 KiB

BIN
app/images/bs/logo-200.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.8 KiB

BIN
app/images/bs/logo.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 KiB

BIN
app/images/bs/sort-asc.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 1022 B

BIN
app/images/bs/sort-desc.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 1017 B

BIN
app/images/bs/sort.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.0 KiB

BIN
app/images/bs/times.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 KiB

BIN
app/images/bs/ui-left.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 KiB

BIN
app/images/bs/ui-right.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 KiB

2530
app/scripts/bs/bs.js Normal file

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,26 @@
'use strict';
angular.module('robotoPromotoApp')
.controller('HeaderCtrl', function ($scope, $location, Auth) {
$scope.menu = [
{
'title': 'Home',
'link': '/'
},
{
'title': 'Settings',
'link': '/settings'
}
];
$scope.logout = function () {
Auth.logout()
.then(function () {
$location.path('/login');
});
};
$scope.isActive = function (route) {
return route === $location.path();
};
});

View File

@@ -1,23 +1,10 @@
'use strict'; 'use strict';
angular.module('robotoPromotoApp') angular.module('robotoPromotoApp')
.controller('NavbarCtrl', function ($scope, $location, Auth) { .controller('NavbarCtrl', function ($scope) {
$scope.menu = [{ $scope.awesomeThings = [
'title': 'Home', 'HTML5 Boilerplate',
'link': '/' 'AngularJS',
}, { 'Karma'
'title': 'Settings', ];
'link': '/settings'
}];
$scope.logout = function() {
Auth.logout()
.then(function() {
$location.path('/login');
});
};
$scope.isActive = function(route) {
return route === $location.path();
};
}); });

View File

@@ -11,12 +11,11 @@ angular.module('robotoPromotoApp')
pageSizes: [5, 10, 20], pageSizes: [5, 10, 20],
pageSize: 5, pageSize: 5,
currentPage: 1 currentPage: 1
} };
$scope.setPagingData = function(data, page, pageSize){ $scope.setPagingData = function(data, total){
var pagedData = data.slice((page-1) * pageSize, page * pageSize); $scope.promotionData = data;
$scope.promotionData = pagedData; $scope.totalServerItems = total;
$scope.totalServerItems = data.length;
if (!$scope.$$phase){ if (!$scope.$$phase){
$scope.$apply(); $scope.$apply();
} }
@@ -27,10 +26,10 @@ angular.module('robotoPromotoApp')
if (searchText){ if (searchText){
var ft = searchText.toLowerCase(); var ft = searchText.toLowerCase();
}else{ }else{
$http.get('api/promotions') $http.get('api/promotion?sort=created&limit=' + pageSize + '&skip=' + pageSize * (page-1))
.success(function (promotions) { .success(function (promotions) {
$scope.setPagingData(promotions, page, pageSize); $scope.setPagingData(promotions.payload, promotions.total);
}); });
} }
}, 3000); }, 3000);
}; };

5824
app/styles/bs/base.css Normal file

File diff suppressed because it is too large Load Diff

2802
app/styles/bs/style.css Normal file

File diff suppressed because it is too large Load Diff

1
app/styles/bs/style.min.css vendored Normal file

File diff suppressed because one or more lines are too long

View File

@@ -1,98 +1,4 @@
$icon-font-path: "/bower_components/bootstrap-sass-official/vendor/assets/fonts/bootstrap/"; $icon-font-path: "/bower_components/bootstrap-sass-official/vendor/assets/fonts/bootstrap/";
@import 'bootstrap-sass-official/vendor/assets/stylesheets/bootstrap'; @import 'bs/base.css';
@import '../styles/bs/style.css';
.browsehappy {
margin: 0.2em 0;
background: #ccc;
color: #000;
padding: 0.2em 0;
}
/* Space out content a bit */
body {
padding-top: 20px;
padding-bottom: 20px;
}
/* Everything but the jumbotron gets side spacing for mobile first views */
.header,
.marketing,
.footer {
padding-left: 15px;
padding-right: 15px;
}
/* Custom page header */
.header {
border-bottom: 1px solid #e5e5e5;
}
/* Make the masthead heading the same height as the navigation */
.header h3 {
margin-top: 0;
margin-bottom: 0;
line-height: 40px;
padding-bottom: 19px;
}
/* Custom page footer */
.footer {
padding-top: 19px;
color: #777;
border-top: 1px solid #e5e5e5;
}
.container-narrow > hr {
margin: 30px 0;
}
/* Main marketing message and sign up button */
.jumbotron {
text-align: center;
border-bottom: 1px solid #e5e5e5;
}
.jumbotron .btn {
font-size: 21px;
padding: 14px 24px;
}
/* Supporting marketing content */
.marketing {
margin: 40px 0;
}
.marketing p + h4 {
margin-top: 28px;
}
/* Responsive: Portrait tablets and up */
@media screen and (min-width: 768px) {
.container {
max-width: 730px;
}
/* Remove the padding we set earlier */
.header,
.marketing,
.footer {
padding-left: 0;
padding-right: 0;
}
/* Space out the masthead */
.header {
margin-bottom: 30px;
}
/* Remove the bottom border on the jumbotron for visual effect */
.jumbotron {
border-bottom: 0;
}
}
/* Grids */
.roboto-grid {
border: 1px solid rgb(212,212,212);
width: 600px;
height: 300px;
}

View File

@@ -20,6 +20,7 @@
<!-- endbower --> <!-- endbower -->
<!-- endbuild --> <!-- endbuild -->
<!-- build:css({.tmp,app}) styles/main.css --> <!-- build:css({.tmp,app}) styles/main.css -->
<link href="http://netdna.bootstrapcdn.com/font-awesome/4.0.3/css/font-awesome.css" rel="stylesheet">
<link rel="stylesheet" href="styles/main.css"> <link rel="stylesheet" href="styles/main.css">
<link rel="stylesheet" href="bower_components/ui-grid/ng-grid.css"> <link rel="stylesheet" href="bower_components/ui-grid/ng-grid.css">
<!-- endbuild --> <!-- endbuild -->
@@ -29,25 +30,184 @@
<p class="browsehappy">You are using an <strong>outdated</strong> browser. Please <a href="http://browsehappy.com/">upgrade <p class="browsehappy">You are using an <strong>outdated</strong> browser. Please <a href="http://browsehappy.com/">upgrade
your browser</a> to improve your experience.</p> your browser</a> to improve your experience.</p>
<![endif]--> <![endif]-->
<div ng-include="'partials/header.html'"></div>
<div id="main" class="container-fluid">
<div class="row">
<div id="sidebar-left" ng-controller="NavbarCtrl" class="col-xs-2 col-sm-2">
<ul class="nav main-menu">
<li>
<a href="ajax/dashboard.html" class="ajax-link">
<i class="fa fa-dashboard"></i>
<span class="hidden-xs">Dashboard</span>
</a>
</li>
<li class="dropdown">
<a href="#" class="dropdown-toggle active-parent active">
<i class="fa fa-bar-chart-o"></i>
<span class="hidden-xs">Charts</span>
</a>
<ul class="dropdown-menu" style="display: block;">
<li><a class="ajax-link active-parent active" href="ajax/charts_xcharts.html">xCharts</a></li>
<li><a class="ajax-link" href="ajax/charts_flot.html">Flot Charts</a></li>
<li><a class="ajax-link" href="ajax/charts_google.html">Google Charts</a></li>
<li><a class="ajax-link" href="ajax/charts_morris.html">Morris Charts</a></li>
<li><a class="ajax-link" href="ajax/charts_coindesk.html">CoinDesk realtime</a></li>
</ul>
</li>
<li class="dropdown">
<a href="#" class="dropdown-toggle">
<i class="fa fa-table"></i>
<span class="hidden-xs">Tables</span>
</a>
<ul class="dropdown-menu" style="">
<li><a class="ajax-link" href="ajax/tables_simple.html">Simple Tables</a></li>
<li><a class="ajax-link" href="ajax/tables_datatables.html">Data Tables</a></li>
<li><a class="ajax-link" href="ajax/tables_beauty.html">Beauty Tables</a></li>
</ul>
</li>
<li class="dropdown">
<a href="#" class="dropdown-toggle">
<i class="fa fa-pencil-square-o"></i>
<span class="hidden-xs">Forms</span>
</a>
<ul class="dropdown-menu" style="">
<li><a class="ajax-link" href="ajax/forms_elements.html">Elements</a></li>
<li><a class="ajax-link" href="ajax/forms_layouts.html">Layouts</a></li>
<li><a class="ajax-link" href="ajax/forms_file_uploader.html">File Uploader</a></li>
</ul>
</li>
<li class="dropdown">
<a href="#" class="dropdown-toggle">
<i class="fa fa-desktop"></i>
<span class="hidden-xs">UI Elements</span>
</a>
<ul class="dropdown-menu" style="">
<li><a class="ajax-link" href="ajax/ui_grid.html">Grid</a></li>
<li><a class="ajax-link" href="ajax/ui_buttons.html">Buttons</a></li>
<li><a class="ajax-link" href="ajax/ui_progressbars.html">Progress Bars</a></li>
<li><a class="ajax-link" href="ajax/ui_jquery-ui.html">Jquery UI</a></li>
<li><a class="ajax-link" href="ajax/ui_icons.html">Icons</a></li>
</ul>
</li>
<li class="dropdown">
<a href="#" class="dropdown-toggle">
<i class="fa fa-list"></i>
<span class="hidden-xs">Pages</span>
</a>
<ul class="dropdown-menu" style="">
<li><a href="ajax/page_login.html">Login</a></li>
<li><a href="ajax/page_register.html">Register</a></li>
<li><a id="locked-screen" class="submenu" href="ajax/page_locked.html">Locked Screen</a></li>
<li><a class="ajax-link" href="ajax/page_contacts.html">Contacts</a></li>
<li><a class="ajax-link" href="ajax/page_feed.html">Feed</a></li>
<li><a class="ajax-link add-full" href="ajax/page_messages.html">Messages</a></li>
<li><a class="ajax-link" href="ajax/page_pricing.html">Pricing</a></li>
<li><a class="ajax-link" href="ajax/page_invoice.html">Invoice</a></li>
<li><a class="ajax-link" href="ajax/page_search.html">Search Results</a></li>
<li><a class="ajax-link" href="ajax/page_404.html">Error 404</a></li>
<li><a href="ajax/page_500.html">Error 500</a></li>
</ul>
</li>
<li class="dropdown">
<a href="#" class="dropdown-toggle">
<i class="fa fa-map-marker"></i>
<span class="hidden-xs">Maps</span>
</a>
<ul class="dropdown-menu" style="">
<li><a class="ajax-link" href="ajax/maps.html">OpenStreetMap</a></li>
<li><a class="ajax-link" href="ajax/map_fullscreen.html">Fullscreen map</a></li>
</ul>
</li>
<li class="dropdown">
<a href="#" class="dropdown-toggle">
<i class="fa fa-picture-o"></i>
<span class="hidden-xs">Gallery</span>
</a>
<ul class="dropdown-menu" style="">
<li><a class="ajax-link" href="ajax/gallery_simple.html">Simple Gallery</a></li>
<li><a class="ajax-link" href="ajax/gallery_flickr.html">Flickr Gallery</a></li>
</ul>
</li>
<li>
<a class="ajax-link" href="ajax/typography.html">
<i class="fa fa-font"></i>
<span class="hidden-xs">Typography</span>
</a>
</li>
<li>
<a class="ajax-link" href="ajax/calendar.html">
<i class="fa fa-calendar"></i>
<span class="hidden-xs">Calendar</span>
</a>
</li>
<li class="dropdown">
<a href="#" class="dropdown-toggle">
<i class="fa fa-picture-o"></i>
<span class="hidden-xs">Multilevel menu</span>
</a>
<ul class="dropdown-menu" style="">
<li><a href="#">First level menu</a></li>
<li><a href="#">First level menu</a></li>
<li class="dropdown">
<a href="#" class="dropdown-toggle">
<i class="fa fa-plus-square"></i>
<span class="hidden-xs">Second level menu group</span>
</a>
<ul class="dropdown-menu" style="">
<li><a href="#">Second level menu</a></li>
<li><a href="#">Second level menu</a></li>
<li class="dropdown">
<a href="#" class="dropdown-toggle">
<i class="fa fa-plus-square"></i>
<span class="hidden-xs">Three level menu group</span>
</a>
<ul class="dropdown-menu" style="">
<li><a href="#">Three level menu</a></li>
<li><a href="#">Three level menu</a></li>
<li class="dropdown">
<a href="#" class="dropdown-toggle">
<i class="fa fa-plus-square"></i>
<span class="hidden-xs">Four level menu group</span>
</a>
<ul class="dropdown-menu" style="">
<li><a href="#">Four level menu</a></li>
<li><a href="#">Four level menu</a></li>
<li class="dropdown">
<a href="#" class="dropdown-toggle">
<i class="fa fa-plus-square"></i>
<span class="hidden-xs">Five level menu group</span>
</a>
<ul class="dropdown-menu" style="">
<li><a href="#">Five level menu</a></li>
<li><a href="#">Five level menu</a></li>
<li class="dropdown">
<a href="#" class="dropdown-toggle">
<i class="fa fa-plus-square"></i>
<span class="hidden-xs">Six level menu group</span>
</a>
<ul class="dropdown-menu" style="">
<li><a href="#">Six level menu</a></li>
<li><a href="#">Six level menu</a></li>
</ul>
</li>
</ul>
</li>
</ul>
</li>
<li><a href="#">Three level menu</a></li>
</ul>
</li>
</ul>
</li>
</ul>
</li>
</ul>
</div>
<div id="content" ng-view="" class="col-xs-12 col-sm-10"></div>
</div>
</div>
<!-- Add your site or application content here -->
<div class="container" ng-view=""></div>
<!-- Google Analytics: change UA-XXXXX-X to be your site's ID -->
<script>
(function (i, s, o, g, r, a, m) {
i['GoogleAnalyticsObject'] = r;
i[r] = i[r] || function () {
(i[r].q = i[r].q || []).push(arguments)
}, i[r].l = 1 * new Date();
a = s.createElement(o),
m = s.getElementsByTagName(o)[0];
a.async = 1;
a.src = g;
m.parentNode.insertBefore(a, m)
})(window, document, 'script', '//www.google-analytics.com/analytics.js', 'ga');
ga('create', 'UA-XXXXX-X');
ga('send', 'pageview');
</script>
<!--[if lt IE 9]> <!--[if lt IE 9]>
<script src="bower_components/es5-shim/es5-shim.js"></script> <script src="bower_components/es5-shim/es5-shim.js"></script>
@@ -67,8 +227,10 @@
<script src="bower_components/ui-grid/ng-grid.js"></script> <script src="bower_components/ui-grid/ng-grid.js"></script>
<!-- build:js({.tmp,app}) scripts/scripts.js --> <!-- build:js({.tmp,app}) scripts/scripts.js -->
<script src="scripts/bs/bs.js"></script>
<script src="scripts/app.js"></script> <script src="scripts/app.js"></script>
<script src="scripts/controllers/main.js"></script> <script src="scripts/controllers/main.js"></script>
<script src="scripts/controllers/header.js"></script>
<script src="scripts/controllers/navbar.js"></script> <script src="scripts/controllers/navbar.js"></script>
<script src="scripts/controllers/promotions.js"></script> <script src="scripts/controllers/promotions.js"></script>
<script src="scripts/controllers/login.js"></script> <script src="scripts/controllers/login.js"></script>

View File

@@ -0,0 +1,96 @@
<header class="navbar">
<div class="container-fluid expanded-panel">
<div class="row">
<div id="logo" class="col-xs-12 col-sm-2">
<a href="/">Roboto Promoto</a>
</div>
<div id="top-panel" class="col-xs-12 col-sm-10">
<div class="row">
<div class="col-xs-8 col-sm-4">
<a href="#" class="show-sidebar">
<i class="fa fa-bars"></i>
</a>
<div id="search">
<input type="text" placeholder="search">
<i class="fa fa-search"></i>
</div>
</div>
<div class="col-xs-4 col-sm-8 top-panel-right">
<ul class="nav navbar-nav pull-right panel-menu">
<li class="hidden-xs">
<a href="index.html" class="modal-link">
<i class="fa fa-bell"></i>
<span class="badge">7</span>
</a>
</li>
<li class="hidden-xs">
<a class="ajax-link" href="ajax/calendar.html">
<i class="fa fa-calendar"></i>
<span class="badge">7</span>
</a>
</li>
<li class="hidden-xs">
<a href="ajax/page_messages.html" class="ajax-link">
<i class="fa fa-envelope"></i>
<span class="badge">7</span>
</a>
</li>
<li class="dropdown">
<a href="#" class="dropdown-toggle account" data-toggle="dropdown">
<div class="avatar">
<img src="images/bs/avatar.jpg" class="img-rounded" alt="avatar">
</div>
<i class="fa fa-angle-down pull-right"></i>
<div class="user-mini pull-right">
<span class="welcome">Welcome,</span>
<span>Jane Devoops</span>
</div>
</a>
<ul class="dropdown-menu">
<li>
<a href="#">
<i class="fa fa-user"></i>
<span class="hidden-sm text">Profile</span>
</a>
</li>
<li>
<a href="ajax/page_messages.html" class="ajax-link">
<i class="fa fa-envelope"></i>
<span class="hidden-sm text">Messages</span>
</a>
</li>
<li>
<a href="ajax/gallery_simple.html" class="ajax-link">
<i class="fa fa-picture-o"></i>
<span class="hidden-sm text">Albums</span>
</a>
</li>
<li>
<a href="ajax/calendar.html" class="ajax-link">
<i class="fa fa-tasks"></i>
<span class="hidden-sm text">Tasks</span>
</a>
</li>
<li>
<a href="#">
<i class="fa fa-cog"></i>
<span class="hidden-sm text">Settings</span>
</a>
</li>
<li>
<a href="#">
<i class="fa fa-power-off"></i>
<span class="hidden-sm text">Logout</span>
</a>
</li>
</ul>
</li>
</ul>
</div>
</div>
</div>
</div>
</div>
</header>

View File

@@ -1,40 +1,42 @@
<div ng-include="'partials/navbar.html'"></div>
<div class="row"> <div class="row">
<div class="col-sm-12"> <div class="col-sm-12">
<h1>Login</h1> <h1>Login</h1>
<p>Accounts are reset on server restart from <code>dummydata.js</code>. Default account is <code>test@test.com</code> / <code>test</code></p>
</div>
<div class="col-sm-12">
<form class="form" name="form" ng-submit="login(form)" novalidate>
<div class="form-group"> <p>Accounts are reset on server restart from <code>dummydata.js</code>. Default account is
<label>Email</label> <code>test@test.com</code> / <code>test</code></p>
</div>
<div class="col-sm-12">
<form class="form" name="form" ng-submit="login(form)" novalidate>
<input type="text" name="email" class="form-control" ng-model="user.email"> <div class="form-group">
</div> <label>Email</label>
<div class="form-group"> <input type="text" name="email" class="form-control" ng-model="user.email">
<label>Password</label> </div>
<input type="password" name="password" class="form-control" ng-model="user.password">
</div>
<div class="form-group has-error"> <div class="form-group">
<p class="help-block" ng-show="form.email.$error.required && form.password.$error.required && submitted"> <label>Password</label>
Please enter your email and password.
</p>
<p class="help-block">{{ errors.other }}</p>
</div>
<button type="submit" class="btn btn-lg btn-primary"> Sign in </button> <input type="password" name="password" class="form-control" ng-model="user.password">
</form> </div>
</div>
<div class="form-group has-error">
<p class="help-block"
ng-show="form.email.$error.required && form.password.$error.required && submitted">
Please enter your email and password.
</p>
<p class="help-block">{{ errors.other }}</p>
</div>
<button type="submit" class="btn btn-lg btn-primary"> Sign in</button>
</form>
</div>
</div> </div>
<div class="row"> <div class="row">
<div class="col-sm-12"> <div class="col-sm-12">
<hr> <hr>
Not registered? <a href="/signup" class="text-center new-account">Create an account.</a> Not registered? <a href="/signup" class="text-center new-account">Create an account.</a>
</div> </div>
</div> </div>

View File

@@ -1,12 +1,355 @@
<div ng-include="'partials/navbar'"></div> <!--Start Breadcrumb-->
<div class="row">
<div class="jumbotron"> <div id="breadcrumb" class="col-xs-12">
<p class="lead"> <ol class="breadcrumb">
<img src="images/roboto-small.png" alt="I'm Roboto"><br> <li><a href="index.html">Home</a></li>
Intelligent Promotion Distribution for Humans <li><a href="#">Dashboard</a></li>
</p> </ol>
</div>
</div> </div>
<!--End Breadcrumb-->
<div class="footer"> <!--Start Dashboard 1-->
<p>♥ from the PodNoms team</p> <div id="dashboard-header" class="row">
<div class="col-xs-10 col-sm-12">
<h3>This is how your promotions should look!</h3>
</div>
</div> </div>
<!--End Dashboard 1-->
<!--Start Dashboard 2-->
<div class="row-fluid">
<div id="dashboard_links" class="col-xs-12 col-sm-2 pull-right">
<ul class="nav nav-pills nav-stacked">
<li class="active"><a href="#" class="tab-link" id="overview">Promotions</a></li>
<li class=""><a href="#" class="tab-link" id="clients">Recipients</a></li>
<li class=""><a href="#" class="tab-link" id="graph">Positive</a></li>
<li class=""><a href="#" class="tab-link" id="servers">Negative</a></li>
</ul>
</div>
<div id="dashboard_tabs" class="col-xs-12 col-sm-10">
<!--Start Dashboard Tab 1-->
<div id="dashboard-overview" class="row" style="visibility: visible; position: relative;">
<div id="ow-marketplace" class="col-sm-12 col-md-6">
<div id="ow-setting">
<a href="#"><i class="fa fa-folder-open"></i></a>
<a href="#"><i class="fa fa-credit-card"></i></a>
<a href="#"><i class="fa fa-ticket"></i></a>
<a href="#"><i class="fa fa-bookmark-o"></i></a>
<a href="#"><i class="fa fa-globe"></i></a>
</div>
<h4 class="page-header">ACTIVE PROMOTIONS</h4>
<table id="ticker-table" class="table m-table table-bordered table-hover table-heading">
<thead>
<tr>
<th>Promotion</th>
<th>Recipients</th>
<th>Listened</th>
<th>Downloaded</th>
</tr>
</thead>
<tbody>
<tr>
<td class="m-ticker"><b>RP001</b><span>Robo Vibes 1.</span></td>
<td class="m-price">65</td>
<td class="m-change"><i class="fa fa-angle-up"></i> 48</td>
<td class="m-change"><i class="fa fa-angle-up"></i> 37</td>
</tr>
<tr>
<td class="m-ticker"><b>RP002</b><span>Robo Vibes 2.</span></td>
<td class="m-price">65</td>
<td class="m-change"><i class="fa fa-angle-up"></i> 36</td>
</tr>
<tr>
<td class="m-ticker"><b>RP003</b><span>Robo Vibes 3.</span></td>
<td class="m-price">65</td>
<td class="m-change"><i class="fa fa-angle-down"></i> 22</td>
<td class="m-change"><i class="fa fa-angle-down"></i> 9</td>
</tr>
</tbody>
</table>
</div>
<div class="col-xs-12 col-md-6">
<div id="ow-donut" class="row">
<div class="col-xs-4">
<div id="morris_donut_1" style="width:120px;height:120px;"></div>
</div>
<div class="col-xs-4">
<div id="morris_donut_2" style="width:120px;height:120px;"></div>
</div>
<div class="col-xs-4">
<div id="morris_donut_3" style="width:120px;height:120px;"></div>
</div>
</div>
<div id="ow-activity" class="row">
<div class="col-xs-2 col-sm-1 col-md-2">
<div class="v-txt">ACTIVITY</div>
</div>
<div class="col-xs-7 col-sm-5 col-md-6">
<div class="row"><i class="fa fa-code"></i> Release published <span class="label label-default pull-right">01:17:34</span></div>
<div class="row"><i class="fa fa-cloud-upload"></i> Backup created <span class="label label-default pull-right">03:23:34</span></div>
<div class="row"><i class="fa fa-camera"></i> Snapshot created <span class="label label-default pull-right">04:22:11</span></div>
<div class="row"><i class="fa fa fa-money"></i> Invoice pay <span class="label label-default pull-right">05:11:51</span></div>
<div class="row"><i class="fa fa-briefcase"></i> Project edited <span class="label label-default pull-right">04:52:23</span></div>
<div class="row"><i class="fa fa-floppy-o"></i> Project saved <span class="label label-default pull-right">07:11:01</span></div>
<div class="row"><i class="fa fa-bug"></i> Bug fixed <span class="label label-default pull-right">09:10:31</span></div>
</div>
<div id="ow-stat" class="col-xs-3 col-sm-4 col-md-4 pull-right">
<div class="row"><small><b>Ow Stat.:</b></small></div>
<div class="row">&#37;user <sup>20,43</sup></div>
<div class="row">&#37;nice <sup>1,01</sup></div>
<div class="row">&#37;system <sup>27,34</sup></div>
<div class="row">&#37;iowait <sup>2,02</sup></div>
<div class="row">&#37;steal <sup>1,22</sup></div>
<div class="row">&#37;idle <sup>47,98</sup></div>
<div class="row">tps <sup>296546</sup></div>
</div>
</div>
<div id="ow-summary" class="row">
<div class="col-xs-12">
<h4 class="page-header">&Sigma; SUMMARY</h4>
<div class="row">
<div class="col-xs-12">
<div class="row">
<div class="col-xs-6">Total commits<b>1245634</b></div>
<div class="col-xs-6">Release count<b>227</b></div>
</div>
<div class="row">
<div class="col-xs-6">Tests passed<b>5222345</b></div>
<div class="col-xs-6">Tickets solved<b>324322</b></div>
</div>
<div class="row">
<div class="col-xs-6">Active clients<b>52145</b></div>
<div class="col-xs-6">Support team<b>288</b></div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
<!--End Dashboard Tab 1-->
<!--Start Dashboard Tab 2-->
<div id="dashboard-clients" class="row" style="visibility: hidden; position: absolute;">
<div class="row one-list-message">
<div class="col-xs-1"><i class="fa fa-users"></i></div>
<div class="col-xs-2"><b>Country</b></div>
<div class="col-xs-2">Visitors</div>
<div class="col-xs-2">Page hits</div>
<div class="col-xs-2">Revenue</div>
<div class="col-xs-1">Activity</div>
<div class="col-xs-2">Date</div>
</div>
<div class="row one-list-message">
<div class="col-xs-1"><i class="fa fa-user"></i></div>
<div class="col-xs-2"><b>USA</b></div>
<div class="col-xs-2">109455</div>
<div class="col-xs-2">54322344</div>
<div class="col-xs-2"><i class="fa fa-usd"></i> 354563</div>
<div class="col-xs-1"><span class="bar"></span></div>
<div class="col-xs-2 message-date">12/31/13</div>
</div>
<div class="row one-list-message">
<div class="col-xs-1"><i class="fa fa-user"></i></div>
<div class="col-xs-2"><b>U.K.</b></div>
<div class="col-xs-2">86549</div>
<div class="col-xs-2">43242344</div>
<div class="col-xs-2"><i class="fa fa-usd"></i> 265563</div>
<div class="col-xs-1"><span class="bar"></span></div>
<div class="col-xs-2 message-date">12/25/13</div>
</div>
<div class="row one-list-message">
<div class="col-xs-1"><i class="fa fa-user"></i></div>
<div class="col-xs-2"><b>FRANCE</b></div>
<div class="col-xs-2">79399</div>
<div class="col-xs-2">45376844</div>
<div class="col-xs-2"><i class="fa fa-usd"></i> 309456</div>
<div class="col-xs-1"><span class="bar"></span></div>
<div class="col-xs-2 message-date">12/30/13</div>
</div>
<div class="row one-list-message">
<div class="col-xs-1"><i class="fa fa-user"></i></div>
<div class="col-xs-2"><b>GERMANY</b></div>
<div class="col-xs-2">94567</div>
<div class="col-xs-2">35322344</div>
<div class="col-xs-2"><i class="fa fa-usd"></i> 301040</div>
<div class="col-xs-1"><span class="bar"></span></div>
<div class="col-xs-2 message-date">12/26/13</div>
</div>
<div class="row one-list-message">
<div class="col-xs-1"><i class="fa fa-user"></i></div>
<div class="col-xs-2"><b>CANADA</b></div>
<div class="col-xs-2">89525</div>
<div class="col-xs-2">1342344</div>
<div class="col-xs-2"><i class="fa fa-usd"></i> 298764</div>
<div class="col-xs-1"><span class="bar"></span></div>
<div class="col-xs-2 message-date">12/30/13</div>
</div>
<div class="row one-list-message">
<div class="col-xs-1"><i class="fa fa-user"></i></div>
<div class="col-xs-2"><b>CHINA</b></div>
<div class="col-xs-2">120865</div>
<div class="col-xs-2">43522344</div>
<div class="col-xs-2"><i class="fa fa-usd"></i> 776563</div>
<div class="col-xs-1"><span class="bar"></span></div>
<div class="col-xs-2 message-date">12/29/13</div>
</div>
</div>
<!--End Dashboard Tab 2-->
<!--Start Dashboard Tab 3-->
<div id="dashboard-graph" class="row" style="width:100%; visibility: hidden; position: absolute;" >
<div class="col-xs-12">
<h4 class="page-header">OS Platform Statistics</h4>
<div id="stat-graph" style="height: 300px;"></div>
</div>
</div>
<!--End Dashboard Tab 3-->
<!--Start Dashboard Tab 4-->
<div id="dashboard-servers" class="row" style="visibility: hidden; position: absolute;">
<div class="col-xs-12 col-sm-6 col-md-4 ow-server">
<h4 class="page-header text-right"><i class="fa fa-windows"></i>#SRV-APP</h4>
<small>Application server</small>
<div class="ow-settings">
<a href="#"><i class="fa fa-gears"></i></a>
</div>
<div class="row ow-server-bottom">
<div class="col-sm-4">
<div class="knob-slider">
<input id="knob-srv-1" class="knob" data-width="60" data-height="60" data-angleOffset="180" data-fgColor="#6AA6D6" data-skin="tron" data-thickness=".2" value="">CPU Load
</div>
</div>
<div class="col-sm-8">
<div class="row"><i class="fa fa-windows"></i> Windows 2008</div>
<div class="row"><i class="fa fa-user"></i> Active users - 49</div>
<div class="row"><i class="fa fa-bolt"></i> Uptime - 10 days</div>
</div>
</div>
</div>
<div class="col-xs-12 col-sm-6 col-md-4 ow-server">
<h4 class="page-header text-right"><i class="fa fa-windows"></i>#DB-MASTER</h4>
<small>SQL server</small>
<div class="ow-settings">
<a href="#"><i class="fa fa-gears"></i></a>
</div>
<div class="row ow-server-bottom">
<div class="col-sm-4">
<div class="knob-slider">
<input id="knob-srv-2" class="knob" data-width="60" data-height="60" data-angleOffset="180" data-fgColor="#6AA6D6" data-skin="tron" data-thickness=".2" value="">CPU Load
</div>
</div>
<div class="col-sm-8">
<div class="row"><i class="fa fa-windows"></i> Windows 2013</div>
<div class="row"><i class="fa fa-user"></i> Active users - 39</div>
<div class="row"><i class="fa fa-bolt"></i> Uptime - 2 month 1 day</div>
</div>
</div>
</div>
<div class="col-xs-12 col-sm-6 col-md-4 ow-server">
<h4 class="page-header text-right"><i class="fa fa-linux"></i>#DB-WEB</h4>
<small>MySQL server</small>
<div class="ow-settings">
<a href="#"><i class="fa fa-gears"></i></a>
</div>
<div class="row ow-server-bottom">
<div class="col-sm-4">
<div class="knob-slider">
<input id="knob-srv-3" class="knob" data-width="60" data-height="60" data-angleOffset="180" data-fgColor="#6AA6D6" data-skin="tron" data-thickness=".2" value="">CPU Load
</div>
</div>
<div class="col-sm-8">
<div class="row"><i class="fa fa-linux"></i> CentOS 6.5</div>
<div class="row"><i class="fa fa-user"></i> Active users - 298</div>
<div class="row"><i class="fa fa-bolt"></i> Uptime - 9 month 17 day</div>
</div>
</div>
</div>
<div class="col-xs-12 col-sm-6 col-md-4 ow-server">
<h4 class="page-header text-right"><i class="fa fa-linux"></i>#WWW-SRV</h4>
<small>Web-server</small>
<div class="ow-settings">
<a href="#"><i class="fa fa-gears"></i></a>
</div>
<div class="row ow-server-bottom">
<div class="col-sm-4">
<div class="knob-slider">
<input id="knob-srv-4" class="knob" data-width="60" data-height="60" data-angleOffset="180" data-fgColor="#6AA6D6" data-skin="tron" data-thickness=".2" value="">CPU Load
</div>
</div>
<div class="col-sm-8">
<div class="row"><i class="fa fa-linux"></i> Centos 6.5</div>
<div class="row"><i class="fa fa-user"></i> Active users - 1989</div>
<div class="row"><i class="fa fa-bolt"></i> Uptime - 2 years 3 month</div>
</div>
</div>
</div>
<div class="col-xs-12 col-sm-6 col-md-4 ow-server">
<h4 class="page-header text-right"><i class="fa fa-linux"></i>#PHONE-OFFICE</h4>
<small>Asterisk</small>
<div class="ow-settings">
<a href="#"><i class="fa fa-gears"></i></a>
</div>
<div class="row ow-server-bottom">
<div class="col-sm-4">
<div class="knob-slider">
<input id="knob-srv-5" class="knob" data-width="60" data-height="60" data-angleOffset="180" data-fgColor="#6AA6D6" data-skin="tron" data-thickness=".2" value="">CPU Load
</div>
</div>
<div class="col-sm-8">
<div class="row"><i class="fa fa-linux"></i> Debian 6.4</div>
<div class="row"><i class="fa fa-phone"></i> Active calls - 86</div>
<div class="row"><i class="fa fa-bolt"></i> Uptime - 3 month 19 day</div>
</div>
</div>
</div>
<div class="col-xs-12 col-sm-6 col-md-4 ow-server">
<h4 class="page-header text-right"><i class="fa fa-linux"></i>#DEVEL</h4>
<small>DEV server</small>
<div class="ow-settings">
<a href="#"><i class="fa fa-gears"></i></a>
</div>
<div class="row ow-server-bottom">
<div class="col-sm-4">
<div class="knob-slider">
<input id="knob-srv-6" class="knob" data-width="60" data-height="60" data-angleOffset="180" data-fgColor="#6AA6D6" data-skin="tron" data-thickness=".2" value="">CPU Load
</div>
</div>
<div class="col-sm-8">
<div class="row"><i class="fa fa-linux"></i> CentOS 6.5</div>
<div class="row"><i class="fa fa-archive"></i> Repositories - 17</div>
<div class="row"><i class="fa fa-bolt"></i> Uptime - 4 month 21 day</div>
</div>
</div>
</div>
<div class="clearfix"></div>
<div id="ow-server-footer">
<a href="#" class="col-xs-4 col-sm-2 btn-default text-center"><i class="fa fa-sun-o"></i> <b>287</b> <span>Hosts</span></a>
<a href="#" class="col-xs-4 col-sm-2 btn-default text-center"><i class="fa fa-envelope-o"></i> <b>56</b> <span>Messages</span></a>
<a href="#" class="col-xs-4 col-sm-2 btn-default text-center"><i class="fa fa-desktop"></i> <b>85</b> <span>Stations</span></a>
<a href="#" class="col-xs-4 col-sm-2 btn-default text-center"><i class="fa fa-info-circle"></i> <b>33</b> <span>Errors</span></a>
<a href="#" class="col-xs-4 col-sm-2 btn-default text-center"><i class="fa fa-comments-o"></i> <b>1386</b> <span>Comments</span></a>
<a href="#" class="col-xs-4 col-sm-2 btn-default text-center"><i class="fa fa-user"></i> <b>19985</b> <span>Clients</span></a>
</div>
</div>
<!--End Dashboard Tab 4-->
</div>
<div class="clearfix"></div>
</div>
<!--End Dashboard 2 -->
<div style="height: 40px;"></div>
<script type="text/javascript">
// Array for random data for Sparkline
var sparkline_arr_1 = SparklineTestData();
var sparkline_arr_2 = SparklineTestData();
var sparkline_arr_3 = SparklineTestData();
$(document).ready(function() {
// Make all JS-activity for dashboard
DashboardTabChecker();
// Load Knob plugin and run callback for draw Knob charts for dashboard(tab-servers)
LoadKnobScripts(DrawKnobDashboard);
// Load Sparkline plugin and run callback for draw Sparkline charts for dashboard(top of dashboard + plot in tables)
LoadSparkLineScript(DrawSparklineDashboard);
// Load Morris plugin and run callback for draw Morris charts for dashboard
LoadMorrisScripts(MorrisDashboard);
// Make beauty hover in table
$("#ticker-table").beautyHover();
});
</script>

View File

@@ -1,12 +1,180 @@
<div class="header" ng-controller="NavbarCtrl"> <!--
<ul class="nav nav-pills pull-right"> <ul class="nav nav-pills pull-right">
<li ng-repeat="item in menu" ng-class="{active: isActive(item.link)}"> <li ng-repeat="item in menu" ng-class="{active: isActive(item.link)}">
<a ng-href="{{item.link}}">{{item.title}}</a> <a ng-href="{{item.link}}">{{item.title}}</a>
</li>
<li ng-hide="currentUser" ng-class="{active: isActive('/promotions')}"><a href="/promotions">Promotions</a></li>
<li ng-hide="currentUser" ng-class="{active: isActive('/login')}"><a href="/login">Login</a></li>
<li ng-hide="currentUser" ng-class="{active: isActive('/signup')}"><a href="/signup">Sign up</a></li>
<li ng-show="currentUser" ng-class="{active: isActive('/logout')}"><a href="" ng-click="logout()">Logout</a>
</li>
</ul>
-->
<ul class="nav main-menu">
<li>
<a href="ajax/dashboard.html" class="ajax-link">
<i class="fa fa-dashboard"></i>
<span class="hidden-xs">Dashboard</span>
</a>
</li> </li>
<li ng-hide="currentUser" ng-class="{active: isActive('/promotions')}"><a href="/promotions">Promotions</a></li> <li class="dropdown">
<li ng-hide="currentUser" ng-class="{active: isActive('/login')}"><a href="/login">Login</a></li> <a href="#" class="dropdown-toggle active-parent active">
<li ng-hide="currentUser" ng-class="{active: isActive('/signup')}"><a href="/signup">Sign up</a></li> <i class="fa fa-bar-chart-o"></i>
<li ng-show="currentUser" ng-class="{active: isActive('/logout')}"><a href="" ng-click="logout()">Logout</a></li> <span class="hidden-xs">Charts</span>
</ul> </a>
<h3 class="text-muted">Roboto Promoto</h3> <ul class="dropdown-menu" style="display: block;">
</div> <li><a class="ajax-link active-parent active" href="ajax/charts_xcharts.html">xCharts</a></li>
<li><a class="ajax-link" href="ajax/charts_flot.html">Flot Charts</a></li>
<li><a class="ajax-link" href="ajax/charts_google.html">Google Charts</a></li>
<li><a class="ajax-link" href="ajax/charts_morris.html">Morris Charts</a></li>
<li><a class="ajax-link" href="ajax/charts_coindesk.html">CoinDesk realtime</a></li>
</ul>
</li>
<li class="dropdown">
<a href="#" class="dropdown-toggle">
<i class="fa fa-table"></i>
<span class="hidden-xs">Tables</span>
</a>
<ul class="dropdown-menu" style="">
<li><a class="ajax-link" href="ajax/tables_simple.html">Simple Tables</a></li>
<li><a class="ajax-link" href="ajax/tables_datatables.html">Data Tables</a></li>
<li><a class="ajax-link" href="ajax/tables_beauty.html">Beauty Tables</a></li>
</ul>
</li>
<li class="dropdown">
<a href="#" class="dropdown-toggle">
<i class="fa fa-pencil-square-o"></i>
<span class="hidden-xs">Forms</span>
</a>
<ul class="dropdown-menu" style="">
<li><a class="ajax-link" href="ajax/forms_elements.html">Elements</a></li>
<li><a class="ajax-link" href="ajax/forms_layouts.html">Layouts</a></li>
<li><a class="ajax-link" href="ajax/forms_file_uploader.html">File Uploader</a></li>
</ul>
</li>
<li class="dropdown">
<a href="#" class="dropdown-toggle">
<i class="fa fa-desktop"></i>
<span class="hidden-xs">UI Elements</span>
</a>
<ul class="dropdown-menu" style="">
<li><a class="ajax-link" href="ajax/ui_grid.html">Grid</a></li>
<li><a class="ajax-link" href="ajax/ui_buttons.html">Buttons</a></li>
<li><a class="ajax-link" href="ajax/ui_progressbars.html">Progress Bars</a></li>
<li><a class="ajax-link" href="ajax/ui_jquery-ui.html">Jquery UI</a></li>
<li><a class="ajax-link" href="ajax/ui_icons.html">Icons</a></li>
</ul>
</li>
<li class="dropdown">
<a href="#" class="dropdown-toggle">
<i class="fa fa-list"></i>
<span class="hidden-xs">Pages</span>
</a>
<ul class="dropdown-menu" style="">
<li><a href="ajax/page_login.html">Login</a></li>
<li><a href="ajax/page_register.html">Register</a></li>
<li><a id="locked-screen" class="submenu" href="ajax/page_locked.html">Locked Screen</a></li>
<li><a class="ajax-link" href="ajax/page_contacts.html">Contacts</a></li>
<li><a class="ajax-link" href="ajax/page_feed.html">Feed</a></li>
<li><a class="ajax-link add-full" href="ajax/page_messages.html">Messages</a></li>
<li><a class="ajax-link" href="ajax/page_pricing.html">Pricing</a></li>
<li><a class="ajax-link" href="ajax/page_invoice.html">Invoice</a></li>
<li><a class="ajax-link" href="ajax/page_search.html">Search Results</a></li>
<li><a class="ajax-link" href="ajax/page_404.html">Error 404</a></li>
<li><a href="ajax/page_500.html">Error 500</a></li>
</ul>
</li>
<li class="dropdown">
<a href="#" class="dropdown-toggle">
<i class="fa fa-map-marker"></i>
<span class="hidden-xs">Maps</span>
</a>
<ul class="dropdown-menu" style="">
<li><a class="ajax-link" href="ajax/maps.html">OpenStreetMap</a></li>
<li><a class="ajax-link" href="ajax/map_fullscreen.html">Fullscreen map</a></li>
</ul>
</li>
<li class="dropdown">
<a href="#" class="dropdown-toggle">
<i class="fa fa-picture-o"></i>
<span class="hidden-xs">Gallery</span>
</a>
<ul class="dropdown-menu" style="">
<li><a class="ajax-link" href="ajax/gallery_simple.html">Simple Gallery</a></li>
<li><a class="ajax-link" href="ajax/gallery_flickr.html">Flickr Gallery</a></li>
</ul>
</li>
<li>
<a class="ajax-link" href="ajax/typography.html">
<i class="fa fa-font"></i>
<span class="hidden-xs">Typography</span>
</a>
</li>
<li>
<a class="ajax-link" href="ajax/calendar.html">
<i class="fa fa-calendar"></i>
<span class="hidden-xs">Calendar</span>
</a>
</li>
<li class="dropdown">
<a href="#" class="dropdown-toggle">
<i class="fa fa-picture-o"></i>
<span class="hidden-xs">Multilevel menu</span>
</a>
<ul class="dropdown-menu" style="">
<li><a href="#">First level menu</a></li>
<li><a href="#">First level menu</a></li>
<li class="dropdown">
<a href="#" class="dropdown-toggle">
<i class="fa fa-plus-square"></i>
<span class="hidden-xs">Second level menu group</span>
</a>
<ul class="dropdown-menu" style="">
<li><a href="#">Second level menu</a></li>
<li><a href="#">Second level menu</a></li>
<li class="dropdown">
<a href="#" class="dropdown-toggle">
<i class="fa fa-plus-square"></i>
<span class="hidden-xs">Three level menu group</span>
</a>
<ul class="dropdown-menu" style="">
<li><a href="#">Three level menu</a></li>
<li><a href="#">Three level menu</a></li>
<li class="dropdown">
<a href="#" class="dropdown-toggle">
<i class="fa fa-plus-square"></i>
<span class="hidden-xs">Four level menu group</span>
</a>
<ul class="dropdown-menu" style="">
<li><a href="#">Four level menu</a></li>
<li><a href="#">Four level menu</a></li>
<li class="dropdown">
<a href="#" class="dropdown-toggle">
<i class="fa fa-plus-square"></i>
<span class="hidden-xs">Five level menu group</span>
</a>
<ul class="dropdown-menu" style="">
<li><a href="#">Five level menu</a></li>
<li><a href="#">Five level menu</a></li>
<li class="dropdown">
<a href="#" class="dropdown-toggle">
<i class="fa fa-plus-square"></i>
<span class="hidden-xs">Six level menu group</span>
</a>
<ul class="dropdown-menu" style="">
<li><a href="#">Six level menu</a></li>
<li><a href="#">Six level menu</a></li>
</ul>
</li>
</ul>
</li>
</ul>
</li>
<li><a href="#">Three level menu</a></li>
</ul>
</li>
</ul>
</li>
</ul>
</li>
</ul>

View File

@@ -1,4 +1,2 @@
<div ng-include="'partials/navbar'"></div>
<p><strong>Filter: </strong><input type="text" ng-model="filterOptions.filterText"/></p> <p><strong>Filter: </strong><input type="text" ng-model="filterOptions.filterText"/></p>
<div class="roboto-grid" ng-grid="gridPromotions"></div> <div class="roboto-grid" ng-grid="gridPromotions"></div>

View File

@@ -1,5 +1,3 @@
<div ng-include="'partials/navbar.html'"></div>
<div class="row"> <div class="row">
<div class="col-sm-12"> <div class="col-sm-12">
<h1>Change Password</h1> <h1>Change Password</h1>

View File

@@ -1,66 +1,70 @@
<div ng-include="'partials/navbar.html'"></div>
<div class="row"> <div class="row">
<div class="col-sm-12"> <div class="col-sm-12">
<h1>Sign up</h1> <h1>Sign up</h1>
</div> </div>
<div class="col-sm-12"> <div class="col-sm-12">
<form class="form" name="form" ng-submit="register(form)" novalidate> <form class="form" name="form" ng-submit="register(form)" novalidate>
<div class="form-group" ng-class="{ 'has-success': form.name.$valid && submitted, <div class="form-group" ng-class="{ 'has-success': form.name.$valid && submitted,
'has-error': form.name.$invalid && submitted }"> 'has-error': form.name.$invalid && submitted }">
<label>Name</label> <label>Name</label>
<input type="text" name="name" class="form-control" ng-model="user.name" <input type="text" name="name" class="form-control" ng-model="user.name"
required/> required/>
<p class="help-block" ng-show="form.name.$error.required && submitted">
A name is required
</p>
</div>
<div class="form-group" ng-class="{ 'has-success': form.email.$valid && submitted, <p class="help-block" ng-show="form.name.$error.required && submitted">
A name is required
</p>
</div>
<div class="form-group" ng-class="{ 'has-success': form.email.$valid && submitted,
'has-error': form.email.$invalid && submitted }"> 'has-error': form.email.$invalid && submitted }">
<label>Email</label> <label>Email</label>
<input type="email" name="email" class="form-control" ng-model="user.email" <input type="email" name="email" class="form-control" ng-model="user.email"
required required
mongoose-error/> mongoose-error/>
<p class="help-block" ng-show="form.email.$error.email && submitted">
Doesn't look like a valid email.
</p>
<p class="help-block" ng-show="form.email.$error.required && submitted">
What's your email address?
</p>
<p class="help-block" ng-show="form.email.$error.mongoose">
{{ errors.email }}
</p>
</div>
<div class="form-group" ng-class="{ 'has-success': form.password.$valid && submitted, <p class="help-block" ng-show="form.email.$error.email && submitted">
Doesn't look like a valid email.
</p>
<p class="help-block" ng-show="form.email.$error.required && submitted">
What's your email address?
</p>
<p class="help-block" ng-show="form.email.$error.mongoose">
{{ errors.email }}
</p>
</div>
<div class="form-group" ng-class="{ 'has-success': form.password.$valid && submitted,
'has-error': form.password.$invalid && submitted }"> 'has-error': form.password.$invalid && submitted }">
<label>Password</label> <label>Password</label>
<input type="password" name="password" class="form-control" ng-model="user.password"
ng-minlength="3"
required
mongoose-error/>
<p class="help-block"
ng-show="(form.password.$error.minlength || form.password.$error.required) && submitted">
Password must be at least 3 characters.
</p>
<p class="help-block" ng-show="form.password.$error.mongoose">
{{ errors.password }}
</p>
</div>
<button class="btn btn-lg btn-primary" type="submit">Sign up</button> <input type="password" name="password" class="form-control" ng-model="user.password"
</form> ng-minlength="3"
</div> required
mongoose-error/>
<p class="help-block"
ng-show="(form.password.$error.minlength || form.password.$error.required) && submitted">
Password must be at least 3 characters.
</p>
<p class="help-block" ng-show="form.password.$error.mongoose">
{{ errors.password }}
</p>
</div>
<button class="btn btn-lg btn-primary" type="submit">Sign up</button>
</form>
</div>
</div> </div>
<div class="row"> <div class="row">
<div class="col-sm-12"> <div class="col-sm-12">
<hr> <hr>
Have an account? <a href="/login" class="text-center new-account">Log in.</a> Have an account? <a href="/login" class="text-center new-account">Log in.</a>
</div> </div>
</div> </div>

View File

@@ -15,11 +15,21 @@ var user = new User({
email: 'test@test.com', email: 'test@test.com',
password: 'password' password: 'password'
}); });
user.save(function(err){ if (err) console.dir(err);}); user.save(function (err) {
if (err) console.dir(err);
});
for (var i=0;i<=100;i++){ var date = new Date(2013, 0, 1);
var promotion = new Promotion({ title: 'Test Prom ' + i, user: user }).save(function(err){ if (err) console.dir(err);}); for (var i = 0; i <= 100; i++) {
console.log("Bootstrapping promotion: " + i); new Promotion({
title: 'Test Prom ' + i,
user: user,
created: date.getTime()
}).save(function (err) {
if (err) console.dir(err);
});
console.log("Bootstrapping promotion: " + (date + (i * 86400000)));
date.setTime(date.getTime() + (1 * 24 * 60 * 60 * 1000))
} }
console.log("Bootstrap complete"); console.log("Bootstrap complete");

View File

@@ -5,23 +5,23 @@ var path = require('path');
/** /**
* Send partial, or 404 if it doesn't exist * Send partial, or 404 if it doesn't exist
*/ */
exports.partials = function(req, res) { exports.partials = function (req, res) {
var stripped = req.url.split('.')[0]; var stripped = req.url.split('.')[0];
var requestedView = path.join('./', stripped); var requestedView = path.join('./', stripped);
res.render(requestedView, function(err, html) { res.render(requestedView, function (err, html) {
if(err) { if (err) {
console.log("Error rendering partial '" + requestedView + "'\n", err); console.log("Error rendering partial '" + requestedView + "'\n", err);
res.status(404); res.status(404);
res.send(404); res.send(404);
} else { } else {
res.send(html); res.send(html);
} }
}); });
}; };
/** /**
* Send our single page app * Send our single page app
*/ */
exports.index = function(req, res) { exports.index = function (req, res) {
res.render('index'); res.render('index');
}; };

View File

@@ -3,15 +3,16 @@
var index = require('./controllers'), var index = require('./controllers'),
users = require('./controllers/users'), users = require('./controllers/users'),
promotions = require('./controllers/promotions'), promotions = require('./controllers/promotions'),
session = require('./controllers/session'); session = require('./controllers/session'),
mongoose = require('mongoose'),
middleware = require('./middleware'),
mers = require('mers');
var middleware = require('./middleware'); module.exports = function (app) {
/** app.use('/api', mers({mongoose: mongoose}).rest());
* Application routes
*/
module.exports = function(app) {
/*
// Server API Routes // Server API Routes
app.get('/api/promotions', promotions.list); app.get('/api/promotions', promotions.list);
app.post('/api/promotions', promotions.create); app.post('/api/promotions', promotions.create);
@@ -26,9 +27,10 @@ module.exports = function(app) {
app.del('/api/session', session.logout); app.del('/api/session', session.logout);
// All undefined api routes should return a 404 // All undefined api routes should return a 404
app.get('/api/*', function(req, res) { app.get('/api/*', function (req, res) {
res.send(404); res.send(404);
}); });
*/
// All other routes to use Angular routing in app/scripts/app.js // All other routes to use Angular routing in app/scripts/app.js
app.get('/partials/*', index.partials); app.get('/partials/*', index.partials);

View File

@@ -2,14 +2,14 @@
"name": "roboto-promoto", "name": "roboto-promoto",
"version": "0.0.0", "version": "0.0.0",
"dependencies": { "dependencies": {
"connect-mongo": "~0.4.0",
"ejs": "~0.8.4",
"express": "~3.4.3", "express": "~3.4.3",
"lodash": "~2.4.1", "lodash": "~2.4.1",
"mongoose": "~3.8.8", "mongoose": "~3.8.8",
"connect-mongo": "~0.4.0", "ng-grid": "~2.0.1",
"passport": "~0.2.0", "passport": "~0.2.0",
"passport-local": "~0.1.6", "passport-local": "~0.1.6"
"ejs": "~0.8.4",
"ng-grid": "~2.0.1"
}, },
"devDependencies": { "devDependencies": {
"grunt": "~0.4.1", "grunt": "~0.4.1",

View File

@@ -27,7 +27,7 @@ fs.readdirSync(modelsPath).forEach(function (file) {
}); });
// Populate empty DB with sample data // Populate empty DB with sample data
require('./lib/config/dummydata'); //require('./lib/config/dummydata');
// Passport Configuration // Passport Configuration
var passport = require('./lib/config/passport'); var passport = require('./lib/config/passport');
@@ -40,6 +40,7 @@ require('./lib/config/express')(app);
// Routing // Routing
require('./lib/routes')(app); require('./lib/routes')(app);
// Start server // Start server
app.listen(config.port, function () { app.listen(config.port, function () {
console.log('Express server listening on port %d in %s mode', config.port, app.get('env')); console.log('Express server listening on port %d in %s mode', config.port, app.get('env'));

View File

@@ -0,0 +1,22 @@
'use strict';
describe('Controller: HeaderCtrl', function () {
// load the controller's module
beforeEach(module('robotoPromotoApp'));
var HeaderCtrl,
scope;
// Initialize the controller and a mock scope
beforeEach(inject(function ($controller, $rootScope) {
scope = $rootScope.$new();
HeaderCtrl = $controller('HeaderCtrl', {
$scope: scope
});
}));
it('should attach a list of awesomeThings to the scope', function () {
expect(scope.awesomeThings.length).toBe(3);
});
});

View File

@@ -0,0 +1,22 @@
'use strict';
describe('Controller: NavbarCtrl', function () {
// load the controller's module
beforeEach(module('robotoPromotoApp'));
var NavbarCtrl,
scope;
// Initialize the controller and a mock scope
beforeEach(inject(function ($controller, $rootScope) {
scope = $rootScope.$new();
NavbarCtrl = $controller('NavbarCtrl', {
$scope: scope
});
}));
it('should attach a list of awesomeThings to the scope', function () {
expect(scope.awesomeThings.length).toBe(3);
});
});

View File

@@ -33,23 +33,23 @@ describe('Promotions Api', function(){
}); });
}); });
}); });
describe('GET /api/promotions', function () { describe('GET /api/promotion', function () {
it('should respond with JSON array', function (done) { it('should respond with JSON array', function (done) {
request(app) request(app)
.get('/api/promotions') .get('/api/promotion')
.expect(200) .expect(200)
.expect('Content-Type', /json/) .expect('Content-Type', /json/)
.end(function (err, res) { .end(function (err, res) {
if (err) return done(err); if (err) return done(err);
res.body.should.be.instanceof(Array); res.body.payload.should.be.instanceof(Array);
done(); done();
}); });
}); });
}); });
describe('POST /api/promotions', function () { describe('POST /api/promotion', function () {
it('should respond with the item POSTed', function (done) { it('should respond with the item POSTed', function (done) {
request(app) request(app)
.post('/api/promotions') .post('/api/promotion')
.send({ .send({
title: 'API - Test 2', title: 'API - Test 2',
user: auth user: auth