abel revised this gist 1 month ago. Go to revision
1 file changed, 179 insertions
create-new.template.ts(file created)
| @@ -0,0 +1,179 @@ | |||
| 1 | + | import { Component, DestroyRef, inject, OnInit } from '@angular/core'; | |
| 2 | + | import { FormBuilder, FormControl, FormGroup, FormsModule, ReactiveFormsModule, Validators } from '@angular/forms'; | |
| 3 | + | import { MatSnackBar, MatSnackBarModule } from '@angular/material/snack-bar'; | |
| 4 | + | import { MatCheckboxModule } from '@angular/material/checkbox'; | |
| 5 | + | import { MatOptionModule } from '@angular/material/core'; | |
| 6 | + | import { MatSelectModule } from '@angular/material/select'; | |
| 7 | + | import { MatInputModule } from '@angular/material/input'; | |
| 8 | + | import { MatFormFieldModule } from '@angular/material/form-field'; | |
| 9 | + | import { MatIconModule } from '@angular/material/icon'; | |
| 10 | + | import { MatButtonModule } from '@angular/material/button'; | |
| 11 | + | import { LoadingService } from 'src/services/loading.service'; | |
| 12 | + | import { ActivatedRoute, Router } from '@angular/router'; | |
| 13 | + | import { TranslateModule, TranslateService } from '@ngx-translate/core'; | |
| 14 | + | import { MatAutocompleteModule } from '@angular/material/autocomplete'; | |
| 15 | + | import { HttpClientModule } from '@angular/common/http'; | |
| 16 | + | import { MatCardModule } from '@angular/material/card'; | |
| 17 | + | import { MatProgressBarModule } from '@angular/material/progress-bar'; | |
| 18 | + | import { MatRadioModule } from '@angular/material/radio'; | |
| 19 | + | import { MatSlideToggleModule } from '@angular/material/slide-toggle'; | |
| 20 | + | import { MatTooltipModule } from '@angular/material/tooltip'; | |
| 21 | + | import { MatDialog, MatDialogModule } from '@angular/material/dialog'; | |
| 22 | + | import { MatExpansionModule } from '@angular/material/expansion'; | |
| 23 | + | import { MatDatepickerModule } from '@angular/material/datepicker'; | |
| 24 | + | import { MatDividerModule } from '@angular/material/divider'; | |
| 25 | + | import { MatButtonToggleModule } from '@angular/material/button-toggle'; | |
| 26 | + | import { scaleIn400ms } from '@vex/animations/scale-in.animation'; | |
| 27 | + | import { fadeInRight400ms } from '@vex/animations/fade-in-right.animation'; | |
| 28 | + | import { UploaderComponent } from 'src/app/components/uploader/uploader.component'; | |
| 29 | + | import { MatSliderModule } from '@angular/material/slider'; | |
| 30 | + | import { SelectLanguageComponent } from 'src/app/components/select/select-language/select-language.component'; | |
| 31 | + | import { HeaderComponent } from '../../components/header/header.component'; | |
| 32 | + | import { HeaderData } from '../../components/header/header.model'; | |
| 33 | + | import { ProjectDetailsComponent } from "../../components/project-details/project-details.component"; | |
| 34 | + | import { ProjectNotesComponent } from "../../components/project-notes/project-notes.component"; | |
| 35 | + | import { moreInfoService } from '../../components/more-info.service'; | |
| 36 | + | import { takeUntilDestroyed } from '@angular/core/rxjs-interop'; | |
| 37 | + | import { ApiService } from 'src/services/api.service'; | |
| 38 | + | import { ConfirmDialogComponent } from 'src/app/components/ui/confirm-dialog/confirm-dialog.component'; | |
| 39 | + | import { SelectVoiceComponent } from "src/app/components/select/select-voice/select-voice.component"; | |
| 40 | + | import { MatMenuModule } from '@angular/material/menu'; | |
| 41 | + | import { RenameDialogComponent } from 'src/app/components/ui/rename-dialog/rename-dialog.component'; | |
| 42 | + | import { ProjectDetailsForm, voiceFormGlobal } from 'src/models/global.model'; | |
| 43 | + | import { SecurityService } from 'src/services/security/security.service'; | |
| 44 | + | import { ManageUsersDialogComponent } from '../../video/lumo/manage-users-dialog/manage-users-dialog.component'; | |
| 45 | + | import { ServicesService } from 'src/services/services.service'; | |
| 46 | + | ||
| 47 | + | @Component({ | |
| 48 | + | selector: 'vex-lumo', | |
| 49 | + | standalone: true, | |
| 50 | + | imports: [ | |
| 51 | + | FormsModule, | |
| 52 | + | MatButtonModule, | |
| 53 | + | MatButtonToggleModule, | |
| 54 | + | ReactiveFormsModule, | |
| 55 | + | MatFormFieldModule, | |
| 56 | + | MatInputModule, | |
| 57 | + | MatSelectModule, | |
| 58 | + | MatOptionModule, | |
| 59 | + | MatSnackBarModule, | |
| 60 | + | MatCardModule, | |
| 61 | + | MatIconModule, | |
| 62 | + | MatProgressBarModule, | |
| 63 | + | MatDividerModule, | |
| 64 | + | HttpClientModule, | |
| 65 | + | TranslateModule, | |
| 66 | + | MatMenuModule, | |
| 67 | + | MatRadioModule, | |
| 68 | + | MatIconModule, | |
| 69 | + | MatCheckboxModule, | |
| 70 | + | MatSlideToggleModule, | |
| 71 | + | MatTooltipModule, | |
| 72 | + | MatDialogModule, | |
| 73 | + | MatExpansionModule, | |
| 74 | + | MatSliderModule, | |
| 75 | + | HeaderComponent, | |
| 76 | + | ProjectDetailsComponent, | |
| 77 | + | ProjectNotesComponent, | |
| 78 | + | SelectLanguageComponent, | |
| 79 | + | UploaderComponent, | |
| 80 | + | SelectVoiceComponent | |
| 81 | + | ], | |
| 82 | + | animations: [ | |
| 83 | + | scaleIn400ms, | |
| 84 | + | fadeInRight400ms | |
| 85 | + | ], | |
| 86 | + | templateUrl: './podcast.component.html', | |
| 87 | + | styleUrls: ['./podcast.component.scss'] | |
| 88 | + | }) | |
| 89 | + | export class PodcastComponent implements OnInit { | |
| 90 | + | private readonly destroyRef: DestroyRef = inject(DestroyRef); | |
| 91 | + | ||
| 92 | + | // PAGE DETAILS | |
| 93 | + | currService = this.servicesService.services.find(service => service.label === 'Podcast'); | |
| 94 | + | headerData: HeaderData = { | |
| 95 | + | title: this.currService.label, | |
| 96 | + | icon: this.currService.icon_2, | |
| 97 | + | projectType: this.currService.type, | |
| 98 | + | crumbs: [{ link: '/create', title: 'Create' }, { link: this.currService.createUrl, title: this.currService.label }] | |
| 99 | + | }; | |
| 100 | + | ||
| 101 | + | // PROJECT PROPERTIES | |
| 102 | + | // UI PROPERTIES | |
| 103 | + | showErrorsCtrl = new FormControl(false); | |
| 104 | + | isTouched = false; | |
| 105 | + | ||
| 106 | + | // PROJECT FORM | |
| 107 | + | mainForm: FormGroup = new FormGroup({ | |
| 108 | + | projectDetails: new FormGroup<ProjectDetailsForm>({ | |
| 109 | + | projectName: new FormControl('', [Validators.required]), | |
| 110 | + | startLanguage: new FormControl(''), | |
| 111 | + | projectOwner: new FormControl(null, []), | |
| 112 | + | projectManager: new FormControl(null, []), | |
| 113 | + | setDates: new FormControl(false, []), | |
| 114 | + | startDate: new FormControl(new Date(), []), | |
| 115 | + | endDate: new FormControl(null, []), | |
| 116 | + | endTime: new FormControl('12:00', []), | |
| 117 | + | projectNotes: new FormControl('', []), | |
| 118 | + | internalID: new FormControl(null, []), | |
| 119 | + | targetLanguages: new FormControl([]), | |
| 120 | + | }), | |
| 121 | + | projectSettings: new FormGroup({ | |
| 122 | + | }), | |
| 123 | + | }); | |
| 124 | + | ||
| 125 | + | constructor( | |
| 126 | + | protected loadingService: LoadingService, | |
| 127 | + | protected moreInfoService: moreInfoService, | |
| 128 | + | public translate: TranslateService, | |
| 129 | + | private route: ActivatedRoute, | |
| 130 | + | private apiService: ApiService, | |
| 131 | + | private dialog: MatDialog, | |
| 132 | + | private snackbar: MatSnackBar, | |
| 133 | + | private fb: FormBuilder, | |
| 134 | + | private router: Router, | |
| 135 | + | private securityService: SecurityService, | |
| 136 | + | private servicesService: ServicesService | |
| 137 | + | ) { } | |
| 138 | + | ||
| 139 | + | ngOnInit(): void { | |
| 140 | + | this.route.queryParams.subscribe(params => { | |
| 141 | + | this.projectNameCtrl.setValue(params['projectName']); | |
| 142 | + | }); | |
| 143 | + | ||
| 144 | + | // INITIALIZATIONS | |
| 145 | + | ||
| 146 | + | // SUBSCRIPTIONS | |
| 147 | + | } | |
| 148 | + | ||
| 149 | + | // FUNCTIONS | |
| 150 | + | // FUNCTIONS | |
| 151 | + | // FUNCTIONS | |
| 152 | + | ||
| 153 | + | // OTHER | |
| 154 | + | // OTHER | |
| 155 | + | // OTHER | |
| 156 | + | ||
| 157 | + | ||
| 158 | + | // SUBMIT | |
| 159 | + | // SUBMIT | |
| 160 | + | // SUBMIT | |
| 161 | + | formSubmit() { | |
| 162 | + | } | |
| 163 | + | ||
| 164 | + | // UI SECTION | |
| 165 | + | // UI SECTION | |
| 166 | + | // UI SECTION | |
| 167 | + | ||
| 168 | + | // GETTERS | |
| 169 | + | // Form Groups | |
| 170 | + | get projectDetailsGroup() { | |
| 171 | + | return this.mainForm.get('projectDetails') as FormGroup; | |
| 172 | + | } | |
| 173 | + | ||
| 174 | + | // Form Controls | |
| 175 | + | get projectNameCtrl() { | |
| 176 | + | return this.projectDetailsGroup.get('projectName') as FormControl; | |
| 177 | + | } | |
| 178 | + | ||
| 179 | + | } | |
Newer
Older