Vous ne pouvez pas sélectionner plus de 25 sujets Les noms de sujets doivent commencer par une lettre ou un nombre, peuvent contenir des tirets ('-') et peuvent comporter jusqu'à 35 caractères.
 
 
 
 

197 lignes
11 KiB

  1. <div class="home-container pb-5">
  2. <div class="pt-4">
  3. <div class="container">
  4. <h1>{{ 'user.hello' | translate }} {{ user?.firstName }}!</h1>
  5. <!-- <p *ngIf="userIsAdmin"><a routerLink="/users">Manage Users</a></p>-->
  6. </div>
  7. </div>
  8. <div class="spt-home-cards">
  9. <div class="container">
  10. <div class="row pt-4 pb-4 d-flex">
  11. <div class="col d-flex">
  12. <a class="card" routerLink="/customer" routerLinkActive="active">
  13. <div class="card-body position-relative bi bi-emoji-heart-eyes">
  14. <h3 class="position-absolute m-0">{{ 'basic.customer' | translate }}</h3>
  15. </div>
  16. </a>
  17. </div>
  18. <div class="col d-flex">
  19. <a class="card" routerLink="/supplier" routerLinkActive="active">
  20. <div class="card-body position-relative bi bi-emoji-kiss">
  21. <h3 class="position-absolute m-0">{{ 'basic.supplier' | translate }}</h3>
  22. </div>
  23. </a>
  24. </div>
  25. <div class="col d-flex">
  26. <a class="card" routerLink="/service" routerLinkActive="active">
  27. <div class="card-body position-relative bi bi-emoji-smile">
  28. <h3 class="position-absolute m-0">{{ 'basic.service' | translate }}</h3>
  29. </div>
  30. </a>
  31. </div>
  32. </div>
  33. </div>
  34. <div class="container mb-5">
  35. <div class="row pt-4 pb-4 d-flex">
  36. <div class="col d-flex">
  37. <a class="card" routerLink="/products" routerLinkActive="active">
  38. <div class="card-body position-relative bi bi-droplet-fill">
  39. <h3 class="position-absolute m-0">{{ 'basic.products' | translate }}</h3>
  40. </div>
  41. </a>
  42. </div>
  43. <div class="col d-flex">
  44. <a class="card" routerLink="/tasks" routerLinkActive="active">
  45. <div class="card-body position-relative bi bi-list-check">
  46. <h3 class="position-absolute m-0">{{ 'basic.tasks' | translate }}</h3>
  47. </div>
  48. </a>
  49. </div>
  50. <div class="col d-flex">
  51. <a class="card" routerLink="/documents" routerLinkActive="active">
  52. <div class="card-body position-relative bi bi-journals">
  53. <h3 class="position-absolute m-0">{{ 'basic.documents' | translate }}</h3>
  54. </div>
  55. </a>
  56. </div>
  57. </div>
  58. </div>
  59. </div>
  60. <div class="container spt-container">
  61. <app-toggle #togglePosts [headline]="('user.my' | translate) + ' ' + ('basic.tasks' | translate)">
  62. <div class="spt-accordion position-relative">
  63. <button class="btn btn-primary toggle-btn"
  64. (click)="openModalNewTask()">{{ 'basic.new-task' | translate }}
  65. </button>
  66. <div class="tasks mb-3" *ngFor="let task of tasks">
  67. <div class="card p-3">
  68. <div class="position-relative">
  69. <h3 class="m-0" *ngIf="task.partner"><a href="/{{task.partnerType}}/{{apiHelperService.extractId(task.partner)}}">{{task.partnerName}}</a></h3>
  70. <span class="info d-flex position-absolute">
  71. <span class="due-date">{{ task.dueAt | date:'dd.MM.YYYY':'GMT+0000' }}</span>
  72. <span class="importance" [attr.data-importance]="task.prio"></span>
  73. </span>
  74. <h2 class="m-0">{{ task.headline }}</h2>
  75. <div class="pt-3 pe-5 position-relative">
  76. <p class="m-0" [innerHTML]="apiHelperService.getSafeLongtext(task.description)"></p>
  77. <p>Zugewiesen an: {{ task.assignedToName }}</p>
  78. <span *ngIf="task.createdBy === user?.id" class="position-absolute bi bi-pencil p-2"
  79. data-type="user-tool" data-action="edit" (click)="openModalEditTask(task)"></span>
  80. </div>
  81. </div>
  82. </div>
  83. <ng-container *ngIf="task.id && taskNotesVisibility.get(task.id)">
  84. <div class="card ms-5" *ngFor="let taskNote of task.taskNotes">
  85. <div class="card-body">
  86. <div class="d-flex justify-content-between align-items-center">
  87. <p>{{ taskNote.createdAt | date:'dd.MM.YYYY' }}</p>
  88. <p>{{ taskNote.ownerName }}</p>
  89. </div>
  90. <div>
  91. <p>{{ taskNote.message }}</p>
  92. </div>
  93. <span *ngIf="taskNote.owner === user?.id" class="position-absolute bi bi-pencil p-2"
  94. data-type="user-tool" data-action="edit"
  95. (click)="openModalEditTaskNote(taskNote)"></span>
  96. </div>
  97. </div>
  98. </ng-container>
  99. <div class="d-flex justify-content-end mt-1">
  100. <span *ngIf="task.taskNotes?.length !== 0" role="button" class="badge bg-secondary p-2 me-2"
  101. (click)="showTaskNotes(task)">
  102. <ng-container
  103. *ngIf="task.id && taskNotesVisibility.get(task.id)">{{ 'basic.hide-comments' | translate }}</ng-container>
  104. <ng-container
  105. *ngIf="task.id && !taskNotesVisibility.get(task.id)">{{ 'basic.show-comments' | translate }}</ng-container>
  106. </span>
  107. <span role="button" class="badge bg-secondary p-2"
  108. (click)="openModalNewTaskNote(task)">{{ 'basic.comment-it' | translate }}</span>
  109. </div>
  110. </div>
  111. <mat-paginator *ngIf="tasks.length > 0" class="rounded-1"
  112. [pageSizeOptions]="[10,20,30]"
  113. [length]="tasksLength"
  114. (page)="tasksHandlePageEvent($event)"
  115. [pageSize]="tasksPageSize"
  116. [pageIndex]="tasksPageIndex"
  117. showFirstLastButtons>
  118. </mat-paginator>
  119. </div>
  120. </app-toggle>
  121. </div>
  122. <!-- <div class="container spt-container">-->
  123. <!-- <div class="d-flex justify-content-between align-items-start">-->
  124. <!-- <h2>{{'user.my' | translate}} {{'basic.customer' | translate}}</h2>-->
  125. <!-- </div>-->
  126. <!-- <table mat-table [dataSource]="dataSource" matSort (matSortChange)="onSortChange($event)"-->
  127. <!-- class="mat-elevation-z8 mb-3">-->
  128. <!-- <ng-container matColumnDef="pos">-->
  129. <!-- <th mat-header-cell *matHeaderCellDef>-->
  130. <!-- {{ 'overview.number' | translate }}-->
  131. <!-- </th>-->
  132. <!-- <td mat-cell-->
  133. <!-- *matCellDef="let element">{{ (pageSize * pageIndex) + dataSource.filteredData.indexOf(element) + 1 }}-->
  134. <!-- </td>-->
  135. <!-- </ng-container>-->
  136. <!-- <ng-container matColumnDef="image">-->
  137. <!-- <th mat-header-cell *matHeaderCellDef>-->
  138. <!-- {{ 'overview.logo' | translate }}-->
  139. <!-- </th>-->
  140. <!-- <td mat-cell *matCellDef="let element">-->
  141. <!-- <img role="button" src="{{ element.logoUrl }}" (click)="navigateToPartnerDetails(element)" width="40"-->
  142. <!-- height="40"/>-->
  143. <!-- </td>-->
  144. <!-- </ng-container>-->
  145. <!-- <ng-container matColumnDef="name">-->
  146. <!-- <th mat-header-cell *matHeaderCellDef mat-sort-header-->
  147. <!-- sortActionDescription="{{ 'overview.sort' | translate }}: {{ partnerNameOne }}">-->
  148. <!-- {{ partnerNameOne }}-->
  149. <!-- </th>-->
  150. <!-- <td mat-cell *matCellDef="let element"><span role="button"-->
  151. <!-- (click)="navigateToPartnerDetails(element)">{{ element.name }}</span>-->
  152. <!-- </td>-->
  153. <!-- </ng-container>-->
  154. <!-- <ng-container matColumnDef="address">-->
  155. <!-- <th mat-header-cell *matHeaderCellDef mat-sort-header="address"-->
  156. <!-- sortActionDescription="{{ 'overview.sort' | translate }}: {{ 'overview.address' | translate }}">-->
  157. <!-- {{ 'overview.address' | translate }}-->
  158. <!-- </th>-->
  159. <!-- <td mat-cell *matCellDef="let element">{{ element.street }} {{ element.streetNo }}-->
  160. <!-- <br/>{{ element.zip }} {{ element.city }}-->
  161. <!-- <br/>{{ element.country }}-->
  162. <!-- </td>-->
  163. <!-- </ng-container>-->
  164. <!-- <ng-container matColumnDef="website">-->
  165. <!-- <th mat-header-cell *matHeaderCellDef mat-sort-header-->
  166. <!-- sortActionDescription="{{ 'overview.sort' | translate }}: {{ 'overview.website' | translate }}">-->
  167. <!-- {{ 'overview.website' | translate }}-->
  168. <!-- </th>-->
  169. <!-- <td mat-cell *matCellDef="let element"><a href="{{ element.website }}"-->
  170. <!-- target="_blank">{{ element.website }}</a>-->
  171. <!-- </td>-->
  172. <!-- </ng-container>-->
  173. <!-- <tr mat-header-row *matHeaderRowDef="displayedColumns"></tr>-->
  174. <!-- <tr mat-row *matRowDef="let row; columns: displayedColumns;"></tr>-->
  175. <!-- </table>-->
  176. <!-- <mat-paginator class="rounded-1"-->
  177. <!-- [pageSizeOptions]="[10,25,50]"-->
  178. <!-- [length]="length"-->
  179. <!-- (page)="handlePageEvent($event)"-->
  180. <!-- [pageSize]="pageSize"-->
  181. <!-- [pageIndex]="pageIndex"-->
  182. <!-- showFirstLastButtons>-->
  183. <!-- </mat-paginator>-->
  184. <!-- </div>-->
  185. </div>