Skip to content

Commit

Permalink
added documentdefinitions straiiiight into api
Browse files Browse the repository at this point in the history
in case we split the fylks, this will be useful for faster editing
  • Loading branch information
jorgtho committed Nov 1, 2023
1 parent 5f1de20 commit 33ba99f
Show file tree
Hide file tree
Showing 23 changed files with 1,195 additions and 405 deletions.
2 changes: 1 addition & 1 deletion GenerateV2/index.js
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@
*/
const PDFGenerator = require('@vtfk/pdf-generator')
const { decodeBase64 } = require('@vtfk/utilities')
const getDocumentDefinition = require('@vtfk/document-definitions')
const getDocumentDefinition = require('../lib/document-definitions/index')
const { logConfig, logger } = require('@vtfk/logger')
const HTTPError = require('../lib/http-error')
const Sjablong = require('sjablong')
Expand Down
3 changes: 3 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,9 @@

Mikrotjeneste som genererer PDF- eller PDF/A-dokumenter basert på predefinerte maler og returnerer de som base64.

## Dokuemtdefinisjoner
Dokumentdefinisjoner (logo, skrifttype og sånt shait) finner du her: [./lib/document-definitions/README.md](./lib/document-definitions/README.md)

## API-endepunkter

### POST /generate - PDF
Expand Down
29 changes: 29 additions & 0 deletions lib/document-definitions/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
# document-definitions

Node module for document-definitions

## API

*id* the id for requested document definition
*language* the language for the document definition, defaults to `no_nb`

## Usage

```
$ npm i @vtfk/document-definitions
```

```JavaScript
const getDD = require('@vtfk/document-definitions')
const dd = getDD('brevmal', 'no_nn')
const pdfDefinition = dd(data)
```

## Definitions

- [brevmal](./docs/brevmal.md)
- [notatmal](./docs/notatmal.md)

## License

[MIT](LICENSE)
114 changes: 114 additions & 0 deletions lib/document-definitions/definitions/brevmal-en.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,114 @@
const formatDate = require('../lib/format-date')
const style = require('../shared/style')
const header = require('../shared/header')
const helpers = require('../shared/helpers')
const watermark = require('../shared/watermark')

module.exports = ({ metadata, content }) => {
const address = metadata.address || {}
const document = metadata.document || {}
const info = metadata.info || {}
const footer = metadata.footer || {}

const infoFields = []
const appendInfo = (field, title, parseField) => {
if (field) {
infoFields.push({
title,
field: (parseField && typeof (parseField) === 'function' ? parseField(field) : field)
})
}
}

appendInfo(info['our-date'] || new Date(), 'Our date', formatDate)
appendInfo(info['your-date'], 'Your date', formatDate)
appendInfo(info['our-reference'], 'Our reference')
appendInfo(info['your-reference'], 'Your reference')
appendInfo(info['our-caseworker'], 'Our caseworker')
appendInfo(info.paragraph, 'Exempted from public disclosure')

const defintion = {
pageSize: 'A4',
pageOrientation: 'portrait',
pageMargins: [65, 120, 65, 70],
info: {
title: document.title,
author: document.author,
subject: document.subject,
keywords: document.keywords
},
watermark: watermark(metadata, 'Preview'),
header,
content: [
{
table: {
widths: ['50%', '*', '*'],
body: [
[
{ text: [address.name, address.street, address.city].filter(text => !!text).join('\n'), style: 'address', rowSpan: 2 },
{ text: `${info.sector || ''}`, style: 'info', bold: true, colSpan: 2, marginTop: 30 },
''
],
[
'',
infoFields.map(info => ({ text: `${info.title}:`, style: 'info' })),
infoFields.map(info => ({ text: info.field, style: 'info' }))
]
]
},
layout: {
defaultBorder: false,
paddingLeft: () => 0,
paddingRight: () => 0,
paddingTop: () => 0,
paddingBottom: () => 5
}
},
content
],
footer: (page) => ({
table: {
widths: [93, 138, 97, 52, 70, 29],
body: [
[
[
{ text: 'Postal address:', style: 'footer', bold: true },
{ text: `${footer['postal-address'] || 'Postboks 2844\n2702 Skien'}`, style: 'footer' }
],
[
{ text: 'Visiting address:', style: 'footer', bold: true },
{ text: `${footer['visiting-address'] || 'Torggata 18, Skien\nSvend Foyns gate 9, Tønsberg'}`, style: 'footer' }
],
[
{ text: 'Contact:', style: 'footer', bold: true },
{ text: `${footer.phone || '35 91 70 00'}`, style: 'footer' },
{ text: `${footer.email || 'post@vtfk.no'}`, style: 'footer' }
],
[
{ text: 'Org. no.:', style: 'footer', bold: true },
{ text: `${footer.orgnr || '821 227 062'}`, style: 'footer' }
],
[
{ text: `${footer.url || 'vtfk.no'}`, style: 'footer', bold: true, alignment: 'right', fontSize: 10 }
],
[
{ text: footer['page-numbers'] === false ? '' : page, style: 'pagenumber' }
]
]
]
},
layout: {
defaultBorder: false,
paddingLeft: () => 0,
paddingRight: () => 0,
paddingTop: () => 0,
paddingBottom: () => 0
},
margin: [65, 5, 65, 0]
}),
...style,
...helpers
}

return defintion
}
114 changes: 114 additions & 0 deletions lib/document-definitions/definitions/brevmal-nb.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,114 @@
const formatDate = require('../lib/format-date')
const style = require('../shared/style')
const header = require('../shared/header')
const helpers = require('../shared/helpers')
const watermark = require('../shared/watermark')

