stimulsoft-viewer-angular
Version:
Stimulsoft Viewer Angular
687 lines (663 loc) • 81.6 kB
JavaScript
import { Component, Input, ViewChild } from '@angular/core';
import * as i0 from "@angular/core";
import * as i1 from "../services/model.service";
import * as i2 from "../services/export.service";
import * as i3 from "../services/helper.service";
import * as i4 from "./form.service";
import * as i5 from "../menu/menu.service";
import * as i6 from "../services/collections.service";
import * as i7 from "../services/controller.service";
import * as i8 from "@angular/common";
import * as i9 from "../controls/button.component";
import * as i10 from "../controls/text-box.componet";
import * as i11 from "../controls/checkbox.component";
import * as i12 from "./base-form.component";
import * as i13 from "./group-panel.component";
import * as i14 from "../controls/radio-button.components";
import * as i15 from "../controls/drop-down-list-for-export-form.component";
export class ExportFormComponent {
constructor(model, exportService, helper, formService, menuService, collections, controller) {
this.model = model;
this.exportService = exportService;
this.helper = helper;
this.formService = formService;
this.menuService = menuService;
this.collections = collections;
this.controller = controller;
this.PROPERTY_ALIAS = {
ImageFormatForHtml: 'ImageFormat',
EncodingTextOrCsvFile: 'Encoding',
ExportModeRtf: 'ExportMode',
EncodingDifFile: 'Encoding',
EncodingDbfFile: 'CodePage'
};
this.formVisible = false;
this.disabledComponents = {};
}
ngOnChanges(changes) {
if (this.baseForm && this.formService?.form?.name === this.baseForm.name) {
setTimeout(() => this.updateDisabledComponents());
}
}
ngOnInit() { }
action() {
this.formService.closeForm(this.baseForm.name);
if (this.model.options.exports.storeExportSettings) {
this.helper.setCookie('StimulsoftWebViewerExportSettings' + this.exportService.getCommonExportFormat(), JSON.stringify(this.exportService.exportSettings));
}
this.exportService.postExport();
}
updateDisabledComponents() {
['StandardPdfFonts', 'EmbeddedFonts', 'UseUnicode'].forEach(n => this.disabledComponents[n] = (this.exportService.exportSettings.PdfACompliance === true));
this.disabledComponents.ImageQuality = this.exportService.exportSettings.ImageCompressionMethod && this.exportService.exportSettings.ImageCompressionMethod !== 'Jpeg';
this.disabledComponents.ExportObjectFormatting = this.exportService.exportSettings.DataExportMode === 'AllBands';
this.disabledComponents.UseOnePageHeaderAndFooter = this.exportService.exportSettings.DataExportMode != 'AllBands';
this.disabledComponents.EncodingDifFile = this.exportService.exportSettings.UseDefaultSystemEncoding;
this.disabledComponents.TiffCompressionScheme = this.exportService.exportSettings.ImageType !== 'Tiff';
this.disabledComponents.UseDigitalSignature = !this.exportService.exportSettings.UseDigitalSignature || !(this.model.pdfSecurityCertificates?.length > 0);
this.disabledComponents.RemoveEmptySpaceAtBottom = this.exportService.exportSettings.UsePageHeadersAndFooters;
if (this.exportService.exportSettings.ImageType != null) {
const ifComponent = this.exportService.exportFormSettings.components.find(c => c.name === 'ImageFormat');
if (ifComponent != null) {
ifComponent.items = this.collections.getImageFormatItems(this.exportService.exportSettings.ImageType === 'Emf');
}
}
this.disabledComponents.DitheringType = this.exportService.exportSettings.ImageFormat !== 'Monochrome';
if (this.saveReportMdc) {
this.saveReportMdc.click();
}
if (this.pagesRangeAll && !this.exportFormSettings.groups.pageRangeGroup.pageRangeAllIsDisabled) {
this.pagesRangeAll.click();
}
if (this.pageRangeCurrentPage && this.exportFormSettings.groups.pageRangeGroup.pageRangeAllIsDisabled) {
this.pageRangeCurrentPage.click();
}
if (this.exportService.exportSettings.CompressToArchive === true) {
this.exportFormSettings.groups.pageRangeGroup.pageRangeAllIsDisabled = false;
}
if (this.exportService.exportSettings.CompressToArchive === false) {
this.exportFormSettings.groups.pageRangeGroup.pageRangeAllIsDisabled = true;
}
}
componentAction(comp, value) {
let property = this.PROPERTY_ALIAS[comp.name] || comp.name;
switch (property) {
case 'EmbeddedFonts':
case 'UseUnicode':
if (value) {
this.exportService.exportSettings.StandardPdfFonts = false;
}
break;
case 'StandardPdfFonts':
if (value) {
this.exportService.exportSettings.EmbeddedFonts = false;
this.exportService.exportSettings.UseUnicode = false;
}
break;
case 'ImageType':
this.exportService.export('Image' + value, true);
break;
case 'DataType':
case 'HtmlType':
this.exportService.export(value, true);
break;
case 'ExcelType':
const exportFormat = value === 'ExcelBinary' ? 'Excel' : value;
this.exportService.export(exportFormat, true);
break;
case 'UseDigitalSignature':
if (!(value === true || value === false)) {
property = 'CertificateThumbprint';
}
if (value === true && this.collections.getPdfSecurityCertificatesItems().length == 0) {
value = false;
this.controller.showError('Warning', 'Certificate Not Found!');
}
break;
case 'UsePageHeadersAndFooters':
if (value === true) {
this.exportService.exportSettings.RemoveEmptySpaceAtBottom = true;
}
break;
}
this.exportService.exportSettings[property] = value;
this.updateDisabledComponents();
}
getValue(comp, component) {
const property = this.PROPERTY_ALIAS[comp.name] || comp.name;
switch (property) {
case 'Zoom2':
return this.exportService.exportSettings[property].toString();
case 'UseDigitalSignature':
if (component == 'dropDownList') {
return this.exportService.exportSettings['CertificateThumbprint'];
}
default:
return this.exportService.exportSettings[property];
}
}
changeVisibility(state) {
this.formVisible = state === 'visible';
if (state === 'hidden' && this.exportFormSettings?.groups?.savingReportGroup) {
this.helper.setCookie('StimulsoftWebViewerExportSettingsOpeningGroups', JSON.stringify({
SavingReportGroup: this.exportFormSettings.groups.savingReportGroup.opened,
PageRangeGroup: this.exportFormSettings.groups.pageRangeGroup.opened,
SettingsGroup: this.exportFormSettings.groups.settingsGroup.opened
}));
}
if (state === 'visible') {
this.updateDisabledComponents();
}
}
showMenu(comp, button) {
let menuName = 'documentSecurityMenu';
if (comp.name === 'DocumentSecurityButton') {
this.menuService.addMenu({
type: menuName, name: menuName, items: [], parent: button.button,
itemStyleName: 'stiJsViewerMenuStandartItem', menuStyleName: 'stiJsViewerDropdownMenu',
state: ''
});
}
else {
menuName = this.menuService.VERTICAL_MENU_NAME;
this.menuService.addMenu({
type: 'buttonMenu', name: menuName, items: this.collections.getPdfSecurityCertificatesItems(), parent: button.button,
itemStyleName: 'stiJsViewerMenuStandartItem', menuStyleName: 'stiJsViewerDropdownMenu',
state: ''
});
}
setTimeout(() => {
this.menuService.showMenu(menuName);
});
}
getTextBoxType(name) {
if (name === 'SaveReportPassword' || name === 'PasswordInputUser' || name === 'PasswordInputOwner') {
return this.formVisible ? 'password' : '';
}
return null;
}
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: ExportFormComponent, deps: [{ token: i1.ModelService }, { token: i2.ExportService }, { token: i3.HelperService }, { token: i4.FormService }, { token: i5.MenuService }, { token: i6.CollectionsService }, { token: i7.ControllerService }], target: i0.ɵɵFactoryTarget.Component }); }
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: ExportFormComponent, selector: "sti-export-form", inputs: { exportFormSettings: "exportFormSettings" }, viewQueries: [{ propertyName: "baseForm", first: true, predicate: ["baseForm"], descendants: true }, { propertyName: "saveReportMdc", first: true, predicate: ["saveReportMdc"], descendants: true }, { propertyName: "pagesRangeAll", first: true, predicate: ["pagesRangeAll"], descendants: true }, { propertyName: "pageRangeCurrentPage", first: true, predicate: ["pageRangeCurrentPage"], descendants: true }], usesOnChanges: true, ngImport: i0, template: `
<sti-base-form #baseForm [fontFamily]="model.options.toolbar.fontFamily"
[color]="model.options.toolbar.fontColor"
[fontSize]="'12px'"
[containerPadding]="'3px'"
[name]="'exportForm'"
[caption]="model.loc('ExportFormTitle')"
[defaultTop]="150"
(changeVisibility)="changeVisibility($event)"
(action)="action()">
<table class="stiJsViewerClearAllStyles" cellpadding="0" cellspacing="0" [style.width]="'100%'">
<tbody>
<tr *ngIf="exportFormSettings?.groups.savingReportGroup.visible" class="stiJsViewerClearAllStyles">
<td class="stiJsViewerClearAllStyles" colspan="2">
<sti-group-panel [caption]="model.loc('SavingReport')"
[width]="390"
[margin]="'4px'"
[innerPadding]="'4px 0 4px 0'"
[opened]="exportFormSettings.groups.savingReportGroup.opened"
(action)="exportFormSettings.groups.savingReportGroup.opened=$event">
<table class="stiJsViewerClearAllStyles" cellpadding="0" cellspacing="0" [style.width]="'100%'">
<tbody>
<tr class="stiJsViewerClearAllStyles">
<td class="stiJsViewerClearAllStyles" colspan="2">
<sti-radio-button #saveReportMdc
[name]="baseForm.name + 'SaveReportMdc'"
[groupName]="baseForm.name + 'SavingReportGroup'"
[caption]="model.loc('SaveReportMdc')"
[margin]="'6px 8px 3px 8px'"
[checked]="true"
(action)="exportService.exportSettings.Format = 'Mdc'">
</sti-radio-button>
</td>
</tr>
<tr class="stiJsViewerClearAllStyles">
<td class="stiJsViewerClearAllStyles" colspan="2">
<sti-radio-button
[name]="baseForm.name + 'SaveReportMdz'"
[groupName]="baseForm.name + 'SavingReportGroup'"
[caption]="model.loc('SaveReportMdz')"
[margin]="'3px 8px 3px 8px'"
(action)="exportService.exportSettings.Format = 'Mdz'">
</sti-radio-button>
</td>
</tr>
<tr class="stiJsViewerClearAllStyles">
<td class="stiJsViewerClearAllStyles" colspan="2">
<sti-radio-button
[name]="baseForm.name + 'SaveReportMdx'"
[groupName]="baseForm.name + 'SavingReportGroup'"
[caption]="model.loc('SaveReportMdx')"
[margin]="'3px 8px 0px 8px'"
(action)="exportService.exportSettings.Format = 'Mdx'">
</sti-radio-button>
</td>
</tr>
<tr class="stiJsViewerClearAllStyles">
<td class="stiJsViewerClearAllStyles" [style.padding]="'0px 8px'" [style.minWidth.px]="150" [attr.title]="model.loc('PasswordSaveReportTooltip')">
{{model.loc('PasswordSaveReport')}}
</td>
<td>
<sti-text-box
[width]="140"
[tooltip]="model.loc('PasswordSaveReportTooltip')"
[margin]="'4px 8px 0px 8px'"
[type]="getTextBoxType('SaveReportPassword')"
[enabled]="exportService.exportSettings.Format == 'Mdx'"
(onchange)="exportService.exportSettings.Password = $event.value">
</sti-text-box>
</td>
</tr>
</tbody>
</table>
</sti-group-panel>
</td>
</tr>
<tr *ngIf="exportFormSettings?.groups.pageRangeGroup.visible" class="stiJsViewerClearAllStyles">
<td class="stiJsViewerClearAllStyles" colspan="2">
<sti-group-panel [caption]="model.loc('PagesRange')"
[width]="390"
[margin]="'4px'"
[innerPadding]="'4px 0 4px 0'"
[opened]="exportFormSettings.groups.pageRangeGroup.opened"
(action)="exportFormSettings.groups.pageRangeGroup.opened=$event">
<table class="stiJsViewerClearAllStyles" cellpadding="0" cellspacing="0" [style.width]="'100%'">
<tbody>
<tr class="stiJsViewerClearAllStyles">
<td class="stiJsViewerClearAllStyles" colspan="2">
<sti-radio-button #pagesRangeAll
[name]="baseForm.name + 'PagesRangeAll'"
[groupName]="baseForm.name + 'PageRangeGroup'"
[caption]="model.loc('PagesRangeAll')"
[tooltip]="model.loc('PagesRangeAllTooltip')"
[margin]="'6px 8px 6px 8px'"
[checked]="!exportFormSettings.groups.pageRangeGroup.pageRangeAllIsDisabled"
[enabled]="!exportFormSettings.groups.pageRangeGroup.pageRangeAllIsDisabled"
(action)="exportService.exportSettings.PageRange = 'All'">
</sti-radio-button>
</td>
</tr>
<tr class="stiJsViewerClearAllStyles">
<td class="stiJsViewerClearAllStyles" colspan="2">
<sti-radio-button #pageRangeCurrentPage
[name]="baseForm.name + 'PageRangeCurrentPage'"
[groupName]="baseForm.name + 'PageRangeGroup'"
[caption]="model.loc('PagesRangeCurrentPage')"
[tooltip]="model.loc('PagesRangeCurrentPageTooltip')"
[margin]="'0px 8px 4px 8px'"
[checked]="exportFormSettings.groups.pageRangeGroup.pageRangeAllIsDisabled"
(action)="exportService.exportSettings.PageRange = (model.reportParams.pageNumber + 1).toString()">
</sti-radio-button>
</td>
</tr>
<tr class="stiJsViewerClearAllStyles">
<td class="stiJsViewerClearAllStyles" colspan="2">
<sti-radio-button
[name]="baseForm.name + 'PageRangePages'"
[groupName]="baseForm.name + 'PageRangeGroup'"
[caption]="model.loc('PagesRangePages')"
[tooltip]="model.loc('PagesRangePagesTooltip')"
[margin]="'0px 8px 0px 8px'"
[paddingLeftLastCell]="'60px'"
(action)="exportService.exportSettings.PageRange = pagesRange.element.nativeElement.value">
<sti-text-box #pagesRange
[width]="130"
[tooltip]="model.loc('PagesRangePagesTooltip')"
[margin]="'0px 0px 0px 30px'"
(onchange)="exportService.exportSettings.PageRange = $event.value"
(onblur)="exportService.exportSettings.PageRange = $event.value">
</sti-text-box>
</sti-radio-button>
</td>
</tr>
</tbody>
</table>
</sti-group-panel>
</td>
</tr>
<tr *ngIf="exportFormSettings?.groups.settingsGroup.visible"class="stiJsViewerClearAllStyles">
<td class="stiJsViewerClearAllStyles" colspan="2">
<sti-group-panel [caption]="model.loc('SettingsGroup')"
[opened]="exportFormSettings.groups.settingsGroup.opened"
[width]="390"
[margin]="'4px'"
[innerPadding]="'4px 0 4px 0'"
(action)="exportFormSettings.groups.settingsGroup.opened=$event">
<table class="stiJsViewerClearAllStyles" cellpadding="0" cellspacing="0" [style.width]="'100%'">
<tbody>
<tr *ngFor="let comp of exportFormSettings.components">
<td *ngIf="comp.label != null" [style.padding]="'0px 8px'" [style.minWidth.px]="150" [attr.title]="comp.tooltip">
{{comp.label}}
</td>
<td *ngIf="comp.name == 'UseDigitalSignature'">
<sti-check-box
[tooltip]="comp.tooltip"
[margin]="comp.margin"
[captionText]="comp.caption"
[isChecked]="getValue(comp)"
(action)="componentAction(comp, $event)">
</sti-check-box>
</td>
<td [attr.colSpan]="comp.label != null || comp.name == 'DocumentSecurityButton' || comp.name == 'UseDigitalSignature' ? 1 : 2">
<sti-drop-down-list-for-export-form *ngIf="comp.type == 'DropDownListForExportForm'"
[width]="comp.width"
[items]="comp.items"
[key]="getValue(comp, 'dropDownList')"
[margin]="comp.margin"
[verticalAlign]="comp.name == 'ImageQuality' || comp.name == 'ImageResolution' ? 'middle' : null"
[styleDisplay]="comp.name == 'ImageQuality' || comp.name == 'ImageResolution' ? 'inline-block' : null"
[enabled]="!disabledComponents[comp.name]"
(action)="componentAction(comp, $event.key)">
</sti-drop-down-list-for-export-form>
<div *ngIf="comp.name == 'ImageQuality' || comp.name == 'ImageResolution'"
[style.display]="'inline-block'">
{{comp.name == 'ImageQuality' ? '%' : 'dpi'}}
</div>
<sti-text-box *ngIf="comp.type == 'TextBox'"
[width]="comp.width"
[tooltip]="comp.tooltip"
[margin]="comp.margin"
[type]="getTextBoxType(comp.name)"
[enabled]="!comp.disabled"
[value]="getValue(comp)"
[enabled]="!disabledComponents[comp.name]"
(onchange)="componentAction(comp, $event.value)">
</sti-text-box>
<sti-check-box *ngIf="comp.type == 'CheckBox' || comp.type == 'DigitalSignature'"
[tooltip]="comp.tooltip"
[margin]="comp.margin"
[captionText]="comp.caption"
[isChecked]="getValue(comp)"
[isEnabled]="!disabledComponents[comp.name]"
(action)="componentAction(comp, $event)">
</sti-check-box>
</td>
<td *ngIf="comp.name == 'DocumentSecurityButton'">
<sti-button #button
[width]="comp.width"
[arrow]="'Down'"
[minWidth]="'163px'"
[captionAlign]="'center'"
[display]="'inline-block'"
[styleName]="'stiJsViewerFormButton'"
[margin]="'2px 8px'"
[innerTableWidth]="'100%'"
[captionWidth]="'100%'"
[caption]="comp.name == 'DocumentSecurityButton' ? comp.caption : ''"
[enabled]="!disabledComponents[comp.name + 'Button']"
(action)="showMenu(comp, button)">
</sti-button>
</td>
</tr>
</tbody>
</table>
</sti-group-panel>
</td>
</tr>
<tr *ngIf="model.options.exports.showOpenAfterExport && exportFormSettings?.openAfterExport && !exportService.sendMail" class="stiJsViewerClearAllStyles">
<td class="stiJsViewerClearAllStyles" colspan="2">
<sti-check-box [captionText]="model.loc('OpenAfterExport')"
[tooltip]="model.loc('OpenAfterExportTooltip')"
[margin]="'4px 8px 4px 8px'"
[isChecked]="exportService.exportSettings.OpenAfterExport"
(action)="exportService.exportSettings.OpenAfterExport = $event">
</sti-check-box>
</td>
</tr>
</tbody>
</table>
</sti-base-form>
`, isInline: true, dependencies: [{ kind: "directive", type: i8.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i8.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i9.ButtonComponent, selector: "sti-button", inputs: ["caption", "caption2", "captionAlign", "captionPadding", "captionPaddingLeft", "captionWhiteSpace", "captionOverflow", "captionTextOverflow", "captionWidth", "captionMaxWidth", "captionLineHeight", "imageName", "arrow", "arrowMarginTop", "margin", "height", "selected", "minWidth", "innerTableWidth", "menuItems", "actionName", "tooltip", "imageCellTextAlign", "imageCellWidth", "imageCellPadding", "imageSizesWidth", "imageSizesHeight", "imageMargin", "width", "display", "closeButton", "resourceButton", "styleColors", "boxSizing", "navagationPanelTooltip", "cursor", "fontSize", "helpLink", "borderColor", "styleName", "enabled"], outputs: ["action", "closeButtonAction"] }, { kind: "component", type: i10.TextBoxComponent, selector: "sti-text-box", inputs: ["width", "actionLostFocus", "tooltip", "enabled", "value", "margin", "focusOnCreate", "maxLength", "color", "type", "padding", "border", "variable", "textAlign", "autocomplete", "readOnly"], outputs: ["action", "onchange", "onblur"] }, { kind: "component", type: i11.CheckboxComponent, selector: "sti-check-box", inputs: ["isEnabled", "isChecked", "indeterminate", "captionText", "tooltip", "margin", "width", "styleColors", "imageBlockParentWidth", "nullable"], outputs: ["action"] }, { kind: "component", type: i12.BaseFormComponent, selector: "sti-base-form", inputs: ["level", "caption", "helpUrl", "fontFamily", "color", "fontSize", "containerPadding", "name", "defaultTop", "showCancel", "showButtons", "showSeparator"], outputs: ["changeVisibility", "action"] }, { kind: "component", type: i13.GroupPanelComponent, selector: "sti-group-panel", inputs: ["width", "caption", "innerPadding", "opened", "margin"], outputs: ["action"] }, { kind: "component", type: i14.RadioButtonComponent, selector: "sti-radio-button", inputs: ["groupName", "name", "enabled", "checked", "tooltip", "caption", "margin", "paddingLeftLastCell"], outputs: ["action"] }, { kind: "component", type: i15.DropDownListForExportFormComponent, selector: "sti-drop-down-list-for-export-form", inputs: ["items", "width", "key", "margin", "enabled", "styleDisplay", "verticalAlign"], outputs: ["action"] }] }); }
}
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: ExportFormComponent, decorators: [{
type: Component,
args: [{
selector: 'sti-export-form',
template: `
<sti-base-form #baseForm [fontFamily]="model.options.toolbar.fontFamily"
[color]="model.options.toolbar.fontColor"
[fontSize]="'12px'"
[containerPadding]="'3px'"
[name]="'exportForm'"
[caption]="model.loc('ExportFormTitle')"
[defaultTop]="150"
(changeVisibility)="changeVisibility($event)"
(action)="action()">
<table class="stiJsViewerClearAllStyles" cellpadding="0" cellspacing="0" [style.width]="'100%'">
<tbody>
<tr *ngIf="exportFormSettings?.groups.savingReportGroup.visible" class="stiJsViewerClearAllStyles">
<td class="stiJsViewerClearAllStyles" colspan="2">
<sti-group-panel [caption]="model.loc('SavingReport')"
[width]="390"
[margin]="'4px'"
[innerPadding]="'4px 0 4px 0'"
[opened]="exportFormSettings.groups.savingReportGroup.opened"
(action)="exportFormSettings.groups.savingReportGroup.opened=$event">
<table class="stiJsViewerClearAllStyles" cellpadding="0" cellspacing="0" [style.width]="'100%'">
<tbody>
<tr class="stiJsViewerClearAllStyles">
<td class="stiJsViewerClearAllStyles" colspan="2">
<sti-radio-button #saveReportMdc
[name]="baseForm.name + 'SaveReportMdc'"
[groupName]="baseForm.name + 'SavingReportGroup'"
[caption]="model.loc('SaveReportMdc')"
[margin]="'6px 8px 3px 8px'"
[checked]="true"
(action)="exportService.exportSettings.Format = 'Mdc'">
</sti-radio-button>
</td>
</tr>
<tr class="stiJsViewerClearAllStyles">
<td class="stiJsViewerClearAllStyles" colspan="2">
<sti-radio-button
[name]="baseForm.name + 'SaveReportMdz'"
[groupName]="baseForm.name + 'SavingReportGroup'"
[caption]="model.loc('SaveReportMdz')"
[margin]="'3px 8px 3px 8px'"
(action)="exportService.exportSettings.Format = 'Mdz'">
</sti-radio-button>
</td>
</tr>
<tr class="stiJsViewerClearAllStyles">
<td class="stiJsViewerClearAllStyles" colspan="2">
<sti-radio-button
[name]="baseForm.name + 'SaveReportMdx'"
[groupName]="baseForm.name + 'SavingReportGroup'"
[caption]="model.loc('SaveReportMdx')"
[margin]="'3px 8px 0px 8px'"
(action)="exportService.exportSettings.Format = 'Mdx'">
</sti-radio-button>
</td>
</tr>
<tr class="stiJsViewerClearAllStyles">
<td class="stiJsViewerClearAllStyles" [style.padding]="'0px 8px'" [style.minWidth.px]="150" [attr.title]="model.loc('PasswordSaveReportTooltip')">
{{model.loc('PasswordSaveReport')}}
</td>
<td>
<sti-text-box
[width]="140"
[tooltip]="model.loc('PasswordSaveReportTooltip')"
[margin]="'4px 8px 0px 8px'"
[type]="getTextBoxType('SaveReportPassword')"
[enabled]="exportService.exportSettings.Format == 'Mdx'"
(onchange)="exportService.exportSettings.Password = $event.value">
</sti-text-box>
</td>
</tr>
</tbody>
</table>
</sti-group-panel>
</td>
</tr>
<tr *ngIf="exportFormSettings?.groups.pageRangeGroup.visible" class="stiJsViewerClearAllStyles">
<td class="stiJsViewerClearAllStyles" colspan="2">
<sti-group-panel [caption]="model.loc('PagesRange')"
[width]="390"
[margin]="'4px'"
[innerPadding]="'4px 0 4px 0'"
[opened]="exportFormSettings.groups.pageRangeGroup.opened"
(action)="exportFormSettings.groups.pageRangeGroup.opened=$event">
<table class="stiJsViewerClearAllStyles" cellpadding="0" cellspacing="0" [style.width]="'100%'">
<tbody>
<tr class="stiJsViewerClearAllStyles">
<td class="stiJsViewerClearAllStyles" colspan="2">
<sti-radio-button #pagesRangeAll
[name]="baseForm.name + 'PagesRangeAll'"
[groupName]="baseForm.name + 'PageRangeGroup'"
[caption]="model.loc('PagesRangeAll')"
[tooltip]="model.loc('PagesRangeAllTooltip')"
[margin]="'6px 8px 6px 8px'"
[checked]="!exportFormSettings.groups.pageRangeGroup.pageRangeAllIsDisabled"
[enabled]="!exportFormSettings.groups.pageRangeGroup.pageRangeAllIsDisabled"
(action)="exportService.exportSettings.PageRange = 'All'">
</sti-radio-button>
</td>
</tr>
<tr class="stiJsViewerClearAllStyles">
<td class="stiJsViewerClearAllStyles" colspan="2">
<sti-radio-button #pageRangeCurrentPage
[name]="baseForm.name + 'PageRangeCurrentPage'"
[groupName]="baseForm.name + 'PageRangeGroup'"
[caption]="model.loc('PagesRangeCurrentPage')"
[tooltip]="model.loc('PagesRangeCurrentPageTooltip')"
[margin]="'0px 8px 4px 8px'"
[checked]="exportFormSettings.groups.pageRangeGroup.pageRangeAllIsDisabled"
(action)="exportService.exportSettings.PageRange = (model.reportParams.pageNumber + 1).toString()">
</sti-radio-button>
</td>
</tr>
<tr class="stiJsViewerClearAllStyles">
<td class="stiJsViewerClearAllStyles" colspan="2">
<sti-radio-button
[name]="baseForm.name + 'PageRangePages'"
[groupName]="baseForm.name + 'PageRangeGroup'"
[caption]="model.loc('PagesRangePages')"
[tooltip]="model.loc('PagesRangePagesTooltip')"
[margin]="'0px 8px 0px 8px'"
[paddingLeftLastCell]="'60px'"
(action)="exportService.exportSettings.PageRange = pagesRange.element.nativeElement.value">
<sti-text-box #pagesRange
[width]="130"
[tooltip]="model.loc('PagesRangePagesTooltip')"
[margin]="'0px 0px 0px 30px'"
(onchange)="exportService.exportSettings.PageRange = $event.value"
(onblur)="exportService.exportSettings.PageRange = $event.value">
</sti-text-box>
</sti-radio-button>
</td>
</tr>
</tbody>
</table>
</sti-group-panel>
</td>
</tr>
<tr *ngIf="exportFormSettings?.groups.settingsGroup.visible"class="stiJsViewerClearAllStyles">
<td class="stiJsViewerClearAllStyles" colspan="2">
<sti-group-panel [caption]="model.loc('SettingsGroup')"
[opened]="exportFormSettings.groups.settingsGroup.opened"
[width]="390"
[margin]="'4px'"
[innerPadding]="'4px 0 4px 0'"
(action)="exportFormSettings.groups.settingsGroup.opened=$event">
<table class="stiJsViewerClearAllStyles" cellpadding="0" cellspacing="0" [style.width]="'100%'">
<tbody>
<tr *ngFor="let comp of exportFormSettings.components">
<td *ngIf="comp.label != null" [style.padding]="'0px 8px'" [style.minWidth.px]="150" [attr.title]="comp.tooltip">
{{comp.label}}
</td>
<td *ngIf="comp.name == 'UseDigitalSignature'">
<sti-check-box
[tooltip]="comp.tooltip"
[margin]="comp.margin"
[captionText]="comp.caption"
[isChecked]="getValue(comp)"
(action)="componentAction(comp, $event)">
</sti-check-box>
</td>
<td [attr.colSpan]="comp.label != null || comp.name == 'DocumentSecurityButton' || comp.name == 'UseDigitalSignature' ? 1 : 2">
<sti-drop-down-list-for-export-form *ngIf="comp.type == 'DropDownListForExportForm'"
[width]="comp.width"
[items]="comp.items"
[key]="getValue(comp, 'dropDownList')"
[margin]="comp.margin"
[verticalAlign]="comp.name == 'ImageQuality' || comp.name == 'ImageResolution' ? 'middle' : null"
[styleDisplay]="comp.name == 'ImageQuality' || comp.name == 'ImageResolution' ? 'inline-block' : null"
[enabled]="!disabledComponents[comp.name]"
(action)="componentAction(comp, $event.key)">
</sti-drop-down-list-for-export-form>
<div *ngIf="comp.name == 'ImageQuality' || comp.name == 'ImageResolution'"
[style.display]="'inline-block'">
{{comp.name == 'ImageQuality' ? '%' : 'dpi'}}
</div>
<sti-text-box *ngIf="comp.type == 'TextBox'"
[width]="comp.width"
[tooltip]="comp.tooltip"
[margin]="comp.margin"
[type]="getTextBoxType(comp.name)"
[enabled]="!comp.disabled"
[value]="getValue(comp)"
[enabled]="!disabledComponents[comp.name]"
(onchange)="componentAction(comp, $event.value)">
</sti-text-box>
<sti-check-box *ngIf="comp.type == 'CheckBox' || comp.type == 'DigitalSignature'"
[tooltip]="comp.tooltip"
[margin]="comp.margin"
[captionText]="comp.caption"
[isChecked]="getValue(comp)"
[isEnabled]="!disabledComponents[comp.name]"
(action)="componentAction(comp, $event)">
</sti-check-box>
</td>
<td *ngIf="comp.name == 'DocumentSecurityButton'">
<sti-button #button
[width]="comp.width"
[arrow]="'Down'"
[minWidth]="'163px'"
[captionAlign]="'center'"
[display]="'inline-block'"
[styleName]="'stiJsViewerFormButton'"
[margin]="'2px 8px'"
[innerTableWidth]="'100%'"
[captionWidth]="'100%'"
[caption]="comp.name == 'DocumentSecurityButton' ? comp.caption : ''"
[enabled]="!disabledComponents[comp.name + 'Button']"
(action)="showMenu(comp, button)">
</sti-button>
</td>
</tr>
</tbody>
</table>
</sti-group-panel>
</td>
</tr>
<tr *ngIf="model.options.exports.showOpenAfterExport && exportFormSettings?.openAfterExport && !exportService.sendMail" class="stiJsViewerClearAllStyles">
<td class="stiJsViewerClearAllStyles" colspan="2">
<sti-check-box [captionText]="model.loc('OpenAfterExport')"
[tooltip]="model.loc('OpenAfterExportTooltip')"
[margin]="'4px 8px 4px 8px'"
[isChecked]="exportService.exportSettings.OpenAfterExport"
(action)="exportService.exportSettings.OpenAfterExport = $event">
</sti-check-box>
</td>
</tr>
</tbody>
</table>
</sti-base-form>
`
}]
}], ctorParameters: () => [{ type: i1.ModelService }, { type: i2.ExportService }, { type: i3.HelperService }, { type: i4.FormService }, { type: i5.MenuService }, { type: i6.CollectionsService }, { type: i7.ControllerService }], propDecorators: { baseForm: [{
type: ViewChild,
args: ['baseForm']
}], saveReportMdc: [{
type: ViewChild,
args: ['saveReportMdc']
}], pagesRangeAll: [{
type: ViewChild,
args: ['pagesRangeAll']
}], pageRangeCurrentPage: [{
type: ViewChild,
args: ['pageRangeCurrentPage']
}], exportFormSettings: [{
type: Input
}] } });
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXhwb3J0LWZvcm0uY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvc3RpbXVsc29mdC12aWV3ZXItYW5ndWxhci9zcmMvbGliL2Zvcm1zL2V4cG9ydC1mb3JtLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFVLEtBQUssRUFBYSxTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBb1EvRSxNQUFNLE9BQU8sbUJBQW1CO0lBb0I5QixZQUFtQixLQUFtQixFQUFTLGFBQTRCLEVBQVMsTUFBcUIsRUFBUyxXQUF3QixFQUNqSSxXQUF3QixFQUFTLFdBQStCLEVBQVMsVUFBNkI7UUFENUYsVUFBSyxHQUFMLEtBQUssQ0FBYztRQUFTLGtCQUFhLEdBQWIsYUFBYSxDQUFlO1FBQVMsV0FBTSxHQUFOLE1BQU0sQ0FBZTtRQUFTLGdCQUFXLEdBQVgsV0FBVyxDQUFhO1FBQ2pJLGdCQUFXLEdBQVgsV0FBVyxDQUFhO1FBQVMsZ0JBQVcsR0FBWCxXQUFXLENBQW9CO1FBQVMsZUFBVSxHQUFWLFVBQVUsQ0FBbUI7UUFuQnZHLG1CQUFjLEdBQUc7WUFDdkIsa0JBQWtCLEVBQUUsYUFBYTtZQUNqQyxxQkFBcUIsRUFBRSxVQUFVO1lBQ2pDLGFBQWEsRUFBRSxZQUFZO1lBQzNCLGVBQWUsRUFBRSxVQUFVO1lBQzNCLGVBQWUsRUFBRSxVQUFVO1NBQzVCLENBQUM7UUFTRixnQkFBVyxHQUFHLEtBQUssQ0FBQztRQUNwQix1QkFBa0IsR0FBUSxFQUFFLENBQUM7SUFHc0YsQ0FBQztJQUVwSCxXQUFXLENBQUMsT0FBOEM7UUFDeEQsSUFBSSxJQUFJLENBQUMsUUFBUSxJQUFJLElBQUksQ0FBQyxXQUFXLEVBQUUsSUFBSSxFQUFFLElBQUksS0FBSyxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksRUFBRSxDQUFDO1lBQ3pFLFVBQVUs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