144 lines
7.0 KiB
JavaScript
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'
|
|
};
|
|
}]);
|