module.exports = ({ metadata, content }) => {
const address = metadata.address || {}
const document = metadata.document || {}
const info = metadata.info || {}
const footer = metadata.footer || {}

const infoFields = []
const appendInfo = (field, title, parseField) => {
if (field) {
infoFields.push({
title,
field: (parseField && typeof (parseField) === 'function' ? parseField(field) : field)
})
}
}

appendInfo(info['our-date'] || new Date(), 'Vår dato', formatDate)
appendInfo(info['your-date'], 'Deres dato', formatDate)
appendInfo(info['our-reference'], 'Vår referanse')
appendInfo(info['your-reference'], 'Deres referanse')
appendInfo(info['our-caseworker'], 'Vår saksbehandler')
appendInfo(info.paragraph, 'Unntatt offentlighet iht.')

const defintion = {
pageSize: 'A4',
pageOrientation: 'portrait',
pageMargins: [65, 120, 65, 70],
info: {
title: document.title,
author: document.author,
subject: document.subject,
keywords: document.keywords
},
watermark: watermark(metadata, 'Forhåndsvisning'),
header,
content: [
{
table: {
widths: ['50%', '*', '*'],
body: [
[
{ text: [address.name, address.street, address.city].filter(text => !!text).join('\n'), style: 'address', rowSpan: 2 },
{ text: `${info.sector || ''}`, style: 'info', bold: true, colSpan: 2, marginTop: 30 },
''
],
[
'',
infoFields.map(info => ({ text: `${info.title}:`, style: 'info' })),
infoFields.map(info => ({ text: info.field, style: 'info' }))
]
]
},
layout: {
defaultBorder: false,
paddingLeft: () => 0,
paddingRight: () => 0,
paddingTop: () => 0,
paddingBottom: () => 5
}
},
content
],
footer: (page) => ({
table: {
widths: [93, 138, 97, 52, 70, 29],
body: [
[
[
{ text: 'Postadresse:', style: 'footer', bold: true },
{ text: `${footer['postal-address'] || 'Postboks 2844\n2702 Skien'}`, style: 'footer' }
],
[
{ text: 'Besøksadresse:', style: 'footer', bold: true },
{ text: `${footer['visiting-address'] || 'Torggata 18, Skien\nSvend Foyns gate 9, Tønsberg'}`, style: 'footer' }
],
[
{ text: 'Sentralbord:', style: 'footer', bold: true },
{ text: `${footer.phone || '35 91 70 00'}`, style: 'footer' },
{ text: `${footer.email || 'post@vtfk.no'}`, style: 'footer' }
],
[
{ text: 'Org. nr.:', style: 'footer', bold: true },
{ text: `${footer.orgnr || '821 227 062'}`, style: 'footer' }
],
[
{ text: `${footer.url || 'vtfk.no'}`, style: 'footer', bold: true, alignment: 'right', fontSize: 10 }
],
[
{ text: footer['page-numbers'] === false ? '' : page, style: 'pagenumber' }
]
]
]
},
layout: {
defaultBorder: false,
paddingLeft: () => 0,
paddingRight: () => 0,
paddingTop: () => 0,
paddingBottom: () => 0
},
margin: [65, 5, 65, 0]
}),
...style,
...helpers
}

return defintion
}
114 changes: 114 additions & 0 deletions lib/document-definitions/definitions/brevmal-nn.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,114 @@
const formatDate = require('../lib/format-date')
const style = require('../shared/style')
const header = require('../shared/header')
const helpers = require('../shared/helpers')
const watermark = require('../shared/watermark')

