in dashboardv3/public/js/views/entity/CreateEntityLayoutView.js [665:831]
okButton: function() {
var that = this;
this.showLoader({
editVisiblityOfEntitySelectionBox: true
});
this.parentEntity = this.ui.entityList.val();
var entityAttribute = {},
referredEntities = {},
relationshipAttribute = {};
var extractValue = function(value, typeName) {
if (!value) {
return value;
}
if (_.isArray(value)) {
var parseData = [];
_.map(value, function(val) {
parseData.push({ 'guid': val, 'typeName': typeName });
});
} else {
var parseData = { 'guid': value, 'typeName': typeName };
}
return parseData;
}
try {
this.ui.entityInputData.find("input,select,textarea").each(function() {
var value = $(this).val(),
el = this;
if ($(this).val() && $(this).val().trim) {
value = $(this).val().trim();
}
if (this.nodeName === "TEXTAREA") {
try {
if (value && value.length) {
JSON.parse(value);
$(this).removeClass('errorClass');
}
} catch (err) {
throw new Error(err.message);
$(this).addClass('errorClass');
}
}
// validation
if ($(this).hasClass("true")) {
if (value == "" || value == undefined) {
if ($(this).data('select2')) {
$(this).data('select2').$container.find('.select2-selection').addClass("errorClass")
} else {
$(this).addClass('errorClass');
}
that.hideLoader();
that.modal.$el.find('button.ok').hideButtonLoader();
throw new Error("Please fill the required fields");
return;
}
}
var dataTypeEnitity = $(this).data('type'),
datakeyEntity = $(this).data('key'),
typeName = $(this).data('querydata'),
attribute = $(this).data('attribute') == 'undefined' ? false : true,
relation = $(this).data('relation') == 'undefined' ? false : true,
typeNameCategory = that.typeHeaders.fullCollection.findWhere({ name: dataTypeEnitity }),
val = null;
// Extract Data
if (dataTypeEnitity && datakeyEntity) {
if (that.entityDefCollection.fullCollection.find({ name: dataTypeEnitity })) {
val = extractValue(value, typeName);
} else if (dataTypeEnitity === 'date' || dataTypeEnitity === 'time') {
val = Date.parse(value);
} else if (dataTypeEnitity.indexOf("map") > -1 || (typeNameCategory && typeNameCategory.get('category') === 'STRUCT')) {
try {
if (value && value.length) {
parseData = JSON.parse(value);
val = parseData;
}
} catch (err) {
$(this).addClass('errorClass');
throw new Error(datakeyEntity + " : " + err.message);
return;
}
} else if (dataTypeEnitity.indexOf("array") > -1 && dataTypeEnitity.indexOf("string") === -1) {
val = extractValue(value, typeName);
} else {
if (_.isString(value)) {
if (value.length) {
val = value;
} else {
val = null;
}
} else {
val = value;
}
}
if (attribute) {
entityAttribute[datakeyEntity] = val;
} else if (relation) {
relationshipAttribute[datakeyEntity] = val;
}
} else {
var dataRelEntity = $(this).data('forKey');
if (dataRelEntity && relationshipAttribute[dataRelEntity]) {
if (_.isArray(relationshipAttribute[dataRelEntity])) {
_.each(relationshipAttribute[dataRelEntity], function(obj) {
if (obj) {
obj["relationshipType"] = $(el).val();
}
});
} else {
relationshipAttribute[dataRelEntity]["relationshipType"] = $(this).val();
}
}
}
});
var entityJson = {
"entity": {
"typeName": (this.guid ? this.entityData.get("entity").typeName : this.parentEntity),
"attributes": entityAttribute,
"relationshipAttributes": relationshipAttribute,
"guid": (this.guid ? this.guid : -1)
},
"referredEntities": referredEntities
};
this.entityModel.createOreditEntity({
data: JSON.stringify(entityJson),
type: "POST",
success: function(model, response) {
that.modal.$el.find('button.ok').hideButtonLoader();
that.modal.close();
var msgType = (model.mutatedEntities && model.mutatedEntities.UPDATE) ? "editSuccessMessage" : "addSuccessMessage";
Utils.notifySuccess({
content: "Entity" + Messages.getAbbreviationMsg(false, msgType)
});
if (that.guid && that.callback) {
that.callback();
} else {
if (that.searchVent) {
that.searchVent.trigger("Entity:Count:Update");
}
if (model.mutatedEntities) {
var mutatedEntities = model.mutatedEntities.CREATE || model.mutatedEntities.UPDATE;
if (mutatedEntities && _.isArray(mutatedEntities) && mutatedEntities[0] && mutatedEntities[0].guid) {
Utils.setUrl({
url: '#!/detailPage/' + (mutatedEntities[0].guid),
mergeBrowserUrl: false,
trigger: true
});
}
}
}
},
complete: function() {
that.hideLoader({
editVisiblityOfEntitySelectionBox: true
});
that.modal.$el.find('button.ok').hideButtonLoader();
}
});
} catch (e) {
Utils.notifyError({
content: e.message
});
that.hideLoader({
editVisiblityOfEntitySelectionBox: true
});
}
},