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

Merge branch 'master' of https://github.com/zetaops/ulakbus-ui

Conflicts:
	app/app.css
parents d6f2d730 eb48092d
...@@ -73,6 +73,7 @@ module.exports = function (grunt) { ...@@ -73,6 +73,7 @@ module.exports = function (grunt) {
files: [ files: [
{expand: true, cwd: 'app/bower_components/font-awesome/fonts/', src: '*', dest: 'dist/fonts/', flatten: true, filter: 'isFile'}, {expand: true, cwd: 'app/bower_components/font-awesome/fonts/', src: '*', dest: 'dist/fonts/', flatten: true, filter: 'isFile'},
{expand: true, cwd: 'app/img/', src: 'brand-logo.png', dest: 'dist/img/', flatten: true, filter: 'isFile'}, {expand: true, cwd: 'app/img/', src: 'brand-logo.png', dest: 'dist/img/', flatten: true, filter: 'isFile'},
{expand: true, cwd: 'app/img/', src: 'loading_spinner.gif', dest: 'dist/img/', flatten: true, filter: 'isFile'},
{expand: true, cwd: 'app/styles/roboto/', src: '**/*', dest: 'dist/css/roboto/', flatten: false}, {expand: true, cwd: 'app/styles/roboto/', src: '**/*', dest: 'dist/css/roboto/', flatten: false},
{expand: true, cwd: 'app/styles/', src: 'jquery-ui.min.css', dest: 'dist/css/', flatten: true}, {expand: true, cwd: 'app/styles/', src: 'jquery-ui.min.css', dest: 'dist/css/', flatten: true},
{expand: true, cwd: 'app/styles/images/', src: '*', dest: 'dist/css/images/', flatten: true}, {expand: true, cwd: 'app/styles/images/', src: '*', dest: 'dist/css/images/', flatten: true},
......
...@@ -93,9 +93,9 @@ button.brand-bg:hover { ...@@ -93,9 +93,9 @@ button.brand-bg:hover {
font-size: 2px; font-size: 2px;
position: relative; position: relative;
text-indent: -9999em; text-indent: -9999em;
border-top: 1.1em solid rgba(166, 18, 41, 0.2); border-top: 1.1em solid rgba(166, 12, 41, 0.2);
border-right: 1.1em solid rgba(166, 18, 41, 0.2); border-right: 1.1em solid rgba(166, 12, 41, 0.2);
border-bottom: 1.1em solid rgba(166, 18, 41, 0.2); border-bottom: 1.1em solid rgba(166, 12, 41, 0.2);
border-left: 1.1em solid #A61229; border-left: 1.1em solid #A61229;
-webkit-transform: translateZ(0); -webkit-transform: translateZ(0);
-ms-transform: translateZ(0); -ms-transform: translateZ(0);
...@@ -103,8 +103,8 @@ button.brand-bg:hover { ...@@ -103,8 +103,8 @@ button.brand-bg:hover {
-webkit-animation: load8 1.1s infinite linear; -webkit-animation: load8 1.1s infinite linear;
animation: load8 1.1s infinite linear; animation: load8 1.1s infinite linear;
float: left; float: left;
margin-left: 15px; margin-left: 10px;
margin-top: 4px; margin-top: 3px;
} }
.loader, .loader,
.loader:after { .loader:after {
...@@ -308,6 +308,7 @@ select { ...@@ -308,6 +308,7 @@ select {
flex-shrink: 0; flex-shrink: 0;
position:relative; position:relative;
z-index:1; z-index:1;
height: 98px;
} }
.manager-view-content { .manager-view-content {
...@@ -1066,12 +1067,12 @@ table.dataTable thead .sorting:after { ...@@ -1066,12 +1067,12 @@ table.dataTable thead .sorting:after {
} }
.sidebar footer { .sidebar footer {
padding: 15px;
text-align: center; text-align: center;
background-color: #F7F7F7;
border-bottom: 1px solid #ccc;
color: #9E9E9E;
font-family: 'robotomedium'; font-family: 'robotomedium';
background-color: #F1F1F1;
padding: 15px;
color: #A7A7A7;
border-bottom: 1px solid #ccc;
} }
} }
...@@ -1149,3 +1150,18 @@ table.dataTable thead .sorting:after { ...@@ -1149,3 +1150,18 @@ table.dataTable thead .sorting:after {
right:0; right:0;
top:auto; top:auto;
} }
/* loading bar */
.loadingbarfullsize{
z-index:10001;
position:fixed;
width:100%;
height:100%;
top: 0;
left: 0;
background: url('/img/loading_spinner.gif') rgba(0, 0, 3, 0.2) no-repeat center center;
background-size: 100px 100px;
}
...@@ -10,49 +10,52 @@ app.config(['$routeProvider', function ($routeProvider) { ...@@ -10,49 +10,52 @@ app.config(['$routeProvider', function ($routeProvider) {
templateUrl: 'components/dashboard/dashboard.html', templateUrl: 'components/dashboard/dashboard.html',
controller: 'DashCtrl' controller: 'DashCtrl'
}) })
.when('/:model/add', { .when('/500', {
templateUrl: 'components/uitemplates/500.html',
controller: '500Ctrl'
})
.when('/404', {
templateUrl: 'components/uitemplates/404.html',
controller: '404Ctrl'
})
.when('/crud/:model/add', {
templateUrl: 'components/crud/templates/add.html', templateUrl: 'components/crud/templates/add.html',
controller: 'CRUDAddEditCtrl' controller: 'CRUDAddEditCtrl'
}) })
.when('/:model/edit/:id', { .when('/crud/:model/edit/:id', {
templateUrl: 'components/crud/templates/add.html', templateUrl: 'components/crud/templates/add.html',
controller: 'CRUDAddEditCtrl' controller: 'CRUDAddEditCtrl'
}) })
.when('/:model', { .when('/crud/:model', {
templateUrl: 'components/crud/templates/list.html', templateUrl: 'components/crud/templates/list.html',
controller: 'CRUDListCtrl' controller: 'CRUDListCtrl'
}) })
.when('/:model/:id', { .when('/crud/:model/:id', {
templateUrl: 'components/crud/templates/show.html', templateUrl: 'components/crud/templates/show.html',
controller: 'CRUDShowCtrl' controller: 'CRUDShowCtrl'
}) })
.when('/staff/add', {
templateUrl: 'components/staff/templates/add.html',
controller: 'StaffAddEditCtrl'
})
.when('/staff/edit/:id', {
templateUrl: 'components/staff/templates/edit.html',
controller: 'StaffAddEditCtrl'
})
.when('/staffs', {
templateUrl: 'components/staff/templates/list.html',
controller: 'StaffListCtrl'
})
.when('/staff/:id', {
templateUrl: 'components/staff/templates/show.html',
controller: 'StaffShowCtrl'
})
.otherwise({redirectTo: '/dashboard'}); .otherwise({redirectTo: '/dashboard'});
}]).run(function ($rootScope, $location, $cookies) { }])
.run(function ($rootScope) {
$rootScope.loggedInUser = true; $rootScope.loggedInUser = true;
$rootScope.$on("$routeChangeStart", function (event, next, current) { $rootScope.$on("$routeChangeStart", function (event, next, current) {
// will be used when needed // will be used when needed
}); });
}).config(['$httpProvider', function($httpProvider) { })
.config(['$httpProvider', function ($httpProvider) {
// to send cookies CORS // to send cookies CORS
$httpProvider.defaults.withCredentials = true; $httpProvider.defaults.withCredentials = true;
}]).run(function (gettextCatalog) { }])
.run(function (gettextCatalog) {
gettextCatalog.setCurrentLanguage('tr'); gettextCatalog.setCurrentLanguage('tr');
gettextCatalog.debug = true; gettextCatalog.debug = true;
}); })
\ No newline at end of file .config(['cfpLoadingBarProvider', function (cfpLoadingBarProvider) {
// no need bar on top of the page, set to false
cfpLoadingBarProvider.includeBar = false;
// loaderdiv is a placeholder tag for loader in header-sub-menu.html
cfpLoadingBarProvider.parentSelector = "loaderdiv";
// loader template will be used when loader initialized
cfpLoadingBarProvider.spinnerTemplate = '<div class="loader">Loading...</div>';
}]);
\ No newline at end of file
...@@ -38,7 +38,8 @@ crud.controller('CRUDAddEditCtrl', function ($scope, $rootScope, $location, $htt ...@@ -38,7 +38,8 @@ crud.controller('CRUDAddEditCtrl', function ($scope, $rootScope, $location, $htt
if (form.$valid) { if (form.$valid) {
Generator.submit($scope) Generator.submit($scope)
.success(function(data){ .success(function(data){
$location.path($scope.form_params.model).search(data); debugger;
$location.path('/crud/'+$scope.form_params.model).search(data);
}) })
.error(function(data){ .error(function(data){
$scope.message = data.title; $scope.message = data.title;
......
<div class="starter-template"> <div class="starter-template">
<h1>{{model}} <a href="#/{{model}}/add"><button type="button" class="btn btn-primary">Ekle</button></a></h1> <h1>{{model}} <a href="#/crud/{{model}}/add"><button type="button" class="btn btn-primary">Ekle</button></a></h1>
<div class="tablescroll"> <div class="tablescroll">
<table class="table table-bordered" style="background-color:#fff;"> <table class="table table-bordered" style="background-color:#fff;">
<thead> <thead>
...@@ -24,15 +24,15 @@ ...@@ -24,15 +24,15 @@
</td> </td>
<th scope="row" style="text-align:center">{{$index}}</th> <th scope="row" style="text-align:center">{{$index}}</th>
<td ng-repeat="k in object" ng-if="nobjects[0]=='-1' && $index>0"> <td ng-repeat="k in object" ng-if="nobjects[0]=='-1' && $index>0">
<a ng-href="#/{{model}}/{{object[0]}}">{{object[1]}}</a> <a ng-href="#/crud/{{model}}/{{object[0]}}">{{object[1]}}</a>
</td> </td>
<td ng-repeat="(key,value) in object" ng-if="nobjects[0]!='-1' && $index>0"> <td ng-repeat="(key,value) in object" ng-if="nobjects[0]!='-1' && $index>0">
<a ng-href="#/{{model}}/{{object[0]}}" ng-if="$index==1">{{value}}</a> <a ng-href="#/crud/{{model}}/{{object[0]}}" ng-if="$index==1">{{value}}</a>
<span ng-if="$index!=1">{{value}}</span> <span ng-if="$index!=1">{{value}}</span>
</td> </td>
<td> <td>
<a ng-href="#/{{model}}/edit/{{object[0]}}">Edit</a><br> <a ng-href="#/crud/{{model}}/edit/{{object[0]}}">Edit</a><br>
</td> </td>
</tr> </tr>
</tbody> </tbody>
......
...@@ -4,13 +4,16 @@ ...@@ -4,13 +4,16 @@
<div class="row"> <div class="row">
<div class="major-buttons"> <div class="major-buttons">
<div class="col-md-4"> <div class="col-md-4">
<a href=""><button type="button" class="btn btn-personnel brand-bg"><i class="fa fa-user"></i> PERSONEL İŞLERİ</button></a> <a href=""><button type="button" class="btn btn-personnel brand-bg" ng-click="section(2)"><i class="fa fa-user"></i>
PERSONEL İŞLERİ</button></a>
</div> </div>
<div class="col-md-4"> <div class="col-md-4">
<a href=""><button type="button" class="btn btn-student brand-bg"><i class="fa fa-graduation-cap"></i> ÖĞRENCİ İŞLERİ</button></a> <a href=""><button type="button" class="btn btn-student brand-bg" ng-click="section(0)"><i
class="fa fa-graduation-cap"></i> ÖĞRENCİ İŞLERİ</button></a>
</div> </div>
<div class="col-md-4"> <div class="col-md-4">
<a href=""><button type="button" class="btn btn-system brand-bg"><i class="fa fa-gears"></i> SİSTEM</button></a> <a href=""><button type="button" class="btn btn-system brand-bg" ng-click="section(3)"><i class="fa fa-gears"></i>
SİSTEM</button></a>
</div> </div>
</div> </div>
</div> </div>
......
...@@ -12,6 +12,7 @@ ...@@ -12,6 +12,7 @@
angular.module('ulakbus.dashboard', ['ngRoute']) angular.module('ulakbus.dashboard', ['ngRoute'])
.controller('DashCtrl', function ($scope, $rootScope, $location) { .controller('DashCtrl', function ($scope, $rootScope, $location) {
//if($rootScope.loggedInUser){$location.path("/login");} $scope.section = function(section_index){
$scope.testData = "<h1>This is main Dashboard</h1>"; $rootScope.section = section_index;
}
}); });
\ No newline at end of file
<div ng-app="ulakbus.uitemplates" class="dashboard">
<div class="starter-template">
<div class="row">
<div>
404.html
</div>
</div>
</div>
</div>
\ No newline at end of file
<div ng-app="ulakbus.uitemplates" class="dashboard">
<div class="starter-template">
<div class="row">
<div>500.html</div>
</div>
</div>
</div>
\ No newline at end of file
/**
* Copyright (C) 2015 ZetaOps Inc.
*
* This file is licensed under the GNU General Public License v3
* (GPLv3). See LICENSE.txt for details.
*/
'use strict';
app.config(['$routeProvider', function ($routeProvider) {
$routeProvider
.when('/500', {
templateUrl: 'components/uitemplates/500.html',
controller: '500Ctrl'
})
.when('/404', {
templateUrl: 'components/uitemplates/404.html',
controller: '404Ctrl'
});
}]);
angular.module('ulakbus.uitemplates', ['ngRoute'])
.controller('500Ctrl', function ($scope, $rootScope, $location) {
})
.controller('400Ctrl', function ($scope, $rootScope, $location) {
});
\ No newline at end of file
...@@ -5,4 +5,4 @@ angular.module('ulakbus.version', [ ...@@ -5,4 +5,4 @@ angular.module('ulakbus.version', [
'ulakbus.version.version-directive' 'ulakbus.version.version-directive'
]) ])
.value('version', '0.3'); .value('version', '0.3.0');
...@@ -107,8 +107,8 @@ ...@@ -107,8 +107,8 @@
<script src="components/auth/auth_service.js"></script> <script src="components/auth/auth_service.js"></script>
<script src="components/dashboard/dashboard_controller.js"></script> <script src="components/dashboard/dashboard_controller.js"></script>
<script src="components/crud/crud_controller.js"></script> <script src="components/crud/crud_controller.js"></script>
<script src="components/staff/staff_controller.js"></script> <script src="components/uitemplates/uitemplates.js"></script>
<script src="components/student/student_controller.js"></script> <!--<script src="components/student/student_controller.js"></script>-->
<script src="components/version/interpolate-filter.js"></script> <script src="components/version/interpolate-filter.js"></script>
<script src="components/version/version-directive.js"></script> <script src="components/version/version-directive.js"></script>
<script src="components/version/version.js"></script> <script src="components/version/version.js"></script>
......
...@@ -28,7 +28,7 @@ var app = angular.module( ...@@ -28,7 +28,7 @@ var app = angular.module(
'templates-prod', 'templates-prod',
// @endif // @endif
// @if NODE_ENV='DEVELOPMENT' // @if NODE_ENV='DEVELOPMENT'
//'templates-dev', 'ulakbus.uitemplates',
// @endif // @endif
]). ]).
/** /**
......
...@@ -39,8 +39,8 @@ app.directive('headerSubMenu', function () { ...@@ -39,8 +39,8 @@ app.directive('headerSubMenu', function () {
restrict: 'E', restrict: 'E',
controller: "CRUDAddEditCtrl", controller: "CRUDAddEditCtrl",
replace: true, replace: true,
link: function($scope){ link: function ($scope) {
$scope.triggerSubmit = function() { $scope.triggerSubmit = function () {
// todo: double make it but single not solve this! // todo: double make it but single not solve this!
angular.element($('#submitbutton')).triggerHandler('click'); angular.element($('#submitbutton')).triggerHandler('click');
angular.element($('#submitbutton')).triggerHandler('click'); angular.element($('#submitbutton')).triggerHandler('click');
...@@ -64,31 +64,41 @@ app.directive('sidebar', ['$location', function () { ...@@ -64,31 +64,41 @@ app.directive('sidebar', ['$location', function () {
replace: true, replace: true,
scope: {}, scope: {},
controller: function ($scope, $rootScope, $http, RESTURL, $location, $timeout) { controller: function ($scope, $rootScope, $http, RESTURL, $location, $timeout) {
$rootScope.$watch(
$rootScope.loggedInUser, function(){
$http.post(RESTURL.url + 'crud/').success(function (data) { $http.post(RESTURL.url + 'crud/').success(function (data) {
$scope.menuItems = data.app_models; $scope.allMenuItems = data.app_models;
$scope.menuItems = []; // angular.copy($scope.allMenuItems);
// at start define breadcrumblinks for breadcrumb // at start define breadcrumblinks for breadcrumb
angular.forEach(data.app_models, function (value, key) { angular.forEach(data.app_models, function (value, key) {
angular.forEach(value[1], function (v, k) { angular.forEach(value[1], function (v, k) {
if(v[1] == $location.path().split('/')[1]){ if (v[1] == $location.path().split('/')[2]) {
$rootScope.breadcrumblinks = [value[0], v[0]]; $rootScope.breadcrumblinks = [value[0], v[0]];
$scope.menuItems = [$scope.allMenuItems[key]];
} else { } else {
$rootScope.breadcrumblinks = ['Panel']; $rootScope.breadcrumblinks = ['Panel'];
} }
}); });
}); });
}); });
$rootScope.$watch(function($rootScope) {return $rootScope.section},
function(newindex, oldindex){
if(newindex > -1){
$scope.menuItems = [$scope.allMenuItems[newindex]];
$scope.collapseVar = 1;
$timeout(function () {
$('#side-menu').metisMenu();
});
}
} }
); );
// todo: change to $watch to init // todo: change to $watch to init
$timeout(function(){ //$timeout(function () {
$('#side-menu').metisMenu(); // $('#side-menu').metisMenu();
}, 2000); //}, 2000);
$scope.selectedMenu = $location.path(); $scope.selectedMenu = $location.path();
$scope.collapseVar = 1; $scope.collapseVar = 0;
$scope.multiCollapseVar = 0; $scope.multiCollapseVar = 0;
$scope.check = function (x) { $scope.check = function (x) {
...@@ -101,8 +111,10 @@ app.directive('sidebar', ['$location', function () { ...@@ -101,8 +111,10 @@ app.directive('sidebar', ['$location', function () {
}; };
// breadcrumb function changes breadcrumb items and itemlist must be list // breadcrumb function changes breadcrumb items and itemlist must be list
$scope.breadcrumb = function(itemlist){ $scope.breadcrumb = function (itemlist) {
$rootScope.breadcrumblinks = itemlist; $rootScope.breadcrumblinks = itemlist;
// showSaveButton is used for to show or not to show save button on top of the page
$rootScope.showSaveButton = false;
}; };
$scope.multiCheck = function (y) { $scope.multiCheck = function (y) {
......
<div class="manager-view-header container-fluid" ng-class="{hidden: $root.loggedInUser != true}"> <div class="manager-view-header container-fluid" ng-class="{hidden: $root.loggedInUser != true}">
<div class="clearfix">
<header-breadcrumb></header-breadcrumb> <header-breadcrumb></header-breadcrumb>
<div id="header-buttons"> <loaderdiv><div></div></loaderdiv>
<!--<div class="loader">Loading...</div>-->
</div>
<div id="header-buttons" ng-class="{hidden: $root.showSaveButton != true}">
<button type="button" class="btn btn-primary" ng-click="triggerSubmit()">Kaydet</button> <button type="button" class="btn btn-primary" ng-click="triggerSubmit()">Kaydet</button>
<!--<button type="button" class="btn btn-warning">Düzenle</button>--> <!--<button type="button" class="btn btn-warning">Düzenle</button>-->
<!--<button type="button" class="btn btn-danger">İptal</button>--> <!--<button type="button" class="btn btn-danger">İptal</button>-->
......
...@@ -13,7 +13,8 @@ ...@@ -13,7 +13,8 @@
<a href="" ng-click="check($index+1)"><i class="fa fa-wrench fa-fw"></i> {{ item[0] }}<span <a href="" ng-click="check($index+1)"><i class="fa fa-wrench fa-fw"></i> {{ item[0] }}<span
class="fa arrow"></span></a> class="fa arrow"></span></a>
<ul class="nav nav-second-level"> <ul class="nav nav-second-level">
<li ng-repeat="(k, v) in item[1]"><a href="#/{{v[1]}}" ng-click="breadcrumb([item[0], v[0]])">{{v[1]}}</a></li> <li ng-repeat="(k, v) in item[1]"><a href="#/crud/{{v[1]}}"
ng-click="breadcrumb([item[0], v[0]])">{{v[0]}}</a></li>
</ul> </ul>
<!-- /.nav-second-level --> <!-- /.nav-second-level -->
</li> </li>
...@@ -21,6 +22,6 @@ ...@@ -21,6 +22,6 @@
</div> </div>
<!-- /.sidebar-collapse --> <!-- /.sidebar-collapse -->
<footer> <footer>
<span>v <app-version></app-version> ® ZetaOps</span> <span>v <app-version></app-version> &copy; ZetaOps</span>
</footer> </footer>
</div> </div>
...@@ -7,7 +7,7 @@ ...@@ -7,7 +7,7 @@
var form_generator = angular.module('formService', ['general']); var form_generator = angular.module('formService', ['general']);
form_generator.factory('Generator', function ($http, $q, $log, $location, $modal, $timeout, RESTURL, FormDiff) { form_generator.factory('Generator', function ($http, $q, $log, $location, $modal, $timeout, RESTURL, FormDiff, $rootScope) {
var generator = {}; var generator = {};
generator.makeUrl = function (url) { generator.makeUrl = function (url) {
return RESTURL.url + url; return RESTURL.url + url;
...@@ -37,7 +37,11 @@ form_generator.factory('Generator', function ($http, $q, $log, $location, $modal ...@@ -37,7 +37,11 @@ form_generator.factory('Generator', function ($http, $q, $log, $location, $modal
scope.object_id = scope.form_params['object_id']; scope.object_id = scope.form_params['object_id'];
return generator.group(scope); // showSaveButton is used for to show or not to show save button on top of the page
// here change to true because the view retrieves form from api
$rootScope.showSaveButton = true;
return scope;
}; };
generator.group = function (formObject) { generator.group = function (formObject) {
return formObject; return formObject;
...@@ -54,16 +58,18 @@ form_generator.factory('Generator', function ($http, $q, $log, $location, $modal ...@@ -54,16 +58,18 @@ form_generator.factory('Generator', function ($http, $q, $log, $location, $modal
scope.model[v] = generator.dateformatter(scope.model[v]); scope.model[v] = generator.dateformatter(scope.model[v]);
// seek for datepicker field and initialize datepicker // seek for datepicker field and initialize datepicker
scope.$watch($('#' + v), function () { //scope.$watch($('#' + v), function () {
$timeout(function () { $timeout(function () {
jQuery('#' + v).datepicker({ jQuery('#' + v).datepicker({
changeMonth: true,
changeYear: true,
dateFormat: "dd.mm.yy", dateFormat: "dd.mm.yy",
onSelect: function (date) { onSelect: function (date) {
scope.model[v] = date; scope.model[v] = date;
} }
}); });
}); });
}); //});
} }
if (k.type == 'int' || k.type == 'float') { if (k.type == 'int' || k.type == 'float') {
...@@ -195,6 +201,10 @@ form_generator.factory('Generator', function ($http, $q, $log, $location, $modal ...@@ -195,6 +201,10 @@ form_generator.factory('Generator', function ($http, $q, $log, $location, $modal
var re = /^([\w-]+(?:\.[\w-]+)*)@((?:[\w-]+\.)*\w[\w-]{0,66})\.([a-z]{2,6}(?:\.[a-z]{2})?)$/i; var re = /^([\w-]+(?:\.[\w-]+)*)@((?:[\w-]+\.)*\w[\w-]{0,66})\.([a-z]{2,6}(?:\.[a-z]{2})?)$/i;
return re.test(email); return re.test(email);
}; };
generator.isValidTCNo = function(tcno) {
var re = /^([1-9]{1}[0-9]{9}[0,2,4,6,8]{1})$/i;
return re.test(tcno);
};
generator.asyncValidators = { generator.asyncValidators = {
emailNotValid: function (value) { emailNotValid: function (value) {
var deferred = $q.defer(); var deferred = $q.defer();
...@@ -206,6 +216,17 @@ form_generator.factory('Generator', function ($http, $q, $log, $location, $modal ...@@ -206,6 +216,17 @@ form_generator.factory('Generator', function ($http, $q, $log, $location, $modal
} }
}, 500); }, 500);
return deferred.promise; return deferred.promise;
},
tcNoNotValid: function (value) {
var deferred = $q.defer();
$timeout(function () {
if (generator.isValidTCNo(value)) {
deferred.resolve();
} else {
deferred.reject();
}
}, 500);
return deferred.promise;
} }
}; };
generator.submit = function ($scope) { generator.submit = function ($scope) {
...@@ -229,8 +250,6 @@ form_generator.factory('Generator', function ($http, $q, $log, $location, $modal ...@@ -229,8 +250,6 @@ form_generator.factory('Generator', function ($http, $q, $log, $location, $modal
//data.form = get_diff; //data.form = get_diff;
} }
debugger;
return $http.post(generator.makeUrl($scope.url), data); return $http.post(generator.makeUrl($scope.url), data);
//.success(function () { //.success(function () {
// //
...@@ -263,6 +282,7 @@ form_generator.controller('ModalCtrl', function ($scope, $modalInstance, Generat ...@@ -263,6 +282,7 @@ form_generator.controller('ModalCtrl', function ($scope, $modalInstance, Generat
$scope.$broadcast('schemaFormValidate'); $scope.$broadcast('schemaFormValidate');
console.log(form.$valid); console.log(form.$valid);
//if(form.$valid){ //if(form.$valid){
// todo: change to if form valid
if (1 == 1) { if (1 == 1) {
// send form to modalinstance result function // send form to modalinstance result function
$modalInstance.close($scope); $modalInstance.close($scope);
...@@ -360,8 +380,7 @@ form_generator.directive('addModalForLinkedModel', function ($modal, Generator) ...@@ -360,8 +380,7 @@ form_generator.directive('addModalForLinkedModel', function ($modal, Generator)
}); });
modalInstance.result.then(function (childmodel, key) { modalInstance.result.then(function (childmodel, key) {
// todo: run form validator here Generator.submit(childmodel);
Generator.submit(scope);
}); });
}); });
} }
...@@ -374,6 +393,8 @@ form_generator.directive('addModalForLinkedModel', function ($modal, Generator) ...@@ -374,6 +393,8 @@ form_generator.directive('addModalForLinkedModel', function ($modal, Generator)
* @return: openmodal directive * @return: openmodal directive
*/ */
// todo: useless modal check if any use cases?? and delete if useless
form_generator.directive('editModalForLinkedModel', function ($modal, Generator) { form_generator.directive('editModalForLinkedModel', function ($modal, Generator) {
return { return {
link: function (scope, element) { link: function (scope, element) {
...@@ -394,8 +415,7 @@ form_generator.directive('editModalForLinkedModel', function ($modal, Generator) ...@@ -394,8 +415,7 @@ form_generator.directive('editModalForLinkedModel', function ($modal, Generator)
}); });
modalInstance.result.then(function (childmodel, key) { modalInstance.result.then(function (childmodel, key) {
// todo: run form validator here Generator.submit(childmodel);
Generator.submit(scope);
}); });
}); });
} }
......
...@@ -135,5 +135,58 @@ describe('form service module', function () { ...@@ -135,5 +135,58 @@ describe('form service module', function () {
}) })
); );
it('should validate email',
inject(function(Generator){
var validEmails = [
'test@test.com',
'test@test.co.uk',
'test734ltylytkliytkryety9ef@jb-fe.com'
];
var invalidEmails = [
'test@testcom',
'test@ test.co.uk',
'ghgf@fe.com.co.',
'tes@t@test.com',
''
];
for (var i in validEmails) {
var valid = Generator.isValidEmail(validEmails[i]);
expect(valid).toBeTruthy();
}
for (var i in invalidEmails) {
var valid = Generator.isValidEmail(invalidEmails[i]);
expect(valid).toBeFalsy();
}
})
);
it('should validate tcNo',
inject(function(Generator){
var validTCNos = [
'12345678902',
'18307990654'
];
var invalidTCNos = [
'00000000000',
'00000000002',
'12345678901',
'1234567892',
''
];
for (var i in validTCNos) {
var valid = Generator.isValidTCNo(validTCNos[i]);
expect(valid).toBeTruthy();
}
for (var i in invalidTCNos) {
var valid = Generator.isValidTCNo(invalidTCNos[i]);
expect(valid).toBeFalsy();
}
})
);
}); });
}); });
\ No newline at end of file
...@@ -56,6 +56,8 @@ app.config(['$httpProvider', function ($httpProvider) { ...@@ -56,6 +56,8 @@ app.config(['$httpProvider', function ($httpProvider) {
} }
if(rejection.status === 403) { if(rejection.status === 403) {
if (rejection.data.is_login == true){ if (rejection.data.is_login == true){
$rootScope.loggedInUser = true;
console.log('user logged in');
if($location.path()==="/login"){ if($location.path()==="/login"){
$location.path("/dashboard"); $location.path("/dashboard");
} }
......
This diff is collapsed.
This diff is collapsed.
...@@ -62,6 +62,7 @@ a:hover { ...@@ -62,6 +62,7 @@ a:hover {
background-color:transparent; background-color:transparent;
padding:0; padding:0;
font-size:18px; font-size:18px;
float:left;
} }
/** BRAND **/ /** BRAND **/
...@@ -98,6 +99,56 @@ button.brand-bg:hover { ...@@ -98,6 +99,56 @@ button.brand-bg:hover {
/** END OF BRAND **/ /** END OF BRAND **/
/** LOADER **/
.loader {
font-size: 2px;
position: relative;
text-indent: -9999em;
border-top: 1.1em solid rgba(166, 12, 41, 0.2);
border-right: 1.1em solid rgba(166, 12, 41, 0.2);
border-bottom: 1.1em solid rgba(166, 12, 41, 0.2);
border-left: 1.1em solid #A61229;
-webkit-transform: translateZ(0);
-ms-transform: translateZ(0);
transform: translateZ(0);
-webkit-animation: load8 1.1s infinite linear;
animation: load8 1.1s infinite linear;
float: left;
margin-left: 10px;
margin-top: 3px;
}
.loader,
.loader:after {
border-radius: 50%;
width: 10em;
height: 10em;
}
@-webkit-keyframes load8 {
0% {
-webkit-transform: rotate(0deg);
transform: rotate(0deg);
}
100% {
-webkit-transform: rotate(360deg);
transform: rotate(360deg);
}
}
@keyframes load8 {
0% {
-webkit-transform: rotate(0deg);
transform: rotate(0deg);
}
100% {
-webkit-transform: rotate(360deg);
transform: rotate(360deg);
}
}
/** END OF LOADER **/
/* Everything but the jumbotron gets side spacing for mobile first views */ /* Everything but the jumbotron gets side spacing for mobile first views */
.header, .header,
.marketing, .marketing,
...@@ -271,6 +322,7 @@ select { ...@@ -271,6 +322,7 @@ select {
flex-shrink: 0; flex-shrink: 0;
position:relative; position:relative;
z-index:1; z-index:1;
height: 98px;
} }
.manager-view-content { .manager-view-content {
...@@ -1027,6 +1079,15 @@ table.dataTable thead .sorting:after { ...@@ -1027,6 +1079,15 @@ table.dataTable thead .sorting:after {
body { body {
overflow:auto; overflow:auto;
} }
.sidebar footer {
text-align: center;
font-family: 'robotomedium';
background-color: #F1F1F1;
padding: 15px;
color: #A7A7A7;
border-bottom: 1px solid #ccc;
}
} }
...@@ -1104,6 +1165,19 @@ table.dataTable thead .sorting:after { ...@@ -1104,6 +1165,19 @@ table.dataTable thead .sorting:after {
top:auto; top:auto;
} }
/* loading bar */
.loadingbarfullsize{
z-index:10001;
position:fixed;
width:100%;
height:100%;
top: 0;
left: 0;
background: url('/img/loading_spinner.gif') rgba(0, 0, 3, 0.2) no-repeat center center;
background-size: 100px 100px;
}
/* /*
* metismenu - v1.1.3 * metismenu - v1.1.3
* Easy menu jQuery plugin for Twitter Bootstrap 3 * Easy menu jQuery plugin for Twitter Bootstrap 3
......
...@@ -200,13 +200,16 @@ angular.module("components/dashboard/dashboard.html", []).run(["$templateCache", ...@@ -200,13 +200,16 @@ angular.module("components/dashboard/dashboard.html", []).run(["$templateCache",
" <div class=\"row\">\n" + " <div class=\"row\">\n" +
" <div class=\"major-buttons\">\n" + " <div class=\"major-buttons\">\n" +
" <div class=\"col-md-4\">\n" + " <div class=\"col-md-4\">\n" +
" <a href=\"\"><button type=\"button\" class=\"btn btn-personnel brand-bg\"><i class=\"fa fa-user\"></i> PERSONEL İŞLERİ</button></a>\n" + " <a href=\"\"><button type=\"button\" class=\"btn btn-personnel brand-bg\" ng-click=\"section(2)\"><i class=\"fa fa-user\"></i>\n" +
" PERSONEL İŞLERİ</button></a>\n" +
" </div>\n" + " </div>\n" +
" <div class=\"col-md-4\">\n" + " <div class=\"col-md-4\">\n" +
" <a href=\"\"><button type=\"button\" class=\"btn btn-student brand-bg\"><i class=\"fa fa-graduation-cap\"></i> ÖĞRENCİ İŞLERİ</button></a>\n" + " <a href=\"\"><button type=\"button\" class=\"btn btn-student brand-bg\" ng-click=\"section(0)\"><i\n" +
" class=\"fa fa-graduation-cap\"></i> ÖĞRENCİ İŞLERİ</button></a>\n" +
" </div>\n" + " </div>\n" +
" <div class=\"col-md-4\">\n" + " <div class=\"col-md-4\">\n" +
" <a href=\"\"><button type=\"button\" class=\"btn btn-system brand-bg\"><i class=\"fa fa-gears\"></i> SİSTEM</button></a>\n" + " <a href=\"\"><button type=\"button\" class=\"btn btn-system brand-bg\" ng-click=\"section(3)\"><i class=\"fa fa-gears\"></i>\n" +
" SİSTEM</button></a>\n" +
" </div>\n" + " </div>\n" +
" </div>\n" + " </div>\n" +
" </div>\n" + " </div>\n" +
...@@ -863,8 +866,12 @@ angular.module("shared/templates/directives/header-notification.html", []).run([ ...@@ -863,8 +866,12 @@ angular.module("shared/templates/directives/header-notification.html", []).run([
angular.module("shared/templates/directives/header-sub-menu.html", []).run(["$templateCache", function($templateCache) { angular.module("shared/templates/directives/header-sub-menu.html", []).run(["$templateCache", function($templateCache) {
$templateCache.put("shared/templates/directives/header-sub-menu.html", $templateCache.put("shared/templates/directives/header-sub-menu.html",
"<div class=\"manager-view-header container-fluid\" ng-class=\"{hidden: $root.loggedInUser != true}\">\n" + "<div class=\"manager-view-header container-fluid\" ng-class=\"{hidden: $root.loggedInUser != true}\">\n" +
" <div class=\"clearfix\">\n" +
" <header-breadcrumb></header-breadcrumb>\n" + " <header-breadcrumb></header-breadcrumb>\n" +
" <div id=\"header-buttons\">\n" + " <loaderdiv><div></div></loaderdiv>\n" +
" <!--<div class=\"loader\">Loading...</div>-->\n" +
" </div>\n" +
" <div id=\"header-buttons\" ng-class=\"{hidden: $root.showSaveButton != true}\">\n" +
" <button type=\"button\" class=\"btn btn-primary\" ng-click=\"triggerSubmit()\">Kaydet</button>\n" + " <button type=\"button\" class=\"btn btn-primary\" ng-click=\"triggerSubmit()\">Kaydet</button>\n" +
" <!--<button type=\"button\" class=\"btn btn-warning\">Düzenle</button>-->\n" + " <!--<button type=\"button\" class=\"btn btn-warning\">Düzenle</button>-->\n" +
" <!--<button type=\"button\" class=\"btn btn-danger\">İptal</button>-->\n" + " <!--<button type=\"button\" class=\"btn btn-danger\">İptal</button>-->\n" +
...@@ -949,7 +956,7 @@ angular.module("shared/templates/directives/sidebar.html", []).run(["$templateCa ...@@ -949,7 +956,7 @@ angular.module("shared/templates/directives/sidebar.html", []).run(["$templateCa
" <a href=\"\" ng-click=\"check($index+1)\"><i class=\"fa fa-wrench fa-fw\"></i> {{ item[0] }}<span\n" + " <a href=\"\" ng-click=\"check($index+1)\"><i class=\"fa fa-wrench fa-fw\"></i> {{ item[0] }}<span\n" +
" class=\"fa arrow\"></span></a>\n" + " class=\"fa arrow\"></span></a>\n" +
" <ul class=\"nav nav-second-level\">\n" + " <ul class=\"nav nav-second-level\">\n" +
" <li ng-repeat=\"(k, v) in item[1]\"><a href=\"#/{{v[1]}}\" ng-click=\"breadcrumb([item[0], v[0]])\">{{v[1]}}</a></li>\n" + " <li ng-repeat=\"(k, v) in item[1]\"><a href=\"#/{{v[1]}}\" ng-click=\"breadcrumb([item[0], v[0]])\">{{v[0]}}</a></li>\n" +
" </ul>\n" + " </ul>\n" +
" <!-- /.nav-second-level -->\n" + " <!-- /.nav-second-level -->\n" +
" </li>\n" + " </li>\n" +
...@@ -957,7 +964,7 @@ angular.module("shared/templates/directives/sidebar.html", []).run(["$templateCa ...@@ -957,7 +964,7 @@ angular.module("shared/templates/directives/sidebar.html", []).run(["$templateCa
" </div>\n" + " </div>\n" +
" <!-- /.sidebar-collapse -->\n" + " <!-- /.sidebar-collapse -->\n" +
" <footer>\n" + " <footer>\n" +
" <span>v <app-version></app-version> ® ZetaOps</span>\n" + " <span>v <app-version></app-version> &copy; ZetaOps</span>\n" +
" </footer>\n" + " </footer>\n" +
"</div>\n" + "</div>\n" +
""); "");
......
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