<!-- View Only : {{viewOnly}} -->

<div class="main-content">
	<div class="container-fluid dataset-profile-editor" *ngIf="form" [formGroup]='form'>

		


		<!-- Total steps: {{stepper.steps.length}} -->

		
		<div class="row" style="padding: 2em; margin-bottom: 1em; background: #F5F5F5 0% 0% no-repeat padding-box;" >

			<div class="col-12" style="margin-bottom: 2em;">
				<h3 *ngIf="isNew && !isClone && !isNewVersion">{{'DATASET-PROFILE-EDITOR.TITLE.NEW-PROFILE' | translate}}</h3>
				<h3 *ngIf="isNew && isClone">
					<span *ngIf="isClone">{{'DATASET-PROFILE-EDITOR.TITLE.NEW-PROFILE-CLONE' | translate}}</span>
					{{form.get('label').value}}
				</h3>
				<h3 *ngIf="isNew && isNewVersion">
					<span *ngIf="isNewVersion">{{'DATASET-PROFILE-EDITOR.TITLE.NEW-PROFILE-VERSION' | translate}}</span>
					{{form.get('label').value}}
				</h3>

				<h3 *ngIf="!isNew">{{form.get('label').value}}</h3>

				<div class="d-flex justify-content-end pb-3" *ngIf="form.get('status').value==1">
					<button mat-raised-button color="primary" (click)="downloadXML();" type="button">{{
						'DATASET-WIZARD.ACTIONS.DOWNLOAD-XML' | translate }}</button>
				</div>
			</div>

			<!-- Steps Navigation -->
			<div class="col-12 d-flex" *ngIf="steps">
				<div class="col-7 bg-white" style="overflow: hidden; padding: 0px" id="progress-container">
					<div id="progress" [ngStyle]="progressStyle"></div>
					<div class="row h-100">
						<div class="col text-center align-self-center" *ngFor="let step of steps; index as idx">
							<span (click)="stepper.selectedIndex=idx"
							class="stepper-title-label"
							[ngClass]="{'stepper-title-label-locked': !isStepUnlocked(idx),'stepper-title-label-completed':idx < stepper.selectedIndex} ">
								<ng-container *ngIf="(step.completed &&(idx!=steps.length-1)) else numberLabel">
									<mat-icon style="font-size:0.7em; height: 0px;">done</mat-icon>
								</ng-container>
								<ng-template #numberLabel>
									{{idx+1}} 
								</ng-template>
								{{step.label}}
							</span>
						</div>
					</div>
				</div>
	
				<div class="col d-flex justify-content-end">
					<button [@previous_btn] mat-button class="navigate-btn" (click)="stepper.previous()" *ngIf="stepper.selectedIndex !=0">
						<!-- <mat-icon>navigate_before</mat-icon>  -->
						{{'DMP-EDITOR.STEPPER.PREVIOUS' | translate}} 
					</button>
					<button mat-button class="navigate-btn ml-3" 
					[@next_btn]
					(click)="validateStep(stepper.selectedIndex);stepper.next();" 
					*ngIf="stepper.selectedIndex != (steps.length-1)"
					[ngClass]="{'navigate-btn-disabled': !isStepCompleted(stepper.selectedIndex)}">
	
						<mat-icon style="font-size: 1.66em;">navigate_next</mat-icon>{{'DMP-EDITOR.STEPPER.NEXT' | translate}}
					</button>
	
	
					<ng-container *ngIf="steps.length-1 === stepper.selectedIndex">
					<!-- <ng-container *ngIf="stepper.selectedIndex === (steps.length-1)"> -->
						<ng-container *ngIf="!viewOnly">
							
							<!-- <button mat-button class="navigate-btn ml-2"
								(click)='onSubmit()' [disabled]="!form.valid">{{'DATASET-PROFILE-EDITOR.ACTIONS.SAVE' |
								translate}}</button> -->
							<!-- <button mat-button class="finalize-btn ml-2"
								(click)='finalize()' [disabled]="!form.valid">{{'DATASET-PROFILE-EDITOR.ACTIONS.FINALIZE' |
								translate}}</button> -->
						</ng-container>
	
						<!-- //TODO -->
						<ng-container *ngIf="true">
							
							<!-- <button mat-button class="navigate-btn ml-2"
								(click)='onSubmit()' [disabled]="!form.valid">{{'DATASET-PROFILE-EDITOR.ACTIONS.SAVE' |
								translate}}</button> -->
							<!-- <button mat-button class="finalize-btn ml-2"
								(click)='finalize()' [disabled]="!form.valid">{{'DATASET-PROFILE-EDITOR.ACTIONS.FINALIZE' |
								translate}}</button> -->
							<button [@finalize_btn] mat-button class="finalize-btn ml-3"
								[disabled]="!form.valid">{{'DATASET-PROFILE-EDITOR.ACTIONS.FINALIZE' |
								translate}}</button>
						
						</ng-container>
						<!-- SAVE BUTTON  WHEN FINALIZED-->
	
						<ng-container *ngIf="false">
							<ng-container *ngIf="showUpdateButton()">
								
								<!-- <button mat-button class="navigate-btn ml-2"
									(click)='checkFormValidation()'
									[disabled]="form.valid">{{'DATASET-PROFILE-EDITOR.ACTIONS.VALIDATE' | translate}}</button> -->
								<button mat-button class="navigate-btn ml-2"
									(click)='updateFinalized()' [disabled]="!form.valid">{{'DATASET-PROFILE-EDITOR.ACTIONS.UPDATE' |
									translate}}</button>
							</ng-container>
						</ng-container>
					</ng-container>
	
	
				</div>

			</div>
		</div>

		

		
		<mat-horizontal-stepper [linear]="true" #stepper class="stepper" (selectionChange)="onMatStepperSelectionChange($event)" style="padding-left: 8px; padding-right: 15px;">

			<!-- IMPORTANT TO BE !INVALID (WHEN THE TEMPLATE IS FINALIZED THE CONTORLS ARE DISABLED) -->
			<mat-step [label]="'DATASET-PROFILE-EDITOR.STEPS.GENERAL-INFO.TITLE' | translate" [completed]="(!form.get('label').invalid && !form.get('description').invalid && !form.get('language').invalid)" >
				<!-- <ng-template matStepLabel>{{'DATASET-PROFILE-EDITOR.STEPS.GENERAL-INFO.TITLE' | translate}}
				</ng-template> -->
				<div class="row">
					<div class="col-12">
						<div class="heading">1.1 {{'DATASET-PROFILE-EDITOR.STEPS.GENERAL-INFO.DATASET-TEMPLATE-NAME'| translate}} *</div>
						<div class="hint">{{'DATASET-PROFILE-EDITOR.STEPS.GENERAL-INFO.DATASET-TEMPLATE-NAME-HINT'| translate}}</div>
						<mat-form-field class="full-width basic-info-input">
							<input matInput [formControl]="form.get('label')"
								placeholder="{{'DATASET-PROFILE-EDITOR.FIELDS.DATASET-TITLE' | translate}}">
							<mat-error *ngIf="form.get('label').hasError('required')">{{'GENERAL.VALIDATION.REQUIRED' |
								translate}}
							</mat-error>
						</mat-form-field>
					</div>
					<div class="col-12">
						<div class="heading">1.2 {{'DATASET-PROFILE-EDITOR.STEPS.GENERAL-INFO.DATASET-TEMPLATE-DESCRIPTION'| translate}} *</div>
						<!-- <div class="hint">{{'DMP-EDITOR.MAIN-INFO.HINT' | translate}}</div> -->
						<div class="hint">{{'DATASET-PROFILE-EDITOR.STEPS.GENERAL-INFO.DATASET-TEMPLATE-DESCRIPTION-HINT'| translate}}</div>
						<mat-form-field class="full-width basic-info-input">
							<textarea matInput [formControl]="form.get('description')" cdkTextareaAutosize cdkAutosizeMinRows="4" cdkAutosizeMaxRows="5"
								placeholder="{{'DATASET-PROFILE-EDITOR.STEPS.GENERAL-INFO.DATASET-TEMPLATE-DESCRIPTION-PLACEHOLDER'| translate}}">
							</textarea>
							<mat-error *ngIf="form.get('description').hasError('required')">{{'GENERAL.VALIDATION.REQUIRED'
								| translate}}
							</mat-error>
						</mat-form-field>
					</div>

					<div class="col-12">
						<!-- <div class="heading">1.3 {{'DMP-EDITOR.FIELDS.LANGUAGE' | translate}}</div> -->
						<div class="heading">1.3 {{'DATASET-PROFILE-EDITOR.STEPS.GENERAL-INFO.DATASET-TEMPLATE-LANGUAGE'| translate}} *</div>
						<mat-form-field class="full-width basic-info-input">
							<!-- <input matInput formControlName="description" placeholder="{{'DATASET-PROFILE-EDITOR.FIELDS.DATASET-DESCRIPTION' | translate}}" required> -->
							<mat-select [formControl]="form.get('language')" placeholder="{{'DATASET-PROFILE-EDITOR.STEPS.GENERAL-INFO.DATASET-TEMPLATE-SELECT-LANGUAGE'| translate}}">
								<mat-option *ngFor="let lang of getLanguageInfos()" [value]="lang.code">
									{{ lang.name }}
								</mat-option>
							</mat-select>
							<mat-error *ngIf="form.get('language').hasError('required')">{{'GENERAL.VALIDATION.REQUIRED' |
								translate}}
							</mat-error>
						</mat-form-field>
					</div>

					<!-- <div class="col-12">
						<button mat-button class="full-width" (click)="addPage()"
							[disabled]="viewOnly">{{'DATASET-PROFILE-EDITOR.ACTIONS.NEXT' | translate}}</button>
					</div> -->
				</div>
			</mat-step>
			<!-- <mat-step>
				<ng-template matStepLabel>{{'DATASET-PROFILE-EDITOR.STEPS.PAGES.TITLE' | translate}}</ng-template>
				<div class="row">
					<app-dataset-profile-editor-page-component class="col-12" [form]="form.get('pages')"
						[viewOnly]="viewOnly"></app-dataset-profile-editor-page-component>
					<div class="col-12">
						<button mat-button class="full-width" (click)="addPage()"
							[disabled]="viewOnly">{{'DATASET-PROFILE-EDITOR.ACTIONS.ADD-PAGE' | translate}}</button>
					</div>
				</div>
			</mat-step> -->
			<mat-step [label]="'DATASET-PROFILE-EDITOR.STEPS.FORM.TITLE' | translate" [completed]="form.valid">
				<!-- <ng-template matStepLabel>{{'DATASET-PROFILE-EDITOR.STEPS.FORM.TITLE' | translate}}</ng-template> -->
				<div class="row">

					<!-- TABLE -->
					<div class="col-3">


						<div class="row sticky-top" style="top : 2em;">
							<dataset-profile-table-of-contents class="toc-pane-container col" 
								[links]="toCEntries"
								(itemClick)="displayItem($event)"
								(newEntry)="addNewEntry($event)"
								(createEntry) = "addNewEntry($event)"
								(removeEntry)="onRemoveEntry($event)"
								[itemSelected]="selectedTocEntry"
								[viewOnly]="viewOnly"
								(dataNeedsRefresh)="onDataNeedsRefresh($event)"
								[colorizeInvalid]="colorizeInvalid">
							</dataset-profile-table-of-contents>

						</div>
					</div>


					<!-- DISPLAYER -->
					<div class="col ml-3">

					<div class="row">

						<div class="col">
							<div class="row" *ngIf="selectedTocEntry">
							
								<!-- PAGE INFO -->
								<div class="col-12 content-displayer" *ngIf="selectedTocEntry.type === tocEntryEnumValues.Page">
									<form [formGroup]="selectedTocEntry.form" class="page-infos">
										<div class="row">
											<!-- PAGE NAME -->
											<div class="col-12">
												<div class="heading">{{'DATASET-PROFILE-EDITOR.STEPS.PAGE-INFO.PAGE-NAME' | translate}} *</div>
												<div class="hint">{{'DATASET-PROFILE-EDITOR.STEPS.PAGE-INFO.PAGE-NAME-HINT' | translate}}</div>
												<mat-form-field>
													<input type="text" matInput formControlName="title" [placeholder]="('DATASET-PROFILE-EDITOR.STEPS.GENERAL-INFO.UNTITLED' | translate) +' '+ ('DATASET-PROFILE-EDITOR.STEPS.PAGE-INFO.PAGE' |translate)">
													<mat-error >{{'GENERAL.VALIDATION.REQUIRED' | translate}}</mat-error>
												</mat-form-field>
											</div>
											
											<div class="col-12" *ngIf="!viewOnly && (!selectedTocEntry?.subEntries?.length)">
												<button class="create-section-btn" (click)="addNewEntry({parent:selectedTocEntry, childType: tocEntryEnumValues.Section})">Create section</button>
											</div>
											<!-- PAGE ID -->
											<!-- <div class="col">
												<div class="heading">Page id *</div>
												<mat-form-field>
													<input type="text" matInput formControlName="id">
												</mat-form-field>
											</div> -->
										</div>
										<!-- <div class="row">
											<div class="col">
												<div class="heading">Ordinal *</div>
												<mat-form-field>
													<input type="text" matInput formControlName="ordinal">
												</mat-form-field>
											</div>
										</div> -->
									</form>
								</div>
	
								<div class="col-12" *ngIf="(selectedTocEntry.type === tocEntryEnumValues.Section) || (selectedTocEntry.type === tocEntryEnumValues.FieldSet)" >
									<app-dataset-profile-editor-section-fieldset-component
										[tocentry]="selectedTocEntry"
										[viewOnly]="viewOnly"
										(addNewFieldSet)="addNewEntry({childType: tocEntryEnumValues.FieldSet,parent: {form: $event}})"
										(removeFieldSet)="onRemoveEntry(_findTocEntryById($event, toCEntries))"
										(cloneFieldSet)="cloneFieldSet($event)"
										(selectedEntryId)="displayItem(_findTocEntryById($event, getTocEntries()))"
										(dataNeedsRefresh)="onDataNeedsRefresh()"
									>

									</app-dataset-profile-editor-section-fieldset-component>
								</div>
								
								
							</div>
	
							<div class="content-displayer row justify-content-center" *ngIf="!numOfPages" style="min-height: 30em;">
								<div class="col-auto align-self-center">
									<div class="row w-100 justify-content-center">
										<div class="col-auto">
											{{'DATASET-PROFILE-EDITOR.STEPS.PAGE-INFO.ACTIONS.NOTHING-HERE-HINT'| translate}}
										</div>
									</div>
									<div class="row justify-content-center">
										<div class="col-auto d-flex aling-contents-center">
											{{'DATASET-PROFILE-EDITOR.STEPS.PAGE-INFO.ACTIONS.START-CREATING-PAGE-START'| translate}}
											
											<mat-icon color="accent" style="font-size: 1.5em; text-align: center; width: 1.5em;">add</mat-icon>
											<strong style="cursor: pointer;" (click)="addNewEntry({childType: tocEntryEnumValues.Page,parent: null})">
													{{'DATASET-PROFILE-EDITOR.STEPS.PAGE-INFO.ACTIONS.START-CREATING-PAGE-END'| translate}}
											</strong>
										</div>
									</div>
								</div>
							</div>
	
						</div>
	
	
						<!-- TOOLBAR -->
						<!-- <div class="col-auto" 
						*ngIf="((selectedTocEntry?.type == tocEntryEnumValues.Section)||(selectedTocEntry?.type == tocEntryEnumValues.FieldSet) )&&(selectedTocEntry?.subEntriesType != tocEntryEnumValues.Section) && !viewOnly">
							<div class="row" class="actions-list bg-white sticky-top" style="top: 2em;">
								<nav *ngIf="!viewOnly">
									<label class="action-list-label">{{'DATASET-PROFILE-EDITOR.STEPS.TOOLKIT.GENERAL-TOOLS' | translate}}</label>
									<ul class="list-unstyled">
										<li *ngIf="selectedTocEntry.type === tocEntryEnumValues.FieldSet" class="mli">
											<div class="action-list-item" (click)="addNewEntry({childType: tocEntryEnumValues.FieldSet,parent: {form: selectedTocEntry.form.parent.parent}})">
												<img src="/assets/images/editor/icons/add_input_set.svg" class="input_icon" alt="Add Question icon">
												<mat-icon class="action-list-icon">folder</mat-icon>
												<span class="action-list-text" >{{'DATASET-PROFILE-EDITOR.STEPS.TOOLKIT.NEW-INPUT-SET' | translate}}</span>
											</div>
										</li>
										<li *ngIf="selectedTocEntry.type === tocEntryEnumValues.Section" class="mli">
											<div class="action-list-item" (click)="addNewEntry({childType: tocEntryEnumValues.FieldSet,parent: selectedTocEntry})">
												<mat-icon class="action-list-icon">folder</mat-icon>
												<img src="/assets/images/editor/icons/add_input_set.svg" class="input_icon" alt="Add Question icon">
												<span class="action-list-text" >{{'DATASET-PROFILE-EDITOR.STEPS.TOOLKIT.NEW-INPUT-SET' | translate}}</span>
											</div>
										</li>


										<li *ngIf="selectedTocEntry.type === tocEntryEnumValues.FieldSet" class="mli">
											<div class="action-list-item" (click)="cloneFieldSet(selectedTocEntry.form)">
												<mat-icon class="action-list-icon">file_copy</mat-icon>
												<img src="/assets/images/editor/icons/clone.svg" class="input_icon" alt="Clone icon">
												<span class="action-list-text">{{'DATASET-PROFILE-EDITOR.STEPS.TOOLKIT.CLONE' | translate}}</span>
											</div>
										</li>
										
										<li *ngIf="selectedTocEntry.type === tocEntryEnumValues.FieldSet" class="mli">
											<div class="action-list-item" (click)="onRemoveEntry(selectedTocEntry)">
												<mat-icon class="action-list-icon">delete</mat-icon>
												<span class="action-list-text">{{'DATASET-PROFILE-EDITOR.STEPS.TOOLKIT.DELETE' | translate}}</span>
											</div>
										</li>
									</ul>
								</nav> -->
									
									<!-- <ng-container *ngIf="!viewOnly">
										<h3 matSubheader>{{'DATASET-PROFILE-EDITOR.STEPS.TOOLKIT.GENERAL-TOOLS' | translate}}</h3>
										<mat-list-item *ngIf="selectedTocEntry.type === tocEntryEnumValues.FieldSet" class="mli">
											<div class="action-list-item">
												<mat-icon class="action-list-icon">folder</mat-icon>
												<span class="action-list-text" (click)="addNewEntry({childType: tocEntryEnumValues.FieldSet,parent: {form: selectedTocEntry.form.parent.parent}})" >{{'DATASET-PROFILE-EDITOR.STEPS.TOOLKIT.NEW-INPUT-SET' | translate}}</span>
											</div>
										</mat-list-item>
										<mat-list-item *ngIf="selectedTocEntry.type === tocEntryEnumValues.Section" class="mli">
											<div class="action-list-item">
												<mat-icon class="action-list-icon">folder</mat-icon>
												<span class="action-list-text" (click)="addNewEntry({childType: tocEntryEnumValues.FieldSet,parent: selectedTocEntry})" >{{'DATASET-PROFILE-EDITOR.STEPS.TOOLKIT.NEW-INPUT-SET' | translate}}</span>
											</div>
										</mat-list-item>


										<mat-list-item *ngIf="selectedTocEntry.type === tocEntryEnumValues.FieldSet" class="mli">
											<div class="action-list-item">
												<mat-icon class="action-list-icon">file_copy</mat-icon>
												<span class="action-list-text" (click)="cloneFieldSet(selectedTocEntry.form)">{{'DATASET-PROFILE-EDITOR.STEPS.TOOLKIT.CLONE' | translate}}</span>
											</div>
										</mat-list-item>
										
										<mat-list-item *ngIf="selectedTocEntry.type === tocEntryEnumValues.FieldSet" class="mli">
											<div class="action-list-item">
												<mat-icon class="action-list-icon">delete</mat-icon>
												<span class="action-list-text" (click)="onRemoveEntry(selectedTocEntry)">{{'DATASET-PROFILE-EDITOR.STEPS.TOOLKIT.DELETE' | translate}}</span>
											</div>
										</mat-list-item>
									</ng-container> -->
								
							<!-- </div>
						</div> -->
					</div>						

						<!-- 
						<mat-accordion class="col-12" [multi]="true">
							<mat-expansion-panel *ngFor="let section of dataModel.sections; let i=index;" #panel>
								<mat-expansion-panel-header>
									<mat-panel-title class="toc-page-header">{{i + 1}}. {{form.get('sections').get(''+i).get('title').value}}
									</mat-panel-title>
									<button mat-icon-button type="button" class="deleteBtn" (click)="DeleteSection(i);"
										[disabled]="viewOnly">
										<mat-icon>delete</mat-icon>
									</button>
								</mat-expansion-panel-header>
								<div id="{{'s' + i}}" class="row" *ngIf="panel.expanded">
									<app-dataset-profile-editor-section-component class="col-12"
										[form]="form.get('sections').get(''+i)" [dataModel]="section"
										[indexPath]="'s' + i" [viewOnly]="viewOnly">
									</app-dataset-profile-editor-section-component>
								</div>
							</mat-expansion-panel>
						</mat-accordion> -->
					</div>

					<!-- <div class="col-12">
						<button mat-button (click)="addSection()" class="full-width"
							[disabled]="viewOnly">{{'DATASET-PROFILE-EDITOR.ACTIONS.ADD-SECTION' | translate}}</button>
					</div> -->
				</div>
			</mat-step>
			<mat-step [label]="'DATASET-PROFILE-EDITOR.ACTIONS.PREVIEW-AND-FINALIZE' | translate">
				<!-- {{'DATASET-PROFILE-EDITOR.ACTIONS.PREVIEW-AND-FINALIZE' | translate}} -->
				<!-- <button (click)="generatePreviewForm()">foo</button> -->
				<ng-container *ngIf="formGroup">
					<app-dataset-description [form]="formGroup" [visibilityRules]="visibilityRules" *ngIf="formGroup">
	
					</app-dataset-description>
				</ng-container>
			</mat-step>

		</mat-horizontal-stepper>
		


		<ng-container *ngIf="true">

			<div class="d-flex">
				<!-- SAVE BUTTON -->
				<div class="col-6 d-flex" *ngIf="!viewOnly">
					<div class="row mt-4">
						<ng-container *ngIf="false">
							<button mat-raised-button class="col-auto mr-2" color="primary" type="button col-auto"
								(click)='checkFormValidation()'
								[disabled]="form.valid">{{'DATASET-PROFILE-EDITOR.ACTIONS.VALIDATE' | translate}}</button>
						</ng-container>


						
						<button mat-raised-button class="col-auto mr-2" color="primary" type="button col-auto"
							(click)='onSubmit()' [disabled]="!form.valid">{{'DATASET-PROFILE-EDITOR.ACTIONS.SAVE' |
							translate}}</button>
						<button mat-raised-button class="col-auto" color="primary" type="button col-auto"
							(click)='finalize()' [disabled]="!form.valid">{{'DATASET-PROFILE-EDITOR.ACTIONS.FINALIZE' |
							translate}}</button>
					</div>
				</div>
				<!-- SAVE BUTTON  WHEN FINALIZED-->
				<div class="col-6 d-flex" *ngIf="showUpdateButton()">
					<div class="row mt-4">
						<ng-container *ngIf="false">
							<button mat-raised-button class="col-auto mr-2" color="primary" type="button col-auto"
								(click)='checkFormValidation()'
								[disabled]="form.valid">{{'DATASET-PROFILE-EDITOR.ACTIONS.VALIDATE' | translate}}</button>
						</ng-container>
						<button mat-raised-button class="col-auto mr-2" color="primary" type="button col-auto"
							(click)='updateFinalized()' [disabled]="!form.valid">{{'DATASET-PROFILE-EDITOR.ACTIONS.UPDATE' |
							translate}}</button>
					</div>
				</div>
				<!-- DELETE BUTTON -->
				<div class="col-6 d-flex justify-content-end" *ngIf="!isNew">
					<div class="row mt-4">
						<button mat-raised-button color="primary" (click)="delete()">
							<mat-icon>delete</mat-icon>{{'DATASET-PROFILE-EDITOR.ACTIONS.DELETE' | translate}}
						</button>
					</div>
				</div>
			</div>

		</ng-container>

		<!-- <div class="row">
			<button (click)="printForm()">
				console form
			</button>
		</div> -->

		<!-- <div *ngIf="form">{{form.value | json}}</div>

		<br> -->
		<!-- <br>
		<div class="row">
			{{form.controls?.sections.value |json}}
		</div> -->

		<!-- {{form.value | json}} -->
		<!-- <div class="row">

			<button (click)="printMyErrors()">
				print errors
			</button>
		</div> -->
		<!-- <div class="row"> 
			<button (click)="foo()">foo</button>
		</div> -->
	</div>
</div>