dashboard/shell/components/Questions/Question.js

74 lines
1.6 KiB
JavaScript

import { _EDIT } from '@shell/config/query-params';
export default {
props: {
question: {
type: Object,
required: true,
},
mode: {
type: String,
default: _EDIT,
},
// targetNamespace: {
// type: String,
// required: true,
// },
value: {
type: null,
required: true,
},
disabled: {
type: Boolean,
default: false,
},
chartName: {
type: String,
default: ''
},
},
computed: {
displayLabel() {
const variable = this.question?.variable;
const displayLabel = this.$store.getters['i18n/withFallback'](`charts.${ this.chartName }."${ variable }".label`, null, '');
return displayLabel || this.question?.label || variable || '?';
},
showDescription() {
function normalize(str) {
return (str || '').toLowerCase().replace(/\s/g, '');
}
const desc = normalize(this.question?.description);
const label = normalize(this.question?.label);
return desc && desc !== label;
},
displayDescription() {
const variable = this.question?.variable;
return this.$store.getters['i18n/withFallback'](`charts.${ this.chartName }."${ variable }".description`, null, this.question?.description);
},
},
created() {
let def = this.question.default;
if ( this.question.type === 'boolean' && typeof def === 'string' ) {
def = def === 'true';
}
if ( this.value === undefined && def !== undefined ) {
this.$emit('input', def);
}
},
};