<script src="https://cdn.jsdelivr.net/npm/vue@2.x/dist/vue.js"></script>
<script src="https://cdn.jsdelivr.net/npm/vuetify@2.x/dist/vuetify.js"></script><link href="https://fonts.googleapis.com/css?family=Roboto:100,300,400,500,700,900" rel="stylesheet">
<link href="https://cdn.jsdelivr.net/npm/@mdi/font@4.x/css/materialdesignicons.min.css" rel="stylesheet">
<link href="https://cdn.jsdelivr.net/npm/vuetify@2.x/dist/vuetify.min.css" rel="stylesheet">
<template id="mainbox">
<v-card outlined >
<v-list-item three-line>
<v-list-item-content>
<div class="text-overline mb-4">
{{ title }}
</div>
<v-container>
<!-- -------------------------------------------------------------------------- -->
<v-divider></v-divider>
<!-- -------------------------------------------------------------------------- -->
<!-- TEST CODE -->
<!-- --------- -->
<v-col cols="12">
<v-btn color="primary" outlined @click="addRule()"> Add </v-btn>
</v-col>
<v-row v-for="(rule, index) in rules" :key="rule.id">
<v-col cols="4">
<v-select dense outlined item-text="name" :items="attributes" item-value="id" v-model="rule.attribute.id" label="Attribute"></v-select>
</v-col>
<v-col cols="4">
<v-combobox v-model="rule.operator" :items="operators" item-text="operator" item-value="id" label="Operator" outlined dense></v-combobox>
</v-col>
<v-col cols="4">
<v-text-field v-model="rule.value" :items="values" label="Value" multiple outlined dense></v-text-field>
</v-col>
</v-row>
<!-- -------------------------------------------------------------------------- -->
<v-divider></v-divider>
<!-- -------------------------------------------------------------------------- -->
<!-- LIVE VALUE -->
<!-- --------- -->
<v-alert
outlined
type="success"
text
>
<b>this.rules :</b> {{ rules }}
</v-alert>
</v-container>
</v-list-item-content>
</v-list-item>
</v-card>
</template>
<v-app id="app">
<!-- -------------------------------------------------------------------------- -->
<!-- TITLE -->
<!-- ----- -->
<mainbox title="$CODE_08" />
<!-- -------------------------------------------------------------------------- -->
</v-app>
<script type="text/javascript">
const mainbox = Vue.component('mainbox', {
template: '#mainbox',
props: { title: String },
data() {
return {
rules: [
{
attribute: {
name: 'Style name',
id: 3
},
operator: '=',
value: '123'
}
],
operators: ['=', '!='],
values: ['China', 'US', ' Thai'],
attributes : [ { "id": 1, "name": "Style name", "alias": null, "attribute": "STYLE_NAME", "category_id": 1, "data_type_id": 3, "data_type_name": "String" }, { "id": 2, "name": "Country", "alias": null, "attribute": "COUNTRY_NAME", "category_id": 2, "data_type_id": 3, "data_type_name": "String" }, { "id": 3, "name": "Serial number", "alias": null, "attribute": "scanstring", "category_id": 3, "data_type_id": 3, "data_type_name": "String" }, { "id": 4, "name": "Brand Name", "alias": null, "attribute": "BRAND_NAME", "category_id": 1, "data_type_id": 3, "data_type_name": "String" }, { "id": 5, "name": "Account/Customer Name", "alias": null, "attribute": "CUSTOMER_NAME", "category_id": 1, "data_type_id": 3, "data_type_name": "String" }, { "id": 6, "name": "Product UPC", "alias": null, "attribute": "PRODUCT_UPC", "category_id": 1, "data_type_id": 3, "data_type_name": "String" }, { "id": 7, "name": "Label batch", "alias": null, "attribute": "LABEL_HEADER_ID", "category_id": 3, "data_type_id": 1, "data_type_name": "Number" }, { "id": 8, "name": "Current time", "alias": null, "attribute": "time(convert_tz(now(),'UTC','${PARAM}'))", "category_id": 4, "data_type_id": 5, "data_type_name": "Time" } ]
}
},
methods: {
addRule() {
console.log('addRule clicked')
let rule = {
attribute: {
name: '',
id: 0
},
operator: '',
value: ''
}
// console.log('rule',rule)
// if(rule.attribute.name != '' && rule.operator != '' && rule.value != ''){
// this.rules.push(rule)
// }
this.rules.push(rule)
}
}
});
new Vue({ el:"#app", vuetify: new Vuetify(), components: { mainbox } });
</script>