import { ChangeDetectorRef, EventEmitter, OnChanges, OnDestroy, OnInit, SimpleChanges } from '@angular/core';
import { MatMenuTrigger } from '@angular/material/menu';
import { Router } from '@angular/router';
import { Report } from '../../../../common-utils/report';
import { CrossFilterDto } from '../../../../common-dto/elements-dto';
import { FieldsListService } from '../../../../field-list-lib/fields-list.service';
import { AttributeData } from '../../../fields/attribute-data';
import { Page } from '../../graphical-report/page/page';
import { ReportBuilderMasterService } from '../../report-builder-master.service';
import { ITabularReportComponent } from '../itabular-report.component';
import { TabularReport } from '../tabular-report';
import { ElementService } from '../../element.service';
import { CommonService } from '../../../../common.service';
import { FilterSourceElementType } from '../../../filters/chart-filter-type';
import { TabularReportService } from '../tabular-report.service';
import { FormGroup, FormBuilder } from '@angular/forms';
import { ScreenType } from '../../../filters/condition-type';
import { AxFilter } from '../../../filters/ax-filter';
import { DashboardBuilderService } from '../../../../dashboard-lib/dashboard-builder.service';
import { DrillThroughService } from '../../../../drill-through/drill-through.service';
import { User } from '../../../../core/user/user.types';
import { UserDataService } from '../../../../core/user/user-data.service';
import { PageEvent } from '@angular/material/paginator';
import { GhostLoaderType } from '../../../../ghost-loader/ghost-loader.component';
import * as i0 from "@angular/core";
export declare class TabularComponent implements OnInit, ITabularReportComponent, OnChanges, OnDestroy {
    private _fieldsListService;
    private _reportBuilderMasterService;
    private _elementService;
    private _commonService;
    private _tabularReportService;
    private _formBuilder;
    private _userDataService;
    private _changeDetectorRef;
    private _dashboardBuilderService;
    private _drillThroughService;
    private _router;
    page: Page;
    tabularReport: TabularReport;
    isEditable: boolean;
    userEmail: string;
    sendExcelReportEvent: EventEmitter<any>;
    x1ImageMediaUrl: string;
    screenType: ScreenType;
    drillThroughParentType: ScreenType;
    drillThroughFilterInput: AxFilter;
    contextMenu: MatMenuTrigger;
    removeFromDashboardMenu: MatMenuTrigger;
    drillThroughTrigger: MatMenuTrigger;
    x1MediaUrl: string;
    appVersionId: number;
    GhostLoaderType: typeof GhostLoaderType;
    showGhostLoader: boolean;
    columnData: any;
    reportId: number;
    contextMenuPosition: {
        x: string;
        y: string;
    };
    currentIndex: number;
    isDirty: boolean;
    reportDirty: any;
    report: Report;
    _isColumnExist: boolean;
    componentRef: any;
    exportFormBuilder: FormGroup;
    displayNotification: boolean;
    emailPattern: string;
    displayEmailValidationError: boolean;
    selectedDataPoints: Array<number>;
    elementGuid: string;
    drillThroughFilter: AxFilter;
    pages: Array<Page>;
    currentAttribute: AttributeData;
    user: User;
    isDataLoading: boolean;
    private _unsubscribeAll;
    constructor(_fieldsListService: FieldsListService, _reportBuilderMasterService: ReportBuilderMasterService, _elementService: ElementService, _commonService: CommonService, _tabularReportService: TabularReportService, _formBuilder: FormBuilder, _userDataService: UserDataService, _changeDetectorRef: ChangeDetectorRef, _dashboardBuilderService: DashboardBuilderService, _drillThroughService: DrillThroughService, _router: Router);
    get filterSourceElementTypes(): typeof FilterSourceElementType;
    get screenTypes(): typeof ScreenType;
    ngOnChanges(changes: SimpleChanges): void;
    ngOnInit(): void;
    /**
     * On destroy
     */
    ngOnDestroy(): void;
    /**
     * Subscribers for the component
     */
    subscribers(): void;
    getPageList(): void;
    filterDrillThroughPages(attribute: AttributeData): void;
    getMatrixDimension(): void;
    /**
     * Created filter object for cross filtering.
     *
     *  @param CrossFilterDto
     */
    createCrossFilter(crossFilterData: CrossFilterDto): void;
    /**
     * pushed the filter object into basic filter and applied the filter on the data
     *
     *  @param CrossFilterDto
     *  @param AxFilter
     */
    getCrossFilterData(_filter: AxFilter, crossFilterData: CrossFilterDto): void;
    /**
     * to add column into tabular report
     *
     * @param AttributeData
     *
     */
    addColumn(attributeData: AttributeData): void;
    /**
     * to check dropped column is already exist in table or not
     *
     * @param AttributeData
     *
     */
    isColumnExist(attributeData: AttributeData): void;
    /**
     *  call this function when apply filter
     */
    getChartData(): void;
    /**
     *  call this function for send email with excel report as attachment
     */
    sendEmail(): void;
    /**
     *  close the export to email menu on click of cancel
     */
    closeExportMenu(): void;
    /**
     *  Validation of email id for export of tabular report
     */
    emailValidate(): void;
    /**
     *
     * @param MouseEvent
     * @param number
     * @param AttributeData
     */
    onContextMenu(event: MouseEvent): void;
    removeFromDashboard(): void;
    drillThroughContext(event: MouseEvent, attribute: AttributeData, i: number): void;
    /**
     * Created filter object for cross filtering.
     *
     *  @param CrossFilterDto
     */
    createDrillThroughFilter(series: any): void;
    /**
     * Called on page name clicked on dropdown options of drill through pages
     *
     * @param page
     */
    pageClick(page: Page): void;
    /**
     * Navigate to drill through component with page id as route params
     * Checks the parent URL if it is already exists or not
     *
     * @param page
     */
    navigateToDrillThrough(page: Page): void;
    /**
     * handle paginator event to change data as per page index and pagesize
     *
     * @param event
     */
    handlePageEvent(event: PageEvent): void;
    /**
     * Apply local filter.
     */
    applyLocalFilter(): void;
    static ɵfac: i0.ɵɵFactoryDeclaration<TabularComponent, never>;
    static ɵcmp: i0.ɵɵComponentDeclaration<TabularComponent, "tabular", never, { "page": "page"; "tabularReport": "tabularReport"; "isEditable": "isEditable"; "userEmail": "userEmail"; "x1ImageMediaUrl": "x1ImageMediaUrl"; "screenType": "screenType"; "drillThroughParentType": "drillThroughParentType"; "drillThroughFilterInput": "drillThroughFilterInput"; "x1MediaUrl": "x1MediaUrl"; "appVersionId": "appVersionId"; }, { "sendExcelReportEvent": "sendExcelReportEvent"; }, never, never>;
}
