camilosampedro/Aton

View on GitHub
app/assets/app/laboratory/laboratory.component.ts

Summary

Maintainability
A
0 mins
Test Coverage
/**
 * Created by camilosampedro on 1/01/17.
 */
import 'rxjs/add/operator/switchMap';
import {Component, OnInit, ViewChild}          from '@angular/core';
import {Room} from "../room/room.model";
import {ActivatedRoute, Params} from '@angular/router';
import {LaboratoryService} from "./laboratory.service";
import {Laboratory} from "./laboratory.model";
import {Computer} from "../computer/computer.model";
import {ComputerState} from "../computerstate/computer-state.model";
import {ConnectedUser} from "../computerstate/connected-user.model";
import {LoginService} from "../login/login.service";
import {ComputerFormPanelComponent} from "../computer/formpanel/computer-form-panel.component";
import {DialogComponent} from "../dialog/dialog.component";
//import {Validators, FormBuilder, FormGroup} from '@angular/forms';

@Component({
//  moduleId: module.id,
    selector: 'aton-laboratory',
    templateUrl: 'assets/app/laboratory/laboratory.component.html',
    styleUrls: ['assets/app/laboratory/laboratory.component.css'],
})
export class LaboratoryComponent implements OnInit {
    rooms: [Room, [Computer, ComputerState, ConnectedUser[]][]][] = [];
    laboratory: Laboratory = new Laboratory(0, "Loading...", "", "");
    selectedComputers: Computer[] = [];

    @ViewChild("messageModal") messageModal: any;
    @ViewChild('computerFormPanel') computerFormPanel: ComputerFormPanelComponent;
    @ViewChild('dialogModal') dialogModal: DialogComponent;


    constructor(private route: ActivatedRoute,
                private laboratoryService: LaboratoryService) {
    }

    ngOnInit(): void {
        this.route.params
            .switchMap((params: Params) => this.laboratoryService.getLaboratory(+params['id']))
            .subscribe(laboratoryWithRooms => {
                console.log(laboratoryWithRooms);
                this.laboratory = laboratoryWithRooms.laboratory;
                this.rooms = [];
                for (let r of laboratoryWithRooms.rooms) {
                    console.log("room");
                    console.log(r.room);
                    console.log("computers");
                    console.log(r.computers);
                    let computers: [Computer, ComputerState, ConnectedUser[]][] = [];
                    for (let c of r.computers) {
                        console.log("inside element");
                        console.log(c);
                        computers.push([c.computer, c.state.state, c.state.users]);
                    }
                    this.rooms.push([r.room, computers]);
                }
                console.log(this.rooms);
            });
    }

    selectComputer(event: [boolean, Computer]) {
        console.log(event);
        if (event[0]) {
            this.selectedComputers.push(event[1]);
        } else {
            let index = this.selectedComputers.indexOf(event[1], 0);
            if (index > -1) {
                this.selectedComputers.splice(index, 1);
            }
        }
    }

    showMessageForSelected() {
        this.messageModal.showForSelected(this.selectedComputers);
    }

    showMessageForComputer(computer: Computer) {
        this.messageModal.showForComputer(computer);
    }

    showOrderPanelForComputer(computer: Computer){
        console.log(computer);
    }

    addANewComputer(roomID: number) {
        this.computerFormPanel.show(false, roomID)
    }

    editComputer(computer: Computer) {
        this.computerFormPanel.computer = computer;
        this.computerFormPanel.show(true, computer.roomID);
    }


    isLoggedIn() {
        return LoginService.isLoggedIn();
    }

    showAlert(message: [string, string]) {
        this.dialogModal.show(message[0], message[1])
    }

}