198 lines
8.5 KiB
JavaScript
198 lines
8.5 KiB
JavaScript
"use strict";
|
|
/**
|
|
* Created by viktor.shevchenko on 10/16/2014.
|
|
*/
|
|
(function () {
|
|
'use strict';
|
|
angular.module('ticketModule')
|
|
.directive('previewIncident', [function () {
|
|
return {
|
|
restrict: 'A',
|
|
templateUrl: 'views/ticket/incident-details-v2.html',
|
|
scope: {},
|
|
controller: 'PreviewTicketController',
|
|
link: function (scope, element, attr) {
|
|
attr.$observe('previewIncident', function (incidentId) {
|
|
scope.init(incidentId, EntityVO.TYPE_INCIDENT);
|
|
});
|
|
}
|
|
};
|
|
}])
|
|
.directive('previewWorkOrder', [function () {
|
|
return {
|
|
restrict: 'A',
|
|
templateUrl: 'views/ticket/workorder-details-v2.html',
|
|
scope: {},
|
|
controller: 'PreviewTicketController',
|
|
link: function (scope, element, attr) {
|
|
attr.$observe('previewWorkOrder', function (workOrderId) {
|
|
scope.init(workOrderId, EntityVO.TYPE_WORKORDER);
|
|
});
|
|
}
|
|
};
|
|
}])
|
|
.directive('previewTask', [function () {
|
|
return {
|
|
restrict: 'A',
|
|
templateUrl: 'views/ticket/task-details-v2.html',
|
|
scope: {},
|
|
controller: 'PreviewTicketController',
|
|
link: function (scope, element, attr) {
|
|
attr.$observe('previewTask', function (taskId) {
|
|
scope.init(taskId, EntityVO.TYPE_TASK);
|
|
});
|
|
}
|
|
};
|
|
}])
|
|
.directive('previewServiceRequest', [function () {
|
|
return {
|
|
restrict: 'A',
|
|
templateUrl: 'views/ticket/service-request-details.html',
|
|
scope: {},
|
|
controller: 'PreviewTicketController',
|
|
link: function (scope, element, attr) {
|
|
attr.$observe('previewServiceRequest', function (serviceRequestId) {
|
|
scope.init(serviceRequestId, EntityVO.TYPE_SERVICEREQUEST);
|
|
});
|
|
}
|
|
};
|
|
}])
|
|
.directive('previewSbeRequest', [function () {
|
|
return {
|
|
restrict: 'A',
|
|
templateUrl: 'views/ticket/sbe-request-details.html',
|
|
scope: {},
|
|
controller: 'PreviewTicketController',
|
|
link: function (scope, element, attr) {
|
|
attr.$observe('previewSbeRequest', function (sbeRequestId) {
|
|
scope.init(sbeRequestId, EntityVO.TYPE_SBEREQUEST);
|
|
});
|
|
}
|
|
};
|
|
}])
|
|
.directive('previewChangeRequest', [function () {
|
|
return {
|
|
restrict: 'A',
|
|
templateUrl: 'views/ticket/change-details-v2.html',
|
|
scope: {},
|
|
controller: 'PreviewTicketController',
|
|
link: function (scope, element, attr) {
|
|
attr.$observe('previewChangeRequest', function (changeRequestId) {
|
|
scope.init(changeRequestId, EntityVO.TYPE_CHANGE);
|
|
});
|
|
}
|
|
};
|
|
}])
|
|
.directive('previewRelease', [function () {
|
|
return {
|
|
restrict: 'A',
|
|
templateUrl: 'views/ticket/release-details.html',
|
|
scope: {},
|
|
controller: 'PreviewTicketController',
|
|
link: function (scope, element, attr) {
|
|
attr.$observe('previewRelease', function (releaseRequestId) {
|
|
scope.init(releaseRequestId, EntityVO.TYPE_RELEASE);
|
|
});
|
|
}
|
|
};
|
|
}])
|
|
.directive('previewActivity', [function () {
|
|
return {
|
|
restrict: 'A',
|
|
templateUrl: 'views/ticket/activity-details.html',
|
|
scope: {},
|
|
controller: 'PreviewTicketController',
|
|
link: function (scope, element, attr) {
|
|
attr.$observe('previewActivity', function (activityId) {
|
|
scope.init(activityId, EntityVO.TYPE_ACTIVITY);
|
|
});
|
|
}
|
|
};
|
|
}])
|
|
.directive('previewProblem', [function () {
|
|
return {
|
|
restrict: 'A',
|
|
templateUrl: 'views/ticket/problem-details.html',
|
|
scope: {},
|
|
controller: 'PreviewTicketController',
|
|
link: function (scope, element, attr) {
|
|
attr.$observe('previewProblem', function (problemId) {
|
|
scope.init(problemId, EntityVO.TYPE_PROBLEM);
|
|
});
|
|
}
|
|
};
|
|
}])
|
|
.directive('previewKnownError', [function () {
|
|
return {
|
|
restrict: 'A',
|
|
templateUrl: 'views/ticket/known-error-details.html',
|
|
scope: {},
|
|
controller: 'PreviewTicketController',
|
|
link: function (scope, element, attr) {
|
|
attr.$observe('previewKnownError', function (knownErrorId) {
|
|
scope.init(knownErrorId, EntityVO.TYPE_KNOWNERROR);
|
|
});
|
|
}
|
|
};
|
|
}])
|
|
.directive('previewTicketGeneric', ['$compile', function ($compile) {
|
|
return {
|
|
restrict: 'E',
|
|
template: '<div></div>',
|
|
scope: {
|
|
ticketType: '=',
|
|
ticketId: '=',
|
|
newTab: '=',
|
|
context: '=?'
|
|
},
|
|
link: function (scope, $elem) {
|
|
var injectedPreviewTicketTypes = [];
|
|
function getPreviewDirectiveByTicketType(type) {
|
|
var directiveName;
|
|
switch (type) {
|
|
case EntityVO.TYPE_INCIDENT:
|
|
directiveName = 'preview-incident';
|
|
break;
|
|
case EntityVO.TYPE_KNOWLEDGE:
|
|
directiveName = 'preview-knowledge-article';
|
|
break;
|
|
case EntityVO.TYPE_WORKORDER:
|
|
directiveName = 'preview-work-order';
|
|
break;
|
|
case EntityVO.TYPE_OUTAGE:
|
|
directiveName = 'preview-outage';
|
|
break;
|
|
case EntityVO.TYPE_KNOWNERROR:
|
|
directiveName = 'preview-known-error';
|
|
break;
|
|
case EntityVO.TYPE_PROBLEM:
|
|
directiveName = 'preview-problem';
|
|
break;
|
|
}
|
|
return directiveName;
|
|
}
|
|
function renderTicketPreview(type) {
|
|
var previewHTML = '<div is-full-version="false" class="resource-preview__container" ng-class="{\'resource-preview_incident\': ticketType === \'incident\', \'resource-preview_wo\': ticketType === \'workorder\'}"></div>';
|
|
var previewDirectiveName = getPreviewDirectiveByTicketType(type);
|
|
var previewElement = angular.element(previewHTML);
|
|
previewElement.attr(previewDirectiveName, '{{ticketId}}');
|
|
previewElement.attr('ng-if', 'ticketType === \'' + type + '\'');
|
|
if (scope.context && scope.context.type === EntityVO.TYPE_LIVE_CHAT) {
|
|
previewElement.attr('is-from-livechat', true);
|
|
}
|
|
var compiledPreviewElement = $compile(previewElement)(scope);
|
|
$elem.append(compiledPreviewElement);
|
|
injectedPreviewTicketTypes.push(type);
|
|
}
|
|
scope.$watch('ticketId', function (newVal) {
|
|
if (newVal) {
|
|
if (injectedPreviewTicketTypes.indexOf(scope.ticketType) === -1) {
|
|
renderTicketPreview(scope.ticketType);
|
|
}
|
|
}
|
|
});
|
|
}
|
|
};
|
|
}]);
|
|
}());
|