{"version":3,"file":"DistributionDownloadAsModal.vue.mjs","sources":["../../../lib/datasetDetails/distributions/DistributionDownloadAsModal.vue"],"sourcesContent":["<template>\n    <div class=\"modal fade\" id=\"downloadAsModal\" tabindex=\"-1\" role=\"dialog\" aria-labelledby=\"downloadAsModal\"\n        aria-hidden=\"true\" style=\"background-color: rgba(0, 0, 0, 0.75);\">\n        <div class=\"modal-dialog  modal-dialog-centered modal-lg\" role=\"document\">\n            <div class=\"modal-content rounded-0\">\n                <div class=\"modal-header\">\n                    <h5 class=\"modal-title\" id=\"exampleModalLabel\">{{\n                        $t('message.datasetDetails.datasets.modal.downloadAs') }} ...</h5>\n                    <button ref=\"modal-close-btn\" type=\"button\" id=\"modal-close-btn\" data-dismiss=\"modal\" class=\"close\"\n                        aria-label=\"Close\">\n                        {{ $t('message.datasetDetails.datasets.modal.close') }}\n                        <span aria-hidden=\"true\" class=\"close-icon rounded-circle\">\n                            <svg xmlns=\"http://www.w3.org/2000/svg\" fill=\"white\"\n                                xmlns:xlink=\"http://www.w3.org/1999/xlink\" height=\"8\" id=\"Layer_1\"\n                                style=\"enable-background:new 0 0 512 512;\" version=\"1.1\" viewBox=\"0 0 512 512\" width=\"8\"\n                                xml:space=\"preserve\">\n                                <path\n                                    d=\"M443.6,387.1L312.4,255.4l131.5-130c5.4-5.4,5.4-14.2,0-19.6l-37.4-37.6c-2.6-2.6-6.1-4-9.8-4c-3.7,0-7.2,1.5-9.8,4  L256,197.8L124.9,68.3c-2.6-2.6-6.1-4-9.8-4c-3.7,0-7.2,1.5-9.8,4L68,105.9c-5.4,5.4-5.4,14.2,0,19.6l131.5,130L68.4,387.1  c-2.6,2.6-4.1,6.1-4.1,9.8c0,3.7,1.4,7.2,4.1,9.8l37.4,37.6c2.7,2.7,6.2,4.1,9.8,4.1c3.5,0,7.1-1.3,9.8-4.1L256,313.1l130.7,131.1  c2.7,2.7,6.2,4.1,9.8,4.1c3.5,0,7.1-1.3,9.8-4.1l37.4-37.6c2.6-2.6,4.1-6.1,4.1-9.8C447.7,393.2,446.2,389.7,443.6,387.1z\" />\n                            </svg>\n                        </span>\n                    </button>\n                </div>\n                <div class=\"modal-body\">\n                    <div class=\"align-items-center\">\n                        <div>\n                            <div class=\"ecl-form-group\">\n                                <div class=\"ecl-select__container ecl-select__container--m\">\n                                    <select v-model=\"selected\" @change=\"onChange()\" class=\"ecl-select coursor-pointer\"\n                                        id=\"select-default\" required=\"\">\n                                        <option value=\"\" disabled hidden>- {{\n                        $t('message.datasetDetails.datasets.modal.selectFileFormat') }} -</option>\n                                        <option v-for=\"(option, index) in getDistributionDownloadAsOptions\" :key=\"index\"\n                                            :value=\"option\" v-text=\"option.toUpperCase()\"></option>\n                                    </select>\n                                    <div class=\"ecl-select__icon\">\n                                        <svg xmlns=\"http://www.w3.org/2000/svg\" xml:space=\"preserve\" width=\"16\"\n                                            height=\"8\" shape-rendering=\"geometricPrecision\"\n                                            text-rendering=\"geometricPrecision\" image-rendering=\"optimizeQuality\"\n                                            fill-rule=\"evenodd\" clip-rule=\"evenodd\" viewBox=\"0 0 512 298.04\">\n                                            <path fill=\"#ffffff\" fill-rule=\"nonzero\"\n                                                d=\"M12.08 70.78c-16.17-16.24-16.09-42.54.15-58.7 16.25-16.17 42.54-16.09 58.71.15L256 197.76 441.06 12.23c16.17-16.24 42.46-16.32 58.71-.15 16.24 16.16 16.32 42.46.15 58.7L285.27 285.96c-16.24 16.17-42.54 16.09-58.7-.15L12.08 70.78z\" />\n                                        </svg>\n                                    </div>\n                                </div>\n                            </div>\n                            <div v-if=\"error\" class=\"error mt-4\">\n                                <div class=\"error-body\">\n                                    <svg width=\"40\" height=\"38\" viewBox=\"0 0 24 22\" fill=\"none\"\n                                        xmlns=\"http://www.w3.org/2000/svg\" class=\"warning-icon\">\n                                        <path\n                                            d=\"M0 22L12 0L24 22H0ZM12 18.5263C12.3091 18.5263 12.5684 18.4152 12.7778 18.1928C12.9873 17.9705 13.0916 17.6957 13.0909 17.3684C13.0902 17.0411 12.9855 16.7663 12.7767 16.544C12.568 16.3217 12.3091 16.2105 12 16.2105C11.6909 16.2105 11.432 16.3217 11.2233 16.544C11.0145 16.7663 10.9098 17.0411 10.9091 17.3684C10.9084 17.6957 11.0131 17.9709 11.2233 18.194C11.4335 18.4171 11.6924 18.5279 12 18.5263ZM10.9091 15.0526H13.0909V9.26316H10.9091V15.0526Z\"\n                                            fill=\"#FBC712\" />\n                                    </svg>\n\n                                    <span>\n                                        <span class=\"font-weight-bold ml-3\">{{\n                        $t('message.datasetDetails.datasets.modal.fileConversionFail') }}</span>\n                                        <br>\n                                        <span class=\"ml-3\">\n                                            <!-- {{ $t('message.datasetDetails.datasets.modal.fileConversionTarget') }}  -->\n                                            The target file contains an error, which prevents the conversion.\n                                        </span>\n                                        <div class=\"ml-3 details\"><strong>\n                                                <!-- {{ $t('message.datasetDetails.datasets.modal.fileConversionDetails') }} -->\n                                                Details\n                                            </strong></div>\n                                        <p class=\"ml-3\">{{ errorMsg }}</p>\n                                    </span>\n                                </div>\n                            </div>\n\n                            <div v-if=\"converting\">\n                                <div class=\"d-flex mt-4\">\n                                    <p class=\"m-0\">1 {{ $t('message.datasetDetails.datasets.modal.fileConversionTo') }}\n                                        <span class=\"font-weight-bold\">{{ selected.toUpperCase() }}</span></p>\n                                    <i v-if=\"converted\" class=\"success rounded-circle\">\n                                        <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\" fill=\"white\"\n                                            class=\"bi bi-check\" viewBox=\"0 0 16 16\">\n                                            <path\n                                                d=\"M10.97 4.97a.75.75 0 0 1 1.07 1.05l-3.99 4.99a.75.75 0 0 1-1.08.02L4.324 8.384a.75.75 0 1 1 1.06-1.06l2.094 2.093 3.473-4.425a.267.267 0 0 1 .02-.022z\" />\n                                        </svg>\n                                    </i>\n                                </div>\n                                <div class=\"d-flex mt-2\">\n                                    <p :class=\"{ active: converted }\" class=\"m-0\" style=\"color:#A8A8A8;\">2 {{\n                        $t('message.datasetDetails.datasets.modal.downloading') }} </p>\n                                    <i v-if=\"readyForDownload\" class=\"success rounded-circle\">\n                                        <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\" fill=\"white\"\n                                            class=\"bi bi-check\" viewBox=\"0 0 16 16\">\n                                            <path\n                                                d=\"M10.97 4.97a.75.75 0 0 1 1.07 1.05l-3.99 4.99a.75.75 0 0 1-1.08.02L4.324 8.384a.75.75 0 1 1 1.06-1.06l2.094 2.093 3.473-4.425a.267.267 0 0 1 .02-.022z\" />\n                                        </svg>\n                                    </i>\n                                </div>\n                                <div class=\"w-100 text-right\">{{ this.progress + '%' }}</div>\n                                <div class=\"progress mt-2\">\n                                    <div class=\"progress-bar\" role=\"progressbar\"\n                                        v-bind:style=\"{ width: progress + '%' }\" aria-valuenow=\"100\" aria-valuemin=\"0\"\n                                        aria-valuemax=\"100\"></div>\n                                </div>\n                            </div>\n                        </div>\n                    </div>\n                </div>\n                <div class=\"modal-footer justify-content-start\">\n                    <button v-if=\"!done\" @click=\"download\" type=\"button\" class=\"ecl-button ecl-button--secondary\"\n                        v-text=\"downloadBtnText\"></button>\n                    <button v-if=\"done\" type=\"button\" class=\"ecl-button ecl-button--secondary\" data-dismiss=\"modal\"\n                        aria-label=\"Close\">Done</button>\n                    <a v-if=\"error == true\" :href=\"downloadOrAccessUrl\" target=\"_blank\"\n                        class=\"ecl-button ecl-button--secondary ml-2\">\n                        <!-- {{ $t('message.datasetDetails.datasets.modal.fileConversionDownloadOriginal') }} -->\n                        Access source file \n                        <i class=\"material-icons align-middle smaller\">open_in_new</i> </a>\n                </div>\n            </div>\n        </div>\n    </div>\n</template>\n\n<script>\nimport AppLink from \"../../widgets/AppLink.vue\";\nimport $ from 'jquery'\nimport {\n    mapGetters\n} from 'vuex'\nimport axios from 'axios'\nimport {\n    late\n} from 'zod'\n\n\nexport default {\n    name: \"download-as-modal\",\n    data() {\n        return {\n            selected: '',\n            converting: false,\n            converted: false,\n            readyForDownload: false,\n            error: false,\n            done: false,\n            progress: '0',\n            downloadBtnText: 'Download',\n            errorMsg: '',\n            source: null,\n        }\n    },\n    computed: {\n        ...mapGetters('datasetDetails', [\n            'getDistributionDownloadAsOptions',\n            'getDistributionDownloadAs',\n        ]),\n        downloadOrAccessUrl() {\n            if (this.getDistributionDownloadAs.downloadUrls.length) {\n                return this.getDistributionDownloadAs.downloadUrls[0];\n            } else if (this.getDistributionDownloadAs.accessUrl.length) {\n                return this.getDistributionDownloadAs.accessUrl[0];\n            } else {\n                return null;\n            }\n        }\n    },\n    components: {\n        AppLink\n    },\n    mounted() {\n        // Add a listener to the modal close button\n        const modalCloseBtnRef = this.$refs['modal-close-btn'];\n        modalCloseBtnRef.addEventListener('click', () => {\n            if (this.source) {\n                // Cancel the ongoing request\n                this.source.cancel('Download was canceled by user');\n            }\n        });\n        const scope = this;\n        $('#downloadAsModal').on('hide.bs.modal', () => {\n            scope.selected = scope.errorMsg = '';\n            scope.converting = scope.converted = scope.readyForDownload = scope.error = scope.done = false;\n            scope.progress = '0';\n            scope.downloadBtnText = 'Download';\n        })\n    },\n    methods: {\n        download() {\n            this.error = false;\n            const ifDownloadUrl = this.getDistributionDownloadAs.downloadUrls.length;\n            const ifAccessUrl = this.getDistributionDownloadAs.accessUrl.length;\n\n            if (this.selected.toLowerCase() === this.getDistributionDownloadAs.format.id.toLowerCase()) {\n                if (ifDownloadUrl) {\n                    window.open(this.getDistributionDownloadAs.downloadUrls[0]);\n                    this.done = true;\n                } else if (ifAccessUrl) {\n                    window.open(this.getDistributionDownloadAs.accessUrl[0]);\n                    this.done = true;\n                }\n            } else {\n                this.converting = true;\n                this.downloadBtnText = 'Converting...';\n\n                if (ifDownloadUrl || ifAccessUrl) {\n                    let url = '';\n                    if (ifDownloadUrl) {\n                        url = this.getDistributionDownloadAs.downloadUrls[0];\n                    } else if (!ifDownloadUrl && ifAccessUrl) {\n                        url = this.getDistributionDownloadAs.accessUrl[0];\n                    }\n                    this.progress = '3' + this.randomNumber();\n\n                    const uri = encodeURIComponent(`${this.$env.content.datasetDetails.downloadAs.url}/${this.getDistributionDownloadAs.format.id.toLowerCase()}/${this.selected}`);\n                    const downloadOrAccessUrl = encodeURIComponent(url);\n\n                    // Create a cancel token\n                    const CancelToken = axios.CancelToken;\n                    this.source = CancelToken.source();\n                    axios({\n                        url: `${this.$env.content.datasetDetails.downloadAs.proxyUrl}/?uri=${uri}/?url=${downloadOrAccessUrl}`,\n                        method: 'GET',\n                        responseType: 'blob',\n                        headers: {\n                            'Content-Type': 'application/octet-stream; charset=UTF-8'\n                        },\n                        cancelToken: this.source.token,\n                    }).then((res) => {\n                        this.progress = '8' + this.randomNumber();\n                        this.converted = true;\n                        this.downloadBtnText = 'Downloading...';\n\n                        this.progress = '100';\n                        this.readyForDownload = true;\n\n                        const locale = this.$route.query.locale;\n                        const FILE = window.URL.createObjectURL(res.data);\n\n\n                        let docUrl = document.createElement('a');\n                        docUrl.href = FILE;\n                        docUrl.setAttribute('download', this.setFileName(locale));\n                        document.body.appendChild(docUrl);\n                        this.done = true;\n\n                        docUrl.click();\n                    })\n                        .catch(async (e) => {\n                            console.error(\"Error\", e)\n                            if (axios.isCancel(e)) {\n                                console.error('Request canceled:', e.message);\n                            } else {\n                                if (e.response) this.errorMsg = await e.response.data.text();\n                                this.error = true;\n                                this.downloadBtnText = 'Retry';\n                                this.converting = false;\n                            }\n                        });\n                }\n            }\n        },\n        onChange() {\n            this.done = this.converted = this.converting = this.readyForDownload = this.error = false;\n            this.downloadBtnText = 'Download';\n        },\n        // 0 - 9\n        randomNumber() {\n            const max = 10;\n            return Math.floor(Math.random() * max);\n        },\n        setFileName(locale) {\n            if (typeof this.getDistributionDownloadAs.title === 'undefined') {\n                return 'file'\n            }\n            if (this.getDistributionDownloadAs.title[locale]) {\n                return this.getDistributionDownloadAs.title[locale].split('.')[0] + '.' + this.selected;\n            } else {\n                return Object.values(this.getDistributionDownloadAs.title)[0].split('.')[0] + '.' + this.selected;\n\n            }\n        }\n    }\n}\n</script>\n\n<style scoped lang=\"scss\">\n.success {\n    background: #00997A;\n    display: flex;\n    justify-content: center;\n    align-items: center;\n    margin-left: 8px;\n    height: 20px;\n    width: 20px;\n}\n\n.modal-title {\n    font-family: 'Arial';\n    font-style: normal;\n    font-weight: 700;\n    font-size: 22px;\n    line-height: 24px;\n    color: #000000;\n}\n\n.modal-content {\n    border: 3px solid #0e47cb;\n}\n\n.modal-header {\n    padding: 1.5rem 1.5rem 0rem 1.5rem;\n    border-bottom: none;\n}\n\n.modal-body {\n    padding: 1rem 1.5rem;\n}\n\n.modal-footer {\n    border-top: none;\n    padding: 1rem 1.5rem;\n}\n\n.close {\n    font-size: 16px;\n    color: #0e47cb;\n    opacity: 1;\n    padding: 0.5rem !important;\n\n    .close-icon {\n        color: white;\n        background: #0e47cb;\n        display: flex;\n        justify-content: center;\n        align-items: center;\n        width: 12px;\n        height: 12px;\n        float: right;\n        margin-top: 3px;\n        margin-left: 10px;\n    }\n}\n\n.active {\n    color: #000000 !important;\n}\n\n.error {\n    border: 2px solid #FBC712;\n\n    .error-body {\n        padding: 1.8rem;\n        display: flex;\n    }\n}\n\n.progress-bar {\n    -webkit-transition: width 1s ease;\n    -moz-transition: width 1s ease;\n    -o-transition: width 1s ease;\n    transition: width 1s ease;\n}\n\n.ecl-select {\n    cursor: pointer;\n}\n\n.details {\n    margin-top: 30px;\n}\n\n.warning-icon {\n    margin-top: 5px;\n    margin-right: 7px\n}\n\n.smaller {\n    font-size: 17px;\n\n}\n</style>\n"],"names":["_sfc_main","mapGetters","AppLink","scope","$","ifDownloadUrl","ifAccessUrl","url","uri","downloadOrAccessUrl","CancelToken","axios","res","locale","FILE","docUrl","e","_hoisted_3","_hoisted_4","_hoisted_9","_hoisted_10","_hoisted_11","_hoisted_12","_hoisted_16","_hoisted_17","_hoisted_18","_hoisted_20","_hoisted_21","_hoisted_22","_hoisted_24","_hoisted_26","_hoisted_27","_hoisted_28","_openBlock","_createElementBlock","_hoisted_1","_createElementVNode","_hoisted_2","_hoisted_5","_toDisplayString","_ctx","_hoisted_6","_createTextVNode","_hoisted_7","_hoisted_8","_cache","$data","$event","$options","_hoisted_13","_Fragment","_renderList","option","index","_hoisted_15","_hoisted_19","_hoisted_23","_normalizeClass","_hoisted_25","args","_hoisted_30"],"mappings":"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"}