Skip to content
Snippets Groups Projects
add-attribute.component.ts 2.6 KiB
Newer Older
  • Learn to ignore specific revisions
  • /**
     * This file is part of Anis Client.
     *
     * @copyright Laboratoire d'Astrophysique de Marseille / CNRS
     *
     * For the full copyright and license information, please view the LICENSE
     * file that was distributed with this source code.
     */
    
    
    import { Component, ChangeDetectionStrategy, Input, Output, EventEmitter, TemplateRef } from '@angular/core';
    
    import { BsModalService } from 'ngx-bootstrap/modal';
    import { BsModalRef } from 'ngx-bootstrap/modal/bs-modal-ref.service';
    
    
    import { Attribute } from 'src/app/metamodel/models';
    import { Column } from 'src/app/admin/store/models';
    
    
    @Component({
        selector: 'app-add-attribute',
        templateUrl: 'add-attribute.component.html',
        changeDetection: ChangeDetectionStrategy.OnPush
    })
    export class AddAttributeComponent {
        @Input() columnList: Column[];
        @Input() columnListIsLoading: boolean;
        @Input() columnListIsLoaded: boolean;
        @Input() attributeList: Attribute[];
        @Output() loadColumnList: EventEmitter<{}> = new EventEmitter();
        @Output() add: EventEmitter<Attribute> = new EventEmitter();
    
        modalRef: BsModalRef;
    
        constructor(private modalService: BsModalService) { }
    
        openModal(template: TemplateRef<any>) {
            this.loadColumnList.emit();
            this.modalRef = this.modalService.show(template);
        }
    
        alreadyExists(columnName: string): boolean {
            return this.attributeList.map(a => a.name).includes(columnName);
        }
    
        addNewAttribute(column: Column) {
            let id = 1;
            if (this.attributeList.length > 0) {
                id = Math.max(...this.attributeList.map(a => a.id)) + 1;
            }
            
            this.add.emit({
                id,
                name: column.name,
                label: column.name,
                form_label: column.name,
    
                description: null,
                primary_key: false,
    
                type: column.type,
    
                search_type: null,
                operator: null,
    
    François Agneray's avatar
    François Agneray committed
                dynamic_operator: null,
    
                min: null,
                max: null,
                placeholder_min: null,
                placeholder_max: null,
    
                criteria_display: id * 10,
                output_display: id * 10,
    
                selected: true,
                renderer: null,
                renderer_config: null,
                order_by: true,
    
    François Agneray's avatar
    François Agneray committed
                archive: false,
    
                detail_display: id * 10,
    
                options: null,
                vo_utype: null,
                vo_ucd: null,
                vo_unit: null,
                vo_description: null,
                vo_datatype: null,
                vo_size: null,
                id_criteria_family: null,
    
                id_output_category: null,
                id_detail_output_category: null