"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: '
', 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 = ''; 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); } } }); } }; }]); }());