EXAM ATTENDANCE MASTSER:Velz
This commit is contained in:
parent
cb1055d944
commit
809ed1a387
@ -158,7 +158,8 @@
|
||||
"MAIN": "HALL TICKET",
|
||||
"COURSESEMESTERMAPPING": "COURSE SEMESTER MAPPING",
|
||||
"BATCHSCHEDULE": "BATCH SCHEDULE",
|
||||
"GENERATEHALLTICKET": "GENERATE HALLTICKET"
|
||||
"GENERATEHALLTICKET": "GENERATE HALLTICKET",
|
||||
"EXAMATTENDANCE" : "EXAMINATION ATTENDANCE"
|
||||
},
|
||||
"reregistration":{
|
||||
"MAIN":"RE REGISTRATION",
|
||||
|
||||
@ -175,6 +175,8 @@ app.constant('JS_REQUIRES', {
|
||||
'generateHallTicketCtrl':'assets/js/controllers/generateHallTicketCtrl.js',
|
||||
// generate hall ticket
|
||||
'semcoursemapCtrl':'assets/js/controllers/semcoursemapCtrl.js',
|
||||
// exam attendance
|
||||
'examAttendanceCtrl':'assets/js/controllers/examAttendanceCtrl.js',
|
||||
|
||||
// batchshedule for hall ticket
|
||||
'schCtrl':'assets/js/controllers/schCtrl.js',
|
||||
|
||||
@ -666,6 +666,14 @@ app.config(['$stateProvider', '$urlRouterProvider', '$controllerProvider', '$com
|
||||
ncyBreadcrumb: {
|
||||
label: 'Generate HallTicket'
|
||||
}
|
||||
}).state('app.hallTicket.examAttendance', {
|
||||
url: '/examAttendance',
|
||||
templateUrl: "assets/views/hallticket/examAttendance.html",
|
||||
title: 'Exam Attendance',
|
||||
resolve: loadSequence('ladda', 'angular-ladda', 'examAttendanceCtrl','ngTable','ui.select','spin', 'ui.mask'),
|
||||
ncyBreadcrumb: {
|
||||
label: 'Exam Attendance'
|
||||
}
|
||||
}).state('app.reregistration', {
|
||||
url: '/Reregistration',
|
||||
template: '<div ui-view class="fade-in-up"> <div style="margin: auto; width: 50%;padding: 10px;"> REREGISTRATION</div> </div>',
|
||||
|
||||
958
Apollo/assets/js/controllers/examAttendanceCtrl.js
Normal file
958
Apollo/assets/js/controllers/examAttendanceCtrl.js
Normal file
@ -0,0 +1,958 @@
|
||||
'use strict';
|
||||
/**
|
||||
* controllers for ng-table
|
||||
* Simple table with sorting and filtering on AngularJS
|
||||
*/
|
||||
app.controller('examAttendanceCtrl', ["$scope","$rootScope","toaster", "$filter", "ngTableParams", "API_POINTS", "$localStorage", "$http", "$state","$modal","$log", function ($scope,$rootScope,toaster, $filter, ngTableParams, apiPoint, $localStorage, $http, $state,$modal,$log) {
|
||||
$scope.myModel = {
|
||||
"universityName":"",
|
||||
"courseName":"",
|
||||
"batchName":""
|
||||
};
|
||||
|
||||
$scope.pdfModel = {
|
||||
"universityDetails":"",
|
||||
"studentDetails":"",
|
||||
"batchDetails":"",
|
||||
"courseDetails":"",
|
||||
"centerDetails":"",
|
||||
"semDataType":""
|
||||
};
|
||||
|
||||
$rootScope.userType = JSON.parse(localStorage.getItem('localObj')).localType;
|
||||
|
||||
|
||||
$scope.isTblShow = false;
|
||||
$scope.isLoader = false;
|
||||
$scope.isLoaderShow = false;
|
||||
$scope.isLoaderTxt = "Loading...";
|
||||
|
||||
// sorting function for table params
|
||||
$scope.sort = function(keyname){
|
||||
$scope.sortKey = keyname; //set the sortKey to the param passed
|
||||
$scope.reverse = !$scope.reverse; //if true make it false and vice versa
|
||||
}
|
||||
|
||||
/*
|
||||
* init function
|
||||
* created by kms
|
||||
* */
|
||||
$scope.init = function () {
|
||||
alert('Exam ATTENDANCE')
|
||||
var getUniv = {
|
||||
method: 'POST',
|
||||
url: apiPoint.url + 'getUniversityCourseDetails/',
|
||||
headers: {
|
||||
'Content-Type': 'application/json'
|
||||
},
|
||||
data: {
|
||||
requestedBy: JSON.parse(localStorage.getItem('localObj')).localUserID,
|
||||
branchId:JSON.parse(localStorage.getItem('localObj')).localBranchID
|
||||
}
|
||||
};
|
||||
$http(getUniv).then(function (response) {
|
||||
if (response.data.status==200 && response.data.universityStatus) {
|
||||
$scope.university = response.data.univerSityDetails;
|
||||
$scope.centers = response.data.centerDetails;
|
||||
//console.log( $scope.university);
|
||||
|
||||
} else {
|
||||
$scope.university = "";
|
||||
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
/*
|
||||
* get student details
|
||||
* created by kms
|
||||
* */
|
||||
$scope.studentInfo="";
|
||||
$scope.getStudentDetails = function (form,myModel) {
|
||||
|
||||
if(myModel.universityName == null || myModel.universityName == '' || myModel.universityName == undefined){
|
||||
swal('Select University','','warning');
|
||||
return false;
|
||||
}
|
||||
|
||||
if(myModel.courseName == '' || myModel.courseName == null || myModel.courseName == undefined){
|
||||
swal('Select Course','','warning');
|
||||
return false;
|
||||
}
|
||||
|
||||
if(myModel.batchName == null || myModel.batchName == '' || myModel.batchName == undefined){
|
||||
swal('Select Batch','','warning');
|
||||
return false;
|
||||
}
|
||||
|
||||
|
||||
var firstError = null;
|
||||
if (form.$invalid) {
|
||||
|
||||
var field = null, firstError = null;
|
||||
for (field in form) {
|
||||
if (field[0] != '$') {
|
||||
if (firstError === null && !form[field].$valid) {
|
||||
firstError = form[field].$name;
|
||||
}
|
||||
if (form[field].$pristine) {
|
||||
form[field].$dirty = true;
|
||||
}
|
||||
}
|
||||
}
|
||||
angular.element('.ng-invalid[name=' + firstError + ']').focus();
|
||||
// swal("The form cannot be submitted because it contains validation errors!", "Errors are marked with a red, dashed border!", "error");
|
||||
} else {
|
||||
$scope.selectedStudentsID = [];
|
||||
$scope.isLoaderShow = true;
|
||||
$scope.myModel.all = false;
|
||||
$scope.isTblShow = false;
|
||||
var university = myModel.universityName;
|
||||
var course = myModel.courseName;
|
||||
var batch = myModel.batchName;
|
||||
var getStudents = {
|
||||
method: 'POST',
|
||||
url: apiPoint.url + 'getStudentListForHallTicket/',
|
||||
headers: {
|
||||
'Content-Type': 'application/json'
|
||||
},
|
||||
data: {
|
||||
university: university,
|
||||
course:course,
|
||||
batch:batch,
|
||||
requestedtBy: JSON.parse(localStorage.getItem('localObj')).localUserID,
|
||||
branchId: JSON.parse(localStorage.getItem('localObj')).localBranchID,
|
||||
requestedDept: JSON.parse(localStorage.getItem('localObj')).localType,
|
||||
}
|
||||
};
|
||||
$http(getStudents).then(function (response) {
|
||||
if (response.data.status == 200 && response.data.studentStatus) {
|
||||
$scope.studentInfo = response.data.studentDetails;
|
||||
$scope.isLoaderShow = false;
|
||||
$scope.isTblShow = true;
|
||||
|
||||
|
||||
}
|
||||
else
|
||||
{
|
||||
$scope.studentInfo="";
|
||||
$scope.isLoaderShow = true;
|
||||
$scope.isTblShow = false;
|
||||
$scope.isLoaderTxt = "No Records Found";
|
||||
}
|
||||
},function(error){
|
||||
$scope.isLoaderShow = true;
|
||||
$scope.isTblShow = false;
|
||||
$scope.isLoaderTxt = "No Records Found";
|
||||
|
||||
});
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
$scope.selectedStudentsID = [];
|
||||
$scope.isClick = function(e)
|
||||
{
|
||||
|
||||
|
||||
var ide = e.target;
|
||||
var val = (ide.checked ? true : false);
|
||||
var sid = e.target.id;
|
||||
angular.forEach($scope.studentInfo,function(value,key){
|
||||
if(sid == value.StudentID)
|
||||
{
|
||||
sid = value;
|
||||
}
|
||||
});
|
||||
|
||||
var pos = $scope.selectedStudentsID.indexOf(sid);
|
||||
|
||||
if(val)
|
||||
{
|
||||
if( pos == -1)
|
||||
{
|
||||
|
||||
$scope.selectedStudentsID.push(sid);
|
||||
}
|
||||
|
||||
}
|
||||
else
|
||||
{
|
||||
|
||||
$scope.selectedStudentsID.splice(pos,1);
|
||||
}
|
||||
|
||||
|
||||
|
||||
}
|
||||
|
||||
|
||||
$scope.isCheckAll = function(e)
|
||||
{
|
||||
var val = (e.target.checked ? true : false);
|
||||
|
||||
if(val)
|
||||
{
|
||||
var len = $scope.studentInfo.length;
|
||||
var i = 0;
|
||||
for(i=0;i<len;i++)
|
||||
{
|
||||
if($scope.selectedStudentsID.indexOf($scope.studentInfo[i]) === -1)
|
||||
{
|
||||
$scope.selectedStudentsID.push($scope.studentInfo[i]);
|
||||
}
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
$scope.selectedStudentsID = [];
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
$scope.generateHallTicket = function()
|
||||
{
|
||||
if($scope.studentInfo.length == 0)
|
||||
|
||||
{
|
||||
swal('No Students Found','','warning');return false;
|
||||
}
|
||||
|
||||
if($scope.myModel.centerName == "" || $scope.myModel.centerName == undefined || $scope.myModel.centerName == null)
|
||||
{
|
||||
swal('Select Center Name','','warning');return false;
|
||||
}
|
||||
|
||||
if($scope.selectedStudentsID.length == 0)
|
||||
{
|
||||
swal('Select Student(s)','','warning');return false;
|
||||
}
|
||||
|
||||
|
||||
var university = $scope.myModel.universityName;
|
||||
var course = $scope.myModel.courseName;
|
||||
var batch = $scope.myModel.batchName;
|
||||
|
||||
var dataForHallTicket = {
|
||||
method: 'POST',
|
||||
url: apiPoint.url + 'getHallTicket/',
|
||||
headers: {
|
||||
'Content-Type': 'application/json'
|
||||
},
|
||||
data: {
|
||||
universityID : university,
|
||||
courseID :course,
|
||||
batchName:batch,
|
||||
StudentIDs:$scope.selectedStudentsID,
|
||||
centerName:$scope.myModel.centerName,
|
||||
branchId:JSON.parse(localStorage.getItem('localObj')).localBranchID,
|
||||
requestedBy: JSON.parse(localStorage.getItem('localObj')).localUserID
|
||||
}
|
||||
};
|
||||
$http(dataForHallTicket).then(function (response) {
|
||||
if (response.data.status==200 && response.data.hallTicketStatus) {
|
||||
|
||||
$scope.pdfModel.universityDetails = response.data.hallTicketData.UniversityDetails;
|
||||
$scope.pdfModel.studentDetails = response.data.hallTicketData.studentDetails;
|
||||
|
||||
$scope.pdfModel.batchDetails = $scope.selectedBatchName;
|
||||
$scope.pdfModel.courseDetails = $scope.selectedCourseName;
|
||||
$scope.pdfModel.centerDetails = $scope.myModel.centerName;
|
||||
$scope.pdfModel.semDataType =response.data.semDataType;
|
||||
|
||||
$scope.open($scope.pdfModel);
|
||||
}
|
||||
},function(error){ swal('No Records Found','',error); });
|
||||
}
|
||||
|
||||
//Below Functions defined for Hall Ticket generation
|
||||
|
||||
|
||||
$scope.FeesName="" ;
|
||||
$scope.open = function (PDFdata) {
|
||||
|
||||
|
||||
var modalInstance = $modal.open({
|
||||
templateUrl: 'assets/views/hallticket/hallTicketPDF.html',
|
||||
controller: 'HallTicketPDFCtrl',
|
||||
// size: size,
|
||||
resolve: {
|
||||
pdfitems: function () {
|
||||
//return $scope.FeesName;
|
||||
return PDFdata;
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
modalInstance.result.then(function (selectedItem) {
|
||||
$scope.selected = selectedItem;
|
||||
}, function () {
|
||||
$log.info('Modal dismissed at: ' + new Date());
|
||||
});
|
||||
};
|
||||
// }
|
||||
// generate pdf for student view
|
||||
|
||||
|
||||
$scope.captureCourseName = function()
|
||||
{
|
||||
|
||||
$scope.selectedCourseName = course.options[course.selectedIndex].text;
|
||||
};
|
||||
|
||||
$scope.captureBatchName = function()
|
||||
{
|
||||
|
||||
$scope.selectedBatchName = batch.options[batch.selectedIndex].text;
|
||||
};
|
||||
|
||||
|
||||
|
||||
}]);
|
||||
|
||||
|
||||
// Controller for Hallticket Modal PDF
|
||||
app.controller('examAttendancePDFCtrl', ["$scope", "$modalInstance", "pdfitems", function ($scope, $modalInstance, pdfitems) {
|
||||
|
||||
console.log('child');
|
||||
$scope.localPdfUniverityDetails = pdfitems.universityDetails;
|
||||
$scope.universityNamePDF = $scope.localPdfUniverityDetails[0].UniversityName;
|
||||
$scope.universityAddressPDF = $scope.localPdfUniverityDetails[0].Address;
|
||||
$scope.universityEmailPDF = $scope.localPdfUniverityDetails[0].EmailID;
|
||||
$scope.universityLogoPDF = $scope.localPdfUniverityDetails[0].ProfilePicPath;
|
||||
$scope.batchNamePDF = pdfitems.batchDetails;//.BatchName;
|
||||
$scope.courseNamePDF = pdfitems.courseDetails;//.CourseName;
|
||||
$scope.centerNamePDF = pdfitems.centerDetails.CenterName+''+ pdfitems.centerDetails.CenterAddress;
|
||||
$scope.semDataTypePDF = pdfitems.semDataType;
|
||||
|
||||
$scope.localPdfStudentDetails = pdfitems.studentDetails;
|
||||
|
||||
$scope.printStudentDetails = function(hallticket_type) {
|
||||
|
||||
|
||||
angular.forEach($scope.localPdfStudentDetails,function(value,key){
|
||||
|
||||
|
||||
|
||||
if(value.StudentID)
|
||||
{
|
||||
|
||||
if(hallticket_type == 'REG' || hallticket_type == 'LAT'){
|
||||
console.log('REGLAT');
|
||||
var semlength = value.FeeDetails.length;
|
||||
if(hallticket_type == 'REG' || hallticket_type == 'LAT')
|
||||
{
|
||||
semlength = 7;
|
||||
}
|
||||
var i = 0;
|
||||
for(i = 0; i <= semlength;i=i+2)
|
||||
{
|
||||
|
||||
|
||||
|
||||
var fileName = "DEFAULT.pdf";
|
||||
var margins = {
|
||||
top: 70,
|
||||
bottom: 40,
|
||||
left: 30,
|
||||
width: 550
|
||||
};
|
||||
var doc = new jsPDF('p', 'pt');
|
||||
//convert img to base 64
|
||||
var img = document.getElementById("logo")
|
||||
var canvas = document.createElement("canvas");
|
||||
canvas.width = 100;
|
||||
canvas.height = 100;
|
||||
var ctx = canvas.getContext("2d");
|
||||
ctx.drawImage(img, 0, 0,100,100);
|
||||
var dataURL = canvas.toDataURL("image/png");
|
||||
|
||||
//console.log('***'+dataURL);
|
||||
//convert img to base 64
|
||||
|
||||
|
||||
//convert img to base 64
|
||||
var profile = document.getElementById("sprofile")
|
||||
var canvas2 = document.createElement("canvas");
|
||||
canvas2.width = 100;
|
||||
canvas2.height = 100;
|
||||
var ctx2 = canvas2.getContext("2d");
|
||||
ctx2.drawImage(profile, 0, 0,100,100);
|
||||
var profiledataURL = canvas2.toDataURL("image/png",1.0);
|
||||
//convert img to base 64
|
||||
|
||||
|
||||
|
||||
var sem1 = "";
|
||||
var sem2 = "";
|
||||
|
||||
var tableid = value.StudentID;
|
||||
|
||||
doc.autoTableSetDefaults({
|
||||
styles: {cellPadding: 3.0, fontSize: 8},
|
||||
headerStyles: {fillColor: [245, 245, 240], textColor: 0}
|
||||
});
|
||||
|
||||
|
||||
var firstTableID = tableid+i;
|
||||
var SecTableID = (tableid+(i+1));
|
||||
|
||||
|
||||
|
||||
if(document.getElementById(firstTableID))
|
||||
{
|
||||
|
||||
var sem1 = doc.autoTableHtmlToJson(document.getElementById(firstTableID));
|
||||
|
||||
}
|
||||
|
||||
if(document.getElementById(SecTableID))
|
||||
{
|
||||
|
||||
var sem2 = doc.autoTableHtmlToJson(document.getElementById(SecTableID));
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
var header = function(data) {
|
||||
var examName = 'ADMIT CARD : '+$scope.courseNamePDF+' EXAMINATION ' +$scope.batchNamePDF;
|
||||
var rollNo = 'Reg No : '+value.EnrollmentID;
|
||||
var stuName = 'Name : '+value.Firstname+' '+value.Lastname;
|
||||
var centerName = 'Centre : '+$scope.centerNamePDF;
|
||||
if(hallticket_type == 'SEM' || hallticket_type == 'REG')
|
||||
{
|
||||
var semName = 'SEM'+(i+1)+'&'+(i+2);
|
||||
}
|
||||
else if(hallticket_type == 'LAT')
|
||||
{
|
||||
var semName = 'SEM'+(i+3)+'&'+(i+4);
|
||||
}
|
||||
fileName = value.EnrollmentID+'-'+value.Firstname+value.Lastname+$scope.courseNamePDF+semName+'.pdf';
|
||||
doc.setDrawColor(0);
|
||||
doc.setFillColor(245, 245, 240);
|
||||
doc.rect(150, 30, 395, 60,'FD');
|
||||
doc.setFontSize(12);
|
||||
doc.setTextColor(40);
|
||||
doc.setFontStyle('normal');
|
||||
|
||||
doc.addImage(dataURL, 'jpeg', 75, 35, 50, 50);//university logo location
|
||||
doc.addImage(profiledataURL, 'jpeg', 470, 100, 60, 60);//student profile location
|
||||
|
||||
doc.setFontSize(22);
|
||||
doc.text(160,50,$scope.universityNamePDF);
|
||||
doc.setFontSize(10);
|
||||
doc.text(160,65,$scope.universityAddressPDF);
|
||||
doc.setFontSize(10);
|
||||
doc.text(160,88,$scope.universityEmailPDF);
|
||||
|
||||
doc.rect(45, 100, 400, 60);
|
||||
doc.rect(445, 100, 100, 60);
|
||||
doc.line(45, 125, 445, 125);
|
||||
doc.setFontSize(10);
|
||||
doc.setFontType("bold");
|
||||
doc.text(80,115,examName);
|
||||
|
||||
doc.setFontType("normal");
|
||||
doc.text(50,140,rollNo);
|
||||
doc.text(230,140,stuName);
|
||||
doc.text(50,155,centerName);
|
||||
|
||||
//footer content
|
||||
var footerNote1 ="Note : 1. Without Identification Card Candidates shallnot Allowed to write for examination.";
|
||||
var footerNote2 ="2. For further instructions refer to the facing sheet of the Answer book before writting examination.";
|
||||
var footerNote3 ="3. Carrying Mobile phone to the examination hall is strictly prohibited.";
|
||||
var footerNote4 ="4. Attend the examintaion as per mentioned above.";
|
||||
var footerNote_student_sign ="Signature of the Student";
|
||||
var footerNote_controller_sign ="Controller of Examination";
|
||||
doc.setFontSize(8);
|
||||
doc.text(40,doc.internal.pageSize.height - 150,footerNote1);
|
||||
doc.text(70,doc.internal.pageSize.height - 140,footerNote2);
|
||||
doc.text(70,doc.internal.pageSize.height - 130,footerNote3);
|
||||
doc.text(70,doc.internal.pageSize.height - 120,footerNote4);
|
||||
doc.text(40,doc.internal.pageSize.height - 50,footerNote_student_sign);
|
||||
doc.text(450,doc.internal.pageSize.height - 50,footerNote_controller_sign);
|
||||
|
||||
};
|
||||
|
||||
|
||||
var autoTableEndPosYvalue = 0;
|
||||
|
||||
if(sem1 == "")
|
||||
{
|
||||
autoTableEndPosYvalue = 200;
|
||||
}
|
||||
else
|
||||
{
|
||||
autoTableEndPosYvalue = 300;
|
||||
}
|
||||
|
||||
var options2 = {
|
||||
addPageContent: header,
|
||||
|
||||
margin: {
|
||||
top: 100
|
||||
},
|
||||
|
||||
|
||||
startY: doc.autoTableEndPosY() + autoTableEndPosYvalue,
|
||||
|
||||
theme :'grid'
|
||||
|
||||
};
|
||||
|
||||
var options1 = {
|
||||
addPageContent: header,
|
||||
|
||||
margin: {
|
||||
top: 200
|
||||
},
|
||||
theme :'grid'
|
||||
|
||||
};
|
||||
|
||||
if(sem1 != "")
|
||||
{
|
||||
doc.autoTable(sem1.columns, sem1.data, options1);
|
||||
}
|
||||
|
||||
|
||||
if(sem2 != "")
|
||||
{
|
||||
doc.autoTable(sem2.columns, sem2.data, options2);
|
||||
|
||||
}
|
||||
|
||||
|
||||
if(sem2 != "" || sem1 != "")
|
||||
{
|
||||
doc.save(fileName);
|
||||
}
|
||||
|
||||
|
||||
}//End of semlength for loop
|
||||
|
||||
}//END OF SEM HALL TICKET TYPE
|
||||
|
||||
else if(hallticket_type == 'YEAR')
|
||||
{
|
||||
console.log('YEAR');
|
||||
var semlength = value.FeeDetails.length;
|
||||
var i = 0;
|
||||
for(i = 0; i <= semlength;i++)
|
||||
{
|
||||
|
||||
|
||||
// console.log('FOR'+i);
|
||||
var fileName = "DEFAULT.pdf";
|
||||
var semName = 'DEFAULT_SEM';
|
||||
var margins = {
|
||||
top: 70,
|
||||
bottom: 40,
|
||||
left: 30,
|
||||
width: 550
|
||||
};
|
||||
var doc = new jsPDF('p', 'pt');
|
||||
//convert img to base 64
|
||||
var img = document.getElementById("logo")
|
||||
var canvas = document.createElement("canvas");
|
||||
canvas.width = 100;
|
||||
canvas.height = 100;
|
||||
var ctx = canvas.getContext("2d");
|
||||
ctx.drawImage(img, 0, 0,100,100);
|
||||
var dataURL = canvas.toDataURL("image/png");
|
||||
|
||||
//console.log('***'+dataURL);
|
||||
//convert img to base 64
|
||||
|
||||
|
||||
//convert img to base 64
|
||||
var profile = document.getElementById("sprofile")
|
||||
var canvas2 = document.createElement("canvas");
|
||||
canvas2.width = 100;
|
||||
canvas2.height = 100;
|
||||
var ctx2 = canvas2.getContext("2d");
|
||||
ctx2.drawImage(profile, 0, 0,100,100);
|
||||
var profiledataURL = canvas2.toDataURL("image/png",1.0);
|
||||
//convert img to base 64
|
||||
|
||||
|
||||
|
||||
var sem1 = "";
|
||||
// var sem2 = "";
|
||||
|
||||
var tableid = value.StudentID;
|
||||
|
||||
doc.autoTableSetDefaults({
|
||||
styles: {cellPadding: 3.0, fontSize: 8},
|
||||
headerStyles: {fillColor: [245, 245, 240], textColor: 0},
|
||||
|
||||
|
||||
});
|
||||
|
||||
var firstTableID = "0";
|
||||
//var SecTableID = "1";
|
||||
switch(i)
|
||||
{
|
||||
case 0:
|
||||
var firstTableID = tableid+'year10';
|
||||
//var SecTableID = tableid+'year11';
|
||||
semName = 'YEAR1';
|
||||
|
||||
break;
|
||||
|
||||
case 1:
|
||||
var firstTableID = tableid+'year20';
|
||||
//var SecTableID = tableid+'year21';
|
||||
semName = 'YEAR2';
|
||||
|
||||
break;
|
||||
|
||||
case 2:
|
||||
var firstTableID = tableid+'year30';
|
||||
//var SecTableID = tableid+'year31';
|
||||
semName = 'YEAR3';
|
||||
|
||||
break;
|
||||
|
||||
case 4:
|
||||
var firstTableID = tableid+'year40';
|
||||
//var SecTableID = tableid+'year41';
|
||||
semName = 'YEAR4';
|
||||
|
||||
break;
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
if(document.getElementById(firstTableID))
|
||||
{
|
||||
|
||||
var sem1 = doc.autoTableHtmlToJson(document.getElementById(firstTableID));
|
||||
|
||||
}
|
||||
|
||||
// if(document.getElementById(SecTableID))
|
||||
// {
|
||||
|
||||
// var sem2 = doc.autoTableHtmlToJson(document.getElementById(SecTableID));
|
||||
|
||||
// }
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
var header = function(data) {
|
||||
var examName = 'ADMIT CARD : '+$scope.courseNamePDF+' EXAMINATION ' +$scope.batchNamePDF;
|
||||
var rollNo = 'Reg No : '+value.EnrollmentID;
|
||||
var stuName = 'Name : '+value.Firstname+' '+value.Lastname;
|
||||
var centerName = 'Centre : '+$scope.centerNamePDF;
|
||||
|
||||
fileName = value.EnrollmentID+'-'+value.Firstname+value.Lastname+$scope.courseNamePDF+semName+'.pdf';
|
||||
doc.setDrawColor(0);
|
||||
doc.setFillColor(245, 245, 240);
|
||||
doc.rect(150, 30, 395, 60,'FD');
|
||||
doc.setFontSize(12);
|
||||
doc.setTextColor(40);
|
||||
doc.setFontStyle('normal');
|
||||
|
||||
doc.addImage(dataURL, 'jpeg', 75, 35, 50, 50);//university logo location
|
||||
doc.addImage(profiledataURL, 'jpeg', 470, 100, 60, 60);//student profile location
|
||||
|
||||
doc.setFontSize(22);
|
||||
doc.text(160,50,$scope.universityNamePDF);
|
||||
doc.setFontSize(10);
|
||||
doc.text(160,65,$scope.universityAddressPDF);
|
||||
doc.setFontSize(10);
|
||||
doc.text(160,88,$scope.universityEmailPDF);
|
||||
|
||||
doc.rect(45, 100, 400, 60);
|
||||
doc.rect(445, 100, 100, 60);
|
||||
doc.line(45, 125, 445, 125);
|
||||
doc.setFontSize(10);
|
||||
doc.setFontType("bold");
|
||||
doc.text(80,115,examName);
|
||||
|
||||
doc.setFontType("normal");
|
||||
doc.text(50,140,rollNo);
|
||||
doc.text(230,140,stuName);
|
||||
doc.text(50,155,centerName);
|
||||
|
||||
//footer content
|
||||
var footerNote1 ="Note : 1. Without Identification Card Candidates shallnot Allowed to write for examination.";
|
||||
var footerNote2 ="2. For further instructions refer to the facing sheet of the Answer book before writting examination.";
|
||||
var footerNote3 ="3. Carrying Mobile phone to the examination hall is strictly prohibited.";
|
||||
var footerNote4 ="4. Attend the examintaion as per mentioned above.";
|
||||
var footerNote_student_sign ="Signature of the Student";
|
||||
var footerNote_controller_sign ="Controller of Examination";
|
||||
doc.setFontSize(8);
|
||||
doc.text(40,doc.internal.pageSize.height - 150,footerNote1);
|
||||
doc.text(70,doc.internal.pageSize.height - 140,footerNote2);
|
||||
doc.text(70,doc.internal.pageSize.height - 130,footerNote3);
|
||||
doc.text(70,doc.internal.pageSize.height - 120,footerNote4);
|
||||
doc.text(40,doc.internal.pageSize.height - 50,footerNote_student_sign);
|
||||
doc.text(450,doc.internal.pageSize.height - 50,footerNote_controller_sign);
|
||||
|
||||
};
|
||||
|
||||
|
||||
|
||||
var options = {
|
||||
addPageContent: header,
|
||||
|
||||
margin: {
|
||||
top: 170
|
||||
},
|
||||
//startY: doc.autoTableEndPosY() + 20,
|
||||
theme :'grid'
|
||||
|
||||
};
|
||||
|
||||
|
||||
if(sem1 != "")
|
||||
{
|
||||
doc.autoTable(sem1.columns, sem1.data, options);
|
||||
}
|
||||
|
||||
// if(sem2 != "")
|
||||
// {
|
||||
// doc.autoTable(sem2.columns, sem2.data, options);
|
||||
|
||||
// }
|
||||
|
||||
|
||||
if(sem1 != "")
|
||||
{
|
||||
doc.save(fileName);
|
||||
}
|
||||
|
||||
|
||||
}//End of semlength for loop
|
||||
|
||||
}//END OF YEAR HALL TICKET TYPE
|
||||
|
||||
|
||||
else if(hallticket_type == 'SEM' ){
|
||||
console.log('SEM');
|
||||
var semlength = value.FeeDetails.length;
|
||||
|
||||
var i = 0;
|
||||
for(i = 0; i < semlength;i++)
|
||||
{
|
||||
|
||||
|
||||
|
||||
var fileName = "DEFAULT.pdf";
|
||||
var margins = {
|
||||
top: 70,
|
||||
bottom: 40,
|
||||
left: 30,
|
||||
width: 550
|
||||
};
|
||||
var doc = new jsPDF('p', 'pt');
|
||||
//convert img to base 64
|
||||
var img = document.getElementById("logo")
|
||||
var canvas = document.createElement("canvas");
|
||||
canvas.width = 100;
|
||||
canvas.height = 100;
|
||||
var ctx = canvas.getContext("2d");
|
||||
ctx.drawImage(img, 0, 0,100,100);
|
||||
var dataURL = canvas.toDataURL("image/png");
|
||||
|
||||
//console.log('***'+dataURL);
|
||||
//convert img to base 64
|
||||
|
||||
|
||||
//convert img to base 64
|
||||
var profile = document.getElementById("sprofile")
|
||||
var canvas2 = document.createElement("canvas");
|
||||
canvas2.width = 100;
|
||||
canvas2.height = 100;
|
||||
var ctx2 = canvas2.getContext("2d");
|
||||
ctx2.drawImage(profile, 0, 0,100,100);
|
||||
var profiledataURL = canvas2.toDataURL("image/png",1.0);
|
||||
//convert img to base 64
|
||||
|
||||
|
||||
|
||||
var sem1 = "";
|
||||
//var sem2 = "";
|
||||
|
||||
var tableid = value.StudentID;
|
||||
|
||||
doc.autoTableSetDefaults({
|
||||
styles: {cellPadding: 3.0, fontSize: 8},
|
||||
headerStyles: {fillColor: [245, 245, 240], textColor: 0}
|
||||
});
|
||||
|
||||
|
||||
var firstTableID = tableid+i;
|
||||
// var SecTableID = (tableid+(i+1));
|
||||
|
||||
|
||||
|
||||
if(document.getElementById(firstTableID))
|
||||
{
|
||||
|
||||
var sem1 = doc.autoTableHtmlToJson(document.getElementById(firstTableID));
|
||||
|
||||
}
|
||||
|
||||
// if(document.getElementById(SecTableID))
|
||||
// {
|
||||
|
||||
// var sem2 = doc.autoTableHtmlToJson(document.getElementById(SecTableID));
|
||||
|
||||
// }
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
var header = function(data) {
|
||||
var examName = 'ADMIT CARD : '+$scope.courseNamePDF+' EXAMINATION ' +$scope.batchNamePDF;
|
||||
var rollNo = 'Reg No : '+value.EnrollmentID;
|
||||
var stuName = 'Name : '+value.Firstname+' '+value.Lastname;
|
||||
var centerName = 'Centre : '+$scope.centerNamePDF;
|
||||
// if(hallticket_type == 'SEM' || hallticket_type == 'REG')
|
||||
// {
|
||||
// var semName = 'SEM'+(i+1)+'&'+(i+2);
|
||||
// }
|
||||
// else if(hallticket_type == 'LAT')
|
||||
// {
|
||||
// var semName = 'SEM'+(i+3)+'&'+(i+4);
|
||||
// }
|
||||
|
||||
var semName = 'SEM'+(i+1);
|
||||
fileName = value.EnrollmentID+'-'+value.Firstname+value.Lastname+$scope.courseNamePDF+semName+'.pdf';
|
||||
doc.setDrawColor(0);
|
||||
doc.setFillColor(245, 245, 240);
|
||||
doc.rect(150, 30, 395, 60,'FD');
|
||||
doc.setFontSize(12);
|
||||
doc.setTextColor(40);
|
||||
doc.setFontStyle('normal');
|
||||
|
||||
doc.addImage(dataURL, 'jpeg', 75, 35, 50, 50);//university logo location
|
||||
doc.addImage(profiledataURL, 'jpeg', 470, 100, 60, 60);//student profile location
|
||||
|
||||
doc.setFontSize(22);
|
||||
doc.text(160,50,$scope.universityNamePDF);
|
||||
doc.setFontSize(10);
|
||||
doc.text(160,65,$scope.universityAddressPDF);
|
||||
doc.setFontSize(10);
|
||||
doc.text(160,88,$scope.universityEmailPDF);
|
||||
|
||||
doc.rect(45, 100, 400, 60);
|
||||
doc.rect(445, 100, 100, 60);
|
||||
doc.line(45, 125, 445, 125);
|
||||
doc.setFontSize(10);
|
||||
doc.setFontType("bold");
|
||||
doc.text(80,115,examName);
|
||||
|
||||
doc.setFontType("normal");
|
||||
doc.text(50,140,rollNo);
|
||||
doc.text(230,140,stuName);
|
||||
doc.text(50,155,centerName);
|
||||
|
||||
//footer content
|
||||
var footerNote1 ="Note : 1. Without Identification Card Candidates shallnot Allowed to write for examination.";
|
||||
var footerNote2 ="2. For further instructions refer to the facing sheet of the Answer book before writting examination.";
|
||||
var footerNote3 ="3. Carrying Mobile phone to the examination hall is strictly prohibited.";
|
||||
var footerNote4 ="4. Attend the examintaion as per mentioned above.";
|
||||
var footerNote_student_sign ="Signature of the Student";
|
||||
var footerNote_controller_sign ="Controller of Examination";
|
||||
doc.setFontSize(8);
|
||||
doc.text(40,doc.internal.pageSize.height - 150,footerNote1);
|
||||
doc.text(70,doc.internal.pageSize.height - 140,footerNote2);
|
||||
doc.text(70,doc.internal.pageSize.height - 130,footerNote3);
|
||||
doc.text(70,doc.internal.pageSize.height - 120,footerNote4);
|
||||
doc.text(40,doc.internal.pageSize.height - 50,footerNote_student_sign);
|
||||
doc.text(450,doc.internal.pageSize.height - 50,footerNote_controller_sign);
|
||||
|
||||
};
|
||||
|
||||
|
||||
// var autoTableEndPosYvalue = 0;
|
||||
|
||||
// if(sem1 == "")
|
||||
// {
|
||||
// autoTableEndPosYvalue = 200;
|
||||
// }
|
||||
// else
|
||||
// {
|
||||
// autoTableEndPosYvalue = 300;
|
||||
// }
|
||||
|
||||
// var options2 = {
|
||||
// addPageContent: header,
|
||||
|
||||
// margin: {
|
||||
// top: 100
|
||||
// },
|
||||
|
||||
|
||||
// startY: doc.autoTableEndPosY() + autoTableEndPosYvalue,
|
||||
|
||||
// theme :'grid'
|
||||
|
||||
// };
|
||||
|
||||
var options1 = {
|
||||
addPageContent: header,
|
||||
|
||||
margin: {
|
||||
top: 200
|
||||
},
|
||||
|
||||
theme :'grid'
|
||||
|
||||
};
|
||||
|
||||
if(sem1 != "")
|
||||
{
|
||||
doc.autoTable(sem1.columns, sem1.data, options1);
|
||||
}
|
||||
|
||||
|
||||
// if(sem2 != "")
|
||||
// {
|
||||
// doc.autoTable(sem2.columns, sem2.data, options2);
|
||||
|
||||
// }
|
||||
|
||||
|
||||
if(sem2 != "" || sem1 != "")
|
||||
{
|
||||
doc.save(fileName);
|
||||
}
|
||||
|
||||
|
||||
}//End of semlength for loop
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
}// END of studentID Check
|
||||
|
||||
|
||||
});//END of For Each
|
||||
}
|
||||
|
||||
|
||||
$scope.ok = function () {
|
||||
$modalInstance.close($scope.selected.item);
|
||||
};
|
||||
|
||||
$scope.cancel = function () {
|
||||
$modalInstance.dismiss('cancel');
|
||||
};
|
||||
|
||||
}]);
|
||||
183
Apollo/assets/views/hallticket/examAttendance.html
Normal file
183
Apollo/assets/views/hallticket/examAttendance.html
Normal file
@ -0,0 +1,183 @@
|
||||
<style>
|
||||
b.fa {
|
||||
display: inline-block;
|
||||
border-radius: 60px;
|
||||
box-shadow: 0px 0px 2px #FF6600;
|
||||
padding: 0.5em 0.6em;
|
||||
|
||||
|
||||
}
|
||||
b.fa1 {
|
||||
display: inline-block;
|
||||
border-radius: 60px;
|
||||
box-shadow: 0px 0px 2px green;
|
||||
padding: 0.5em 0.6em;
|
||||
|
||||
|
||||
}
|
||||
a {
|
||||
color: #007AFF;
|
||||
}
|
||||
|
||||
</style>
|
||||
<!-- start: PAGE TITLE -->
|
||||
<section id="page-title">
|
||||
<div class="row">
|
||||
<div class="col-sm-8">
|
||||
|
||||
<h1 class="mainTitle" translate="Examination Attendance">{{ mainTitle }}</h1>
|
||||
|
||||
<span class="mainDescription">Examination Attendance </span>
|
||||
|
||||
</div>
|
||||
<div ncy-breadcrumb></div>
|
||||
</div>
|
||||
</section>
|
||||
<!-- end: PAGE TITLE -->
|
||||
<!-- start: LIST GROUP -->
|
||||
|
||||
<div class="container-fluid container-fullw bg-white" ng-controller="examAttendanceCtrl" data-ng-init="init()">
|
||||
|
||||
|
||||
<div class="row">
|
||||
<form name="Form" id="form" novalidate method="post">
|
||||
<fieldset>
|
||||
<legend>Search</legend>
|
||||
<div class="col-md-12 ">
|
||||
|
||||
<div class="col-md-3 form-group">
|
||||
<label>
|
||||
University
|
||||
</label>
|
||||
<select class="form-control" name="university" tabindex="1" id="university"
|
||||
ng-model="myModel.universityName"
|
||||
ng-options="i.universityName for i in university" ng-change="">
|
||||
<option value=""> Select University</option>
|
||||
</select>
|
||||
<!-- <pre>{{myModel.universityName | json}}</pre>-->
|
||||
|
||||
</div>
|
||||
<div class="col-md-3 form-group">
|
||||
<label>
|
||||
Course
|
||||
</label>
|
||||
<select ui-select2 class="form-control" name="course" tabindex="4" id="course"
|
||||
ng-model="myModel.courseName" ng-change="captureCourseName();">
|
||||
<option value=""> Select Course</option>
|
||||
<option ng-repeat="courseDetails in myModel.universityName.courseDetails" value="{{courseDetails.CourseID}}"><span ng-show="courseDetails.CourseCode != ''"><strong>{{courseDetails.CourseName}}</strong></span></option>
|
||||
</select>
|
||||
|
||||
<!-- <pre>{{myModel.courseName|json}}</pre> -->
|
||||
</div>
|
||||
|
||||
<div class="col-md-2 form-group">
|
||||
|
||||
<label>
|
||||
Batch Name
|
||||
</label>
|
||||
<select ui-select2 class="form-control" name="batch" tabindex="4" id="batch"
|
||||
ng-model="myModel.batchName" ng-change="captureBatchName()"
|
||||
>
|
||||
<option value=""> Select Batch</option>
|
||||
<option ng-repeat="batchDetails in myModel.universityName.batchDetails" value="{{batchDetails.BatchCode}}"><span ng-show="batchDetails.BatchCode != ''"><strong>{{batchDetails.BatchName}}</strong></span></option>
|
||||
</select>
|
||||
<!-- <pre>{{myModel.batchName | json}}</pre> -->
|
||||
</div>
|
||||
|
||||
<div class="col-md-2 form-group">
|
||||
|
||||
<br>
|
||||
<button type="button" ladda="ldloading1.zoom_in" tabindex="5" class="btn btn-wide btn-info" data-style="zoom-in" ng-click="getStudentDetails(Form,myModel);">GET STUDENTS</button>
|
||||
</div>
|
||||
|
||||
|
||||
</div>
|
||||
<div class="row">
|
||||
|
||||
<div class="col-md-5 form-group">
|
||||
|
||||
<label>
|
||||
Center Name
|
||||
</label>
|
||||
<select class="form-control" name="center" tabindex="4" id="center"
|
||||
ng-model="myModel.centerName"
|
||||
ng-options="centerDetails.CenterName for centerDetails in centers" ng-change="">
|
||||
<option value=""> Center Name</option>
|
||||
</select>
|
||||
<!-- <pre>{{myModel.centerName | json}}</pre> -->
|
||||
</div>
|
||||
|
||||
<div class="col-md-3 form-group">
|
||||
<!-- <div class="pull-right"> -->
|
||||
<br>
|
||||
<button type="button" ladda="ldloading1.zoom_in" tabindex="6" class="btn btn-wide btn-success" data-style="zoom-in" ng-click="generateHallTicket();">GENERATE</button>
|
||||
<!-- </div> -->
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
|
||||
</fieldset>
|
||||
|
||||
<div class="row">
|
||||
<div class="col-md-12" ng-if="isLoaderShow">
|
||||
<center> <h1>{{isLoaderTxt}}</h1> </center>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="row">
|
||||
<div class="col-md-12" ng-if="isTblShow">
|
||||
<div class="table-responsive">
|
||||
<table class="table table-hover">
|
||||
<thead>
|
||||
<tr>
|
||||
<th><input type="checkbox" ng-model="myModel.all" id="all" name="all" ng-click="isCheckAll($event);" class="form-control"></th>
|
||||
<th ng-click="sort('Firstname')">Student Name
|
||||
<span class="glyphicon sort-icon" ng-show="sortKey=='Firstname'" ng-class="{'glyphicon-chevron-up':reverse,'glyphicon-chevron-down':!reverse}"></span>
|
||||
</th>
|
||||
<!-- <th ng-click="sort('UniversityShortName')">University Short Name -->
|
||||
<!-- <span class="glyphicon sort-icon" ng-show="sortKey=='UniversityShortName'" ng-class="{'glyphicon-chevron-up':reverse,'glyphicon-chevron-down':!reverse}"></span> -->
|
||||
<!-- </th> -->
|
||||
<th ng-click="sort('MobileNumber')">Mobile No
|
||||
<span class="glyphicon sort-icon" ng-show="sortKey=='MobileNumber'" ng-class="{'glyphicon-chevron-up':reverse,'glyphicon-chevron-down':!reverse}"></span>
|
||||
</th>
|
||||
<th ng-click="sort('EmailID')">EmailID
|
||||
<span class="glyphicon sort-icon" ng-show="sortKey=='EmailID'" ng-class="{'glyphicon-chevron-up':reverse,'glyphicon-chevron-down':!reverse}"></span>
|
||||
</th>
|
||||
<!-- <th>Status</th> -->
|
||||
<!-- <th style="text-align: center;"> Action -->
|
||||
<!-- </th> -->
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody dir-paginate="p in studentInfo|orderBy:sortKey:reverse|filter:search:strict|itemsPerPage:10">
|
||||
<tr>
|
||||
<td><input type="checkbox" ng-checked="myModel.all" id="{{p.StudentID}}" name="{{p.StudentID}}" class="form-control" ng-click="isClick($event);"></td>
|
||||
<td>{{p.Firstname}}{{p.Lastname}}</td>
|
||||
<!-- <td>{{p.UniversityShortName}}</td> -->
|
||||
<td>{{p.MobileNumber}}</td>
|
||||
<td>{{p.EmailID}}</td>
|
||||
|
||||
</tr>
|
||||
</tbody>
|
||||
|
||||
</table>
|
||||
<dir-pagination-controls max-size="10" direction-links="true" boundary-links="true">
|
||||
</dir-pagination-controls>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
<!-- end: LIST GROUP -->
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
@ -339,6 +339,11 @@
|
||||
<span class="title" translate="sidebar.nav.hallTicket.GENERATEHALLTICKET">GENERATE HALLTICKET</span>
|
||||
</a>
|
||||
</li>
|
||||
<li ui-sref-active="active">
|
||||
<a ui-sref="app.hallTicket.examAttendance" ng-click="checkSuperAdmin()">
|
||||
<span class="title" translate="sidebar.nav.hallTicket.EXAMATTENDANCE">EXAMATTENDANCE</span>
|
||||
</a>
|
||||
</li>
|
||||
</ul>
|
||||
</li>
|
||||
|
||||
@ -752,6 +757,11 @@
|
||||
<span class="title" translate="sidebar.nav.hallTicket.GENERATEHALLTICKET">GENERATE HALLTICKET</span>
|
||||
</a>
|
||||
</li>
|
||||
<li ui-sref-active="active">
|
||||
<a ui-sref="app.hallTicket.examAttendance" ng-click="checkAdmin()">
|
||||
<span class="title" translate="sidebar.nav.hallTicket.EXAMATTENDANCE">EXAMATTENDANCE</span>
|
||||
</a>
|
||||
</li>
|
||||
</ul>
|
||||
|
||||
</li>
|
||||
@ -1056,6 +1066,7 @@
|
||||
<span class="title" translate="sidebar.nav.hallTicket.GENERATEHALLTICKET">GENERATE HALLTICKET</span>
|
||||
</a>
|
||||
</li>
|
||||
|
||||
</ul>
|
||||
|
||||
</li>
|
||||
@ -1279,6 +1290,11 @@
|
||||
<span class="title" translate="sidebar.nav.hallTicket.GENERATEHALLTICKET">GENERATE HALLTICKET</span>
|
||||
</a>
|
||||
</li>
|
||||
<li ui-sref-active="active">
|
||||
<a ui-sref="app.hallTicket.examAttendance" ng-click="checkStaff()">
|
||||
<span class="title" translate="sidebar.nav.hallTicket.EXAMATTENDANCE">EXAMATTENDANCE</span>
|
||||
</a>
|
||||
</li>
|
||||
</ul>
|
||||
|
||||
</li>
|
||||
|
||||
Loading…
Reference in New Issue
Block a user