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);
}
}