{"version":3,"file":"DatasetDetailsCSVLinter.vue.mjs","sources":["../../lib/datasetDetails/DatasetDetailsCSVLinter.vue"],"sourcesContent":["<template>\n    <!-- CSV Linter -->\n    <div class=\"dsd-distribution-quality-csv row\" v-if=\"showValidation\">\n        <h4 class=\"col-12 mt-5 mb-3 font-weight-bold\">{{ csvLinter.title }}</h4>\n        <div class=\"col-12\">\n            <pv-banner>{{ csvLinter.banner }}</pv-banner>\n        </div>\n        <div class=\"col-7\">\n            <div class=\"p-3 csv-validation-box\"\n                :class=\"getValidationStatus(validation.passed)\">\n                <div class=\"row mt-2\">\n                    <div class=\"col-1 mt-4\">\n                        <i class=\"material-icons\" :class=\"getValidationStatus(validation.passed)\">\n                            {{ getValidationResultIcon(validation.passed) }}\n                        </i>\n                    </div>\n                    <div class=\"col-11\">\n                        <h5 class=\"font-weight-bold\">{{ csvLinter.validationTitle[validation.passed] }}</h5>\n                        <p>{{ csvLinter.validationDescription[validation.passed] }}</p>\n                    </div>\n                </div>\n            </div>\n        </div>\n        <div class=\"col-5\">\n            <table class=\"row mt-4\">\n                <tbody>\n                    <tr>\n                        <td class=\"col-12 text-center heading-1 color-red\">{{ validationCount['errors'] }}</td>\n                        <td class=\"col-12 text-center heading-1 color-orange\">{{ validationCount['warnings'] }}</td>\n                        <td class=\"col-12 text-center heading-1 color-blue\">{{ validationCount['infos'] }}</td>\n                    </tr>\n                    <tr>\n                        <td class=\"col-12 text-center heading-4 color-red\">{{ $tc('message.datasetDetails.quality.error', 2) }}</td>\n                        <td class=\"col-12 text-center heading-4 color-orange\">{{ $tc('message.datasetDetails.quality.warning', 2) }}</td>\n                        <td class=\"col-12 text-center heading-4 color-blue\">{{ $tc('message.datasetDetails.quality.message', 2) }}</td>\n                    </tr>\n                </tbody>\n            </table>\n        </div>\n        <span class=\"col-12 mt-3\">{{ $t('message.datasetDetails.quality.totalRows') }}: <strong>{{ validation.rowCount }}</strong></span>\n        <div class=\"col-12 csv-result-details\" :class=\"getBorderStyle(index)\" v-for=\"(csvResult, index) in displayedValidationResults\" :key=\"index\">\n            <div class=\"row\">\n                <div class=\"col-3\">\n                    <div class=\"my-4 px-5 tag\" :class=\"getBGStyle(csvResult.type)\">{{ csvResult.type }}</div>\n                </div>\n                <div class=\"col-9 mt-3\">\n                    <h5 class=\"font-weight-bold mt-1\">{{ csvResult.message_header }}</h5>\n                    <div>{{ csvResult.message }}</div>\n                    <div class=\"small\" v-if=\"csvResult.row > -1 && csvResult.column > -1\">\n                        {{ $t('message.datasetDetails.quality.row') }}: {{ csvResult.row }}, {{ $t('message.datasetDetails.quality.column') }}: {{ csvResult.column }}\n                    </div>\n                    <div class=\"small\" v-else-if=\"csvResult.row > -1 && csvResult.column === -1\">\n                        {{ $t('message.datasetDetails.quality.row') }}: {{ csvResult.row }}\n                    </div>\n                </div>\n            </div>\n        </div>\n        <div class=\"col-12\" v-if=\"showLimit\">\n            <pv-banner>{{ `${csvLinter.limit} ${validation.limit}` }}</pv-banner>\n        </div>\n        <pv-show-more class=\"col-12 text-primary mb-3 mt-5\"\n            v-if=\"useECMore\"\n            :label=\"csvLinter.displayAll ? $t('message.metadata.showLess') : $t('message.metadata.showMore')\"\n            :upArrow=\"csvLinter.displayAll\"\n            :action=\"() => toggleDisplayAll()\"></pv-show-more>\n    </div>\n</template>\n\n<script>\nimport { has, isNil } from 'lodash-es';\nimport ShowMore from \"../widgets/PvShowMore.vue\";\nimport PvBanner from \"../widgets/PvBanner.vue\";\n\nexport default {\n    name: 'datasetDetailsCSVLinter',\n    components: {\n        PvBanner,\n    },\n    props: ['validation'],\n    data() {\n        return {\n            csvLinter: {\n                title: this.$t('message.datasetDetails.quality.title'),\n                banner: this.$t('message.datasetDetails.quality.banner'),\n                limit: this.$t('message.datasetDetails.quality.limit'),\n                displayAll: this.$env.content.datasetDetails.quality.csvLinter.displayAll,\n                numberOfDisplayedValidationResults: this.$env.content.datasetDetails.quality.csvLinter.numberOfDisplayedValidationResults,\n                validationTitle: {\n                    true: this.$t('message.datasetDetails.quality.validationTitle.success'),\n                    false: this.$t('message.datasetDetails.quality.validationTitle.error'),\n                },\n                validationDescription: {\n                    true: this.$t('message.datasetDetails.quality.validationDescription.success'),\n                    false: this.$t('message.datasetDetails.quality.validationDescription.error'),\n                },\n            },\n        };\n    },\n    computed: {\n        showLimit() {\n            return has(this.validation, 'limit') && !isNil(this.validation.limit);\n        },\n        showValidation() {\n            return !isNil(this.validation)\n                && has(this.validation, 'passed')\n                && has(this.validation, 'errors')\n                && has(this.validation, 'warnings')\n                && has(this.validation, 'infos');\n        },\n        useECMore() {\n            return this.validationResults.length > this.csvLinter.numberOfDisplayedValidationResults;\n        },\n        displayedValidationResults() {\n            return this.csvLinter.displayAll\n                ? this.validationResults\n                : this.validationResults.slice(0, this.csvLinter.numberOfDisplayedValidationResults);\n        },\n        validationResults() {\n            let errors = has(this.validation.errors, 'items') ? this.validation.errors.items : [];\n            let warnings = has(this.validation.warnings, 'items') ? this.validation.warnings.items : [];\n            let infos = has(this.validation.infos, 'items') ? this.validation.infos.items : [];\n\n            errors.forEach(i => i.type = this.$tc('message.datasetDetails.quality.error', 1));\n            warnings.forEach(i => i.type = this.$tc('message.datasetDetails.quality.warning', 1));\n            infos.forEach(i => i.type = this.$tc('message.datasetDetails.quality.message', 1));\n\n            return errors.concat(warnings).concat(infos);\n        },\n        validationCount() {\n            let errors = has(this.validation.errors, 'count') ? this.validation.errors.count : 0;\n            let warnings = has(this.validation.warnings, 'count') ? this.validation.warnings.count : 0;\n            let infos = has(this.validation.infos, 'count') ? this.validation.infos.count : 0;\n\n            return {\n                errors,\n                warnings,\n                infos,\n            };\n        },\n    },\n    methods: {\n        has,\n        isNil,\n        toggleDisplayAll() {\n            this.csvLinter.displayAll = !this.csvLinter.displayAll;\n        },\n        getValidationResultIcon(status) {\n            return status === true ? 'check_circle'\n                : status === false ? 'disabled_by_default'\n                : 'info'\n        },\n        getValidationStatus(status) {\n            return status === true ? 'success'\n                : status === false ? 'error'\n                : 'info'\n        },\n        getBorderStyle(index) {\n            return index > 0\n                ? 'border-top'\n                : '';\n        },\n        getBGStyle(type) {\n            return type === 'Error' ? 'bg-red'\n                : type === 'Warning' ? 'bg-orange'\n                : type === 'Message' ? 'bg-blue'\n                : 'bg-white';\n        },\n    },\n};\n</script>\n\n<style lang=\"scss\" scoped>\n.dsd-distribution-quality-csv {\n    .heading {\n        &-1 {\n            font-size: 2rem;\n            font-weight: 700;\n        }\n\n        &-4 {\n            font-size: 1.25rem;\n            font-weight: 700;\n        }\n    }\n\n    .color {\n        &-red {\n            color: #DA2131;\n        }\n\n        &-orange {\n            color: #F29527;\n        }\n\n        &-blue {\n            color: #4073AF;\n        }\n    }\n\n    .bg {\n        &-red {\n            background-color: #DA2131;\n        }\n\n        &-orange {\n            background-color: #F29527;\n        }\n\n        &-blue {\n            background-color: #4073AF;\n        }\n    }\n\n    .csv-validation-box {\n        color: black;\n        background-color: #FFFFFF;\n        border: 2px solid #000000;\n\n        &.success {\n            border-color: #467A39;\n        }\n        &.error {\n            border-color: #DA2131;\n        }\n\n        .material-icons {\n            &.success {\n                color: #467A39;\n            }\n            &.error {\n                color: #DA2131;\n            }\n        }\n    }\n\n    .csv-result-details {\n\n        &.border {\n            &-top {\n                border-top: 1px solid #9F9F9F;\n            }\n        }\n\n        .tag {\n            display: inline-flex;\n            align-items: center;\n            color: #FFFFFF;\n            font-size: 1rem;\n            padding: 0.5rem 0.75rem;\n            border-radius: 1rem;\n            border-width: 0;\n            text-decoration: none;\n            box-sizing: border-box;\n            white-space: nowrap;\n        }\n    }\n}\n</style>\n"],"names":["_sfc_main","PvBanner","has","isNil","errors","warnings","infos","i","status","index","type","_hoisted_2","_hoisted_3","_hoisted_4","_hoisted_5","_hoisted_6","_hoisted_7","_hoisted_8","_hoisted_9","_hoisted_10","_hoisted_11","_hoisted_12","_hoisted_13","_hoisted_14","_hoisted_15","_hoisted_16","_hoisted_17","_hoisted_18","_hoisted_19","_hoisted_20","_hoisted_21","$options","_openBlock","_createElementBlock","_hoisted_1","_createElementVNode","_toDisplayString","$data","_createVNode","_component_pv_banner","_createTextVNode","$props","_ctx","_Fragment","_renderList","csvResult","_normalizeClass","_hoisted_22","_hoisted_23","_hoisted_24","_createBlock","_component_pv_show_more"],"mappings":"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"}