Skip to content
Snippets Groups Projects
archivos.component.ts 26.94 KiB
import { Component, ViewChild } from "@angular/core";
import { Archivo, Grupo } from "../../shared/objects/archivo";
import { AuthenticationService } from "../../shared/services/authentication.service";
import { HaskellService } from "../../shared/services/haskell.service";
import { SessionService } from "../../shared/services/session.service";
import { NotificacionService } from "../../shared/services/notificacion.service";
import { Router, ActivatedRoute } from "@angular/router";
import { LtCodemirrorComponent } from "lt-codemirror";
import { NgbPopoverConfig, NgbPopover } from "@ng-bootstrap/ng-bootstrap";
import { TranslateService } from "@ngx-translate/core";
import { TitleCasePipe } from "../../shared/pipes/titlecase.pipe";

import "codemirror/mode/haskell/haskell";
import "codemirror/addon/display/panel";
import "codemirror/addon/hint/show-hint";
import "codemirror/addon/hint/anyword-hint";
import "codemirror/mode/markdown/markdown";

const STARTS_WITH_CAPITAL_LETTER_REGEX = /^[A-Z]/;

const ID_ROOT_DIR = -1;

@Component({
  selector: "archivos",
  templateUrl: "./archivos.component.html",
})
export class ArchivosComponent {
  translateService: any;
  titlecasePipe: any;
  archivos: Archivo[] = [];
  archivosCompartidos: Archivo[] = [];
  archivosCompartidosSinDuplicados: Archivo[] = [];
  archivoSeleccionado: Archivo;
  loading: boolean = false;
  loadingCompartidos: boolean = false;
  filtroNombre: string = "";
  idRecorridos: any = [];
  esAlumno: boolean;
  tree: any;
  preview: string = "";
  directorioActual: any;
  sortFunction: any;
  configCodeMirror = JSON.parse(sessionStorage.getItem("codeMirrorConfig"));

  /**
   * Determina la ruta en donde se encuentra ubicado el archivo/directorio
   * seleccionado actualmente.
   */
  currentPath: string = "/";

  /**
   * Con `true` se configura el modal para que se muestre la interfaz de
   * agregar/borrar archivo. De otro modo, se muestra la interfaz de
   * agregar/borrar directorio
   */
  modalTypeIsFile = true;

  // - - - - - - - - - - - - - Modal create file - - - - - - - - - - - - -
  /**
   * Con `true` se renderiza el modal de crear un archivo
   */
  modalCreateFile = false;

  /**
   * Con `true` se indica que el modal -de crear un archivo- se quiere abrir.
   * Útil para avisar al modal que anime el dismiss antes de que se elimine del
   * DOM
   */
  modalCreateFileOpened = true;