define([ "require", "utils/Utils", "modules/Modal", "utils/Messages", "utils/Enums", "moment", "utils/Globals", "moment-timezone" ], function(require, Utils, Modal, Messages, Enums, moment, Globals) {
"use strict";
var CommonViewFunction = {};
return CommonViewFunction.deleteTag = function(options) {
require([ "models/VTag" ], function(VTag) {
if (options && options.guid && options.tagName) {
var tagModel = new VTag(), noticeRef = null, notifyObj = {
modal: !0,
okCloses: !1,
okShowLoader: !0,
text: options.msg,
title: options.titleMessage,
okText: options.okText,
ok: function(notice) {
noticeRef = notice, options.showLoader && options.showLoader(), tagModel.deleteAssociation(options.guid, options.tagName, options.associatedGuid, {
defaultErrorMessage: options.tagName + Messages.deleteErrorMessage,
success: function(data) {
noticeRef && noticeRef.remove(), Utils.notifySuccess({
content: "分类 " + options.tagName + Messages.getAbbreviationMsg(!1, "removeSuccessMessage")
}), options.callback && options.callback(), options.collection && options.collection.fetch({
reset: !0
});
},
cust_error: function(model, response) {
noticeRef && noticeRef.hideButtonLoader(), options.hideLoader && options.hideLoader();
}
});
},
cancel: function(argument) {
options.hideLoader && options.hideLoader();
}
};
Utils.notifyConfirm(notifyObj);
}
});
}, CommonViewFunction.propertyTable = function(options) {
var scope = options.scope, sortBy = options.sortBy, valueObject = options.valueObject, extractJSON = options.extractJSON, getArrayOfStringElement = options.getArrayOfStringElement, getArrayOfStringFormat = options.getArrayOfStringFormat, isTable = !!_.isUndefined(options.isTable) || options.isTable, attributeDefs = options.attributeDefs, formatIntVal = options.formatIntVal, showListCount = options.showListCount || !0, highlightString = options.highlightString, formatStringVal = options.formatStringVal, numberFormat = options.numberFormat || _.numberFormatWithComma, table = "", getHighlightedString = function(resultStr) {
if (!highlightString || !highlightString.length) return resultStr;
try {
return resultStr.replace(new RegExp(highlightString, "gi"), function(foundStr) {
return "" + foundStr + "";
});
} catch (error) {
return resultStr;
}
}, getEmptyString = function(key) {
return options.getEmptyString ? options.getEmptyString(key) : "N/A";
}, getValue = function(val, key) {
if (options && options.getValue && (val = options.getValue(val, key)), _.isUndefined(val) || _.isNull(val)) return getEmptyString(key);
if (!_.isNumber(val) && _.isNaN(parseInt(val)) || !formatIntVal) {
var newVal = val;
return formatStringVal && (newVal = parseInt(val), newVal = _.isNaN(newVal) ? val : numberFormat(newVal)),
getHighlightedString(_.escape(newVal));
}
return numberFormat(val);
}, fetchInputOutputValue = function(id, defEntity) {
scope.entityModel.getEntityHeader(id, {
success: function(serverData) {
var value = "", deleteButton = "", data = serverData;
value = Utils.getName(data);
var id = "";
data.guid && (Enums.entityStateReadOnly[data.status || data.entityStatus] && (deleteButton += ''),
id = data.guid), value.length > 0 ? scope.$('td div[data-id="' + id + '"]').html('' + getValue(value) + "") : scope.$('td div[data-id="' + id + '"]').html('' + _.escape(id) + ""),
deleteButton.length && (scope.$('td div[data-id="' + id + '"]').addClass("block readOnlyLink"),
scope.$('td div[data-id="' + id + '"]').append(deleteButton));
},
cust_error: function(error, xhr) {
403 == xhr.status ? scope.$('td div[data-id="' + id + '"]').html('
Not Authorized
') : defEntity && defEntity.options && "true" === defEntity.options.isSoftReference ? scope.$('td div[data-id="' + id + '"]').html(" " + id + "
") : scope.$('td div[data-id="' + id + '"]').html(' ' + Messages.defaultErrorMessage + "
");
},
complete: function() {}
});
}, extractObject = function(opt) {
var valueOfArray = [], keyValue = opt.keyValue, key = opt.key, defEntity = opt.defEntity;
!_.isArray(keyValue) && _.isObject(keyValue) && (keyValue = [ keyValue ]);
for (var subLink = "", i = 0; i < keyValue.length; i++) {
var inputOutputField = keyValue[i], id = inputOutputField.guid || (_.isObject(inputOutputField.id) ? inputOutputField.id.id : inputOutputField.id), tempLink = "", status = inputOutputField.status || inputOutputField.entityStatus || (_.isObject(inputOutputField.id) ? inputOutputField.id.state : inputOutputField.state), readOnly = Enums.entityStateReadOnly[status];
if (!inputOutputField.attributes && inputOutputField.values && (inputOutputField.attributes = inputOutputField.values),
_.isString(inputOutputField) || _.isBoolean(inputOutputField) || _.isNumber(inputOutputField)) {
var tempVarfor$check = inputOutputField.toString();
if (tempVarfor$check.indexOf("$") == -1) {
var tmpVal = getValue(inputOutputField, key);
getArrayOfStringElement ? valueOfArray.push(getArrayOfStringElement(tmpVal, key)) : valueOfArray.push('' + tmpVal + "");
}
} else if (_.isObject(inputOutputField) && !id) {
var attributesList = inputOutputField;
if (scope.typeHeaders && inputOutputField.typeName) {
var typeNameCategory = scope.typeHeaders.fullCollection.findWhere({
name: inputOutputField.typeName
});
attributesList.attributes && typeNameCategory && "STRUCT" === typeNameCategory.get("category") && (attributesList = attributesList.attributes);
}
if (extractJSON && extractJSON.extractKey) {
var newAttributesList = {};
_.each(attributesList, function(objValue, objKey) {
var value = _.isObject(objValue) ? objValue : _.escape(objValue), tempVarfor$check = objKey.toString();
tempVarfor$check.indexOf("$") == -1 && (_.isObject(extractJSON.extractKey) ? _.each(extractJSON.extractKey, function(extractKey) {
objKey === extractKey && (newAttributesList[_.escape(objKey)] = value);
}) : _.isString(extractJSON.extractKey) && extractJSON.extractKey === objKey && (newAttributesList[_.escape(objKey)] = value));
}), valueOfArray.push(Utils.JSONPrettyPrint(newAttributesList, getValue));
} else valueOfArray.push(Utils.JSONPrettyPrint(attributesList, getValue));
}
if (id && inputOutputField) {
var name = Utils.getName(inputOutputField);
if ("-" !== name && name !== id || inputOutputField.attributes) tempLink += "AtlasGlossaryTerm" == inputOutputField.typeName ? '' + name + "" : '' + name + ""; else {
var fetch = !0, fetchId = _.isObject(id) ? id.id : id;
fetchInputOutputValue(fetchId, defEntity), tempLink += '';
}
}
readOnly ? fetch ? (fetch = !1, subLink += tempLink) : (tempLink += '',
subLink += '' + tempLink + "
") : tempLink.search("href") != -1 ? subLink += "" + tempLink + "
" : tempLink.length && (subLink += tempLink);
}
return valueOfArray.length && (subLink = getArrayOfStringFormat ? getArrayOfStringFormat(valueOfArray, key) : valueOfArray.join(", ")),
"" === subLink ? getEmptyString(key) : subLink;
}, valueObjectKeysList = _.keys(valueObject);
return (_.isUndefined(sortBy) || 1 == sortBy) && (valueObjectKeysList = _.sortBy(valueObjectKeysList)),
valueObjectKeysList.map(function(key) {
if ("profileData" != key) {
var keyValue = valueObject[key], listCount = showListCount && _.isArray(keyValue) && keyValue.length > 0 ? " (" + numberFormat(keyValue.length) + ")" : "", defEntity = _.find(attributeDefs, {
name: key
});
if (defEntity && defEntity.typeName) {
var defEntityType = defEntity.typeName.toLocaleLowerCase();
"date" === defEntityType ? keyValue = keyValue > 0 ? Utils.formatDate({
date: keyValue
}) : null : _.isObject(keyValue) && (keyValue = extractObject({
keyValue: keyValue,
key: key,
defEntity: defEntity
}));
} else _.isObject(keyValue) && (keyValue = extractObject({
keyValue: keyValue,
key: key
}));
var val = "";
if (val = _.isObject(valueObject[key]) ? keyValue : "guid" === key || "__guid" === key ? options.guidHyperLink === !1 ? getValue(keyValue, key) : '' + getValue(keyValue, key) + "" : getValue(keyValue, key),
isTable) {
var value = val, appendClass = "N/A" == value ? "hide-row" : "", htmlTag = '' + value + "
";
if (_.isObject(valueObject[key]) && !_.isEmpty(valueObject[key])) {
var matchedLinkString = val.match(/href|value-loader\w*/g), matchedJson = val.match(/json-value|json-string\w*/g), isMatchJSONStringIsSingle = (val.match(/json-key\w*/g),
matchedLinkString && matchedLinkString.length <= 5, matchedJson && 1 == matchedJson.length), expandCollapseButton = "";
if (matchedJson || matchedLinkString) {
var className = "code-block fixed-height";
isMatchJSONStringIsSingle || (className += " shrink", expandCollapseButton = ''),
htmlTag = '' + expandCollapseButton + "" + val + "
";
}
}
table += '' + (_.escape(key) + listCount) + " | " + htmlTag + " |
";
} else table += "" + val + "";
}
}), table && table.length > 0 ? table : 'No Record found! |
';
}, CommonViewFunction.tagForTable = function(obj) {
var traits = obj.classifications, tagHtml = "", addTag = "", popTag = "", count = 0, entityName = Utils.getName(obj);
return traits && traits.map(function(tag) {
var className = "btn btn-action btn-sm btn-blue btn-icon", deleteIcon = "";
obj.guid === tag.entityGuid ? deleteIcon = '' : obj.guid !== tag.entityGuid && "DELETED" === tag.entityStatus ? deleteIcon = '' : className += " propagte-classification";
var tagString = '' + tag.typeName + "" + deleteIcon + "";
count >= 1 ? popTag += tagString : tagHtml += tagString, ++count;
}), Enums.entityStateReadOnly[obj.status || obj.entityStatus] || (addTag += obj.guid ? '' : ''),
count > 1 && (addTag += '
"),
'' + tagHtml + addTag + "
";
}, CommonViewFunction.termForTable = function(obj) {
var terms = obj.meanings, termHtml = "", addTerm = "", popTerm = "", count = 0, entityName = Utils.getName(obj);
return terms && terms.map(function(term) {
var displayText = _.escape(term.displayText), className = "btn btn-action btn-sm btn-blue btn-icon", deleteIcon = '', termString = '' + displayText + "" + deleteIcon + "";
count >= 1 ? popTerm += termString : termHtml += termString, ++count;
}), Enums.entityStateReadOnly[obj.status || obj.entityStatus] || (addTerm += obj.guid ? '' : ''),
count > 1 && (addTerm += '
"),
'' + termHtml + addTerm + "
";
}, CommonViewFunction.generateQueryOfFilter = function(value) {
function objToString(filterObj) {
var generatedQuery = _.map(filterObj.rules, function(obj, key) {
var obj = $.extend(!0, {}, obj);
return _.has(obj, "condition") ? ' ' + obj.condition + " (" + objToString(obj) + ")" : ("date" === obj.type && (Enums.queryBuilderDateRangeUIValueToAPI[obj.value] ? obj.value = Enums.queryBuilderDateRangeUIValueToAPI[obj.value] : obj.value = obj.value + " (" + moment.tz(moment.tz.guess()).zoneAbbr() + ")"),
'' + (Enums.systemAttributes[obj.id] ? Enums.systemAttributes[obj.id] : _.escape(obj.id)) + ' ' + _.escape(obj.operator) + ' ' + (Enums[obj.id] ? Enums[obj.id][obj.value] : _.escape(obj.value)) + "");
});
return generatedQuery;
}
value = Utils.getUrlState.getQueryParams();
var entityFilters = CommonViewFunction.attributeFilter.extractUrl({
value: value.entityFilters,
formatDate: !0
}), tagFilters = CommonViewFunction.attributeFilter.extractUrl({
value: value.tagFilters,
formatDate: !0
}), queryArray = [];
if (value.type) {
var typeKeyValue = '类型: ' + _.escape(value.type) + "";
if (entityFilters) {
var conditionForEntity = 1 == entityFilters.rules.length ? "" : "与";
typeKeyValue += ' ' + conditionForEntity + ' (' + entityFilters.condition + " (" + objToString(entityFilters) + "))";
}
queryArray.push(typeKeyValue);
}
if (value.tag) {
var tagKeyValue = '分类: ' + _.escape(value.tag) + "";
if (tagFilters) {
var conditionFortag = 1 == tagFilters.rules.length ? "" : "与";
tagKeyValue += ' ' + conditionFortag + ' (' + tagFilters.condition + " (" + objToString(tagFilters) + "))";
}
queryArray.push(tagKeyValue);
}
if (value.term) {
var tagKeyValue = '术语: ' + _.escape(value.term) + "";
queryArray.push(tagKeyValue);
}
return value.query && queryArray.push('查询语句: ' + _.trim(_.escape(value.query)) + " "),
1 == queryArray.length ? queryArray.join() : "( " + queryArray.join(" ) AND ( ") + " )";
}, CommonViewFunction.generateObjectForSaveSearchApi = function(options) {
var obj = {
name: options.name,
guid: options.guid
}, value = options.value;
if (value) return _.each(Enums.extractFromUrlForSearch, function(svalue, skey) {
_.isObject(svalue) ? _.each(svalue, function(v, k) {
var val = value[k];
_.isUndefinedNull(val) || ("attributes" == k ? val = val.split(",") : _.contains([ "tagFilters", "entityFilters" ], k) ? val = CommonViewFunction.attributeFilter.generateAPIObj(val) : _.contains([ "includeDE", "excludeST", "excludeSC" ], k) && (val = !val)),
_.contains([ "includeDE", "excludeST", "excludeSC" ], k) && (val = !!_.isUndefinedNull(val) || val),
obj[skey] || (obj[skey] = {}), obj[skey][v] = val;
}) : obj[skey] = value[skey];
}), obj;
}, CommonViewFunction.generateUrlFromSaveSearchObject = function(options) {
var value = options.value, classificationDefCollection = options.classificationDefCollection, entityDefCollection = options.entityDefCollection, obj = {};
if (value) return _.each(Enums.extractFromUrlForSearch, function(svalue, skey) {
_.isObject(svalue) ? _.each(svalue, function(v, k) {
var val = value[skey][v];
if (!_.isUndefinedNull(val)) if ("attributes" == k) val = val.join(","); else if ("tagFilters" == k) {
if (classificationDefCollection) {
var classificationDef = classificationDefCollection.fullCollection.findWhere({
name: value[skey].classification
}), attributeDefs = [];
classificationDef && (attributeDefs = Utils.getNestedSuperTypeObj({
collection: classificationDefCollection,
attrMerge: !0,
data: classificationDef.toJSON()
})), Globals[value[skey].typeName] && (attributeDefs = Globals[value[skey].typeName].attributeDefs),
Globals._ALL_CLASSIFICATION_TYPES && Globals._ALL_CLASSIFICATION_TYPES.attributeDefs && (attributeDefs = attributeDefs.concat(Globals._ALL_CLASSIFICATION_TYPES.attributeDefs));
}
val = CommonViewFunction.attributeFilter.generateUrl({
value: val,
attributeDefs: attributeDefs
});
} else if ("entityFilters" == k) {
if (entityDefCollection) {
var entityDef = entityDefCollection.fullCollection.findWhere({
name: value[skey].typeName
}), attributeDefs = [];
entityDef && (attributeDefs = Utils.getNestedSuperTypeObj({
collection: entityDefCollection,
attrMerge: !0,
data: entityDef.toJSON()
})), Globals[value[skey].typeName] && (attributeDefs = Globals[value[skey].typeName].attributeDefs),
Globals._ALL_ENTITY_TYPES && Globals._ALL_ENTITY_TYPES.attributeDefs && (attributeDefs = attributeDefs.concat(Globals._ALL_ENTITY_TYPES.attributeDefs));
}
val = CommonViewFunction.attributeFilter.generateUrl({
value: val,
attributeDefs: attributeDefs
});
} else _.contains([ "includeDE", "excludeST", "excludeSC" ], k) && (val = !val);
obj[k] = val;
}) : obj[skey] = value[skey];
}), obj;
}, CommonViewFunction.attributeFilter = {
generateUrl: function(options) {
function conditionalURl(options, spliter) {
return options ? _.map(options.rules || options.criterion, function(obj, key) {
if (_.has(obj, "condition")) return obj.condition + "(" + conditionalURl(obj, spliter + 1) + ")";
if (attributeDefs) {
var attributeDef = _.findWhere(attributeDefs, {
name: obj.attributeName
});
attributeDef && (obj.attributeValue = obj.attributeValue, obj.attributeType = attributeDef.typeName);
}
var type = obj.type || obj.attributeType, value = _.isString(obj.value) && _.contains([ "is_null", "not_null" ], obj.operator) && "date" === type || _.isObject(obj.value) ? "" : _.trim(obj.value || obj.attributeValue), url = [ obj.id || obj.attributeName, mapApiOperatorToUI(obj.operator), value ];
return "TIME_RANGE" === obj.operator ? value.indexOf("-") > -1 ? url[2] = value.split("-").map(function(udKey) {
return Date.parse(udKey.trim()).toString();
}).join(",") : url[2] = Enums.queryBuilderDateRangeUIValueToAPI[_.trim(value)] || value : value.length && "date" === type && formatedDateToLong && (url[2] = Date.parse(value)),
type && url.push(type), url.join("::");
}).join("|" + spliter + "|") : null;
}
function mapApiOperatorToUI(oper) {
return Enums.queryBuilderApiOperatorToUI[oper] || oper;
}
var attrQuery = [], attrObj = options.value, formatedDateToLong = options.formatedDateToLong, attributeDefs = options.attributeDefs, spliter = 1;
return attrQuery = conditionalURl(attrObj, spliter), attrQuery.length ? attrObj.condition + "(" + attrQuery + ")" : null;
},
extractUrl: function(options) {
var attrObj = {}, urlObj = options.value, formatDate = options.formatDate, spliter = 1, apiObj = options.apiObj, mapUiOperatorToAPI = function(oper) {
return Enums.queryBuilderUIOperatorToAPI[oper] || oper;
}, createObject = function(urlObj) {
var finalObj = {};
return finalObj.condition = /^AND\(/.test(urlObj) ? "AND" : "OR", urlObj = "AND" === finalObj.condition ? urlObj.substr(4).slice(0, -1) : urlObj.substr(3).slice(0, -1),
finalObj[apiObj ? "criterion" : "rules"] = _.map(urlObj.split("|" + spliter + "|"), function(obj, key) {
var isStringNested = obj.split("|" + (spliter + 1) + "|").length > 1, isCondition = /^AND\(/.test(obj) || /^OR\(/.test(obj);
if (isStringNested && isCondition) return ++spliter, createObject(obj);
if (isCondition) return createObject(obj);
var temp = obj.split("::") || obj.split("|" + spliter + "|"), rule = {};
return apiObj ? (rule = {
attributeName: temp[0],
operator: mapUiOperatorToAPI(temp[1]),
attributeValue: _.trim(temp[2])
}, rule.attributeValue = "date" === rule.type && formatDate && rule.attributeValue.length ? Utils.formatDate({
date: parseInt(rule.attributeValue),
zone: !1
}) : rule.attributeValue) : (rule = {
id: temp[0],
operator: temp[1],
value: _.trim(temp[2])
}, temp[3] && (rule.type = temp[3]), "TIME_RANGE" === rule.operator ? temp[2].indexOf(",") > -1 ? rule.value = temp[2].split(",").map(function(udKey) {
return Utils.formatDate({
date: parseInt(udKey.trim()),
zone: !1
});
}).join(" - ") : rule.value = Enums.queryBuilderDateRangeAPIValueToUI[_.trim(rule.value)] || rule.value : "date" === rule.type && formatDate && rule.value.length && (rule.value = Utils.formatDate({
date: parseInt(rule.value),
zone: !1
}))), rule;
}), finalObj;
};
return urlObj && urlObj.length ? attrObj = createObject(urlObj) : null;
},
generateAPIObj: function(url) {
return url && url.length ? this.extractUrl({
value: url,
apiObj: !0
}) : null;
}
}, CommonViewFunction.createEditGlossaryCategoryTerm = function(options) {
if (options) var model = options.model, isTermView = options.isTermView, isGlossaryView = options.isGlossaryView, collection = options.collection;
require([ "views/glossary/CreateEditCategoryTermLayoutView", "views/glossary/CreateEditGlossaryLayoutView", "modules/Modal" ], function(CreateEditCategoryTermLayoutView, CreateEditGlossaryLayoutView, Modal) {
var view = null, title = null;
isGlossaryView ? (view = new CreateEditGlossaryLayoutView({
glossaryCollection: collection,
model: model
}), title = "Glossary") : (view = new CreateEditCategoryTermLayoutView({
glossaryCollection: collection,
modelJSON: model
}), title = isTermView ? "Term" : "Category");
var modal = new Modal({
title: (model ? "Update " : "Create ") + title,
content: view,
cancelText: "Cancel",
okCloses: !1,
okText: model ? "Update" : "Create",
allowCancel: !0
}).open();
modal.$el.find("input[data-id=shortDescription]").on("input keydown", function(e) {
$(this).val($(this).val().replace(/\s+/g, " "));
}), modal.$el.find("button.ok").attr("disabled", "true"), modal.on("ok", function() {
modal.$el.find("button.ok").showButtonLoader(), CommonViewFunction.createEditGlossaryCategoryTermSubmit(_.extend({
ref: view,
modal: modal
}, options));
}), modal.on("closeModal", function() {
modal.trigger("cancel"), options.onModalClose && options.onModalClose();
});
});
}, CommonViewFunction.createEditGlossaryCategoryTermSubmit = function(options) {
if (options) var ref = options.ref, modal = options.modal, model = options.model, node = options.node, isTermView = options.isTermView, isCategoryView = options.isCategoryView, collection = options.collection, isGlossaryView = options.isGlossaryView, data = ref.ui[isGlossaryView ? "glossaryForm" : "categoryTermForm"].serializeArray().reduce(function(obj, item) {
return obj[item.name] = item.value.trim(), obj;
}, {}), newModel = new options.collection.model(), messageType = "Glossary ";
isTermView ? messageType = "Term " : isCategoryView && (messageType = "Category ");
var ajaxOptions = {
silent: !0,
success: function(rModel, response) {
var msgType = model ? "editSuccessMessage" : "addSuccessMessage";
Utils.notifySuccess({
content: messageType + ref.ui.name.val() + Messages.getAbbreviationMsg(!1, msgType)
}), options.callback && options.callback(rModel), modal.trigger("closeModal");
},
cust_error: function() {
modal.$el.find("button.ok").hideButtonLoader();
}
};
if (model) isGlossaryView ? model.clone().set(data, {
silent: !0
}).save(null, ajaxOptions) : newModel[isTermView ? "createEditTerm" : "createEditCategory"](_.extend(ajaxOptions, {
guid: model.guid,
data: JSON.stringify(_.extend({}, model, data))
})); else if (isGlossaryView) new collection.model().set(data).save(null, ajaxOptions); else {
if (node) {
data.anchor = {
glossaryGuid: node.glossaryId || node.guid,
displayText: node.glossaryName || node.text
}, "GlossaryCategory" == node.type && (data.parentCategory = {
categoryGuid: node.guid
});
}
newModel[isTermView ? "createEditTerm" : "createEditCategory"](_.extend(ajaxOptions, {
data: JSON.stringify(data)
}));
}
}, CommonViewFunction.removeCategoryTermAssociation = function(options) {
if (options) {
var selectedGuid = options.selectedGuid, termGuid = options.termGuid, isCategoryView = options.isCategoryView, isTermView = options.isTermView, isEntityView = options.isEntityView, model = (options.collection,
options.model), newModel = new options.collection.model(), noticeRef = null, ajaxOptions = {
success: function(rModel, response) {
noticeRef && noticeRef.remove(), Utils.notifySuccess({
content: (isCategoryView || isEntityView ? "Term" : "Category") + " association is removed successfully"
}), options.callback && options.callback();
},
cust_error: function() {
noticeRef && noticeRef.hideButtonLoader(), options.hideLoader && options.hideLoader();
}
}, notifyObj = {
modal: !0,
okCloses: !1,
okShowLoader: !0,
text: options.msg,
title: options.titleMessage,
okText: options.buttonText,
ok: function(notice) {
if (noticeRef = notice, options.showLoader && options.showLoader(), isEntityView && model) {
var data = [ model ];
newModel.removeTermFromEntity(termGuid, _.extend(ajaxOptions, {
data: JSON.stringify(data)
}));
} else {
var data = _.extend({}, model);
isTermView ? data.categories = _.reject(data.categories, function(term) {
return term.categoryGuid == selectedGuid;
}) : data.terms = _.reject(data.terms, function(term) {
return term.termGuid == selectedGuid;
}), newModel[isTermView ? "createEditTerm" : "createEditCategory"](_.extend(ajaxOptions, {
guid: model.guid,
data: JSON.stringify(_.extend({}, model, data))
}));
}
},
cancel: function() {}
};
Utils.notifyConfirm(notifyObj);
}
}, CommonViewFunction.addRestCsrfCustomHeader = function(xhr, settings) {
if (null != settings.url) {
var method = settings.type, csrfToken = CommonViewFunction.restCsrfValue;
null == CommonViewFunction.restCsrfCustomHeader || CommonViewFunction.restCsrfMethodsToIgnore[method] || xhr.setRequestHeader(CommonViewFunction.restCsrfCustomHeader, csrfToken);
}
}, CommonViewFunction.restCsrfCustomHeader = null, CommonViewFunction.restCsrfMethodsToIgnore = null,
CommonViewFunction.userDataFetch = function(options) {
function getTrimmedStringArrayValue(string) {
var str = string, array = [];
if (str) for (var splitStr = str.split(","), i = 0; i < splitStr.length; i++) array.push(splitStr[i].trim());
return array;
}
var csrfEnabled = !1, header = null, methods = [];
options.url && $.ajax({
url: options.url,
success: function(response) {
if (response) {
if (response["atlas.rest-csrf.enabled"]) {
var str = "" + response["atlas.rest-csrf.enabled"];
csrfEnabled = "true" == str.toLowerCase();
}
if (response["atlas.rest-csrf.custom-header"] && (header = response["atlas.rest-csrf.custom-header"].trim()),
response["atlas.rest-csrf.methods-to-ignore"] && (methods = getTrimmedStringArrayValue(response["atlas.rest-csrf.methods-to-ignore"])),
csrfEnabled) {
CommonViewFunction.restCsrfCustomHeader = header, CommonViewFunction.restCsrfMethodsToIgnore = {},
CommonViewFunction.restCsrfValue = response._csrfToken || '""', methods.map(function(method) {
CommonViewFunction.restCsrfMethodsToIgnore[method] = !0;
});
var statusCodeErrorFn = function(error) {
Utils.defaultErrorHandler(null, error);
};
Backbone.$.ajaxSetup({
statusCode: {
401: statusCodeErrorFn,
419: statusCodeErrorFn,
403: statusCodeErrorFn
},
beforeSend: CommonViewFunction.addRestCsrfCustomHeader
});
}
}
},
complete: function(response) {
options.callback && options.callback(response.responseJSON);
}
});
}, CommonViewFunction.CheckDuplicateAndEmptyInput = function(elements, datalist) {
for (var keyMap = new Map(), validation = !0, hasDup = [], i = 0; i < elements.length; i++) {
var input = elements[i], pEl = input.nextElementSibling, classes = "form-control", val = input.value.trim();
if (pEl.innerText = "", "" === val) validation = !1, pEl.innerText = "Required!"; else if (val.includes(":")) {
validation = !1;
var errorText = $(".errorMsg[data-id='charSupportMsg']").text();
errorText && 0 === errorText.length && (pEl.innerText = "These special character '(:)' are not supported.");
} else if ("INPUT" === input.tagName) {
var duplicates = datalist.filter(function(c) {
return c.key === val;
});
keyMap.has(val) || duplicates.length > 1 ? (classes = "form-control errorClass",
// hasDup.push("duplicate"), pEl.innerText = "Duplicate key") : keyMap.set(val, val);
hasDup.push("duplicate"), pEl.innerText = "重复的关键值") : keyMap.set(val, val);
}
validation === !1 && (classes = "form-control errorClass"), input.setAttribute("class", classes);
}
return {
validation: validation,
hasDuplicate: 0 !== hasDup.length
};
}, CommonViewFunction.getRandomIdAndAnchor = function() {
var randomId = "collapse_" + parseInt(100 * Math.random()) + "_" + new Date().getUTCMilliseconds();
return {
id: randomId,
anchor: "#" + randomId
};
}, CommonViewFunction.udKeysStringParser = function(udKeys) {
var o = {};
return _.each(udKeys.split(","), function(udKey) {
var ud = udKey.split(":");
o[ud[0]] = ud[1];
}), o;
}, CommonViewFunction.udKeysObjectToStringParser = function(udKeys) {
var list = _.map(udKeys, function(udKey) {
var t = udKey.key + ":" + udKey.value;
return t;
});
return list.join(",");
}, CommonViewFunction.fetchRootEntityAttributes = function(options) {
$.ajax({
url: options.url,
methods: "GET",
dataType: "json",
cache: !0,
success: function(response) {
response && _.each(options.entity, function(rootEntity) {
Globals[rootEntity] = $.extend(!0, {}, response, {
name: rootEntity,
guid: rootEntity
});
});
},
complete: function(response) {
options.callback && options.callback(response);
}
});
}, CommonViewFunction.fetchRootClassificationAttributes = function(options) {
$.ajax({
url: options.url,
methods: "GET",
dataType: "json",
cache: !0,
success: function(response) {
response && _.each(options.classification, function(rootClassification) {
Globals[rootClassification] = $.extend(!0, {}, response, {
name: rootClassification,
guid: rootClassification
});
});
},
complete: function(response) {
options.callback && options.callback(response);
}
});
}, CommonViewFunction;
});