<template>
  <div class="export-table-modal__actions">
    <div v-if="job !== null" class="export-table-modal__loading-bar">
      <div
        class="export-table-modal__loading-bar-inner"
        :style="{
          width: `${job.progress_percentage * 100}%`,
          'transition-duration': [1, 0].includes(job.progress_percentage)
            ? '0s'
            : '1s',
        }"
      ></div>
      <span v-if="jobIsRunning" class="export-table-modal__status-text">
        {{ job.status }}
      </span>
    </div>
    <button
      v-if="job === null || job.status !== 'complete'"
      class="button button--large button--primary export-table-modal__export-button"
      :class="{ 'button--loading': loading }"
      :disabled="disabled"
    >
      Export
    </button>
    <a
      v-else
      class="button button--large button--success export-table-modal__export-button"
      :href="job.url"
      target="_blank"
    >
      Download
    </a>
  </div>
</template>

<script>
export default {
  name: 'ExportTableLoadingBar',
  props: {
    job: {
      type: Object,
      required: false,
      default: null,
    },
    loading: {
      type: Boolean,
      required: true,
    },
    disabled: {
      type: Boolean,
      required: true,
    },
  },
  computed: {
    jobIsRunning() {
      return (
        this.job !== null && ['exporting', 'pending'].includes(this.job.status)
      )
    },
  },
}
</script>