in dashboardv2/public/js/views/entity/CreateEntityLayoutView.js [483:609]
okButton: function() {
var that = this;
this.showLoader();
this.parentEntity = this.ui.entityList.val();
var entity = {};
var referredEntities = {};
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();
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();
throw new Error("Please fill the required fields");
return;
}
}
var dataTypeEnitity = $(this).data('type'),
datakeyEntity = $(this).data('key'),
typeName = $(this).data('querydata'),
typeNameCategory = that.typeHeaders.fullCollection.findWhere({ name: dataTypeEnitity });
// Extract Data
if (dataTypeEnitity && datakeyEntity) {
if (that.entityDefCollection.fullCollection.find({ name: dataTypeEnitity })) {
entity[datakeyEntity] = extractValue(value, typeName);
} else if (dataTypeEnitity === 'date' || dataTypeEnitity === 'time') {
entity[datakeyEntity] = Date.parse(value);
} else if (dataTypeEnitity.indexOf("map") > -1 || (typeNameCategory && typeNameCategory.get('category') === 'STRUCT')) {
try {
if (value && value.length) {
parseData = JSON.parse(value);
entity[datakeyEntity] = parseData;
}
} catch (err) {
$(this).addClass('errorClass');
throw new Error(datakeyEntity + " : " + err.message);
return;
}
} else if (dataTypeEnitity.indexOf("array") > -1 && dataTypeEnitity.indexOf("string") === -1) {
entity[datakeyEntity] = extractValue(value, typeName);
} else {
if (_.isString(value)) {
if (value.length) {
entity[datakeyEntity] = value;
} else {
entity[datakeyEntity] = null;
}
} else {
entity[datakeyEntity] = value;
}
}
}
});
var entityJson = {
"entity": {
"typeName": (this.guid ? this.entityData.get("entity").typeName : this.parentEntity),
"attributes": entity,
"guid": (this.guid ? this.guid : -1)
},
"referredEntities": referredEntities
};
this.entityModel.createOreditEntity({
data: JSON.stringify(entityJson),
type: "POST",
success: function(model, response) {
that.modal.close();
Utils.notifySuccess({
content: "entity " + Messages[that.guid ? 'editSuccessMessage' : 'addSuccessMessage']
});
if (that.guid && that.callback) {
that.callback();
} else {
if (model.mutatedEntities && model.mutatedEntities.CREATE && _.isArray(model.mutatedEntities.CREATE) && model.mutatedEntities.CREATE[0] && model.mutatedEntities.CREATE[0].guid) {
Utils.setUrl({
url: '#!/detailPage/' + (model.mutatedEntities.CREATE[0].guid),
mergeBrowserUrl: false,
trigger: true
});
}
}
},
complete: function() {
that.hideLoader();
}
});
} catch (e) {
Utils.notifyError({
content: e.message
});
that.hideLoader();
}
},