Commit 6c149d9c authored by Evren Kutar's avatar Evren Kutar

Merge branch 'feature/issue-gh-6' into develop

parents dd414dba e5eb1188
......@@ -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
......@@ -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');
......
......@@ -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',
......
......@@ -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.
......@@ -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.
......@@ -1805,7 +1805,7 @@ angular.module("shared/templates/nodeTable.html", []).run(["$templateCache", fun
" <span ng-if=\"value.verbose_name\">{{ value.verbose_name }}</span>\n" +
" <span ng-if=\"!value.verbose_name\">{{key}}</span>\n" +
" </th>\n" +
" <th>İşlem</th>\n" +
" <th ng-if=\"action!==False\">İşlem</th>\n" +
" </tr>\n" +
" </thead>\n" +
" <tbody ng-class=\"{hidden: node.lengthModels < 1}\">\n" +
......@@ -1838,7 +1838,7 @@ angular.module("shared/templates/nodeTable.html", []).run(["$templateCache", fun
" ng-model=\"node.model[outerIndex][k]\"\n" +
" ng-change=\"nodeModelChange(this)\">\n" +
" </td>\n" +
" <td>\n" +
" <td ng-if=\"action!==False\">\n" +
" <button modal-for-nodes=\"{{node.schema.model_name}},{{node.schema.formType}},edit,{{$index}}\">Düzenle\n" +
" </button>\n" +
" <br>\n" +
......
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 source diff could not be displayed because it is too large. You can view the blob instead.
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.
// Canonical path provides a consistent path (i.e. always forward slashes) across different OSes
var path = require('canonical-path');
var Package = require('dgeni').Package;
// Create and export a new Dgeni package called dgeni-example. This package depends upon
// the jsdoc and nunjucks packages defined in the dgeni-packages npm module.
module.exports = new Package('docs_conf', [
require('dgeni-packages/jsdoc'),
require('dgeni-packages/nunjucks')
])
// Configure our dgeni-example package. We can ask the Dgeni dependency injector
// to provide us with access to services and processors that we wish to configure
.config(function(log, readFilesProcessor, templateFinder, writeFilesProcessor) {
// Set logging level
log.level = 'info';
// Specify the base path used when resolving relative paths to source and output files
readFilesProcessor.basePath = path.resolve(__dirname, '..');
console.log(readFilesProcessor.basePath);
// Specify collections of source files that should contain the documentation to extract
readFilesProcessor.sourceFiles = [
{
// Process all js files in `app` and its subfolders ...
include: 'app/components/**/*.js',
// ... except for this one!
exclude: 'app/**/*_test.js',
// When calculating the relative path to these files use this as the base path.
// So `src/foo/bar.js` will have relative path of `foo/bar.js`
basePath: 'app'
}
];
// Add a folder to search for our own templates to use when rendering docs
templateFinder.templateFolders.unshift(path.resolve(__dirname, 'templates'));
// Specify how to match docs to templates.
// In this case we just use the same static template for all docs
templateFinder.templatePatterns.unshift('docs-template.html');
// Specify where the writeFilesProcessor will write our generated doc files
writeFilesProcessor.outputFolder = 'documentation';
});
\ 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.
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