module.exports = ({ metadata, content }) => {
const address = metadata.address || {}
const document = metadata.document || {}
const info = metadata.info || {}
const footer = metadata.footer || {}

const infoFields = []
const appendInfo = (field, title, parseField) => {
if (field) {
infoFields.push({
title,
field: (parseField && typeof (parseField) === 'function' ? parseField(field) : field)
})
}
}

appendInfo(info['our-date'] || new Date(), 'Vår dato', formatDate)
appendInfo(info['your-date'], 'Dykkar dato', formatDate)
appendInfo(info['our-reference'], 'Vår referanse')
appendInfo(info['your-reference'], 'Dykkar referanse')
appendInfo(info['our-caseworker'], 'Vår saksbehandlar')
appendInfo(info.paragraph, 'Unnateke offentlegheit')

const defintion = {
pageSize: 'A4',
pageOrientation: 'portrait',
pageMargins: [65, 120, 65, 70],
info: {
title: document.title,
author: document.author,
subject: document.subject,
keywords: document.keywords
},
watermark: watermark(metadata, 'Førehandsvisning'),
header,
content: [
{
table: {
widths: ['50%', '*', '*'],
body: [
[
{ text: [address.name, address.street, address.city].filter(text => !!text).join('\n'), style: 'address', rowSpan: 2 },
{ text: `${info.sector || ''}`, style: 'info', bold: true, colSpan: 2, marginTop: 30 },
''
],
[
'',
infoFields.map(info => ({ text: `${info.title}:`, style: 'info' })),
infoFields.map(info => ({ text: info.field, style: 'info' }))
]
]
},
layout: {
defaultBorder: false,
paddingLeft: () => 0,
paddingRight: () => 0,
paddingTop: () => 0,
paddingBottom: () => 5
}
},
content
],
footer: (page) => ({
table: {
widths: [93, 138, 97, 52, 70, 29],
body: [
[
[
{ text: 'Postadresse:', style: 'footer', bold: true },
{ text: `${footer['postal-address'] || 'Postboks 2844\n2702 Skien'}`, style: 'footer' }
],
[
{ text: 'Besøksadresse:', style: 'footer', bold: true },
{ text: `${footer['visiting-address'] || 'Torggata 18, Skien\nSvend Foyns gate 9, Tønsberg'}`, style: 'footer' }
],
[
{ text: 'Sentralbord:', style: 'footer', bold: true },
{ text: `${footer.phone || '35 91 70 00'}`, style: 'footer' },
{ text: `${footer.email || 'post@vtfk.no'}`, style: 'footer' }
],
[
{ text: 'Org. nr.:', style: 'footer', bold: true },
{ text: `${footer.orgnr || '821 227 062'}`, style: 'footer' }
],
[
{ text: `${footer.url || 'vtfk.no'}`, style: 'footer', bold: true, alignment: 'right', fontSize: 10 }
],
[
{ text: footer['page-numbers'] === false ? '' : page, style: 'pagenumber' }
]
]
]
},
layout: {
defaultBorder: false,
paddingLeft: () => 0,
paddingRight: () => 0,
paddingTop: () => 0,
paddingBottom: () => 0
},
margin: [65, 5, 65, 0]
}),
...style,
...helpers
}

return defintion
}
Loading

0 comments on commit 33ba99f

Please sign in to comment.