{%- 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>
