UNPKG

devexpress-reporting

Version:

DevExpress Reporting provides the capability to develop a reporting application to create and customize reports.

80 lines (79 loc) 4.54 kB
/** * DevExpress HTML/JS Reporting (designer\controls\xrPdfSignature.js) * Version: 24.2.6 * Build date: Mar 18, 2025 * Copyright (c) 2012 - 2025 Developer Express Inc. ALL RIGHTS RESERVED * License: https://www.devexpress.com/Support/EULAs/universal.xml */ import { findFirstItemMatchesCondition } from '@devexpress/analytics-core/analytics-internal'; import { getLocalization } from '@devexpress/analytics-core/analytics-utils'; import * as ko from 'knockout'; import { XRControlSurface, XRControlViewModel } from './xrControl'; export class XRPdfSignatureModel extends XRControlViewModel { constructor() { super(...arguments); this._displayDocumentSignatureSubscribed = false; } subscribeSignature(allControls) { if (!this._displayDocumentSignatureSubscribed) { this._displayDocumentSignatureSubscribed = true; this._disposables.push(this.signatureOptions.displayDocumentSignature.subscribe(newVal => { if (newVal) { const control = findFirstItemMatchesCondition(allControls(), (item) => this !== item && item.signatureOptions.displayDocumentSignature()); control && control.signatureOptions.displayDocumentSignature(false); } })); } } } export class XRPdfSignatureSurface extends XRControlSurface { getSignatureInformationString(control) { const viewInfo = { certificateName: this.certificateName, distinguishedName: getLocalization('your distinguished name here', 'PreviewStringId.SignatureFillerText_DistinguishedName'), reason: getLocalization('your signing reason here', 'PreviewStringId.SignatureFillerText_Reason'), location: getLocalization('your signing location here', 'PreviewStringId.SignatureFillerText_Location'), dateString: new Date(new Date().setHours(0, 0, 0, 0)).toLocaleString() }; const parts = []; const showCaptions = control.signatureOptions.showCaptions(); if (control.signatureOptions.showCertificateName()) parts.push((showCaptions ? getLocalization('Digitally signed by', 'PreviewStringId.SignatureCaptions_CertificateName') + ' ' : '') + viewInfo.certificateName); if (control.signatureOptions.showDistinguishedName()) parts.push((showCaptions ? getLocalization('DN:', 'PreviewStringId.SignatureCaptions_DistinguishedName') + ' ' : '') + viewInfo.distinguishedName); if (control.signatureOptions.showSignatureReason()) parts.push((showCaptions ? getLocalization('Reason:', 'PreviewStringId.SignatureCaptions_Reason') + ' ' : '') + viewInfo.reason); if (control.signatureOptions.showLocation()) parts.push((showCaptions ? getLocalization('Location:', 'PreviewStringId.SignatureCaptions_Location') + ' ' : '') + viewInfo.location); if (control.signatureOptions.showSignatureDate()) parts.push((showCaptions ? getLocalization('Date:', 'PreviewStringId.SignatureCaptions_Date') + ' ' : '') + viewInfo.dateString); return parts.join('\r\n'); } constructor(control, context) { super(control, context); this.contenttemplate = 'dxrd-pdfsignature-content'; this['multiline'] = true; this.displayText = () => { if (control.signatureOptions.displayDocumentSignature()) return this.getSignatureInformationString(control); else return getLocalization('Digital Signature', 'PreviewStringId.SignatureUnsignedCaption'); }; this._disposables.push(this.showSkeleton = ko.computed(() => { return !control.signatureOptions.displayDocumentSignature(); }), this.visibleImage = ko.computed(() => { return control.signatureOptions.imageDisplayMode() == 'Show'; }), this.hideImage = ko.computed(() => { return control.signatureOptions.imageDisplayMode() == 'Hide'; }), this.visibleText = ko.computed(() => { return control.signatureOptions.showCertificateName() || control.signatureOptions.showDistinguishedName() || control.signatureOptions.showLocation() || control.signatureOptions.showSignatureDate() || control.signatureOptions.showSignatureReason(); })); } get certificateName() { return getLocalization('your common name here', 'PreviewStringId.SignatureFillerText_CertificateName'); } }