in dashboardv3/public/js/views/search/QueryBuilderView.js [116:305]
getObjDef: function(attrObj, rules, isGroup, groupType, isSystemAttr) {
var that = this;
if (attrObj.name === "__classificationsText" || attrObj.name === "__historicalGuids") {
return;
}
var getLableWithType = function(label, name) {
if (name === "__classificationNames" || name === "__customAttributes" || name === "__labels" || name === "__propagatedClassificationNames") {
return label;
} else {
return label + " (" + attrObj.typeName + ")";
}
}
var label = (Enums.systemAttributes[attrObj.name] ? Enums.systemAttributes[attrObj.name] : _.escape(attrObj.name));
var obj = {
id: attrObj.name,
label: getLableWithType(label, attrObj.name),
plainLabel: label,
type: _.escape(attrObj.typeName),
validation: {
callback: function(value, rule) {
if (rule.operator.nb_inputs === false || !_.isEmpty(value) || !value instanceof Error) {
return true;
} else {
if (value instanceof Error) {
return value.message; // with params
} else {
return rule.filter.plainLabel + ' is required'; // with params
}
}
}
}
};
if (isGroup) {
obj.optgroup = groupType;
}
/* __isIncomplete / IsIncomplete */
if (isSystemAttr && attrObj.name === "__isIncomplete" || isSystemAttr && attrObj.name === "IsIncomplete") {
obj.type = "boolean";
obj.label = (Enums.systemAttributes[attrObj.name] ? Enums.systemAttributes[attrObj.name] : _.escape(attrObj.name.capitalize())) + " (boolean)";
obj['input'] = 'select';
obj['values'] = [{ 1: 'true' }, { 0: 'false' }];
_.extend(obj, this.getOperator("boolean"));
return obj;
}
/* Status / __state */
if (isSystemAttr && attrObj.name === "Status" || isSystemAttr && attrObj.name === "__state" || isSystemAttr && attrObj.name === "__entityStatus") {
obj.label = (Enums.systemAttributes[attrObj.name] ? Enums.systemAttributes[attrObj.name] : _.escape(attrObj.name.capitalize())) + " (enum)";
obj['input'] = 'select';
obj['values'] = ['ACTIVE', 'DELETED'];
_.extend(obj, this.getOperator("boolean", true));
return obj;
}
/* __classificationNames / __propagatedClassificationNames */
if (isSystemAttr && attrObj.name === "__classificationNames" || attrObj.name === "__propagatedClassificationNames") {
obj["plugin"] = "select2";
obj["input"] = 'select';
obj["plugin_config"] = {
placeholder: "Select classfication",
tags: true,
multiple: false,
data: this.classificationDefCollection.fullCollection.models.map(function(o) { return { "id": o.get("name"), "text": o.get("name") } })
};
obj["valueSetter"] = function(rule) {
if (rule && !_.isEmpty(rule.value)) {
var selectEl = rule.$el.find('.rule-value-container select')
var valFound = that.classificationDefCollection.fullCollection.find(function(o) {
return o.get("name") === rule.value
})
if (valFound) {
selectEl.val(rule.value).trigger("change");
} else {
var newOption = new Option(rule.value, rule.value, false, false);
selectEl.append(newOption).val(rule.value);
}
}
};
_.extend(obj, this.getOperator("string"));
return obj;
}
/* __customAttributes */
if (isSystemAttr && attrObj.name === "__customAttributes") {
obj["input"] = function(rule) {
return (rule && rule.operator && rule.operator.nb_inputs) ? that.getUserDefineInput() : null
}
obj["valueGetter"] = function(rule) {
if (rule && rule.operator && rule.operator.type === "contains") {
var $el = rule.$el.find('.rule-value-container'),
key = $el.find("[data-type='key']").val(),
val = $el.find("[data-type='value']").val();
if (!_.isEmpty(key) && !_.isEmpty(val)) {
return key + "=" + val;
} else {
return new Error("Key & Value is Required");
}
} else {
return [] // in CommonviewFunction.js value is set to "" for object;
}
}
obj["valueSetter"] = function(rule) {
if (rule && !rule.$el.hasClass("user-define")) {
rule.$el.addClass("user-define");
}
if (rule && rule.value && rule.value.length && !(rule.value instanceof Error)) {
var $el = rule.$el.find('.rule-value-container'),
value = rule.value.split("=");
if (value) {
$el.find("[data-type='key']").val(value[0]),
$el.find("[data-type='value']").val(value[1]);
}
}
}
obj.operators = ['contains', 'is_null', 'not_null'];
return obj;
}
/* __typeName */
if (isSystemAttr && attrObj.name === "__typeName") {
var entityType = [];
that.typeHeaders.fullCollection.each(function(model) {
if ((that.type == true && model.get('category') == 'ENTITY') || (that.tag == true && model.get('category') == "CLASSIFICATION")) {
entityType.push({
"id": model.get("name"),
"text": model.get("name")
})
}
});
obj["plugin"] = "select2";
obj["input"] = 'select';
obj["plugin_config"] = {
placeholder: "Select type",
tags: true,
multiple: false,
data: entityType
};
obj["valueSetter"] = function(rule) {
if (rule && !_.isEmpty(rule.value)) {
var selectEl = rule.$el.find('.rule-value-container select')
var valFound = that.typeHeaders.fullCollection.find(function(o) {
return o.get("name") === rule.value
})
if (valFound) {
selectEl.val(rule.value).trigger("change");
} else {
var newOption = new Option(rule.value, rule.value, false, false);
selectEl.append(newOption).val(rule.value);
}
}
};
_.extend(obj, this.getOperator("string"));
return obj;
}
if (obj.type === "date") {
obj['plugin'] = 'daterangepicker';
obj['plugin_config'] = this.getDateConfig(rules, obj.id);
_.extend(obj, this.getOperator(obj.type));
return obj;
}
if (this.isPrimitive(obj.type)) {
if (obj.type === "boolean") {
obj['input'] = 'select';
obj['values'] = ['true', 'false'];
}
_.extend(obj, this.getOperator(obj.type, false));
if (_.has(Enums.regex.RANGE_CHECK, obj.type)) {
obj.validation = {
min: Enums.regex.RANGE_CHECK[obj.type].min,
max: Enums.regex.RANGE_CHECK[obj.type].max
};
if (obj.type === "double" || obj.type === "float") {
obj.type = "double";
} else if (obj.type === "int" || obj.type === "byte" || obj.type === "short" || obj.type === "long") {
obj.type = "integer"
}
}
return obj;
}
var enumObj = this.enumDefCollection.fullCollection.find({ name: obj.type });
if (enumObj) {
obj.type = "string";
obj['input'] = 'select';
var value = [];
_.each(enumObj.get('elementDefs'), function(o) {
value.push(o.value)
})
obj['values'] = value;
_.extend(obj, this.getOperator('enum'));
return obj;
}
},