Skip to content

Commit

Permalink
Merge pull request #51 from spira/master
Browse files Browse the repository at this point in the history
feature/api-transformers...master
  • Loading branch information
zakhenry committed Jun 17, 2015
2 parents b878a97 + fa6f010 commit ab1a3a7
Show file tree
Hide file tree
Showing 26 changed files with 333 additions and 244 deletions.
38 changes: 11 additions & 27 deletions app/bower.json
Expand Up @@ -16,44 +16,28 @@
"tests"
],
"dependencies": {
"angular": "~1.4.0",
"angular-animate": "~1.4.0",
"angular-sanitize": "~1.4.0",
"angular-messages": "~1.4.0",
"angular-i18n": "~1.4.0",
"angular": "~1.3",
"angular-animate": "~1.3",
"angular-sanitize": "~1.3",
"angular-messages": "~1.3",
"angular-i18n": "~1.3",
"angular-ui-router": "~0.2.15",
"angular-ui-utils": "~0.2.3",
"angular-foundation": "~0.6.0",
"angular-highlightjs": "~0.4.1",
"ngprogress": "~1.0.7",
"jquery": "~2.1.3",
"moment": "~2.10",
"lodash": "~3.9",
"lil-uuid": "~0.1.0",
"font-awesome": "~4.3.0",
"foundation": "~5.5.2",
"highlightjs": "~8.5.0"
},
"resolutions": {
"angular": "1.4.0"
"highlightjs": "~8.5.0",
"angular-material": "~0.10.0",
"toposort": "~0.3.1"
},
"devDependencies": {
"angular-mocks": "~1.3.15"
"angular-mocks": "~1.3"
},
"overrides": {
"bootstrap": {
"main": [
"dist/css/bootstrap.css",
"dist/css/bootstrap.css.map"
]
},
"bootswatch-dist": {
"main": [
"css/bootstrap.css"
],
"dependencies": {
"bootstrap": "*"
}
}
"resolutions": {
"angular": "~1.3"
}
}
24 changes: 21 additions & 3 deletions app/src/app/_layouts/default.tpl.html
@@ -1,4 +1,22 @@
<div id="header-container" ui-view="navigation"></div>
<div id="main-container" class="row">
<div ui-view="main"></div>
<md-sidenav
class="site-sidenav md-sidenav-left md-whiteframe-z2"
md-component-id="left"
md-is-locked-open="$mdMedia('gt-sm')"
ui-view="navigation">
</md-sidenav>

<div flex layout="column"
tabIndex="-1"
role="main"
class="md-whiteframe-z2"
>

<md-toolbar layout="row" class="md-whiteframe-z1">
<md-button class="menu" hide-gt-sm ng-click="toggleLeftNav()" aria-label="Show Menu">
<md-icon>menu</md-icon>
</md-button>
<h1>Spira</h1>
</md-toolbar>

<md-content flex id="content" ui-view="main"></md-content>
</div>
43 changes: 8 additions & 35 deletions app/src/app/_partials/navigation.tpl.html
@@ -1,35 +1,8 @@

<nav>
<top-bar>
<ul class="title-area">
<li class="name">
<a href="#">spira</a>
</li>
<li toggle-top-bar class="menu-icon"><a href="#">Menu</a></li>
</ul>

<top-bar-section>

<ul class="left">
<li ng-repeat-start="state in childStates" ui-sref-active="active" ng-if="true"> <!--@todo set if to check if has children -->
<a ui-sref="{{state.name}}">
<i ng-if="!!state.data.icon" class="fa fa-{{state.data.icon}}">&nbsp;</i>{{state.data.title}}
</a>
</li>

<li ng-repeat-end="state in childStates" ui-sref-active="active" ng-if="false"><!--@todo set if to check if has children -->
<a ui-sref="{{state.name}}">
<i ng-if="!!state.data.icon" class="fa fa-{{state.data.icon}}">&nbsp;</i>{{state.data.title}}
</a>
<ul top-bar-dropdown>
<li ng-repeat="childState in state.children" ui-sref-active="active">
<a ui-sref="{{childState.name}}"><i ng-if="!!childState.data.icon" class="fa fa-{{childState.data.icon}}">&nbsp;</i>{{childState.data.title}}</a>
</li>
</ul>
</li>

