define([ "require", "backbone", "hbs!tmpl/audit/CreateAuditTableLayoutView_tmpl", "utils/Enums", "utils/CommonViewFunction", "utils/Utils" ], function(require, Backbone, CreateAuditTableLayoutViewTmpl, Enums, CommonViewFunction, Utils) {
"use strict";
var CreateAuditTableLayoutView = Backbone.Marionette.LayoutView.extend({
_viewName: "CreateAuditTableLayoutView",
template: CreateAuditTableLayoutViewTmpl,
templateHelpers: function() {
return {
technicalPropPanelId: this.technicalPropId,
relationshipPropPanelId: this.relationshipPropId,
userdefinedPropPanelId: this.userDefinedPropId
};
},
regions: {},
ui: {
auditValue: "[data-id='auditValue']",
name: "[data-id='name']",
noData: "[data-id='noData']",
tableAudit: "[data-id='tableAudit']",
auditHeaderValue: "[data-id='auditHeaderValue']",
attributeDetails: "[data-id='attributeDetails']",
attributeCard: "[data-id='attribute-card']",
labelsDetailsTable: "[data-id='labelsDetails']",
labelCard: "[data-id='label-card']",
customAttributeDetails: "[data-id='customAttributeDetails']",
customAttrCard: "[data-id='custom-attr-card']",
relationShipAttributeDetails: "[data-id='relationShipAttributeDetails']",
relationshipAttrCard: "[data-id='relationship-attr-card']",
attributeDetailCard: "[data-id='attributeDetail-card']",
detailsAttribute: "[data-id='detailsAttribute']",
panelAttrHeading: "[data-id='panel-attr-heading']",
nameUpdate: "[data-id='name-update']"
},
events: function() {
var events = {};
return events;
},
initialize: function(options) {
_.extend(this, _.pick(options, "guid", "entityModel", "action", "entity", "entityName", "attributeDefs"));
var modelID = this.entityModel.cid || parseInt(100 * Math.random());
this.technicalPropId = this.getRandomID(modelID), this.relationshipPropId = this.getRandomID(modelID, this.technicalPropId),
this.userDefinedPropId = this.getRandomID(modelID, this.technicalPropId, this.userDefinedPropId);
},
bindEvents: function() {},
onRender: function() {
this.auditTableGenerate();
},
getRandomID: function(modelID, technicalPropId, relationshipPropId) {
var randomIdObj = CommonViewFunction.getRandomIdAndAnchor();
return randomIdObj.id = randomIdObj.id + modelID, randomIdObj.anchor = randomIdObj.anchor + modelID,
randomIdObj === technicalPropId || randomIdObj === relationshipPropId ? this.getRandomID(technicalPropId, relationshipPropId) : randomIdObj;
},
createTableWithValues: function(tableDetails) {
var attrTable = CommonViewFunction.propertyTable({
scope: this,
getValue: function(val, key) {
return key && key.toLowerCase().indexOf("time") > 0 ? Utils.formatDate({
date: val
}) : val;
},
valueObject: tableDetails
});
return attrTable;
},
updateName: function(name) {
this.ui.name.html("Name: " + name + "");
},
noDetailsShow: function() {
this.ui.noData.removeClass("hide");
},
auditTableGenerate: function() {
var that = this, detailObj = this.entityModel.get("details");
if (detailObj) if (detailObj.search(":") >= 0) {
var parseDetailsObject = detailObj.split(":"), type = "", auditData = "";
if (parseDetailsObject.length > 1 && (type = parseDetailsObject[0], parseDetailsObject.shift(),
auditData = parseDetailsObject.join(":")), auditData.search("{") === -1) "Added labels" === type.trim() || "Deleted labels" === type.trim() ? this.updateName(auditData.trim().split(" ").join(",")) : this.updateName(auditData); else try {
parseDetailsObject = JSON.parse(auditData);
var skipAttribute = parseDetailsObject.typeName ? "guid" : null, name = Utils.getName(parseDetailsObject, null, skipAttribute);
"-" == name && (name = _.escape(parseDetailsObject.typeName));
var name = name ? name : this.entityName;
if (that.updateName(name), parseDetailsObject) {
var attributesDetails = $.extend(!0, {}, parseDetailsObject.attributes), customAttr = parseDetailsObject.customAttributes, labelsDetails = parseDetailsObject.labels, relationshipAttributes = parseDetailsObject.relationshipAttributes, bmAttributesDeails = that.entity.businessAttributes ? that.entity.businessAttributes[parseDetailsObject.typeName] : null;
if (attributesDetails) {
bmAttributesDeails && _.each(Object.keys(attributesDetails), function(key) {
bmAttributesDeails[key].typeName.toLowerCase().indexOf("date") > -1 && (attributesDetails[key].length ? attributesDetails[key] = _.map(attributesDetails[key], function(dateValue) {
return Utils.formatDate({
date: dateValue
});
}) : attributesDetails[key] = Utils.formatDate({
date: attributesDetails[key]
}));
}), that.ui.attributeDetails.removeClass("hide"), that.action.indexOf("Classification") === -1 ? that.ui.panelAttrHeading.html("技术性能") : that.ui.panelAttrHeading.html("Properties ");
var attrTable = that.createTableWithValues(attributesDetails);
that.ui.attributeCard.html(attrTable);
}
if (!_.isEmpty(customAttr)) {
that.ui.customAttributeDetails.removeClass("hide");
var customAttrTable = that.createTableWithValues(customAttr);
that.ui.customAttrCard.html(customAttrTable);
}
if (!_.isEmpty(labelsDetails)) {
this.ui.labelsDetailsTable.removeClass("hide");
var labelsTable = "";
_.each(labelsDetails, function(value, key, list) {
labelsTable += "";
}), that.ui.labelCard.html(labelsTable);
}
if (!_.isEmpty(relationshipAttributes)) {
that.ui.relationShipAttributeDetails.removeClass("hide");
var relationshipAttrTable = that.createTableWithValues(relationshipAttributes);
that.ui.relationshipAttrCard.html(relationshipAttrTable);
}
if (!(attributesDetails || customAttr || labelsDetails || relationshipAttributes)) {
that.ui.detailsAttribute.removeClass("hide");
var attrDetailTable = that.createTableWithValues(parseDetailsObject);
that.ui.attributeDetailCard.html(attrDetailTable);
}
} else that.noDetailsShow();
} catch (err) {
if (_.isArray(parseDetailsObject)) var name = _.escape(parseDetailsObject[0]);
that.updateName(name), that.noDetailsShow();
}
} else "Deleted entity" != detailObj && "Purged entity" != detailObj || (this.entityName ? this.updateName(this.entityName) : this.ui.name.hide() && this.ui.noData.removeClass("hide"));
}
});
return CreateAuditTableLayoutView;
});