'use strict'; (function () { 'use strict'; angular.module('innovationStudio') .controller('StudioController', ['$scope', '$state', '$sce', '$rootScope', '$timeout', 'studioModel', function ($scope, $state, $sce, $rootScope, $timeout, studioModel) { var extendedUrl = '/helix/index.html#'; var studioBaseUrl = ''; var calendarStaticUrl = '/com.bmc.dsm.itsm-applications/iview/com.bmc.dsm.itsm-applications:Calendar'; var sharedConsoleStaticUrl = '/com.bmc.dsm.itsm-applications/iview/com.bmc.dsm.itsm-applications:IT%20Ticket%20Console%20SM'; var assetConsoleStaticUrl = '/com.bmc.dsm.itsm-applications/iview/com.bmc.dsm.itsm-applications:Asset%20Console%20SM'; if ($state.current.name === 'calendarStudio') { if (studioModel.ccsFetched) { if (studioModel.enableISCalendar && studioModel.baseUrlForIS) { studioBaseUrl = studioModel.baseUrlForIS; $rootScope.studioFrameUrl = $sce.trustAsResourceUrl(studioBaseUrl + extendedUrl + calendarStaticUrl + "?SmartIT_URL=" + studioModel.smartITUrl); setStudioFrameUrl($rootScope.studioFrameUrl); } else { $state.go('calendar'); } } else { studioModel.calendarEnabledPromise().then(function (enableISCalendar) { //Sample baseUrl format: http://..com:8008 studioBaseUrl = studioModel.baseUrlForIS; if (enableISCalendar && studioBaseUrl) { $rootScope.studioFrameUrl = $sce.trustAsResourceUrl(studioBaseUrl + extendedUrl + calendarStaticUrl + "?SmartIT_URL=" + studioModel.smartITUrl); setStudioFrameUrl($rootScope.studioFrameUrl); } else { $state.go('calendar'); } }); } } else if ($state.current.name === 'ticketConsoleStudio') { if (studioModel.ccsFetched) { if (studioModel.enableSharedConsole && studioModel.baseUrlForIS) { studioBaseUrl = studioModel.baseUrlForIS; $rootScope.studioFrameUrl = $sce.trustAsResourceUrl(studioBaseUrl + extendedUrl + sharedConsoleStaticUrl + "?SmartIT_URL=" + studioModel.smartITUrl); setStudioFrameUrl($rootScope.studioFrameUrl); } else { $state.go('ticketConsole'); } } else { studioModel.sharedConsoleEnabledPromise().then(function (enableSharedConsole) { //Sample baseUrl format: http://..com:8008 studioBaseUrl = studioModel.baseUrlForIS; if (enableSharedConsole && studioBaseUrl) { $rootScope.studioFrameUrl = $sce.trustAsResourceUrl(studioBaseUrl + extendedUrl + sharedConsoleStaticUrl + "?SmartIT_URL=" + studioModel.smartITUrl); setStudioFrameUrl($rootScope.studioFrameUrl); } else { $state.go('ticketConsole'); } }); } } else if ($state.current.name === 'assetConsoleStudio') { if (studioModel.ccsFetched) { if (studioModel.enableISAssetConsole && studioModel.baseUrlForIS) { studioBaseUrl = studioModel.baseUrlForIS; $rootScope.studioFrameUrl = $sce.trustAsResourceUrl(studioBaseUrl + extendedUrl + assetConsoleStaticUrl + "?SmartIT_URL=" + studioModel.smartITUrl); setStudioFrameUrl($rootScope.studioFrameUrl); } else { $state.go('assetConsole'); } } else { studioModel.assetConsoleEnabledPromise().then(function (enableISAssetConsole) { //Sample baseUrl format: http://..com:8008 studioBaseUrl = studioModel.baseUrlForIS; if (enableISAssetConsole && studioBaseUrl) { $rootScope.studioFrameUrl = $sce.trustAsResourceUrl(studioBaseUrl + extendedUrl + assetConsoleStaticUrl + "?SmartIT_URL=" + studioModel.smartITUrl); setStudioFrameUrl($rootScope.studioFrameUrl); } else { $state.go('assetConsole'); } }); } } function setStudioFrameUrl(studioFrameUrl) { var studioFrame = document.getElementsByClassName('app__studio-iframe'); console.info('Inside setStudioFrameUrl method - url : ' + studioFrameUrl); if (studioFrame && studioFrame.length !== 0) { if (studioFrameUrl) { setTimeout(function () { studioFrame[0].contentWindow.location.replace(studioFrameUrl); }); console.info('Inside setStudioFrameUrl method - location url changed'); } } else { console.error('Inside setStudioFrameUrl method : studio iframe not loaded'); } } $(document).on('focusout', function () { $timeout(function () { var navElement; // using the $timeout to let the event pass the run loop if (document.activeElement instanceof HTMLIFrameElement) { navElement = document.getElementsByClassName('open'); if (navElement.length) { var dropdownElement = navElement[0].getElementsByClassName('dropdown-toggle'); if (dropdownElement.length) { dropdownElement = dropdownElement[0]; dropdownElement.click(); } } else { navElement = document.getElementsByClassName('search__close'); if (navElement.length) { var closeButton = navElement[0]; closeButton.click(); } } } }, 0); }); }]); })();