'use strict';
/**
* controllers for ng-table
* Simple table with sorting and filtering on AngularJS
*/
app.controller('dashboardCtrl', ["$scope","$rootScope", "toaster", "$filter", "ngTableParams", "API_POINTS", "$localStorage", "$http", "$state", function ($scope,$rootScope, toaster, $filter, ngTableParams, apiPoint, $localStorage, $http, $state) {
/*
* used to get dash board call track details
* this method called from view ng-init directive
* created by kms
* */
$scope.initCallTracking = function () {
$rootScope.pendingFolloupDetails = [];
var getCallTrack = {
method: 'POST',
url: apiPoint.url + 'getDashboardCallTrack/',
headers: {
'Content-Type': 'application/json'
},
data: {
requestedBy: JSON.parse(localStorage.getItem('localObj')).localUserID,
branchId: JSON.parse(localStorage.getItem('localObj')).localBranchID,
requestedDept: JSON.parse(localStorage.getItem('localObj')).localType
}
};
$http(getCallTrack).then(function (response) {
/* if(response.data.status == 200 && response.data.followupStatus){
$scope.currentDate = new Date().getFullYear() + '-' + ('0' + (new Date().getMonth() + 1)).slice(-2) + '-' + ('0' + new Date().getDate()).slice(-2);
$scope.getFollowupDetails = response.data.details;
angular.forEach($scope.getFollowupDetails, function (value, key) {
if (($scope.currentDate) < (value[0].FollowupOn)) {
$rootScope.pendingFolloupDetails.push(value[0]);
console.log($rootScope.pendingFolloupDetails);
}
});
}
else{
}*/
if (response.data.status == 200) {
if (response.data.todayStatus) {
$scope.todayFolloupDetails = response.data.todayFolloupDetails.trackingDetails;
$scope.emptyDataToday = false;
}
else {
$scope.todayFolloupDetails = "";
$scope.emptyDataToday = true;
}
if (response.data.todayPendingStatus) {
// $scope.currentDate = new Date().getFullYear() + '-' + ('0' + (new Date().getMonth() + 1)).slice(-2) + '-' + ('0' + new Date().getDate()).slice(-2);
// $scope.currentDate = new Date().getFullYear() + '-' + ('0' + (new Date().getMonth() + 1)).slice(-2) + '-' + ('0' + new Date().getDate()).slice(-2);
$scope.currentDate=$filter('date')(new Date(), 'yyyy-MM-dd');
$scope.fetchFolloupDetails = response.data.PendingFolloupDetails.trackingDetails;
angular.forEach($scope.fetchFolloupDetails, function (value, key) {
var getDay = value.FollowupOn.substring(0, 2);
var getMonth = value.FollowupOn.substring(3, 5);
var getYear = value.FollowupOn.substring(6, 10);
// var dbFollowDate = getYear+'-'+getMonth+'-'+getDay;
$scope.dbFollowDate = getYear+'-'+getMonth+'-'+getDay;
if (($scope.currentDate) > ($scope.dbFollowDate) && (value.statusName!='CLOSE')) {
$rootScope.pendingFolloupDetails.push(value);
}
});
if($rootScope.pendingFolloupDetails.length==0){
$scope.emptyDataPending = true;
}
else{
$scope.emptyDataPending = false;
}
}
else {
$scope.pendingFolloupDetails = "";
$scope.emptyDataPending = true;
}
if (response.data.todayLeadStatus) {
$scope.leadDetails = response.data.todayLeadDetails.trackingDetails;
$scope.emptyDataLead = false;
}
else {
$scope.leadDetails = "";
$scope.emptyDataLead = true;
}
} else {
$scope.emptyDataToday = true;
$scope.emptyDataPending = true;
}
});
};
}]);
app.controller('OnotherCtrl', ["$scope", "toaster", "$filter", "$http", "API_POINTS", "$state", '$cookies', 'ipCookie', function ($scope, toaster, $filter, $http, apiPoint, $state, $cookies, ipCookie) {
// get local cliend details
var localDetail = JSON.parse(localStorage.getItem('localObj'));
var localDetails = ipCookie('cookiechk');
$scope.init = function () {
$scope.this_Student = 0;
$scope.this_Staff = 0;
$scope.this_TotalUser = 0;
$scope.getTotalUsers();
}
// get Total Number of users in this application
$scope.getTotalUsers = function () {
var req = {
method: 'POST',
url: apiPoint.url + 'getTotalUsers/',
headers: {
'Content-Type': 'application/json'
},
data: {
data: localDetails
}
};
$http(req).then(function (response) {
if (response.data) {
// $scope.editBranchId = id;
$scope.this_Student = response.data.total_student;
$scope.this_Staff = response.data.total_staff;
$scope.this_TotalUser = $scope.this_Staff + $scope.this_Student;
// alert($scope.this_TotalUser);
$scope.data = [
{
value: $scope.this_Student,
color: '#46BFBD',
highlight: '#5AD3D1',
label: 'Student'
},
{
value: $scope.this_Staff,
color: '#FDB45C',
highlight: '#FFC870',
label: 'Staff'
}
];
$scope.total = $scope.this_TotalUser;
} else {
// $scope.this_Student = response.total_student;
// $scope.this_Staff = response.total_staff;
$scope.data = [
{
value: $scope.this_Student,
color: '#F7464A',
highlight: '#5AD3D1',
label: 'Student'
},
{
value: $scope.this_Staff,
color: '#FDB45C',
highlight: '#FFC870',
label: 'Staff'
}
];
$scope.this_TotalUser = 0;
$scope.total = $scope.this_TotalUser;
}
});
}
// Chart.js Data
// Chart.js Options
$scope.options = {
// Sets the chart to be responsive
responsive: false,
//Boolean - Whether we should show a stroke on each segment
segmentShowStroke: true,
//String - The colour of each segment stroke
segmentStrokeColor: '#fff',
//Number - The width of each segment stroke
segmentStrokeWidth: 2,
//Number - The percentage of the chart that we cut out of the middle
percentageInnerCutout: 50, // This is 0 for Pie charts
//Number - Amount of animation steps
animationSteps: 100,
//String - Animation easing effect
animationEasing: 'easeOutBounce',
//Boolean - Whether we animate the rotation of the Doughnut
animateRotate: true,
//Boolean - Whether we animate scaling the Doughnut from the centre
animateScale: false,
//String - A legend template
legendTemplate: '
<% for (var i=0; i- <%if(segments[i].label){%><%=segments[i].label%><%}%>
<%}%>
'
};
}]);
/*Header Fixed */
app.directive('fixedHeader', function($timeout){
return {
restrict: 'A',
link: link
};
function link($scope, $elem, $attrs, $ctrl) {
var elem = $elem[0];
// wait for data to load and then transform the table
$scope.$watch(tableDataLoaded, function(isTableDataLoaded) {
if (isTableDataLoaded) {
transformTable();
}
});
function tableDataLoaded() {
// first cell in the tbody exists when data is loaded but doesn't have a width
// until after the table is transformed
var firstCell = elem.querySelector('tbody tr:first-child td:first-child');
return firstCell && !firstCell.style.width;
}
function transformTable() {
// reset display styles so column widths are correct when measured below
angular.element(elem.querySelectorAll('thead, tbody')).css('display', '');
// wrap in $timeout to give table a chance to finish rendering
$timeout(function () {
// set widths of columns
angular.forEach(elem.querySelectorAll('tr:first-child th'), function (thElem, i) {
var tdElems = elem.querySelector('tbody tr:first-child td:nth-child(' + (i + 1) + ')');
var tfElems = elem.querySelector('tfoot tr:first-child td:nth-child(' + (i + 1) + ')');
var columnWidth = tdElems ? tdElems.offsetWidth : thElem.offsetWidth;
if (tdElems) {
tdElems.style.width = columnWidth + '150px';
}
if (thElem) {
thElem.style.width = columnWidth + '150px';
}
});
// set css styles on thead and tbody
angular.element(elem.querySelectorAll('thead, tfoot')).css('display', 'block');
angular.element(elem.querySelectorAll('tbody')).css({
'display': 'block',
'height': $attrs.tableHeight || 'inherit',
'overflow': 'auto'
});
// reduce width of last column by width of scrollbar
var tbody = elem.querySelector('tbody');
var scrollBarWidth = tbody.offsetWidth - tbody.clientWidth;
if (scrollBarWidth > 0) {
// for some reason trimming the width by 2px lines everything up better
scrollBarWidth -= 2;
var lastColumn = elem.querySelector('tbody tr:first-child td:last-child');
lastColumn.style.width = (lastColumn.offsetWidth - scrollBarWidth) + 'px';
}
});
}
}
});
app.filter('unique', function() {
return function(collection, primaryKey, secondaryKey) { //optional secondary key
var output = [],
keys = [];
angular.forEach(collection, function(item) {
var key;
secondaryKey === undefined ? key = item[primaryKey] : key = item[primaryKey][secondaryKey];
if(keys.indexOf(key) === -1) {
keys.push(key);
output.push(item);
}
});
return output;
};
});
/*modal controller
* */
app.controller('studentModalDemoCtrl', ["$scope", "$rootScope", "$modal", "$log", "API_POINTS", "$http", function ($scope, $rootScope, $modal, $log,apiPoint,$http) {
//Tooltip for print button
$scope.dynamicTooltip = 'Student View';
// $scope.items = ['item1', 'item2', 'item3'];
$scope.open = function (studentDetails) {
// get student view details
var getcourse = {
method: 'POST',
url: apiPoint.url + 'getStudentBasicInfo/',
headers: {
'Content-Type': 'application/json'
},
data: {
requestedBy :studentDetails.MobileNumber,
requestedFrom: 3
}
};
$http(getcourse).then(function (response) {
if (response.data.status == 200 && response.data.studentStatus== true) {
$scope.courseEditLoading = false;
// $scope.studentDetails = response.data.studentDetails;
$scope.studentDetails = response.data;
// $scope.courseDetails = response.data.courseDetails;
var modalInstance = $modal.open({
templateUrl: 'assets/views/student/studentDetailsModal.html',
controller: 'ModalInstanceCtrl',
// size: size,
resolve: {
items: function () {
return $scope.studentDetails;
}
}
});
modalInstance.result.then(function (selectedItem) {
$scope.selected = selectedItem;
}, function () {
$log.info('Modal dismissed at: ' + new Date());
});
} else {
swal("Failed!", "This student is not registerd", "warning");
$scope.courseEditLoading = false;
$scope.studentDetails = "";
$scope.courseDetails = "";
}
});
};
$scope.open1 = function (values,type) {
var modalInstance1 = $modal.open({
templateUrl: 'assets/views/student/studentPaymentModal.html',
controller: 'ModalInstanceCtrl1',
// size: size,
resolve: {
items1: function () {
var myvalues =
{
"values":values,
"type":type
};
return myvalues;
}
}
});
modalInstance1.result.then(function (selectedItem) {
$scope.selected = selectedItem;
}, function () {
$log.info('Modal dismissed at: ' + new Date());
});
};
$scope.printStudentDetails = function (details) {
$rootScope.pdfItems = details;
var printInstance = $modal.open({
templateUrl: 'assets/views/student/studentPdf.html',
controller: 'studentModalDemoCtrl',
});
};
// generate pdf for student view
$scope.export = function(getName) {
kendo.drawing.drawDOM($("#exportthis")).then(function(group) {
kendo.drawing.pdf.saveAs(group, getName+".pdf");
});
}
}]);
// Please note that $modalInstance represents a modal window (instance) dependency.
// It is not the same as the $modal service used above.
app.controller('ModalInstanceCtrl', ["$scope", "$modalInstance", "items","WordsService", function ($scope, $modalInstance, items,WordsService) {
$scope.items = items;
$scope.selected = {
item: $scope.items[0]
};
$scope.ok = function () {
$modalInstance.close($scope.selected.item);
};
$scope.cancel = function () {
$modalInstance.dismiss('cancel');
};
}]);
app.controller('ModalInstanceCtrl1', ["$scope", "$modalInstance", "items1","WordsService", function ($scope, $modalInstance, items1,WordsService) {
$scope.items1 = items1.values;
$scope.selectedtype = items1.type;
$scope.ok = function () {
$modalInstance.close($scope.selected.item);
};
$scope.cancel = function () {
$modalInstance.dismiss('cancel');
};
}]);