### File

`src/app/save-file/save-file.component.ts`

### Metadata

selector | `app-save-file`
styleUrls | `save-file.component.scss`
templateUrl | `save-file.component.html`

### Inputs

`file` | Type: `File`

### Outputs

`savedFile` | `$event` type: `EventEmitter`

### Constructor

`constructor(fileService: FileService, router: Router)`

### Methods

setState
`setState(value: boolean)`

Sets the open/closed state of the popup and is deployed by the parent component.

Parameters :

- value
  - The boolean value representing the required state.

Returns: `void`

submitFile
`submitFile()`
Submits the data obtained from the IDE (the parent component) in the form of a File interface and reloads the parent component with the new filepath. Returns: `void`

### Properties

fileService
`fileService: `FileService` </bcode>`

isActive
`isActive: `boolean` </bcode>`
Default value: `false`

isUploading
`isUploading: `boolean` </bcode>`
Default value: `false`

    import {Component, EventEmitter, Input, OnInit, Output} from '@angular/core';
    import {FileService} from '../file.service';
    import {File} from '../file';
    import {Router} from '@angular/router';

    @Component({
      selector: 'app-save-file',
      templateUrl: './save-file.component.html',
      styleUrls: ['./save-file.component.scss']
    })
    export class SaveFileComponent implements OnInit {

      isActive = false;
      @Output() savedFile = new EventEmitter<boolean>();
      @Input() file: File;
      isUploading = false;

      constructor(public fileService: FileService, private router: Router) {
      }

      ngOnInit(): void {
      }

      /**
       * Sets the open/closed state of the popup and is deployed by the parent component.
       * @param value - The boolean value representing the required state.
       */
      setState(value: boolean): void {
        const text = document.getElementById('filenameInput') as HTMLTextAreaElement;
        this.isActive = value;
        if (value) {
          text.focus();
        }
      }

      /**
       * Submits the data obtained from the IDE (the parent component) in the form of a File interface and reloads the parent component with
       * the new filepath.
       */
      submitFile(): void {
        this.isUploading = true;
        this.fileService.upload(this.file, false)
          .subscribe((response) => {
            this.isUploading = false;
            this.savedFile.emit(true);
            this.isActive = false;
            this.router.navigate(['/arena/file/', this.file.filename + this.file.language]).then();
            console.log(response);
          }, (error) => {
            console.log(error);
            this.isUploading = false;
          });
      }
    }

# results matching ""

# No results matching ""