1. <script type="text/javascript" src="https://code.jquery.com/jquery-1.8.3.js"></script>
  2. <script type="text/javascript" src="//code.highcharts.com/highcharts.src.js"></script>
  3. <script type="text/javascript">
  4. var maternityLeaveDays = 0;
  5. var paternityLeaveDays = 0;
  6. var ComOffLeaveDays = 0;
  7. var sickLeaveDays = 0;
  8. var casualLeaveDays = 0;
  9. var userExist = false;
  10. var compOffLeaveFromEmployeeLeaveList = 0;
  11. var sickLeaveFromEmployeeLeaveList = 0;
  12. var casualLeaveFromEmployeeLeaveList = 0;
  13. var MLOffLeaveFromEmployeeLeaveList = 0;
  14. var PLLeaveFromEmployeeLeaveList = 0;
  15. var URLString = _spPageContextInfo.webAbsoluteUrl + "/_api/web/lists/getbytitle('EmployeeLeave')/Items?$select=Totalleavedays,LeaveType/LeaveType&$filter=(EmpName eq'" + _spPageContextInfo.userDisplayName + "') and (Employee0 eq'16')&$expand=LeaveType";
  16. $.ajax({
  17. url: URLString,
  18. type: "GET",
  19. dataType: "json",
  20. async: false,
  21. headers: {
  22. "accept": "application/json;odata=verbose"
  23. },
  24. success: callSuccessMethod,
  25. error: callFailureMethod
  26. });
  27. function callSuccessMethod(data, request) {
  28. if (data.d.results.length >= 1) {
  29. userExist = true;
  30. $.each(data.d.results, function(key, val) {
  31. if (val.LeaveType.LeaveType === 'Compoff') {
  32. compOffLeaveFromEmployeeLeaveList += parseInt(val.Totalleavedays);
  33. } else if (val.LeaveType.LeaveType === 'SickLeave') {
  34. sickLeaveFromEmployeeLeaveList += parseInt(val.Totalleavedays);
  35. } else if (val.LeaveType.LeaveType === 'CasualLeave') {
  36. casualLeaveFromEmployeeLeaveList += parseInt(val.Totalleavedays);
  37. } else if (val.LeaveType.LeaveType === 'MaternityLeave') {
  38. MLOffLeaveFromEmployeeLeaveList += parseInt(val.Totalleavedays);
  39. } else if (val.LeaveType.LeaveType === 'PaternityLeave') {
  40. PLLeaveFromEmployeeLeaveList += parseInt(val.Totalleavedays);
  41. }
  42. });
  43. var endPointURLString = _spPageContextInfo.webAbsoluteUrl + "/_api/web/lists/getbytitle('Leavetype')/Items?$select=LeaveType,Total,isActive&$filter=isActive eq '1' ";
  44. $.ajax({
  45. url: endPointURLString,
  46. type: "GET",
  47. dataType: "json",
  48. async: false,
  49. headers: {
  50. "accept": "application/json;odata=verbose"
  51. },
  52. success: callSuccessMethodForLeaveType,
  53. error: callFailureMethodLeaveType
  54. });
  55. } else {
  56. userExist = false;
  57. var endPointURLString = _spPageContextInfo.webAbsoluteUrl + "/_api/web/lists/getbytitle('Leavetype')/Items";
  58. $.ajax({
  59. url: endPointURLString,
  60. type: "GET",
  61. dataType: "json",
  62. async: false,
  63. headers: {
  64. "accept": "application/json;odata=verbose"
  65. },
  66. success: callSuccessMethodForLeaveType,
  67. error: callFailureMethodLeaveType
  68. });
  69. }
  70. }
  71. function callFailureMethod(data, errCode, errMessage) {
  72. alert("Error: " + errMessage);
  73. }
  74. function callSuccessMethodForLeaveType(data, request) {
  75. $.each(data.d.results, function(key, val) {
  76. if (val.LeaveType === 'Casual Leave') {
  77. casualLeaveDays = val.Total;
  78. } else if (val.LeaveType === 'Marriage Leave') {
  79. marriageLeaveDays = val.Total;
  80. } else if (val.LeaveType === 'Maternity Leave') {
  81. maternityLeaveDays = val.Total;
  82. } else if (val.LeaveType === 'Paternity Leave') {
  83. paternityLeaveDays = val.Total;
  84. } else if (val.LeaveType === 'Compensatory Leave') {
  85. ComOffLeaveDays = val.Total;
  86. } else if (val.LeaveType === 'Sick Leave') {
  87. sickLeaveDays = val.Total;
  88. }
  89. });
  90. }
  91. if (userExist) {
  92. ComOffLeaveDays = (parseInt(ComOffLeaveDays) - parseInt(compOffLeaveFromEmployeeLeaveList));
  93. sickLeaveDays = (parseInt(sickLeaveDays) - parseInt(sickLeaveFromEmployeeLeaveList));
  94. casualLeaveDays = (parseInt(casualLeaveDays) - parseInt(casualLeaveFromEmployeeLeaveList));
  95. maternityLeaveDays = (parseInt(maternityLeaveDays) - parseInt(MLOffLeaveFromEmployeeLeaveList));
  96. paternityLeaveDays = (parseInt(paternityLeaveDays) - parseInt(PLLeaveFromEmployeeLeaveList));
  97. DrawChart();
  98. }
  99. if (!userExist) {
  100. DrawChart();
  101. }
  102. }
  103. function callFailureMethodLeaveType(data, errCode, errMessage) {
  104. alert("Error: " + errMessage);
  105. }
  106. function DrawChart() {
  107. PieChart = new Highcharts.Chart({
  108. chart: {
  109. renderTo: 'chart-container',
  110. plotBackgroundColor: null,
  111. plotBorderWidth: null,
  112. plotShadow: false,
  113. type: 'pie'
  114. },
  115. title: {
  116. text: 'Balance Leave Availble'
  117. },
  118. tooltip: {
  119. pointFormat: '{series.name}: <b>{point.y}</b>'
  120. },
  121. plotOptions: {
  122. pie: {
  123. allowPointSelect: true,
  124. cursor: 'pointer',
  125. dataLabels: {
  126. enabled: true,
  127. format: '<b>{point.name}</b>: {point.y}',
  128. style: {
  129. color: (Highcharts.theme && Highcharts.theme.contrastTextColor) || 'black'
  130. }
  131. }
  132. }
  133. },
  134. series: [{
  135. name: 'Leave Balance',
  136. colorByPoint: true,
  137. data: [
  138. ['TotalCasualLeave', casualLeaveDays],
  139. ['CompOff', ComOffLeaveDays],
  140. ['MaternityLeave', maternityLeaveDays],
  141. ['PaternityLeave', paternityLeaveDays],
  142. ['SicKLeave', sickLeaveDays]
  143. ]
  144. }]
  145. });
  146. }
  147. </script>