{%- macro tableRow(label, value, options = {}) -%}
{%- set class = options.class|default({}) -%}
{%- set prepend = options.prepend|default({}) %}
{% set append = options.append|default({}) -%}
{% apply spaceless %}
{% if label and value %}
[
{# { text: '{{- label -}}', color: '#357792' },#}
{ text: '{{- label -}}' },
{# { text: '{% if prepend %}{{ prepend }}{% endif %}{{- value -}}{% if append %}{{ append }}{% endif %}', color: '#001118', bold: true },#}
{ text: '{% if prepend %}{{ prepend }}{% endif %}{{- value -}}{% if append %}{{ append }}{% endif %}', bold: true },
],
{% endif %}
{% endapply %}
{%- endmacro -%}
{#<div id="iFrameContainer"></div>#}
<script src="/bundles/vonrotenbergrealestatelisting/js/pdfmake.js"></script>
<script src="/bundles/vonrotenbergrealestatelisting/js/vfs_fonts.js"></script>
<script>
var docDefinition = {
pageSize: 'A4',
pageOrientation: 'portrait',
pageMargins: [{{ 15|mm2pt }},{{ 35|mm2pt }},{{ 15|mm2pt }},{{ 15|mm2pt }}],
defaultStyle: {
font: 'Roboto',
fontSize: 11,
lineHeight: 1.1
},
styles:{
h3: {
fontSize: 13,
bold: true,
margin: [0,0,0,{{ 1.25|mm2pt }}]
},
h4: {
fontSize: 13,
// color: '#025577',
margin: [0,0,0,{{ 1.25|mm2pt }}]
}
},
header: function(currentPage, pageCount, pageSize) {
if (currentPage === 1)
{
return [
{
stack: [
{ image: '{{ 'bundles/vonrotenbergrealestatelisting/images/pdf_logo.png'|imageDataUrl }}', width: {{ 35|mm2pt }}, alignment: 'center'},
],
margin: [{{ 15|mm2pt }},{{ 5|mm2pt }},{{ 15|mm2pt }},0]
},
];
}
return [];
},
footer: function(currentPage, pageCount, pageSize) {
if (pageCount > 1)
{
return [
{
stack: [
{ text: 'Seite: '+currentPage+'/'+pageCount, alignment: 'right', margin: [0, 0, 0, 0], color: '#666'}
],
margin: [{{ 15|mm2pt }},{{ 5|mm2pt }},{{ 15|mm2pt }},0]
},
];
}
return [];
},
content: [
{
columns: [
{
stack: [
{
text: '{{ item.title }}{% if item.city %} in {{ item.city }}{% endif %}',
fontSize: 20,
margin: [0,0,0,{{ 2.5|mm2pt }}],
color: '#025577'
},
{% if item.address %}
{
text: '{{ item.address }}',
fontSize: 16,
margin: [0,0,0,{{ 2.5|mm2pt }}]
},
{% endif %}
{
text: 'Objekt-Nr.: {{ item.assetNo }}',
fontSize: 14,
color: '#025577',
margin: [0,0,0,{{ 5|mm2pt }}]
},
{
qr: '{{ item.qrUrl }}',
fit: 70
}
{#{% if item.description %}
{
text: '{{ 'MSC.re_description'|trans({}, 'contao_default') }}',
style: 'h3',
margin: [0, {{ 10|mm2pt }}, 0, 0],
},
{
text: '{{ item.description|raw|striptags }}',
margin: [0, 0, 0,{{ 10|mm2pt }}],
}
{% endif %}#}
],
width: '*'
},
{
stack: [
{
image: '{{ item.teaserFigure.getImage().getFilePath()|imageDataUrl }}',
fit: [{{ 85|mm2pt }},{{ 85|mm2pt }}],
alignment: 'right'
}
],
width: '*'
}
],
margin: [0,0,0,{{ 10|mm2pt }}],
columnGap: {{ 5|mm2pt }}
},
{% if item.description %}
{
text: '{{ 'MSC.re_description'|trans({}, 'contao_default') }}',
style: 'h3'
},
{
table: {
widths: ['*'],
body: [
[
{
text: '{{ item.description|raw|striptags|replace({ '\r\n': '\\r\\n', '\n': '\\n', '\r': '\\r' }) }}',
margin: [5,5,5,5],
// color: '#357792'
}
]
]
},
fillColor: '#f3fbff',
layout: 'noBorders',
margin: [0, 0, 0,{{ 10|mm2pt }}],
},
{% endif %}
{
columns: [
{
stack: [
{
text: '{{ 'MSC.re_properties'|trans({}, 'contao_default') }}',
style: 'h3'
},
{
table: {
widths: ['*'],
body: [
[
{
stack: [
{
table: {
widths: ['40%', '*'],
body: [
{{ _self.tableRow('tl_vr_real_estate_assets.livingSpace.0'|trans({}, 'contao_default'),item.livingSpace|number_format(2, ',', ''),{ append: ' m²'}) }}
{{ _self.tableRow('tl_vr_real_estate_assets.numberOfRooms.0'|trans({}, 'contao_default'),item.numberOfRooms) }}
{% set condition = 'REF.re_condition.' ~ item.condition %}
{{ _self.tableRow('tl_vr_real_estate_assets.condition.0'|trans({}, 'contao_default'),condition|trans({}, 'contao_default')) }}
{{ _self.tableRow('tl_vr_real_estate_assets.constructionYear.0'|trans({}, 'contao_default'),item.constructionYear) }}
],
},
layout: 'noBorders',
margin: [5, 5, 5, 5],
},
{
table: {
widths: ['40%', '*'],
body: [
{% set heating = 'REF.re_heatingType.' ~ item.heatingType %}
{{ _self.tableRow('tl_vr_real_estate_assets.heatingType.0'|trans({}, 'contao_default'),heating|trans({}, 'contao_default')) }}
{% if item.energyConsumption and item.energyPassType %}
{% set passType = 'REF.re_energyPassType.' ~ item.energyPassType %}
{{ _self.tableRow('MSC.re_energyConsumption'|trans({}, 'contao_default') ~ ' ' ~ passType|trans({}, 'contao_default'),item.energyConsumption,{ append: ' kWh/(m²a)'}) }}
{% endif %}
],
},
layout: 'noBorders',
margin: [5, 5, 5, 5],
},
{
text: '{{ 'MSC.re_rent'|trans({}, 'contao_default') }}',
style: 'h4',
margin: [5, 5, 5, 5],
},
{
table: {
widths: ['40%', '*'],
body: [
{{ _self.tableRow('tl_vr_real_estate_assets.coldRent.0'|trans({}, 'contao_default'),item.coldRent|number_format(2, ',', ''),{ append: ' €'}) }}
{{ _self.tableRow('Betriebskosten-vorauszahlungen',item.advanceOperatingCosts|number_format(2, ',', ''),{ append: ' €'}) }}
],
},
layout: 'noBorders',
margin: [5, 5, 5, 5],
},
{
table: {
widths: ['40%', '*'],
body: [
{{ _self.tableRow('Genossenschafts-anteile',item.cooperativeShares) }}
{{ _self.tableRow('tl_vr_real_estate_assets.availability.0'|trans({}, 'contao_default'),item.availableFrom) }}
],
},
layout: 'noBorders',
margin: [5, 5, 5, 5],
},
]
}
]
]
},
fillColor: '#f3fbff',
layout: 'noBorders',
},
],
width: '*',
}{% if item.features is iterable and item.features|length > 0 %},
{
stack: [
{
text: '{{ 'MSC.re_features'|trans({}, 'contao_default') }}',
style: 'h3'
},
{
table: {
widths: ['*'],
body: [
[
{
stack: [
{
table: {
widths: [10, '*'],
body: [
{% for feature in item.features %}
{% set featureTrans = 'REF.re_features.' ~ feature %}
[
{
canvas: [
{
type: 'polyline',
lineWidth: 1,
closePath: false,
points: [{x: 0, y: 6}, {x: 4, y: 10}, {x: 10, y: 2}],
lineColor: '#73160E'
}
]
},
{
text: '{{ featureTrans|trans({}, 'contao_default') }}',
// color: '#357792'
}
],
{% endfor %}
],
},
layout: 'noBorders',
margin: [5, 5, 5, 5],
},
]
}
]
]
},
fillColor: '#f3fbff',
layout: 'noBorders',
},
],
width: '*'
}{% endif %}
],
margin: [0,0,0,{{ 10|mm2pt }}],
columnGap: {{ 5|mm2pt }},
unbreakable: true
},
{% if item.floorPlansFigures|length > 0 %}
{
text: '{{ 'MSC.re_floorPlan'|trans({}, 'contao_default') }}',
style: 'h3',
pageBreak: 'before'
},
{% for image in item.floorPlansFigures %}
{
image: '{{ image.getImage().getFilePath()|imageDataUrl }}',
fit: [{{ 180|mm2pt }},{{ 180|mm2pt }}],
alignment: 'center'
},
{% endfor %}
{% endif %}
{% if item.galleryFigures|length > 1 %}
{
text: '{{ 'MSC.re_gallery'|trans({}, 'contao_default') }}',
style: 'h3',
pageBreak: 'before'
},
{
columns: [
{% for image in item.galleryFigures[1:] %}
{% if loop.index % 2 > 0 and loop.index > 1 %}
],
columnGap: {{ 5|mm2pt }},
margin: [0,0,0,{{ 5|mm2pt }}],
},
{
columns: [
{% endif %}
{
image: '{{ image.getImage().getFilePath()|imageDataUrl }}',
width: {{ 85|mm2pt }},
alignment: 'left'
},
{% endfor %}
],
columnGap: {{ 5|mm2pt }}
}
{% endif %}
],
pageBreakBefore(currentNode, followingNodesOnPage, nodesOnNextPage, previousNodesOnPage) {
return currentNode.pageNumbers.length > 1 && currentNode.unbreakable;
}
};
const pdfDocGenerator = pdfMake.createPdf(docDefinition);
/*pdfDocGenerator.getDataUrl((dataUrl) => {
const targetElement = document.querySelector('#iframeContainer');
const iframe = document.createElement('object');
iframe.data = dataUrl;
iframe.setAttribute('style','width: 100%; height: 80vh;');
iframe.setAttribute('type','application/pdf');
targetElement.appendChild(iframe);
});*/
pdfDocGenerator.open();
{#pdfDocGenerator.download('expose_{{ item.assetNo }}');#}
// pdfDocGenerator.open({},window);
</script>