SmartIT_Extensions/BMC/smart-it-full-helix/scripts/app/service-request/fulfillment-map-directive.js

144 lines
7.0 KiB
JavaScript

"use strict";
/**
* Created by ygowtham on 6/11/2015.
*/
angular.module('serviceRequestModule')
.directive('fulfillmentMap', ['relationModel', '$state', 'configurationModel', 'systemAlertService', '$filter', function (relationModel, $state, configurationModel, systemAlertService, $filter) {
return {
restrict: 'E',
scope: {
context: '=',
isDraft: '='
},
link: function (scope) {
scope.state = {};
if (!scope.isDraft) {
scope.state.loadingLinkedResources = true;
relationModel.refreshRelations(scope.context.id, scope.context.ticketType).then(function (relations) {
scope.relatedTickets = _.filter(relations, { tag: RelationItemVO.TAG_LINKEDITEM });
scope.activeRelatedTickets = _.filter(scope.relatedTickets, function (item) {
item.isAppEnabled = configurationModel.isServerApplicationEnabled(item.type);
return scope.isfulfillmentActive(item);
});
scope.closedRelatedTickets = _.difference(scope.relatedTickets, scope.activeRelatedTickets);
}).finally(function () {
scope.state.loadingLinkedResources = false;
});
}
scope.showRelatedTicketDetails = function (relatedTicket) {
if (relatedTicket.type === EntityVO.TYPE_ASSET) {
var params = {
assetId: relatedTicket.id,
assetClassId: relatedTicket.additionalInformation.classId
};
$state.go(relatedTicket.realObject.processStepType, params);
}
else {
if (configurationModel.isServerApplicationEnabled(relatedTicket.type)) {
params = {
id: relatedTicket.id
};
$state.go(relatedTicket.realObject.processStepType, params);
}
else {
if (systemAlertService.alertStack.length) {
systemAlertService.dismissAllAlerts();
}
systemAlertService.warning({
text: $filter('i18n')('person.preview.notification.disabled.application'),
hide: 10000
});
}
}
};
/**
* Returns fully qualified class name.
* @returns {String}
*/
scope.fulfillmentStatusClass = function (relatedItem) {
var statusClass = '';
var itemStatus = relatedItem.realObject && relatedItem.realObject.processStepStatus || '';
switch (itemStatus) {
case 'In Progress':
statusClass = 'resource-slice__fulfillment-item_in-progress';
break;
case 'Pending':
statusClass = 'resource-slice__fulfillment-item_pending';
break;
case 'Planning':
statusClass = 'resource-slice__fulfillment-item_planning';
break;
case 'Activated':
statusClass = 'resource-slice__fulfillment-item_activated';
break;
case 'Completed':
statusClass = 'resource-slice__fulfillment-item_completed';
break;
case 'Cancelled':
statusClass = 'resource-slice__fulfillment-item_cancelled';
break;
case 'Error':
statusClass = 'resource-slice__fulfillment-item_error';
break;
default:
statusClass = '';
}
return statusClass;
};
/**
* Returns fully qualified class name.
* @returns {String}
*/
scope.fulfillmentIconClass = function (relatedItem) {
var iconClass = '';
var itemStatus = relatedItem.realObject && relatedItem.realObject.processStepStatus || '';
switch (itemStatus) {
case 'In Progress':
iconClass = 'icon-circle';
break;
case 'Pending':
case 'PENDING':
iconClass = 'icon-circle';
break;
case 'Planning':
case 'Activated':
case 'ACTIVE':
iconClass = 'icon-calendar';
break;
case 'Completed':
case 'COMPLETED':
iconClass = 'icon-check_circle';
break;
case 'Cancelled':
case 'CANCELLED':
iconClass = 'icon-cross_circle';
break;
case 'Error':
case 'FAILED':
iconClass = 'icon-alert_circle';
break;
default:
iconClass = '';
}
return iconClass;
};
/**
* Returns true if fulfillment is active.
* @returns {String}
*/
scope.isfulfillmentActive = function (relatedItem) {
if (relatedItem.realObject && relatedItem.realObject.returnCode && relatedItem.realObject.returnCode === 'error') {
relatedItem.realObject.processStepStatus = 'Error';
}
var itemStatus = relatedItem.realObject && relatedItem.realObject.processStepStatus || '';
var isActive = (itemStatus === 'In Progress' || itemStatus === 'Pending' || itemStatus === 'Planning' || itemStatus === 'Activated');
if (scope.context.type === 'sberequest' && !isActive) {
isActive = _.indexOf(['NEW', 'ACTIVE', 'SUSPENDED', 'PENDING', 'WAITING_FOR_APPROVAL', 'APPROVED'], itemStatus);
}
return isActive;
};
},
templateUrl: 'views/service-request/fulfillment-map.html'
};
}]);