aboutsummaryrefslogtreecommitdiff
path: root/frontend/src/app/_elements/dataset-load/dataset-load.component.ts
blob: 73dbf2d270681ce72db765baeea56911c2a81c5e (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
import { Component, OnInit, ViewChild, ViewChildren } from '@angular/core';
import { AddNewDatasetComponent } from '../add-new-dataset/add-new-dataset.component';
import { ModelsService } from 'src/app/_services/models.service';
import shared from 'src/app/Shared';
import Dataset from 'src/app/_data/Dataset';
import { DatatableComponent, TableData } from 'src/app/_elements/datatable/datatable.component';
import { DatasetsService } from 'src/app/_services/datasets.service';
import { CsvParseService } from 'src/app/_services/csv-parse.service';
import { Output, EventEmitter } from '@angular/core';
import { SignalRService } from 'src/app/_services/signal-r.service';

@Component({
  selector: 'app-dataset-load',
  templateUrl: './dataset-load.component.html',
  styleUrls: ['./dataset-load.component.css']
})
export class DatasetLoadComponent implements OnInit {

  @Output() selectedDatasetChangeEvent = new EventEmitter<Dataset>();

  @ViewChild(AddNewDatasetComponent) addNewDatasetComponent!: AddNewDatasetComponent;
  @ViewChild(AddNewDatasetComponent) datatable!: DatatableComponent;

  datasetLoaded: boolean = false;
  selectedDatasetLoaded: boolean = false;

  showMyDatasets: boolean = true;
  myDatasets?: Dataset[];
  existingDatasetSelected: boolean = false;
  selectedDataset?: Dataset;

  tableData: TableData = new TableData();

  term: string = "";

  constructor(private models: ModelsService, private datasets: DatasetsService, private csv: CsvParseService, private signalRService: SignalRService) {
    this.datasets.getMyDatasets().subscribe((datasets) => {
      this.myDatasets = datasets;
    });
  }

  viewMyDatasetsForm() {
    this.showMyDatasets = true;
    if (this.selectedDataset != undefined)
      this.resetSelectedDataset();
    //this.resetCbsAndRbs();        //TREBA DA SE DESI
  }
  viewNewDatasetForm() {
    this.showMyDatasets = false;
    if (this.selectedDataset != undefined)
      this.resetSelectedDataset();
    //this.resetCbsAndRbs();        //TREBA DA SE DESI
  }

  refreshMyDatasets() {
    this.datasets.getMyDatasets().subscribe((datasets) => {
      this.myDatasets = datasets;
      this.showMyDatasets = true;
    });
  }

  selectThisDataset(dataset: Dataset) {
    this.selectedDataset = dataset;
    this.selectedDatasetLoaded = false;
    this.existingDatasetSelected = true;
    this.tableData.hasHeader = this.selectedDataset.hasHeader;

    this.tableData.hasInput = true;
    this.tableData.loaded = false;

    this.datasets.getDatasetFile(dataset.fileId).subscribe((file: string | undefined) => {
      if (file) {
        this.tableData.loaded = true;
        this.tableData.numRows = this.selectedDataset!.rowCount;
        this.tableData.numCols = this.selectedDataset!.columnInfo.length;
        this.tableData.data = this.csv.csvToArray(file, (dataset.delimiter == "razmak") ? " " : (dataset.delimiter == "") ? "," : dataset.delimiter);
        //this.resetCbsAndRbs();                        //TREBA DA SE DESI
        //this.refreshThreeNullValueRadioOptions();       //TREBA DA SE DESI
        this.selectedDatasetLoaded = true;

        this.selectedDatasetChangeEvent.emit(this.selectedDataset);
      }
    });
  }

  resetSelectedDataset(): boolean {
    this.selectedDatasetChangeEvent.emit(this.selectedDataset);
    return true;
  }

  ngOnInit(): void {
    if (this.signalRService.hubConnection) {
      this.signalRService.hubConnection.on("NotifyDataset", _ => {
        this.refreshMyDatasets();
      });
    } else {
      console.warn("Dataset-Load: No connection!");
    }
  }
}