Advertisement
Guest User

Untitled

a guest
Dec 3rd, 2015
96
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 13.42 KB | None | 0 0
  1.  
  2.  
  3. <h2>Time Entry</h2>
  4. <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.4/jquery.min.js"></script>
  5. <link rel="stylesheet" href="https://ajax.googleapis.com/ajax/libs/jqueryui/1.11.4/themes/smoothness/jquery-ui.css">
  6. <script src="https://ajax.googleapis.com/ajax/libs/jqueryui/1.11.4/jquery-ui.min.js"></script>
  7. <script type="text/javascript">
  8.  
  9. function checkForTimeSheet(formatStart, formatEnd) {
  10. $.ajax({
  11. url: '/TimeEntry/CheckForTimeSheet',
  12. type: 'POST',
  13. data: {
  14. Start: formatStart,
  15. End: formatEnd
  16. },
  17. success: function (data) {
  18. //Adds a row for each previously entered week
  19. var entryLineCounter = 1;
  20. if (data.length > 0) {
  21. for (var i = 0; i < data.length; i++) {
  22. $("tr[id*='EntryLine']").last().after("<tr id='EntryLine" + entryLineCounter + "'> <td></td><td><input type='text' name='Project' id='Project' value='" + data[i]["ProjectId"] + "' readonly hidden/><input type='text' name='ProjectName' id='ProjectName' value='" + data[i]["ProjectName"] + "' readonly/></td><td><select><option>Test Option</option></select></td><td><input type='text' name='Monday' id='Monday' class='textGroup' value='" + data[i]["Monday"] + "' onclick='this.focus();this.select();'/></td><td><input type='text' name='Tuesday' id='Tuesday' class='textGroup' value='" + data[i]["Tuesday"] + "' onclick='this.focus();this.select();'/></td><td><input type='text' name='Wednesday' id='Wednesday' class='textGroup' value='" + data[i]["Wednesday"] + "' onclick='this.focus();this.select();'/></td><td><input type='text' name='Thursday' id='Thursday' class='textGroup' value='" + data[i]["Thursday"] + "' onclick='this.focus();this.select();'/></td><td><input type='text' name='Friday' id='Friday' class='textGroup' value='" + data[i]["Friday"] + "' onclick='this.focus();this.select();'/></td><td><input type='text' id='Saturday' name='Saturday' class='textGroup' value='" + data[i]["Saturday"] + "' onclick='this.focus();this.select();'/></td><td><input type='text' name='Sunday' id='Sunday' class='textGroup' value='" + data[i]["Sunday"] + "' onclick='this.focus();this.select();'/></td></tr>");
  23. entryLineCounter++;
  24. }
  25. }
  26.  
  27. },
  28. error: function (data) {
  29. //does nothing as the week doesn't exist
  30.  
  31. }
  32. });
  33. }
  34.  
  35. function getUserProjects() {
  36. $.ajax({
  37. url: '/TimeEntry/GetUserProjects',
  38. type: 'POST',
  39. data: {
  40.  
  41. },
  42. success: function (data) {
  43. for (var i = 0; i < data.length; i++) {
  44. var theName = data[i]["Name"]
  45. var theId = data[i]["Id"]
  46. $("tr[id='EntryLine']").children().children('#Project').append(new Option(theName, theId));
  47. }
  48. },
  49. error: function () {
  50. alert('You are not assigned to any projects, please contact your administrator.');
  51. }
  52. });
  53. }
  54.  
  55. function removePreviousEntries() {
  56. $("tr[id^='EntryLine']").each(function () {
  57. if ($(this).attr("id") === "EntryLine") {
  58.  
  59. } else {
  60. $(this).remove();
  61. }
  62. });
  63. }
  64.  
  65. function DaysInMonth(month, year) {
  66. return new Date(year, month, 0).getDate();
  67. }
  68. function showDates(startDate) {
  69. $(".th-day").each(function () {
  70.  
  71.  
  72. });
  73. }
  74. $(function () {
  75.  
  76. //Begin Initial page load
  77. var date = new Date();
  78. var rawStartDate = new Date(date.getFullYear(), date.getMonth(), date.getDate() - date.getDay());
  79. var rawEndDate = new Date(date.getFullYear(), date.getMonth(), date.getDate() - date.getDay() + 6);
  80. $('#startDate').text($.datepicker.formatDate('mm/dd/yy', rawStartDate));
  81. $('#endDate').text($.datepicker.formatDate('mm/dd/yy',rawEndDate));
  82. var formatStart = Number(rawStartDate.getMonth() + 1) + '/' + rawStartDate.getDate() + '/' + rawStartDate.getFullYear();
  83. var formatEnd = Number(rawEndDate.getMonth() + 1) + '/' + rawEndDate.getDate() + '/' + rawEndDate.getFullYear();
  84. checkForTimeSheet(formatStart, formatEnd);
  85. getUserProjects();
  86. showDates(rawStartDate);
  87.  
  88.  
  89. //End Initial Page load
  90.  
  91. //Begin Week Button Controls
  92. $('#previous-week').button().click(function (event) {
  93. event.preventDefault();
  94. rawStartDate = new Date(rawStartDate.getFullYear(), rawStartDate.getMonth(), rawStartDate.getDate() - rawStartDate.getDay() - 7)
  95. rawEndDate = new Date(rawEndDate.getFullYear(), rawEndDate.getMonth(), rawEndDate.getDate() - rawEndDate.getDay() - 1);
  96. $('#startDate').text($.datepicker.formatDate('mm/dd/yy', rawStartDate));
  97. $('#endDate').text($.datepicker.formatDate('mm/dd/yy', rawEndDate));
  98. var formatStart = Number(rawStartDate.getMonth() + 1) + '/' + rawStartDate.getDate() + '/' + rawStartDate.getFullYear();
  99. var formatEnd = Number(rawEndDate.getMonth() + 1) + '/' + rawEndDate.getDate() + '/' + rawEndDate.getFullYear();
  100. removePreviousEntries();
  101. checkForTimeSheet(formatStart, formatEnd);
  102.  
  103. });
  104.  
  105. $('#next-week').button().click(function (event) {
  106. event.preventDefault();
  107. rawStartDate = new Date(rawStartDate.getFullYear(), rawStartDate.getMonth(), rawStartDate.getDate() - rawStartDate.getDay() + 7)
  108. rawEndDate = new Date(rawEndDate.getFullYear(), rawEndDate.getMonth(), rawEndDate.getDate() - rawEndDate.getDay() + 13);
  109. $('#startDate').text($.datepicker.formatDate('mm/dd/yy', rawStartDate));
  110. $('#endDate').text($.datepicker.formatDate('mm/dd/yy', rawEndDate));
  111. var formatStart = Number(rawStartDate.getMonth() + 1) + '/' + rawStartDate.getDate() + '/' + rawStartDate.getFullYear();
  112. var formatEnd = Number(rawEndDate.getMonth() + 1) + '/' + rawEndDate.getDate() + '/' + rawEndDate.getFullYear();
  113. removePreviousEntries();
  114. checkForTimeSheet(formatStart, formatEnd);
  115. });
  116.  
  117. //End Week Button Controls
  118.  
  119. //Submit Time Shet Controls
  120. $('#submit-time').button().click(function (event) {
  121. var TimeEntries = [];
  122. $("tr[id^='EntryLine']").each(function () {
  123. var Project = $(this).find("#Project").val();
  124. var Monday = $(this).find("#Monday").val();
  125. var Tuesday = $(this).find("#Tuesday").val();
  126. var Wednesday = $(this).find("#Wednesday").val();
  127. var Thursday = $(this).find("#Thursday").val();
  128. var Friday = $(this).find("#Friday").val();
  129. var Saturday = $(this).find("#Saturday").val();
  130. var Sunday = $(this).find("#Sunday").val();
  131. var LineEntry =
  132. {
  133.  
  134. ProjectId: Project,
  135. Monday: Monday,
  136. Tuesday: Tuesday,
  137. Wednesday: Wednesday,
  138. Thursday: Thursday,
  139. Friday: Friday,
  140. Saturday: Saturday,
  141. Sunday: Sunday
  142.  
  143. };
  144. TimeEntries.push(LineEntry);
  145. });
  146. event.preventDefault();
  147. var formatStart = Number(startDate.getMonth() + 1) + '/' + startDate.getDate() + '/' + startDate.getFullYear();
  148. var formatEnd = Number(endDate.getMonth() + 1) + '/' + endDate.getDate() + '/' + endDate.getFullYear();
  149.  
  150. $.ajax({
  151. url: '/TimeEntry/SubmitTimeSheet',
  152. type: 'POST',
  153. data: {
  154. Start: formatStart,
  155. End: formatEnd,
  156. TimeEntry: JSON.stringify(TimeEntries)
  157. }
  158. ,
  159. success: function (data) {
  160. alert("Time Entry Data Saved");
  161. },
  162. error: function () {
  163. alert("Failed to save time entry please try again later.");
  164. }
  165. });
  166. });
  167.  
  168. $('#lock-time').button().click(function (event) {
  169. event.preventDefault();
  170. });
  171.  
  172. //End Time Sheet Controls
  173.  
  174. // Begin add Line
  175. $('#addLine').button().click(function (event) {
  176. event.preventDefault();
  177. var EntryList = $("tr[id*='EntryLine']");
  178. $("tr[id*='EntryLine']").last().after("<tr id='EntryLine" + EntryList.length + "'> <td></td><td><select id='Project' name='Project'></select></td><td><select><option>Test Option</option></select></td><td><input type='text' name='Monday' id='Monday' value='0' class='textGroup' onclick='this.focus();this.select();'/></td><td><input type='text' name='Tuesday' id='Tuesday' value='0' class='textGroup' onclick='this.focus();this.select();'/></td><td><input type='text' name='Wednesday' id='Wednesday' value='0' class='textGroup' onclick='this.focus();this.select();'/></td><td><input type='text' name='Thursday' id='Thursday' value='0' class='textGroup' onclick='this.focus();this.select();'/></td><td><input type='text' name='Friday' id='Friday' value='0' class='textGroup' onclick='this.focus();this.select();'/></td><td><input type='text' id='Saturday' name='Saturday' value='0' class='textGroup' onclick='this.focus();this.select();'/></td><td><input type='text' name='Sunday' id='Sunday' value='0' class='textGroup' onclick='this.focus();this.select();'/></td><td><textbox id='totalLine'></textbox></td></tr>");
  179. $.ajax({
  180. url: '/TimeEntry/GetUserProjects',
  181. type: 'POST',
  182. data: {
  183.  
  184. },
  185. success: function (data) {
  186. for (var i = 0; i < data.length; i++) {
  187. var theName = data[i]["Name"]
  188. var theId = data[i]["Id"]
  189. $("tr[id='EntryLine"+EntryList.length+"']").children().children('#Project').append(new Option(theName, theId));
  190. }
  191. },
  192. error: function () {
  193. alert('You are not assigned to any projects, please contact your administrator.');
  194. }
  195. });
  196. });
  197.  
  198. //End Add Line
  199.  
  200. // Live Functions
  201. $(document).on('change', '.textGroup', function () {
  202. var totalValue = 0;
  203. $(this).closest("tr[id*='EntryLine']").children().children('.textGroup').each(function () {
  204. var tempVal = parseInt($(this).val());
  205. totalValue += tempVal;
  206. console.log($(this).val());
  207. });
  208. $(this).closest("tr[id*='EntryLine']").children().children('#totalLine').text(totalValue);
  209. });
  210. $(document).on('change keyup', '.textGroup', function () {
  211. var sanitized = $(this).val().replace(/[^0-9.]/g, '0');
  212. sanitized = sanitized.replace(/\.(?=.*\.)/, '');
  213. $(this).val(sanitized);
  214. });
  215.  
  216. // End Live Functions
  217. });
  218. </script>
  219. <div class="week-picker"></div>
  220. <br /><br />
  221. <button id="previous-week">Previous Week</button>
  222. <label>Week :</label> <span id="startDate"></span> - <span id="endDate"></span>
  223. <button id="next-week">Next Week</button>
  224. <div id="timesheet">
  225. <table id="timeGrid">
  226. <tbody>
  227.  
  228. <tr>
  229. <th><button id="addLine">Add</button></th>
  230. <th>Project </th>
  231. <th>Activity</th>
  232. <th class="th-day">Monday</th>
  233. <th class="th-day">Tuesday</th>
  234. <th class="th-day">Wednesday</th>
  235. <th class="th-day">Thursday</th>
  236. <th class="th-day">Friday</th>
  237. <th class="th-day">Saturday</th>
  238. <th class="th-day">Sunday</th>
  239. <th>Total</th>
  240. </tr>
  241.  
  242. <tr id="EntryLine">
  243. <td><!-- Space Holder--></td>
  244. <td><select id="Project" name="Project"></select></td>
  245. <td><select id="Activity" name="Activity"><option>Test Option</option></select></td>
  246. <td>@Html.TextBox("Monday", "0", new { @class = "textGroup", @onclick="this.focus();this.select();" })</td>
  247. <td>@Html.TextBox("Tuesday", "0", new { @class = "textGroup", @onclick = "this.focus();this.select();" })</td>
  248. <td>@Html.TextBox("Wednesday", "0", new { @class = "textGroup", @onclick = "this.focus();this.select();" })</td>
  249. <td>@Html.TextBox("Thursday", "0", new { @class = "textGroup", @onclick = "this.focus();this.select();" })</td>
  250. <td>@Html.TextBox("Friday", "0", new { @class = "textGroup", @onclick = "this.focus();this.select();" })</td>
  251. <td>@Html.TextBox("Saturday", "0", new { @class = "textGroup", @onclick = "this.focus();this.select();" })</td>
  252. <td>@Html.TextBox("Sunday", "0", new { @class = "textGroup", @onclick = "this.focus();this.select();" })</td>
  253. <td><textbox id="totalLine"></textbox></td>
  254. </tr>
  255.  
  256. </tbody>
  257.  
  258. </table>
  259. <button id="submit-time">Save Time</button>
  260. <button id="lock-time">Submit for Approval</button>
  261. </div>
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement