show-upload.component.html 6.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126
  1. <app-menu></app-menu>
  2. <div id="main">
  3. <form #formRef="ngForm" (ngSubmit)="addPresentationFile()" class="needs-validation">
  4. <div class="card shadow center">
  5. <div class="card-header"><span i18n>Choix du média pour la présentation d'une production</span></div>
  6. <div class="card-header shadow-sm">
  7. <button (click)="goToListPresentation()" class="btn bg-gradient btn-primary btn-sm"><i class="fa-solid fa-xmark"></i>&nbsp;<span i18n>Retour</span></button>
  8. </div>
  9. <div class="card-body scrollable">
  10. <div class="form-group row">
  11. <label class="col-sm-4 col-form-label col-form-label-sm label-nobr"><span i18n>Type</span></label>
  12. <div class="col-sm-8">
  13. <div class="form-group field-separate">
  14. <select class="form-select form-select-sm" id="type" name="type" [(ngModel)]="production.type" disabled>
  15. @for (type of types; track type.key) { <option [value]="type.key">{{ type.value }}</option> }
  16. </select>
  17. </div>
  18. </div>
  19. </div>
  20. <div class="form-group row">
  21. <label class="col-sm-4 col-form-label col-form-label-sm label-nobr"><span i18n>Titre</span></label>
  22. <div class="col-sm-8">
  23. <input type="text" class="form-control form-control-sm field-separate" id="titre" name="titre" [(ngModel)]="production.titre" disabled>
  24. </div>
  25. </div>
  26. <div class="form-group row">
  27. <label class="col-sm-4 col-form-label col-form-label-sm label-nobr"><span i18n>Auteur(s)</span></label>
  28. <div class="col-sm-8">
  29. <input type="text" class="form-control form-control-sm field-separate" id="auteurs" name="auteurs" [(ngModel)]="production.auteurs" disabled>
  30. </div>
  31. </div>
  32. <div class="form-group row">
  33. <label class="col-sm-4 col-form-label col-form-label-sm label-nobr"><span i18n>Groupe(s)</span></label>
  34. <div class="col-sm-8">
  35. <input type="text" class="form-control form-control-sm field-separate" id="groupes" name="groupes" [(ngModel)]="production.groupes" disabled>
  36. </div>
  37. </div>
  38. <div class="form-group row">
  39. <label class="col-sm-4 col-form-label col-form-label-sm label-nobr"><span i18n>Plateforme</span></label>
  40. <div class="col-sm-8">
  41. <input type="text" class="form-control form-control-sm field-separate" id="plateforme" name="plateforme" [(ngModel)]="production.plateforme" disabled>
  42. </div>
  43. </div>
  44. <div class="form-group row">
  45. <label class="col-sm-4 col-form-label col-form-label-sm label-nobr"><span i18n>Commentaire</span></label>
  46. <div class="col-sm-8">
  47. <textarea class="form-control form-control-sm field-separate" id="commentaire" name="commentaire" [(ngModel)]="production.commentaire" disabled></textarea>
  48. </div>
  49. </div>
  50. <div class="form-group row">
  51. <label class="col-sm-4 col-form-label col-form-label-sm label-nobr"><span i18n>Informations privées</span></label>
  52. <div class="col-sm-8">
  53. <textarea class="form-control form-control-sm field-separate" id="informationsPrivees" name="informationsPrivees" [(ngModel)]="production.informationsPrivees" disabled></textarea>
  54. </div>
  55. </div>
  56. <div class="form-group row">
  57. <label class="col-sm-4 col-form-label col-form-label-sm label-nobr"><span i18n>Gestionnaire</span></label>
  58. <div class="col-sm-8">
  59. <input type="text" class="form-control form-control-sm field-separate" id="gestionnaire" name="gestionnaire" [(ngModel)]="production.nomGestionnaire" disabled><hr/>
  60. </div>
  61. </div>
  62. <div class="form-group row">
  63. <label class="col-sm-4 col-form-label col-form-label-sm label-nobr"></label>
  64. <div class="col-sm-8">
  65. <div class="form-check form-control-sm field-separate">
  66. <input class="form-check-input" type="radio" name="radioEtatMedia" id="radioEtatMedia0" value="0" [checked]="media.etatMedia == 0" (change)="setEtatMedia(0)">
  67. <label class="form-check-label" for="radioEtatMedia0"><span i18n class="text-danger">Aucun média à présenter</span></label>
  68. </div>
  69. <div class="form-check form-control-sm field-separate">
  70. <input class="form-check-input" type="radio" name="radioEtatMedia" id="radioEtatMedia2" value="2" [checked]="media.etatMedia=== 2" (change)="setEtatMedia(2)">
  71. <label class="form-check-label" for="radioEtatMedia2"><span i18n>Le média est externe (exécutable à lancer sur machine spécifique, fichier trop gros, etc)</span></label>
  72. </div>
  73. <div class="form-check form-control-sm field-separate">
  74. <input class="form-check-input" type="radio" name="radioEtatMedia" id="radioEtatMedia1" value="1" [checked]="media.etatMedia == 1" (change)="setEtatMedia(1)">
  75. <label class="form-check-label" for="radioEtatMedia1"><span i18n>Le média est interne à la présentation, à téléverser</span></label>
  76. </div>
  77. </div>
  78. </div>
  79. <div class="form-group row">
  80. <label class="col-sm-4 col-form-label col-form-label-sm label-nobr"><span i18n>Média</span></label>
  81. <div class="col-sm-8">
  82. <input type="file" class="form-control form-control-sm field-separate" id="media" name="media" accept="audio/*,video/*,image/*" (change)="onMediaSelected($event)">
  83. <div class="form-text field-separate"><span i18n>La taille du média est limitée à 2 Go.</span><hr/></div>
  84. </div>
  85. </div>
  86. @if (etatInitial === 1) {
  87. <div class="form-group row">
  88. <label class="col-sm-4 col-form-label col-form-label-sm label-nobr"><span i18n>Média actuellement chargé</span></label>
  89. <div class="col-sm-8">
  90. @if (media.mediaMime.startsWith("image/")) { <img [src]="media.mediaData" alt="" class="img-fluid rounded-2" width="100%"> }
  91. @else if (media.mediaMime.startsWith("audio/")) { <audio controls><source [src]="media.mediaData" [type]="media.mediaMime" i18n/>Le tag HTML audio n'est pas supporté par ce navigateur.</audio> }
  92. @else if (media.mediaMime.startsWith("video/")) { <video controls width="480" height="240"><source [src]="media.mediaData" [type]="media.mediaMime" i18n/>Le tag HTML video n'est pas supporté par ce navigateur.</video> }
  93. </div>
  94. </div>
  95. <div class="form-group row">
  96. <label class="col-sm-4 col-form-label col-form-label-sm label-nobr"><span i18n>Type</span></label>
  97. <div class="col-sm-8">
  98. <input type="text" class="form-control form-control-sm field-separate" id="mediaMime" name="mediaMime" [(ngModel)]="media.mediaMime" disabled>
  99. </div>
  100. </div>
  101. }
  102. </div>
  103. <div class="card-footer">
  104. @if (etatInitial === 0) { <button type="button" class="btn bg-gradient btn-success btn-sm text-left" type="submit" [disabled]="formRef.invalid"><i class="fa-solid fa-plus"></i>&nbsp;<span i18n>Valider</span></button> }
  105. @else { <button type="button" class="btn bg-gradient btn-warning btn-sm text-left" type="submit" [disabled]="formRef.invalid"><i class="fa-solid fa-check"></i>&nbsp;<span i18n>Valider</span></button> }
  106. </div>
  107. </div>
  108. </form>
  109. </div>