This update introduces a comprehensive PDF generation system using Puppeteer, allowing for the rendering and downloading of document templates in various formats. Key features include the addition of preview and download routes for document templates, integration of EJS for template rendering, and utilities for converting PDFs to images. The new `TemplateManager` class manages template loading and rendering, while the `pdffactory.js` handles PDF generation. Additionally, several assets and styles for document templates have been added to enhance the visual presentation. This enhancement significantly improves the document management capabilities of the application.
116 lines
3.5 KiB
JavaScript
116 lines
3.5 KiB
JavaScript
import express from 'express';
|
|
import { isAuthenticated } from '../../keycloak.js';
|
|
import { getFilter, convertPropertiesString, getSort } from '../../utils.js';
|
|
|
|
const router = express.Router();
|
|
|
|
const listAllowedFilters = [
|
|
'name',
|
|
'tags',
|
|
'active',
|
|
'global',
|
|
'parent',
|
|
'parent._id',
|
|
'documentSize',
|
|
'documentSize._id',
|
|
'objectType',
|
|
'createdAt',
|
|
'updatedAt',
|
|
'_reference',
|
|
];
|
|
const listAllowedSorters = [
|
|
'name',
|
|
'parent',
|
|
'documentSize',
|
|
'createdAt',
|
|
'updatedAt',
|
|
'active',
|
|
'global',
|
|
'objectType',
|
|
];
|
|
const propertiesAllowedFilters = ['documentSize', 'tags'];
|
|
import {
|
|
listDocumentTemplatesRouteHandler,
|
|
getDocumentTemplateRouteHandler,
|
|
editDocumentTemplateRouteHandler,
|
|
newDocumentTemplateRouteHandler,
|
|
deleteDocumentTemplateRouteHandler,
|
|
listDocumentTemplatesByPropertiesRouteHandler,
|
|
getDocumentTemplateStatsRouteHandler,
|
|
getDocumentTemplateHistoryRouteHandler,
|
|
getDocumentTemplatePropertyValuesRouteHandler,
|
|
searchDocumentTemplatesRouteHandler,
|
|
getDocumentTemplateNeighborsRouteHandler,
|
|
previewDocumentTemplateRouteHandler,
|
|
downloadDocumentTemplateRouteHandler,
|
|
} from '../../services/management/documenttemplates.js';
|
|
|
|
// list of document templates
|
|
router.get('/', isAuthenticated, async (req, res) => {
|
|
const { page, limit, property, search, sort, order } = req.query;
|
|
const filter = await getFilter(req.query, listAllowedFilters);
|
|
listDocumentTemplatesRouteHandler(req, res, page, limit, property, filter, search, getSort(sort, listAllowedSorters), order);
|
|
});
|
|
|
|
router.get('/properties', isAuthenticated, async (req, res) => {
|
|
let properties = convertPropertiesString(req.query.properties);
|
|
const filter = await getFilter(req.query, propertiesAllowedFilters, false);
|
|
var masterFilter = {};
|
|
if (req.query.masterFilter) {
|
|
masterFilter = JSON.parse(req.query.masterFilter);
|
|
}
|
|
listDocumentTemplatesByPropertiesRouteHandler(req, res, properties, filter, masterFilter);
|
|
});
|
|
|
|
router.get('/values', isAuthenticated, async (req, res) => {
|
|
const { property } = req.query;
|
|
getDocumentTemplatePropertyValuesRouteHandler(req, res, property);
|
|
});
|
|
|
|
router.get('/search', isAuthenticated, async (req, res) => {
|
|
const { search } = req.query;
|
|
searchDocumentTemplatesRouteHandler(req, res, search);
|
|
});
|
|
|
|
router.post('/', isAuthenticated, async (req, res) => {
|
|
newDocumentTemplateRouteHandler(req, res);
|
|
});
|
|
|
|
// get document template stats
|
|
router.get('/stats', isAuthenticated, async (req, res) => {
|
|
getDocumentTemplateStatsRouteHandler(req, res);
|
|
});
|
|
|
|
// get document template history
|
|
router.get('/history', isAuthenticated, async (req, res) => {
|
|
getDocumentTemplateHistoryRouteHandler(req, res);
|
|
});
|
|
|
|
router.get('/neighbors', isAuthenticated, async (req, res) => {
|
|
const { property, search, sort, order, id } = req.query;
|
|
const filter = await getFilter(req.query, listAllowedFilters);
|
|
getDocumentTemplateNeighborsRouteHandler(req, res, property, filter, search, getSort(sort, listAllowedSorters), order, id);
|
|
});
|
|
|
|
router.post('/:id/preview', isAuthenticated, async (req, res) => {
|
|
previewDocumentTemplateRouteHandler(req, res);
|
|
});
|
|
|
|
router.post('/:id/download', isAuthenticated, async (req, res) => {
|
|
downloadDocumentTemplateRouteHandler(req, res);
|
|
});
|
|
|
|
router.get('/:id', isAuthenticated, async (req, res) => {
|
|
getDocumentTemplateRouteHandler(req, res);
|
|
});
|
|
|
|
router.put('/:id', isAuthenticated, async (req, res) => {
|
|
editDocumentTemplateRouteHandler(req, res);
|
|
});
|
|
|
|
router.delete('/:id', isAuthenticated, async (req, res) => {
|
|
deleteDocumentTemplateRouteHandler(req, res);
|
|
});
|
|
|
|
export default router;
|