Added custom stylesheets
BIN
app/images/bs/8962691008_7f489395c9_m.jpg
Normal file
|
After Width: | Height: | Size: 14 KiB |
BIN
app/images/bs/8985207189_01ea27882d_m.jpg
Normal file
|
After Width: | Height: | Size: 19 KiB |
BIN
app/images/bs/9036958611_fa1bb7f827_m.jpg
Normal file
|
After Width: | Height: | Size: 23 KiB |
BIN
app/images/bs/9041440555_2175b32078_m.jpg
Normal file
|
After Width: | Height: | Size: 11 KiB |
BIN
app/images/bs/avatar.jpg
Normal file
|
After Width: | Height: | Size: 4.3 KiB |
BIN
app/images/bs/chevron-left.png
Normal file
|
After Width: | Height: | Size: 1.3 KiB |
BIN
app/images/bs/chevron-right.png
Normal file
|
After Width: | Height: | Size: 1.4 KiB |
BIN
app/images/bs/devoops_getdata.gif
Normal file
|
After Width: | Height: | Size: 2.8 KiB |
BIN
app/images/bs/devoops_pattern_b10.png
Normal file
|
After Width: | Height: | Size: 9.8 KiB |
BIN
app/images/bs/logo-200.png
Normal file
|
After Width: | Height: | Size: 2.8 KiB |
BIN
app/images/bs/logo.png
Normal file
|
After Width: | Height: | Size: 1.1 KiB |
BIN
app/images/bs/sort-asc.png
Normal file
|
After Width: | Height: | Size: 1022 B |
BIN
app/images/bs/sort-desc.png
Normal file
|
After Width: | Height: | Size: 1017 B |
BIN
app/images/bs/sort.png
Normal file
|
After Width: | Height: | Size: 1.0 KiB |
BIN
app/images/bs/times.png
Normal file
|
After Width: | Height: | Size: 1.4 KiB |
BIN
app/images/bs/ui-accordion-down.png
Normal file
|
After Width: | Height: | Size: 1.1 KiB |
BIN
app/images/bs/ui-accordion-right.png
Normal file
|
After Width: | Height: | Size: 1.1 KiB |
BIN
app/images/bs/ui-left.png
Normal file
|
After Width: | Height: | Size: 1.1 KiB |
BIN
app/images/bs/ui-right.png
Normal file
|
After Width: | Height: | Size: 1.1 KiB |
2530
app/scripts/bs/bs.js
Normal file
26
app/scripts/controllers/header.js
Normal 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();
|
||||
};
|
||||
});
|
||||
@@ -1,23 +1,10 @@
|
||||
'use strict';
|
||||
|
||||
angular.module('robotoPromotoApp')
|
||||
.controller('NavbarCtrl', 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();
|
||||
};
|
||||
.controller('NavbarCtrl', function ($scope) {
|
||||
$scope.awesomeThings = [
|
||||
'HTML5 Boilerplate',
|
||||
'AngularJS',
|
||||
'Karma'
|
||||
];
|
||||
});
|
||||
|
||||
@@ -11,12 +11,11 @@ angular.module('robotoPromotoApp')
|
||||
pageSizes: [5, 10, 20],
|
||||
pageSize: 5,
|
||||
currentPage: 1
|
||||
}
|
||||
};
|
||||
|
||||
$scope.setPagingData = function(data, page, pageSize){
|
||||
var pagedData = data.slice((page-1) * pageSize, page * pageSize);
|
||||
$scope.promotionData = pagedData;
|
||||
$scope.totalServerItems = data.length;
|
||||
$scope.setPagingData = function(data, total){
|
||||
$scope.promotionData = data;
|
||||
$scope.totalServerItems = total;
|
||||
if (!$scope.$$phase){
|
||||
$scope.$apply();
|
||||
}
|
||||
@@ -27,10 +26,10 @@ angular.module('robotoPromotoApp')
|
||||
if (searchText){
|
||||
var ft = searchText.toLowerCase();
|
||||
}else{
|
||||
$http.get('api/promotions')
|
||||
.success(function (promotions) {
|
||||
$scope.setPagingData(promotions, page, pageSize);
|
||||
});
|
||||
$http.get('api/promotion?sort=created&limit=' + pageSize + '&skip=' + pageSize * (page-1))
|
||||
.success(function (promotions) {
|
||||
$scope.setPagingData(promotions.payload, promotions.total);
|
||||
});
|
||||
}
|
||||
}, 3000);
|
||||
};
|
||||
|
||||
5824
app/styles/bs/base.css
Normal file
2802
app/styles/bs/style.css
Normal file
1
app/styles/bs/style.min.css
vendored
Normal file
@@ -1,98 +1,4 @@
|
||||
$icon-font-path: "/bower_components/bootstrap-sass-official/vendor/assets/fonts/bootstrap/";
|
||||
|
||||
@import 'bootstrap-sass-official/vendor/assets/stylesheets/bootstrap';
|
||||
|
||||
.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;
|
||||
}
|
||||
@import 'bs/base.css';
|
||||
@import '../styles/bs/style.css';
|
||||
|
||||
@@ -20,6 +20,7 @@
|
||||
<!-- endbower -->
|
||||
<!-- endbuild -->
|
||||
<!-- 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="bower_components/ui-grid/ng-grid.css">
|
||||
<!-- endbuild -->
|
||||
@@ -29,25 +30,184 @@
|
||||
<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>
|
||||
<![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]>
|
||||
<script src="bower_components/es5-shim/es5-shim.js"></script>
|
||||
@@ -67,8 +227,10 @@
|
||||
<script src="bower_components/ui-grid/ng-grid.js"></script>
|
||||
|
||||
<!-- build:js({.tmp,app}) scripts/scripts.js -->
|
||||
<script src="scripts/bs/bs.js"></script>
|
||||
<script src="scripts/app.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/promotions.js"></script>
|
||||
<script src="scripts/controllers/login.js"></script>
|
||||
|
||||
96
app/views/partials/header.html
Normal 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>
|
||||
@@ -1,40 +1,42 @@
|
||||
<div ng-include="'partials/navbar.html'"></div>
|
||||
|
||||
<div class="row">
|
||||
<div class="col-sm-12">
|
||||
<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="col-sm-12">
|
||||
<h1>Login</h1>
|
||||
|
||||
<div class="form-group">
|
||||
<label>Email</label>
|
||||
<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>
|
||||
|
||||
<input type="text" name="email" class="form-control" ng-model="user.email">
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label>Email</label>
|
||||
|
||||
<div class="form-group">
|
||||
<label>Password</label>
|
||||
<input type="text" name="email" class="form-control" ng-model="user.email">
|
||||
</div>
|
||||
|
||||
<input type="password" name="password" class="form-control" ng-model="user.password">
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label>Password</label>
|
||||
|
||||
<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>
|
||||
<input type="password" name="password" class="form-control" ng-model="user.password">
|
||||
</div>
|
||||
|
||||
<button type="submit" class="btn btn-lg btn-primary"> Sign in </button>
|
||||
</form>
|
||||
</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 class="row">
|
||||
<div class="col-sm-12">
|
||||
<hr>
|
||||
Not registered? <a href="/signup" class="text-center new-account">Create an account.</a>
|
||||
</div>
|
||||
<div class="col-sm-12">
|
||||
<hr>
|
||||
Not registered? <a href="/signup" class="text-center new-account">Create an account.</a>
|
||||
</div>
|
||||
</div>
|
||||
@@ -1,12 +1,355 @@
|
||||
<div ng-include="'partials/navbar'"></div>
|
||||
|
||||
<div class="jumbotron">
|
||||
<p class="lead">
|
||||
<img src="images/roboto-small.png" alt="I'm Roboto"><br>
|
||||
Intelligent Promotion Distribution for Humans
|
||||
</p>
|
||||
<!--Start Breadcrumb-->
|
||||
<div class="row">
|
||||
<div id="breadcrumb" class="col-xs-12">
|
||||
<ol class="breadcrumb">
|
||||
<li><a href="index.html">Home</a></li>
|
||||
<li><a href="#">Dashboard</a></li>
|
||||
</ol>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="footer">
|
||||
<p>♥ from the PodNoms team</p>
|
||||
<!--End Breadcrumb-->
|
||||
<!--Start Dashboard 1-->
|
||||
<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>
|
||||
<!--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">%user <sup>20,43</sup></div>
|
||||
<div class="row">%nice <sup>1,01</sup></div>
|
||||
<div class="row">%system <sup>27,34</sup></div>
|
||||
<div class="row">%iowait <sup>2,02</sup></div>
|
||||
<div class="row">%steal <sup>1,22</sup></div>
|
||||
<div class="row">%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">Σ 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>
|
||||
|
||||
@@ -1,12 +1,180 @@
|
||||
<div class="header" ng-controller="NavbarCtrl">
|
||||
<ul class="nav nav-pills pull-right">
|
||||
<li ng-repeat="item in menu" ng-class="{active: isActive(item.link)}">
|
||||
<a ng-href="{{item.link}}">{{item.title}}</a>
|
||||
<!--
|
||||
<ul class="nav nav-pills pull-right">
|
||||
<li ng-repeat="item in menu" ng-class="{active: isActive(item.link)}">
|
||||
<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 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>
|
||||
<h3 class="text-muted">Roboto Promoto</h3>
|
||||
</div>
|
||||
<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>
|
||||
|
||||
@@ -1,4 +1,2 @@
|
||||
<div ng-include="'partials/navbar'"></div>
|
||||
|
||||
<p><strong>Filter: </strong><input type="text" ng-model="filterOptions.filterText"/></p>
|
||||
<div class="roboto-grid" ng-grid="gridPromotions"></div>
|
||||
|
||||
@@ -1,5 +1,3 @@
|
||||
<div ng-include="'partials/navbar.html'"></div>
|
||||
|
||||
<div class="row">
|
||||
<div class="col-sm-12">
|
||||
<h1>Change Password</h1>
|
||||
|
||||
@@ -1,66 +1,70 @@
|
||||
<div ng-include="'partials/navbar.html'"></div>
|
||||
|
||||
<div class="row">
|
||||
<div class="col-sm-12">
|
||||
<h1>Sign up</h1>
|
||||
</div>
|
||||
<div class="col-sm-12">
|
||||
<form class="form" name="form" ng-submit="register(form)" novalidate>
|
||||
<div class="col-sm-12">
|
||||
<h1>Sign up</h1>
|
||||
</div>
|
||||
<div class="col-sm-12">
|
||||
<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 }">
|
||||
<label>Name</label>
|
||||
<label>Name</label>
|
||||
|
||||
<input type="text" name="name" class="form-control" ng-model="user.name"
|
||||
required/>
|
||||
<p class="help-block" ng-show="form.name.$error.required && submitted">
|
||||
A name is required
|
||||
</p>
|
||||
</div>
|
||||
<input type="text" name="name" class="form-control" ng-model="user.name"
|
||||
required/>
|
||||
|
||||
<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 }">
|
||||
<label>Email</label>
|
||||
<label>Email</label>
|
||||
|
||||
<input type="email" name="email" class="form-control" ng-model="user.email"
|
||||
required
|
||||
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>
|
||||
<input type="email" name="email" class="form-control" ng-model="user.email"
|
||||
required
|
||||
mongoose-error/>
|
||||
|
||||
<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 }">
|
||||
<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>
|
||||
<input type="password" name="password" class="form-control" ng-model="user.password"
|
||||
ng-minlength="3"
|
||||
required
|
||||
mongoose-error/>
|
||||
|
||||
<button class="btn btn-lg btn-primary" type="submit">Sign up</button>
|
||||
</form>
|
||||
</div>
|
||||
<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 class="row">
|
||||
<div class="col-sm-12">
|
||||
<hr>
|
||||
Have an account? <a href="/login" class="text-center new-account">Log in.</a>
|
||||
</div>
|
||||
<div class="col-sm-12">
|
||||
<hr>
|
||||
Have an account? <a href="/login" class="text-center new-account">Log in.</a>
|
||||
</div>
|
||||
</div>
|
||||
@@ -15,11 +15,21 @@ var user = new User({
|
||||
email: 'test@test.com',
|
||||
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 promotion = new Promotion({ title: 'Test Prom ' + i, user: user }).save(function(err){ if (err) console.dir(err);});
|
||||
console.log("Bootstrapping promotion: " + i);
|
||||
var date = new Date(2013, 0, 1);
|
||||
for (var i = 0; i <= 100; 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");
|
||||
|
||||
@@ -5,23 +5,23 @@ var path = require('path');
|
||||
/**
|
||||
* Send partial, or 404 if it doesn't exist
|
||||
*/
|
||||
exports.partials = function(req, res) {
|
||||
var stripped = req.url.split('.')[0];
|
||||
var requestedView = path.join('./', stripped);
|
||||
res.render(requestedView, function(err, html) {
|
||||
if(err) {
|
||||
console.log("Error rendering partial '" + requestedView + "'\n", err);
|
||||
res.status(404);
|
||||
res.send(404);
|
||||
} else {
|
||||
res.send(html);
|
||||
}
|
||||
});
|
||||
exports.partials = function (req, res) {
|
||||
var stripped = req.url.split('.')[0];
|
||||
var requestedView = path.join('./', stripped);
|
||||
res.render(requestedView, function (err, html) {
|
||||
if (err) {
|
||||
console.log("Error rendering partial '" + requestedView + "'\n", err);
|
||||
res.status(404);
|
||||
res.send(404);
|
||||
} else {
|
||||
res.send(html);
|
||||
}
|
||||
});
|
||||
};
|
||||
|
||||
/**
|
||||
* Send our single page app
|
||||
*/
|
||||
exports.index = function(req, res) {
|
||||
res.render('index');
|
||||
exports.index = function (req, res) {
|
||||
res.render('index');
|
||||
};
|
||||
|
||||
@@ -3,15 +3,16 @@
|
||||
var index = require('./controllers'),
|
||||
users = require('./controllers/users'),
|
||||
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) {
|
||||
|
||||
/**
|
||||
* Application routes
|
||||
*/
|
||||
module.exports = function(app) {
|
||||
app.use('/api', mers({mongoose: mongoose}).rest());
|
||||
|
||||
/*
|
||||
// Server API Routes
|
||||
app.get('/api/promotions', promotions.list);
|
||||
app.post('/api/promotions', promotions.create);
|
||||
@@ -26,9 +27,10 @@ module.exports = function(app) {
|
||||
app.del('/api/session', session.logout);
|
||||
|
||||
// All undefined api routes should return a 404
|
||||
app.get('/api/*', function(req, res) {
|
||||
app.get('/api/*', function (req, res) {
|
||||
res.send(404);
|
||||
});
|
||||
*/
|
||||
|
||||
// All other routes to use Angular routing in app/scripts/app.js
|
||||
app.get('/partials/*', index.partials);
|
||||
|
||||
@@ -2,14 +2,14 @@
|
||||
"name": "roboto-promoto",
|
||||
"version": "0.0.0",
|
||||
"dependencies": {
|
||||
"connect-mongo": "~0.4.0",
|
||||
"ejs": "~0.8.4",
|
||||
"express": "~3.4.3",
|
||||
"lodash": "~2.4.1",
|
||||
"mongoose": "~3.8.8",
|
||||
"connect-mongo": "~0.4.0",
|
||||
"ng-grid": "~2.0.1",
|
||||
"passport": "~0.2.0",
|
||||
"passport-local": "~0.1.6",
|
||||
"ejs": "~0.8.4",
|
||||
"ng-grid": "~2.0.1"
|
||||
"passport-local": "~0.1.6"
|
||||
},
|
||||
"devDependencies": {
|
||||
"grunt": "~0.4.1",
|
||||
|
||||
@@ -27,7 +27,7 @@ fs.readdirSync(modelsPath).forEach(function (file) {
|
||||
});
|
||||
|
||||
// Populate empty DB with sample data
|
||||
require('./lib/config/dummydata');
|
||||
//require('./lib/config/dummydata');
|
||||
|
||||
// Passport Configuration
|
||||
var passport = require('./lib/config/passport');
|
||||
@@ -40,6 +40,7 @@ require('./lib/config/express')(app);
|
||||
// Routing
|
||||
require('./lib/routes')(app);
|
||||
|
||||
|
||||
// Start server
|
||||
app.listen(config.port, function () {
|
||||
console.log('Express server listening on port %d in %s mode', config.port, app.get('env'));
|
||||
|
||||
22
test/client/spec/controllers/header.js
Normal 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);
|
||||
});
|
||||
});
|
||||
22
test/client/spec/controllers/navbar.js
Normal 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);
|
||||
});
|
||||
});
|
||||
@@ -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) {
|
||||
request(app)
|
||||
.get('/api/promotions')
|
||||
.get('/api/promotion')
|
||||
.expect(200)
|
||||
.expect('Content-Type', /json/)
|
||||
.end(function (err, res) {
|
||||
if (err) return done(err);
|
||||
res.body.should.be.instanceof(Array);
|
||||
res.body.payload.should.be.instanceof(Array);
|
||||
done();
|
||||
});
|
||||
});
|
||||
});
|
||||
describe('POST /api/promotions', function () {
|
||||
describe('POST /api/promotion', function () {
|
||||
it('should respond with the item POSTed', function (done) {
|
||||
request(app)
|
||||
.post('/api/promotions')
|
||||
.post('/api/promotion')
|
||||
.send({
|
||||
title: 'API - Test 2',
|
||||
user: auth
|
||||
|
||||