import { Component, Input, Inject, forwardRef } from '@angular/core'; import { RdComponent } from '../../base/rdComponent'; import { RdLib } from '../../base/rdLib'; import { AppComponent } from '../../app.component'; import { Portlet } from './portlet'; import { Grid } from '../grid/grid'; import { GridWithProvider } from '../grid/gridWithProvider'; import { ServerSidePagingProxy } from '../../base/serviceCall'; @Component({ selector: "rd-tool:[rd-type=export]", template: ` ` }) export class PortletToolExport extends RdComponent { constructor(@Inject(forwardRef(() => Portlet)) private portlet: Portlet) { super(); } @Input("rd-text") tooltip = RdLib.localization.translateEn("Export as Excel"); @Input("rd-provider") provider; @Input("rd-grid") grid: Grid | GridWithProvider; @Input("rd-allField-option") allOptions = false; @Input("rd-additional-fields") additionalFields: object; @Input("rd-color") color: string = "white"; RdLib = RdLib; export(event) { event.stopPropagation(); if (!this.provider.content.state.serviceCalled) { RdLib.screenOperations.toastr.warning(RdLib.localization.translateEn("Service Call Required")); return; } let parameters = this.provider.content.params; let request = { MethodName: parameters["service"], Parameters: parameters["params"], Headers: {}, ExportOrders: [], Pageable: this.provider.content.proxy == ServerSidePagingProxy ? true : false, Type: "file", FileType: "xls" } if (!this.allOptions) { if (parameters.params.hasOwnProperty("DisplayItems")) request.ExportOrders = parameters.params.DisplayItems; else if (parameters["service"] == "SearchCrossDomain") request.ExportOrders = parameters.params.RequestedProperties; else { for (let column of this.grid.columns["_results"]) { if (column["type"] != 'operations' && column["key"]) { request.ExportOrders.push(column["key"]); request.Headers[column["key"]] = column["text"]; } } } } if (this.additionalFields) { for (let i of Object.keys(this.additionalFields)) { request.ExportOrders.push(i); request.Headers[i] = this.additionalFields[i]; } } AppComponent.instance.export(request); } }