diff --git a/build/build.js b/build/build.js
index 04f0fa5..a687cf8 100644
--- a/build/build.js
+++ b/build/build.js
@@ -5,8 +5,8 @@ const runSequence = require('gulp4-run-sequence');
const ngCli = "node --max_old_space_size=4096 node_modules/@angular/cli/bin/ng";
-gulp.task('build', (done) => {
- runSequence('update-barcode', 'generate-router', () => {
+gulp.task('production-build', (done) => {
+ runSequence('update-extensions-export', 'generate-router', () => {
if (argv.prefix) {
exec(`${ngCli} build -c production --base-href ${argv.prefix}`);
} else {
diff --git a/build/copy.js b/build/copy.js
index e14b20b..7228c15 100644
--- a/build/copy.js
+++ b/build/copy.js
@@ -5,22 +5,26 @@ const fs = require('fs');
const scripts = {
common: ['common/ej2-base.min.js', 'common/ej2-data.min.js', 'common/ej2-pdf-export.min.js', 'common/ej2-svg-base.min.js'],
control: ['data-visualization/ej2-circulargauge.min.js', 'data-visualization/ej2-lineargauge.min.js', 'data-visualization/ej2-maps.min.js'],
- barcode: ['images', 'barcode.reportitem.css', 'barcode.reportitem.js', 'qrbarcode.reportitem.js']
+ barcode: ['images', 'barcode.reportitem.css', 'barcode.reportitem.js', 'qrbarcode.reportitem.js'],
+ signature: ['signature.reportitem.css', 'signature.dialog.css', 'signature.reportitem.js', 'signature.dialog.js']
};
const srcDir = 'node_modules/@boldreports/javascript-reporting-controls/Scripts/';
const destDir = 'src/scripts/';
-const barCodeSrcDir = 'node_modules/@boldreports/javascript-reporting-extensions/';
-const barcodeDir = './src/app/components/extensions/report-item-extensions/';
-const barcodeTeml = {
+const extensionsItemSrcDir = 'node_modules/@boldreports/javascript-reporting-extensions/';
+const extensionsItemDir = './src/app/components/extensions/report-item-extensions/';
+const extensionsExportTemp = {
'1D': 'export { EJBarcode };',
- '2D': 'export { EJQRBarcode };'
+ '2D': 'export { EJQRBarcode };',
+ 'signature': 'export { EJSignature }',
+ 'signatureDialog': 'export { SignatureDialog }'
}
gulp.task('copy', (done) => {
copyFiles(scripts.common, srcDir, destDir + 'common');
copyFiles(scripts.control, srcDir, destDir + 'data-visualization');
- copyFiles(scripts.barcode, barCodeSrcDir, barcodeDir);
+ copyFiles(scripts.barcode, extensionsItemSrcDir, extensionsItemDir);
+ copyFiles(scripts.signature, extensionsItemSrcDir, extensionsItemDir);
done();
});
@@ -31,18 +35,25 @@ function copyFiles(fileArray, src, dest) {
});
};
-gulp.task('update-barcode', (done) => {
- if (fs.existsSync(`${barcodeDir}barcode.reportitem.js`) && fs.existsSync(`${barcodeDir}qrbarcode.reportitem.js`)) {
- var barcode = fs.readFileSync(`${barcodeDir}barcode.reportitem.js`);
- var qrbarcode = fs.readFileSync(`${barcodeDir}qrbarcode.reportitem.js`);
- if (!barcode.includes(barcodeTeml['1D']))
- fs.writeFileSync(`${barcodeDir}barcode.reportitem.js`, `${barcode} \n ${barcodeTeml['1D']}`);
- if (!qrbarcode.includes(barcodeTeml['2D']))
- fs.writeFileSync(`${barcodeDir}qrbarcode.reportitem.js`, `${qrbarcode} \n ${barcodeTeml['2D']}`);
- done();
- }
- else {
- console.log(`!!!... The Barcode files not found in ${barcodeDir} ...!!!`);
- process.exit(1);
- }
+gulp.task('update-extensions-export', (done) => {
+ const files = {
+ 'barcode': ['barcode.reportitem.js', '1D'],
+ 'qrbarcode': ['qrbarcode.reportitem.js', '2D'],
+ 'signature': ['signature.reportitem.js', 'signature'],
+ 'signatureDialog': ['signature.dialog.js', 'signatureDialog'],
+ };
+ const updateFile = (key, [filename, exportKey]) => {
+ const filePath = `${extensionsItemDir}${filename}`;
+ if (fs.existsSync(filePath)) {
+ const content = fs.readFileSync(filePath, 'utf8');
+ if (!content.includes(extensionsExportTemp[exportKey])) {
+ fs.writeFileSync(filePath, `${content}\n${extensionsExportTemp[exportKey]}`);
+ }
+ } else {
+ console.log(`!!!... The ${key} file not found in ${extensionsItemDir} ...!!!`);
+ process.exit(1);
+ }
+ };
+ Object.entries(files).forEach(([key, value]) => updateFile(key, value));
+ done();
});
\ No newline at end of file
diff --git a/build/serve.js b/build/serve.js
index 5f855d9..feed116 100644
--- a/build/serve.js
+++ b/build/serve.js
@@ -5,7 +5,7 @@ const ngCli = "node --max_old_space_size=4096 node_modules/@angular/cli/bin/ng";
const runSequence = require('gulp4-run-sequence');
gulp.task('serve', (done) => {
- runSequence('update-barcode', 'generate-router', () => {
+ runSequence('update-extensions-export', 'generate-router', () => {
exec(`${ngCli} serve --open --port ${argv.port || ''}`);
done();
});
diff --git a/package.json b/package.json
index fc8b09a..52f8cc6 100644
--- a/package.json
+++ b/package.json
@@ -1,6 +1,6 @@
{
"name": "angular-samples",
- "version": "6.3.16",
+ "version": "7.1.9",
"scripts": {
"test": "gulp test",
"postinstall": "gulp copy",
@@ -22,6 +22,7 @@
"@syncfusion/ej2-angular-buttons": "22.2.5",
"@syncfusion/ej2-angular-calendars": "22.2.5",
"@syncfusion/ej2-angular-dropdowns": "22.2.5",
+ "@syncfusion/ej2-angular-popups": "22.2.5",
"bootstrap": "5.3.3",
"codemirror": "5.58.2",
"core-js": "2.5.4",
diff --git a/src/app/common/header/header.component.html b/src/app/common/header/header.component.html
index e161a00..2ad6edd 100644
--- a/src/app/common/header/header.component.html
+++ b/src/app/common/header/header.component.html
@@ -20,6 +20,6 @@
Product Detail
- Try it Free
+ Try it Free
\ No newline at end of file
diff --git a/src/app/common/main-content/main-content.component.html b/src/app/common/main-content/main-content.component.html
index 83d754f..eb9078d 100644
--- a/src/app/common/main-content/main-content.component.html
+++ b/src/app/common/main-content/main-content.component.html
@@ -92,13 +92,19 @@
Blog
-
- Support
-
+
+ Support
+
Feedback
+
+ Knowledge Base
+
+
+ Learning Center
+
-
+
diff --git a/src/app/common/main-content/main-content.component.scss b/src/app/common/main-content/main-content.component.scss
index 5ec6fc8..3952066 100644
--- a/src/app/common/main-content/main-content.component.scss
+++ b/src/app/common/main-content/main-content.component.scss
@@ -372,11 +372,22 @@
}
@media only screen and (min-width: 300px) and (max-width: 872px) {
- .ej-main-body-content .ej-lp-footer, .ej-main-body-content .ej-lp-footer > div {
+ .ej-main-body-content .ej-lp-footer {
display: block;
}
+
+ .ej-main-body-content .ej-lp-footer .ej-lp-footer-copyright {
+ padding: 10px;
+ }
+}
+
+@media only screen and (max-width: 1095px) {
+ .ej-lp-footer .ej-lp-footer-links {
+ display: none;
+ }
+
.ej-main-body-content .ej-lp-footer .ej-lp-footer-copyright {
float: left;
- line-height: 30px;
+ line-height: 21px;
}
}
\ No newline at end of file
diff --git a/src/app/common/main-content/main-content.component.ts b/src/app/common/main-content/main-content.component.ts
index 08ca80a..055715d 100644
--- a/src/app/common/main-content/main-content.component.ts
+++ b/src/app/common/main-content/main-content.component.ts
@@ -45,6 +45,7 @@ export class MainContentComponent implements AfterViewInit {
@ViewChild('features[1]', { static: true }) feature2;
@ViewChild('features[2]', { static: true }) feature3;
@ViewChild('freeTrialUrl', { static: true }) freeTrialUrl;
+ @ViewChild('copyrightYear', { static: true }) copyrightYear;
constructor(private routerService: RouterService, private http: HttpClient, private router: Router, private location: Location, private renderer: Renderer2) { }
public loadSourceCode(sampleData: sampleInfo['samples'][0]): void {
@@ -55,6 +56,7 @@ export class MainContentComponent implements AfterViewInit {
ngAfterViewInit(): void {
this.updateTab();
jQuery(this.demoTab.nativeElement.firstElementChild).on('shown.bs.tab', this.resizeReportViewer);
+ this.copyrightYear.nativeElement.innerText = `Copyright © 2001 - ${data.copyrightYear} Syncfusion Inc.`;
}
updateSampleDetails(sampleData): void {
diff --git a/src/app/common/preview/preview.component.html b/src/app/common/preview/preview.component.html
index e747ebd..31a65d3 100644
--- a/src/app/common/preview/preview.component.html
+++ b/src/app/common/preview/preview.component.html
@@ -10,7 +10,7 @@
Product Detail
- Try it Free
diff --git a/src/app/common/sidebar/sidebar.component.scss b/src/app/common/sidebar/sidebar.component.scss
index 5472984..15ddcf8 100644
--- a/src/app/common/sidebar/sidebar.component.scss
+++ b/src/app/common/sidebar/sidebar.component.scss
@@ -55,7 +55,7 @@
width: 90px;
margin: 8px;
background-image: url('./../../../assets/sidebar/portrait.png');
- background-size: 100% 1800%;
+ background-size: 100% 2000%;
}
.ej-sb-toc-title {
diff --git a/src/app/components/cmr-report/cmr-report.component.css b/src/app/components/cmr-report/cmr-report.component.css
new file mode 100644
index 0000000..e69de29
diff --git a/src/app/components/cmr-report/cmr-report.component.html b/src/app/components/cmr-report/cmr-report.component.html
new file mode 100644
index 0000000..e485313
--- /dev/null
+++ b/src/app/components/cmr-report/cmr-report.component.html
@@ -0,0 +1,17 @@
+
+
+
+
+
+ The CMR International Consignment Note outlines the terms, responsibilities, and legal framework for international road freight transport under the CMR Convention, presented in a comprehensive RDL format.
+
+
+ - The CMR International Consignment Note is effectively represented through a variety of table report items, each providing a detailed and informative view of the consignment details.
+
+
+ More information about the image report item can be found in this documentation section.
+
+
diff --git a/src/app/components/cmr-report/cmr-report.component.ts b/src/app/components/cmr-report/cmr-report.component.ts
new file mode 100644
index 0000000..c33e3aa
--- /dev/null
+++ b/src/app/components/cmr-report/cmr-report.component.ts
@@ -0,0 +1,23 @@
+/**
+ * CMR report sample - This sample analyzes the legal document standardizing international road freight transport with random data.
+ */
+import { Component } from '@angular/core';
+import { Globals } from '../globals';
+@Component({
+ selector: 'ej-sample',
+ templateUrl: './cmr-report.component.html',
+ styleUrls: ['./cmr-report.component.css']
+})
+export class CMRReportComponent {
+ // Specifies the report Web API service URL. It is used to process the reports.
+ public serviceUrl = Globals.SERVICE_URL;
+ // Specifies the path of the RDL report file
+ public reportPath: string;
+ public toolbarSettings = Globals.TOOLBAR_OPTIONS;
+ public onToolbarItemClick = Globals.EDIT_REPORT;
+ public onExportItemClick = Globals.EXPORT_ITEM_CLICK;
+
+ constructor() {
+ this.reportPath = 'cmr-report.rdl';
+ }
+}
diff --git a/src/app/components/designer/designer.component.ts b/src/app/components/designer/designer.component.ts
index e778bfc..77238b5 100644
--- a/src/app/components/designer/designer.component.ts
+++ b/src/app/components/designer/designer.component.ts
@@ -6,12 +6,19 @@ import { Globals } from '../globals';
import { Router, Params } from '@angular/router';
import { EJBarcode } from './../extensions/report-item-extensions/barcode.reportitem';
import { EJQRBarcode } from './../extensions/report-item-extensions/qrbarcode.reportitem';
+import { EJSignature } from './../extensions/report-item-extensions/signature.reportitem';
+import { SignatureDialog } from './../extensions/report-item-extensions/signature.dialog';
const barcode = 'EJBarcode';
const qrBarcode = 'EJQRBarcode';
window[barcode] = EJBarcode;
window[qrBarcode] = EJQRBarcode;
+const signature = 'EJSignature';
+const signatureDialog = 'SignatureDialog';
+window[signature] = EJSignature;
+window[signatureDialog] = SignatureDialog;
+
@Component({
selector: 'ej-sample',
templateUrl: './designer.component.html',
@@ -47,6 +54,12 @@ export class DesignerComponent implements AfterViewInit {
imageClass: 'customitem-qrbarcode',
displayName: '2D Barcode',
category: 'Barcodes'
+ }, {
+ name: 'ESignature',
+ className: 'EJSignature',
+ imageClass: 'customitem-signature',
+ displayName: 'Electronic',
+ category: 'Signature'
}];
}
@@ -125,4 +138,4 @@ export class DesignerComponent implements AfterViewInit {
this.designerInst.widget.openReport(this.reportPath.indexOf("external-parameter-report") !== -1 ? "product-line-sales.rdl" : this.reportPath.indexOf("parameter-customization") !== -1 ? "product-line-sales.rdl" : this.reportPath);
}
}
-}
\ No newline at end of file
+}
diff --git a/src/app/components/infographics-report/infographics-report.component.css b/src/app/components/infographics-report/infographics-report.component.css
new file mode 100644
index 0000000..e69de29
diff --git a/src/app/components/infographics-report/infographics-report.component.html b/src/app/components/infographics-report/infographics-report.component.html
new file mode 100644
index 0000000..958a5f0
--- /dev/null
+++ b/src/app/components/infographics-report/infographics-report.component.html
@@ -0,0 +1,18 @@
+
+
+
+
+
+ The Infographics Report showcases the overall academic performance of a college through graphical representations, utilizing the Bold Reports image report item for visually engaging insights.
+
+
+ - The report presents student demographics, academic achievements, and study preferences through visually engaging infographics, seamlessly incorporating the concept.
+ - It provides visual insights into key metrics such as graduation rates, course interests, and study habits.
+
+
+ More information about the image report item can be found in this documentation section.
+
+
\ No newline at end of file
diff --git a/src/app/components/infographics-report/infographics-report.component.ts b/src/app/components/infographics-report/infographics-report.component.ts
new file mode 100644
index 0000000..ee0fb7a
--- /dev/null
+++ b/src/app/components/infographics-report/infographics-report.component.ts
@@ -0,0 +1,23 @@
+/**
+ * Infographics Report - Visualize student demographics, course interests, achievements, and study preferences.
+ */
+import { Component } from '@angular/core';
+import { Globals } from '../globals';
+@Component({
+ selector: 'ej-sample',
+ templateUrl: './infographics-report.component.html',
+ styleUrls: ['./infographics-report.component.css']
+})
+export class InfographicsReportComponent {
+ // Specifies the report Web API service URL. It is used to process the reports.
+ public serviceUrl = Globals.SERVICE_URL;
+ // Specifies the path of the RDL report file
+ public reportPath: string;
+ public toolbarSettings = Globals.TOOLBAR_OPTIONS;
+ public onToolbarItemClick = Globals.EDIT_REPORT;
+ public onExportItemClick = Globals.EXPORT_ITEM_CLICK;
+
+ constructor() {
+ this.reportPath = 'infographics-report.rdl';
+ }
+}
diff --git a/src/app/components/rdlc/rdlc.component.ts b/src/app/components/rdlc/rdlc.component.ts
index cb10d25..42b2fde 100644
--- a/src/app/components/rdlc/rdlc.component.ts
+++ b/src/app/components/rdlc/rdlc.component.ts
@@ -6,6 +6,8 @@ import { Globals } from '../globals';
import { Router, Params } from '@angular/router';
import { EJBarcode } from './../extensions/report-item-extensions/barcode.reportitem';
import { EJQRBarcode } from './../extensions/report-item-extensions/qrbarcode.reportitem';
+import { EJSignature } from './../extensions/report-item-extensions/signature.reportitem';
+import { SignatureDialog } from './../extensions/report-item-extensions/signature.dialog';
import { rdlcData } from '../rdlcData';
const barcode = 'EJBarcode';
@@ -13,6 +15,11 @@ const qrBarcode = 'EJQRBarcode';
window[barcode] = EJBarcode;
window[qrBarcode] = EJQRBarcode;
+const signature = 'EJSignature';
+const signatureDialog = 'SignatureDialog';
+window[signature] = EJSignature;
+window[signatureDialog] = SignatureDialog;
+
@Component({
selector: 'ej-sample',
templateUrl: './rdlc.component.html',
@@ -49,6 +56,12 @@ export class RDLCComponent implements AfterViewInit {
imageClass: 'customitem-qrbarcode',
displayName: '2D Barcode',
category: 'Barcodes'
+ }, {
+ name: 'ESignature',
+ className: 'EJSignature',
+ imageClass: 'customitem-signature',
+ displayName: 'Electronic',
+ category: 'Signature'
}];
}
@@ -124,4 +137,4 @@ export class RDLCComponent implements AfterViewInit {
this.designerInst.widget.openReport(this.reportPath);
}
}
-}
\ No newline at end of file
+}
diff --git a/src/app/components/samples.json b/src/app/components/samples.json
index b745d8d..8678309 100644
--- a/src/app/components/samples.json
+++ b/src/app/components/samples.json
@@ -7,7 +7,10 @@
"rdlc",
"rdlcData",
"paystub",
- "powerpoint"
+ "powerpoint",
+ "cmr",
+ "infographics",
+ "pdf"
],
"otherPlatforms": {
"JavaScript": "javascript/#/",
@@ -23,9 +26,9 @@
"Intuitive drag-and-drop widgets",
"Hassle-free licensing"
],
- "freeTrialUrl": "https://app.boldid.net/reporting/embedded/register?plan=174&evaluation=v2&leadsource=demos.boldreports.com&gclid=&referrerroriginurl=https://demos.boldreports.com/pricing&secondaryreferraloriginurl=https://demos.boldreports.com/&host=server&quantity=1"
+ "freeTrialUrl": "https://app.boldid.net/reporting/embedded/register?plan=194&evaluation=v2&leadsource=demos.boldreports.com&gclid=&referrerroriginurl=https://demos.boldreports.com/pricing&secondaryreferraloriginurl=https://demos.boldreports.com/&host=server&quantity=1"
},
- "copyrightPath": "./src/app/common/main-content/main-content.component.html",
+ "copyrightYear": "2025",
"samples": [
{
"routerPath": "product-line-sales",
@@ -461,6 +464,36 @@
"metaData": {
"description": "This demo showcases a Transcript Report that effectively presents school student details, including their grades and performance, in the Angular Bold Report Viewer."
}
+ },
+ {
+ "routerPath": "cmr-report",
+ "className": "CMRReportComponent",
+ "sampleName": "CMR Report",
+ "status": "New",
+ "basePath": "report-viewer",
+ "directoryName": "cmr-report",
+ "imageDetails": {
+ "isLandscape": false,
+ "index": 18
+ },
+ "metaData": {
+ "description": "This demo shows CMR International Consignment Note usage, standardizing international road freight under the CMR Convention, in Angular Bold Report Viewer."
+ }
+ },
+ {
+ "routerPath": "infographics-report",
+ "className": "InfographicsReportComponent",
+ "sampleName": "Infographics Report",
+ "basePath": "report-viewer",
+ "directoryName": "infographics-report",
+ "status": "New",
+ "imageDetails": {
+ "isLandscape": false,
+ "index": 17
+ },
+ "metaData": {
+ "description": "This demo visualizes an Infographics Report that effectively presents student demographics, course interests, achievements, and study preferences in the Angular Bold Report Viewer."
+ }
}
]
}
diff --git a/src/assets/sidebar/portrait.png b/src/assets/sidebar/portrait.png
index beadbc7..7976bd4 100644
Binary files a/src/assets/sidebar/portrait.png and b/src/assets/sidebar/portrait.png differ
diff --git a/src/styles.scss b/src/styles.scss
index ffd112a..6fb674d 100644
--- a/src/styles.scss
+++ b/src/styles.scss
@@ -5,6 +5,8 @@
@import './../node_modules/@boldreports/javascript-reporting-controls/Content/v2.0/tailwind-light/bold.report-viewer.min.css';
@import './../node_modules/@boldreports/javascript-reporting-controls/Content/v2.0/tailwind-light/bold.report-designer.min.css';
@import './app/components/extensions/report-item-extensions/barcode.reportitem.css';
+@import './app/components/extensions/report-item-extensions/signature.reportitem.css';
+@import './app/components/extensions/report-item-extensions/signature.dialog.css';
// code-mirror
@import './../node_modules/codemirror/lib/codemirror.css';
@@ -157,4 +159,4 @@ bold-reportviewer {
#reportdesigner_reportName {
visibility: hidden;
-}
\ No newline at end of file
+}