</ul>

</top-bar-section>
</top-bar>
</nav>
<md-list>
<md-list-item ng-repeat="state in navigationStates | orderBy:orderMenuItems" >
<md-button ng-click="toggleLeftNav()" ui-sref="{{state.name}}" ui-sref-active="selected">
<md-icon>{{state.data.icon}}</md-icon>
{{state.data.title}}
</md-button>
</md-list-item>
</md-list>
39 changes: 35 additions & 4 deletions app/src/app/app.js
Expand Up @@ -5,7 +5,37 @@ angular.module('app', [
'stateManager'
])
.constant('API_URL', '/api')
.config(function(){
.config(function($mdIconProvider, $mdThemingProvider){
$mdIconProvider.fontSet('fa', 'fontawesome');

//$mdThemingProvider.theme('default')
// .primaryPalette('green')
// .accentPalette('grey')
//;

$mdThemingProvider.definePalette('amazingPaletteName', {
'50': 'rgb(100, 100, 5)',
'100': 'rgb(100, 100, 10)',
'200': 'rgb(100, 100, 20)',
'300': 'rgb(100, 100, 30)',
'400': 'rgb(100, 100, 40)',
'500': 'rgb(100, 100, 50)',
'600': 'rgb(100, 100, 60)',
'700': 'rgb(100, 100, 70)',
'800': 'rgb(100, 100, 80)',
'900': 'rgb(100, 100, 90)',
'A100': 'rgb(100, 100, 110)',
'A200': 'rgb(100, 100, 120)',
'A400': 'rgb(100, 100, 140)',
'A700': 'rgb(100, 100, 170)',
'contrastDefaultColor': 'light', // whether, by default, text (contrast)
// on this palette should be dark or light
'contrastDarkColors': ['50', '100', //hues which contrast should be 'dark' by default
'200', '300', '400', 'A100'],
'contrastLightColors': undefined // could also specify this if default was 'dark'
});
$mdThemingProvider.theme('default')
.primaryPalette('amazingPaletteName')

})

Expand All @@ -14,10 +44,11 @@ angular.module('app', [
$rootScope.$on("$stateChangeError", _.bind(console.error, console));
})

.controller('AppCtrl', function($scope) {

.controller('AppCtrl', function($scope, $mdSidenav) {

$scope.test = 'hello world';
$scope.toggleLeftNav = function(){
$mdSidenav('left').toggle();
}

})

Expand Down
31 changes: 31 additions & 0 deletions app/src/app/public/blog/blog.js
@@ -0,0 +1,31 @@
angular.module('app.public.blog', [
'app.public.blog.post'
])

.config(function(stateHelperServiceProvider) {
stateHelperServiceProvider.addState('app.public.blog', {
url: '/blog',
views: {
"main@app.public": {
controller: 'app.public.blog.controller',
templateUrl: 'templates/app/public/blog/blog.tpl.html'
}
},
resolve: /*@ngInject*/{
},
data: {
title: "Blog",
role: 'public',
icon: 'content_paste',
sortAfter: 'app.public.home',
navigation: true
}
});
})

.controller('app.public.blog.controller', function($scope) {


})

;
19 changes: 19 additions & 0 deletions app/src/app/public/blog/blog.tpl.html
@@ -0,0 +1,19 @@
<h2 class="md-flex">Blog</h2>
<h3><md-icon>warning</md-icon> @todo</h3>


<md-button class="md-raised md-primary">(md-primary)</md-button>
<md-button class="md-raised md-primary md-hue-1">md-primary md-hue-1</md-button>
<md-button class="md-raised md-primary md-hue-2">md-primary md-hue-2</md-button>
<md-button class="md-raised md-primary md-hue-3">md-primary md-hue-3</md-button>

<hr/>

<md-button class="md-raised md-accent">(md-accent)</md-button>
<md-button class="md-raised md-accent md-hue-1">md-accent md-hue-1</md-button>
<md-button class="md-raised md-accent md-hue-2">md-accent md-hue-2</md-button>
<md-button class="md-raised md-accent md-hue-3">md-accent md-hue-3</md-button>

<hr/>

<md-button class="md-raised md-warn">(md-warn)</md-button>
1 change: 1 addition & 0 deletions app/src/app/public/blog/post/post-stub.tpl.html
@@ -0,0 +1 @@
<h2 class="md-flex">Post Stub</h2>
30 changes: 30 additions & 0 deletions app/src/app/public/blog/post/post.js
@@ -0,0 +1,30 @@
angular.module('app.public.blog.post', [])

.config(function(stateHelperServiceProvider) {
stateHelperServiceProvider.addState('app.public.blog.post', {
url: '/{permalink}',
views: {
'main@app.public': {
controller: 'app.public.blog.post.controller',
templateUrl: 'templates/app/public/blog/post/post.tpl.html'
},
'content@app.public.blog.post': {
templateUrl: 'templates/app/public/blog/post/post-stub.tpl.html'
}
},
resolve: /*@ngInject*/{

},
data: {
title: "Blog Post",
role: 'public'
}
});
})

.controller('app.public.blog.post.controller', function($scope) {


})

;
4 changes: 4 additions & 0 deletions app/src/app/public/blog/post/post.tpl.html
@@ -0,0 +1,4 @@
<h2 class="md-flex">Post</h2>
<div ui-view="content">

</div>
110 changes: 110 additions & 0 deletions app/src/app/public/error/error.js
@@ -0,0 +1,110 @@


angular.module('app.public.error', [])

.config(function(stateHelperServiceProvider, $httpProvider) {

stateHelperServiceProvider.addState('app.public.error', {
views: {
"main@app.public": {
controller: 'app.public.error.controller',
templateUrl: 'public/error/error_template.tpl.html'
}
},
params: {
title: null,
message: null,
details: null,
errorType: null,
url: null,
method: null
}
});

$httpProvider.interceptors.push('errorInterceptor');

})

.factory('errorInterceptor',function($q, $rootScope, $injector) {
return {
'responseError': function(response) {

var $state = $injector.get('$state'),
$filter = $injector.get('$filter'),
errors = {
400: {
title: '400 - Bad Request',
url: 'bad-request'
},
403: {
title: '403 - Access Forbidden',
url: 'forbidden'
},
404: {
title: '404 - Not Found',
url: 'not-found'
},
412: {
title: '412 - Precondition failed',
url: 'precondition-failed'
},
500: {
title: '500 - Internal Server Error',
url: 'internal-server-error'
},
502: {
title: '502 - Proxy Error',
url: 'proxy-server-error'
},
0: {
title: 'CORS Error - API Not Accepting Request',
url: 'cors-error'
}
};

if (response.status in errors && !response.config.skipInterceptor) {

var params = {
errorType: errors[response.status].url,
title: errors[response.status].title,
details: $filter('json')(response),
url: response.config.url,
method: response.config.method
};

if (response.data && response.data.message){
params.message = response.data.message;
}

$state.transitionTo('app.public.error', params);
}

return $q.reject(response);
}
};
})

.controller('app.public.error.controller', function($rootScope, $scope, titleService, $stateParams, $state, $window, $filter) {

titleService.setTitle($stateParams.title);

$scope.title = $stateParams.title;
$scope.message = $stateParams.message;
$scope.url = $stateParams.url;
$scope.method = $stateParams.method;

if (!!$scope.details){
$scope.details = _.isString($stateParams.details) ? $stateParams.details : $filter('json')($stateParams.details);
}

$scope.goBack = function() {
$window.history.back();
};

$scope.reload = function() {
$window.location.reload();
};

})

;
5 changes: 5 additions & 0 deletions app/src/app/public/error/error.less
@@ -0,0 +1,5 @@
#sf-error {
a {
word-break: break-all;
}
}

0 comments on commit ab1a3a7

Please sign in to comment.