SmartIT_Extensions/BMC/smart-it-full-helix/scripts/app/pwa/pwa-rs-preview-directive.js

70 lines
3.7 KiB
JavaScript

"use strict";
/**
* Created by viktor.shevchenko on 7/15/15.
*/
(function () {
'use strict';
angular.module('resourceModule')
.directive('pwaRsPreview', ['events', 'relationModel', 'objectValueMapperService', 'utilityFunctions', '$sce',
function (events, relationModel, objectValueMapperService, utilityFunctions, $sce) {
return {
restrict: 'EA',
replace: true,
templateUrl: 'views/pwa/pwa-rs-preview.html',
scope: {
resourcePreviewItem: '=',
closeModal: '&'
},
link: function (scope, element, attr) {
scope.editMode = false;
scope.isTitleMultiline = false;
scope.$on(events.MULTILINE_CONTENT_CHANGED, function (event, data) {
scope.isTitleMultiline = data.isContentMultiline;
});
scope.$on(events.KNOWLEDGE_ARTICLE_PREVIEW_LOADED, function (event, data) {
scope.articleFlagged = data.article.flagged;
scope.currentArticle = data.article;
});
scope.$on(events.PWA_UPDATED_KNOWLEDGE, function (event, data) {
scope.resourcePreviewItem.showSaveToTicket = data.showSaveToTicket === 'true';
scope.resourcePreviewItem.showSaveAndResolve = data.showSaveAndResolve === 'true';
scope.resourcePreviewItem.showDeleteFromTicket = data.showDeleteFromTicket === 'true';
});
scope.$on(events.TICKET_PROFILE_RESEND_EVENT, function (event, resend) {
event.stopPropagation();
scope.$broadcast(resend.eventName, resend.eventData);
});
scope.saveAndResolve = function (ticketDetails) {
//send event to PV with Knowledge ID and close
var parcelData = { eventType: 'saveAndResolve', eventData: ticketDetails.data.id };
postMessageToPV(parcelData);
scope.closePreview();
};
scope.sendPVEvent = function (ticketDetails) {
//send event to PV with Knowledge ID
var parcelData = { eventType: ticketDetails.eventType, eventData: JSON.stringify({ guid: ticketDetails.data.id }) };
postMessageToPV(parcelData);
};
scope.setFlag = function (flag) {
if ((scope.currentArticle.accessMappings.flagEditAllowed && flag) || (scope.currentArticle.accessMappings.unflagEditAllowed && !flag)) {
scope.$broadcast(events.ADD_FLAG_NOTE, { flag: flag });
}
};
scope.closePreview = function () {
scope.closeModal();
};
function postMessageToPV(parcelData) {
var domain = localStorage.getItem('pwaDomain'), iframeContent = getPwaIFrame();
if (domain && iframeContent) {
utilityFunctions.windowPostMessage(iframeContent, parcelData, domain);
}
}
function getPwaIFrame() {
return document.getElementsByClassName('app__pwa-iframe') && document.getElementsByClassName('app__pwa-iframe').length ? document.getElementsByClassName('app__pwa-iframe')[0].contentWindow : null;
}
}
};
}
]);
})();