Skip to content
Snippets Groups Projects
datatable.component.ts 2.08 KiB
Newer Older
  • Learn to ignore specific revisions
  • Tifenn Guillas's avatar
    Tifenn Guillas committed
    import { Component, Input, ChangeDetectionStrategy, Output, EventEmitter } from '@angular/core';
    
    Tifenn Guillas's avatar
    Tifenn Guillas committed
    import { BsModalRef } from 'ngx-bootstrap/modal';
    
    François Agneray's avatar
    François Agneray committed
    
    import { SearchMeta } from '../store/model';
    
    Tifenn Guillas's avatar
    Tifenn Guillas committed
    import { Attribute } from 'src/app/metamodel/model';
    
    François Agneray's avatar
    François Agneray committed
    
    
    Tifenn Guillas's avatar
    Tifenn Guillas committed
    interface ModalData {
        isOpen: boolean;
        type: string;
        data: object;
    }
    
    
    François Agneray's avatar
    François Agneray committed
    @Component({
        selector: 'app-datatable',
        templateUrl: 'datatable.component.html',
    
    Tifenn Guillas's avatar
    Tifenn Guillas committed
        styleUrls: ['datatable.component.css'],
    
    François Agneray's avatar
    François Agneray committed
        changeDetection: ChangeDetectionStrategy.OnPush
    })
    export class DatatableComponent {
    
    Tifenn Guillas's avatar
    Tifenn Guillas committed
        @Input() datasetName: string;
    
    Tifenn Guillas's avatar
    Tifenn Guillas committed
        @Input() datasetAttributeList: Attribute[];
    
    François Agneray's avatar
    François Agneray committed
        @Input() searchMeta: SearchMeta;
        @Input() searchData: any[];
        @Output() initSearchMeta: EventEmitter<{}> = new EventEmitter();
        @Output() getSearchData: EventEmitter<number> = new EventEmitter();
    
    
    Tifenn Guillas's avatar
    Tifenn Guillas committed
        bsModalRef: BsModalRef;
    
    Tifenn Guillas's avatar
    Tifenn Guillas committed
    
        modalData: ModalData = {
    
    Tifenn Guillas's avatar
    Tifenn Guillas committed
            isOpen: false,
    
    Tifenn Guillas's avatar
    Tifenn Guillas committed
            type: null,
            data: null
    
    François Agneray's avatar
    François Agneray committed
        initDatatable() {
    
    François Agneray's avatar
    François Agneray committed
            this.initSearchMeta.emit();
            this.getSearchData.emit(1);
        }
    
    Tifenn Guillas's avatar
    Tifenn Guillas committed
    
        getAttributeRenderer(attributeName: string): string {
    
    Tifenn Guillas's avatar
    Tifenn Guillas committed
            const attribute = this.datasetAttributeList.find(a => a.name === attributeName);
    
    Tifenn Guillas's avatar
    Tifenn Guillas committed
            return attribute.renderer;
        }
    
        getAttributeUriAction(attributeName: string, datum: string): string {
    
    Tifenn Guillas's avatar
    Tifenn Guillas committed
            const attribute = this.datasetAttributeList.find(a => a.name === attributeName);
    
    Tifenn Guillas's avatar
    Tifenn Guillas committed
            return attribute.uri_action;
    
    Tifenn Guillas's avatar
    Tifenn Guillas committed
    
    
    Tifenn Guillas's avatar
    Tifenn Guillas committed
        openModal(type: string, attributeName: string, value: string) {
            this.modalData.type = type;
            if (type === 'thumbnail') {
                this.modalData.data = {
                    title: value,
                    srcImage: this.getAttributeUriAction(attributeName, value)
                };
            } else if (type === 'fancybox') {
                this.modalData.data = {
                    title: value,
    
    Tifenn Guillas's avatar
    Tifenn Guillas committed
                    idAttribute: value,
    
    Tifenn Guillas's avatar
    Tifenn Guillas committed
                };
            }
            this.modalData.isOpen = true;
    
    Tifenn Guillas's avatar
    Tifenn Guillas committed
        closeModal(event: null) {
            this.modalData.isOpen = false;
            this.modalData.type = null;
            this.modalData.data = null;
    
    Tifenn Guillas's avatar
    Tifenn Guillas committed
        }
    }