SmartIT_Extensions/BMC/smart-it-full-helix/scripts/app/common/vo/metadata-vo.js

102 lines
3.1 KiB
JavaScript

"use strict";
/**
* Value object for metadata.
*
* @constructor
*/
function MetadataVO() {
this.impacts = [];
this.availableValueFields = {};
this.priorities = [];
this.urgencies = [];
this.metadatatype = '';
this.statuses = [];
this.types = [];
this.majorIncident = [];
this.documentTypes = [];
this.enableGainsight = false;
this.categories = [];
this.resCategories = [];
this.workinfoTypes = [];
this.primaryCapabilities = [];
this.visibilities = [];
this.timings = [];
this.timingReasons = [];
this.changeReasons = [];
this.languages = [];
this.riskLevels = [];
this.milestones = [];
this.reportedSources = [];
this.businessJustifications = [];
this.ootbMapping = {};
this.requiredOOTBObjectName = [];
this.configurationParameters = {};
this.investigationDrivers = [];
this.collisionStatuses = [];
this.rootCause = {};
this.viewAccesses = {};
this.assetTypes = [];
this.currencyFields = {};
this.depreciated = [];
this.systemConfigurations = {};
this.systemType = [];
this.virtualSystemType = [];
this.clientSensitivities = [];
this.clientTypes = [];
this.vip = [];
this.contactTypes = [];
this.consoleColumns = {};
this.useCognitive = false;
this.ootbFieldOptionsMapping = {
urgency: "urgencies",
priority: "priorities",
impact: "impacts",
status: "statuses",
serviceType: "types",
changeReason: "changeReasons"
};
this.applyCognitiveForCategorization = 'No';
this.callLogEventTypes = [];
this.contractTerms = [];
this.quickSearchHighlightedCols = [];
this.removeDateRestriction = [];
this.comaroundEnabled = false;
this.comaroundHostUrl = "";
}
// inherit BaseVO
MetadataVO.prototype = new BaseVO();
// correct the constructor pointer
MetadataVO.prototype.constructor = MetadataVO;
MetadataVO.prototype.getProps = function () {
var keys = Object.keys(new MetadataVO());
return BaseVO.prototype.getProps().concat(keys);
};
MetadataVO.prototype.postBuild = function () {
this.allCategories = this.categories.concat(this.resCategories);
_.forEach(this.allCategories, function (category) {
category.listOfTiersToShow = angular.copy(category.listOfTiersToShow).reverse();
});
//todo: remove when required OOTB fields feature is stable
if (this.metadatatype === 'broadcast' && this.requiredOOTBObjectName.length === 0) {
this.requiredOOTBObjectName.push('desc');
}
//Viktor: it is not a good practice to make this processing on a frontend, better to get correct structure from backend if possible
var expanded = true, workNoteSection;
_.forEach(this.workinfoTypes, function (item) {
if (item.type === 'section') {
item.options = [];
item.expanded = expanded;
workNoteSection = item;
if (expanded) {
expanded = false;
}
}
else {
if (workNoteSection) {
workNoteSection.options.push(item);
item.hasParentSection = true;
}
}
});
};