equipment-management.component.html 6.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130
  1. <div class="module-container prevent-select animated fadeIn">
  2. <div id="navigation" class="mb-8 animated fadeIn" style="float: left; margin: 20px;">
  3. <div class="prev-page prevent-select indigo_primary_background mat-elevation-z8" matRipple (click)="goBack(1)">
  4. <mat-icon style="color: white;">arrow_back</mat-icon>
  5. <div class="page-name ml-4">Regresar</div>
  6. </div>
  7. </div>
  8. <div class="menu-title animated fadeIn">
  9. <span>Gestión de equipamientos</span>
  10. </div>
  11. <div class="equipment-toolbar">
  12. <div class="arborescence-block" [ngClass]="{ hidden: !isLoading }"></div>
  13. <div class="arborescence-container animated fadeIn" id="arborescence-scroll" [ngClass]="{ hidden: isLoading }">
  14. <div class="arborescence-level-container" *ngFor="let item of arborescence; let i = index" (click)="navigateArborescence(i + 1)">
  15. <span [ngClass]="{ active_arborescence_level: i == arborescence.length - 1, inactive_arborescence_level: i < arborescence.length - 1 }"
  16. style="white-space: nowrap;">
  17. {{ item }}
  18. </span>
  19. <mat-icon class="ml-4 mr-4 arborescence-separator" *ngIf="i < arborescence.length - 1">
  20. arrow_forward_ios
  21. </mat-icon>
  22. </div>
  23. </div>
  24. <button mat-mini-fab color="primary" matTooltip="Configuración" [matMenuTriggerFor]="menu" class="ml-10">
  25. <mat-icon>settings</mat-icon>
  26. </button>
  27. <mat-menu #menu yPosition="below" xPosition="before">
  28. <button mat-menu-item (click)="openEquipmentForm('new')">
  29. <mat-icon>add</mat-icon> Registrar equipamiento
  30. </button>
  31. <button mat-menu-item (click)="manageFamilies()">
  32. <mat-icon>category</mat-icon> Administrar familias
  33. </button>
  34. <button mat-menu-item (click)="manageLocations()">
  35. <mat-icon>pin_drop</mat-icon> Administrar ubicaciones
  36. </button>
  37. <button mat-menu-item (click)="manageOccupations()">
  38. <mat-icon>work</mat-icon> Administrar ocupaciones
  39. </button>
  40. <button mat-menu-item (click)="openGraphicArborescence()">
  41. <mat-icon>account_tree</mat-icon> Vista gráfica de la arborescencia
  42. </button>
  43. <button mat-menu-item (click)="manageEquipmentTypes()">
  44. <mat-icon>checklist</mat-icon> Tipos de equipamientos
  45. </button>
  46. <button mat-menu-item (click)="locationsNavigation()">
  47. <mat-icon>pin_drop</mat-icon> Localización de equipamientos
  48. </button>
  49. <button mat-menu-item (click)="navigateToArborescenceCalendar()">
  50. <mat-icon>event</mat-icon> Calendario de arborescencias
  51. </button>
  52. </mat-menu>
  53. <button mat-mini-fab class="cyan_dark_background white_font ml-10" matTooltip="Actualizar datos" (click)="getPendingEquipments()">
  54. <mat-icon>refresh</mat-icon>
  55. </button>
  56. </div>
  57. <div class="equipment-main-container">
  58. <a class="hidden" id="download"></a>
  59. <div class="loader-container" *ngIf="isLoading">
  60. <mat-spinner></mat-spinner>
  61. <h2 class="loader-label">Cargando...</h2>
  62. </div>
  63. <div class="error-container" *ngIf="!isLoading && hasError">
  64. <mat-icon style="color: #e53935; transform: scale(5); margin-bottom: 48px;">error</mat-icon>
  65. <h1 style="color: #e53935;">¡Error!</h1>
  66. <p style="font-style: italic; font-size: 16px; overflow-wrap: anywhere; text-align: center;">{{ errorStr }}</p>
  67. </div>
  68. <div class="pending-equipments animated fadeIn" *ngIf="!isLoading && !hasError && pendingEquipments.length > 0">
  69. <h2>Equipos en revisión</h2>
  70. <div class="pending-equipments-list">
  71. <app-equipment-card equipmentType="pending" *ngFor="let pendingEquipment of pendingEquipments" [pendingEquipment]="pendingEquipment"
  72. (refreshPendingList)="shouldRefresh($event)"></app-equipment-card>
  73. </div>
  74. </div>
  75. <div class="scroll-vertical animated fadeIn" *ngIf="!isLoading && !hasError" [ngClass]="{ equipments_full_width: pendingEquipments.length == 0,
  76. equipments_partial_width: pendingEquipments.length > 0}">
  77. <div class="equipments-container w-100" *ngIf="!isLoading && !hasError && currentLevel == 1 && families.length > 0">
  78. <app-family-card *ngFor="let family of families" [id]="family.CODIGOFAMILIA" [icon]="family.ICONO" [customIcon]="family.ICONO_PERSONALIZADO"
  79. [family]="family.NOMBREFAMILIA" [iconFile]="family.URL_ICONO!" (familyClicked)="familyClicked($event)"></app-family-card>
  80. </div>
  81. <div class="equipments-container w-100" *ngIf="!isLoading && !hasError && currentLevel == 1 && (families.length == 0)">
  82. <div class="w-100" style="display: flex; justify-content: center; align-items: center;">
  83. <object data="assets/img/empty_data.svg" style="width: 200px;"></object>
  84. </div>
  85. <h3 style="font-weight: 500;">
  86. No se encontraron familias registradas.
  87. </h3>
  88. </div>
  89. <div class="equipments-container w-100" *ngIf="!isLoading && !hasError && currentLevel == 2">
  90. <app-family-card *ngFor="let subfamily of subfamilies" [id]="subfamily.CODIGOSUBFAMILIA" [icon]="subfamily.ICONO"
  91. [family]="subfamily.NOMBRESUBFAMILIA" [iconFile]="subfamily.URL_ICONO!" (familyClicked)="subfamilyClicked($event)"
  92. [customIcon]="subfamily.ICONO_PERSONALIZADO"></app-family-card>
  93. </div>
  94. <div class="equipments-container w-100" *ngIf="!isLoading && !hasError && currentLevel == 2 && (subfamilies.length == 0)">
  95. <div class="w-100" style="display: flex; justify-content: center; align-items: center;">
  96. <object data="assets/img/empty_data.svg" style="width: 200px;"></object>
  97. </div>
  98. <h3 style="font-weight: 500;">
  99. No se encontraron familias registradas.
  100. </h3>
  101. </div>
  102. <div class="no-equipments w-100" *ngIf="!isLoading && !hasError && currentLevel == 3 && equipmentsBySubfamily.length == 0">
  103. <object data="assets/img/empty_data.svg" width="300"></object>
  104. <h2>No se encontraron equipamientos relacionados.</h2>
  105. </div>
  106. <div class="equipments-container w-100" *ngIf="!isLoading && !hasError && currentLevel >= 3">
  107. <app-equipment-details class="w-100" [equipment]="parentEquipmentDetails" *ngIf="currentLevel > 3"
  108. (refreshCriticality)="updateEquipmentCriticality($event)" (printFile)="generateFile($event)"></app-equipment-details>
  109. <app-equipment-card equipmentType="equipment" *ngFor="let equipment of equipmentsBySubfamily" [equipment]="equipment"
  110. (openChildren)="openChildren($event)"></app-equipment-card>
  111. <div class="no-equipments w-100 mt-32" *ngIf="equipmentsBySubfamily.length == 0">
  112. <object data="assets/img/empty_data.svg" width="300"></object>
  113. <h2>No se encontraron equipamientos relacionados.</h2>
  114. </div>
  115. </div>
  116. </div>
  117. </div>
  118. </div>