import _ from 'lodash'
export const connection = 'connection'
export const condition = 'condition'
export const columnType = {
fullText: 'fullText',
string: 'string',
long: 'long',
number: 'number',
array: 'array'
}
export const defaultOperatorList = ['=', '!=', '>', '<', '>=', '<=', 'IN', 'NOT IN', 'LIKE', 'NOT LIKE']
export const defaultConnectionList = [
{
value: 'AND',
label: 'AND'
},
value: 'OR',
label: 'OR'
]
export default class Meta {
// meta元数据有两种,一是condition,表示字段、操作符、值的组合,二是connection,是condition之间的连接符,AND | OR
constructor (type) {
switch (type) {
case connection: {
this.newConnection()
break
default: {
this.newCondition()
newConnection () {
this.meta = connection
this.value = 'AND'
this.isEditing = false
newCondition () {
this.meta = condition
this.column = {
name: '',
type: '', // fullText | string | long ...
label: '',
isEditing: false
this.operator = {
value: '',
isEditing: false,
show: false
this.value = {
isEmpty () {
if (this.meta === condition) {
return _.isEmpty(this.column.name)
} else {
return true
// 是否是完整的condition
isCompleteCondition () {
return (this.column.type === columnType.fullText)
? !_.isEmpty(this.column.name)
: !_.isEmpty(this.column.name) && !_.isEmpty(this.operator.value) && !_.isEmpty(this.value.value)
// 取消editing状态
cancelEditing () {
this.column.isEditing = false
this.operator.isEditing = false
this.value.isEditing = false
if (this.meta === connection) {