production-create.component.html 5.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100
  1. <app-menu></app-menu>
  2. <div id="main">
  3. <form #formRef="ngForm" (ngSubmit)="addProduction()" class="needs-validation">
  4. <div class="card shadow center">
  5. <div class="card-header"><span i18n>Fiche d'une production</span></div>
  6. <div class="card-header shadow-sm">
  7. <button (click)="goToListProduction()" 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">
  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">
  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>&nbsp;<sup><span class="text-danger">*</span></sup></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" #titreRef="ngModel" required [class.is-invalid]="titreRef.invalid && titreRef.touched">
  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>&nbsp;<sup><span class="text-danger">*</span></sup></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" #auteursRef="ngModel" required [class.is-invalid]="auteursRef.invalid && auteursRef.touched">
  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">
  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">
  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"></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"></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>&nbsp;<sup><span class="text-danger">*</span></sup></label>
  58. <div class="col-sm-8">
  59. <div class="form-group">
  60. <select class="form-select form-select-sm field-separate" id="numeroParticipant" name="numeroParticipant" [(ngModel)]="production.numeroParticipant" required>
  61. @for (participant of participants; track participant.numeroParticipant) {
  62. <option [ngValue]="participant.numeroParticipant">{{ participant.pseudonyme }} = {{ participant.nom }}&nbsp;{{ participant.prenom }}</option>
  63. }
  64. </select>
  65. </div>
  66. </div>
  67. </div>
  68. <div class="form-group row">
  69. <label class="col-sm-4 col-form-label col-form-label-sm label-nobr"><span i18n>Archive</span></label>
  70. <div class="col-sm-8">
  71. <input type="file" class="form-control form-control-sm field-separate" id="archive" name="archive" accept="application/zip" (change)="onArchiveSelected($event)">
  72. <div class="form-text field-separate"><span i18n>La taille de l'archive est limitée à 1 Go.</span></div>
  73. </div>
  74. </div>
  75. <div class="form-group row">
  76. <label class="col-sm-4 col-form-label col-form-label-sm label-nobr"><span i18n>Vignette</span></label>
  77. <div class="col-sm-8">
  78. <input type="file" class="form-control form-control-sm field-separate" id="vignette" name="vignette" accept="image/png, image/gif, image/jpeg" (change)="onVignetteSelected($event)">
  79. </div>
  80. </div>
  81. </div>
  82. <div class="card-footer hstack">
  83. <button type="button" class="btn bg-gradient btn-success btn-sm text-left" #boutonUploader type="submit" [disabled]="formRef.invalid"><i class="fa-solid fa-plus"></i>&nbsp;<span i18n>Créer</span></button>
  84. <div #messageUpload class="form-text" style="padding-left:7px;"></div>
  85. <div #messageErreur class="form-text ms-auto text-danger" style="padding-right:7px;"></div>
  86. </div>
  87. </div>
  88. </form>
  89. </div>