gdel.component.html 9.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179
  1. <main class="main-container" (window:resize)="onResize()">
  2. <!-- <header id="navigation" class="btn-navigate mb-8">
  3. <div class="prev-page prevent-select indigo_primary_background mat-elevation-z8" matRipple
  4. (click)="goBack(1)">
  5. <mat-icon style="color: white">arrow_back</mat-icon>
  6. <div class="page-name ml-4">Regresar</div>
  7. </div>
  8. </header> -->
  9. <app-btn-navigate navigate="goback" nameButton="Regresar" />
  10. <mat-card class="override-card override-elevation-z8 prevent-select animated fadeIn">
  11. <div class="horizontal-container">
  12. <div class="left-panel">
  13. <div class="new-file-button" (click)="openUploadDialog()" [ngClass]="{ new_file_button_enabled: !isFromModule && registerDocumentsEnabled,
  14. new_file_button_disabled: isFromModule || !registerDocumentsEnabled }">
  15. <mat-icon class="mr-8">add</mat-icon>
  16. Registrar archivo
  17. </div>
  18. <div class="selector-button mt-20" [ngClass]="{ category_selected: category == 'my-files' }" (click)="updateCategory('my-files')">
  19. <mat-icon class="mr-8">folder_shared</mat-icon>
  20. Mis archivos
  21. </div>
  22. <div class="selector-button mt-8" [ngClass]="{ category_selected: category == 'shared' }" (click)="updateCategory('shared')">
  23. <mat-icon class="mr-8">group</mat-icon>
  24. Compartidos conmigo
  25. </div>
  26. <div class="selector-button mt-8" [ngClass]="{ category_selected: category == 'deleted' }" (click)="updateCategory('deleted')">
  27. <mat-icon class="mr-8">delete</mat-icon>
  28. Papelera
  29. </div>
  30. </div>
  31. <div class="content-container">
  32. <div class="actions-container">
  33. <mat-form-field appearance="outline" style="margin-bottom: -22px !important; width: 20%;" class="mr-4">
  34. <mat-label>Módulo</mat-label>
  35. <mat-select [formControl]="moduleControl">
  36. <mat-option>--Nungúno--</mat-option>
  37. <mat-option *ngFor="let module of modulesArr" [value]="module.code">
  38. {{ module.name }}
  39. </mat-option>
  40. </mat-select>
  41. </mat-form-field>
  42. <mat-form-field appearance="outline" style="margin-bottom: -22px !important; width: 20%;" class="mr-4">
  43. <mat-label>Clasificación</mat-label>
  44. <mat-select [formControl]="clasificationControl">
  45. <mat-option>--Ningúna--</mat-option>
  46. <mat-option *ngFor="let clas of clasificationsArr" [value]="clas.code">
  47. {{ clas.category }}
  48. </mat-option>
  49. </mat-select>
  50. </mat-form-field>
  51. <mat-form-field appearance="outline" style="margin-bottom: -22px !important; width: 20%;" class="mr-4">
  52. <mat-label>Rango de fechas</mat-label>
  53. <input matInput (click)="openDateRangePicker()" #dateRange [formControl]="datesRangeControl">
  54. <button [disabled]="dateRange.value == ''" mat-icon-button matSuffix (click)="clearDatesRange()">
  55. <mat-icon>close</mat-icon>
  56. </button>
  57. </mat-form-field>
  58. <mat-form-field appearance="outline" style="margin-bottom: -22px !important; width: 20%;" class="mr-4">
  59. <mat-label>Nombre del archivo</mat-label>
  60. <input matInput [formControl]="fileNameControl">
  61. </mat-form-field>
  62. <mat-form-field appearance="outline" style="margin-bottom: -22px !important; width: 20%;">
  63. <mat-label>Tipo de archivo</mat-label>
  64. <mat-select [formControl]="fileTypeControl">
  65. <mat-option>--Nungúno--</mat-option>
  66. <mat-optgroup *ngFor="let group of supportedFilesArr" [label]="group.category">
  67. <mat-option *ngFor="let item of group.files" [value]="item.ext">
  68. <span *ngIf="item.name != ''" class="mr-4">{{ item.name }}</span>({{ item.ext }})
  69. </mat-option>
  70. </mat-optgroup>
  71. </mat-select>
  72. </mat-form-field>
  73. <a class="hidden" target="_blank" id="download"></a>
  74. </div>
  75. <div class="files-table-container">
  76. <div class="is-loading animated fadeIn fast" *ngIf="isLoading">
  77. <mat-spinner align="center"></mat-spinner>
  78. <h3>Cargando datos ...</h3>
  79. </div>
  80. <div class="is-loading animated fadeIn fast" *ngIf="!isLoading && hasError">
  81. <mat-icon style="transform: scale(4.5);margin: 45px 0;" class="red_primary_font">error</mat-icon>
  82. <h3>{{ errorStr }}</h3>
  83. </div>
  84. <div class="file-table-results animated fadeIn" [ngClass]="{ hidden: !(!isLoading && !hasError && documentsManagementEnabled) }">
  85. <div class="file-table">
  86. <table mat-table [dataSource]="dataSource!" matSort class="animated fadeIn"
  87. [style.display]="!isLoading ? 'revert' : 'none'">
  88. <ng-container matColumnDef="CODIGO">
  89. <th mat-header-cell *matHeaderCellDef mat-sort-header>Código</th>
  90. <td mat-cell *matCellDef="let row">{{ row.CODIGO }}</td>
  91. </ng-container>
  92. <ng-container matColumnDef="VERSION">
  93. <th mat-header-cell *matHeaderCellDef mat-sort-header>Versión</th>
  94. <td mat-cell *matCellDef="let row">{{ row.VERSION }}</td>
  95. </ng-container>
  96. <ng-container matColumnDef="NOMBRE">
  97. <th mat-header-cell *matHeaderCellDef mat-sort-header>Nombre</th>
  98. <td mat-cell *matCellDef="let row">{{ row.NOMBRE }}</td>
  99. </ng-container>
  100. <ng-container matColumnDef="TAMANIO">
  101. <th mat-header-cell *matHeaderCellDef mat-sort-header>Tamaño</th>
  102. <td mat-cell *matCellDef="let row">{{ row.TAMANIO }}</td>
  103. </ng-container>
  104. <ng-container matColumnDef="USRREG">
  105. <th mat-header-cell *matHeaderCellDef mat-sort-header>Propietario</th>
  106. <td mat-cell *matCellDef="let row">{{ row.USRREG }}</td>
  107. </ng-container>
  108. <ng-container matColumnDef="ACCESO">
  109. <th mat-header-cell *matHeaderCellDef mat-sort-header>Usuarios con acceso</th>
  110. <td mat-cell *matCellDef="let row">
  111. <div class="avatars-container">
  112. <div *ngFor="let user of row.ACCESO; let i = index" [style.background]="user.userColor" class="access-avatar"
  113. [ngClass]="{ separate: i < row.ACCESO.length - 1 }" [matTooltip]="user.userName"
  114. (click)="openAccessDialog(row.CODIGO, row.VERSION, row.NOMBRE, user.isTrigger, category == 'deleted')">
  115. {{ user.userLabel }}
  116. </div>
  117. </div>
  118. </td>
  119. </ng-container>
  120. <ng-container matColumnDef="ACCIONES">
  121. <th mat-header-cell *matHeaderCellDef mat-sort-header>Acciones</th>
  122. <td mat-cell *matCellDef="let row">
  123. <button mat-icon-button [matMenuTriggerFor]="menu" [disabled]="category == 'deleted'">
  124. <mat-icon>more_vert</mat-icon>
  125. </button>
  126. <mat-menu #menu>
  127. <button mat-menu-item (click)="downloadFile(row.CODIGO, row.VERSION, row.NOMBRE)" [disabled]="!documentsEditorEnabled">
  128. <mat-icon>download</mat-icon>
  129. <span>Descargar archivo</span>
  130. </button>
  131. <button mat-menu-item (click)="openViewer(row.CODIGO, row.VERSION, row.NOMBRE)" [disabled]="!documentsViewerEnabled">
  132. <mat-icon>open_in_new</mat-icon>
  133. <span>Abrir archivo</span>
  134. </button>
  135. <button mat-menu-item (click)="openShareDialog(row.CODIGO, row.VERSION, row.NOMBRE)" [disabled]="!shareDocumentsEnabled">
  136. <mat-icon>person_add</mat-icon>
  137. <span>Compartir</span>
  138. </button>
  139. <button mat-menu-item (click)="openAssociationDialog(row.CODIGO, row.VERSION, row.NOMBRE)">
  140. <mat-icon>list_alt</mat-icon>
  141. <span>Órdenes de trabajo asociadas</span>
  142. </button>
  143. <button mat-menu-item *ngIf="category == 'my-files'" (click)="confirmDelete(row.CODIGO, row.VERSION, row.NOMBRE)">
  144. <mat-icon>delete</mat-icon>
  145. <span>Eliminar</span>
  146. </button>
  147. </mat-menu>
  148. </td>
  149. </ng-container>
  150. <tr mat-header-row *matHeaderRowDef="displayedColumns"></tr>
  151. <tr mat-row *matRowDef="let row; columns: displayedColumns"></tr>
  152. <tr class="mat-row" *matNoDataRow>
  153. <td class="mat-cell p-80 centre" colspan="100%">
  154. <object data="assets/img/empty_data.svg" width="300"></object>
  155. <h2>Sin datos</h2>
  156. </td>
  157. </tr>
  158. </table>
  159. </div>
  160. <mat-paginator [pageSizeOptions]="[10, 50, 100]" class="override-paginator"></mat-paginator>
  161. </div>
  162. <div class="animated fadeIn" *ngIf="!isLoading && !hasError && !documentsManagementEnabled">
  163. <h3 class="ml-20"><b>Su perfil no cuenta con los permisos necesarios para visualizar la información de esta sección.</b></h3>
  164. </div>
  165. </div>
  166. </div>
  167. </div>
  168. </mat-card>
  169. </main>