Commit cb28e889 authored by Erkan Öğümsöğütlü's avatar Erkan Öğümsöğütlü

Merge remote-tracking branch 'refs/remotes/origin/develop'

parents fbd02c97 462104fd
......@@ -216,6 +216,14 @@ module.exports = function (grunt) {
"app/bower_components/intro.js/themes/introjs-nassim.css"
],
dest: 'dist/<%= grunt.branchname %>/css/app.css'
},
docs: {
src: ['docs/templates/index_head', 'docs/html/partials/api/**/*.html', 'docs/templates/index_tail'],
dest: 'docs/html/partials/api/index.html'
},
docs_list: {
src: ['docs/html/partials/api/**/index.html'],
dest: 'docs/html/partials/api/list.html'
}
},
watch: {
......@@ -323,6 +331,27 @@ module.exports = function (grunt) {
}
}
}
},
jsdoc: {
dist: {
src: [
"app/app.js",
"app/zetalib/interceptors.js",
"app/zetalib/form_service.js",
"app/shared/directives.js",
"app/components/auth/auth_controller.js",
"app/components/auth/auth_service.js",
"app/components/crud/crud_controller.js"
],
options: {
destination: 'docs/html',
configure: 'node_modules/angular-jsdoc/common/conf.json',
template: 'node_modules/angular-jsdoc/angular-template',
//tutorial: 'tutorials',
readme: './README.md'
}
}
}
});
......@@ -339,6 +368,7 @@ module.exports = function (grunt) {
grunt.loadNpmTasks('grunt-angular-gettext');
grunt.loadNpmTasks('grunt-preprocess');
grunt.loadNpmTasks('grunt-env');
grunt.loadNpmTasks('grunt-jsdoc');
grunt.registerTask('dev', ['env:dev', 'preprocess:dev', 'html2js:dev', 'default']);
grunt.registerTask('test', ['bower', 'karma:continuous']);
......@@ -362,11 +392,4 @@ module.exports = function (grunt) {
'uglify:branch'
]);
});
grunt.registerTask('dgeni', 'Generate docs via dgeni.', function() {
var Dgeni = require('dgeni');
var done = this.async();
var dgeni = new Dgeni([require('./docs/docs_conf')]);
dgeni.generate().then(done);
});
};
\ No newline at end of file
......@@ -91,6 +91,13 @@ a:hover {
letter-spacing: 0.5px;
}
img.header-profile {
width:27px;
height:27px;
border-radius:100%;
margin-right:6px;
}
/** DETAIL PAGE **/
.detail-page {
......@@ -360,11 +367,15 @@ select {
.manager-view-inner {
height:calc(100% - 41px);
-webkit-height:calc(100% - 41px);
width:100%;
display: -webkit-flex;
display: flex;
-webkit-flex-direction: column;
flex-direction: column;
-webkit-transition: all .2s;
-moz-transition: all .2s;
-ms-transition: all .2s;
-o-transition: all .2s;
transition: all .2s;
}
.manager-view-header {
......@@ -1152,15 +1163,19 @@ table.dataTable thead .sorting:after {
}
.right-sidebar {
width: 300px;
width: 0px;
background-color: #FFFFFF;
border-left: 1px solid #ccc;
/*height: calc(100% - 140px);*/
height: calc(100% - 40px);
position: absolute;
top: 0px;
right: 0px;
overflow-y: auto;
overflow-y: auto;
-webkit-transition: all .2s;
-moz-transition: all .2s;
-ms-transition: all .2s;
-o-transition: all .2s;
transition: all .2s;
}
.right-sidebar-box {
......@@ -1335,6 +1350,63 @@ table.dataTable thead .sorting:after {
/* END OF DASHBOARD */
/* SELECTED PERSON FIELD */
.selected-person-field .right-sidebar-header {
height:43px;
width:100%;
}
.selected-person-field .right-sidebar-header .bar-title {
margin-left: 10px;
height: 43px;
line-height: 43px;
font-family: 'robotomedium';
font-size: 15px;
}
.selected-person-field .right-sidebar-header .unselect-person {
height: 43px;
width: 43px;
font-size: 24px;
line-height: 43px;
float: right;
text-align: center;
cursor:pointer;
-webkit-transition: all .2s;
-moz-transition: all .2s;
-ms-transition: all .2s;
-o-transition: all .2s;
transition: all .2s;
}
.selected-person-field .right-sidebar-header .unselect-person:hover > i{
color:#333;
}
.selected-person-field .right-sidebar-header .unselect-person i {
color:#999;
}
.selected-person-field img.selected-person-img {
width:150px;
height:150px;
border-radius:100%;
margin-top:5px;
margin-left:75px;
margin-right:75px;
}
.selected-person-field .selected-person-info .selected-person-name {
width:100%;
padding:15px 20px;
text-align:center;
font-family:'robotomedium';
font-size:18px;
}
/* END OF SELECTED PERSON FIELD */
/* PERSONNEL INFO */
......
......@@ -8,14 +8,26 @@
'use strict';
var app = angular.module(
/**
* @ngdoc module
* @name ulakbus
* @module ulakbus
* @description Ulakbus module is the main module of ulakbus-ui. All application-wide configurations and definings
* of constants handled in this module. \r
* There are two scripts on `app/` root; `main.js` and `app.js`. And `main.html`, `index.html`.
* `main.*` files are contains both production and development requirements or configurations/necessities for
* relative environment. Tagged with `// \@if NODE_ENV='PRODUCTION'` in commented line and configured in
* Gruntfile.js with package `preprocess` and `env`, related grunt command generates index.* for given file.
*
*/
angular.module(
'ulakbus', [
'ui.bootstrap',
'angular-loading-bar',
'ngRoute',
'ngSanitize',
'ngCookies',
'formService',
'ulakbus.formService',
'ulakbus.dashboard',
'ulakbus.auth',
'ulakbus.error_pages',
......@@ -26,43 +38,46 @@ var app = angular.module(
//'schemaForm',
'gettext',
'ulakbus.uitemplates'
]).
/**
* RESTURL is the url of rest api to talk
* Based on the environment it changes from dev to prod
*/
constant("RESTURL", (function () {
// todo: below backendurl definition is for development purpose and will be deleted
var backendurl = location.href.indexOf('nightly') > -1 ? "//nightly.api.ulakbus.net/" : "//api.ulakbus.net/";
if (document.cookie.indexOf("backendurl") > -1) {
var cookiearray = document.cookie.split(';');
angular.forEach(cookiearray, function (item) {
if (item.indexOf("backendurl") > -1) {
backendurl = item.split('=')[1];
}
});
}
])
/**
* @memberof ulakbus
* @ngdoc constant
* @name RESTURL
* @description RESTURL is the url of rest api to talk.
* Based on the environment it changes from dev to prod
*/
.constant("RESTURL", (function () {
// todo: below backendurl definition is for development purpose and will be deleted
var backendurl = location.href.indexOf('nightly') > -1 ? "//nightly.api.ulakbus.net/" : "//api.ulakbus.net/";
if (document.cookie.indexOf("backendurl") > -1) {
var cookiearray = document.cookie.split(';');
angular.forEach(cookiearray, function (item) {
if (item.indexOf("backendurl") > -1) {
backendurl = item.split('=')[1];
}
});
}
if (location.href.indexOf("backendurl") > -1) {
var urlfromqstr = location.href.split('?')[1].split('=')[1];
backendurl = decodeURIComponent(urlfromqstr.replace(/\+/g, " "));
document.cookie = "backendurl=" + backendurl;
window.location.href = window.location.href.split('?')[0];
}
if (location.href.indexOf("backendurl") > -1) {
var urlfromqstr = location.href.split('?')[1].split('=')[1];
backendurl = decodeURIComponent(urlfromqstr.replace(/\+/g, " "));
document.cookie = "backendurl=" + backendurl;
window.location.href = window.location.href.split('?')[0];
}
return {url: backendurl};
})()).
/**
* USER_ROLES and AUTH_EVENTS are constant for auth functions
*/
constant("USER_ROLES", {
all: "*",
admin: "admin",
student: "student",
staff: "staff",
dean: "dean"
}).
constant('AUTH_EVENTS', {
return {url: backendurl};
})()).
/**
* USER_ROLES and AUTH_EVENTS are constant for auth functions
*/
constant("USER_ROLES", {
all: "*",
admin: "admin",
student: "student",
staff: "staff",
dean: "dean"
})
.constant('AUTH_EVENTS', {
loginSuccess: 'auth-login-success',
loginFailed: 'auth-login-failed',
logoutSuccess: 'auth-logout-success',
......@@ -72,10 +87,4 @@ constant("USER_ROLES", {
})
.config(function ($logProvider) {
$logProvider.debugEnabled(true);
});
// test the code with strict di mode to see if it works when minified
//angular.bootstrap(document, ['ulakbus'], {
// strictDi: true
//});
});
\ No newline at end of file
'use strict';
app.config(['$routeProvider', function ($routeProvider, $route) {
$routeProvider
.when('/login', {
templateUrl: 'components/auth/login.html',
controller: 'LoginCtrl'
})
.when('/dashboard', {
templateUrl: 'components/dashboard/dashboard.html',
controller: 'DashCtrl'
})
.when('/dev/settings', {
templateUrl: 'components/devSettings/devSettings.html',
controller: 'DevSettingsCtrl'
})
.when('/debug/list', {
templateUrl: 'components/debug/debug.html',
controller: 'DebugCtrl'
})
angular.module('ulakbus')
.config(['$routeProvider', function ($routeProvider, $route) {
$routeProvider
.when('/login', {
templateUrl: 'components/auth/login.html',
controller: 'LoginCtrl'
})
.when('/dashboard', {
templateUrl: 'components/dashboard/dashboard.html',
controller: 'DashCtrl'
})
.when('/dev/settings', {
templateUrl: 'components/devSettings/devSettings.html',
controller: 'DevSettingsCtrl'
})
.when('/debug/list', {
templateUrl: 'components/debug/debug.html',
controller: 'DebugCtrl'
})
// use crud without selected user
// important: regex urls must be defined later than static ones
.when('/:wf/', {
templateUrl: 'components/crud/templates/crud.html',
controller: 'CRUDCtrl'
})
.when('/:wf/do/:cmd', {
templateUrl: 'components/crud/templates/crud.html',
controller: 'CRUDListFormCtrl'
})
.when('/:wf/do/:cmd/:key', {
templateUrl: 'components/crud/templates/crud.html',
controller: 'CRUDListFormCtrl'
})
.when('/:wf/:model', {
templateUrl: 'components/crud/templates/crud.html',
controller: 'CRUDCtrl'
})
.when('/:wf/:model/do/:cmd', {
templateUrl: 'components/crud/templates/crud.html',
controller: 'CRUDListFormCtrl'
})
.when('/:wf/:model/do/:cmd/:key', {
templateUrl: 'components/crud/templates/crud.html',
controller: 'CRUDListFormCtrl'
})
// use crud without selected user
// important: regex urls must be defined later than static ones
.when('/:wf/', {
templateUrl: 'components/crud/templates/crud.html',
controller: 'CRUDCtrl'
})
.when('/:wf/do/:cmd', {
templateUrl: 'components/crud/templates/crud.html',
controller: 'CRUDListFormCtrl'
})
.when('/:wf/do/:cmd/:key', {
templateUrl: 'components/crud/templates/crud.html',
controller: 'CRUDListFormCtrl'
})
.when('/:wf/:model', {
templateUrl: 'components/crud/templates/crud.html',
controller: 'CRUDCtrl'
})
.when('/:wf/:model/do/:cmd', {
templateUrl: 'components/crud/templates/crud.html',
controller: 'CRUDListFormCtrl'
})
.when('/:wf/:model/do/:cmd/:key', {
templateUrl: 'components/crud/templates/crud.html',
controller: 'CRUDListFormCtrl'
})
.otherwise({redirectTo: '/dashboard'});
}])
.otherwise({redirectTo: '/dashboard'});
}])
.run(function ($rootScope) {
$rootScope.loggedInUser = true;
......
......@@ -8,36 +8,52 @@
'use strict';
var auth = angular.module('ulakbus.auth', ['ngRoute', 'schemaForm', 'ngCookies']);
auth.controller('LoginCtrl', function ($scope, $q, $timeout, $routeParams, $rootScope, $log, Generator, LoginService) {
$scope.url = 'login';
$scope.form_params = {};
$scope.form_params['clear_wf'] = 1;
Generator.get_form($scope).then(function(data){
$scope.form = [
{ key: "username", type: "string", title: "Kullanıcı Adı"},
{ key: "password", type: "password", title: "Şifre"},
{ type: 'submit', title: 'Giriş Yap' }
];
});
$scope.loggingIn = false;
$scope.onSubmit = function (form) {
$scope.$broadcast('schemaFormValidate');
if (form.$valid) {
$scope.loggingIn = true;
$rootScope.loginAttempt = 1;
LoginService.login($scope.url, $scope.model)
.error(function(data){
$scope.message = data.title;
})
.then(function () {
$scope.loggingIn = false;
})
}
else {
$log.debug("not valid");
}
};
$log.debug('login attempt: ', $rootScope.loginAttempt);
/**
* @ngdoc module
* @name ulakbus.auth
* @module ulakbus.auth
* @description ulakbus.auth module handles authorization process of ulakbus-ui.
*
* @requires ngRoute
* @requires ngCookies
*/
angular.module('ulakbus.auth', ['ngRoute', 'ngCookies'])
/**
* @memberof ulakbus.auth
* @ngdoc controller
* @name LoginCtrl
* @description LoginCtrl responsible to handle login process.<br>
* Using 'ulakbus.formService.get_form' function generates the login form and post it to the API with input datas.
*/
.controller('LoginCtrl', function ($scope, $q, $timeout, $routeParams, $rootScope, $log, Generator, AuthService) {
$scope.url = 'login';
$scope.form_params = {};
$scope.form_params['clear_wf'] = 1;
Generator.get_form($scope).then(function (data) {
$scope.form = [
{key: "username", type: "string", title: "Kullanıcı Adı"},
{key: "password", type: "password", title: "Şifre"},
{type: 'submit', title: 'Giriş Yap'}
];
});
$scope.loggingIn = false;
$scope.onSubmit = function (form) {
$scope.$broadcast('schemaFormValidate');
if (form.$valid) {
$scope.loggingIn = true;
$rootScope.loginAttempt = 1;
AuthService.login($scope.url, $scope.model)
.error(function (data) {
$scope.message = data.title;
})
.then(function () {
$scope.loggingIn = false;
})
}
else {
$log.debug("not valid");
}
};
$log.debug('login attempt: ', $rootScope.loginAttempt);
});
\ No newline at end of file
});
\ No newline at end of file
......@@ -8,39 +8,58 @@
"use strict";
// TODO: login url change with correct one
angular.module('ulakbus.auth')
/**
* @memberof ulakbus.auth
* @ngdoc service
* @name AuthService
* @description provides generic functions for authorization process.
*/
.factory('AuthService', function ($http, $rootScope, $location, $log, Generator, RESTURL) {
var authService = {};
auth.factory('LoginService', function ($http, $rootScope, $location, $log, RESTURL) {
var loginService = {};
/**
* @memberof ulakbus.auth
* @ngdoc function
* @function login
* @description login function post credentials to API and handles login.
* If login req returns success then interceptor will redirects to related path.
* @memberof ulakbus.auth
* @param url
* @param credentials
* @returns {*}
*/
authService.login = function (url, credentials) {
credentials['cmd'] = "do";
return $http
.post(RESTURL.url + url, credentials)
.success(function (data, status, headers, config) {
//$window.sessionStorage.token = data.token;
loginService.login = function (url, credentials) {
credentials['cmd'] = "do";
return $http
.post(RESTURL.url + url, credentials)
.success(function (data, status, headers, config) {
//$window.sessionStorage.token = data.token;
$rootScope.loggedInUser = true;
})
.error(function (data, status, headers, config) {
// Handle login errors here
return data;
});
};
$rootScope.loggedInUser = true;
})
.error(function (data, status, headers, config) {
// Handle login errors here
return data;
/**
* @memberof ulakbus.auth
* @ngdoc controller
* @function logout
* @description logout function posts logout request to API and redirects to login path
* @memberof ulakbus.auth
* @returns {*}
*/
authService.logout = function () {
$log.debug("logout");
return $http.post(RESTURL.url + 'logout', {}).success(function (data) {
$rootScope.loggedInUser = false;
$log.debug("loggedout");
$location.path("/login");
});
};
};
loginService.logout = function () {
$log.debug("logout");
return $http.post(RESTURL.url + 'logout', {}).success(function (data) {
$rootScope.loggedInUser = false;
$log.debug("loggedout");
$location.path("/login");
});
};
loginService.isValidEmail = function (email) {
var re = /^([\w-]+(?:\.[\w-]+)*)@((?:[\w-]+\.)*\w[\w-]{0,66})\.([a-z]{2,6}(?:\.[a-z]{2})?)$/i;
return re.test(email);
};
return loginService;
});
\ No newline at end of file
return authService;
});
\ No newline at end of file
......@@ -43,65 +43,23 @@ describe('ulakbus.auth module', function () {
var controller = $controller('LoginCtrl', {$scope: $scope});
expect($scope.onSubmit).toBeDefined();
//expect($scope.loginForm).toBeDefined();
//
//$scope.onSubmit($scope.loginForm);
expect($scope.loginForm).toBeDefined();
})
);
it('should validate email', inject(['LoginService',
function (LoginService) {
expect(LoginService.isValidEmail).not.toBe(null);
// test cases - testing for success
var validEmails = [
'test@test.com',
'test@test.co.uk',
'test734ltylytkliytkryety9ef@jb-fe.com'
];
// test cases - testing for failure
var invalidEmails = [
'test@testcom',
'test@ test.co.uk',
'ghgf@fe.com.co.',
'tes@t@test.com',
''
];
// you can loop through arrays of test cases like this
for (var i in validEmails) {
var valid = LoginService.isValidEmail(validEmails[i]);
expect(valid).toBeTruthy();
}
for (var i in invalidEmails) {
var valid = LoginService.isValidEmail(invalidEmails[i]);
expect(valid).toBeFalsy();
}
}])
);
it('should submit form', inject(function ($httpBackend, RESTURL) {
}));
it('ensures user can log in', function (LoginService, $httpBackend, RESTURL) {
it('ensures user can log in', function (AuthService, $httpBackend, RESTURL) {
// todo: after backend api ready implement this
});
it('should get login success',
inject(function (LoginService, $httpBackend, $location, RESTURL) {
inject(function (AuthService, $httpBackend, $location, RESTURL) {
// use httpBackend to imitate login api
$httpBackend.expectPOST(RESTURL.url + 'login', {
email: 'test@test.com',
password: 'password',
cmd: 'do'
})
// todo: with real api change response data from list to obj
.respond(200, [{
'id': 1, 'user': {
'id': 12
......@@ -111,11 +69,9 @@ describe('ulakbus.auth module', function () {
}]);
var cred = {email: 'test@test.com', password: 'password'};
LoginService.login('login', cred)
AuthService.login('login', cred)
.then(function (data) {
expect(data).not.toBe(null);
// after login path need to be change dashboard
//expect($location.path()).toBe('');
});
$httpBackend.flush();
......@@ -123,7 +79,7 @@ describe('ulakbus.auth module', function () {
);
it('should logout',
inject(function (LoginService, $httpBackend, $location, RESTURL) {
inject(function (AuthService, $httpBackend, $location, RESTURL) {
// use httpBackend to imitate login api
......@@ -132,7 +88,7 @@ describe('ulakbus.auth module', function () {
is_login: false
});
LoginService.logout().success(function (data) {
AuthService.logout().success(function (data) {
expect(data.is_login).toBe(false);
});
......
......@@ -7,8 +7,20 @@
*/
'use strict';
angular.module('ulakbus.crud', ['ui.bootstrap', 'schemaForm', 'formService'])
/**
* @ngdoc module
* @name ulakbus.crud
* @module ulakbus.crud
* @description
* ulakbus.crud module is the main module for ui. It interacts with backend and manipulate data to screen
* generically.
*
* @requires ui.bootstrap
* @requires schemaForm
* @requires ulakbus.formService
* @type {ng.$compileProvider|*}
*/
angular.module('ulakbus.crud', ['ui.bootstrap', 'schemaForm', 'ulakbus.formService'])
.config(function (sfErrorMessageProvider) {
sfErrorMessageProvider.setDefaultMessage(302, 'Bu alan zorunludur.');
sfErrorMessageProvider.setDefaultMessage(200, 'En az {{schema.minLength}} değer giriniz.');
......@@ -16,22 +28,24 @@ angular.module('ulakbus.crud', ['ui.bootstrap', 'schemaForm', 'formService'])
})
/**
* @memberof ulakbus.crud
* @ngdoc service
* @name CrudUtility
* @description
* Crud Utility is a service to provide functionality for Crud controllers
* @returns {object}
* @description Crud Utility is a service to provide generic functions for Crud controllers to format data and
* scope object.
* @returns {service}
*/
.service('CrudUtility', function ($log, $rootScope) {
return {
/**
* @memberof ulakbus.crud
* @ngdoc function
* @name generateParam
* @description
* generateParam is a function to generate required params to post backend api.
*
* @param scope
* @param routeParams
* @param cmd
* @returns {*}
* @description generateParam is a function to generate required params to post backend api.
* @param {object} scope
* @param {object} routeParams
* @param {string} cmd
* @returns {object} scope
*/
generateParam: function (scope, routeParams, cmd) {
scope.url = routeParams.wf;
......@@ -66,12 +80,13 @@ angular.module('ulakbus.crud', ['ui.bootstrap', 'schemaForm', 'formService'])
return scope;
},
/**
* @memberof ulakbus.crud
* @ngdoc function
* @name listPageItems
* @description
* listPageItems is a function to prepare objects to list in list page.
* @description listPageItems is a function to prepare objects to list in the list page.
*
* @param scope
* @param pageData
* @param {object} scope
* @param {object} pageData
*/
listPageItems: function (scope, pageData) {
angular.forEach(pageData, function (value, key) {
......@@ -104,9 +119,10 @@ angular.module('ulakbus.crud', ['ui.bootstrap', 'schemaForm', 'formService'])
})
/**
* @memberof ulakbus.crud
* @ngdoc controller
* @name CRUDCtrl
* @description
* CRUDCtrl controller is base controller for crud module to redirect to related controller
* @description CRUDCtrl controller is base controller for crud module to redirect to related controller
* This controller play an empty role for api calls.
* With response data, location path change to related controller
*
......@@ -119,17 +135,19 @@ angular.module('ulakbus.crud', ['ui.bootstrap', 'schemaForm', 'formService'])
})
/**
* @memberof ulakbus.crud
* @ngdoc controller
* @name CRUDListFormCtrl
* @description
* CRUDListFormCtrl is the main controller for crud module
* @description CRUDListFormCtrl is the main controller for crud module
* Based on the client_cmd parameter it generates its scope items.
* client_cmd can be in ['show', 'list', 'form', 'reload', 'refresh']
* There are 3 directives to manipulate controllers scope objects in crud.html
*
* <br>
* The controller works in 2 ways, with and without pageData.
* pageData is generated by formService.Generator and it contains data to manipulate page.
* If pageData has set, using Generator's getPageData() function, sets its scope items. After getting pageData
* pageData must be set to `{pageData: false}` for clear scope of next job.
*
* <br>
* If pageData has not set using Generator's get_wf() function gets scope items from api call.
*
* @returns {object}
......@@ -238,6 +256,10 @@ angular.module('ulakbus.crud', ['ui.bootstrap', 'schemaForm', 'formService'])
CrudUtility.generateParam($scope, $routeParams, $routeParams.cmd);
Generator.get_wf($scope);
}
if ($scope.object) {
$scope.createListObjects();
}
};
$scope.reloadCmd = function () {
$scope.reload({});
......@@ -260,6 +282,13 @@ angular.module('ulakbus.crud', ['ui.bootstrap', 'schemaForm', 'formService'])
})
/**
* @memberof ulakbus.crud
* @ngdoc directive
* @name crudListDirective
* @description directive for listing objects.
* provides template for `scope.objects` object.
*/
.directive('crudListDirective', function () {
return {
templateUrl: 'components/crud/templates/list.html',
......@@ -267,7 +296,13 @@ angular.module('ulakbus.crud', ['ui.bootstrap', 'schemaForm', 'formService'])
replace: true
};
})
/**
* @memberof ulakbus.crud
* @ngdoc directive
* @name crudFormDirective
* @description directive for form generation.
* provides template for `scope.forms` object.
*/
.directive('crudFormDirective', function () {
return {
templateUrl: 'components/crud/templates/form.html',
......@@ -275,7 +310,13 @@ angular.module('ulakbus.crud', ['ui.bootstrap', 'schemaForm', 'formService'])
replace: true
};
})
/**
* @memberof ulakbus.crud
* @ngdoc directive
* @name crudShowDirective
* @description directive for single object or detail of an object.
* provides template for `scope.object` object.
*/
.directive('crudShowDirective', function () {
return {
templateUrl: 'components/crud/templates/show.html',
......@@ -283,7 +324,13 @@ angular.module('ulakbus.crud', ['ui.bootstrap', 'schemaForm', 'formService'])
replace: true
};
})
/**
* @memberof ulakbus.crud
* @ngdoc directive
* @name formLocator
* @description directive for finding form element. we use this directive because when form dynamically generated using
* schemaform it belongs to a scope which is hard to reach. This makes it easy to locate form object.
*/
.directive('formLocator', function () {
return {
link: function (scope) {
......@@ -292,6 +339,13 @@ angular.module('ulakbus.crud', ['ui.bootstrap', 'schemaForm', 'formService'])
}
})
/**
* @memberof ulakbus.crud
* @ngdoc directive
* @name crudFilters
* @description directive for filtering functionality. There are three types of filters; `check`, `select`, and `date`.
* @todo filter items returns unselected in response object
*/
.directive('crudFilters', function(Generator) {
return {
templateUrl: 'components/crud/templates/filter.html',
......
......@@ -10,7 +10,7 @@ describe('crud controller module', function () {
beforeEach(module('ulakbus'));
beforeEach(module('ulakbus.crud'));
beforeEach(module('formService'));
beforeEach(module('ulakbus.formService'));
beforeEach(inject(function ($injector) {
$httpBackend = $injector.get('$httpBackend');
......
<div ng-app="ulakbus.dashboard" class="dashboard">
<div class="starter-template" style="width: calc(100% - 300px);">
<div class="starter-template">
<div class="dashboard-main-search clearfix">
......@@ -125,107 +125,24 @@
</div>
<!-- end of dashboard-main-anouncement -->
<div class="right-sidebar">
<!--<div class="right-sidebar selected-person-field">-->
<div class="right-sidebar-box" data-step="4"
data-intro="mesajlar, yapılan görevlerin son durumları, duyurular ve son yapılan işlemleri buradan takip edebilirsiniz.">
<div class="right-sidebar-messages">
<div class="right-sidebar-title clearfix">
<h3>Mesajlar</h3>
<span><a role="button">Tüm Mesajlar</a></span>
</div>
<!-- end of right-sidebar-title -->
<p ng-show="notifications[2].length === 0" class="text-center">Görüntülenecek içerik yok.</p>
<div class="right-sidebar-message-block" ng-repeat="notify in notifications[2] | limitTo:5">
<a class="clearfix" ng-click="markAsRead(notify)">
<img src="../../../img/sample-profile-pic.jpg">
<div class="right-sidebar-message-content">
<div>{{notify.title}}</div>
<div>{{notify.body}}</div>
<div>16:05</div>
</div>
<!-- end of right-sidebar-message-content -->
</a>
</div>
<!-- end of right-sidebar-message-block -->
</div>
<!-- end of right-sidebar-messages -->
</div>
<!-- end of right-sidebar-box -->
<div class="right-sidebar-box">
<div class="right-sidebar-tasks">
<div class="right-sidebar-title clearfix">
<h3>Görevler</h3>
<span><a role="button">Tüm Görevler</a></span>
</div>
<p ng-show="notifications[1].length === 0" class="text-center">Görüntülenecek içerik yok.</p>
<div class="right-sidebar-task-block">
<!--<div class="task-type">Onay Bekleyen Görevler</div>-->
<a ng-click="markAsRead(notify)" ng-repeat="notify in notifications[1] | limitTo:5">
<div class="task-title">{{notify.title}}</div>
</a>
</div>
<!-- end of right-sidebar-task-block -->
</div>
<!-- end of right-sidebar-tasks -->
</div>
<!-- end of right-sidebar-box -->
<!--<div class="right-sidebar-box">-->
<!--<div class="right-sidebar-announcements">-->
<!--<div class="right-sidebar-title clearfix">-->
<!--<h3>Duyurular</h3>-->
<!--<span><a role="button">Tüm Duyurular</a></span>-->
<!--</div>-->
<!--&lt;!&ndash; end of right-sidebar-title &ndash;&gt;-->
<!--<div class="right-sidebar-announcement-block">-->
<!--<a ng-click="markAsRead(notify)"-->
<!--ng-repeat="notify in notifications[3] | limitTo:5">{{notify-->
<!--.body}}</a>-->
<!--</div>-->
<!--&lt;!&ndash; end of right-sidebar-status-block &ndash;&gt;-->
<!--</div>-->
<!--&lt;!&ndash; end of right-sidebar-status &ndash;&gt;-->
<!--<div class="right-sidebar-header">-->
<!--<span class="bar-title">Kişi seçildi</span>-->
<!--<span class="unselect-person"><i class="fa fa-times"></i></span>-->
<!--</div>-->
<!-- end of right-sidebar-box -->
<div class="right-sidebar-box">
<div class="right-sidebar-last-actions">
<div class="right-sidebar-title clearfix">
<h3>Son İşlemler</h3>
<span><a role="button">Tüm İşlemler</a></span>
</div>
<p class="text-center">Görüntülenecek içerik yok.</p>
<!--&lt;!&ndash; end of right-sidebaer-header &ndash;&gt;-->
<!---->
<!--<div class="selected-person-info">-->
<!--<img src="../../img/sample-profile-pic.jpg" class="selected-person-img">-->
<!--<div class="selected-person-name">Erkan Öğümsöğütlü</div>-->
<!--</div>-->
<!--&lt;!&ndash; end of selected-person-info &ndash;&gt;-->
<div class="right-sidebar-task-block">
<a>
<div class="task-title"></div>
</a>
</div>
<!--</div>-->
<!-- end of right-sidebar -->
</div>
<!-- end of right-sidebar-status -->
</div>
<!-- end of right-sidebar-box -->
</div>
<!-- end of right-sidebar -->
</div>
</div>
\ No newline at end of file
......@@ -8,6 +8,14 @@
'use strict';
/**
* @ngdoc module
* @name ulakbus.dashboard
* @module ulakbus.dashboard
* @description ulakbus.dashboard module is holding dashboard's controller, directives and other components.
*
* @type {ng.$compileProvider|*}
*/
angular.module('ulakbus.dashboard', [])
.config(function ($uibTooltipProvider) {
$uibTooltipProvider.setTriggers({'click': 'mouseleave'});
......
......@@ -8,7 +8,7 @@
'use strict';
app.config(['$routeProvider', function ($routeProvider) {
angular.module('ulakbus').config(['$routeProvider', function ($routeProvider) {
$routeProvider
.when('/error/500', {
templateUrl: 'components/error_pages/500.html',
......
......@@ -64,7 +64,7 @@
<div class="main" ng-view>
</div>
<right-sidebar></right-sidebar>
</div>
</div>
</div>
......
......@@ -71,7 +71,7 @@
<div class="main" ng-view>
</div>
<right-sidebar></right-sidebar>
</div>
</div>
</div>
......
......@@ -8,14 +8,26 @@
'use strict';
var app = angular.module(
/**
* @ngdoc module
* @name ulakbus
* @module ulakbus
* @description Ulakbus module is the main module of ulakbus-ui. All application-wide configurations and definings
* of constants handled in this module. \r
* There are two scripts on `app/` root; `main.js` and `app.js`. And `main.html`, `index.html`.
* `main.*` files are contains both production and development requirements or configurations/necessities for
* relative environment. Tagged with `// \@if NODE_ENV='PRODUCTION'` in commented line and configured in
* Gruntfile.js with package `preprocess` and `env`, related grunt command generates index.* for given file.
*
*/
angular.module(
'ulakbus', [
'ui.bootstrap',
'angular-loading-bar',
'ngRoute',
'ngSanitize',
'ngCookies',
'formService',
'ulakbus.formService',
'ulakbus.dashboard',
'ulakbus.auth',
'ulakbus.error_pages',
......@@ -31,43 +43,46 @@ var app = angular.module(
// @if NODE_ENV='DEVELOPMENT'
'ulakbus.uitemplates'
// @endif
]).
/**
* RESTURL is the url of rest api to talk
* Based on the environment it changes from dev to prod
*/
constant("RESTURL", (function () {
// todo: below backendurl definition is for development purpose and will be deleted
var backendurl = location.href.indexOf('nightly') > -1 ? "//nightly.api.ulakbus.net/" : "//api.ulakbus.net/";
if (document.cookie.indexOf("backendurl") > -1) {
var cookiearray = document.cookie.split(';');
angular.forEach(cookiearray, function (item) {
if (item.indexOf("backendurl") > -1) {
backendurl = item.split('=')[1];
}
});
}
])
/**
* @memberof ulakbus
* @ngdoc constant
* @name RESTURL
* @description RESTURL is the url of rest api to talk.
* Based on the environment it changes from dev to prod
*/
.constant("RESTURL", (function () {
// todo: below backendurl definition is for development purpose and will be deleted
var backendurl = location.href.indexOf('nightly') > -1 ? "//nightly.api.ulakbus.net/" : "//api.ulakbus.net/";
if (document.cookie.indexOf("backendurl") > -1) {
var cookiearray = document.cookie.split(';');
angular.forEach(cookiearray, function (item) {
if (item.indexOf("backendurl") > -1) {
backendurl = item.split('=')[1];
}
});
}
if (location.href.indexOf("backendurl") > -1) {
var urlfromqstr = location.href.split('?')[1].split('=')[1];
backendurl = decodeURIComponent(urlfromqstr.replace(/\+/g, " "));
document.cookie = "backendurl=" + backendurl;
window.location.href = window.location.href.split('?')[0];
}
if (location.href.indexOf("backendurl") > -1) {
var urlfromqstr = location.href.split('?')[1].split('=')[1];
backendurl = decodeURIComponent(urlfromqstr.replace(/\+/g, " "));
document.cookie = "backendurl=" + backendurl;
window.location.href = window.location.href.split('?')[0];
}
return {url: backendurl};
})()).
/**
* USER_ROLES and AUTH_EVENTS are constant for auth functions
*/
constant("USER_ROLES", {
all: "*",
admin: "admin",
student: "student",
staff: "staff",
dean: "dean"
}).
constant('AUTH_EVENTS', {
return {url: backendurl};
})()).
/**
* USER_ROLES and AUTH_EVENTS are constant for auth functions
*/
constant("USER_ROLES", {
all: "*",
admin: "admin",
student: "student",
staff: "staff",
dean: "dean"
})
.constant('AUTH_EVENTS', {
loginSuccess: 'auth-login-success',
loginFailed: 'auth-login-failed',
logoutSuccess: 'auth-logout-success',
......@@ -82,10 +97,4 @@ constant("USER_ROLES", {
// @if NODE_ENV='DEVELOPMENT'
$logProvider.debugEnabled(true);
// @endif
});
// test the code with strict di mode to see if it works when minified
//angular.bootstrap(document, ['ulakbus'], {
// strictDi: true
//});
});
\ No newline at end of file
This diff is collapsed.
......@@ -82,11 +82,10 @@
<!-- /.dropdown-alerts -->
</li>
<!-- /.dropdown -->
<li class="dropdown">
<a class="dropdown-toggle" data-toggle="dropdown">
<i class="fa fa-user fa-fw" tooltip-placement="bottom"
uib-tooltip="Profil"></i>&nbsp;{{$root.current_user.name}}&nbsp;{{$root.current_user.surname}}&nbsp;<i
class="fa fa-caret-down"></i>
<li class="dropdown" style="border-left:1px solid #891723;">
<a class="dropdown-toggle" data-toggle="dropdown" style="padding-top: 7px; padding-bottom: 6px;">
<img src="../../../img/sample-profile-pic.jpg" class="header-profile">&nbsp;{{$root.current_user.name}}&nbsp;{{$root.current_user.surname}}&nbsp;
<i class="fa fa-caret-down" style="margin-left:3px;"></i>
</a>
<ul class="dropdown-menu dropdown-user">
<li><a role="button"><i class="fa fa-user fa-fw"></i> Profil</a></li>
......
<div class="manager-view-header" style="{{style}}">
<div class="manager-view-header">
<div class="clearfix">
<header-breadcrumb></header-breadcrumb>
<loaderdiv><div></div></loaderdiv>
......
<div class="right-sidebar selected-person-field">
<div class="right-sidebar-header">
<button type="button" class="close" ng-click="deselectUser()"
aria-label="Close">
<span class="unselect-person"><i class="fa fa-times"></i></span>
</button>
</div>
<div class="selected-person-info">
<img class="selected-person-img"
ng-src="{{selectedUser ? '/img/sample-profile-pic.jpg' : '/img/empty-profile-pic.jpg'}}">
<div class="selected-person-name">
<p class="identity-name">{{selectedUser.name || 'Kişi seçilmedi.'}}</p>
<p class="identity-surname">{{selectedUser.surname}}</p>
<p>{{selectedUser ? 'TCNo: ' + selectedUser.tcno : ''}}</p>
</div>
</div>
<div class="">
<ul class="nav in" id="side-user-menu" data-step="2"
data-intro="seçilen personele veya öğrenciye göre ilgili menüler yer almaktadır. yapılacak işlemi buradan seçebilirsiniz.">
<li ng-repeat="(key, item) in selectedMenuItems" ng-class="{active: collapseVar == $index+100}">{{dropDown}}
<a href="" ng-click="check($index+100)">
<i class="fa fa-fw"
ng-class="{
'Admin': 'fa fa-fw fa-terminal',
'Genel': 'fa fa-fw fa-graduation-cap',
'Alt Kategori': 'fa fa-fw fa-tags',
'Kadro Islemleri': 'fa fa-fw fa-users',
'Seçime Uygun Görevler':'fa fa-fw fa-user'
}[item[0].kategori]"></i>
<span class="menu-text">{{ key }}</span>
<span class="fa arrow"></span>
</a>
<ul class="nav nav-second-level">
<li ng-repeat="(k, v) in item">
<a ng-href="#/{{v.wf}}/{{v.model}}?{{v.param}}={{selectedUser.key}}"
ng-click="breadcrumb([key, v.text], $event)">{{v.text}}</a>
</li>
</ul>
</li>
</ul>
</div>
</div>
\ No newline at end of file
<div class="navbar-default sidebar" role="navigation" ng-mouseenter="openSidebar()" ng-mouseleave="closeSidebar()">
<div class="sidebar-container">
<!-- sidebar-person-info -->
<div class="sidebar-person-info" ng-show="$root.current_user.can_search">
<!--<button class="btn btn-primary close-sidebar-person-info">Profili Kapat</button>-->
<div class="identity">
<button type="button" class="close" ng-class="{hidden: $root.collapsed || !selectedUser}"
ng-click="deselectUser()"
aria-label="Close"><span
aria-hidden="true">&times;</span></button>
<div class="identity-header clearfix">
<img ng-src="{{selectedUser ? '/img/sample-profile-pic.jpg' : '/img/empty-profile-pic.jpg'}}">
<div class="pull-left" ng-class="{hidden: $root.collapsed}">
<p class="identity-name">{{selectedUser.name || 'Kişi seçilmedi.'}}</p>
<p class="identity-surname">{{selectedUser.surname}}</p>
<p>{{selectedUser ? 'TCNo: ' + selectedUser.tcno : ''}}</p>
</div>
</div>
<!-- end of identity-header -->
<!--<div class="identity-info" ng-class="{hidden: $root.collapsed}">-->
<!--<div class="clearfix">-->
<!--<span class="fa fa-envelope"></span>-->
<!--<div>erkanogum@gmail.com</div>-->
<!--</div>-->
<!--<div class="clearfix">-->
<!--<span class="fa fa-home"></span>-->
<!--<div>İşçi Blokları Mah. 1524. sokak B Blok 6. Kat A Kanat 27 numara</div>-->
<!--</div>-->
<!--</div>-->
</div>
<!-- end of identity -->
<div class="">
<ul class="nav in" id="side-user-menu" ng-class="{hidden: !selectedMenuItems}" data-step="2"
data-intro="seçilen personele veya öğrenciye göre ilgili menüler yer almaktadır. yapılacak işlemi buradan seçebilirsiniz.">
<li ng-repeat="(key, item) in selectedMenuItems" ng-class="{active: collapseVar == $index+100}">{{dropDown}}
<a href="" ng-click="check($index+100)">
<i class="fa fa-fw"
ng-class="{
'Admin': 'fa fa-fw fa-terminal',
'Genel': 'fa fa-fw fa-graduation-cap',
'Alt Kategori': 'fa fa-fw fa-tags',
'Kadro Islemleri': 'fa fa-fw fa-users',
'Seçime Uygun Görevler':'fa fa-fw fa-user'
}[item[0].kategori]"></i>
<span class="menu-text" ng-class="{hidden: $root.collapsed}">{{ key }}</span>
<span class="fa arrow" ng-class="{hidden: $root.collapsed}"></span>
</a>
<ul class="nav nav-second-level" ng-class="{hidden: $root.collapsed}">
<li ng-repeat="(k, v) in item">
<!--<a ng-if="v.model" ng-href="#{{v.url}}" ng- -->
<!--ng-click="breadcrumb([key, v.text], $event)">{{v.text}}</a>-->
<a ng-href="#/{{v.wf}}/{{v.model}}?{{v.param}}={{selectedUser.key}}"
ng-click="breadcrumb([key, v.text], $event)">{{v.text}}</a>
</li>
</ul>
<!-- /.nav-second-level -->
</li>
</ul>
</div>
<!-- end of person-actions -->
</div>
<!-- end of sidebar-person-info -->
<div class="sidebar-nav navbar-collapse">
<ul class="nav in" id="side-menu" ng-class="{hidden: $root.loggedInUser != true}" data-step="1"
data-intro="Genel menüler yer almaktadır. yapılacak işlemi buradan seçebilirsiniz.">
......
......@@ -22,7 +22,7 @@
<span ng-if="value.verbose_name">{{ value.verbose_name }}</span>
<span ng-if="!value.verbose_name">{{key}}</span>
</th>
<th>İşlem</th>
<th ng-if="meta.allow_actions!==false">İşlem</th>
</tr>
</thead>
<tbody ng-class="{hidden: node.lengthModels < 1}">
......@@ -55,7 +55,7 @@
ng-model="node.model[outerIndex][k]"
ng-change="nodeModelChange(this)">
</td>
<td>
<td ng-if="meta.allow_actions!==false">
<button modal-for-nodes="{{node.schema.model_name}},{{node.schema.formType}},edit,{{$index}}">Düzenle
</button>
<br>
......
This diff is collapsed.
......@@ -10,7 +10,7 @@
describe('form service module', function () {
beforeEach(module('ulakbus'));
beforeEach(module('formService'));
beforeEach(module('ulakbus.formService'));
var location;
beforeEach(inject(function ($location, $injector) {
......
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This source diff could not be displayed because it is too large. You can view the blob instead.
This source diff could not be displayed because it is too large. You can view the blob instead.
......@@ -56,7 +56,7 @@
<div class="main" ng-view>
</div>
<right-sidebar></right-sidebar>
</div>
</div>
</div>
......
This diff is collapsed.
Angular Template
----------------
This template is written in `angular-template`, and it is used when template name is given `angular-template` as an option.
To generate with this template, set template option to `node_modules/angular-jsdoc/angular-template`. e.g.;
$ node_modules/jsdoc/jsdoc.js \
--configure node_modules/angular-jsdoc/common/conf.json \
--template node_modules/angular-jsdoc/angular-template \
--destination build/docs \
--readme README.md \
--recurse directives services
Files
angular-template
├── css # css used in layout.html
├── js # javascript used in layout.html
├── fonts # font used in layout.html
├── html
│   ├── class.html # class layout written in angular-template
│   └── layout.html # layout written in angular-template
└── publish.js # the main file that generate jsdoc
html * {
box-sizing: border-box;
-ms-box-sizing: border-box;
-moz-box-sizing: border-box;
-webkit-box-sizing: border-box;
}
body {
font-family: "Open Sans", "Helvetica Neue", "Helvetica", "Arial", sans-serif;
font-weight: 300;
font-size: 1rem;
line-height: 1.5rem;
color: #5c5c5c;
background-color: white;
padding: 10px;
}
h1 {
font-family: "Arquitecta";
font-size: 3rem;
line-height: 3rem;
margin-top: 3.1875rem;
margin-bottom: 1.3125rem;
font-weight: 300;
}
footer {
margin: 0rem;
padding: 1.5rem;
text-align: right;
background-color: #554f4e;
overflow-y: auto;
color: #fff;
}
nav {
margin-top: 0px;
padding-top: 50px;
background-color: #fff;
}
#main {
float: none;
width: auto;
}
.page-wrap {
padding: 1.5rem 14px;
margin-bottom: 0rem;
background-color: #6c6463;
width: 70%;
}
.page-wrap h1 {
margin-top: -0.375rem;
color: #FFFFFF;
}
.page-wrap #main h1 {
color: inherit;
}
.big-container {
padding: 0rem;
background-color: #FFFFFF;
border-top: solid 1px #828282;
min-height: 24rem;
overflow: hidden;
background-repeat: repeat-x;
background-position: top;
margin-bottom: 1.5rem;
padding: 2.0rem 1.5rem 3rem 1.5rem;
}
/**
* This is enhanced theme by Umut Topuzoglu<https://github.com/ulocl>. Thanks, Umut
*/
@font-face {
font-family: 'Open Sans';
font-weight: normal;
font-style: normal;
src: url('../fonts/OpenSans-Regular-webfont.eot');
src:
local('Open Sans'),
local('OpenSans'),
url('../fonts/OpenSans-Regular-webfont.eot?#iefix') format('embedded-opentype'),
url('../fonts/OpenSans-Regular-webfont.woff') format('woff'),
url('../fonts/OpenSans-Regular-webfont.svg#open_sansregular') format('svg');
}
@font-face {
font-family: 'Open Sans Light';
font-weight: normal;
font-style: normal;
src: url('../fonts/OpenSans-Light-webfont.eot');
src:
local('Open Sans Light'),
local('OpenSans Light'),
url('../fonts/OpenSans-Light-webfont.eot?#iefix') format('embedded-opentype'),
url('../fonts/OpenSans-Light-webfont.woff') format('woff'),
url('../fonts/OpenSans-Light-webfont.svg#open_sanslight') format('svg');
}
* { box-sizing: border-box }
html
{
overflow: auto;
background-color: #fff;
font-size: 14px;
}
body
{
font-family: 'Open Sans', sans-serif;
line-height: 1.5;
color: #4d4e53;
background-color: white;
}
a, a:visited, a:active {
color: #0095dd;
text-decoration: none;
}
a:hover {
text-decoration: underline;
}
header
{
display: block;
padding: 0px 4px;
}
tt, code, kbd, samp {
font-family: Consolas, Monaco, 'Andale Mono', monospace;
padding: 0 0.25em;
background-color: #ddd;
}
.class-description {
font-size: 130%;
line-height: 140%;
margin-bottom: 1em;
margin-top: 1em;
}
.class-description:empty {
margin: 0;
}
#main {
float: left;
width: 70%;
padding-right: 20px;
}
article dl {
margin-bottom: 40px;
}
section
{
display: block;
background-color: #fff;
padding: 12px 24px;
border-bottom: 1px solid #ccc;
margin-right: 30px;
}
.variation {
display: none;
}
.signature-attributes {
font-size: 60%;
color: #aaa;
font-style: italic;
font-weight: lighter;
}
nav
{
display: block;
float: right;
margin-top: 28px;
width: 30%;
box-sizing: border-box;
border-left: 1px solid #ccc;
padding-left: 16px;
}
nav ul {
font-family: 'Lucida Grande', 'Lucida Sans Unicode', arial, sans-serif;
font-size: 100%;
line-height: 17px;
padding: 0;
margin: 0;
list-style-type: none;
}
nav ul a, nav ul a:visited, nav ul a:active {
font-family: Consolas, Monaco, 'Andale Mono', monospace;
line-height: 18px;
color: #4D4E53;
}
nav h3 {
margin-top: 12px;
}
nav ul {
margin-top: 1.5em;
}
nav li {
margin-top: 6px;
margin-left: 10px;
}
footer {
display: block;
padding: 6px;
margin-top: 12px;
font-style: italic;
font-size: 90%;
}
h1, h2, h3, h4 {
font-weight: 200;
margin: 0;
}
h1
{
font-family: 'Open Sans Light', sans-serif;
font-size: 48px;
letter-spacing: -2px;
margin: 12px 24px 20px;
}
h2, h3
{
font-size: 30px;
font-weight: 700;
letter-spacing: -1px;
margin-bottom: 12px;
}
h4
{
font-size: 18px;
letter-spacing: -0.33px;
margin-bottom: 12px;
color: #4d4e53;
}
h5, .container-overview .subsection-title
{
font-size: 120%;
font-weight: bold;
letter-spacing: -0.01em;
margin: 8px 0 3px 0;
}
h6
{
font-size: 100%;
letter-spacing: -0.01em;
margin: 6px 0 3px 0;
font-style: italic;
}
.ancestors { color: #999; }
.ancestors a
{
color: #999 !important;
text-decoration: none;
}
.clear
{
clear: both;
}
.important
{
font-weight: bold;
color: #950B02;
}
.yes-def {
text-indent: -1000px;
}
.type-signature {
color: #aaa;
}
.name, .signature {
font-family: Consolas, Monaco, 'Andale Mono', monospace;
}
.details { margin-top: 14px; border-left: 2px solid #DDD; }
.details dt { width: 120px; float: left; padding-left: 10px; padding-top: 6px; }
.details dd { margin-left: 70px; }
.details ul { margin: 0; }
.details ul { list-style-type: none; }
.details li { margin-left: 30px; padding-top: 6px; }
.details pre.prettyprint { margin: 0 }
.details .object-value { padding-top: 0; }
.description {
margin-bottom: 1em;
margin-top: 1em;
}
.code-caption
{
font-style: italic;
font-size: 107%;
margin: 0;
}
.prettyprint
{
border: 1px solid #ddd;
width: 80%;
overflow: auto;
}
.prettyprint.source {
width: inherit;
}
.prettyprint code
{
font-size: 100%;
line-height: 18px;
display: block;
margin: 0;
background-color: #fff;
color: #4D4E53;
}
.prettyprint code span.line
{
display: inline-block;
}
.prettyprint.linenums
{
padding-left: 70px;
-webkit-user-select: none;
-moz-user-select: none;
-ms-user-select: none;
user-select: none;
}
.prettyprint.linenums ol
{
padding-left: 0;
}
.prettyprint.linenums li
{
border-left: 3px #ddd solid;
}
.prettyprint.linenums li.selected,
.prettyprint.linenums li.selected *
{
background-color: lightyellow;
}
.prettyprint.linenums li *
{
-webkit-user-select: text;
-moz-user-select: text;
-ms-user-select: text;
user-select: text;
}
.params, .props
{
border-spacing: 0;
border: 0;
border-collapse: collapse;
}
.params .name, .props .name, .name code {
color: #4D4E53;
font-family: Consolas, Monaco, 'Andale Mono', monospace;
font-size: 100%;
}
.params td, .params th, .props td, .props th
{
border: 1px solid #ddd;
margin: 0px;
text-align: left;
vertical-align: top;
padding: 4px 6px;
display: table-cell;
}
.params thead tr, .props thead tr
{
background-color: #ddd;
font-weight: bold;
}
.params .params thead tr, .props .props thead tr
{
background-color: #fff;
font-weight: bold;
}
.params th, .props th { border-right: 1px solid #aaa; }
.params thead .last, .props thead .last { border-right: 1px solid #ddd; }
.params td.description > p:first-child,
.props td.description > p:first-child
{
margin-top: 0;
padding-top: 0;
}
.params td.description > p:last-child,
.props td.description > p:last-child
{
margin-bottom: 0;
padding-bottom: 0;
}
.disabled {
color: #454545;
}
/* Tomorrow Theme */
/* Original theme - https://github.com/chriskempson/tomorrow-theme */
/* Pretty printing styles. Used with prettify.js. */
/* SPAN elements with the classes below are added by prettyprint. */
/* plain text */
.pln {
color: #4d4d4c; }
@media screen {
/* string content */
.str {
color: #718c00; }
/* a keyword */
.kwd {
color: #8959a8; }
/* a comment */
.com {
color: #8e908c; }
/* a type name */
.typ {
color: #4271ae; }
/* a literal value */
.lit {
color: #f5871f; }
/* punctuation */
.pun {
color: #4d4d4c; }
/* lisp open bracket */
.opn {
color: #4d4d4c; }
/* lisp close bracket */
.clo {
color: #4d4d4c; }
/* a markup tag name */
.tag {
color: #c82829; }
/* a markup attribute name */
.atn {
color: #f5871f; }
/* a markup attribute value */
.atv {
color: #3e999f; }
/* a declaration */
.dec {
color: #f5871f; }
/* a variable name */
.var {
color: #c82829; }
/* a function name */
.fun {
color: #4271ae; } }
/* Use higher contrast and text-weight for printable form. */
@media print, projection {
.str {
color: #060; }
.kwd {
color: #006;
font-weight: bold; }
.com {
color: #600;
font-style: italic; }
.typ {
color: #404;
font-weight: bold; }
.lit {
color: #044; }
.pun, .opn, .clo {
color: #440; }
.tag {
color: #006;
font-weight: bold; }
.atn {
color: #404; }
.atv {
color: #060; } }
/* Style */
/*
pre.prettyprint {
background: white;
font-family: Consolas, Monaco, 'Andale Mono', monospace;
font-size: 12px;
line-height: 1.5;
border: 1px solid #ccc;
padding: 10px; }
*/
/* Specify class=linenums on a pre to get line numbering */
ol.linenums {
margin-top: 0;
margin-bottom: 0; }
/* IE indents via margin-left */
li.L0,
li.L1,
li.L2,
li.L3,
li.L4,
li.L5,
li.L6,
li.L7,
li.L8,
li.L9 {
/* */ }
/* Alternate shading for lines */
li.L1,
li.L3,
li.L5,
li.L7,
li.L9 {
/* */ }
/* Pretty printing styles. Used with prettify.js. */
/* SPAN elements with the classes below are added by prettyprint. */
.pln { color: #000 } /* plain text */
@media screen {
.str { color: #080 } /* string content */
.kwd { color: #008 } /* a keyword */
.com { color: #800 } /* a comment */
.typ { color: #606 } /* a type name */
.lit { color: #066 } /* a literal value */
/* punctuation, lisp open bracket, lisp close bracket */
.pun, .opn, .clo { color: #660 }
.tag { color: #008 } /* a markup tag name */
.atn { color: #606 } /* a markup attribute name */
.atv { color: #080 } /* a markup attribute value */
.dec, .var { color: #606 } /* a declaration; a variable name */
.fun { color: red } /* a function name */
}
/* Use higher contrast and text-weight for printable form. */
@media print, projection {
.str { color: #060 }
.kwd { color: #006; font-weight: bold }
.com { color: #600; font-style: italic }
.typ { color: #404; font-weight: bold }
.lit { color: #044 }
.pun, .opn, .clo { color: #440 }
.tag { color: #006; font-weight: bold }
.atn { color: #404 }
.atv { color: #060 }
}
/* Put a border around prettyprinted code snippets. */
pre.prettyprint { padding: 2px; border: 1px solid #888 }
/* Specify class=linenums on a pre to get line numbering */
ol.linenums { margin-top: 0; margin-bottom: 0 } /* IE indents via margin-left */
li.L0,
li.L1,
li.L2,
li.L3,
li.L5,
li.L6,
li.L7,
li.L8 { list-style-type: none }
/* Alternate shading for lines */
li.L1,
li.L3,
li.L5,
li.L7,
li.L9 { background: #eee }
<!doctype html>
<html>
<head>
<title>JSDoc: config</title>
<link type="text/css" rel="stylesheet" href="css/jsdoc-default.css">
<link href="css/prettify-tomorrow.css" type="text/css" rel="stylesheet">
<link href="https://fonts.googleapis.com/css?family=Open+Sans:300italic,400italic,400,300,700" rel="stylesheet" type="text/css">
<link href="css/custom.css" type="text/css" rel="stylesheet">
<script src="js/prettify.js"></script>
<script src="js/angular.min.js"></script>
</head>
<body ng-app="">
<nav>
<h2><a href="index.html">Index</a></h2>
<ul class="module">
<!-- app -->
<h3>
<a href="" ng-click="moduleapp = !moduleapp">
module: app
</a>
<i ng-cloak="" ng-show="moduleapp">+</i>
</h3>
<li id="app" ng-hide="moduleapp">
<ul class="group">
<h3>
<a href="" ng-click="appconfig = !appconfig">
config
</a>
<i ng-cloak="" ng-show="appconfig">+</i>
</h3>
<ul ng-hide="appconfig">
<li>
<a href="app.config.html">config</a>
</li>
</ul>
</ul><ul class="group">
<h3>
<a href="" ng-click="appfilter = !appfilter">
filter
</a>
<i ng-cloak="" ng-show="appfilter">+</i>
</h3>
<ul ng-hide="appfilter">
<li>
<a href="app.customCurrency.html">customCurrency</a>
</li>
</ul>
</ul><ul class="group">
<h3>
<a href="" ng-click="appservice = !appservice">
service
</a>
<i ng-cloak="" ng-show="appservice">+</i>
</h3>
<ul ng-hide="appservice">
<li>
<a href="app.testService.html">testService</a>
</li>
</ul>
</ul>
</li>
</ul><ul class="module">
<!-- ngmap -->
<h3>
<a href="" ng-click="modulengmap = !modulengmap">
module: ngmap
</a>
<i ng-cloak="" ng-show="modulengmap">+</i>
</h3>
<li id="ngmap" ng-hide="modulengmap">
<ul class="group">
<h3>
<a href="" ng-click="ngmapservice = !ngmapservice">
service
</a>
<i ng-cloak="" ng-show="ngmapservice">+</i>
</h3>
<ul ng-hide="ngmapservice">
<li>
<a href="ngmap.Attr2Options.html">Attr2Options</a>
</li>
</ul>
</ul><ul class="group">
<h3>
<a href="" ng-click="ngmapdirective = !ngmapdirective">
directive
</a>
<i ng-cloak="" ng-show="ngmapdirective">+</i>
</h3>
<ul ng-hide="ngmapdirective">
<li>
<a href="ngmap.map.html">map</a>
</li>
</ul>
</ul><ul class="group">
<h3>
<a href="" ng-click="ngmapcontroller = !ngmapcontroller">
controller
</a>
<i ng-cloak="" ng-show="ngmapcontroller">+</i>
</h3>
<ul ng-hide="ngmapcontroller">
<li>
<a href="ngmap.MapController.html">MapController</a>
</li>
</ul>
</ul>
</li>
</ul>
</nav>
<div id="content" class="page-wrap">
<h3 style="float:right; color:#ccc">
Angular config
</h3>
<h1 class="title">
config
<a class="name-link signature-attributes" href="source/app.config.html#line8">source</a>
</h1>
<div id="main" class="big-container">
<!-- source code html -->
<!-- index.html -->
<!-- class files -->
<div>
<div><div class="container-overview">
<dt></dt>
<dd>
<div class="description">
<p>Configures ui-router's states.</p>
</div>
<div class="details"></div>
<div>
<h5>Dependencies:</h5>
<table class="params">
<thead>
<tr><th>Name</th><th>Type</th><th class="last">Description</th></tr>
</thead>
<tbody>
<tr>
<td class="name" nowrap="">$urlRouterProvider</td>
<td class="type"><span class="param-type">
Service
</span></td>
<td class="description last"><p>Watches $location and provides interface to default state</p></td>
</tr>
</tbody>
</table>
</div>
</dd>
</div>
<section>
</section></div>
</div>
</div>
<footer style="clear:both">
Documentation generated by
<a href="https://github.com/jsdoc3/jsdoc">JSDoc 3.3.2</a>
using
<a href="https://github.com/allenhwkim/angular-jsdoc">Angular-JSDoc template</a>
</footer>
</div>
<!--%= prettyJson %-->
<script>
prettyPrint();
var lineNo = window.location.hash.match(/#line([0-9]+)$/);
lineNo && document.querySelector("ol li:nth-child("+(lineNo[1])+")").scrollIntoView();
</script>
</body>
</html>
\ No newline at end of file
<!doctype html>
<html>
<head>
<title>JSDoc: customCurrency</title>
<link type="text/css" rel="stylesheet" href="css/jsdoc-default.css">
<link href="css/prettify-tomorrow.css" type="text/css" rel="stylesheet">
<link href="https://fonts.googleapis.com/css?family=Open+Sans:300italic,400italic,400,300,700" rel="stylesheet" type="text/css">
<link href="css/custom.css" type="text/css" rel="stylesheet">
<script src="js/prettify.js"></script>
<script src="js/angular.min.js"></script>
</head>
<body ng-app="">
<nav>
<h2><a href="index.html">Index</a></h2>
<ul class="module">
<!-- app -->
<h3>
<a href="" ng-click="moduleapp = !moduleapp">
module: app
</a>
<i ng-cloak="" ng-show="moduleapp">+</i>
</h3>
<li id="app" ng-hide="moduleapp">
<ul class="group">
<h3>
<a href="" ng-click="appconfig = !appconfig">
config
</a>
<i ng-cloak="" ng-show="appconfig">+</i>
</h3>
<ul ng-hide="appconfig">
<li>
<a href="app.config.html">config</a>
</li>
</ul>
</ul><ul class="group">
<h3>
<a href="" ng-click="appfilter = !appfilter">
filter
</a>
<i ng-cloak="" ng-show="appfilter">+</i>
</h3>
<ul ng-hide="appfilter">
<li>
<a href="app.customCurrency.html">customCurrency</a>
</li>
</ul>
</ul><ul class="group">
<h3>
<a href="" ng-click="appservice = !appservice">
service
</a>
<i ng-cloak="" ng-show="appservice">+</i>
</h3>
<ul ng-hide="appservice">
<li>
<a href="app.testService.html">testService</a>
</li>
</ul>
</ul>
</li>
</ul><ul class="module">
<!-- ngmap -->
<h3>
<a href="" ng-click="modulengmap = !modulengmap">
module: ngmap
</a>
<i ng-cloak="" ng-show="modulengmap">+</i>
</h3>
<li id="ngmap" ng-hide="modulengmap">
<ul class="group">
<h3>
<a href="" ng-click="ngmapservice = !ngmapservice">
service
</a>
<i ng-cloak="" ng-show="ngmapservice">+</i>
</h3>
<ul ng-hide="ngmapservice">
<li>
<a href="ngmap.Attr2Options.html">Attr2Options</a>
</li>
</ul>
</ul><ul class="group">
<h3>
<a href="" ng-click="ngmapdirective = !ngmapdirective">
directive
</a>
<i ng-cloak="" ng-show="ngmapdirective">+</i>
</h3>
<ul ng-hide="ngmapdirective">
<li>
<a href="ngmap.map.html">map</a>
</li>
</ul>
</ul><ul class="group">
<h3>
<a href="" ng-click="ngmapcontroller = !ngmapcontroller">
controller
</a>
<i ng-cloak="" ng-show="ngmapcontroller">+</i>
</h3>
<ul ng-hide="ngmapcontroller">
<li>
<a href="ngmap.MapController.html">MapController</a>
</li>
</ul>
</ul>
</li>
</ul>
</nav>
<div id="content" class="page-wrap">
<h3 style="float:right; color:#ccc">
Angular filter
</h3>
<h1 class="title">
customCurrency
<a class="name-link signature-attributes" href="source/app.customCurrency.html#line1">source</a>
</h1>
<div id="main" class="big-container">
<!-- source code html -->
<!-- index.html -->
<!-- class files -->
<div>
<div><div class="container-overview">
<dt></dt>
<dd>
<div class="description">
<p>returns custom currency from the given input</p>
</div>
<div class="details"></div>
<div>
<h5>Dependencies:</h5>
<table class="params">
<thead>
<tr><th>Name</th><th>Type</th><th class="last">Description</th></tr>
</thead>
<tbody>
<tr>
<td class="name" nowrap="">Test</td>
<td class="type"><span class="param-type">
$http
</span></td>
<td class="description last"></td>
</tr>
</tbody>
</table>
</div>
<div>
<h5>Tutorials:</h5>
<ul>
<li>
<a href="tutorial-tutorial1.html">Tutorial One</a>
</li>
</ul>
</div>
</dd>
</div>
<section>
<div class="functions">
<h3 class="subsection-title">Methods</h3>
<dl>
<dt>
<a href="source/app.customCurrency.html#line18" class="name-link">
<h4 class="name">
customCurrencyFilter
<span class="signature">(input, symbol, place)</span>
</h4>
</a>
</dt>
<dd>
<div class="description">
<p>. Create the return function and set the required parameter name to <strong>input</strong>
. setup optional parameters for the currency symbol and location (left or right of the amount)</p>
</div>
<div>
<h5>Parameters:</h5>
<table class="params">
<thead>
<tr><th>Name</th><th>Type</th><th class="last">Description</th></tr>
</thead>
<tbody>
<tr>
<td class="name">input</td>
<td class="type"><span class="param-type">
Number | String
</span></td>
<td class="description last"></td>
</tr><tr>
<td class="name">symbol</td>
<td class="type"><span class="param-type">
String
</span></td>
<td class="description last"></td>
</tr><tr>
<td class="name">place</td>
<td class="type"><span class="param-type">
Boolean
</span></td>
<td class="description last"><p>true or false</p></td>
</tr>
</tbody>
</table>
</div>
</dd>
</dl>
</div>
</section></div>
</div>
</div>
<footer style="clear:both">
Documentation generated by
<a href="https://github.com/jsdoc3/jsdoc">JSDoc 3.3.2</a>
using
<a href="https://github.com/allenhwkim/angular-jsdoc">Angular-JSDoc template</a>
</footer>
</div>
<!--%= prettyJson %-->
<script>
prettyPrint();
var lineNo = window.location.hash.match(/#line([0-9]+)$/);
lineNo && document.querySelector("ol li:nth-child("+(lineNo[1])+")").scrollIntoView();
</script>
</body>
</html>
\ No newline at end of file
<!doctype html>
<html>
<head>
<title>JSDoc: testService</title>
<link type="text/css" rel="stylesheet" href="css/jsdoc-default.css">
<link href="css/prettify-tomorrow.css" type="text/css" rel="stylesheet">
<link href="https://fonts.googleapis.com/css?family=Open+Sans:300italic,400italic,400,300,700" rel="stylesheet" type="text/css">
<link href="css/custom.css" type="text/css" rel="stylesheet">
<script src="js/prettify.js"></script>
<script src="js/angular.min.js"></script>
</head>
<body ng-app="">
<nav>
<h2><a href="index.html">Index</a></h2>
<ul class="module">
<!-- app -->
<h3>
<a href="" ng-click="moduleapp = !moduleapp">
module: app
</a>
<i ng-cloak="" ng-show="moduleapp">+</i>
</h3>
<li id="app" ng-hide="moduleapp">
<ul class="group">
<h3>
<a href="" ng-click="appconfig = !appconfig">
config
</a>
<i ng-cloak="" ng-show="appconfig">+</i>
</h3>
<ul ng-hide="appconfig">
<li>
<a href="app.config.html">config</a>
</li>
</ul>
</ul><ul class="group">
<h3>
<a href="" ng-click="appfilter = !appfilter">
filter
</a>
<i ng-cloak="" ng-show="appfilter">+</i>
</h3>
<ul ng-hide="appfilter">
<li>
<a href="app.customCurrency.html">customCurrency</a>
</li>
</ul>
</ul><ul class="group">
<h3>
<a href="" ng-click="appservice = !appservice">
service
</a>
<i ng-cloak="" ng-show="appservice">+</i>
</h3>
<ul ng-hide="appservice">
<li>
<a href="app.testService.html">testService</a>
</li>
</ul>
</ul>
</li>
</ul><ul class="module">
<!-- ngmap -->
<h3>
<a href="" ng-click="modulengmap = !modulengmap">
module: ngmap
</a>
<i ng-cloak="" ng-show="modulengmap">+</i>
</h3>
<li id="ngmap" ng-hide="modulengmap">
<ul class="group">
<h3>
<a href="" ng-click="ngmapservice = !ngmapservice">
service
</a>
<i ng-cloak="" ng-show="ngmapservice">+</i>
</h3>
<ul ng-hide="ngmapservice">
<li>
<a href="ngmap.Attr2Options.html">Attr2Options</a>
</li>
</ul>
</ul><ul class="group">
<h3>
<a href="" ng-click="ngmapdirective = !ngmapdirective">
directive
</a>
<i ng-cloak="" ng-show="ngmapdirective">+</i>
</h3>
<ul ng-hide="ngmapdirective">
<li>
<a href="ngmap.map.html">map</a>
</li>
</ul>
</ul><ul class="group">
<h3>
<a href="" ng-click="ngmapcontroller = !ngmapcontroller">
controller
</a>
<i ng-cloak="" ng-show="ngmapcontroller">+</i>
</h3>
<ul ng-hide="ngmapcontroller">
<li>
<a href="ngmap.MapController.html">MapController</a>
</li>
</ul>
</ul>
</li>
</ul>
</nav>
<div id="content" class="page-wrap">
<h3 style="float:right; color:#ccc">
Angular service
</h3>
<h1 class="title">
testService
<a class="name-link signature-attributes" href="source/app.testService.html#line6">source</a>
</h1>
<div id="main" class="big-container">
<!-- source code html -->
<!-- index.html -->
<!-- class files -->
<div>
<div><div class="container-overview">
<dt></dt>
<dd>
<div class="description">
<p>The siteLanguageServices provides information about available languges
of a site.</p>
</div>
<div class="details"></div>
<div>
<h5>Dependencies:</h5>
<table class="params">
<thead>
<tr><th>Name</th><th>Type</th><th class="last">Description</th></tr>
</thead>
<tbody>
<tr>
<td class="name" nowrap="">Test</td>
<td class="type"><span class="param-type">
$http
</span></td>
<td class="description last"></td>
</tr>
</tbody>
</table>
</div>
<div>
<h5>Properties:</h5>
<table class="props">
<thead>
<tr><th>Name</th><th>Type</th><th class="last">Description</th></tr>
</thead>
<tbody>
<tr>
<td class="name" nowrap="">obj</td>
<td class="type"><span class="param-type">
object
</span></td>
<td class="description last"><p>property of this service</p></td>
</tr>
</tbody>
</table>
</div>
</dd>
</div>
<section>
<div class="functions">
<h3 class="subsection-title">Methods</h3>
<dl>
<dt>
<a href="source/app.testService.html#line22" class="name-link">
<h4 class="name">
test
///// NO param jsdoc tag here
</h4>
</a>
</dt>
<dd>
<div class="description">
</div>
</dd>
</dl>
</div>
</section></div>
</div>
</div>
<footer style="clear:both">
Documentation generated by
<a href="https://github.com/jsdoc3/jsdoc">JSDoc 3.3.2</a>
using
<a href="https://github.com/allenhwkim/angular-jsdoc">Angular-JSDoc template</a>
</footer>
</div>
<!--%= prettyJson %-->
<script>
prettyPrint();
var lineNo = window.location.hash.match(/#line([0-9]+)$/);
lineNo && document.querySelector("ol li:nth-child("+(lineNo[1])+")").scrollIntoView();
</script>
</body>
</html>
\ No newline at end of file
html * {
box-sizing: border-box;
-ms-box-sizing: border-box;
-moz-box-sizing: border-box;
-webkit-box-sizing: border-box;
}
body {
font-family: "Open Sans", "Helvetica Neue", "Helvetica", "Arial", sans-serif;
font-weight: 300;
font-size: 1rem;
line-height: 1.5rem;
color: #5c5c5c;
background-color: white;
padding: 10px;
}
h1 {
font-family: "Arquitecta";
font-size: 3rem;
line-height: 3rem;
margin-top: 3.1875rem;
margin-bottom: 1.3125rem;
font-weight: 300;
}
footer {
margin: 0rem;
padding: 1.5rem;
text-align: right;
background-color: #554f4e;
overflow-y: auto;
color: #fff;
}
nav {
margin-top: 0px;
padding-top: 50px;
background-color: #fff;
}
#main {
float: none;
width: auto;
}
.page-wrap {
padding: 1.5rem 14px;
margin-bottom: 0rem;
background-color: #6c6463;
width: 70%;
}
.page-wrap h1 {
margin-top: -0.375rem;
color: #FFFFFF;
}
.page-wrap #main h1 {
color: inherit;
}
.big-container {
padding: 0rem;
background-color: #FFFFFF;
border-top: solid 1px #828282;
min-height: 24rem;
overflow: hidden;
background-repeat: repeat-x;
background-position: top;
margin-bottom: 1.5rem;
padding: 2.0rem 1.5rem 3rem 1.5rem;
}
/**
* This is enhanced theme by Umut Topuzoglu<https://github.com/ulocl>. Thanks, Umut
*/
@font-face {
font-family: 'Open Sans';
font-weight: normal;
font-style: normal;
src: url('../fonts/OpenSans-Regular-webfont.eot');
src:
local('Open Sans'),
local('OpenSans'),
url('../fonts/OpenSans-Regular-webfont.eot?#iefix') format('embedded-opentype'),
url('../fonts/OpenSans-Regular-webfont.woff') format('woff'),
url('../fonts/OpenSans-Regular-webfont.svg#open_sansregular') format('svg');
}
@font-face {
font-family: 'Open Sans Light';
font-weight: normal;
font-style: normal;
src: url('../fonts/OpenSans-Light-webfont.eot');
src:
local('Open Sans Light'),
local('OpenSans Light'),
url('../fonts/OpenSans-Light-webfont.eot?#iefix') format('embedded-opentype'),
url('../fonts/OpenSans-Light-webfont.woff') format('woff'),
url('../fonts/OpenSans-Light-webfont.svg#open_sanslight') format('svg');
}
* { box-sizing: border-box }
html
{
overflow: auto;
background-color: #fff;
font-size: 14px;
}
body
{
font-family: 'Open Sans', sans-serif;
line-height: 1.5;
color: #4d4e53;
background-color: white;
}
a, a:visited, a:active {
color: #0095dd;
text-decoration: none;
}
a:hover {
text-decoration: underline;
}
header
{
display: block;
padding: 0px 4px;
}
tt, code, kbd, samp {
font-family: Consolas, Monaco, 'Andale Mono', monospace;
padding: 0 0.25em;
background-color: #ddd;
}
.class-description {
font-size: 130%;
line-height: 140%;
margin-bottom: 1em;
margin-top: 1em;
}
.class-description:empty {
margin: 0;
}
#main {
float: left;
width: 70%;
padding-right: 20px;
}
article dl {
margin-bottom: 40px;
}
section
{
display: block;
background-color: #fff;
padding: 12px 24px;
border-bottom: 1px solid #ccc;
margin-right: 30px;
}
.variation {
display: none;
}
.signature-attributes {
font-size: 60%;
color: #aaa;
font-style: italic;
font-weight: lighter;
}
nav
{
display: block;
float: right;
margin-top: 28px;
width: 30%;
box-sizing: border-box;
border-left: 1px solid #ccc;
padding-left: 16px;
}
nav ul {
font-family: 'Lucida Grande', 'Lucida Sans Unicode', arial, sans-serif;
font-size: 100%;
line-height: 17px;
padding: 0;
margin: 0;
list-style-type: none;
}
nav ul a, nav ul a:visited, nav ul a:active {
font-family: Consolas, Monaco, 'Andale Mono', monospace;
line-height: 18px;
color: #4D4E53;
}
nav h3 {
margin-top: 12px;
}
nav ul {
margin-top: 1.5em;
}
nav li {
margin-top: 6px;
margin-left: 10px;
}
footer {
display: block;
padding: 6px;
margin-top: 12px;
font-style: italic;
font-size: 90%;
}
h1, h2, h3, h4 {
font-weight: 200;
margin: 0;
}
h1
{
font-family: 'Open Sans Light', sans-serif;
font-size: 48px;
letter-spacing: -2px;
margin: 12px 24px 20px;
}
h2, h3
{
font-size: 30px;
font-weight: 700;
letter-spacing: -1px;
margin-bottom: 12px;
}
h4
{
font-size: 18px;
letter-spacing: -0.33px;
margin-bottom: 12px;
color: #4d4e53;
}
h5, .container-overview .subsection-title
{
font-size: 120%;
font-weight: bold;
letter-spacing: -0.01em;
margin: 8px 0 3px 0;
}
h6
{
font-size: 100%;
letter-spacing: -0.01em;
margin: 6px 0 3px 0;
font-style: italic;
}
.ancestors { color: #999; }
.ancestors a
{
color: #999 !important;
text-decoration: none;
}
.clear
{
clear: both;
}
.important
{
font-weight: bold;
color: #950B02;
}
.yes-def {
text-indent: -1000px;
}
.type-signature {
color: #aaa;
}
.name, .signature {
font-family: Consolas, Monaco, 'Andale Mono', monospace;
}
.details { margin-top: 14px; border-left: 2px solid #DDD; }
.details dt { width: 120px; float: left; padding-left: 10px; padding-top: 6px; }
.details dd { margin-left: 70px; }
.details ul { margin: 0; }
.details ul { list-style-type: none; }
.details li { margin-left: 30px; padding-top: 6px; }
.details pre.prettyprint { margin: 0 }
.details .object-value { padding-top: 0; }
.description {
margin-bottom: 1em;
margin-top: 1em;
}
.code-caption
{
font-style: italic;
font-size: 107%;
margin: 0;
}
.prettyprint
{
border: 1px solid #ddd;
width: 80%;
overflow: auto;
}
.prettyprint.source {
width: inherit;
}
.prettyprint code
{
font-size: 100%;
line-height: 18px;
display: block;
margin: 0;
background-color: #fff;
color: #4D4E53;
}
.prettyprint code span.line
{
display: inline-block;
}
.prettyprint.linenums
{
padding-left: 70px;
-webkit-user-select: none;
-moz-user-select: none;
-ms-user-select: none;
user-select: none;
}
.prettyprint.linenums ol
{
padding-left: 0;
}
.prettyprint.linenums li
{
border-left: 3px #ddd solid;
}
.prettyprint.linenums li.selected,
.prettyprint.linenums li.selected *
{
background-color: lightyellow;
}
.prettyprint.linenums li *
{
-webkit-user-select: text;
-moz-user-select: text;
-ms-user-select: text;
user-select: text;
}
.params, .props
{
border-spacing: 0;
border: 0;
border-collapse: collapse;
}
.params .name, .props .name, .name code {
color: #4D4E53;
font-family: Consolas, Monaco, 'Andale Mono', monospace;
font-size: 100%;
}
.params td, .params th, .props td, .props th
{
border: 1px solid #ddd;
margin: 0px;
text-align: left;
vertical-align: top;
padding: 4px 6px;
display: table-cell;
}
.params thead tr, .props thead tr
{
background-color: #ddd;
font-weight: bold;
}
.params .params thead tr, .props .props thead tr
{
background-color: #fff;
font-weight: bold;
}
.params th, .props th { border-right: 1px solid #aaa; }
.params thead .last, .props thead .last { border-right: 1px solid #ddd; }
.params td.description > p:first-child,
.props td.description > p:first-child
{
margin-top: 0;
padding-top: 0;
}
.params td.description > p:last-child,
.props td.description > p:last-child
{
margin-bottom: 0;
padding-bottom: 0;
}
.disabled {
color: #454545;
}
/* Tomorrow Theme */
/* Original theme - https://github.com/chriskempson/tomorrow-theme */
/* Pretty printing styles. Used with prettify.js. */
/* SPAN elements with the classes below are added by prettyprint. */
/* plain text */
.pln {
color: #4d4d4c; }
@media screen {
/* string content */
.str {
color: #718c00; }
/* a keyword */
.kwd {
color: #8959a8; }
/* a comment */
.com {
color: #8e908c; }
/* a type name */
.typ {
color: #4271ae; }
/* a literal value */
.lit {
color: #f5871f; }
/* punctuation */
.pun {
color: #4d4d4c; }
/* lisp open bracket */
.opn {
color: #4d4d4c; }
/* lisp close bracket */
.clo {
color: #4d4d4c; }
/* a markup tag name */
.tag {
color: #c82829; }
/* a markup attribute name */
.atn {
color: #f5871f; }
/* a markup attribute value */
.atv {
color: #3e999f; }
/* a declaration */
.dec {
color: #f5871f; }
/* a variable name */
.var {
color: #c82829; }
/* a function name */
.fun {
color: #4271ae; } }
/* Use higher contrast and text-weight for printable form. */
@media print, projection {
.str {
color: #060; }
.kwd {
color: #006;
font-weight: bold; }
.com {
color: #600;
font-style: italic; }
.typ {
color: #404;
font-weight: bold; }
.lit {
color: #044; }
.pun, .opn, .clo {
color: #440; }
.tag {
color: #006;
font-weight: bold; }
.atn {
color: #404; }
.atv {
color: #060; } }
/* Style */
/*
pre.prettyprint {
background: white;
font-family: Consolas, Monaco, 'Andale Mono', monospace;
font-size: 12px;
line-height: 1.5;
border: 1px solid #ccc;
padding: 10px; }
*/
/* Specify class=linenums on a pre to get line numbering */
ol.linenums {
margin-top: 0;
margin-bottom: 0; }
/* IE indents via margin-left */
li.L0,
li.L1,
li.L2,
li.L3,
li.L4,
li.L5,
li.L6,
li.L7,
li.L8,
li.L9 {
/* */ }
/* Alternate shading for lines */
li.L1,
li.L3,
li.L5,
li.L7,
li.L9 {
/* */ }
/* Pretty printing styles. Used with prettify.js. */
/* SPAN elements with the classes below are added by prettyprint. */
.pln { color: #000 } /* plain text */
@media screen {
.str { color: #080 } /* string content */
.kwd { color: #008 } /* a keyword */
.com { color: #800 } /* a comment */
.typ { color: #606 } /* a type name */
.lit { color: #066 } /* a literal value */
/* punctuation, lisp open bracket, lisp close bracket */
.pun, .opn, .clo { color: #660 }
.tag { color: #008 } /* a markup tag name */
.atn { color: #606 } /* a markup attribute name */
.atv { color: #080 } /* a markup attribute value */
.dec, .var { color: #606 } /* a declaration; a variable name */
.fun { color: red } /* a function name */
}
/* Use higher contrast and text-weight for printable form. */
@media print, projection {
.str { color: #060 }
.kwd { color: #006; font-weight: bold }
.com { color: #600; font-style: italic }
.typ { color: #404; font-weight: bold }
.lit { color: #044 }
.pun, .opn, .clo { color: #440 }
.tag { color: #006; font-weight: bold }
.atn { color: #404 }
.atv { color: #060 }
}
/* Put a border around prettyprinted code snippets. */
pre.prettyprint { padding: 2px; border: 1px solid #888 }
/* Specify class=linenums on a pre to get line numbering */
ol.linenums { margin-top: 0; margin-bottom: 0 } /* IE indents via margin-left */
li.L0,
li.L1,
li.L2,
li.L3,
li.L5,
li.L6,
li.L7,
li.L8 { list-style-type: none }
/* Alternate shading for lines */
li.L1,
li.L3,
li.L5,
li.L7,
li.L9 { background: #eee }
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
<!doctype html>
<html>
<head>
<title>JSDoc: Index</title>
<link type="text/css" rel="stylesheet" href="css/jsdoc-default.css">
<link href="css/prettify-tomorrow.css" type="text/css" rel="stylesheet">
<link href="https://fonts.googleapis.com/css?family=Open+Sans:300italic,400italic,400,300,700" rel="stylesheet" type="text/css">
<link href="css/custom.css" type="text/css" rel="stylesheet">
<script src="js/prettify.js"></script>
<script src="js/angular.min.js"></script>
</head>
<body ng-app="">
<nav>
<h2><a href="index.html">Index</a></h2>
<ul class="module">
<!-- app -->
<h3>
<a href="" ng-click="moduleapp = !moduleapp">
module: app
</a>
<i ng-cloak="" ng-show="moduleapp">+</i>
</h3>
<li id="app" ng-hide="moduleapp">
<ul class="group">
<h3>
<a href="" ng-click="appconfig = !appconfig">
config
</a>
<i ng-cloak="" ng-show="appconfig">+</i>
</h3>
<ul ng-hide="appconfig">
<li>
<a href="app.config.html">config</a>
</li>
</ul>
</ul><ul class="group">
<h3>
<a href="" ng-click="appfilter = !appfilter">
filter
</a>
<i ng-cloak="" ng-show="appfilter">+</i>
</h3>
<ul ng-hide="appfilter">
<li>
<a href="app.customCurrency.html">customCurrency</a>
</li>
</ul>
</ul><ul class="group">
<h3>
<a href="" ng-click="appservice = !appservice">
service
</a>
<i ng-cloak="" ng-show="appservice">+</i>
</h3>
<ul ng-hide="appservice">
<li>
<a href="app.testService.html">testService</a>
</li>
</ul>
</ul>
</li>
</ul><ul class="module">
<!-- ngmap -->
<h3>
<a href="" ng-click="modulengmap = !modulengmap">
module: ngmap
</a>
<i ng-cloak="" ng-show="modulengmap">+</i>
</h3>
<li id="ngmap" ng-hide="modulengmap">
<ul class="group">
<h3>
<a href="" ng-click="ngmapservice = !ngmapservice">
service
</a>
<i ng-cloak="" ng-show="ngmapservice">+</i>
</h3>
<ul ng-hide="ngmapservice">
<li>
<a href="ngmap.Attr2Options.html">Attr2Options</a>
</li>
</ul>
</ul><ul class="group">
<h3>
<a href="" ng-click="ngmapdirective = !ngmapdirective">
directive
</a>
<i ng-cloak="" ng-show="ngmapdirective">+</i>
</h3>
<ul ng-hide="ngmapdirective">
<li>
<a href="ngmap.map.html">map</a>
</li>
</ul>
</ul><ul class="group">
<h3>
<a href="" ng-click="ngmapcontroller = !ngmapcontroller">
controller
</a>
<i ng-cloak="" ng-show="ngmapcontroller">+</i>
</h3>
<ul ng-hide="ngmapcontroller">
<li>
<a href="ngmap.MapController.html">MapController</a>
</li>
</ul>
</ul>
</li>
</ul>
</nav>
<div id="content" class="page-wrap">
<h1 class="title">
Index
</h1>
<div id="main" class="big-container">
<!-- source code html -->
<!-- index.html -->
<section class="section-readme">
<article>
<h1>Sample Code</h1><p>This is markdown README.md</p>
</article>
</section>
<!-- class files -->
</div>
<footer style="clear:both">
Documentation generated by
<a href="https://github.com/jsdoc3/jsdoc">JSDoc 3.3.2</a>
using
<a href="https://github.com/allenhwkim/angular-jsdoc">Angular-JSDoc template</a>
</footer>
</div>
<!--%= prettyJson %-->
<script>
prettyPrint();
var lineNo = window.location.hash.match(/#line([0-9]+)$/);
lineNo && document.querySelector("ol li:nth-child("+(lineNo[1])+")").scrollIntoView();
</script>
</body>
</html>
\ No newline at end of file
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
<section>
<h2>Child A</h2>
<article>
<p>child A</p>
<p>This
is
test
tutorial</p>
</article>
</section>
\ No newline at end of file
<section>
<h2>Child B</h2>
<article>
<p>child B</p>
<p>test</p>
</article>
</section>
\ No newline at end of file
<section>
<h2>Tutorial Two</h2>
<article>
test tutorial
test tutorial
</article>
</section>
\ No newline at end of file
<section>
<header>
<ul>
<li>
<a href="tutorial-childA.html">Child A</a>
</li><li>
<a href="tutorial-childB.html">Child B</a>
</li>
</ul>
</header>
<h2>Tutorial One</h2>
<article>
<p>This
is
test
tutorial</p>
</article>
</section>
\ No newline at end of file
<section>
<h2>tutorial2</h2>
<article>
<p>tutorial 2</p>
<p>This
is
test
tutorial</p>
</article>
</section>
\ No newline at end of file
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
<section>
<header ht-if="tutorialData && tutorialData.children.length">
<ul>
<li ht-repeat="t in tutorialData.children">
{{tutoriallink(t.name)}}
</li>
</ul>
</header>
<h2>{{tutorialData.header}}</h2>
<article>
{{tutorialData.content}}
</article>
</section>
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment