HEX
Server: Apache/2.4.52 (Ubuntu)
System: Linux spn-python 5.15.0-89-generic #99-Ubuntu SMP Mon Oct 30 20:42:41 UTC 2023 x86_64
User: arjun (1000)
PHP: 8.1.2-1ubuntu2.20
Disabled: NONE
Upload Files
File: //home/arjun/projects/buyercall_forms/buyercall/buyercall/templates/layouts/backend_reports.jinja2
{% extends 'layouts/backend_base.jinja2' %}

{% block header %}
            {% if current_supervisor_user.is_authenticated %}
            <div data-notify="container"
            class="alert switch-back-bar col-xs-11 col-sm-10 col-md-10 col-lg-8 alert-warning alert-with-icon" data-notify-position="top-center"
            role="alert">
                <i class="material-icons" data-notify="icon">error</i>
                    <span data-notify="message">
                    Hi <strong>{{ current_supervisor_user.firstname | default(current_user.first_name|default('') + ' ' +
                    current_user.last_name|default('')) }}</strong>,
                    you are logged in as
                    <strong>{{ current_user.firstname }} {{current_user.lastname }}
                    </strong>
                    </span>
                    <a href="{{ url_for('user.switch_back') }}">
                        <button type="button" class="switch-back-button btn btn-light-blue" aria-hidden="true">
                            Switch back
                        </button>
                    </a>
            </div>
            {% endif %}
            <nav class="navbar navbar-transparent navbar-absolute {% if current_supervisor_user.is_authenticated %} navbar-custom-position {% endif %}">
                <div class="container-fluid">
                    <div class="navbar-minimize">
                        <button id="minimizeSidebar" class="btn btn-round btn-light-blue btn-fill btn-just-icon">
                            <i class="material-icons visible-on-sidebar-regular">more_vert</i>
                            <i class="material-icons visible-on-sidebar-mini">view_list</i>
                        </button>
                    </div>
                    <div class="navbar-header">
                        <button type="button" class="navbar-toggle" data-toggle="collapse">
                            <span class="sr-only">Toggle navigation</span>
                            <span class="icon-bar"></span>
                            <span class="icon-bar"></span>
                            <span class="icon-bar"></span>
                        </button>
                        <a class="navbar-brand" href="#"> {% block heading %}{% endblock %} </a>
                    </div>
                </div>
            </nav>
{% endblock %}

{% block footer %}
<footer class="footer">
                <div class="container-fluid">
                    <nav class="pull-left">
                        <ul>
                           <!-- <li>
                                <a href="{{ url_for('page.faq') }}">
                                    FAQ
                                </a>
                            </li> -->
                            <li>
                                <li><a href="{{ url_for('issue.support') }}">
                                    Support
                                </a>
                            </li>
                            <li>
                                <a href="{{ url_for('page.privacy') }}">
                                    Privacy Policy
                                </a>
                            </li>
                            <li>
                                <a href="{{ url_for('page.terms') }}">
                                    Terms of Service
                                </a>
                            </li>
                        </ul>
                    </nav>
                    <p class="copyright pull-right">
                        Copyright &copy; 2022 {{ current_user.partnership.name }}. All rights reserved.
                    </p>
                </div>
            </footer>
{% endblock %}
{% block notifications %}
    {{ flash.render() }}
    {{ billing.card_expiring_warning() }}
    {{ billing.subscription_expiring_warning() }}
    {{ billing.subscription_expiring_error() }}
{% endblock %}

{% block scripts %}
<!-- Load and execute javascript code used for leads page -->
{% endblock %}
{% block pagescripts %}
<script>
// The weekly call performance line chart
new Chartist.Line('#listInterestReportChart', {
  labels: ['Mon', 'Tue', 'Wed', 'Thurs', 'Fri', 'Sat', 'Sun'],
  series: [
    [{meta: 'reports', value: 12},
     {meta: 'reports', value: 9},
     {meta: 'reports', value: 14},
     {meta: 'reports', value: 8},
     {meta: 'reports', value: 9},
     {meta: 'reports', value: 11},
     {meta: 'reports', value: 14}]
  ]
}, {
  fullWidth: true,
  chartPadding: {
    right: 40
  }
});
// The daily sales report email
new Chartist.Line('#listDailySalesReport', {
  labels: ['Mon', 'Tue', 'Wed', 'Thurs', 'Fri', 'Sat', 'Sun'],
  series: [
    [{meta: 'reports', value: 4},
     {meta: 'reports', value: 12},
     {meta: 'reports', value: 6},
     {meta: 'reports', value: 8},
     {meta: 'reports', value: 9},
     {meta: 'reports', value: 21},
     {meta: 'reports', value: 17}]
  ]
}, {
  fullWidth: true,
  chartPadding: {
    right: 40
  }
});
// Credit service provider accounts report
new Chartist.Line('#CreditServiceProviderReportChart', {
  labels: ['Mon', 'Tue', 'Wed', 'Thurs', 'Fri', 'Sat', 'Sun'],
  series: [
    [{meta: 'reports', value: 12},
     {meta: 'reports', value: 9},
     {meta: 'reports', value: 3},
     {meta: 'reports', value: 10},
     {meta: 'reports', value: 15},
     {meta: 'reports', value: 29},
     {meta: 'reports', value: 21}]
  ]
}, {
  fullWidth: true,
  chartPadding: {
    right: 40
  }
});
</script>
<script>
    window.setTimeout(function() { $('#flash-messages').hide('slow') }, 10000);
    function sleep(ms) {
        return new Promise(resolve => setTimeout(resolve, ms));
    };
    function iterateDots(){
        var el = document.getElementById("dots");
        var dotsStr = el.innerHTML;
        var dotsLen = dotsStr.length;
        var maxDots = 3;
        el.innerHTML = (dotsLen < maxDots ? dotsStr + '.' : '');
    };
    dotInterval = null;
    function startDots(func, time) {
        dotInterval = setInterval(func, time);
    }
    function stopDots() {
        clearInterval(dotInterval);
    }
</script>
<script>
  const taskPDF = (btn, doPoll, report) => {
    document.getElementById("pdfDownload").addEventListener("click", (event) => {
      event.preventDefault()
      event.stopImmediatePropagation()
      if(event.target.tagName.toLowerCase() === 'a'){
        event.target.href;
      }
      fetch(event.target.href, {
        method: "GET",
      })
        .then(response => response.json())
        .then(data => {
          report(null)

          const poll = () => {
            fetch(`/reports/credit_service_provider_report/pdf/result/${data["result_id"]}`)
              .then(response => response.json())
              .then(data => {
                report(data)

                if (!data["ready"]) {
                  setTimeout(poll, 500)
                } else if (!data["successful"]) {
                  console.error(btn, data)
                }
              })
          }

          if (doPoll) {
            poll()
          }
        })
    }, true);
  }

  taskPDF("pdf", true, data => {
    data === null
    const dlP = document.getElementById("dlMsg");
    const el = document.getElementById("pdf-result");
    const btnLink = document.getElementById('pdfDownload');
    const dots = document.getElementById('dots');
    startDots("iterateDots()", 800);
    if (data === null) {
      dlP.style.display = 'block';
      btnLink.style.display = 'none';
      dots.style.display = 'inline-block';
      el.style.display = 'inline-block';
      el.style.color = '#3C4858';
      el.innerText = "Initiate report build"
    } else if (!data["ready"]) {
      el.style.color = '#3C4858';
      el.innerText = "Busy generating report"
    } else if (!data["successful"]) {
      stopDots();
      el.style.color = '#dc3545';
      el.innerText = "There was an issue generating the report. Please contact support."
    } else {
      stopDots();
      el.style.color = '#3C4858';
      dots.style.display = 'none';
      el.innerText = "Report build complete. The report will open in a new tab."
      fetch(`/reports/open_pdf/result/`, {
        headers: {'X-CSRFToken': document.querySelector("meta[name='csrf-token']").getAttribute("content")},
        method: "POST",
        body: data["value"]
      }).then((response) => response.blob()).then(data => window.open(URL.createObjectURL(data)))
      sleep(5000).then(() => {
          btnLink.style.display = 'block';
          dlP.style.display = 'none';
          el.style.display = 'none';
      });
    }
  })
</script>
{% endblock %}