/********************************************************************************
 * Copyright (c) 2020 Contributors to the Eclipse Foundation
 *
 * See the NOTICE file(s) distributed with this work for additional
 * information regarding copyright ownership.
 *
 * This program and the accompanying materials are made available under the
 * terms of the Eclipse Public License 2.0 which is available at
 * http://www.eclipse.org/legal/epl-2.0
 *
 * SPDX-License-Identifier: EPL-2.0
 ********************************************************************************/

import {ChangeDetectionStrategy, Component, EventEmitter, Input, Output} from "@angular/core";
import {momentFormatDisplayNumeric} from "../../../util/moment";
import {ISelectOption} from "../../controls/select/model";
import {IStatementTableEntry} from "./IStatementTableEntry";

export type TStatementTableColumns = "select" | "id" | "title" | "type" | "date" | "city" | "district" | "link";

@Component({
    selector: "app-statement-table",
    templateUrl: "./statement-table.component.html",
    styleUrls: ["./statement-table.component.scss"],
    changeDetection: ChangeDetectionStrategy.OnPush
})
export class StatementTableComponent {

    @Input()
    public appColumnsToDisplay: TStatementTableColumns[] = ["select", "id", "title", "type", "date", "city", "district", "link"];

    @Input()
    public appDisabled: boolean;

    @Input()
    public appEntries: IStatementTableEntry[];

    @Input()
    public appStatementTypeOptions: ISelectOption<number>[] = [];

    @Input()
    public appTimeDisplayFormat: string = momentFormatDisplayNumeric;

    @Output()
    public appToggleSelect: EventEmitter<{ id: number, value: boolean }> = new EventEmitter();

    public select(id: number) {
        this.appToggleSelect.emit({id, value: true});
    }

    public deselect(id: number) {
        this.appToggleSelect.emit({id, value: false});
    }
}
