Advertisement
Guest User

gantt

a guest
Oct 16th, 2019
81
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 4.59 KB | None | 0 0
  1. angular.module('master', [])
  2. .controller('GanttChart', function() {
  3.  
  4.  
  5. var gantt = this;
  6.  
  7. gantt.test = "asdasdasd"
  8.  
  9. getAllDatesInOctober = function(year, month) {
  10. var result = [];
  11.  
  12. var monthStart = new Date(year, month, 1);
  13. var monthEnd = new Date(year, month + 1, 0);
  14.  
  15. for (var i = monthStart.getDate(); i <= monthEnd.getDate(); i++) {
  16. var tmp_month = month + 1;
  17. result.push(year + '-' + tmp_month + '-' + i);
  18. }
  19.  
  20. return result;
  21. }
  22.  
  23. gantt.allDates = getAllDatesInOctober(2019, 9);
  24.  
  25.  
  26. gantt.mockData = [
  27. {
  28. no: 1,
  29. isStage: true,
  30. parent: 'brak',
  31. number: 'FS/DASD/34343',
  32. name: 'Nazwa pierwszego zadania',
  33. amount: 1000,
  34. dateStart: '2019-10-3',
  35. dateEnd: '2019-10-8'
  36. },
  37. {
  38. no: 2,
  39. isStage: true,
  40. parent: 'brak',
  41. number: 'SDS/DASD/34343',
  42. name: 'Drugie zadanie',
  43. amount: 673,
  44. dateStart: '2019-10-6',
  45. dateEnd: '2019-10-15'
  46. },
  47. {
  48. no: 3,
  49. isStage: true,
  50. parent: 'brak',
  51. number: 'FSDD/DASD/34343',
  52. name: 'Trzecie zadanie test',
  53. amount: 23333,
  54. dateStart: '2019-10-23',
  55. dateEnd: '2019-10-29'
  56. },
  57. {
  58. no: 4,
  59. isStage: false,
  60. parent: 3,
  61. number: 'AAA/DASD/34343',
  62. name: 'Podzadanie w etapie trzecim',
  63. amount: 333,
  64. dateStart: '2019-10-13',
  65. dateEnd: '2019-10-17'
  66. }
  67. ]
  68.  
  69. gantt.isFitted = function(mock, date) {
  70. var tmpStart = new Date(mock.dateStart).getTime();
  71. var tmpEnd = new Date(mock.dateEnd).getTime();
  72. var datee = new Date(date).getTime();
  73.  
  74. if (datee >= tmpStart && datee <= tmpEnd) {
  75. return true;
  76. } else {
  77. return false;
  78. }
  79. }
  80.  
  81. gantt.hasAnyChilds = function(mock) {
  82. gantt.mockData.forEach(element => {
  83. // console.log(element)
  84. if (element.parent === mock.no) {
  85. return true;
  86. }
  87. });
  88. }
  89.  
  90. });
  91.  
  92.  
  93.  
  94.  
  95.  
  96. <!doctype html>
  97. <html ng-app="master">
  98. <head>
  99. <script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.7.8/angular.min.js"></script>
  100. <script src="index.js"></script>
  101. <link rel="stylesheet" href="style.css">
  102. </head>
  103. <body>
  104.  
  105. <h2>Diagram Gantt'a</h2>
  106.  
  107. <div ng-controller="GanttChart as gantt">
  108.  
  109.  
  110. <table class="table">
  111. <thead>
  112. <tr>
  113. <th></th>
  114. <th>Nazwa</th>
  115. <th>Numer</th>
  116. <th>Planowana kwota</th>
  117. <th>Data rozpoczecia</th>
  118. <th>Data zakonczenia</th>
  119. <th ng-repeat="date in gantt.allDates">
  120. <span>{{date}}</span>
  121. </th>
  122. </tr>
  123. </thead>
  124.  
  125. <tbody>
  126. <tr style="background-color: antiquewhite" ng-repeat="mock in gantt.mockData" ng-show="mock.isStage">
  127. <td>{{mock.no}}.</td>
  128. <td>{{mock.name}} <span ng-if="gantt.hasAnyChilds(mock)">R</span></td>
  129. <td>{{mock.number}}</td>
  130. <th>{{mock.amount}} PLN</th>
  131. <th>{{mock.dateStart}}</th>
  132. <th>{{mock.dateEnd}}</th>
  133. <th ng-repeat="date in gantt.allDates">
  134. <div ng-if="gantt.isFitted(mock, date)" style="width: 100%; height: 100%; background-color: darkred; padding: 0;">
  135. &nbsp;
  136. </div>
  137.  
  138. <div ng-if="!gantt.isFitted(mock, date)">
  139. &nbsp;
  140. </div
  141. </th>
  142. </tr>
  143.  
  144. </tbody>
  145.  
  146.  
  147. </table>
  148.  
  149. </div>
  150.  
  151.  
  152. </body>
  153. </html>
  154.  
  155.  
  156.  
  157.  
  158. td, th {
  159. border: 0.5px solid black;
  160. padding: 3px;
  161. }
  162.  
  163. /* th {
  164. height: 60px;
  165. border: 0.2px solid black;
  166. width: 30px;
  167. } */
  168.  
  169. span {
  170. -ms-writing-mode: tb-rl;
  171. -webkit-writing-mode: vertical-rl;
  172. writing-mode: vertical-rl;
  173. transform: rotate(180deg);
  174. white-space: nowrap;
  175. }
  176.  
  177. table {
  178. font-size: 14px;
  179. border-spacing: 0;
  180. }
  181.  
  182. .selected {
  183. background-color: red;
  184. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement