'use strict'; AIA.controller("DAController", ["$scope", "$rootScope", "$compile", "$http", "$log", "$location", "$timeout", "DA", "Modules", "$routeParams", "DataService", "TermService", "AIAConstants", "ModuleService","$interval","$q", function ($scope, $rootScope, $compile, $http, $log, $location, $timeout, DA, Modules, $routeParam, DataService, TermService, AIAConstants, ModuleService,$interval,$q) { $scope.ScopeVariablesDeclare = function () { // common field data $rootScope.path = "~/../content/images/speeachBubbleClose.png"; $rootScope.modestyCanvasZindex = 12100; $scope.CurrentStructure = "active"; $scope.IsSearchVisible; $scope.bodyViews = { 'Anterior': '1', 'Lateral': '2', 'Medial': '3', 'Posterior': '4', 'Lateral Arm': '5', 'Medial Arm': '6' } //array for bodyviewid correspoing to male female(used for gender change) $scope.correspondingBodyViewIds = { '1': '5', '2': '6', '3': '7', '4': '8', '9': '11', '10': '12', '5': '1', '6': '2', '7': '3', '8': '4', '11': '9', '12': '10', } //for transarency scale one time variable $scope.TBDrawStartX; $scope.TBDrawStartY; $scope.speechbubbleList = []; $scope.CommonData; $scope.BodyViewData; // This variable is used for unhighlight previously highlighted body portion, if multiAnnotation is false. $scope.machedIcolorInBodyRegion = []; $scope.runningWorkers = []; $scope.runningSearchWorkers = []; $scope.runningBodyViewWorkers = []; //common field data } $scope.initializeWindowData = function(windowviewid,isfirsttimecall,cbwindowid){ if(isfirsttimecall ||cbwindowid==0) { $rootScope.DaWindowData = []; $rootScope.DaWindowData.push( { 'multiwinid' : windowviewid, 'layerNumber': 0, 'voId': 0, 'genderId':0, 'currentViewTitle':'', 'parentSlugName': '', 'currentSlug':'', 'zoomInOut':75, 'TermNumberData':null, 'vocabTermDataArray': null, 'fullTermlist':[], 'isHighlightBodyWithCBTermData':false, 'CurriculumTermData':[], 'primaryLexiconInd':0, 'TermAnnotationText':[], 'AllTerms':[], 'actualTermNumber':0, 'prevId':0, 'isTransparencyActivated':false, 'isTransparencyBtnClicked':false, 'isListManagerSelected':false, 'isListManagerAlreadySelected':false, 'multiAnnotationIsON':false, 'isSearchClicked':false, 'isNormalMode':true, 'isExtract':false, 'isHighLight':false, 'isZoomed':false, 'isViewChange':false, 'isGenderChnage':false, 'isTBoxModestyVisible':false, 'speechBubbleCounter':0, 'TPspeechBubbleCounter':0, 'speachBubbleArrayAnnotation':[], 'UIWrapperZIndex':12000, 'systemNumber':0, 'NavigatorData':null, 'transNumber':100, 'layerInfoForModesty':[], 'BodySystemData':[], 'BodyLayerData':[], 'matchdedDataOnLayer':[], 'bgartData':[], 'BodyRegionData':[], 'BodyRegionCordinatesData':[], 'totalLayers':0, 'layerNumberBeforeTBDraw':0, 'PreviouslayerNumbr':0, 'currentLayerNumber':0, 'viewOrientationId':0, 'CanvasDivTopPosition':0, 'CanvasDivLeftPosition':0, 'isGlobalSettingChanged':false, 'isTBDrawnOnBodyRegion':false, 'previousHighlightList':[], 'MaskCanvasData':[], 'isModestyOn':true, 'curentEthnicity':'W', 'modestyImageInfo':[], 'ColoredImageSRC':[], 'isHighlightBodyByBodySystem':false, 'isbodySystemHighlight':false, 'grayedBR':[], 'coloredImageCanvasList':[], 'coloredImageMRCanvasList':[], 'whiteImageDataList':[], 'whiteImageMRDataList':[], 'grayImageDataList':[], 'grayImageMRDataList':[], 'updatedWhiteImageDataList':[], 'updatedWhiteImageMRDataList':[], 'updatedGrayDataList':[], 'updatedGrayMRDataList':[], }); } else { var isNewWindow=true; for (var k = 0; k < $rootScope.DaWindowData.length; k++) { if ($rootScope.DaWindowData[k].multiwinid == windowviewid) { isNewWindow=false; break; } } if(isNewWindow) { $rootScope.DaWindowData.push( { 'multiwinid' : windowviewid, 'layerNumber': 0, 'voId': 0, 'genderId':0, 'currentViewTitle':'', 'parentSlugName': '', 'currentSlug': '', 'zoomInOut':75, 'TermNumberData':null, 'vocabTermDataArray': null, 'fullTermlist':[], 'isHighlightBodyWithCBTermData':false, 'CurriculumTermData':[], 'primaryLexiconInd': 0, 'TermAnnotationText':null, 'AllTerms':[], 'actualTermNumber':0, 'prevId':0, 'isTransparencyActivated':false, 'isTransparencyBtnClicked':false, 'isListManagerSelected':false, 'isListManagerAlreadySelected':false, 'multiAnnotationIsON':false, 'isSearchClicked':false, 'isNormalMode':true, 'isExtract':false, 'isHighLight':false, 'isZoomed':false, 'isViewChange':false, 'isGenderChnage':false, 'isTBoxModestyVisible':false, 'speechBubbleCounter':0, 'TPspeechBubbleCounter':0, 'speachBubbleArrayAnnotation':[], 'UIWrapperZIndex':12000, 'systemNumber':0, 'NavigatorData':null, 'transNumber':100, 'layerInfoForModesty':[], 'BodySystemData':[], 'BodyLayerData':[], 'matchdedDataOnLayer':[], 'bgartData':[], 'BodyRegionData':[], 'BodyRegionCordinatesData':[], 'totalLayers':0, 'layerNumberBeforeTBDraw':0, 'PreviouslayerNumbr':0, 'currentLayerNumber':0, 'viewOrientationId':0, 'CanvasDivTopPosition':0, 'CanvasDivLeftPosition':0, 'isGlobalSettingChanged':false, 'isTBDrawnOnBodyRegion':false, 'previousHighlightList':[], 'MaskCanvasData':[], 'isModestyOn':true, 'curentEthnicity':'W', 'modestyImageInfo':[], 'ColoredImageSRC':[], 'isHighlightBodyByBodySystem':false, 'isbodySystemHighlight':false, 'grayedBR':[], 'coloredImageCanvasList':[], 'coloredImageMRCanvasList':[], 'whiteImageDataList':[], 'whiteImageMRDataList':[], 'grayImageDataList':[], 'grayImageMRDataList':[], 'updatedWhiteImageDataList':[], 'updatedWhiteImageMRDataList':[], 'updatedGrayDataList':[], 'updatedGrayMRDataList':[], }); } } } $scope.GetwindowStoreData=function(windowviewid,keyname) { for(var x=0 ;x < $rootScope.DaWindowData.length;x++){ if($rootScope.DaWindowData[x].multiwinid==windowviewid) { return $rootScope.DaWindowData[x][keyname]; } } } $scope.SetwindowStoreData=function(windowviewid,keyname,value) { for(var x=0 ;x < $rootScope.DaWindowData.length;x++){ if($rootScope.DaWindowData[x].multiwinid==windowviewid) { $rootScope.DaWindowData[x][keyname]=value; } } } $scope.setGenderNameById = function (BodyViewId,windowviewid) { if (BodyViewId == '1' | BodyViewId == '2' | BodyViewId == '3' | BodyViewId == '4' | BodyViewId == '9' | BodyViewId == '10') { $scope.SetwindowStoreData(windowviewid,'genderId','Male'); } else { $scope.SetwindowStoreData(windowviewid,'genderId','Female'); } } $scope.IsVisible = function () { $scope.scroll(); } $scope.scroll = function () { // $window.scrollTo(0, 0); $("html,body").scrollTop(0); //alert("scroll"); } $scope.setActiveview=function(windowviewid,viewtypename) { $('#Anterior_'+windowviewid).removeClass("active"); $('#Lateral_'+windowviewid).removeClass("active"); $('#Medial_'+windowviewid).removeClass("active"); $('#Posterior_'+windowviewid).removeClass("active"); $('#LateralArm_'+windowviewid).removeClass("active"); $('#MedialArm_'+windowviewid).removeClass("active"); if (viewtypename.match("Anterior")) { $('#Anterior_'+windowviewid).addClass('active'); } else if (viewtypename.match("Lateral Arm")) { $('#LateralArm_'+windowviewid).addClass('active'); } else if (viewtypename.match("Medial Arm")) { $('#MedialArm_'+windowviewid).addClass('active'); } else if (viewtypename.match("Lateral")) { $('#Lateral_'+windowviewid).addClass('active'); } else if (viewtypename.match("Medial")) { $('#Medial_'+windowviewid).addClass('active'); } else if (viewtypename.match("Posterior")) { $('#Posterior_'+windowviewid).addClass('active'); } } $scope.switchGender = function (windowviewid,viewtypename) { if (viewtypename.match("Male")) { $('#IdMale_'+windowviewid).addClass('active'); $('#IdFemale_'+windowviewid).removeClass("active"); } else if (viewtypename.match("Female")) { $('#IdMale_'+windowviewid).removeClass('active'); $('#IdFemale_'+windowviewid).addClass("active"); } } //get the DA body view list based on selected gender //get the DA body view list based on selected gender $scope.getDAViewList = function ($event) { var windowviewid=$rootScope.MULTI_VIEW_ID; if ($('#MainImage') != null) { $('#MainImage').remove(); } $("#bodyViewList").empty(); //for default load if ($event == null || $event == undefined) { // default set male $scope.SetwindowStoreData(windowviewid,'genderId','Male'); } else { $scope.SetwindowStoreData(windowviewid,'genderId',$event.currentTarget.id); } var selectedGender = $scope.GetwindowStoreData(windowviewid,'genderId'); if (selectedGender != null) { if (selectedGender == "Male") { $('#Male').addClass('active'); $('#Female').removeClass("active"); } else { $('#Female').addClass('active'); $('#Male').removeClass("active"); } } var selectedGenderBodyViewData = new jinqJs() .from( $scope.BodyViewData.BodyViews.view) .where('_gender == ' + selectedGender) .select(); if (selectedGenderBodyViewData != null || selectedGenderBodyViewData != undefined) { angular.forEach(selectedGenderBodyViewData, function (value, key) { var userEthnicity; var userModestysettings; var curentEthnicity = $rootScope.getLocalStorageValue("globalEthnicity"); if (typeof (curentEthnicity) !== "undefined" && curentEthnicity !== null) { userEthnicity = curentEthnicity; } else { userEthnicity = $rootScope.globalSetting.ethnicity; } $scope.SetwindowStoreData(windowviewid,'curentEthnicity',userEthnicity); var curentmodesty = $rootScope.getLocalStorageValue("globalModesty"); if (typeof (curentmodesty) !== "undefined" && curentmodesty !== null) { userModestysettings = curentmodesty; } else { userModestysettings = $rootScope.globalSetting.modesty; } if(curentmodesty=="Y") { $scope.SetwindowStoreData(windowviewid,'isModestyOn',true); } else { $scope.SetwindowStoreData(windowviewid,'isModestyOn',false); } //var userSelectedSkintone = 'W'; //$scope.userModestySetting = 'Y' var thumbnailImage; if ((value._id == 1) || (value._id == 3) || (value._id == 5) || (value._id == 6) || (value._id == 7) || (value._id == 11)) thumbnailImage = ((value._thumbnailImage).replace('.jpg', '_' + userEthnicity + userModestysettings)) + '.jpg'; else { thumbnailImage = ((value._thumbnailImage).replace('.jpg', '_' + userEthnicity)) + '.jpg'; } var zoomValue=$scope.GetwindowStoreData(windowviewid,'zoomInOut'); var imagePath = "~/../content/images/DA/" + zoomValue + "/body-views/" + value._id + '/skintone/' + userEthnicity + '/' + thumbnailImage; var $el = $('
' + '' + '

' + value._title + '

').appendTo('#bodyViewList'); $compile($el)($scope); $(".sidebar").mCustomScrollbar({ autoHideScrollbar: true, //theme:"rounded" }); }); } }; $scope.DisableUI = function () { //enable daBodyViewDiv which was disabled on thumbnail click so need not bother where to enable //as jspanel disable/enable is working for all features document.getElementById('daBodyview').style.pointerEvents = "auto"; document.getElementById('daBodyview').style.opacity = "1"; var daImagePanelConetent = document.getElementsByClassName("jsPanel-content"); for (var i = 0; i < daImagePanelConetent.length; i++) { daImagePanelConetent[i].style.pointerEvents = "none"; daImagePanelConetent[i].style.opacity = "0.5"; } //to disbale layer change slider /// $('.ui-slider').slider('disable'); // document.getElementById('txtlayerNumber').style.pointerEvents = "none"; // $("#" + $scope.txtLayerNumberID).prop('disabled', true); $rootScope.isLoading = true; $('#spinner').css('visibility', 'visible'); } $scope.EnableUI = function () { var daImagePanelConetent = document.getElementsByClassName("jsPanel-content"); for (var i = 0; i < daImagePanelConetent.length; i++) { daImagePanelConetent[i].style.pointerEvents = "auto"; daImagePanelConetent[i].style.opacity = "1"; } //to enable layer change slider // $('.ui-slider').slider('enable'); // document.getElementById('txtlayerNumber').style.pointerEvents = "auto"; // $("#" + $scope.txtLayerNumberID).prop('disabled', false); $rootScope.isLoading = false; $('#spinner').css('visibility', 'hidden'); } $scope.openView = function ($event) { $rootScope.disableAnnotationTB = false; $rootScope.MenuModuleName = "DA"; $rootScope.isLoading = true; $('#spinner').css('visibility', 'visible'); var u = $location.url(); if ($rootScope.isOpenResourceBtnClicked == true) { // $rootScope.MULTI_VIEW_ID = $rootScope.MULTI_VIEW_ID + 1; $rootScope.multiViewInfoIndex = 0; $rootScope.multiViewInfo.push({ "Target": $event.currentTarget, "id": $rootScope.MULTI_VIEW_ID, "bodyViewID": $event.currentTarget.id, "bodyName": $event.currentTarget.textContent }); // $rootScope.multiSearchData = []; localStorage.setItem("multiViewInfo", JSON.stringify($rootScope.multiViewInfo)); console.log($rootScope.multiViewInfo); $location.url('/curriculum-builder-detail'); } else { $scope.SetwindowStoreData($rootScope.MULTI_VIEW_ID,'currentViewTitle',$event.currentTarget.textContent); localStorage.setItem("currentBodyViewId", $event.currentTarget.id); $location.url('/da-body-view'); } $rootScope.isLoading = false; $('#spinner').css('visibility', 'hidden'); } //load json data for body view $scope.loadDissectibleAnatomyData = function () { // clear data set by curriculum builder $rootScope.isCallFromOtherModule = undefined; $rootScope.isOpenResourceBtnClicked = undefined; $rootScope.MULTI_VIEW_ID += 1 if ($rootScope.refreshcheck == null) { $location.path('/'); } $scope.ScopeVariablesDeclare(); $scope.initializeWindowData($rootScope.MULTI_VIEW_ID,true,undefined); //get current path var currentURL = $location.path(); var selectedModuleName = ''; angular.forEach($rootScope.userModules, function (value, key) { if (value.slug === currentURL.replace('/', '')) { selectedModuleName = value.name; $rootScope.currentActiveModuleTitle = selectedModuleName; } }) $rootScope.ClearIframe(); //load common data var commondataJsonPath = '~/../content/data/json/da/da_dat_common.json'; DataService.getAnotherJson(commondataJsonPath) .then( function (result) { $rootScope.CommonData = result; $http({ method: 'GET', url: '~/../content/data/json/da/da_dat_contentlist.json' }).success(function (data) { $scope.BodyViewData = data; $scope.getDAViewList(); }) .error(function (data, status, headers, config) { console.log(data); }); }, function (error) { console.log(error.statusText) } ) // $('#daLoaderLabel').css('visibility', 'hidden') $rootScope.isLoading = false; //push the details of open module in array $rootScope.openModules $rootScope.openModules.push({ "ModuleId": 1 }); } $scope.openBodyViewMain = function () { $scope.ScopeVariablesDeclare(); if ($rootScope.isCallFromOtherModule) { $scope.DAModuleData = ModuleService.getModuleData("DISSECTIBLE_ANATOMY"); $scope.counter=0; $scope.wincount=1; var winlen=$scope.DAModuleData.length; var timeint=null; timeint = $interval(function() { if($scope.wincount<=winlen && $rootScope.CBWindowLoadComplete==false && $scope.counter==0) { var windata=$scope.DAModuleData[$scope.wincount-1]; $scope.openBodyView(windata); if($scope.wincount==winlen) { $scope.stopInterval(); } } $scope.counter = $scope.counter + 1; if($rootScope.CBWindowLoadComplete==true) { $scope.wincount=$scope.wincount+1; $rootScope.CBWindowLoadComplete=false; $scope.counter=0; } }, 100); $scope.stopInterval = function() { if (angular.isDefined(timeint)) { $interval.cancel(timeint); timeint = undefined; } }; } else { $scope.openBodyView(null); } } //da-body-views functions $scope.openBodyView = function (damoduledata) { $scope.daOpenInOtherModules = damoduledata; if ($rootScope.isCallFromOtherModule != undefined) { $rootScope.MULTI_VIEW_ID += 1; $scope.initializeWindowData($rootScope.MULTI_VIEW_ID,false,$scope.daOpenInOtherModules.currentWindowId); } if ($rootScope.isCallFromOtherModule) { //$scope.daOpenInOtherModules = ModuleService.getModuleData("DISSECTIBLE_ANATOMY"); if ($scope.daOpenInOtherModules != undefined) { $scope.SetwindowStoreData($rootScope.MULTI_VIEW_ID,'voId',$scope.daOpenInOtherModules.currentBodyViewId); $scope.SetwindowStoreData($rootScope.MULTI_VIEW_ID,'currentViewTitle',$scope.daOpenInOtherModules.windowTitle); $scope.jsPanelID = 'daImagePanel' + '_' + $rootScope.MULTI_VIEW_ID; $scope.viewID = 'daViewDA_' + $rootScope.MULTI_VIEW_ID; console.log('$location.url = ' + $location.url()) // replace current modesty by CB jason var skinValue=$scope.daOpenInOtherModules.skinId; localStorage.setItem("globalEthnicity",skinValue ); $scope.SetwindowStoreData($rootScope.MULTI_VIEW_ID,'curentEthnicity',skinValue); // replace current modesty by CB jason var modestyValue=$scope.daOpenInOtherModules.isModestyOn; localStorage.setItem("globalModesty", modestyValue); if(modestyValue=="Y") { $scope.SetwindowStoreData($rootScope.MULTI_VIEW_ID,'isModestyOn',true); } else { $scope.SetwindowStoreData($rootScope.MULTI_VIEW_ID,'isModestyOn',false); } $scope.SetwindowStoreData($rootScope.MULTI_VIEW_ID,'zoomInOut',$scope.daOpenInOtherModules.zoom); //// one layer down as compare to current running on production $scope.SetwindowStoreData($rootScope.MULTI_VIEW_ID,'layerNumber',$scope.daOpenInOtherModules.layerNumber-1); $scope.SetwindowStoreData($rootScope.MULTI_VIEW_ID,'parentSlugName',($location.url()).replace('/', '')); //'clinical-illustrations'; // if ( $scope.BodyViewData == null || $scope.BodyViewData == undefined) { var commondataJsonPath = '~/../content/data/json/da/da_dat_common.json'; DataService.getAnotherJson(commondataJsonPath) .then( function (result) { $rootScope.CommonData = result; $http({ method: 'GET', url: '~/../content/data/json/da/da_dat_contentlist.json' }).success(function (data) { $scope.BodyViewData = data; $scope.loadBodyView($rootScope.MULTI_VIEW_ID); }) }) } else { $scope.loadBodyView($rootScope.MULTI_VIEW_ID); } } } else if ($rootScope.isOpenResourceBtnClicked == true) { $rootScope.MULTI_VIEW_ID = $rootScope.multiViewInfo[$rootScope.multiViewInfoIndex].id; $rootScope.multiViewCounter = $rootScope.MULTI_VIEW_ID; $scope.SetwindowStoreData($rootScope.MULTI_VIEW_ID,'voId',$rootScope.multiViewInfo[$rootScope.multiViewInfoIndex].bodyViewID); $scope.SetwindowStoreData($rootScope.MULTI_VIEW_ID,'currentViewTitle',$rootScope.multiViewInfo[$rootScope.multiViewInfoIndex].bodyName); $scope.jsPanelID = 'daImagePanel' + '_' + $rootScope.multiViewCounter; $scope.viewID = 'daViewDA' + '_' + $rootScope.multiViewCounter; console.log('$location.url = ' + $location.url()); $scope.SetwindowStoreData($rootScope.MULTI_VIEW_ID,'parentSlugName',($location.url()).replace('/', '')); //'clinical-illustrations'; // $scope.loadBodyView($rootScope.MULTI_VIEW_ID); } else { $scope.SetwindowStoreData($rootScope.MULTI_VIEW_ID,'voId',$rootScope.getLocalStorageValue("currentBodyViewId")); $scope.jsPanelID = 'daImagePanel' + '_' + $rootScope.MULTI_VIEW_ID; $scope.viewID = 'daViewDA' + '_' + $rootScope.MULTI_VIEW_ID; $scope.SetwindowStoreData($rootScope.MULTI_VIEW_ID,'parentSlugName','da-view-list'); $scope.loadBodyView($rootScope.MULTI_VIEW_ID); } } $scope.loadBodyView = function (windowviewid) { if (document.getElementById('daBodyview') != null) { document.getElementById('daBodyview').style.pointerEvents = "none"; document.getElementById('daBodyview').style.opacity = "0.5"; } //Check if browser 'REFRESHED' or 'RELOADED' if ($rootScope.CommonData != null) { //0. we will initially append container to load body //check if localstorage has any settings var curentEthnicity = $rootScope.getLocalStorageValue("globalEthnicity"); if (typeof (curentEthnicity) !== "undefined" && curentEthnicity !== null) { $rootScope.globalSetting.ethnicity = curentEthnicity; $scope.SetwindowStoreData(windowviewid,'curentEthnicity',curentEthnicity); } var curentmodesty = $rootScope.getLocalStorageValue("globalModesty"); if (typeof (curentmodesty) !== "undefined" && curentmodesty !== null) { $rootScope.globalSetting.modesty = curentmodesty } //0.1 var bodyViewId=$scope.GetwindowStoreData(windowviewid,'voId'); if (bodyViewId == null || bodyViewId == undefined) { // document.location = '/'; document.location = '/'; $rootScope.isVisibleLogin = true; } else { $rootScope.isVisibleLogin = false; $rootScope.loadSearchData(windowviewid); console.log('currentBodyViewId picked from localStorage: ' + bodyViewId); // set gender $scope.setGenderNameById(bodyViewId,windowviewid); var currentViewTitle = $scope.GetwindowStoreData(windowviewid,'currentViewTitle'); if ($rootScope.isOpenResourceBtnClicked == true) { $rootScope.jsPanelWidth = $(window).outerWidth() - 310; $rootScope.jsPanelHeight = $(window).outerHeight() - 110; $rootScope.jsPanelLeft = 302; } else if ($rootScope.isCallFromOtherModule) { // Birendra// // open JS panel for curriculum with define cornonate in CB jason $rootScope.jsPanelWidth = $scope.daOpenInOtherModules.size.width;//1000; $rootScope.jsPanelHeight = $scope.daOpenInOtherModules.size.height; $rootScope.jsPanelLeft = 320; $rootScope.jsPanelTop = $scope.daOpenInOtherModules.position.y;//650 } else { $rootScope.jsPanelWidth = $(window).outerWidth() - 10; $rootScope.jsPanelHeight = $(window).outerHeight() - 110; $rootScope.jsPanelLeft = 1; $rootScope.jsPanelTop = 70; } $.jsPanel({ id: $scope.jsPanelID, selector: '.daBodyView', theme: 'success', currentController: 'DAController', parentSlug:$scope.GetwindowStoreData(windowviewid,'parentSlugName'), ajax: { url: 'app/views/da/da-view.html' }, title: currentViewTitle, position: { top: $rootScope.jsPanelTop, left: $rootScope.jsPanelLeft, }, size: { width: $rootScope.jsPanelWidth, height: $rootScope.jsPanelHeight }, }); //0.1 //$rootScope.currentSlug = 'da-body-view'; $scope.SetwindowStoreData(windowviewid, 'currentSlug', 'da-body-view'); //0.2 $rootScope.openViews.push( { "module": $rootScope.currentActiveModuleTitle, "bodyView": currentViewTitle, "state": 'max', "BodyViewId": bodyViewId, "slug": $scope.GetwindowStoreData(windowviewid, 'currentSlug') } ); //0.3 var daBodyviewElement = angular.element(document.getElementById("daBodyview")); $timeout(function () { $compile(daBodyviewElement.contents())($scope); //set ids $scope.daViewID = "daView"; $scope.btnIdentifyID = "btnIdentify"; $scope.btnZoomID = "btnZoom"; $scope.btnTranparencyID = "btnTranparency"; $scope.btnNormalModeID = "btnNormalMode"; $scope.btnExtractID = "btnExtract"; $scope.btnHighLightID = "btnHighLight"; $scope.dropdownMenu4ID = "dropdownMenu4"; $scope.genderChangeID = "genderChangeId"; $scope.structureDropdownID = "structureDropdown"; $scope.viewID = "daView"; $scope.viewChangeID = "viewChangeID"; $scope.btnStrutureBoxID = "btnStrutureBox"; $scope.typedTermNameID = "typedTermName"; $scope.searchListDivID = "searchListDiv"; $scope.btnDATermSearchID = "btnDATermSearch"; $scope.navigatorBtnID = "navigatorBtn"; $scope.transparencyScaleID = "transparencyScale"; $scope.btnTBoxCloseID = "btnTBoxClose"; $scope.canvasDivID = "canvasDiv"; $scope.canvasPaintID = "canvasPaint" $scope.canvasID = "canvas"; $scope.dropdownMenu3ID = "dropdownMenu3"; $scope.dropdownMenu2ID = "dropdownMenu2"; $scope.navigatorDivID = "navigatorDiv"; $scope.navDivID = "navDiv"; $scope.navimgID = "navimg"; $scope.draggableID = "draggable"; $scope.txtLayerNumberID = "txtlayerNumber"; $scope.layerChangeSliderID = "layerChangeSlider"; $scope.leftToolBarID = "leftToolBar"; $scope.zoomValueID = "zoomValue"; $scope.searchedTermListPopUpID = "searchedTermListPopUp"; $scope.searchTermListUlId = "searchTermListUl" $scope.btnSearchListId = "btnSearchList"; $scope.tbSliderId = "tbSlider"; $scope.IdMale = "IdMale"; $scope.IdFemale = "IdFemale"; //if ($rootScope.isOpenResourceBtnClicked || $rootScope.isCallFromOtherModule) { $scope.setControlIDs(); // use for isOpenResourceBtnClicked // $scope.setScopeVariables(); // } $scope.NavigatorDraggable(windowviewid) $scope.loadbtnNavigator(windowviewid); // set slider control $scope.Setslider(windowviewid); $scope.TbSelSlider(windowviewid); $scope.loadView(windowviewid); var viewtitlename=$scope.GetwindowStoreData(windowviewid,'currentViewTitle'); $scope.switchGender(windowviewid,viewtitlename); $scope.setActiveview(windowviewid,viewtitlename); // console.log('html is compiled ' + document.getElementById('daView')) if ($('#' + $scope.jsPanelID).offset().top == 0) $('#' + $scope.jsPanelID).css("top", '70px'); if ($('#' + $scope.jsPanelID).offset().left == 0) $('#' + $scope.jsPanelID).css("left", '1px'); }, 350); } } else { //for now we are redirecting user to index page on page refresh because on refresh we lost the rootscope data and some of application //features stopped working which were depenedent of rootscope data like List manager, annotation toolbar, settings, usermodule list, etc. $location.path('/'); } } // we are loading most of alll data used in DA by this function so that at the time of any functionality delay in data laod will not happened. $scope.loadView = function (windowviewid) { var bodyViewId=$scope.GetwindowStoreData(windowviewid,'voId'); if (document.getElementById('daViewDA_'+windowviewid) != null) { $scope.loadDAView(bodyViewId, windowviewid); } else if (document.getElementById("daViewDA_" + windowviewid) != null) { $scope.loadDAView(bodyViewId, windowviewid); } else { // this is a work around solution for a bug where DA does not load for long and user need to close the DA partially opened // view, now we are programmatically closing the hung view and when user will reopen the DA view from tile then it will // open without any issue. var jsPanelCloseBtnID = $scope.jsPanelID + " " + ".jsglyph-remove" $("#" + jsPanelCloseBtnID).click(); // console.log('html is compiled in else ' + document.getElementById('daView')) } } $scope.loadDAView = function (currentBodyViewId, windowviewid) { //0.4 added some stylesheets $('#daBodyview').css("height", (parseInt($(window).outerHeight()) - 62 - 20)); $('#daBodyview').css("width", $(window).outerWidth()); if ($rootScope.isOpenResourceBtnClicked) { //var multiv = JSON.parse($rootScope.getLocalStorageValue("multiViewInfo")); } else $scope.SetwindowStoreData(windowviewid,'voId',currentBodyViewId); //1. load navigator man first console.log('before LoadBodyViewNavigatorImage call') $scope.LoadBodyViewNavigatorImage(currentBodyViewId, windowviewid); //2. console.log('currentBodyViewId just before sending: ' + currentBodyViewId); $scope.loadBodyViewData(currentBodyViewId, windowviewid); $scope.GetBodySystemData(currentBodyViewId,windowviewid); //2. load bodyRegion data $rootScope.isLoading = true; } $scope.loadbtnNavigator = function (windowviewid) { $("#navigatorBtn_" + windowviewid).on('click', function () { $("#navigatorDiv_" + windowviewid).toggle(); }); } $scope.NavigatorDraggable=function(windowviewid) { $("#navDiv_"+windowviewid).addClass("containment-wrapper-"+windowviewid); // issue in navigator image in internet explorer if ($.browser.msie == true) { $("#navigatorDiv_"+windowviewid).css({"min-width":"auto", "min-height":"auto"}); $(".containment-wrapper-"+windowviewid).css("min-width", "auto"); } $("#transparencyScale_"+windowviewid).draggable(); $("#draggable_"+windowviewid).draggable({ containment: ".containment-wrapper-"+windowviewid, scroll: false }); } $scope.Setslider = function (windowviewid) { $("#layerChangeSliderDA_" + windowviewid).slider({ orientation: "vertical", range: "max", min: 0, value: 0, slide: function (event, ui) { var targetid = event.target.id; var windviewid = targetid.split('_')[1]; var layerNum = $scope.GetwindowStoreData(windviewid,'totalLayers'); var sliderVal = layerNum - ui.value; $("#txtLayerNumberDA_" + windviewid).val(sliderVal); }, stop: function (event, ui) { var targetid = event.target.id; var windviewid = targetid.split('_')[1]; var la; var rootScope = angular.element(document.getElementById("bo")).scope(); rootScope.$apply(function () { rootScope.isLoading = true; }) var scope = angular.element(document.getElementsByClassName("daBodyView")).scope(); scope.$apply(function () { if ($scope.GetwindowStoreData(windviewid,'isTransparencyActivated')) { rootScope.isLoading = false; } la =$scope.GetwindowStoreData(windviewid,'totalLayers'); var slideVal = la - ui.value; $("#txtLayerNumberDA_" + windviewid).val(slideVal); $scope.SetwindowStoreData(windviewid,'layerNumber',slideVal); scope.LayerChange(windviewid); $("#annotationpaintbrushsize").removeClass("activebtncolor"); $("#annotationpainteraser").removeClass("activebtncolor"); }); }, }); } $scope.TbSelSlider = function (windowviewid) { $("#tbSlider_" + windowviewid).slider({ min: 0, max: 100, value: 50, range: "min", orientation: "horizontal", // change: function (event, ui) { // var targetid = event.target.id; // var windviewid = targetid.split('_')[1]; // var scope = angular.element(document.getElementById("daViewDA_" + windviewid)).scope(); // scope.$apply(function () { // scope.onTransparencyChange(event, ui); // }); // } // , stop: function (event, ui) { var targetid = event.target.id; var windviewid = targetid.split('_')[1]; var scope = angular.element(document.getElementById("daViewDA_" + windviewid)).scope(); scope.$apply(function () { scope.onTransparencyChange(event, ui); }); } }) .slider("pips", { rest: "label", step: "10" }); } $scope.setControlIDs = function () { //if ($rootScope.isOpenResourceBtnClicked == true || $rootScope.isCallFromOtherModule == true) { $("#daView").attr("id", "daViewDA_" + $rootScope.MULTI_VIEW_ID); $scope.daViewID = "daViewDA_" + $rootScope.MULTI_VIEW_ID; $("#navigatorDiv").attr("id", "navigatorDiv_" + $rootScope.MULTI_VIEW_ID); $scope.navigatorDivID = "navigatorDiv_" + $rootScope.MULTI_VIEW_ID; $("#navDiv").attr("id", "navDiv_" + $rootScope.MULTI_VIEW_ID); $scope.navDivID = "navDiv_" + $rootScope.MULTI_VIEW_ID; $("#navimg").attr("id", "navimg_" + $rootScope.MULTI_VIEW_ID); $scope.navimgID = "navimg_" + $rootScope.MULTI_VIEW_ID; $("#txtlayerNumber").attr("id", "txtLayerNumberDA_" + $rootScope.MULTI_VIEW_ID); $scope.txtLayerNumberID = "txtLayerNumberDA_" + $rootScope.MULTI_VIEW_ID; $("#layerChangeSlider").attr("id", "layerChangeSliderDA_" + $rootScope.MULTI_VIEW_ID); $scope.layerChangeSliderID = "layerChangeSliderDA_" + $rootScope.MULTI_VIEW_ID; $("#canvasDiv").attr("id", "canvasDivDA_" + $rootScope.MULTI_VIEW_ID); $scope.canvasDivID = "canvasDivDA_" + $rootScope.MULTI_VIEW_ID; $("#canvas").attr("id", "canvasDA_" + $rootScope.MULTI_VIEW_ID); $scope.canvasID = "canvasDA_" + $rootScope.MULTI_VIEW_ID; $("#canvasPaint").attr("id", "canvasPaintDA_" + $rootScope.MULTI_VIEW_ID); $scope.canvasPaintID = "canvasPaintDA_" + $rootScope.MULTI_VIEW_ID; $("#btnIdentify").attr("id", "btnIdentify_" + $rootScope.MULTI_VIEW_ID); $scope.btnIdentifyID = "btnIdentify_" + $rootScope.MULTI_VIEW_ID; $("#btnZoom").attr("id", "btnZoom_" + $rootScope.MULTI_VIEW_ID); $scope.btnZoomID = "btnZoom_" + $rootScope.MULTI_VIEW_ID; $("#zoomValue").attr("id", "zoomValueDA_" + $rootScope.MULTI_VIEW_ID); $scope.zoomValueID = "zoomValueDA_" + $rootScope.MULTI_VIEW_ID; $("#btnTranparency").attr("id", "btnTranparency_" + $rootScope.MULTI_VIEW_ID); $scope.btnTranparencyID = "btnTranparency_" + $rootScope.MULTI_VIEW_ID; $("#btnNormalMode").attr("id", "btnNormalMode_" + $rootScope.MULTI_VIEW_ID); $scope.btnNormalModeID = "btnNormalMode_" + $rootScope.MULTI_VIEW_ID; $("#btnExtract").attr("id", "btnExtract_" + $rootScope.MULTI_VIEW_ID); $scope.btnExtractID = "btnExtract_" + $rootScope.MULTI_VIEW_ID; $("#btnHighLight").attr("id", "btnHighLight_" + $rootScope.MULTI_VIEW_ID); $scope.btnHighLightID = "btnHighLight_" + $rootScope.MULTI_VIEW_ID; $("#genderChangeId").attr("id", "genderChangeIdDA_" + $rootScope.MULTI_VIEW_ID); $scope.genderChangeID = "genderChangeIdDA_" + $rootScope.MULTI_VIEW_ID; $("#dropdownMenu4").attr("id", "dropdownMenu4_" + $rootScope.MULTI_VIEW_ID); //$scope.dropdownMenu4ID = "dropdownMenu4_" + $rootScope.MULTI_VIEW_ID; $("#structureDropdown").attr("id", "structureDropdownDA_" + $rootScope.MULTI_VIEW_ID); $scope.structureDropdownID = "structureDropdownDA_" + $rootScope.MULTI_VIEW_ID; $("#viewChangeID").attr("id", "viewChangeIDDA_" + $rootScope.MULTI_VIEW_ID); $scope.viewChangeID = "viewChangeIDDA_" + $rootScope.MULTI_VIEW_ID; $("#btnStrutureBox").attr("id", "btnStrutureBox_" + $rootScope.MULTI_VIEW_ID); $scope.btnStrutureBoxID = "btnStrutureBox_" + $rootScope.MULTI_VIEW_ID; $("#typedTermName").attr("id", "typedTermName_" + $rootScope.MULTI_VIEW_ID); $scope.typedTermNameID = "typedTermName_" + $rootScope.MULTI_VIEW_ID; $("#da-input").attr("id", "da-input_" + $rootScope.MULTI_VIEW_ID); $("#searchListDiv").attr("id", "searchListDiv_" + $rootScope.MULTI_VIEW_ID); $scope.searchListDivID = "searchListDiv_" + $rootScope.MULTI_VIEW_ID; $("#btnDATermSearch").attr("id", "btnDATermSearch_" + $rootScope.MULTI_VIEW_ID); $("#navigatorBtn").attr("id", "navigatorBtn_" + $rootScope.MULTI_VIEW_ID); $scope.navigatorBtnID = "navigatorBtn_" + $rootScope.MULTI_VIEW_ID; $("#transparencyScale").attr("id", "transparencyScale_" + $rootScope.MULTI_VIEW_ID); $scope.transparencyScaleID = "transparencyScale_" + $rootScope.MULTI_VIEW_ID; $("#btnTBoxClose").attr("id", "btnTBoxClose_" + $rootScope.MULTI_VIEW_ID); $scope.btnTBoxCloseID = "btnTBoxClose_" + $rootScope.MULTI_VIEW_ID; $('body').find('#daBodyview').find("#canvasDiv").attr("id", "canvasDivDA_" + $rootScope.MULTI_VIEW_ID); $("#dropdownMenu3").attr("id", "dropdownMenu3_" + $rootScope.MULTI_VIEW_ID); $("#dropdownMenu2").attr("id", "dropdownMenu2_" + $rootScope.MULTI_VIEW_ID); $("#draggable").attr("id", "draggable_" + $rootScope.MULTI_VIEW_ID); $scope.draggableID = "draggable_" + $rootScope.MULTI_VIEW_ID; $("#leftToolBar").attr("id", "leftToolBarDA_" + $rootScope.MULTI_VIEW_ID); $("#searchedTermListPopUp").attr("id", "searchedTermListPopUp_" + $rootScope.MULTI_VIEW_ID); $scope.searchedTermListPopUpID = "searchedTermListPopUp_" + $rootScope.MULTI_VIEW_ID; $("#searchTermListUl").attr("id", "searchTermListUl_" + $rootScope.MULTI_VIEW_ID); $scope.searchTermListUlId = "searchTermListUl_" + $rootScope.MULTI_VIEW_ID; $("#btnSearchList").attr("id", "btnSearchList_" + $rootScope.MULTI_VIEW_ID); $("#tbSlider").attr("id", "tbSlider_" + $rootScope.MULTI_VIEW_ID); $("#IdMale").attr("id", "IdMale_" + $rootScope.MULTI_VIEW_ID); $("#IdFemale").attr("id", "IdFemale_" + $rootScope.MULTI_VIEW_ID); $("#Anterior").attr("id", "Anterior_" + $rootScope.MULTI_VIEW_ID); $("#Lateral").attr("id", "Lateral_" + $rootScope.MULTI_VIEW_ID); $("#Medial").attr("id", "Medial_" + $rootScope.MULTI_VIEW_ID); $("#Posterior").attr("id", "Posterior_" + $rootScope.MULTI_VIEW_ID); $("#LateralArm").attr("id", "LateralArm_" + $rootScope.MULTI_VIEW_ID); $("#MedialArm").attr("id", "MedialArm_" + $rootScope.MULTI_VIEW_ID); var $all = $("#da-input_" + $rootScope.MULTI_VIEW_ID).prepend('') $compile($all)($scope); } $scope.setScopeVariables = function () { $scope.daViewID = "daViewDA_" + $rootScope.multiViewCounter; $scope.btnIdentifyID = "btnIdentify_" + $rootScope.multiViewCounter; $scope.btnZoomID = "btnZoom_" + $rootScope.multiViewCounter; $scope.btnTranparencyID = "btnTranparency_" + $rootScope.multiViewCounter; $scope.btnNormalModeID = "btnNormalMode_" + $rootScope.multiViewCounter; $scope.btnExtractID = "btnExtract_" + $rootScope.multiViewCounter; $scope.btnHighLightID = "btnHighLight_" + $rootScope.multiViewCounter; $scope.genderChangeID = "genderChangeId_" + $rootScope.multiViewCounter; $scope.structureDropdownID = "structureDropdown_" + $rootScope.multiViewCounter; $scope.viewID = "daViewDA_" + $rootScope.multiViewCounter; $scope.btnStrutureBoxID = "btnStrutureBox_" + $rootScope.multiViewCounter; $scope.typedTermNameID = "typedTermName_" + $rootScope.multiViewCounter; $scope.searchListDivID = "searchListDiv_" + $rootScope.multiViewCounter; $scope.btnDATermSearchID = "btnDATermSearch_" + $rootScope.multiViewCounter; $scope.navigatorBtnID = "navigatorBtn_" + $rootScope.multiViewCounter; $scope.transparencyScaleID = "transparencyScale_" + $rootScope.multiViewCounter; $scope.btnTBoxCloseID = "btnTBoxClose_" + $rootScope.multiViewCounter; $scope.canvasDivID = "canvasDivDA_" + $rootScope.multiViewCounter; $scope.dropdownMenu3ID = "dropdownMenu3_" + $rootScope.multiViewCounter; $scope.dropdownMenu2ID = "dropdownMenu2_" + $rootScope.multiViewCounter; $scope.navigatorDivID = "navigatorDiv_" + $rootScope.multiViewCounter; $scope.navDivID = "navDiv_" + $rootScope.multiViewCounter; $scope.navimgID = "navimg_" + $rootScope.multiViewCounter; $scope.draggableID = "draggable_" + $rootScope.multiViewCounter; $scope.txtLayerNumberID = "txtLayerNumberDA_" + $rootScope.multiViewCounter; $scope.layerChangeSliderID = "layerChangeSliderDA_" + $rootScope.multiViewCounter; $scope.leftToolBarID = "leftToolBarDA_" + $rootScope.multiViewCounter; // $scope.transparencyScaleID = "transparencyScaleDA_" + $rootScope.multiViewCounter; $scope.canvasPaintID = "canvasPaintDA_" + $rootScope.multiViewCounter; $scope.canvasID = "canvasDA_" + $rootScope.multiViewCounter; $scope.zoomValueID = "zoomValueDA_" + $rootScope.multiViewCounter; $scope.jsPanelID = 'daImagePanel_' + $rootScope.multiViewCounter ////set default zoom value; if (!$scope.GetwindowStoreData(windowviewid,'isViewChange')) { var viewDataFromMultiViewInfo = new jinqJs() .from($rootScope.multiViewInfo) .where('id == ' + $rootScope.multiViewCounter) .select(); $scope.SetwindowStoreData($rootScope.MULTI_VIEW_ID,'voId',viewDataFromMultiViewInfo[0].bodyViewID); $scope.SetwindowStoreData(windowviewid,'viewOrientationId',$scope.GetwindowStoreData($rootScope.MULTI_VIEW_ID,'voId')); $scope.setViewOrientationId($rootScope.MULTI_VIEW_ID); $scope.viewID = 'daViewDA' + '_' + $rootScope.multiViewCounter; // $scope.loadView(); } } angular.element(document).ready(function (e) { var $ua = navigator.userAgent; // var $event = ($ua.match(/(iPod|iPhone|iPad|android)/i)); if (($ua.match(/(iPod|iPhone|iPad|android)/i))) { $("#layerChangeSlider").css("pointer-events", "auto"); } //to get slider working on ipad var $ua = navigator.userAgent; if (($ua.match(/(iPod|iPhone|iPad|android)/i))) { var jspanelContainerWidth = $(".jsPanel-content").css("width"); $(".jsPanel-content").css({ "width": "100%", "min-width": jspanelContainerWidth }); $("#" + $scope.jsPanelID).css("width", "100%"); $("#layerChangeSlider").css("pointer-events", "auto"); // on identity mode click $("#btnZoom").removeAttr("onclick"); $("#btnZoom").on("touchstart", function () { if ($(".btn-annotation").hasClass("activebtncolor")) //Bug #14928 $(".btn-annotation").removeClass("activebtncolor"); //Dissectible Anatomy > Extract and Annotations displays apart on the page after click on Zoom-in. $('.com').remove(); $('#bord').remove(); console.log('OnZoom is called outside '); var scope = angular.element(document.getElementsByClassName("daBodyView")).scope(); scope.$apply(function () { scope.enableZoom(); }); }); // on transparency mode click $("#btnTranparency").removeAttr("onclick"); $("#btnTranparency").on("touchstart", function () { console.log('OnEnableExtract is called outside '); var scope = angular.element(document.getElementsByClassName("daBodyView")).scope(); scope.$apply(function () { scope.createTransparencyBox('true'); }); }); // on normal mode click $("#btnNormalMode").removeAttr("onclick"); $("#btnNormalMode").on("touchstart", function () { console.log('OnEnableNormalMode is called outside '); $("#btnTranparency").removeClass("disabled"); var scope = angular.element(document.getElementsByClassName("daBodyView")).scope(); scope.$apply(function () { scope.enableNormalMode(); }); }); // on extract mode click $("#btnExtract").removeAttr("onclick"); $("#btnExtract").on("touchstart", function () { console.log('OnEnableExtract is called outside '); var scope = angular.element(document.getElementsByClassName("daBodyView")).scope(); scope.$apply(function () { scope.enableExtract('true'); }); }); // on highlight mode click $("#btnHighLight").removeAttr("onclick"); $("#btnHighLight").on("touchstart", function () { console.log('OnEnableHighlight is called outside '); var scope = angular.element(document.getElementsByClassName("daBodyView")).scope(); scope.$apply(function () { scope.enableHighlight(); }); }); // on show/hide mode click $("#btnStrutureBox").removeAttr("onclick"); $("#btnStrutureBox").on("touchstart", function () { console.log('OnBodySystem chnaged is called outside '); var scope = angular.element(document.getElementsByClassName("daBodyView")).scope(); scope.$apply(function () { scope.enableShowHideStructureBox(); }); }); } $(document).on("click", "#" + $scope.jsPanelID + " .jsPanel-hdr .jsPanel-hdr-r .jsPanel-btn-close .jsglyph-remove", function () { // $(document).on("click", " .jsPanel-hdr .jsPanel-hdr-r .jsPanel-btn-close .jsglyph-remove", function () { $rootScope.selectedBodySystemName = 'All'; $rootScope.selectedBodySystemId = 0; $rootScope.searchSelectedText = ''; if ($('#customModuleDiv').html() != "") { $('#customModuleDiv').empty(); } }); $("#" + $scope.jsPanelID).resize(function (event) { var windowviewid = (event.currentTarget.id).split("_")[1]; var CanvasDivLeftPosition=$scope.GetwindowStoreData(windowviewid,'CanvasDivLeftPosition'); var CanvasDivTopPosition=$scope.GetwindowStoreData(windowviewid,'CanvasDivTopPosition'); $('#canvasDivDA_' + windowviewid).scrollLeft(CanvasDivLeftPosition); $('#canvasDivDA_' + windowviewid).scrollTop(CanvasDivTopPosition); }); $(document).on("mouseover", "#termList option", function (e) { $('#termList option[selected="selected"]').attr("selected", false); $(this).attr("selected", true); }); $(document).keypress(function (e) { if ($('#termList option[selected="selected"]').attr("id") == "undefined") { return false; } else { var originator = e.keyCode || e.which; // alert($('#termList option[selected="selected"]').attr("id")); if ($('#termList option[selected="selected"]').attr("id")) { if (e.keyCode == 13) { onListManagerTermSelection($('#termList option[selected="selected"]').attr("id")); } } } }); }) $rootScope.loadSearchData = function (windowviewid) { // $scope.primaryLexiconInd; $scope.SetwindowStoreData(windowviewid, 'primaryLexiconInd', 0); var languageArray = []; // $rootScope.vocabTermDataArray = []; $scope.SetwindowStoreData(windowviewid, 'vocabTermDataArray', null); var languageArray = $rootScope.lexiconLanguageArray; console.log('loadSearchDataForBodyView'); var currentBodyViewId; var currentViewID; if ($rootScope.isOpenResourceBtnClicked) { var viewDataFromMultiViewInfo = new jinqJs() .from($rootScope.multiViewInfo) .where('id == ' + $rootScope.multiViewCounter) .select(); currentBodyViewId = viewDataFromMultiViewInfo[0].bodyViewID//$rootScope.multiViewInfo[$rootScope.multiViewInfoIndex].bodyViewID; currentViewID = viewDataFromMultiViewInfo[0].id; } else currentBodyViewId = $scope.GetwindowStoreData(windowviewid,'voId'); for (var i = 0; i <= languageArray.length - 1; i++) { var searchWorker = new Worker('search-wp.js'); //push workers in array to further used the refernece to delete the workers $scope.runningSearchWorkers.push({ 'workerName': searchWorker }) searchWorker.postMessage({ 'currentBodyViewId': currentBodyViewId, 'languageName': languageArray[i].language, 'languageID': languageArray[i].id }) searchWorker.onmessage = function (e) { console.log('callback searchWorker , time: ' + new Date().toTimeString().replace(/.*(\d{2}:\d{2}:\d{2}).*/, "$1")); $scope.SetwindowStoreData(windowviewid,'TermNumberData',e.data.TermNumberData); console.log("$rootScope.TermNumberData = " + e.data.TermNumberData.TermData.Term.length); console.log("$scope.BodyViewIDs" + e.data.bodyViewID); $scope.vocabTempTermArray = []; if ($rootScope.isOpenResourceBtnClicked) { var vocabTermDataArray = $scope.GetwindowStoreData(windowviewid, 'vocabTermDataArray'); if (vocabTermDataArray.length == 0) { $scope.vocabTempTermArray.push({ "viewID": e.data.bodyViewID, "currentBodyViewId": currentViewID, "language": e.data.language, "VocabTermData": e.data.VocabTermData, "vocabTermTxt": e.data.vocabTermTxt }); } else { var dataForCurrentView = new jinqJs() .from($scope.vocabTempTermArray) .where("viewID == " + e.data.bodyViewID) .select(); if (dataForCurrentView != undefined && dataForCurrentView.length > 0) { var dataForCurrentLang = new jinqJs() .from(dataForCurrentView[0]) .where("language == " + e.data.language) .select(); if (dataForCurrentLang != undefined && dataForCurrentLang.length > 0) { } else { $scope.vocabTempTermArray.push({ "viewID": e.data.bodyViewID, "currentBodyViewId": currentViewID, "language": e.data.language, "VocabTermData": e.data.VocabTermData, "vocabTermTxt": e.data.vocabTermTxt }); } } else { $scope.vocabTempTermArray.push({ "viewID": e.data.bodyViewID, "currentBodyViewId": currentViewID, "language": e.data.language, "VocabTermData": e.data.VocabTermData, "vocabTermTxt": e.data.vocabTermTxt }); } } } else { $scope.vocabTempTermArray.push({ "language": e.data.language, "VocabTermData": e.data.VocabTermData, "vocabTermTxt": e.data.vocabTermTxt }); } if ($rootScope.isOpenResourceBtnClicked) { for (var i = 0; i <= $scope.vocabTempTermArray.length - 1; i++) { $scope.vocabTempTermArray[i].vocabTermTxt = new jinqJs() .from($scope.vocabTempTermArray[i].vocabTermTxt) .distinct('_TermText', '_ActualTermNumber') .orderBy([{ field: '_TermText', sort: 'asc' }]) .select('_ActualTermNumber', '_TermText', '_cdId'); } } else { for (var i = 0; i <= $rootScope.lexiconLanguageArray.length - 1; i++) { $scope.vocabTempTermArray[i].vocabTermTxt = new jinqJs() .from($scope.vocabTempTermArray[i].vocabTermTxt) .distinct('_TermText', '_ActualTermNumber') .orderBy([{ field: '_TermText', sort: 'asc' }]) .select('_ActualTermNumber', '_TermText', '_cdId'); } } if ($scope.vocabTempTermArray.length == $rootScope.lexiconLanguageArray.length) { $("#setting-spinner").css("display", "none"); // add data vocabTermDataArray $scope.SetwindowStoreData(windowviewid, 'vocabTermDataArray', $scope.vocabTempTermArray); for (var i = 0; i <= $scope.vocabTempTermArray.length - 1; i++) { if ($scope.vocabTempTermArray[i].language == $rootScope.lexiconLanguageArray[0].language) { // $scope.primaryLexiconInd = i; $scope.SetwindowStoreData(windowviewid, 'primaryLexiconInd', i); } } //alert(primaryLexiconIndex); if ($rootScope.isListManagerMenuSelected) { $scope.loadListManger(windowviewid); } else if ($scope.GetwindowStoreData(windowviewid,'isSearchClicked')) { $scope.ShowSearch(windowviewid); } } console.log('JlinqActivity , time: ' + new Date().toTimeString().replace(/.*(\d{2}:\d{2}:\d{2}).*/, "$1")); if ($scope.runningSearchWorkers != null || $scope.runningSearchWorkers != undefined) { var workerCount = $scope.runningSearchWorkers.length; if (workerCount > 0) { for (var i = workerCount - 1; i >= 0; i--) { var runningWorker = $scope.runningSearchWorkers[i].workerName; runningWorker.terminate(); $scope.runningSearchWorkers.splice(i, 1); // workerCount--; } } } } } } $scope.loadBodyViewData = function (currentVoid, windowviewid) { console.log('caller of worker sending currentVoid: ' + currentVoid); var bodyViewWorker = new Worker('body-view-wp.js'); //push workers in array to further used the refernece to delete the workers $scope.runningBodyViewWorkers.push({ 'workerName': bodyViewWorker }) bodyViewWorker.postMessage({ 'currentViewId': currentVoid }); bodyViewWorker.onmessage = function (e) { //console.log('callback in extr'); $scope.SetwindowStoreData(windowviewid,'BodyRegionData',e.data.bodyRegionData); $scope.SetwindowStoreData(windowviewid,'bgartData',e.data.bodyArtData); $scope.SetwindowStoreData(windowviewid,'BodyLayerData',e.data.bodyLayerData); var totalLayer = e.data.bodyLayerData.Layers.DataLayer.length-1; //set max for LayerNumber input $scope.SetwindowStoreData(windowviewid,'totalLayers',totalLayer); $('#txtLayerNumberDA_' + windowviewid).attr('max', totalLayer); $('#layerChangeSliderDA_' + windowviewid).slider("option", "max", totalLayer); var layerChangeSliderVal = document.getElementById("layerChangeSliderDA_" + windowviewid).value; console.log('inside bodyViewWorker.onmessage. $rootScope.totalLayers = ' + totalLayer + ' #layerChangeSlider value: ' + layerChangeSliderVal); $scope.LoadDefaultLayerImage(windowviewid); } bodyViewWorker.onerror = function (e) { alert('Error: Line ' + e.lineno + ' in ' + e.filename + ': ' + e.message); }; } //Code for displaying NavigatorImage for BodyView $scope.LoadBodyViewNavigatorImage = function (currentBodyViewId, windowviewid) { console.log('insideLoadBodyViewNavigatorImage') var NavigatorManJsonPath = '~/../content/data/json/da/da_dat_orient_image.json'; $http({ method: 'GET', url: NavigatorManJsonPath }) .success(function (data) { $scope.SetwindowStoreData(windowviewid,'NavigatorData',data); var skinTone=$scope.GetwindowStoreData(windowviewid,'curentEthnicity'); var navigatorManData = new jinqJs() .from(data.Navigtor.ViewOrientation) .where("_ViewOrientationId == " + currentBodyViewId) .select(); if ((navigatorManData != null || navigatorManData != undefined) && (navigatorManData.length > 0)) { var imageInfoForNavigator = new jinqJs() .from(navigatorManData[0].ImageInfo) .where("_Ethnicity == " + skinTone) .select(); } else { console.log('NAVIGATOR.DATA.NOT.FOUND FOR BODY VIEW: ' + currentBodyViewId); } if (imageInfoForNavigator != null || imageInfoForNavigator != undefined) { var navigatorImage = imageInfoForNavigator; var navImageModesty; if ((navigatorImage != null || navigatorImage != undefined) && (navigatorImage.length > 0)) { angular.forEach(navigatorImage, function (value, key) { if (value._HaveModesty === $rootScope.globalSetting.modesty) { navImageModesty = value._ImageName; } }) } if (typeof (navImageModesty) === "undefined" || navImageModesty === null) { navImageModesty = navigatorImage[0]._ImageName; } var bodyVid=$scope.GetwindowStoreData(windowviewid,'voId'); document.getElementById("navimg_" + windowviewid).src = "~/../content/images/DA/ethnicity/body-views/" + bodyVid + '/' + skinTone + '/navigator_images/' + navImageModesty; $('#navigatorDiv_' + windowviewid).css('visibility', 'visible'); $('#navDiv_' + windowviewid).css('visibility', 'visible'); } else { console.log('NAVIGATOR.IMAGE.NOT.FOUND FOR BODY VIEW: ' + currentBodyViewId); } }) .error(function (data, status, headers, config) { //1. console.log('DATA.NOT.LOADED FOR:' + NavigatorManJsonPath + ', ERROR: ' + data); //2. // $scope.LoadBodyViewNavigatorImage() }); } $scope.LoadDefaultLayerImage = function (windowviewid) { console.log('inside LoadDefaultLayerImage') $scope.SetwindowStoreData(windowviewid,'isNormalMode',true); //viewOrientationId is to pic coordinates of view and void is to pic image name from resopective json $scope.SetwindowStoreData(windowviewid,'viewOrientationId',$scope.GetwindowStoreData(windowviewid,'voId')); $scope.setViewOrientationId(windowviewid); //Birendra Load term data For curriculum builder //*********************************************************************// if ($rootScope.isCallFromOtherModule) { $scope.loadDAonCBSlideChange(windowviewid); } else { // for existing DA var viewOrientationId=$scope.GetwindowStoreData(windowviewid,'viewOrientationId'); $scope.CalculateImageCordinates(viewOrientationId, windowviewid); } //**************************************************************************// }; // Function to call CB term data $scope.loadDAonCBSlideChange = function (windowviewid) { $rootScope.isLoading = true; $('#spinner').css('visibility', 'visible'); //Highlight only Highlight button $("#btnHighLight_" + windowviewid).removeClass("btn-black"); $("#btnHighLight_" + windowviewid).addClass("btn-primary"); if (!$("#btnNormalMode_" + windowviewid).hasClass("btn-black")) { $("#btnNormalMode_" + windowviewid).addClass("btn-black"); } if (!$("#btnExtract_" + windowviewid).hasClass("btn-black")) { $("#btnExtract_" + windowviewid).addClass("btn-black"); } if ($("#btnExtract_" + windowviewid).hasClass("btn-primary")) { $("#btnExtract_" + windowviewid).removeClass("btn-primary"); } if ($("#btnNormalMode_" + windowviewid).hasClass("btn-primary")) { $("#btnNormalMode_" + windowviewid).removeClass("btn-primary"); } $scope.setLayerNumberAndHighlightByTermListforCB(windowviewid); } $scope.setLayerNumberAndHighlightByTermListforCB = function (windowviewid) { $scope.SetwindowStoreData(windowviewid,'isHighlightBodyByBodySystem',false); $scope.SetwindowStoreData(windowviewid,'isbodySystemHighlight',false); $scope.SetwindowStoreData(windowviewid,'isHighLight',true); $scope.SetwindowStoreData(windowviewid,'isHighlightBodyWithCBTermData',true); $scope.terminateCurrentlyRunningWPs(); //7.get termList var fullTermlist=$scope.GetwindowStoreData(windowviewid,'fullTermlist'); var AllTerms=$scope.GetwindowStoreData(windowviewid,'AllTerms'); var CurriculumTermData=$scope.GetwindowStoreData(windowviewid,'CurriculumTermData'); for (var i = 0; i < $scope.daOpenInOtherModules.clickedTermList.length; i++) { var serachTerm = ($scope.daOpenInOtherModules.clickedTermList[i]).toString(); if(serachTerm.length<6) continue; var isFound = jQuery.inArray(serachTerm, fullTermlist) if (isFound == -1) { fullTermlist.push(serachTerm); AllTerms.push({ '_TermNumber': serachTerm }) } } for (var i = 0; i < $scope.daOpenInOtherModules.callOuts.length; i++) { var serachTerm = $scope.daOpenInOtherModules.callOuts[i].termNumber.toString(); if(serachTerm.length<6) continue; var isFound = jQuery.inArray(serachTerm, CurriculumTermData) if (isFound == -1) { CurriculumTermData.push( { // "transparentTermNumber": $scope.daOpenInOtherModules.callOuts[i].transparentTermNumber, "termNumber": $scope.daOpenInOtherModules.callOuts[i].termNumber, "tips_x": $scope.daOpenInOtherModules.callOuts[i].tips_x, "tips_y": $scope.daOpenInOtherModules.callOuts[i].tips_y, "x": $scope.daOpenInOtherModules.callOuts[i].x, "y": $scope.daOpenInOtherModules.callOuts[i].y }); } } var totalayer=$scope.GetwindowStoreData(windowviewid,'totalLayers'); var nlayer=$scope.GetwindowStoreData(windowviewid,'layerNumber'); $('#txtLayerNumberDA_' + windowviewid).val((parseInt(nlayer))); var sliderVal = parseInt(totalayer) - parseInt(nlayer); $('#layerChangeSliderDA_' + windowviewid).slider("option", "value", sliderVal); $timeout(function () { $('#sppeachBubble_'+windowviewid).css('display', 'none'); $('#dot_'+windowviewid).css("display", "none"); //DA > Annotation's Line should not displayed. $('#bord_'+windowviewid).css("display", "none"); $rootScope.isLoading = true; $('#spinner').css('visibility', 'visible'); //redraw body of respective layer var viewOrientationId=$scope.GetwindowStoreData(windowviewid,'viewOrientationId'); $scope.CalculateImageCordinates(viewOrientationId, windowviewid); }, 500); } $scope.setViewOrientationId = function (windowviewid) { var bodyVid=$scope.GetwindowStoreData(windowviewid,'voId'); if (bodyVid == 5) { $scope.SetwindowStoreData(windowviewid,'viewOrientationId',1); } else if (bodyVid == 6) { $scope.SetwindowStoreData(windowviewid,'viewOrientationId',2); } else if (bodyVid == 7) { $scope.SetwindowStoreData(windowviewid,'viewOrientationId',3); } else if (bodyVid == 8) { $scope.SetwindowStoreData(windowviewid,'viewOrientationId',4); } else if (bodyVid == 9) { $scope.SetwindowStoreData(windowviewid,'viewOrientationId',5); } else if (bodyVid == 10) { $scope.SetwindowStoreData(windowviewid,'viewOrientationId',6); } else if (bodyVid == 11) { $scope.SetwindowStoreData(windowviewid,'viewOrientationId',5); } else if (bodyVid == 12) { $scope.SetwindowStoreData(windowviewid,'viewOrientationId',6); } } //calculate coordinates for body region images $scope.CalculateImageCordinates = function (viewOrientationId,windowviewid) { $scope.terminateCurrentlyRunningWPs(); $rootScope.isLoading = true; $('#spinner').css('visibility', 'visible'); $scope.SetwindowStoreData(windowviewid,'layerInfoForModesty',[]); $scope.SetwindowStoreData(windowviewid,'modestyImageInfo',[]); $scope.coloredImageCanvasList = []; $scope.SetwindowStoreData(windowviewid,'coloredImageCanvasList',[]); // store colorimageMr canvas $scope.coloredImageMRCanvasList = []; $scope.SetwindowStoreData(windowviewid,'coloredImageMRCanvasList',[]); $scope.SetwindowStoreData(windowviewid,'MaskCanvasData',[]); //set height of canvas div and left tool bar as per window size $scope.BodyRegionCordinatesData = []; // create an empty array $scope.SetwindowStoreData(windowviewid,'BodyRegionCordinatesData',[]); $('#daBodyview').css('width', '100%'); var canvasDIvHeight = parseInt($('#daImagePanel_' + windowviewid).outerHeight()) - 104; $('#canvasDivDA_' + windowviewid).css('height', canvasDIvHeight); $('#leftToolBarDA_' + windowviewid).css('height', $('#daImagePanel_' + windowviewid).outerHeight()) //calculate image coordinates and draw image var BodyRegionData=$scope.GetwindowStoreData(windowviewid,'BodyRegionData'); var bodyRegionCoordinates = new jinqJs() .from(BodyRegionData.BodyRegionViews.BodyRegionCordinates) .where('_ViewOrientationId == ' + viewOrientationId) .select(); console.log('viewOrientationId= ' + viewOrientationId + ', $scope.bodyRegionCoordinates length= ' + bodyRegionCoordinates.length) var bgartData=$scope.GetwindowStoreData(windowviewid,'bgartData'); var bagartDetail = new jinqJs() .from(bgartData.BackgroundArts.BackgroundArtDetail) .where('_ViewOrientationId == ' + viewOrientationId) .select(); //remove existing body view var canDiv = document.getElementById('canvasDivDA_' + windowviewid); var canDivChildCount = canDiv.childElementCount; if (canDivChildCount > 0) { if ($scope.GetwindowStoreData(windowviewid,'isTransparencyActivated')) { $scope.flushCanvas(windowviewid); $('#transparencyScale_' + windowviewid).css('visibility', 'visible'); } else { canDiv.innerHTML = ''; //remove transparency scale $('#transparencyScale_' + windowviewid).css('visibility', 'hidden'); } } if ($rootScope.isOpenResourceBtnClicked) { } else { $scope.ColoredImageSRC = []; $scope.SetwindowStoreData(windowviewid,'ColoredImageSRC',[]); } $scope.SetwindowStoreData(windowviewid,'updatedGrayDataList',[]); $scope.SetwindowStoreData(windowviewid,'updatedGrayMRDataList',[]); //history code if ($("#canvasDivDA_" + windowviewid).find("canvas[id='canvasPaint']").length == 0) { var canvasPaintID = "canvasPaintDA_" + windowviewid; var canvasID = "canvasDA_" + windowviewid; var ATBarHtml = $("#canvasDivDA_" + windowviewid).append(''); $compile(ATBarHtml)($scope); $rootScope.onDrawingCanvasClick(); // $rootScope.FreeStylePaint(); } $('#zoomValueDA_' + windowviewid).attr('value', $scope.GetwindowStoreData(windowviewid,'zoomInOut')); if (bodyRegionCoordinates != null || bodyRegionCoordinates != undefined) { angular.forEach(bodyRegionCoordinates, function (value, key) { if (value._HaveMirrorImage == 'Y') { //DrawMirroredImage //0. Scaling as per default zoom var rectangle = scaleRectangle(value._X, value._Y, value._Height, value._Width, value._MirrorValue,windowviewid); //1.Get image source var src = $scope.GetImageSource(value._BodyRegionId, windowviewid); $scope.imageSource = src; //2.Draw mirror image $scope.DrawMirroredImage(Math.round(rectangle.scaledHeight), Math.round(rectangle.scaledWidth), Math.round(rectangle.scaledX), Math.round(rectangle.scaledY), src, value._BodyRegionId, 'N', windowviewid); $scope.BodyRegionCordinatesData.push( { "bodyRegionId": value._BodyRegionId, "Height": Math.round(rectangle.scaledHeight), "Width": Math.round(rectangle.scaledWidth), "X": Math.round(rectangle.scaledX), "Y": Math.round(rectangle.scaledY), "IsMirror": 'Yes' } ); //3.GetMaskImageSource var maskImageSrc = $scope.GetMaskImageSource($scope.imageSource); //4 Draw Mask Mirror Image $scope.DrawMirroredImage(Math.round(rectangle.scaledHeight), Math.round(rectangle.scaledWidth), Math.round(rectangle.scaledX), Math.round(rectangle.scaledY), maskImageSrc, value._BodyRegionId, 'Y', windowviewid); //Draw Normal Image //0. Scaling as per default zoom var rectangle = scaleRectangle(value._X, value._Y, value._Height, value._Width, 0,windowviewid); //1.Draw body region which have mirror image $scope.DrawImage(Math.round(rectangle.scaledHeight), Math.round(rectangle.scaledWidth), Math.round(rectangle.scaledX), Math.round(rectangle.scaledY), src, value._BodyRegionId, 'N', windowviewid); $scope.BodyRegionCordinatesData.push( { "bodyRegionId": value._BodyRegionId, "Height": Math.round(rectangle.scaledHeight), "Width": Math.round(rectangle.scaledWidth), "X": Math.round(rectangle.scaledX), "Y": Math.round(rectangle.scaledY), "IsMirror": 'No' } ); //2.Draw body region for mask image $scope.DrawImage(Math.round(rectangle.scaledHeight), Math.round(rectangle.scaledWidth), Math.round(rectangle.scaledX), Math.round(rectangle.scaledY), maskImageSrc, value._BodyRegionId, 'Y', windowviewid); } else { //0.Scaling as per default zoom var rectangle = scaleRectangle(value._X, value._Y, value._Height, value._Width, value._MirrorValue,windowviewid); //1.Get image source if (value._IsPrimary == 'N') { var src = $scope.GetBackgroundImgSource(value._BodyRegionId,bagartDetail,windowviewid); $scope.imageSource = src; } else { var src = $scope.GetImageSource(value._BodyRegionId, windowviewid); $scope.imageSource = src; } //2.Draw body region which don't have mirror image $scope.DrawImage(Math.round(rectangle.scaledHeight), Math.round(rectangle.scaledWidth), Math.round(rectangle.scaledX), Math.round(rectangle.scaledY), src, value._BodyRegionId, 'N', windowviewid); $scope.BodyRegionCordinatesData.push( { "bodyRegionId": value._BodyRegionId, "Height": Math.round(rectangle.scaledHeight), "Width": Math.round(rectangle.scaledWidth), "X": Math.round(rectangle.scaledX), "Y": Math.round(rectangle.scaledY), "IsMirror": 'No' } ); //3.GetMaskImageSource var maskSRC = $scope.GetMaskImageSource($scope.imageSource); //4.Draw body region for mask image $scope.DrawImage(Math.round(rectangle.scaledHeight), Math.round(rectangle.scaledWidth), Math.round(rectangle.scaledX), Math.round(rectangle.scaledY), maskSRC, value._BodyRegionId, 'Y', windowviewid); //draw figLeaf for modesty $scope.figLaefImageName; $scope.figLaefX; $scope.figLaefY; var gender; var genderId = $scope.GetwindowStoreData(windowviewid,'genderId'); if (genderId == 'Female') { gender = 'F'; } else { gender = 'M'; } if (((genderId == 'Female') && (value._BodyRegionId == 2)) || (value._BodyRegionId == 3)) { if (bagartDetail != null || bagartDetail != undefined) { var dtlOfBr = new jinqJs() .from(bagartDetail) .where('_BodyRegionId == ' + value._BodyRegionId) .select(); if (dtlOfBr != null || dtlOfBr != undefined) { var dtlOfGender = new jinqJs() .from(dtlOfBr) .where('_Gender == ' + gender) .select(); if (dtlOfGender != null || dtlOfGender != undefined) { var dtlOfSktn = new jinqJs() .from(dtlOfGender) .where('_Skintone == +') .select(); //multiple conditions are not working in where clause of JinQ so need multiple filtered variables if ((dtlOfSktn != null || dtlOfSktn != undefined) && (dtlOfSktn.length > 0)) { $scope.figLaefImageName = dtlOfSktn[0]._ImageId; var lowerlayerNumberForModesty = dtlOfSktn[0]._lns; var HigherlayerNumberForModesty = dtlOfSktn[0]._lne; var layerInfoForModesty=$scope.GetwindowStoreData(windowviewid,'layerInfoForModesty'); layerInfoForModesty.push({ "bodyRegionId": value._BodyRegionId, "lowerlayerNumberForModesty": lowerlayerNumberForModesty, "HigherlayerNumberForModesty": HigherlayerNumberForModesty }) var rectangle = scaleRectangle(value._X, value._Y, value._Height, value._Width, value._MirrorValue,windowviewid); var bodyVid=$scope.GetwindowStoreData(windowviewid,'voId'); var zoomValue=$scope.GetwindowStoreData(windowviewid,'zoomInOut'); var src = "content/images/DA/" + zoomValue + "/body-views/" + bodyVid + "/layers/0/" + value._BodyRegionId + "/" + $scope.figLaefImageName; $scope.DrawImage(rectangle.scaledHeight, rectangle.scaledWidth, rectangle.scaledX, rectangle.scaledY, src, 'modestyImg' + value._BodyRegionId, 'N', windowviewid) var nlayer=$scope.GetwindowStoreData(windowviewid,'layerNumber'); if ((parseInt(dtlOfSktn[0]._lns) <= parseInt(nlayer)) && (parseInt(dtlOfSktn[0]._lne) > parseInt(nlayer)) && (dtlOfSktn[0]._isfr == 'Y')) { $rootScope.isLayerLessSeven = true; // using at home if (($rootScope.globalSetting.modesty == 'Y')) { $('.modestyImg_'+windowviewid).css('visibility', 'visible'); } } else { $rootScope.isLayerLessSeven = false; $('.modestyImg_'+windowviewid).css('visibility', 'hidden'); } } } } } } } }); // push BodyRegionCordinatesData $scope.SetwindowStoreData(windowviewid,'BodyRegionCordinatesData',$scope.BodyRegionCordinatesData); } //set scrollbars on canvas and hide loading label //check the OS var isiOSSafari = (navigator.userAgent.match(/(iPod|iPhone|iPad|android)/i)) ? true : false; //set scrollbars on canvas and hide loading label $('#daLoaderLabel').css('visibility', 'hidden') $('#canvasDivDA_' + windowviewid).css('overflow', 'scroll') if (isiOSSafari) { $('#canvasDivDA_' + windowviewid).scrollLeft($('#canvasDivDA_' + windowviewid).width() + 150) } else { $('#canvasDivDA_' + windowviewid).scrollLeft($('#canvasDivDA_' + windowviewid).width() / 2) } $('#canvasDivDA_' + windowviewid).scrollTop(50) var sliderVal = parseInt($scope.GetwindowStoreData(windowviewid,'totalLayers')) - parseInt($scope.GetwindowStoreData(windowviewid,'layerNumber')); $('#layerChangeSliderDA_' + windowviewid).slider("option", "value", sliderVal); // $('#spinner').css('visibility', 'hidden'); $rootScope.isLoading = false; //Dated:16-07-2016 Issue #4957 :While selecting the Zoom-in\Zoom-out button scroll should be go on top. // #4976 :While changing gender male to female scroll bar is going on top. var canvasDiv = document.getElementById('canvasDivDA_' + windowviewid); if (canvasDiv != null || canvasDiv != undefined) { canvasDiv.scrollTop = 0; //Navigator Code for dynamically calculating the height and width of Dragable Div on Navigator Image var dragdivh = Math.floor(($('#canvasDivDA_' + windowviewid).height() / $('#canvasDivDA_' + windowviewid)[0].scrollHeight) * 119) //119px is the height of the image if ($('#canvasDivDA_' + windowviewid)[0].scrollWidth > $('#canvasDivDA_' + windowviewid)[0].clientWidth) { var dragdivw = 42 var dragdivleft = 21; var dragdivtop = 0; } else { var dragdivw = 83; var dragdivleft = 0; var dragdivtop = 0; } } if ($rootScope.isOpenResourceBtnClicked) { $('#draggable_' + $rootScope.MULTI_VIEW_ID).css('width', dragdivw); $('#draggable_' + $rootScope.MULTI_VIEW_ID).css('height', dragdivh); $('#draggable_' + $rootScope.MULTI_VIEW_ID).css("left", dragdivleft); $('#draggable_' + $rootScope.MULTI_VIEW_ID).css("top", dragdivtop); } else { $('#draggable_' +windowviewid).css('width', dragdivw); $('#draggable_' + windowviewid).css('height', dragdivh); $('#draggable_' + windowviewid).css("left", dragdivleft); $('#draggable_' + windowviewid).css("top", dragdivtop); } } function scaleRectangle(x, y, height, width, mirrorValue,windowviewid) { var nzoom = $scope.GetwindowStoreData(windowviewid,'zoomInOut'); var existingZoon = 100; var X = 0; var scaledY = 0; var scaledHeight = 0; var scaledWidth = 0; if (mirrorValue != 0) { var mirroredX = parseInt(mirrorValue) + parseInt(x); var newX = (mirroredX * nzoom); mirroredX = (newX / existingZoon); X = mirroredX; } else { var newX = (x * nzoom); X = (newX / existingZoon); } var newY = (y * nzoom); var Y = (newY / existingZoon); var newHeight = (height * nzoom); var ht = (newHeight / existingZoon); var newWidth = (width * nzoom); var wt = (newWidth / existingZoon); return { scaledX: X, scaledY: Y, scaledHeight: ht, scaledWidth: wt } } $scope.GetMaskImageSource = function (src) { if (src != null || src != undefined) { if (src.match('.png')) { var mciImage = src.replace('.png', '_mci.png') } else { var mciImage = src.replace('.jpg', '_mci.png') } return mciImage; } else { console.log('IMAGE.SOURCE.NOLT.FOUND'); } } $scope.GetImageSource = function (bodyRegionId, windowviewid) { var BodyLayerData = $scope.GetwindowStoreData(windowviewid,'BodyLayerData'); var dataLength = BodyLayerData.Layers.DataLayer.length; var isListManagerSelected=$scope.GetwindowStoreData(windowviewid,'isListManagerSelected'); if (isListManagerSelected == true) { $scope.SetwindowStoreData(windowviewid,'layerNumber',$('#txtLayerNumberDA_' + windowviewid).val()); } var lNumber=$scope.GetwindowStoreData(windowviewid,'layerNumber'); $scope.userInput = parseInt(lNumber); var skinTone=$scope.GetwindowStoreData(windowviewid,'curentEthnicity'); var SelectedLayerData = []; //as the data statrs with zero index and we have layer 331 on 0 index in json so we get the //desired layer data by using below line of code. SelectedLayerData = BodyLayerData.Layers.DataLayer[dataLength - $scope.userInput - 1]; if ((SelectedLayerData != null || SelectedLayerData != undefined)) var bodyVid=$scope.GetwindowStoreData(windowviewid,'voId'); var zoomValue=$scope.GetwindowStoreData(windowviewid,'zoomInOut'); if (lNumber == 0) { console.log('lNo: ' + lNumber + ' and BodyRegion.length: ' + SelectedLayerData.BodyRegion.length); if (SelectedLayerData.BodyRegion.length > 0) { for (var z = 0; z < SelectedLayerData.BodyRegion.length; z++) { var bodyRegion = SelectedLayerData.BodyRegion[z]._BodyRegionId; var bodyRegionSkinTone = SelectedLayerData.BodyRegion[z].Image._SkintTone; var viewOrientationId=$scope.GetwindowStoreData(windowviewid,'viewOrientationId'); if (viewOrientationId == 3 && bodyRegionId == 1) { console.log('VoId: ' + bodyVid); if (bodyRegion == bodyRegionId && bodyRegionSkinTone == 'W') { return "content/images/DA/" + zoomValue + "/body-views/" +bodyVid + "/layers/" + lNumber + "/" + bodyRegionId + "/W/" + SelectedLayerData.BodyRegion[z].Image._ImageName; } } else { if (bodyRegion == bodyRegionId && bodyRegionSkinTone == skinTone) { return "content/images/DA/" + zoomValue + "/body-views/" + bodyVid + "/layers/" + lNumber + "/" + bodyRegionId + "/" + skinTone + "/" + SelectedLayerData.BodyRegion[z].Image._ImageName; } } } } } else { //below 4 bodyviews have only single body region if ((bodyVid == '9') || (bodyVid == '11') || (bodyVid == '10') || (bodyVid == '12')) { var bodyRegion = SelectedLayerData.BodyRegion._BodyRegionId; return "content/images/DA/" + zoomValue + "/body-views/" + bodyVid + "/layers/" + lNumber + "/" + bodyRegionId + "/" + SelectedLayerData.BodyRegion.Image._ImageName; } else // it is for other body view which have multiple body regions and layer no > 0 { if (SelectedLayerData.BodyRegion.length > 0) { for (var z = 0; z <= SelectedLayerData.BodyRegion.length; z++) { var bodyRegion = SelectedLayerData.BodyRegion[z]._BodyRegionId; if (bodyRegion == bodyRegionId) { return "content/images/DA/" + zoomValue + "/body-views/" + bodyVid + "/layers/" + lNumber + "/" + bodyRegionId + "/" + SelectedLayerData.BodyRegion[z].Image._ImageName; } } } } } } $scope.GetBackgroundImgSource = function (bodyRegionId,bagartDetail,windowviewid) { var selectedGender; var genderId = $scope.GetwindowStoreData(windowviewid,'genderId'); if (genderId == "Male") { selectedGender = 'M'; } else { selectedGender = 'F'; } //filter data based on bodyRegion $scope.bagartBodyRegionDetails = new jinqJs() .from(bagartDetail) .where('_BodyRegionId == ' + bodyRegionId) .select(); if ($scope.bagartBodyRegionDetails != null || $scope.bagartBodyRegionDetails != undefined) { var bodyVid=$scope.GetwindowStoreData(windowviewid,'voId'); var zoomValue=$scope.GetwindowStoreData(windowviewid,'zoomInOut'); //filter bodyRegion data basd on skintone var skinTone=$scope.GetwindowStoreData(windowviewid,'curentEthnicity'); $scope.bagartDetailsOnSktn = new jinqJs() .from($scope.bagartBodyRegionDetails) .where('_Skintone == ' + skinTone) .select(); if ($scope.bagartDetailsOnSktn != null || $scope.bagartDetailsOnSktn != undefined) { //only brid=2 is having different male,female image, other bodr region have common images for male, female if (bodyRegionId == 2) { for (var z = 0; z <= $scope.bagartDetailsOnSktn.length; z++) { var gender = $scope.bagartDetailsOnSktn[z]._Gender; if (gender == selectedGender) { return "content/images/DA/" + zoomValue + "/body-views/" +bodyVid + "/layers/0/" + bodyRegionId + "/" + skinTone + "/" + $scope.bagartDetailsOnSktn[z]._ImageId; } } } else { return "content/images/DA/" + zoomValue + "/body-views/" + bodyVid + "/layers/0/" + bodyRegionId + "/" + skinTone + "/" + $scope.bagartDetailsOnSktn[0]._ImageId; } } } } $scope.DrawMirroredImage = function (h, w, x, y, src, bodyRegionId, isMaskImage, windowviewid) { $scope.DisableUI(); $rootScope.isLoading = true; $('#spinner').css('visibility', 'visible'); var FlipedImgCanvas = document.createElement('canvas'); FlipedImgCanvas.height = h; FlipedImgCanvas.width = w; FlipedImgCanvas.setAttribute("data-IsMirrored", "Y") FlipedImgCanvas.style.position = "absolute"; FlipedImgCanvas.style.left = x + "px"; FlipedImgCanvas.style.top = y + "px"; if (isMaskImage == 'Y') { if ($rootScope.isOpenResourceBtnClicked) { FlipedImgCanvas.id = 'imageCanvas' + bodyRegionId + '_MR_mci' + '|' + windowviewid; } else { FlipedImgCanvas.id = 'imageCanvas' + bodyRegionId + '_MR_mci'+ '|' + windowviewid; } FlipedImgCanvas.style.visibility = 'hidden'; } else { if ($rootScope.isOpenResourceBtnClicked) { FlipedImgCanvas.id = 'imageCanvas' + bodyRegionId + '_MR' + '|' + windowviewid; } else { FlipedImgCanvas.id = 'imageCanvas' + bodyRegionId + '_MR' + '|' + windowviewid; } if ($scope.GetwindowStoreData(windowviewid,'isExtract') == true) { FlipedImgCanvas.style.visibility = 'visible' } else { } } FlipedImgCanvas.addEventListener('click', function (evt) { var windowviewid = (evt.currentTarget.id).split("|")[1]; var canvasDiv = document.getElementById('canvasDivDA_' + windowviewid); $scope.imageVerticalScrollPosition = canvasDiv.scrollTop; //to get correct data on multihighlight highlight if ($scope.isLayerChange == true) { $scope.isLayerChange = false; } $scope.SetwindowStoreData(windowviewid,'isListManagerSelected',false); $('#typedTermName_' + windowviewid).val(''); if (evt.ctrlKey) { $scope.SetwindowStoreData(windowviewid,'multiAnnotationIsON',true); } else { $scope.SetwindowStoreData(windowviewid,'previousHighlightList',[]); $scope.SetwindowStoreData(windowviewid,'multiAnnotationIsON',false); } // clear CB term data on mouse click $scope.SetwindowStoreData(windowviewid,'CurriculumTermData',[]); $scope.SetwindowStoreData(windowviewid,'isHighlightBodyWithCBTermData',false); //get mouse coordinate of mirror image click var mousePos = $scope.getMousePos(evt.pageX,evt.pageY,windowviewid); var context = FlipedImgCanvas.getContext("2d"); var canvasId = context.canvas.getAttribute('id'); var mirrorCanvasX = context.canvas.offsetLeft; var mirrorCanvasWidth = context.canvas.clientWidth; var maskCanvasId = (canvasId.replace('_MR', '_mci')); var maskCanvas = document.getElementById(maskCanvasId); var maskCanvasContext = maskCanvas.getContext("2d"); var canvasDiv = document.getElementById('canvasDivDA_' + windowviewid); var verticalScrollPosition = canvasDiv.scrollTop; var horizontlScrollPosition = canvasDiv.scrollLeft; var distanceXOnMirrorImage = (parseInt(mirrorCanvasX) + parseInt(mirrorCanvasWidth)) - (parseInt(mousePos.x) + horizontlScrollPosition);// - 135); var mirrorXOnNormalImage = parseInt(maskCanvasContext.canvas.offsetLeft) + parseInt(distanceXOnMirrorImage); var actulalX = mirrorXOnNormalImage var actualY = mousePos.y + verticalScrollPosition var pixelData = maskCanvasContext.getImageData(Math.round(actulalX - parseInt(maskCanvasContext.canvas.offsetLeft)), Math.round(actualY - y), 1, 1); pixelData.data[0] = pixelData.data[0] - 9; pixelData.data[1] = pixelData.data[1] - 9; pixelData.data[2] = pixelData.data[2] - 9 var Red; var Green; var Blue; var zero = "0"; if ((pixelData.data[0]).toString().length != 2) { Red = zero.concat((pixelData.data[0]).toString()) } else { Red = (pixelData.data[0]).toString() } if ((pixelData.data[1]).toString().length != 2) { Green = zero.concat((pixelData.data[1]).toString()) } else { Green = (pixelData.data[1]).toString() } if ((pixelData.data[2]).toString().length != 2) { Blue = zero.concat((pixelData.data[2]).toString()) } else { Blue = (pixelData.data[2]).toString() } var RGBColor = (Red + Green + Blue); var previousHighlightList=$scope.GetwindowStoreData(windowviewid,'previousHighlightList'); previousHighlightList.push(RGBColor); if ($scope.GetwindowStoreData(windowviewid,'isHighLight')) { if ($scope.machedIcolorInBodyRegion != null || $scope.machedIcolorInBodyRegion != undefined) { if ($scope.machedIcolorInBodyRegion.length > 0) { if ($scope.GetwindowStoreData(windowviewid,'multiAnnotationIsON') == false) { for (var i = 0; i < $scope.machedIcolorInBodyRegion.length; i++) { var bodyRegionId = $scope.machedIcolorInBodyRegion[i]; var grayCanvasID = 'imageCanvas' + bodyRegionId + "|" + windowviewid; var grayCanvas = document.getElementById(grayCanvasID); var grayCanvasContext = grayCanvas.getContext("2d"); var grayImageDataList=$scope.GetwindowStoreData(windowviewid,'grayImageDataList'); if (grayImageDataList[bodyRegionId - 1] != null || grayImageDataList[bodyRegionId - 1] != undefined) { var grayImageData = grayImageDataList[bodyRegionId - 1]; grayCanvasContext.putImageData(grayImageData, 0, 0); } // for mirrored canvas var bodyVid=$scope.GetwindowStoreData(windowviewid,'voId'); if (bodyVid == "1" || bodyVid == "4" || bodyVid == "5" || bodyVid == "8") { if (bodyRegionId == 4 || bodyRegionId == 5 || bodyRegionId == 6) { var grayCanvasID = 'imageCanvas' + bodyRegionId + '_MR' + "|" + windowviewid; var grayCanvasMR = document.getElementById(grayCanvasID); var grayCanvasContextMR = grayCanvasMR.getContext("2d"); var grayImageMRDataList=$scope.GetwindowStoreData(windowviewid,'grayImageMRDataList'); if (grayImageMRDataList[bodyRegionId] != null || grayImageMRDataList[bodyRegionId] != undefined) { var grayImageDataMR = grayImageMRDataList[bodyRegionId]; grayCanvasContextMR.putImageData(grayImageDataMR, 0, 0); } } } } } } } $scope.highLightBodyBasedOnIcolor(RGBColor,windowviewid); } //extarct clicked body part is extarct button is already enabled. if ($scope.GetwindowStoreData(windowviewid,'isExtract') == true) { if ($scope.GetwindowStoreData(windowviewid,'multiAnnotationIsON') == false) { $scope.SetwindowStoreData(windowviewid,'isListManagerSelected',false); } $scope.enableExtract(false,windowviewid); } var annotationText var TermNData=$scope.GetwindowStoreData(windowviewid,'TermNumberData'); if (TermNData != null && TermNData != undefined) { annotationText = $scope.GetAnnotationText(parseInt(RGBColor),windowviewid); } else { $rootScope.loadSearchData(windowviewid); annotationText = $scope.GetAnnotationText(parseInt(RGBColor),windowviewid); } var TermAnnotationText=$scope.GetwindowStoreData(windowviewid,'TermAnnotationText'); if ($scope.GetwindowStoreData(windowviewid,'multiAnnotationIsON') == true) { $scope.MultiLanguageAnnationArray = []; if (TermAnnotationText.length>0) { for (var i = 0; i <= TermAnnotationText.length - 1; i++) { $scope.MultiLanguageAnnationArray.push(TermAnnotationText[i]); } $scope.createDynamicSpeechBubble(evt, evt.pageX + horizontlScrollPosition - $('#canvasDivDA_' + windowviewid).offset().left, evt.pageY + verticalScrollPosition - $('#canvasDivDA_' + windowviewid).offset().top, true, 0, 0,windowviewid); } } else { if ($('#dot_'+windowviewid).length > 0) { $('#dot_'+windowviewid).remove(); } if ($('#sppeachBubble_'+windowviewid).length > 0) { $('#sppeachBubble_'+windowviewid).remove(); $scope.MultiLanguageAnnationArray = []; if (TermAnnotationText.length>0) { for (var i = 0; i <= TermAnnotationText.length - 1; i++) { $scope.MultiLanguageAnnationArray.push(TermAnnotationText[i]); } $scope.createDynamicSpeechBubble(evt, evt.pageX + horizontlScrollPosition - $('#canvasDivDA_' + windowviewid).offset().left, evt.pageY + verticalScrollPosition - $('#canvasDivDA_' + windowviewid).offset().top, true, 0, 0,windowviewid); } } else { $scope.MultiLanguageAnnationArray = []; if (TermAnnotationText.length>0) { for (var i = 0; i <= TermAnnotationText.length - 1; i++) { $scope.MultiLanguageAnnationArray.push(TermAnnotationText[i]); } $scope.createDynamicSpeechBubble(evt, evt.pageX + horizontlScrollPosition - $('#canvasDivDA_' + windowviewid).offset().left, evt.pageY + verticalScrollPosition - $('#canvasDivDA_' + windowviewid).offset().top, true, 0, 0,windowviewid); } } } }, false); FlipedImgCanvas.addEventListener('mousedown', function (evt) { //alert('mousedown') }, false); FlipedImgCanvas.addEventListener('mouseup', function (evt) { //alert('mouseup') }, false); var context = FlipedImgCanvas.getContext("2d"); var PI = Math.PI; var PI2 = PI * 2; var cw, ch, imgW, imgH, mouseX, mouseY; var scaleFactor = 1.00; //$scaler = $("#scaler"); //$scaler.val(scaleFactor); //$scaler.hide(); var img = new Image(); img.onload = start; // img.src = "~/../content/images/" + src;; img.src = src; function start() { context.save(); context.translate(w, 0); context.scale(-1, 1); context.drawImage(img, 0, 0); context.restore(); var viewOrientationId=$scope.GetwindowStoreData(windowviewid,'viewOrientationId'); if (isMaskImage == 'N') { var totalCanvas; if ((viewOrientationId == '1') || (viewOrientationId == '4')) { totalCanvas = 9; } else if ((viewOrientationId == '2') || (viewOrientationId == '3')) { totalCanvas = 5; } else if ((viewOrientationId == '5')) { totalCanvas = 4; } else if ((viewOrientationId == '6')) { totalCanvas = 1; } if ($scope.ColoredImageSRC.length < totalCanvas) { if ($rootScope.isOpenResourceBtnClicked) { $scope.ColoredImageSRC.push( { "viewID": $rootScope.multiViewCounter, "bodyRegionId": bodyRegionId, "SRC": src, "Height": h, "Width": w, "x": x, "y": y, "haveMirror": 'true' } ); } else { $scope.ColoredImageSRC.push( { "bodyRegionId": bodyRegionId, "SRC": src, "Height": h, "Width": w, "x": x, "y": y, "haveMirror": 'true' } ); } } var imageCanvas; if ($rootScope.multiViewCounter != undefined) { imageCanvas = document.getElementById('imageCanvas' + bodyRegionId + '_MR' + '|' + windowviewid); } else { imageCanvas = document.getElementById('imageCanvas' + bodyRegionId + '_MR' + '|' + windowviewid); } if (imageCanvas != null || imageCanvas != undefined) { var width = imageCanvas.width; var ht = imageCanvas.height; var coloredCanvasContext = imageCanvas.getContext("2d"); var coloredImageData = coloredCanvasContext.getImageData(0, 0, width, ht); $scope.coloredImageMRCanvasList[parseInt(bodyRegionId)] = coloredImageData; } if (($scope.ColoredImageSRC != null || $scope.ColoredImageSRC != undefined)) { var isEligibleForHighlight=false; if (((viewOrientationId == '1') || (viewOrientationId == '4')) && ($scope.ColoredImageSRC.length == 9)) { isEligibleForHighlight = true; } else if (((viewOrientationId == '2') || (viewOrientationId == '3')) && ($scope.ColoredImageSRC.length == 5)) { isEligibleForHighlight = true; } else if ((viewOrientationId == '5') && ($scope.ColoredImageSRC.length == 4)) { isEligibleForHighlight = true; } else if ((viewOrientationId == '6') && ($scope.ColoredImageSRC.length == 1)) { isEligibleForHighlight = true; } else { isEligibleForHighlight = false; } if (isEligibleForHighlight == true) { $scope.SetwindowStoreData(windowviewid,'coloredImageCanvasList',$scope.coloredImageCanvasList); $scope.SetwindowStoreData(windowviewid,'coloredImageMRCanvasList',$scope.coloredImageMRCanvasList); // set color image data $scope.SetwindowStoreData(windowviewid,'ColoredImageSRC',$scope.ColoredImageSRC); if ($rootScope.isOpenResourceBtnClicked && $rootScope.isTermClicked == false) { $scope.EnableUI(); if (($rootScope.multiViewInfoIndex + 1) < $rootScope.multiViewInfo.length) { $scope.DisableUI(); $rootScope.intSearch = $rootScope.multiViewInfoIndex; $rootScope.multiViewInfoIndex = $rootScope.multiViewInfoIndex + 1; $scope.openBodyView(); } } else { $scope.DisableUI(); if ($scope.isSearchDataLoaded) { $rootScope.isLoading = false; $('#spinner').css('visibility', 'hidden'); } var isHighLight=$scope.GetwindowStoreData(windowviewid,'isHighLight'); var isGenderChnage = $scope.GetwindowStoreData(windowviewid,'isGenderChnage'); var isViewChange = $scope.GetwindowStoreData(windowviewid,'isViewChange'); var isHighlightBodyByBodySystem=$scope.GetwindowStoreData(windowviewid,'isHighlightBodyByBodySystem'); var isListManagerSelected=$scope.GetwindowStoreData(windowviewid,'isListManagerSelected'); if ($scope.GetwindowStoreData(windowviewid,'isExtract') == true) { $rootScope.isLoading = true; $('#spinner').css('visibility', 'visible'); $scope.DisableUI(); $scope.highLightBody(windowviewid); } else if (isHighLight == true || (isListManagerSelected == true) || ((isGenderChnage == true) && (isHighLight == true)) || ((isViewChange == true) && (isHighLight == true)) || isHighlightBodyByBodySystem == true) { console.log('1. $rootScope.isHighLight= ' + isHighLight) $rootScope.isLoading = true; $('#spinner').css('visibility', 'visible'); $scope.SetwindowStoreData(windowviewid,'isHighLight',true); $scope.DisableUI(); $scope.highLightBody(windowviewid); } else { //This block is executed when normal body is created and no further process like highlight,extract, etc $rootScope.isLoading = false; $('#spinner').css('visibility', 'hidden'); $scope.EnableUI(); } } } } console.log('DrawMirroredImage- ColoredImageSRC. pushed and length: ' + $scope.ColoredImageSRC.length); } if (FlipedImgCanvas.id.match('_mci')) { var maskImgData = context.getImageData(0, 0, w, h); var MaskCanvasData = $scope.GetwindowStoreData(windowviewid,'MaskCanvasData'); if ($rootScope.isOpenResourceBtnClicked) { MaskCanvasData.push( { "viewID": $rootScope.multiViewCounter, "bodyRegionId": bodyRegionId, "canvasId": FlipedImgCanvas.id, "maskData": maskImgData, } ); } else { MaskCanvasData.push( { "bodyRegionId": bodyRegionId, "canvasId": FlipedImgCanvas.id, "maskData": maskImgData, } ); } } }; if (document.getElementById('canvasDivDA_' + windowviewid) != null) document.getElementById('canvasDivDA_' + windowviewid).appendChild(FlipedImgCanvas); } $scope.DrawImage = function (h, w, x, y, src, bodyRegionId, isMaskImage, windowviewid) { $scope.DisableUI(); $rootScope.isLoading = true; $('#spinner').css('visibility', 'visible'); var imgCanvas = document.createElement('canvas'); imgCanvas.height = h; imgCanvas.width = w; imgCanvas.setAttribute("data-IsMirrored", "N") imgCanvas.style.position = "absolute"; imgCanvas.style.left = x + "px"; imgCanvas.style.top = y + "px"; if (isMaskImage == 'Y') { imgCanvas.style.visibility = 'hidden'; if ($rootScope.isOpenResourceBtnClicked) { imgCanvas.id = 'imageCanvas' + bodyRegionId + '_mci' + '|' + windowviewid; } else { imgCanvas.id = 'imageCanvas' + bodyRegionId + '_mci' + '|' + windowviewid; } } else { if ($rootScope.isOpenResourceBtnClicked) { imgCanvas.id = 'imageCanvas' + bodyRegionId + '|' + windowviewid; } else { imgCanvas.id = 'imageCanvas' + bodyRegionId + '|' + windowviewid; } if (bodyRegionId == 3) { //set z index of hip canavs to fix the issue caused by overlapping of arm canavs on hip canavs. imgCanvas.style.zIndex = "100"; } if (bodyRegionId.match('modestyImg')) { //added class to further access this canavs to show and hide leaf as per modesty seting imgCanvas.className = 'modestyImg_'+windowviewid; imgCanvas.style.visibility = 'hidden' //set z index to make leaf canvas on top of hip canavs imgCanvas.style.zIndex = "200"; } var bodyVid=$scope.GetwindowStoreData(windowviewid,'voId'); if ((bodyVid == 11 || bodyVid == 9) && bodyRegionId == 6) { imgCanvas.style.zIndex = "500"; } if ($scope.GetwindowStoreData(windowviewid,'isExtract') == true) { imgCanvas.style.visibility = 'visible' } } imgCanvas.addEventListener('click', function (evt) { var windowviewid = (evt.currentTarget.id).split("|")[1]; var canvasDiv = document.getElementById('canvasDivDA_' + windowviewid); $scope.imageVerticalScrollPosition = canvasDiv.scrollTop; if ($scope.isLayerChange == true) { $scope.isLayerChange = false; } $scope.SetwindowStoreData(windowviewid,'isListManagerSelected',false); $('#typedTermName_' + windowviewid).val(''); if (evt.ctrlKey) { $scope.SetwindowStoreData(windowviewid,'multiAnnotationIsON',true); console.log('CTRL ON') } else { $scope.SetwindowStoreData(windowviewid,'previousHighlightList',[]); $scope.SetwindowStoreData(windowviewid,'multiAnnotationIsON',false); console.log('multiAnnotationIsON: ' + false); } // clear CB term data on mouse click $scope.SetwindowStoreData(windowviewid,'CurriculumTermData',[]); $scope.SetwindowStoreData(windowviewid,'isHighlightBodyWithCBTermData',false); var annotationText; var context = imgCanvas.getContext("2d"); var canvasId = context.canvas.getAttribute('id'); var maskCanvasId; //for leaf canvas if (canvasId.match('modestyImg')) { maskCanvasId = canvasId; } else { maskCanvasId = canvasId.split("|")[0] + '_mci' + "|" + windowviewid; } var maskCanvas = document.getElementById(maskCanvasId); var maskCanvasContext = maskCanvas.getContext("2d"); var mousePos = $scope.getMousePos(evt.pageX,evt.pageY,windowviewid); // alert(mousePos.x + ',' + mousePos.y); var canvasDiv = document.getElementById('canvasDivDA_' + windowviewid); var verticalScrollPosition = canvasDiv.scrollTop; var horizontlScrollPosition = canvasDiv.scrollLeft; //We substracted 135, as the difference between flex and html coordinates for same organ is 135 var actulalX = mousePos.x + horizontlScrollPosition; var actualY = mousePos.y + verticalScrollPosition; var RGBColor = $scope.GetRGBColor(maskCanvasContext, actulalX, actualY, x, y); //Modesty ON if (maskCanvasId.match('modestyImg') && RGBColor != '000000') { RGBColor = DA[0].figLeafTermId; annotationText = $scope.GetAnnotationBasedOnActualTermNo(RGBColor, null, windowviewid); } //Modesty On but clicked somewhre else, we did modesty check because the modesty image covers whole body region so if user will click to //see the annotation apart from leaf then the actual click will be on modesty canvas, but for annotation er // else if (maskCanvasId.match('modestyImg') && RGBColor == '000000') { bodyRegionId = maskCanvasId.split("|")[0].slice(-1); maskCanvasId = 'imageCanvas' + bodyRegionId + '_mci' + "|" + windowviewid; var maskCanvas = document.getElementById(maskCanvasId); var maskCanvasContext = maskCanvas.getContext("2d"); RGBColor = $scope.GetRGBColor(maskCanvasContext, actulalX, actualY, x, y); } else { RGBColor = $scope.GetRGBColor(maskCanvasContext, actulalX, actualY, x, y); } var TermNData=$scope.GetwindowStoreData(windowviewid,'TermNumberData'); if (TermNData != null && TermNData != undefined) { annotationText = $scope.GetAnnotationText(parseInt(RGBColor),windowviewid); } else { $rootScope.loadSearchData(windowviewid); annotationText = $scope.GetAnnotationText(parseInt(RGBColor),windowviewid); } var previousHighlightList=$scope.GetwindowStoreData(windowviewid,'previousHighlightList'); previousHighlightList.push(RGBColor); if ($scope.GetwindowStoreData(windowviewid,'isHighLight') == true) { if ($scope.machedIcolorInBodyRegion != null || $scope.machedIcolorInBodyRegion != undefined) { if ($scope.machedIcolorInBodyRegion.length > 0) { if ($scope.GetwindowStoreData(windowviewid,'multiAnnotationIsON') == false) { for (var i = 0; i < $scope.machedIcolorInBodyRegion.length; i++) { var bodyRegionId = $scope.machedIcolorInBodyRegion[i]; var grayCanvasID = 'imageCanvas' + bodyRegionId + "|" + windowviewid; var grayCanvas = document.getElementById(grayCanvasID); var grayImageDataList=$scope.GetwindowStoreData(windowviewid,'grayImageDataList'); var grayCanvasContext = grayCanvas.getContext("2d"); if (grayImageDataList[bodyRegionId - 1] != null || grayImageDataList[bodyRegionId - 1] != undefined) { var grayImageData = grayImageDataList[bodyRegionId - 1]; grayCanvasContext.putImageData(grayImageData, 0, 0); } var bodyVid=$scope.GetwindowStoreData(windowviewid,'voId'); // for unhighlight the mirrored body region if (bodyVid == "1" || bodyVid == "4" || bodyVid == "5" || bodyVid == "8") { if (bodyRegionId == 4 || bodyRegionId == 5 || bodyRegionId == 6) { var grayCanvasID = 'imageCanvas' + bodyRegionId + '_MR' + "|" + windowviewid; var grayCanvasMR = document.getElementById(grayCanvasID); var grayImageMRDataList=$scope.GetwindowStoreData(windowviewid,'grayImageMRDataList'); var grayCanvasContextMR = grayCanvasMR.getContext("2d"); if (grayImageMRDataList[bodyRegionId] != null || grayImageMRDataList[bodyRegionId] != undefined) { var grayImageDataMR = grayImageMRDataList[bodyRegionId]; grayCanvasContextMR.putImageData(grayImageDataMR, 0, 0); } } } } } } } if (maskCanvasId.match('modestyImg') && RGBColor != '000000') { } else { // $scope.isClickedOnBodyForHighlight = true; $scope.highLightBodyBasedOnIcolor(RGBColor,windowviewid); } } //extarct clisked body part is extarct button is already enabled. if ($scope.GetwindowStoreData(windowviewid,'isExtract') == true) { if ($scope.GetwindowStoreData(windowviewid,'multiAnnotationIsON') == false) { $scope.SetwindowStoreData(windowviewid,'isListManagerSelected',false); } $scope.enableExtract(false,windowviewid); } var TermAnnotationText=$scope.GetwindowStoreData(windowviewid,'TermAnnotationText'); if ($scope.GetwindowStoreData(windowviewid,'multiAnnotationIsON') == true) { if (TermAnnotationText.length > 0) { $scope.MultiLanguageAnnationArray = []; for (var i = 0; i <= TermAnnotationText.length - 1; i++) { $scope.MultiLanguageAnnationArray.push(TermAnnotationText[i]); } $scope.createDynamicSpeechBubble(evt, evt.pageX + horizontlScrollPosition - $('#canvasDivDA_' + windowviewid).offset().left, evt.pageY + verticalScrollPosition - $('#canvasDivDA_' + windowviewid).offset().top, true, 0, 0, windowviewid); } } else { $scope.MultiLanguageAnnationArray = []; console.log('1. annotationText: ' + annotationText); if ($('#dot_'+windowviewid).length > 0) { $('#dot_'+windowviewid).remove(); if ($('#sppeachBubble_'+windowviewid).length > 0) { $('#sppeachBubble_'+windowviewid).remove(); } if ($('.com_'+windowviewid).length > 0) { $('.com_'+windowviewid).remove(); } if ($('#bord_'+windowviewid).length > 0) { $('#bord_'+windowviewid).remove(); } if (TermAnnotationText.length > 0) { for (var i = 0; i <= TermAnnotationText.length - 1; i++) { $scope.MultiLanguageAnnationArray.push(TermAnnotationText[i]); } console.log('2. annotationText: ' + annotationText + ' , length: ' + $scope.MultiLanguageAnnationArray.length); $scope.createDynamicSpeechBubble(evt, evt.pageX + horizontlScrollPosition - $('#canvasDivDA_' + windowviewid).offset().left, evt.pageY + verticalScrollPosition - $('#canvasDivDA_' + windowviewid).offset().top, true, 0, 0, windowviewid); } } else { $scope.MultiLanguageAnnationArray = []; if (TermAnnotationText.length > 0) { for (var i = 0; i <= TermAnnotationText.length - 1; i++) { $scope.MultiLanguageAnnationArray.push(TermAnnotationText[i]); } console.log('3. annotationText: ' + annotationText + ' , length: ' + $scope.MultiLanguageAnnationArray.length); $scope.createDynamicSpeechBubble(evt, evt.pageX + horizontlScrollPosition - $('#canvasDivDA_' + windowviewid).offset().left, evt.pageY + verticalScrollPosition - $('#canvasDivDA_' + windowviewid).offset().top, true, 0, 0, windowviewid); } } } }, false); var PI = Math.PI; var PI2 = PI * 2; var cw, ch, imgW, imgH, mouseX, mouseY; var scaleFactor = 1.00; var context = imgCanvas.getContext('2d'); var img = new Image(); img.onload = start; img.src = src; function start() { context.drawImage(img, 0, 0); var viewOrientationId=$scope.GetwindowStoreData(windowviewid,'viewOrientationId'); if (isMaskImage == 'N') { if (bodyRegionId == 'modestyImg3' || bodyRegionId == 'modestyImg2') { var modestyImageInfo=$scope.GetwindowStoreData(windowviewid,'modestyImageInfo'); modestyImageInfo.push( { "bodyRegionId": bodyRegionId, "SRC": src, "Height": h, "Width": w, "x": x, "y": y, "haveMirror": 'false' }); } else { var totalCanvas; if ((viewOrientationId == '1') || (viewOrientationId == '4')) { totalCanvas = 9; } else if ((viewOrientationId == '2') || (viewOrientationId == '3')) { totalCanvas = 5; } else if ((viewOrientationId == '5')) { totalCanvas = 4; } else if ((viewOrientationId == '6')) { totalCanvas = 1; } if ($scope.ColoredImageSRC.length < totalCanvas) { if ($rootScope.isOpenResourceBtnClicked) { $scope.ColoredImageSRC.push( { "viewID": $rootScope.multiViewCounter, "bodyRegionId": bodyRegionId, "SRC": src, "Height": h, "Width": w, "x": x, "y": y, "haveMirror": 'false' } ); } else { $scope.ColoredImageSRC.push( { "bodyRegionId": bodyRegionId, "SRC": src, "Height": h, "Width": w, "x": x, "y": y, "haveMirror": 'false' } ); } } var imageCanvas; if ($rootScope.multiViewCounter != undefined) { imageCanvas = document.getElementById('imageCanvas' + bodyRegionId + '|' + windowviewid); } else { imageCanvas = document.getElementById('imageCanvas' + bodyRegionId + '|' + windowviewid); } if (imageCanvas != null || imageCanvas != undefined) { var width = imageCanvas.width; var ht = imageCanvas.height; var coloredCanvasContext = imageCanvas.getContext("2d"); var coloredImageData = coloredCanvasContext.getImageData(0, 0, width, ht); $scope.coloredImageCanvasList[parseInt(bodyRegionId - 1)] = coloredImageData; } if (($scope.ColoredImageSRC != null || $scope.ColoredImageSRC != undefined)) { var isEligibleForHighlight=false; if (((viewOrientationId == '1') || (viewOrientationId == '4')) && ($scope.ColoredImageSRC.length == 9)) { isEligibleForHighlight = true; } else if (((viewOrientationId == '2') || (viewOrientationId == '3')) && ($scope.ColoredImageSRC.length == 5)) { isEligibleForHighlight = true; } else if ((viewOrientationId == '5') && ($scope.ColoredImageSRC.length == 4)) { isEligibleForHighlight = true; } else if ((viewOrientationId == '6') && ($scope.ColoredImageSRC.length == 1)) { isEligibleForHighlight = true; } else { isEligibleForHighlight = false; } if (isEligibleForHighlight == true) { $scope.SetwindowStoreData(windowviewid,'coloredImageMRCanvasList',$scope.coloredImageMRCanvasList); $scope.SetwindowStoreData(windowviewid,'coloredImageCanvasList',$scope.coloredImageCanvasList); // set color image data $scope.SetwindowStoreData(windowviewid,'ColoredImageSRC',$scope.ColoredImageSRC); if ($rootScope.isOpenResourceBtnClicked && $rootScope.isTermClicked == false) { $scope.EnableUI(); if (($rootScope.multiViewInfoIndex + 1) < $rootScope.multiViewInfo.length) { $scope.DisableUI(); $rootScope.multiViewInfoIndex = $rootScope.multiViewInfoIndex + 1; $scope.openBodyView(); } } else { $scope.DisableUI(); if ($scope.isSearchDataLoaded) { $rootScope.isLoading = false; $('#spinner').css('visibility', 'hidden'); } var isHighLight=$scope.GetwindowStoreData(windowviewid,'isHighLight'); var isGenderChnage = $scope.GetwindowStoreData(windowviewid,'isGenderChnage'); var isViewChange = $scope.GetwindowStoreData(windowviewid,'isViewChange'); var isHighlightBodyByBodySystem=$scope.GetwindowStoreData(windowviewid,'isHighlightBodyByBodySystem'); var isExtract= $scope.GetwindowStoreData(windowviewid,'isExtract') var isListManagerSelected=$scope.GetwindowStoreData(windowviewid,'isListManagerSelected'); if (isExtract == true) { $rootScope.isLoading = true; $('#spinner').css('visibility', 'visible'); $scope.DisableUI(); $scope.highLightBody(windowviewid); } else if (isHighLight == true || (isListManagerSelected == true) || ((isGenderChnage == true) && (isHighLight == true)) || ((isViewChange == true) && (isHighLight == true)) || isExtract == true || isHighlightBodyByBodySystem == true) { console.log('2. $rootScope.isHighLight= ' + isHighLight) $rootScope.isLoading = true; $('#spinner').css('visibility', 'visible'); console.log('inside start of non flipped. ColoredImageSRC.length= ' + $scope.ColoredImageSRC.length) $scope.SetwindowStoreData(windowviewid,'isHighLight',true); console.log('just before highLightBody call'); $scope.DisableUI(); $scope.highLightBody(windowviewid); console.log('just after highLightBody call'); } else { //This block is executed when normal body is created and no further process like highlight,extract, etc $rootScope.isLoading = false; $('#spinner').css('visibility', 'hidden'); $scope.EnableUI(); } } } } console.log('DrawImage- ColoredImageSRC. pushed and length: ' + $scope.ColoredImageSRC.length); } } if (imgCanvas.id.match('_mci')) { var maskImgData = context.getImageData(0, 0, w, h); var MaskCanvasData = $scope.GetwindowStoreData(windowviewid,'MaskCanvasData'); if ($rootScope.isOpenResourceBtnClicked) { MaskCanvasData.push( { "viewID": $rootScope.multiViewCounter, "bodyRegionId": bodyRegionId, "canvasId": imgCanvas.id, "maskData": maskImgData, } ); } else { MaskCanvasData.push( { "bodyRegionId": bodyRegionId, "canvasId": imgCanvas.id, "maskData": maskImgData, } ); } } }; if (document.getElementById('canvasDivDA_' + windowviewid) != null) document.getElementById('canvasDivDA_' + windowviewid).appendChild(imgCanvas); } $scope.highLightBodyBasedOnIcolor = function (RGBColor,windowviewid) { //2. Find Actul Term No Based on Icolor. var ActualTermNo = $scope.getActualTermNumber(RGBColor, windowviewid); if (ActualTermNo != null) { //3. Find Term No List Based on ActualTermNo var TermList = $scope.getTermNumberList(ActualTermNo,windowviewid); if (TermList != null) { //4. $scope.HighlightBodyByTermList(TermList,windowviewid); } } } $scope.HighlightBodyOnExtract = function (windowviewid) { var previousHighlightList=$scope.GetwindowStoreData(windowviewid,'previousHighlightList'); var MaskCanvasData=$scope.GetwindowStoreData(windowviewid,'MaskCanvasData'); console.log(' insode HighlightBodyOnExtract. MaskCanvasData length= ' + MaskCanvasData.length + ', previousHighlightList.length= ' + previousHighlightList.length) $("#btnExtract_" + windowviewid).removeClass("btn-black"); $("#btnExtract_" + windowviewid).addClass("btn-primary"); if ($("#btnNormalMode_" + windowviewid).hasClass("btn-primary")) { $("#btnNormalMode_" + windowviewid).removeClass("btn-primary"); $("#btnNormalMode_" + windowviewid).addClass("btn-black"); } if ($("#btnHighLight_" + windowviewid).hasClass("btn-primary")) { $("#btnHighLight_" + windowviewid).removeClass("btn-primary"); $("#btnHighLight_" + windowviewid).addClass("btn-black"); } //terminate previous running workers to create space for new workers $scope.SetwindowStoreData(windowviewid,'layerNumber',$("#txtLayerNumberDA_" + windowviewid).val()); $scope.terminateCurrentlyRunningWPs(); var multiTermList = []; var CallBackBodyRegion = []; var selectedAnnotation; var isListManagerSelected=$scope.GetwindowStoreData(windowviewid,'isListManagerSelected'); var multiAnnotationIsON=$scope.GetwindowStoreData(windowviewid,'multiAnnotationIsON'); if ((previousHighlightList != null || previousHighlightList != undefined) && (previousHighlightList.length > 0) && isListManagerSelected && multiAnnotationIsON == true) { multiTermList = $scope.GetwindowStoreData(windowviewid,'AllTerms'); angular.forEach(previousHighlightList, function (value, key) { var ActualTermNo = $scope.getActualTermNumber(value, windowviewid); selectedAnnotation = ActualTermNo; if (ActualTermNo != null) { var TermList = $scope.getTermNumberList(ActualTermNo,windowviewid); if (TermList != null) { for (var i = 0; i < TermList.length; i++) { multiTermList.push(TermList[i]); } } } // to do }); } if (isListManagerSelected) { multiTermList = $scope.GetwindowStoreData(windowviewid,'AllTerms'); selectedAnnotation = $scope.GetwindowStoreData(windowviewid,'actualTermNumber'); } else if ((previousHighlightList != null || previousHighlightList != undefined) && (previousHighlightList.length > 0)) { angular.forEach(previousHighlightList, function (value, key) { var ActualTermNo = $scope.getActualTermNumber(value, windowviewid); selectedAnnotation = ActualTermNo; if (ActualTermNo != null) { var TermList = $scope.getTermNumberList(ActualTermNo,windowviewid); if (TermList != null) { for (var i = 0; i < TermList.length; i++) { multiTermList.push(TermList[i]); } } } // to do }); } //get term list to get term coordinates $scope.TermList = $scope.getTermNumberList(selectedAnnotation,windowviewid); $scope.termCoordinate = $scope.getTermCoordinate(selectedAnnotation); $timeout(function () { var viewOrientationId=$scope.GetwindowStoreData(windowviewid,'viewOrientationId'); var loopLength = 0; var ColoredImageSRC=$scope.GetwindowStoreData(windowviewid,'ColoredImageSRC'); if (((viewOrientationId == '1') || (viewOrientationId == '4')) && (ColoredImageSRC.length == 9)) { loopLength = 9; } else if (((viewOrientationId == '2') || (viewOrientationId == '3')) && (ColoredImageSRC.length == 5)) { loopLength = 5; } else if ((viewOrientationId == '5') && (ColoredImageSRC.length == 4)) { loopLength = 4; } else if ((viewOrientationId == '6') && (ColoredImageSRC.length == 1)) { loopLength = 1; } if (loopLength !== 0) { for (var x = 0; x < loopLength; x++) { if (MaskCanvasData[x] != null || MaskCanvasData[x] != undefined) { var bodyRegionId = MaskCanvasData[x].bodyRegionId; var canvasId = MaskCanvasData[x].canvasId; var maskData = null; maskData = MaskCanvasData[x].maskData; var coloredImageDataVar = null; var grayImageDataVar = null; var white = null; if (canvasId.match('_MR')) { var coloredImageMRCanvasList=$scope.GetwindowStoreData(windowviewid,'coloredImageMRCanvasList'); if (coloredImageMRCanvasList.length>0) { coloredImageDataVar = coloredImageMRCanvasList[bodyRegionId]; } var whiteImageMRDataList=$scope.GetwindowStoreData(windowviewid,'whiteImageMRDataList'); if (whiteImageMRDataList.length>0) { white = whiteImageMRDataList[bodyRegionId]; } } else { var coloredImageCanvasList=$scope.GetwindowStoreData(windowviewid,'coloredImageCanvasList'); if (coloredImageCanvasList.length>0) { coloredImageDataVar = coloredImageCanvasList[bodyRegionId - 1]; } var whiteImageDataList=$scope.GetwindowStoreData(windowviewid,'whiteImageDataList'); if (whiteImageDataList.length>0) { white = whiteImageDataList[bodyRegionId - 1]; } } var worker = new Worker('extract-wp.js'); //push workers in array to further used the refernece to delete the workers $scope.runningWorkers.push({ 'workerName': worker }) console.log('for BRID = ' + bodyRegionId + ', coloredImageDataVar: ' + coloredImageDataVar + ', maskData= ' + maskData + ', white= ' + white) if (coloredImageDataVar != null && maskData != null && white != null) { worker.postMessage({ 'termList': multiTermList, 'maskCanvasData': maskData, 'coloredImageData': coloredImageDataVar, 'grayImageData': white, 'bodyRegionId': bodyRegionId, 'canvasId': canvasId }); } //} worker.onmessage = function (e) { console.log('callback in extract for e.data.bodyRegionId: ' + e.data.bodyRegionId + ', time: ' + new Date().toTimeString().replace(/.*(\d{2}:\d{2}:\d{2}).*/, "$1")); var updatedData = e.data.value; var bodyRegionId = e.data.bodyRegionId; var canvasId = (e.data.canvasId).replace('_mci', ''); var grayCanvasID = canvasId; var grayCanvas = document.getElementById(grayCanvasID); var grayCanvasContext = grayCanvas.getContext("2d"); grayCanvasContext.putImageData(updatedData, 0, 0); //to resolve lateral arm black issue in highlight mode if (viewOrientationId == 5 && (bodyRegionId == 6 || bodyRegionId == 4)) { var canavsWidth = parseInt(grayCanvas.width); var canavsHeight = parseInt(grayCanvas.height); console.log('canavsWidth= ' + canavsWidth + ', canavsHeight= ' + canavsHeight) var imgData = grayCanvasContext.getImageData(0, 0, canavsWidth, canavsHeight); var data = imgData.data; var c = 0; for (var i = 0; i < data.length; i += 4) { if (data[i] == data[i + 1] && data[i + 1] == data[i + 2] && data[i + 2] === 0) { data[i + 3] = 0; } } grayCanvasContext.putImageData(imgData, 0, 0); } CallBackBodyRegion.push(bodyRegionId); $scope.doAligneCanvasWithTerm = false; if (((viewOrientationId == '1') || (viewOrientationId == '4')) && (CallBackBodyRegion.length == 9)) { $scope.doAligneCanvasWithTerm = true; } else if (((viewOrientationId == '2') || (viewOrientationId == '3')) && (CallBackBodyRegion.length == 5)) { $scope.doAligneCanvasWithTerm = true; } else if (((viewOrientationId == '5')) && (CallBackBodyRegion.length == 1)) { $scope.doAligneCanvasWithTerm = true; } else if (((viewOrientationId == '6')) && (CallBackBodyRegion.length == 1)) { $scope.doAligneCanvasWithTerm = true; } if ($scope.GetwindowStoreData(windowviewid,'multiAnnotationIsON') == true) { // commented ,no further use // if (canvasId.match('_MR')) // { // var updatedWhiteImageMRDataList=$scope.GetwindowStoreData(windowviewid,'updatedWhiteImageMRDataList'); // updatedWhiteImageMRDataList[bodyRegionId] = updatedData; // } // else // { // var updatedWhiteImageDataList=$scope.GetwindowStoreData(windowviewid,'updatedWhiteImageDataList'); // updatedWhiteImageDataList[bodyRegionId - 1] = updatedData; // } } else { if (canvasId.match('_MR')) { var whiteImageMRDataList=$scope.GetwindowStoreData(windowviewid,'whiteImageMRDataList'); whiteImageMRDataList[bodyRegionId] = e.data.value; } else { var whiteImageDataList=$scope.GetwindowStoreData(windowviewid,'whiteImageDataList'); whiteImageDataList[bodyRegionId - 1] = e.data.value; } } if ($scope.doAligneCanvasWithTerm == true) { $scope.aligneCanvasWithTerm(windowviewid); $scope.EnableUI(); if ($scope.runningWorkers != null || $scope.runningWorkers != undefined) { var workerCount = $scope.runningWorkers.length; if (workerCount > 0) { for (var i = workerCount - 1; i >= 0; i--) { var runningWorker = $scope.runningWorkers[i].workerName; runningWorker.terminate(); $scope.runningWorkers.splice(i, 1); } } } } }; worker.onerror = function (e) { alert('Error: Line ' + e.lineno + ' in ' + e.filename + ': ' + e.message); }; } } } }, 500) } $scope.HighlightBodyByTermList = function (TermList,windowviewid) { // $("#btnTranparency").attr('disabled', 'disabled'); var nlayer=$scope.GetwindowStoreData(windowviewid,'layerNumber'); $scope.SetwindowStoreData(windowviewid,'currentLayerNumber',nlayer); $scope.SetwindowStoreData(windowviewid,'layerNumber',$("#txtLayerNumberDA_" + windowviewid).val()); $rootScope.isLoading = true; $('#spinner').css('visibility', 'visible'); console.log('HighlightBodyByTermList is called'); $scope.highlightedBR = []; $scope.terminateCurrentlyRunningWPs(); $timeout(function () { var MaskCanvasData=$scope.GetwindowStoreData(windowviewid,'MaskCanvasData'); var viewOrientationId=$scope.GetwindowStoreData(windowviewid,'viewOrientationId'); var ColoredImageSRC=$scope.GetwindowStoreData(windowviewid,'ColoredImageSRC'); var loopLength = 0; if (((viewOrientationId == '1') || (viewOrientationId == '4')) && (ColoredImageSRC.length == 9)) { loopLength = 9; } else if (((viewOrientationId == '2') || (viewOrientationId == '3')) && (ColoredImageSRC.length == 5)) { loopLength = 5; } else if ((viewOrientationId == '5') && (ColoredImageSRC.length == 4)) { loopLength = 4; } else if ((viewOrientationId == '6') && (ColoredImageSRC.length == 1)) { loopLength = 1; } var coloredImageMRCanvasList=$scope.GetwindowStoreData(windowviewid,'coloredImageMRCanvasList'); var coloredImageCanvasList=$scope.GetwindowStoreData(windowviewid,'coloredImageCanvasList'); var grayImageMRDataList=$scope.GetwindowStoreData(windowviewid,'grayImageMRDataList'); var grayImageDataList=$scope.GetwindowStoreData(windowviewid,'grayImageDataList'); var updatedGrayDataList=$scope.GetwindowStoreData(windowviewid,'updatedGrayDataList'); var updatedGrayMRDataList=$scope.GetwindowStoreData(windowviewid,'updatedGrayMRDataList'); for (var x = 0; x < loopLength; x++) { console.log('x value= ' + x); if (MaskCanvasData[x] != null || MaskCanvasData[x] != undefined) { var bodyRegionId = MaskCanvasData[x].bodyRegionId; var canvasId = MaskCanvasData[x].canvasId; var maskData = null; maskData = MaskCanvasData[x].maskData; var coloredImageDataVar = null; var grayImageDataVar = null; var white; if (canvasId.match('_MR')) { if (coloredImageMRCanvasList.length>0) { coloredImageDataVar = coloredImageMRCanvasList[bodyRegionId]; } if ($scope.GetwindowStoreData(windowviewid,'multiAnnotationIsON') == true) { //on layer change we need the fresh data not the updated one if ($scope.isLayerChange == true) { if (grayImageMRDataList[bodyRegionId] != null || grayImageMRDataList[bodyRegionId] != undefined) { grayImageDataVar = grayImageMRDataList[bodyRegionId]; } } else { if (updatedGrayDataList[bodyRegionId - 1] == null || updatedGrayDataList[bodyRegionId - 1] == undefined) { if (grayImageMRDataList[bodyRegionId] != null || grayImageMRDataList[bodyRegionId] != undefined) { grayImageDataVar = grayImageMRDataList[bodyRegionId]; } } else { if (updatedGrayMRDataList[bodyRegionId] != null || updatedGrayMRDataList[bodyRegionId] != undefined) { grayImageDataVar = updatedGrayMRDataList[bodyRegionId] } } } } else { if (grayImageMRDataList[bodyRegionId] != null || grayImageMRDataList[bodyRegionId] != undefined) { grayImageDataVar = grayImageMRDataList[bodyRegionId]; } } } else { if (coloredImageCanvasList.length>0) { coloredImageDataVar = coloredImageCanvasList[bodyRegionId - 1]; } if ($scope.GetwindowStoreData(windowviewid,'multiAnnotationIsON') == true) { //on layer change we need the fresh data not the updated one if ($scope.isLayerChange == true) { if (grayImageDataList[bodyRegionId - 1] != null || grayImageDataList[bodyRegionId - 1] != undefined) { grayImageDataVar = grayImageDataList[bodyRegionId - 1]; } } else { // this code is for the case where user first click on normal mode then extract then again highlight then we need to call highlight body in gray mode //and then highlight the previously selected body regions at the time of normal mode. if (updatedGrayDataList[bodyRegionId - 1] == null || updatedGrayDataList[bodyRegionId - 1] == undefined) { if (grayImageDataList[bodyRegionId - 1] != null || grayImageDataList[bodyRegionId - 1] != undefined) { grayImageDataVar = grayImageDataList[bodyRegionId - 1]; } } else { if (updatedGrayDataList[bodyRegionId - 1] != null || updatedGrayDataList[bodyRegionId - 1] != undefined) { // for normal case means without interdepency button case. grayImageDataVar = updatedGrayDataList[bodyRegionId - 1]; } } } } else if (grayImageDataList[bodyRegionId - 1] != null || grayImageDataList[bodyRegionId - 1] != undefined) { grayImageDataVar = grayImageDataList[bodyRegionId - 1]; } } var worker = new Worker('term-number-wp.js'); //push workers in array to further used the refernece to delete the workers $scope.runningWorkers.push({ 'workerName': worker }) console.log('before worker call BRID: ' + bodyRegionId) //if (grayImageDataVar != null && coloredImageDataVar != null && maskData != null) { if (grayImageDataVar != null && coloredImageDataVar != null && maskData != null && TermList != undefined && TermList.length > 0) { worker.postMessage({ 'termList': TermList, 'maskCanvasData': maskData, 'coloredImageData': coloredImageDataVar, 'grayImageData': grayImageDataVar, 'bodyRegionId': bodyRegionId, 'canvasId': canvasId }); } else { $('#spinner').css('visibility', 'hidden') $rootScope.isLoading = false; } worker.onmessage = function (e) { console.log('callback for e.data.bodyRegionId: ' + e.data.bodyRegionId + ', time: ' + new Date().toTimeString().replace(/.*(\d{2}:\d{2}:\d{2}).*/, "$1")); var updatedData = e.data.value; var bodyRegionId = e.data.bodyRegionId; var canvasId = (e.data.canvasId).replace('_mci', ''); var grayCanvasID = canvasId; var grayCanvas = document.getElementById(grayCanvasID); if (grayCanvas != null) { var grayCanvasContext = grayCanvas.getContext("2d"); var canvasHeight = grayCanvas.height + 'px'; var canvasWidth = grayCanvas.width + 'px'; grayCanvasContext.clearRect(0, 0, canvasHeight, canvasWidth) grayCanvasContext.putImageData(updatedData, 0, 0); $scope.highlightedBR.push({ 'bodyRegionId': bodyRegionId }); } if (canvasId.match('_MR')) { updatedGrayMRDataList[bodyRegionId] = updatedData; } else updatedGrayDataList[bodyRegionId - 1] = updatedData; console.log('$scope.highlightedBR.length= ' + $scope.highlightedBR.length) if ($scope.highlightedBR != null || $scope.highlightedBR != undefined) { if (((viewOrientationId == '1') || (viewOrientationId == '4')) && ($scope.highlightedBR.length == 9)) { $scope.doAligneCanvasWithTerm = true; } else if (((viewOrientationId == '2') || (viewOrientationId == '3')) && ($scope.highlightedBR.length == 5)) { $scope.doAligneCanvasWithTerm = true; } else if (((viewOrientationId == '5')) && ($scope.highlightedBR.length == 1)) { $scope.doAligneCanvasWithTerm = true; } else if (((viewOrientationId == '6')) && ($scope.highlightedBR.length == 1)) { $scope.doAligneCanvasWithTerm = true; } else { $scope.doAligneCanvasWithTerm = false; } if ($scope.doAligneCanvasWithTerm == true) { var isHighlightBodyByBodySystem=$scope.GetwindowStoreData(windowviewid,'isHighlightBodyByBodySystem'); var previousHighlightList=$scope.GetwindowStoreData(windowviewid,'previousHighlightList'); var isListManagerSelected=$scope.GetwindowStoreData(windowviewid,'isListManagerSelected'); var isGenderChnage = $scope.GetwindowStoreData(windowviewid,'isGenderChnage'); var isViewChange = $scope.GetwindowStoreData(windowviewid,'isViewChange'); var isHighlightBodyWithCBTermData=$scope.GetwindowStoreData(windowviewid,'isHighlightBodyWithCBTermData'); if (isListManagerSelected == true) { $scope.aligneCanvasWithTerm(windowviewid); } else if (isHighlightBodyWithCBTermData == true) { // added by Birendra // show annotation term for curriculum data // get actual term to highlight body on selected region //var actualterm= $scope.daOpenInOtherModules.selectedStructureId; /// $scope.TermList = $scope.getTermNumberList(actualterm); // $scope.termCoordinate = $scope.getTermCoordinate(actualterm); $('#canvasDivDA_' + windowviewid).scrollLeft($scope.daOpenInOtherModules.canvasHScrollX); $('#canvasDivDA_' + windowviewid).scrollTop($scope.daOpenInOtherModules.canvasVScrollX); $scope.SetwindowStoreData(windowviewid,'CanvasDivTopPosition',$("#canvasDivDA_" + windowviewid).scrollTop()); $scope.SetwindowStoreData(windowviewid,'CanvasDivLeftPosition',$("#canvasDivDA_" + windowviewid).scrollLeft()); var CurriculumTermData=$scope.GetwindowStoreData(windowviewid,'CurriculumTermData'); for (var i = 0; i < CurriculumTermData.length; i++) { $scope.MultiLanguageAnnationArray = []; var annotationtext = $scope.GetAnnotationText(parseInt(CurriculumTermData[i].termNumber),windowviewid); var TermAnnotationText=$scope.GetwindowStoreData(windowviewid,'TermAnnotationText'); if(TermAnnotationText.length>0) { for (var j = 0; j <= TermAnnotationText.length - 1; j++) { $scope.MultiLanguageAnnationArray.push(TermAnnotationText[j]); } $scope.createDynamicSpeechBubble('CBAnnotation', CurriculumTermData[i].x, CurriculumTermData[i].y, true, CurriculumTermData[i].tips_x, CurriculumTermData[i].tips_y,windowviewid); } } // finish CB window load $rootScope.CBWindowLoadComplete=true; } else if (previousHighlightList != undefined && previousHighlightList.length > 0 && (isGenderChnage == true || isViewChange == true)) { if (viewOrientationId == '1' || viewOrientationId == '4') { $('#canvasDivDA_' + windowviewid).scrollLeft($('#canvasDivDA_' +windowviewid).width() / 2) $('#canvasDivDA_' + windowviewid).scrollTop($scope.imageVerticalScrollPosition); } else { $('#canvasDivDA_' + windowviewid).scrollTop($scope.imageVerticalScrollPosition); $('#canvasDivDA_' + windowviewid).scrollLeft($scope.imageHorizontlScrollPosition); $rootScope.isLoading = false; } $('#spinner').css('visibility', 'hidden'); } else if (isHighlightBodyByBodySystem == true || isListManagerSelected == true) { $rootScope.isLoading = false; $('#spinner').css('visibility', 'hidden'); } else { if ($scope.GetwindowStoreData(windowviewid,'isZoomed')) { var lastSelectedAnnotation; angular.forEach(previousHighlightList, function (value, key) { var ActualTermNos = $scope.getActualTermNumber(value, windowviewid); lastSelectedAnnotation = ActualTermNos; }); if (lastSelectedAnnotation != undefined) { $scope.TermList = $scope.getTermNumberList(lastSelectedAnnotation,windowviewid); $scope.termCoordinate = $scope.getTermCoordinate(lastSelectedAnnotation); console.log('last selected Annotation= ' + lastSelectedAnnotation); console.log('termListCount= ' + $scope.TermList.length); console.log('termCoordinate= ' + $scope.termCoordinate.x); $scope.aligneCanvasWithTerm(windowviewid); } } else { $('#canvasDivDA_' + windowviewid).scrollTop($scope.imageVerticalScrollPosition); $('#canvasDivDA_' + windowviewid).scrollLeft($scope.imageHorizontlScrollPosition); } } $rootScope.isLoading = false; $('#spinner').css('visibility', 'hidden'); $scope.EnableUI(); if ($scope.runningWorkers != null || $scope.runningWorkers != undefined) { var workerCount = $scope.runningWorkers.length; if (workerCount > 0) { for (var i = workerCount - 1; i >= 0; i--) { var runningWorker = $scope.runningWorkers[i].workerName; runningWorker.terminate(); $scope.runningWorkers.splice(i, 1); } } } } } }; worker.onerror = function (e) { alert('Error: Line ' + e.lineno + ' in ' + e.filename + ': ' + e.message); }; } } $timeout(function () { var termSelectedName =$scope.GetwindowStoreData(windowviewid,'searchSelectedText');// $rootScope.searchSelectedText; if (termSelectedName == "Cardiovascular") { termSelectedName = "Skin"; } if (document.getElementById('txtLayerNumberDA_'+windowviewid).value == "Skin" || termSelectedName == "Skin") { $rootScope.isLoading = false; $('#spinner').css('visibility', 'hidden'); $scope.EnableUI(); } }, 100); }, 100) } $scope.HighlightBodyByTermListForBodySystem = function (TermList, windowviewid) { $scope.isScrolledToHighlightedBR = false; //disable the background till the system gets highlighted. $scope.DisableUI(); $('.ui-slider').slider('disable'); var currentNumber=$scope.GetwindowStoreData(windowviewid,'currentLayerNumber'); if ($scope.GetwindowStoreData(windowviewid,'isTransparencyActivated')) { $scope.SetwindowStoreData(windowviewid,'layerNumber',currentNumber); } else { $scope.SetwindowStoreData(windowviewid,'layerNumber',$("#txtLayerNumberDA_" + windowviewid).val()); $scope.SetwindowStoreData(windowviewid,'currentLayerNumber',$("#txtLayerNumberDA_" + windowviewid).val()); } $("#btnTranparency_" + windowviewid).attr('disabled', 'disabled'); $rootScope.isLoading = true; $('#spinner').css('visibility', 'visible'); if ($scope.GetwindowStoreData(windowviewid,'isHighLight') == true) { $scope.CloseTransparencyBox(windowviewid); } console.log('HighlightBodyByTermListForBodySystem is called'); var grayImageDataVar = null; var bodyVid=$scope.GetwindowStoreData(windowviewid,'voId'); var lNumber=$scope.GetwindowStoreData(windowviewid,'layerNumber'); var zoomValue=$scope.GetwindowStoreData(windowviewid,'zoomInOut'); var systemNumber=$scope.GetwindowStoreData(windowviewid,'systemNumber'); TermService.getTermData(lNumber, bodyVid, systemNumber, zoomValue) .then( function (result) { if (result.length == 0) { $rootScope.isLoading = false; $('#spinner').css('visibility', 'hidden'); //remove existing data and draw fresh data $scope.removeCurrentHighlightedBodySystem(windowviewid); $scope.message = AIAConstants.NO_BODY_SYSTEM_AVAILABLE; $("#daMessageModal").modal('show'); $scope.EnableUI(); $('.ui-slider').slider('enable'); } else { console.log('1. HighlightBodyByTermListForBodySystem is called'); $rootScope.macthedTermList = result; var termNo = 0; var pixcelLocation = 0; var prevBRID = 0; if ($rootScope.macthedTermList.length > 0) { console.log('2. HighlightBodyByTermListForBodySystem is called'); //remove existing data and draw fresh data var grayImageDataList=$scope.GetwindowStoreData(windowviewid,'grayImageDataList'); var grayImageMRDataList=$scope.GetwindowStoreData(windowviewid,'grayImageMRDataList'); var whiteImageDataList=$scope.GetwindowStoreData(windowviewid,'whiteImageDataList'); var whiteImageMRDataList=$scope.GetwindowStoreData(windowviewid,'whiteImageMRDataList'); for (var i = 0; i < grayImageDataList.length; i++) { var grayCanvasID = 'imageCanvas' + parseInt(i + 1) + "|" + windowviewid; var grayCanvas = document.getElementById(grayCanvasID); if (grayCanvas != null) { var grayCanvasContext = grayCanvas.getContext("2d"); var canvasHeight = grayCanvas.height; var canvasWidth = grayCanvas.width; grayCanvasContext.clearRect(0, 0, canvasHeight, canvasWidth) if ($scope.GetwindowStoreData(windowviewid,'isExtract')) { grayCanvasContext.putImageData(whiteImageDataList[parseInt(i)], 0, 0); } else { grayCanvasContext.putImageData(grayImageDataList[parseInt(i)], 0, 0); } } } for (var i = 4; i <= grayImageMRDataList.length; i++) { var grayCanvasMRID = 'imageCanvas' + i + '_MR' + "|" + windowviewid; var grayCanvasMR = document.getElementById(grayCanvasMRID); if (grayCanvasMR != null) { var grayCanvasContextMR = grayCanvasMR.getContext("2d"); var canvasHeight = grayCanvasMR.height; var canvasWidth = grayCanvasMR.width; grayCanvasContextMR.clearRect(0, 0, canvasHeight, canvasWidth) if ($scope.GetwindowStoreData(windowviewid,'isExtract')) { grayCanvasContext.putImageData(whiteImageMRDataList[parseInt(i)], 0, 0); } else { grayCanvasContextMR.putImageData(grayImageMRDataList[parseInt(i)], 0, 0); } } } var coloredImageCanvasList=$scope.GetwindowStoreData(windowviewid,'coloredImageCanvasList'); angular.forEach($rootScope.macthedTermList, function (value, key) { var TermExistInBodyRegionId = value.bodyRegionId; console.log('3. HighlightBodyByTermListForBodySystem is called TermExistInBodyRegionId=' + TermExistInBodyRegionId); if (TermExistInBodyRegionId != undefined) { if (prevBRID != TermExistInBodyRegionId) { var grayCanvasID = 'imageCanvas' + TermExistInBodyRegionId + "|" + windowviewid; var grayCanvas = document.getElementById(grayCanvasID); if (grayCanvas != null) { var grayCanvasContext = grayCanvas.getContext("2d"); var canvasHeight = grayCanvas.height; var canvasWidth = grayCanvas.width; var canvasX = grayCanvas.style.left; var canvasY = grayCanvas.style.top; grayCanvasContext.clearRect(0, 0, canvasHeight, canvasWidth) if ($scope.GetwindowStoreData(windowviewid,'isExtract')) { grayCanvasContext.putImageData(whiteImageDataList[parseInt(TermExistInBodyRegionId) - 1], 0, 0); } else { grayCanvasContext.putImageData(grayImageDataList[parseInt(TermExistInBodyRegionId) - 1], 0, 0); } var gData = grayCanvasContext.getImageData(0, 0, canvasWidth, canvasHeight); //for mirror images var grayCanvasMRID = 'imageCanvas' + TermExistInBodyRegionId + '_MR' + "|" + windowviewid; var grayCanvasMR = document.getElementById(grayCanvasMRID); var grayCanvasMRX; var grayCanvasMRY; var bodyVid=$scope.GetwindowStoreData(windowviewid,'voId'); //draw a canvas for same bodyregion wich will be flipped after coloring the body system if (bodyVid == "1" || bodyVid == "4" || bodyVid == "5" || bodyVid == "8") { if (TermExistInBodyRegionId == 4 || TermExistInBodyRegionId == 5 || TermExistInBodyRegionId == 6) { var grayCanvasMRID = 'imageCanvas' + TermExistInBodyRegionId + '_MR' + "|" + windowviewid; var grayCanvasMR = document.getElementById(grayCanvasMRID); grayCanvasMRX = grayCanvasMR.style.left; grayCanvasMRY = grayCanvasMR.style.top; var FlipedImgCanvas = document.createElement('canvas'); FlipedImgCanvas.height = canvasHeight; FlipedImgCanvas.width = canvasWidth; FlipedImgCanvas.setAttribute("data-IsMirrored", "Y") FlipedImgCanvas.style.position = "absolute"; FlipedImgCanvas.style.left = canvasX + "px"; FlipedImgCanvas.style.top = canvasY + "px"; FlipedImgCanvas.style.visibility = 'hidden'; FlipedImgCanvas.id = 'imageCanvas' + TermExistInBodyRegionId + '_MR' + "|" + windowviewid; //remove previous canavs $('#' + grayCanvasMRID).remove(); //add new canvas on same location and after flipping it will be added to mirrored position document.getElementById('canvasDivDA_' + windowviewid).appendChild(FlipedImgCanvas); //put grayData var filppedCanvasContx = FlipedImgCanvas.getContext("2d"); filppedCanvasContx.putImageData(gData, 0, 0); } } grayImageDataVar = null; var macthedData = new jinqJs() .from($rootScope.macthedTermList) .where('bodyRegionId == ' + TermExistInBodyRegionId) .select(); var coloredImageDataVar=null; if (coloredImageCanvasList.length>0) { coloredImageDataVar = coloredImageCanvasList[parseInt(TermExistInBodyRegionId)-1]; } var grayImageDataValue = gData.data; var coloredImageDataValue = coloredImageDataVar.data; angular.forEach(macthedData, function (value2, key) { $rootScope.termListWithLocation = value2.terms; //pick the color from coloredImage data and put on gray imagedata angular.forEach($rootScope.termListWithLocation.PixelLocations, function (value1, key1) { var RED = coloredImageDataValue[value1]; var GREEN = coloredImageDataValue[value1 + 1]; var BLUE = coloredImageDataValue[value1 + 2]; grayImageDataValue[value1] = RED; grayImageDataValue[value1 + 1] = GREEN; grayImageDataValue[value1 + 2] = BLUE; }) //for non mirrored bpdy regions var grayCanvasID = 'imageCanvas' + TermExistInBodyRegionId + "|" + windowviewid; var grayCanvas = document.getElementById(grayCanvasID); if (grayCanvas != null) { var grayCanvasContext = grayCanvas.getContext("2d"); grayCanvasContext.putImageData(gData, 0, 0); } //for mirror body regions if (TermExistInBodyRegionId == 4 || TermExistInBodyRegionId == 5 || TermExistInBodyRegionId == 6) { var grayCanvasMRID = 'imageCanvas' + TermExistInBodyRegionId + '_MR' + "|" + windowviewid; var grayCanvasMR = document.getElementById(grayCanvasMRID); if (grayCanvasMR != null) { var grayCanvasMRContext = grayCanvasMR.getContext("2d"); grayCanvasMRContext.save(); grayCanvasMRContext.translate(canvasWidth, 0); grayCanvasMRContext.scale(-1, 1); //flip does not work with putImageData, that is why we used drawImage grayCanvasMRContext.drawImage(grayCanvas, 0, 0, canvasWidth, canvasHeight, 0, 0, canvasWidth, canvasHeight); grayCanvasMRContext.restore(); //set this canavs on the actual posution of mirror image grayCanvasMR.style.left = grayCanvasMRX; grayCanvasMR.style.top = grayCanvasMRY; grayCanvasMR.style.visibility = 'visible'; } } $('#spinner').css('visibility', 'hidden') $rootScope.isLoading = false; //document.getElementById("daView").style.pointerEvents = "auto"; //$('.ui-slider').slider('enable'); $scope.EnableUI(); prevBRID = TermExistInBodyRegionId; $scope.scrollToHighlightedBodyRegion(TermExistInBodyRegionId, windowviewid); }) } } } else { $('#spinner').css('visibility', 'hidden') $rootScope.isLoading = false; $scope.EnableUI(); $('.ui-slider').slider('enable'); } }) } } }, function (error) { console.log(' Error in getting term data = ' + error); $('#spinner').css('visibility', 'hidden') $rootScope.isLoading = false; $scope.EnableUI(); //remove existing data and draw fresh data $scope.removeCurrentHighlightedBodySystem(windowviewid); $scope.message = error; $("#daMessageModal").modal('show'); }); } $scope.scrollToHighlightedBodyRegion = function (TermExistInBodyRegionId, windowviewid) { if ($scope.isScrolledToHighlightedBR == false) { var viewOrientationId=$scope.GetwindowStoreData(windowviewid,'viewOrientationId'); var BodyRegionData=$scope.GetwindowStoreData(windowviewid,'BodyRegionData'); var bodyRegionCoordinates = new jinqJs() .from(BodyRegionData.BodyRegionViews.BodyRegionCordinates) .where('_ViewOrientationId == ' + viewOrientationId) .select(); $scope.TermExistInBodyRegionData = new jinqJs() .from(bodyRegionCoordinates) .where('_BodyRegionId == ' + TermExistInBodyRegionId) .select(); var rectangle = scaleRectangle($scope.TermExistInBodyRegionData[0]._X, $scope.TermExistInBodyRegionData[0]._Y, $scope.TermExistInBodyRegionData[0]._Height, $scope.TermExistInBodyRegionData[0]._Width, $scope.TermExistInBodyRegionData[0]._MirrorValue,windowviewid); $('#canvasDivDA_' + windowviewid).scrollTop(rectangle.scaledY); $scope.isScrolledToHighlightedBR = true; } } $scope.createTermListByPreviousTermsAndHighlight = function (windowviewid) { var multiTermList = []; var previousHighlightList=$scope.GetwindowStoreData(windowviewid,'previousHighlightList'); angular.forEach(previousHighlightList, function (value, key) { var ActualTermNo = $scope.getActualTermNumber(value, windowviewid); if (ActualTermNo != null && ActualTermNo != undefined) { var TermList = $scope.getTermNumberList(ActualTermNo,windowviewid); if (TermList != null) { for (var i = 0; i < TermList.length; i++) { multiTermList.push(TermList[i]); } } } }); console.log('createTermListByPreviousTermsAndHighlight is called'); if ((multiTermList != undefined && multiTermList != null) && multiTermList.length > 0) { $timeout(function () { $scope.HighlightBodyByTermList(multiTermList,windowviewid); }, 50); } else { $rootScope.isLoading = false; $('#spinner').css('visibility', 'hidden'); } } $scope.GetRGBColor = function (maskCanvasContext, actulalX, actualY, x, y) { var pixelData = maskCanvasContext.getImageData(Math.round(actulalX - x), Math.round(actualY - y), 1, 1); pixelData.data[0] = pixelData.data[0] - 9; pixelData.data[1] = pixelData.data[1] - 9; pixelData.data[2] = pixelData.data[2] - 9; var Red; var Green; var Blue; var zero = "0"; if ((pixelData.data[0]).toString().length != 2) { Red = zero.concat((pixelData.data[0]).toString()) } else { Red = (pixelData.data[0]).toString() } if ((pixelData.data[1]).toString().length != 2) { Green = zero.concat((pixelData.data[1]).toString()) } else { Green = (pixelData.data[1]).toString() } if ((pixelData.data[2]).toString().length != 2) { Blue = zero.concat((pixelData.data[2]).toString()) } else { Blue = (pixelData.data[2]).toString() } var RGBColor = (Red + Green + Blue); return RGBColor; } //get annotation from term number $scope.GetAnnotationText = function (termNumber,windowviewid) { $scope.SetwindowStoreData(windowviewid,'TermAnnotationText',[]); var annotationText; var annotation = []; //0 var figLeafTermNo = 5868; // to do declare constant for this if (parseInt(termNumber) != parseInt(figLeafTermNo)) { $scope.TermNumber = termNumber; for (var j = 0; j <= $rootScope.lexiconLanguageArray.length - 1; j++) { var TermNData=$scope.GetwindowStoreData(windowviewid,'TermNumberData'); if (TermNData != null || TermNData != undefined) { $scope.matchedTermNoData = new jinqJs() .from(TermNData.TermData.Term) .where('_TermNumber == ' + termNumber) .select(); if ($scope.matchedTermNoData != null || $scope.matchedTermNoData != undefined) { //1. var actualTermNo = 0; for (var z = 0; z < $scope.matchedTermNoData.length; z++) { //send actual term no to get the term text. actualTermNo = $scope.matchedTermNoData[0]._ActualTermNumber; annotationText = $scope.GetAnnotationBasedOnActualTermNo(actualTermNo, $rootScope.lexiconLanguageArray[j].language, windowviewid); annotation.push(annotationText); // $rootScope.annotationText.push(annotationText); $scope.SetwindowStoreData(windowviewid,'TermAnnotationText',annotation); $scope.SetwindowStoreData(windowviewid,'actualTermNumber',actualTermNo); break; }; //2. } else { // send term no to vocab json data to get the text } } else { var currentBodyViewId = $scope.GetwindowStoreData(windowviewid,'voId'); var termJsonPath = '~/../content/data/json/da/body-views/' + currentBodyViewId + '/da_dat_tm_sg_' + currentBodyViewId + '.json'; DataService.getAnotherJson(termJsonPath) .then( function (result) { $scope.SetwindowStoreData(windowviewid,'TermNumberData',result); $scope.GetAnnotationText(termNumber,windowviewid); }) } } } return annotation; } $scope.GetAnnotationBasedOnActualTermNo = function (actualTermNo, language, windowviewid) { // clear prev annotation $scope.SetwindowStoreData(windowviewid,'TermAnnotationText',[]); var Annotation; var vocabTermDataArray = $scope.GetwindowStoreData(windowviewid, 'vocabTermDataArray'); for (var j = 0; j <= vocabTermDataArray.length - 1; j++) { if (vocabTermDataArray[j].language == language) { if (vocabTermDataArray[j].VocabTermData != null || vocabTermDataArray[j].VocabTermData != undefined) { $scope.matchedActualTermData = new jinqJs() .from(vocabTermDataArray[j].VocabTermData.VocabTerms.Term) .where('_ActualTermNumber == ' + actualTermNo) .select(); if ($scope.matchedActualTermData != null || $scope.matchedActualTermData != undefined) { for (var z = 0; z <= $scope.matchedActualTermData.length; z++) { //send actual term no to get the term text. Annotation = $scope.matchedActualTermData[0]._TermText; // alert("Annotation : " + Annotation); break; }; } return Annotation; } else { return null; } } } } //layer change function $scope.LayerChange = function (windowviewid) { $scope.DisableUI(); $rootScope.CloseListManager(); $scope.isLayerChange = true; $rootScope.isLoading = true; $('#spinner').css('visibility', 'visible'); if ($rootScope.isCallFromOtherModule) { $scope.SetwindowStoreData(windowviewid,'isHighlightBodyWithCBTermData',false); $scope.SetwindowStoreData(windowviewid,'fullTermlist',[]); $scope.SetwindowStoreData(windowviewid,'AllTerms',[]); $scope.SetwindowStoreData(windowviewid,'CurriculumTermData',[]); } //1. $scope.terminateCurrentlyRunningWPs(); var canvasDiv = document.getElementById("canvasDivDA_" + windowviewid); $scope.imageVerticalScrollPosition = canvasDiv.scrollTop; $scope.imageHorizontlScrollPosition = canvasDiv.scrollLeft; if ($scope.GetwindowStoreData(windowviewid,'isTransparencyActivated')) { //crete temp canavs to store the original data which will be used to chnange the transparency if (document.getElementById('tempCanvas_'+windowviewid) != null) { $('#tempCanvas_'+windowviewid).remove(); } var tempCanvas = document.createElement('canvas'); tempCanvas.id = 'tempCanvas_' + windowviewid; $scope.tempCanvas = tempCanvas.id; tempCanvas.height = $scope.transparencyCanvasHeight; tempCanvas.width = $scope.transparencyCanvasWidth; tempCanvas.style.position = "absolute"; tempCanvas.style.left = 200 + 'px'; tempCanvas.style.backgroundColor = "transparent"; tempCanvas.style.visibility = 'hidden'; if (document.getElementById("canvasDivDA_" + windowviewid) != null) document.getElementById("canvasDivDA_" + windowviewid).appendChild(tempCanvas); var tCanvas = document.getElementById('transparencyCanvas_' + windowviewid); var tCanvasContext = tCanvas.getContext('2d'); var tCanvasHeight = parseInt((tCanvas.style.height).replace('px', '')); var tCanvasWidth = parseInt((tCanvas.style.width).replace('px', '')); // var tCanvas = document.getElementById('transparencyCanvas'); if (tCanvas != null) { clearTransCanvas(windowviewid); } var TransparencyBoxStartX = parseInt((tCanvas.style.left).replace('px', '')); var TransparencyEndX = parseInt((tCanvas.style.left).replace('px', '')) + parseInt((tCanvas.style.width.replace('px', ''))); var TransparencyBoxStartY = parseInt((tCanvas.style.top).replace('px', '')); var TransparencyBoxEndY = parseInt((tCanvas.style.top).replace('px', '')) + parseInt((tCanvas.style.height).replace('px', '')); var transparencyBoxBottom = parseInt(TransparencyBoxStartY) + parseInt(tCanvasHeight); var transparencyBoxRight = parseInt(TransparencyBoxStartX) + parseInt(tCanvasWidth); // var BodyRegionDictionary = $rootScope.BodyRegionCordinatesData; var BodyRegionDictionary = $scope.GetwindowStoreData(windowviewid,'BodyRegionCordinatesData'); $scope.transparencyDrawnRegions = []; $scope.canThirdBRDrawn = false; $.each(BodyRegionDictionary, function (index, value) { if (value.bodyRegionId == '3') { var BR_SixTBData = new jinqJs() .from($scope.transparencyDrawnRegions) .where('BRID == 6') .select(); if (BR_SixTBData != null && BR_SixTBData != undefined && BR_SixTBData.length > 0) { $scope.canThirdBRDrawn = true; } } var bodyRegionRight = parseInt(value.X) + parseInt(value.Width); var bodyRegionBottom = parseInt(value.Y) + parseInt(value.Height); if (TransparencyBoxStartX <= bodyRegionRight && value.X <= transparencyBoxRight && TransparencyBoxStartY <= bodyRegionBottom && value.Y <= transparencyBoxBottom) { var bodyVid=$scope.GetwindowStoreData(windowviewid,'voId'); $scope.SetwindowStoreData(windowviewid,'layerNumber',parseInt($('#txtLayerNumberDA_' + windowviewid).val())); if ((bodyVid == "9" || bodyVid == "11" || bodyVid == "2" || bodyVid == "3" || bodyVid == "6" || bodyVid == "7")) { if (value.bodyRegionId == "6") { $scope.loadTransparencyImage(value.bodyRegionId, value.Height, value.Width, value.X, value.Y, value.IsMirror, $scope.TransparencyBoxStartX, $scope.TransparencyEndX, $scope.TransparencyBoxStartY, $scope.TransparencyBoxEndY, $scope, true, false, false, windowviewid); } else { $scope.loadTransparencyImage(value.bodyRegionId, value.Height, value.Width, value.X, value.Y, value.IsMirror, $scope.TransparencyBoxStartX, $scope.TransparencyEndX, $scope.TransparencyBoxStartY, $scope.TransparencyBoxEndY, $scope, true, false, false, windowviewid); } } else { if (value.bodyRegionId == '3' && $scope.canThirdBRDrawn == true) { $scope.loadTransparencyImage(value.bodyRegionId, value.Height, value.Width, value.X, value.Y, value.IsMirror, $scope.TransparencyBoxStartX, TransparencyEndX, $scope.TransparencyBoxStartY, TransparencyBoxEndY, $scope, true, false, false, windowviewid); } else { if (value.bodyRegionId == '3' && $scope.canThirdBRDrawn == false) { //1. draw 6th var BRSixData = new jinqJs() .from(BodyRegionDictionary) .where('bodyRegionId == 6') .select(); var isMirror = BRSixData[0].IsMirror; if (isMirror == 'Yes') { //draw mirror arm $scope.loadTransparencyImage(BRSixData[0].bodyRegionId, BRSixData[0].Height, BRSixData[0].Width, BRSixData[0].X, BRSixData[0].Y, 'Yes', $scope.TransparencyBoxStartX, TransparencyEndX, $scope.TransparencyBoxStartY, TransparencyBoxEndY, $scope, true, false, false, windowviewid); //draw non mirror arm $scope.loadTransparencyImage(BRSixData[1].bodyRegionId, BRSixData[1].Height, BRSixData[1].Width, BRSixData[1].X, BRSixData[1].Y, 'No', $scope.TransparencyBoxStartX, TransparencyEndX, $scope.TransparencyBoxStartY, TransparencyBoxEndY, $scope, true, false, false, windowviewid); //draw 3rd BR $timeout(function () { $scope.loadTransparencyImage(value.bodyRegionId, value.Height, value.Width, value.X, value.Y, value.IsMirror, $scope.TransparencyBoxStartX, TransparencyEndX, $scope.TransparencyBoxStartY, TransparencyBoxEndY, $scope, true, false, false, windowviewid); }, 200); } else { //draw mirror arm $scope.loadTransparencyImage(BRSixData[0].bodyRegionId, BRSixData[0].Height, BRSixData[0].Width, BRSixData[0].X, BRSixData[0].Y, 'No', $scope.TransparencyBoxStartX, TransparencyEndX, $scope.TransparencyBoxStartY, TransparencyBoxEndY, $scope, true, false, false, windowviewid); //draw non mirror arm $scope.loadTransparencyImage(BRSixData[1].bodyRegionId, BRSixData[1].Height, BRSixData[1].Width, BRSixData[1].X, BRSixData[1].Y, 'Yes', $scope.TransparencyBoxStartX, TransparencyEndX, $scope.TransparencyBoxStartY, TransparencyBoxEndY, $scope, true, false, false, windowviewid); //draw 3rd BR $timeout(function () { $scope.loadTransparencyImage(value.bodyRegionId, value.Height, value.Width, value.X, value.Y, value.IsMirror, $scope.TransparencyBoxStartX, TransparencyEndX, $scope.TransparencyBoxStartY, TransparencyBoxEndY, $scope, true, false, false, windowviewid); }, 200); } } else { var BR_SixTBData = new jinqJs() .from($scope.transparencyDrawnRegions) .where('BRID == 6') .select(); if (value.bodyRegionId == "6" && BR_SixTBData != undefined && BR_SixTBData != null && BR_SixTBData.length > 0) { } else $scope.loadTransparencyImage(value.bodyRegionId, value.Height, value.Width, value.X, value.Y, value.IsMirror, $scope.TransparencyBoxStartX, TransparencyEndX, $scope.TransparencyBoxStartY, TransparencyBoxEndY, $scope, true, false, false, windowviewid); } } } } else { $scope.EnableUI(); } }) } else { //1. Dated:13-07-2016 Issue #4965 : The layer number should not extend beyond its level through layer text box. var dataLength = $scope.GetwindowStoreData(windowviewid,'BodyLayerData').Layers.DataLayer.length-1; if (parseInt($('#txtLayerNumberDA_' + windowviewid).val()) > (dataLength)) { $('#txtLayerNumberDA_' + windowviewid).val(dataLength); $scope.SetwindowStoreData(windowviewid,'currentLayerNumber',parseInt(dataLength)); $scope.SetwindowStoreData(windowviewid,'layerNumber',parseInt(dataLength)); } else { $scope.SetwindowStoreData(windowviewid,'currentLayerNumber',parseInt($('#txtLayerNumberDA_' + windowviewid).val())); } $rootScope.isLoading = true; $('#spinner').css('visibility', 'visible'); var canDiv = document.getElementById('canvasDivDA_' + windowviewid); var canDivChildCount = canDiv.childElementCount; if (canDivChildCount > 0) { canDiv.innerHTML = ''; } //2. var viewOrientationId=$scope.GetwindowStoreData(windowviewid,'viewOrientationId'); $scope.CalculateImageCordinates(viewOrientationId,windowviewid); //3. $("#canvasDivDA_" + windowviewid).scrollLeft($scope.imageHorizontlScrollPosition) $("#canvasDivDA_" + windowviewid).scrollTop($scope.imageVerticalScrollPosition) var isHighlightBodyByBodySystem=$scope.GetwindowStoreData(windowviewid,'isHighlightBodyByBodySystem'); if (isHighlightBodyByBodySystem) { $timeout(function () { $scope.DisableProgressBar(windowviewid) }, 2000); } else { $timeout(function () { $scope.DisableProgressBar(windowviewid) }, 2000); } } var totalayer=$scope.GetwindowStoreData(windowviewid,'totalLayers'); var nlayer=$scope.GetwindowStoreData(windowviewid,'layerNumber'); var sliderVal = parseInt(totalayer) - parseInt(nlayer); console.log('inside CalculateImageCordinates. document.getElementById layerChangeSlider value : ' + document.getElementById('layerChangeSlider') + '$rootScope.totalLayers: ' + totalayer + '- parseInt($scope.layerNumber) ' + nlayer + 'set value: ' + sliderVal); $("#layerChangeSliderDA_" + windowviewid).slider("option", "value", sliderVal); // Annotations Closing Code $('.com_anno_'+windowviewid).remove(); $('#sppeachBubble_annotation_'+windowviewid).remove(); $('#dot_annotation_'+windowviewid).remove(); $('#bord_annotation_'+windowviewid).remove(); $('#dot_'+windowviewid).remove(); $('#sppeachBubble_'+windowviewid).remove(); $('.com_'+windowviewid).remove(); $('#bord_'+windowviewid).remove(); if (($("#canvasPaintDA_"+windowviewid).css("display") == "block") && ($("#canvasDA_"+windowviewid).css("display") == "block")) { if ($rootScope.isAnnotatiomToolBarPopupActive == false) { if ($('#transparencyScale_' + windowviewid).css("display") == "block") { $rootScope.switchToTransparencycanvas(); } } else { if ($("#OnIdentify").hasClass("annotationtoolbartab")) { $rootScope.switchToTransparencycanvas(); } else { $('.btnCursor').addClass('activebtncolor'); $rootScope.switchCanvas(); } } } else { if ($rootScope.isAnnotatiomToolBarPopupActive == true) { $rootScope.CloseAnnotationTool(); } } } $scope.DisableProgressBar = function (windowviewid) { if ($scope.GetwindowStoreData(windowviewid,'isHighLight')) { $("#btnHighLight_" + windowviewid).addClass("btn-primary"); $("#btnHighLight_" + windowviewid).removeClass("btn-black"); if (!$("#btnNormalMode_" + windowviewid).hasClass("btn-black")) { $("#btnNormalMode_" + windowviewid).addClass("btn-black"); } if (!$("#btnExtract_" + windowviewid).hasClass("btn-black")) { $("#btnExtract_" + windowviewid).addClass("btn-black"); } if ($("#btnExtract_" + windowviewid).hasClass("btn-primary")) { $("#btnExtract_" + windowviewid).removeClass("btn-primary"); } if ($("#btnNormalMode_" + windowviewid).hasClass("btn-primary")) { $("#btnNormalMode_" + windowviewid).removeClass("btn-primary"); } console.log('highLightBody call from DisableProgressBar') // $scope.highLightBody(); } $rootScope.isLoading = false; $('#spinner').css('visibility', 'hidden'); } $('layerChangeSlider').slider().on('slideStop', function (ev) { var newVal = $('.span2').data('slider').getValue(); if (originalVal != newVal) { } }); $scope.getMousePos = function (pageX,pageY,windowviewid) { return { x: Math.round(pageX - $('#canvasDivDA_' + windowviewid).offset().left), y: Math.round(pageY - $('#canvasDivDA_' + windowviewid).offset().top) } } $scope.createDynamicSpeechBubble = function (event, x, y, isAnnotationNotForTBox, tipx, tipy,windowviewid) { if (isAnnotationNotForTBox == true) { if ($scope.MultiLanguageAnnationArray.length > 1) { $scope.longestAnnotation = $scope.MultiLanguageAnnationArray.reduce(function (firstAnnotation, seconAnnotation) { return firstAnnotation.length > seconAnnotation.length ? firstAnnotation : seconAnnotation; }); } else { $scope.longestAnnotation = $scope.MultiLanguageAnnationArray[0]; } //1. In transparency box we shows two annotation at a time, so we need to decide the max length of annotation in btween two annotation because based on that // we decide the size of speech bubble //2. if (event.ctrlKey || event == "CBAnnotation") { console.log('ctrl pressed'); $scope.SetwindowStoreData(windowviewid,'multiAnnotationIsON',true); //2.1 create unique speech bubbles var speechBubbleCounter=$scope.GetwindowStoreData(windowviewid,'speechBubbleCounter'); speechBubbleCounter = speechBubbleCounter + 1; $scope.SetwindowStoreData(windowviewid,'speechBubbleCounter',speechBubbleCounter); var id = "speechBubble" + speechBubbleCounter+'_'+windowviewid; //2.2 Get clicked locationa and find if it is already clicked earlier too on same location var pointClicked = parseInt(x) + parseInt(y); var isClickedOnSamePoint = $('#canvasDivDA_' + windowviewid).find("div[id=" + pointClicked + "]").length; console.log('isClickedOnSamePoint: ' + isClickedOnSamePoint); // if user has not clciked on smae point then create speech bubble otherwise not if (isClickedOnSamePoint == 0) { console.log('not clicked on same point') $scope.createSpeechBubbleBasedOnAnnotationLength(pointClicked, x, y, id, tipx, tipy,windowviewid,speechBubbleCounter); $scope.speechbubbleList.push({ xaxis: x, yaxis: y, ids: id }); } $('.appendDragg').draggable({ drag: function (evt) { var windid = (evt.target.id).split("_")[1]; $(this).prev('div').css("display", "none"); var bor_id = $(this).next('div').attr('id'); var sub_id1 = $(this).attr('id'); var canvasDiv = document.getElementById('canvasDivDA_' + windid); var verticalScrollPosition = canvasDiv.scrollTop; var horizontlScrollPosition = canvasDiv.scrollLeft; if ( $scope.speechbubbleList != null || $scope.speechbubbleList != undefined) { for (var m = 0; m <= $scope.speechbubbleList.length - 1; m++) { if ( $scope.speechbubbleList[m].ids == sub_id1) { $scope.angle1( $scope.speechbubbleList[m].xaxis, $scope.speechbubbleList[m].yaxis, evt.pageX + horizontlScrollPosition - $('#canvasDivDA_' + windid).offset().left, evt.pageY + verticalScrollPosition - $('#canvasDivDA_' + windid).offset().top, bor_id); break; } } } }, }); $('.dynCross_'+windowviewid).on('click', function (evt) { if ( $scope.speechbubbleList != null || $scope.speechbubbleList != undefined) { var removeid=$(this).parent().parent().attr('id'); for (var m = 0; m <= $scope.speechbubbleList.length - 1; m++) { if ( $scope.speechbubbleList[m].ids == removeid) { $scope.speechbubbleList.splice(m, 1); break; } } } $(this).parent().parent().parent().remove(); }); } else { $scope.SetwindowStoreData(windowviewid,'multiAnnotationIsON',false); //history maintained issue if ($rootScope.isAnnotaionToolBarDrawingModeActive == false) { $('#sppeachBubble_'+windowviewid).remove(); $('#dot_'+windowviewid).remove(); } $('.com_'+windowviewid).remove(); $('#bord_'+windowviewid).remove(); $scope.createSpeechBubbleBasedOnAnnotationLengthwithoutCtrl(x, y,windowviewid); //history maintained issue if ($rootScope.isAnnotaionToolBarDrawingModeActive == false) { document.getElementById('sppeachBubble_'+windowviewid).style.zIndex = "60000"; } $('#sppeachBubble_'+windowviewid).draggable( { drag: function (evt) { var windid = (evt.target.id).split("_")[1]; $('#dot_'+windid).css("visibility", "hidden"); var canvasDiv = document.getElementById('canvasDivDA_' + windid) var verticalScrollPosition = canvasDiv.scrollTop; var horizontlScrollPosition = canvasDiv.scrollLeft; $scope.angle(x, y, evt.pageX + horizontlScrollPosition - $('#canvasDivDA_' + windid).offset().left, evt.pageY + verticalScrollPosition - $('#canvasDivDA_' + windid).offset().top, true,windid); }, }); $('#crossDiv_'+windowviewid).on('click', function (evt) { var windid = (evt.target.id).split("_")[1]; $('#sppeachBubble_'+windid).remove(); $('#bord_'+windowviewid).remove(); $('#dot_'+windid).remove(); }); } } else { $scope.longest_annotationT1 = $scope.annotationTextArrayT1.reduce(function (a, b) { return a.length > b.length ? a : b; }); $scope.longest_annotationT2 = $scope.annotationTextArrayT2.reduce(function (a, b) { return a.length > b.length ? a : b; }); if (event.ctrlKey) { var TPspeechBubbleCounter=$scope.GetwindowStoreData(windowviewid,'TPspeechBubbleCounter'); TPspeechBubbleCounter = TPspeechBubbleCounter + 1; $scope.SetwindowStoreData(windowviewid,'TPspeechBubbleCounter',TPspeechBubbleCounter); var sub_id_annotation = "black_annotation" + TPspeechBubbleCounter+"_"+windowviewid; var pointClicked_annotation = parseInt(x) + parseInt(y); var Exists_annotation = $('#canvasDivDA_' + windowviewid).find("div[id=" + pointClicked_annotation + "]").length; $scope.createSpeechBubbleBasedOnTransparencyWithCtrl(pointClicked_annotation, Exists_annotation, x, y, sub_id_annotation,windowviewid,TPspeechBubbleCounter); $scope.speechbubbleList.push({ xaxis: x, yaxis: y, ids: sub_id_annotation }); $scope.SetwindowStoreData(windowviewid,'speachBubbleArrayAnnotation',$scope.speechList1); $('.appendDragg_annotation').draggable({ drag: function (evt) { var windid = (evt.target.id).split("_")[2]; $(this).prev('div').css("display", "none"); var bor_id_anno = $(this).next('div').attr('id'); var sub_id1_anno = $(this).attr('id'); var canvasDiv = document.getElementById('canvasDivDA_' + windid); var verticalScrollPosition = canvasDiv.scrollTop; var horizontlScrollPosition = canvasDiv.scrollLeft; if ( $scope.speechbubbleList != null || $scope.speechbubbleList != undefined) { for (var m = 0; m <= $scope.speechbubbleList.length - 1; m++) { if ( $scope.speechbubbleList[m].ids == sub_id1_anno) { $scope.angle1( $scope.speechbubbleList[m].xaxis, $scope.speechbubbleList[m].yaxis, evt.pageX + horizontlScrollPosition - $('#canvasDivDA_' + windid).offset().left, evt.pageY + verticalScrollPosition - $('#canvasDivDA_' + windid).offset().top, bor_id_anno); break; } } } }, }); $('.dynCross_anno_'+windowviewid).on('click', function (evt) { if ( $scope.speechbubbleList != null || $scope.speechbubbleList != undefined) { var removeid=$(this).parent().parent().attr('id'); for (var m = 0; m <= $scope.speechbubbleList.length - 1; m++) { if ( $scope.speechbubbleList[m].ids == removeid) { $scope.speechbubbleList.splice(m, 1); break; } } } $(this).parent().parent().parent().remove(); }); } else { $scope.SetwindowStoreData(windowviewid,'multiAnnotationIsON',false); $('#bord_annotation_'+windowviewid).css({ "width": "0px", "display": "none" }); $('.dynCross_anno_'+windowviewid).parent().parent().parent().remove(); $scope.createSpeechBubbleBasedOnTransparencyWithoutCtrl(x, y,windowviewid); $('#sppeachBubble_annotation_'+windowviewid).draggable( { drag: function (evt) { var windid = (evt.target.id).split("_")[2]; $('#dot_annotation_'+windid).remove(); var canvasDiv = document.getElementById('canvasDivDA_' + windid); var verticalScrollPosition = canvasDiv.scrollTop; var horizontlScrollPosition = canvasDiv.scrollLeft; $scope.angle(x, y, evt.pageX + horizontlScrollPosition - $('#canvasDivDA_' + windid).offset().left, evt.pageY + verticalScrollPosition - $('#canvasDivDA_' + windid).offset().top, false,windid); }, }); $('.crossDiv_annotation_'+windowviewid).on('click', function (evt) { var windid = (evt.target.className).split("_")[2]; $('#sppeachBubble_annotation_'+windid).remove(); $('#bord_annotation_'+windid).remove(); $('#dot_annotation_'+windid).remove(); }); } } if (document.getElementById('btnStrutureBox_'+windowviewid).name == "showAnnotationStructure") { $scope.showAnnotation(windowviewid) } else { $scope.hideAnnotation(windowviewid) } if ($rootScope.isTBCompleted == true) { $('#sppeachBubble_'+windowviewid).remove(); $('#dot_'+windowviewid).remove(); $('#bord_'+windowviewid).remove(); $('.com_'+windowviewid).remove(); $rootScope.isTBCompleted = false; } } $scope.showAnnotation = function (windowviewid) { $('.com_'+windowviewid).show(); $('#dot_'+windowviewid).show(); $('#bord_'+windowviewid).show(); $('#sppeachBubble_'+windowviewid).show(); $('#sppeachBubble_annotation_'+windowviewid).show(); $('#bord_annotation_'+windowviewid).show(); $('#dot_annotation_'+windowviewid).show(); $('.dynCross_anno_'+windowviewid).parent().parent().parent().show(); } $scope.hideAnnotation = function (windowviewid) { $('.com_'+windowviewid).hide(); $('#dot_'+windowviewid).hide(); $('#bord_'+windowviewid).hide(); $('#sppeachBubble_'+windowviewid).hide(); $('#sppeachBubble_annotation_'+windowviewid).hide(); $('#bord_annotation_'+windowviewid).hide(); $('#dot_annotation_'+windowviewid).hide(); $('.dynCross_anno_'+windowviewid).parent().parent().parent().hide(); } $scope.createSpeechBubbleBasedOnAnnotationLength = function (pointClicked, x, y, id, tipx, tipy,windowviewid,speechBubbleCounter) { var isHighlightBodyWithCBTermData=$scope.GetwindowStoreData(windowviewid,'isHighlightBodyWithCBTermData'); if (isHighlightBodyWithCBTermData == true) { var sppechBubbleHTML = "
"; } else { var sppechBubbleHTML = "
"; } //Issue #7286 :Undefined annotation should not appear for (var i = 0; i <= $scope.MultiLanguageAnnationArray.length - 1; i++) { var annotation = $scope.MultiLanguageAnnationArray[i]; } if (annotation == undefined) { console.log("No text found"); } else { $("#canvasDivDA_" + windowviewid).append(sppechBubbleHTML); for (var i = 0; i <= $scope.MultiLanguageAnnationArray.length - 1; i++) { var annotation = $scope.MultiLanguageAnnationArray[i]; $("#" + id).append("

" + annotation + "

"); } if ($scope.longestAnnotation.length <= 10) { $("#" + id).css("width", "100px"); } else if ($scope.longestAnnotation.length > 10 && $scope.longestAnnotation.length <= 17) { $("#" + id).css("width", "140px"); } else if ($scope.longestAnnotation.length > 17 && $scope.longestAnnotation.length <= 26) { $("#" + id).css("width", "195px"); } else if ($scope.longestAnnotation.length > 26 && $scope.longestAnnotation.length <= 34) { $("#" + id).css("width", "248px"); } else if ($scope.longestAnnotation.length > 34 && $scope.longestAnnotation.length <= 44) { $("#" + id).css("width", "300px"); } else if ($scope.longestAnnotation.length > 44 && $scope.longestAnnotation.length <= 54) { $("#" + id).css("width", "370px"); } else if ($scope.longestAnnotation.length > 54 && $scope.longestAnnotation.length <= 69) { $("#" + id).css("width", "450px"); } else if ($scope.longestAnnotation.length > 69 && $scope.longestAnnotation.length <= 75) { $("#" + id).css("width", "510px"); } else { $("#" + id).css("width", ($scope.longestAnnotation.length) + "%"); } if (isHighlightBodyWithCBTermData == true) { var bubbleid = document.getElementById(id); var bordid = 'bord' + speechBubbleCounter+'_'+windowviewid; var canvasDiv = document.getElementById("canvasDivDA_" + windowviewid); var verticalScrollPosition = canvasDiv.scrollTop; var horizontlScrollPosition = canvasDiv.scrollLeft; $scope.angle1(x, y, bubbleid.offsetLeft, bubbleid.offsetTop, bordid); $('#bubble' + speechBubbleCounter+'_'+windowviewid).css({ 'display': 'none' }); } } } $scope.createSpeechBubbleBasedOnAnnotationLengthwithoutCtrl = function (x, y,windowviewid) { var sppechBubbleDotHTML = '' + '' + ''; //Issue #7286 :Undefined annotation should not appear for (var i = 0; i <= $scope.MultiLanguageAnnationArray.length - 1; i++) { var MultipleLanguage = $scope.MultiLanguageAnnationArray[i]; } if (MultipleLanguage == undefined) { console.log("No text is found"); } else { $('#canvasDivDA_' + windowviewid).append(sppechBubbleDotHTML); if ($scope.MultiLanguageAnnationArray.length > 0) { for (var i = 0; i <= $scope.MultiLanguageAnnationArray.length - 1; i++) { var MultipleLanguage = $scope.MultiLanguageAnnationArray[i]; $('#sppeachBubble_'+windowviewid).append("

" + MultipleLanguage + "

"); } } else { console.log('MultiLanguageAnnationArray.length is :' + $scope.MultiLanguageAnnationArray.length) } if ($scope.longestAnnotation != null || $scope.longestAnnotation != undefined) { if ($scope.longestAnnotation.length <= 10) { $('#sppeachBubble_'+windowviewid).css("width", "100px"); } else if ($scope.longestAnnotation.length > 10 && $scope.longestAnnotation.length <= 17) { $('#sppeachBubble_'+windowviewid).css("width", "140px"); } else if ($scope.longestAnnotation.length > 17 && $scope.longestAnnotation.length <= 26) { $('#sppeachBubble_'+windowviewid).css("width", "195px"); } else if ($scope.longestAnnotation.length > 26 && $scope.longestAnnotation.length <= 34) { $('#sppeachBubble_'+windowviewid).css("width", "248px"); } else if ($scope.longestAnnotation.length > 34 && $scope.longestAnnotation.length <= 44) { $('#sppeachBubble_'+windowviewid).css("width", "300px"); } else if ($scope.longestAnnotation.length > 44 && $scope.longestAnnotation.length <= 54) { $('#sppeachBubble_'+windowviewid).css("width", "370px"); } else if ($scope.longestAnnotation.length > 54 && $scope.longestAnnotation.length <= 69) { $('#sppeachBubble_'+windowviewid).css("width", "450px"); } else if ($scope.longestAnnotation.length > 69 && $scope.longestAnnotation.length <= 75) { $('#sppeachBubble_'+windowviewid).css("width", "510px"); } else { $('#sppeachBubble_'+windowviewid).css("width", ($scope.longestAnnotation.length) + "%"); } } } var Globe = []; Globe.push({ currentX: x, currentY: y }); document.getElementById('dot_'+windowviewid).style.display = 'block'; document.getElementById('dot_'+windowviewid).style.left = ((Globe[0].currentX) - 10) + 'px'; document.getElementById('dot_'+windowviewid).style.top = ((Globe[0].currentY) + 10) + 'px'; document.getElementById('bord_'+windowviewid).style.display = 'block'; document.getElementById('bord_'+windowviewid).style.left = ((Globe[0].currentX) - 2) + 'px'; document.getElementById('bord_'+windowviewid).style.top = ((Globe[0].currentY) + 1) + 'px'; document.getElementById('sppeachBubble_'+windowviewid).style.display = 'block'; document.getElementById('sppeachBubble_'+windowviewid).style.left = (Globe[0].currentX) + 'px'; document.getElementById('sppeachBubble_'+windowviewid).style.top = (Globe[0].currentY) + 'px'; } $scope.createSpeechBubbleBasedOnTransparencyWithCtrl = function (pointClicked_annotation, Exists_annotation, x, y, sub_id_annotation,windowviewid,TPspeechBubbleCounter) { var sppechBubbleHTML_annotation = "
"; if ($scope.longest_annotationT1.length > $scope.longest_annotationT2.length) { if (Exists_annotation == 0) { $('#canvasDivDA_' + windowviewid).append(sppechBubbleHTML_annotation); for (var l = 0; l <= $scope.annotationTextArrayT1.length - 1; l++) { var MultipleLang_annotation_T1 = $scope.annotationTextArrayT1[l]; $("#" + sub_id_annotation).append("

" + MultipleLang_annotation_T1 + "

"); } $("#" + sub_id_annotation).append("

"); for (var k = 0; k <= $scope.annotationTextArrayT2.length - 1; k++) { var MultipleLang_annotation_T2 = $scope.annotationTextArrayT2[k]; $("#" + sub_id_annotation).append("

" + MultipleLang_annotation_T2 + "

"); } if ($scope.longest_annotationT1.length <= 10) { $("#" + sub_id_annotation).css("width", "100px"); } else if ($scope.longest_annotationT1.length > 10 && $scope.longest_annotationT1.length <= 17) { $("#" + sub_id_annotation).css("width", "140px"); } else if ($scope.longest_annotationT1.length > 17 && $scope.longest_annotationT1.length <= 26) { $("#" + sub_id_annotation).css("width", "195px"); } else if ($scope.longest_annotationT1.length > 26 && $scope.longest_annotationT1.length <= 34) { $("#" + sub_id_annotation).css("width", "248px"); } else if ($scope.longest_annotationT1.length > 34 && $scope.longest_annotationT1.length <= 44) { $("#" + sub_id_annotation).css("width", "300px"); } else if ($scope.longest_annotationT1.length > 44 && $scope.longest_annotationT1.length <= 54) { $("#" + sub_id_annotation).css("width", "370px"); } else if ($scope.longest_annotationT1.length > 54 && $scope.longest_annotationT1.length <= 69) { $("#" + sub_id_annotation).css("width", "450px"); } else if ($scope.longest_annotationT1.length > 69 && $scope.longest_annotationT1.length <= 75) { $("#" + sub_id_annotation).css("width", "510px"); } else { $("#" + sub_id_annotation).css("width", ($scope.longest_annotationT1.length) + "%"); } } else { $('#canvasDivDA_' + windowviewid).find("div[id=" + pointClicked_annotation + "]").css("display", "block"); } } else { if (Exists_annotation == 0) { $('#canvasDivDA_' + windowviewid).append(sppechBubbleHTML_annotation); for (var l = 0; l <= $scope.annotationTextArrayT1.length - 1; l++) { var MultipleLang_annotation_T1 = $scope.annotationTextArrayT1[l]; $("#" + sub_id_annotation).append("

" + MultipleLang_annotation_T1 + "

"); } $("#" + sub_id_annotation).append("

"); for (var k = 0; k <= $scope.annotationTextArrayT2.length - 1; k++) { var MultipleLang_annotation_T2 = $scope.annotationTextArrayT2[k]; $("#" + sub_id_annotation).append("

" + MultipleLang_annotation_T2 + "

"); } if ($scope.longest_annotationT2.length <= 10) { $("#" + sub_id_annotation).css("width", "100px"); } else if ($scope.longest_annotationT2.length > 10 && $scope.longest_annotationT2.length <= 17) { $("#" + sub_id_annotation).css("width", "140px"); } else if ($scope.longest_annotationT2.length > 17 && $scope.longest_annotationT2.length <= 26) { $("#" + sub_id_annotation).css("width", "195px"); } else if ($scope.longest_annotationT2.length > 26 && $scope.longest_annotationT2.length <= 34) { $("#" + sub_id_annotation).css("width", "248px"); } else if ($scope.longest_annotationT2.length > 34 && $scope.longest_annotationT2.length <= 44) { $("#" + sub_id_annotation).css("width", "300px"); } else if ($scope.longest_annotationT2.length > 44 && $scope.longest_annotationT2.length <= 54) { $("#" + sub_id_annotation).css("width", "370px"); } else if ($scope.longest_annotationT2.length > 54 && $scope.longest_annotationT2.length <= 69) { $("#" + sub_id_annotation).css("width", "450px"); } else if ($scope.longest_annotationT2.length > 69 && $scope.longest_annotationT2.length <= 75) { $("#" + sub_id_annotation).css("width", "510px"); } else { $("#" + sub_id_annotation).css("width", ($scope.longest_annotationT2.length) + "%"); } } else { $('#canvasDivDA_' + windowviewid).find("div[id=" + pointClicked_annotation + "]").css("display", "block"); } } } $scope.createSpeechBubbleBasedOnTransparencyWithoutCtrl = function (x, y,windowviewid) { $('#bord_annotation_'+windowviewid).remove(); $('#sppeachBubble_annotation_'+windowviewid).remove(); $('#dot_annotation_'+windowviewid).remove(); var sppechBubbleDotHTML_annotation = '' + '' + ''; $('#sppeachBubble_annotation_'+windowviewid).css("height", "auto"); if ($scope.longest_annotationT1.length > $scope.longest_annotationT2.length) { $('#sppeachBubble_annotation_'+windowviewid+" p").remove(); $('#canvasDivDA_' + windowviewid).append(sppechBubbleDotHTML_annotation); for (var l = 0; l <= $scope.annotationTextArrayT1.length - 1; l++) { var MultipleLang_annotation_T1 = $scope.annotationTextArrayT1[l]; $('#sppeachBubble_annotation_'+windowviewid).append("

" + MultipleLang_annotation_T1 + "

"); } $('#sppeachBubble_annotation_'+windowviewid).append("

"); for (var k = 0; k <= $scope.annotationTextArrayT2.length - 1; k++) { var MultipleLang_annotation_T2 = $scope.annotationTextArrayT2[k]; $('#sppeachBubble_annotation_'+windowviewid).append("

" + MultipleLang_annotation_T2 + "

"); } if ($scope.longest_annotationT1.length <= 10) { $('#sppeachBubble_annotation_'+windowviewid).css("width", "100px"); } else if ($scope.longest_annotationT1.length > 10 && $scope.longest_annotationT1.length <= 17) { $('#sppeachBubble_annotation_'+windowviewid).css("width", "140px"); } else if ($scope.longest_annotationT1.length > 17 && $scope.longest_annotationT1.length <= 26) { $('#sppeachBubble_annotation_'+windowviewid).css("width", "195px"); } else if ($scope.longest_annotationT1.length > 26 && $scope.longest_annotationT1.length <= 34) { $('#sppeachBubble_annotation_'+windowviewid).css("width", "248px"); } else if ($scope.longest_annotationT1.length > 34 && $scope.longest_annotationT1.length <= 44) { $('#sppeachBubble_annotation_'+windowviewid).css("width", "300px"); } else if ($scope.longest_annotationT1.length > 44 && $scope.longest_annotationT1.length <= 54) { $('#sppeachBubble_annotation_'+windowviewid).css("width", "370px"); } else if ($scope.longest_annotationT1.length > 54 && $scope.longest_annotationT1.length <= 69) { $('#sppeachBubble_annotation_'+windowviewid).css("width", "450px"); } else if ($scope.longest_annotationT1.length > 69 && $scope.longest_annotationT1.length <= 75) { $('#sppeachBubble_annotation_'+windowviewid).css("width", "510px"); } else { $('#sppeachBubble_annotation_'+windowviewid).css("width", ($scope.longest_annotationT1.length) + "%"); } } else { $('#sppeachBubble_annotation_'+windowviewid+" p").remove(); $('#canvasDivDA_' + windowviewid).append(sppechBubbleDotHTML_annotation); for (var l = 0; l <= $scope.annotationTextArrayT1.length - 1; l++) { var MultipleLang_annotation_T1 = $scope.annotationTextArrayT1[l]; $('#sppeachBubble_annotation_'+windowviewid).append("

" + MultipleLang_annotation_T1 + "

"); } $('#sppeachBubble_annotation_'+windowviewid).append("

"); for (var k = 0; k <= $scope.annotationTextArrayT2.length - 1; k++) { var MultipleLang_annotation_T2 = $scope.annotationTextArrayT2[k]; $('#sppeachBubble_annotation_'+windowviewid).append("

" + MultipleLang_annotation_T2 + "

"); } if ($scope.longest_annotationT2.length <= 10) { $('#sppeachBubble_annotation_'+windowviewid).css("width", "100px"); } else if ($scope.longest_annotationT2.length > 10 && $scope.longest_annotationT2.length <= 17) { $('#sppeachBubble_annotation_'+windowviewid).css("width", "140px"); } else if ($scope.longest_annotationT2.length > 17 && $scope.longest_annotationT2.length <= 26) { $('#sppeachBubble_annotation_'+windowviewid).css("width", "195px"); } else if ($scope.longest_annotationT2.length > 26 && $scope.longest_annotationT2.length <= 34) { $('#sppeachBubble_annotation_'+windowviewid).css("width", "248px"); } else if ($scope.longest_annotationT2.length > 34 && $scope.longest_annotationT2.length <= 44) { $('#sppeachBubble_annotation_'+windowviewid).css("width", "300px"); } else if ($scope.longest_annotationT2.length > 44 && $scope.longest_annotationT2.length <= 54) { $('#sppeachBubble_annotation_'+windowviewid).css("width", "370px"); } else if ($scope.longest_annotationT2.length > 54 && $scope.longest_annotationT2.length <= 69) { $('#sppeachBubble_annotation_'+windowviewid).css("width", "450px"); } else if ($scope.longest_annotationT2.length > 69 && $scope.longest_annotationT2.length <= 75) { $('#sppeachBubble_annotation_'+windowviewid).css("width", "510px"); } else { $('#sppeachBubble_annotation_'+windowviewid).css("width", ($scope.longest_annotationT2.length) + "%"); } } var Globe = []; Globe.push({ currentX: x, currentY: y }); document.getElementById('dot_annotation_'+windowviewid).style.display = 'block'; document.getElementById('dot_annotation_'+windowviewid).style.left = ((Globe[0].currentX) - 10) + 'px'; document.getElementById('dot_annotation_'+windowviewid).style.top = ((Globe[0].currentY) + 10) + 'px'; document.getElementById('bord_annotation_'+windowviewid).style.display = 'block'; document.getElementById('bord_annotation_'+windowviewid).style.left = ((Globe[0].currentX) - 2) + 'px'; document.getElementById('bord_annotation_'+windowviewid).style.top = ((Globe[0].currentY) + 1) + 'px'; document.getElementById('sppeachBubble_annotation_'+windowviewid).style.display = 'block'; document.getElementById('sppeachBubble_annotation_'+windowviewid).style.left = (Globe[0].currentX) + 'px'; document.getElementById('sppeachBubble_annotation_'+windowviewid).style.top = (Globe[0].currentY) + 'px'; } $scope.angle1 = function (cx1, cy1, ex1, ey1, id) { // console.log(cx1 + " " + cy1); var dy = ey1 - cy1; var dx = ex1 - cx1; var theta = 0; if (dx < 0) { theta = Math.atan(dy / dx) * (180 / Math.PI); theta = theta + 180; } else if (dy < 0) { theta = Math.atan(dy / dx) * (180 / Math.PI); theta = theta + 360; } else { theta = Math.atan(dy / dx) * (180 / Math.PI); } var g = Math.sqrt((cx1 - ex1) * (cx1 - ex1) + (cy1 - ey1) * (cy1 - ey1)); var e = cy1; var f = cx1; $('#' + id).css({ 'display': 'block', 'width': g + 'px', 'top': e + 'px', 'left': f + 'px', 'transform': 'rotate(' + theta + 'deg)', '-moz-transform': 'rotate(' + theta + 'deg)', '-webkit-transform': 'rotate(' + theta + 'deg)', 'transform-origin': '0% 0%' }); } function myFunction(crossId) { $('#' + crossId).parent().parent().parent().css("display", "none"); } $scope.angle = function (cx, cy, ex, ey, BoolValues,windowviewid) { var dy = ey - cy; var dx = ex - cx; var theta = 0; if (dx < 0) { theta = Math.atan(dy / dx) * (180 / Math.PI); theta = theta + 180; } else if (dy < 0) { theta = Math.atan(dy / dx) * (180 / Math.PI); theta = theta + 360; } else { theta = Math.atan(dy / dx) * (180 / Math.PI); } var d = Math.sqrt((cx - ex) * (cx - ex) + (cy - ey) * (cy - ey)); var e = cy; var f = cx; if (BoolValues == true) { $('#bord_'+windowviewid).css({ 'display': 'block', 'width': d + 'px', 'top': e + 'px', 'left': f + 'px', 'transform': 'rotate(' + theta + 'deg)', '-moz-transform': 'rotate(' + theta + 'deg)', '-webkit-transform': 'rotate(' + theta + 'deg)', 'transform-origin': '0% 0%' }); } else { $('#bord_annotation_'+windowviewid).css({ 'display': 'block', 'width': d + 'px', 'top': e + 'px', 'left': f + 'px', 'transform': 'rotate(' + theta + 'deg)', '-moz-transform': 'rotate(' + theta + 'deg)', '-webkit-transform': 'rotate(' + theta + 'deg)', 'transform-origin': '0% 0%' }); } } $scope.createTransparencyBox = function (windowviewid) { $scope.SetwindowStoreData(windowviewid,'isTransparencyBtnClicked',true); if ($rootScope.isCallFromOtherModule) { $scope.SetwindowStoreData(windowviewid,'isHighlightBodyWithCBTermData',false); $scope.SetwindowStoreData(windowviewid,'fullTermlist',[]); $scope.SetwindowStoreData(windowviewid,'AllTerms',[]); $scope.SetwindowStoreData(windowviewid,'CurriculumTermData',[]); } //do not create TBOX if in extarct mode otherwise create if ($scope.GetwindowStoreData(windowviewid,'isExtract') == false) { $("#btnExtract_" + windowviewid).addClass("disabled"); $("#btnExtract_" + windowviewid).css("pointer-events", "none"); //if listanager is visisble then close it $scope.SetwindowStoreData(windowviewid,'isListManagerSelected',false); $rootScope.CloseListManager(); $('#btnTranparency_' + windowviewid).addClass('tButtonActive'); $('#btnIdentify_' + windowviewid).removeClass(' btn-primary'); $('#btnIdentify_' + windowviewid).addClass('btn-black'); var canvasDiv = document.getElementById("canvasDivDA_" + windowviewid); $scope.verticalScrollPosition = canvasDiv.scrollTop; $scope.horizontlScrollPosition = canvasDiv.scrollLeft; var canvasDiv = document.getElementById("canvasDivDA_" + windowviewid); canvasDiv.addEventListener("touchstart", mouseDownListener); canvasDiv.addEventListener("touchmove", mouseMoveListener); canvasDiv.addEventListener("touchend", mouseUpListener); canvasDiv.addEventListener("mousedown", mouseDownListener); canvasDiv.addEventListener("mousemove", mouseMoveListener); canvasDiv.addEventListener("mouseup", mouseUpListener); } else { // console.log("extract button is active"); } //in case of annotation toolbar is open below code will be executed to draw Tbox if ($rootScope.isAnnotationWindowOpen == true) { if ($rootScope.isAnnotaionToolBarDrawingModeActive == true) { $rootScope.DrawingMode(); $rootScope.shapeType = ""; $(".btn-annotation").removeClass("activebtncolor"); $("#annotationpaintbrushsize").removeClass("activebtncolor"); $("#annotationpainteraser").removeClass("activebtncolor"); } else { $rootScope.switchCanvas(); } } } function mouseDownListener(e) { var windowviewid = (e.currentTarget.id).split("_")[1]; e.preventDefault(); //to prevent screen scroll on ipad while drawing TB e.preventDefault(); //Dated:18-07-2016 Issue#4975: Transparency box should not be clickable if it is already selected. var tCanvas = document.getElementById('transparencyCanvas_' + windowviewid); if ($('#transparencyScale_' + windowviewid).css("visibility") == 'visible') { $('#transparencyScale_' + windowviewid).css('visibility', 'hidden'); $('#transparencyCanvas_' + windowviewid).remove(); } var $container = document.getElementById("canvasDivDA_" + windowviewid); var $selection = $('
').addClass('rectangle'); document.getElementById("daViewDA_" + windowviewid) $selection.css({ 'position': 'absolute', //'background': 'transparent', 'border': '1px dotted #000' }); var currentMousePosition = $scope.getMousePos(e.pageX,e.pageY,windowviewid); $scope.TBDrawStartX = currentMousePosition.x; $scope.TBDrawStartY = currentMousePosition.y; var canvasDiv = document.getElementById("canvasDivDA_" + windowviewid); $scope.verticalScrollPosition = canvasDiv.scrollTop; $scope.horizontlScrollPosition = canvasDiv.scrollLeft; var actulalX = currentMousePosition.x + $scope.horizontlScrollPosition var actualY = currentMousePosition.y + $scope.verticalScrollPosition $scope.TransparencyBoxStartX = actulalX; $scope.TransparencyBoxStartY = actualY $scope.startX = actulalX; $scope.startY = actualY; var tBox = document.getElementById('transparencyCanvas_' + windowviewid); if (tBox == null) { //// canvasDiv.style.cursor = "crosshair"; $selection.css({ 'top': actualY, 'left': actulalX, 'width': 0, 'height': 0, 'z-index': 1000 }); $selection.appendTo($container); } document.getElementById("canvasDivDA_" + windowviewid).removeEventListener("mousedown", mouseDownListener); document.getElementById("canvasDivDA_" + windowviewid).removeEventListener("touchstart", mouseDownListener); var currentlayer=$scope.GetwindowStoreData(windowviewid,'currentLayerNumber'); //Dated:19-07-2016 Issue#4975: Transparency box should not be clickable if it is already selected. if ($('#txtLayerNumberDA_' + windowviewid).val() != 0 && currentlayer != undefined) { var totalayer=$scope.GetwindowStoreData(windowviewid,'totalLayers'); var sliderVal = parseInt(totalayer) - parseInt(currentlayer); console.log('inside mouseDownListener. document.getElementById layerChangeSlider value : ' + document.getElementById('layerChangeSlider') + '$rootScope.totalLayers: ' + totalayer + ' - $rootScope.currentLayerNumber: ' + currentlayer + ' = set value for layerChangeSlider: ' + sliderVal); $("#layerChangeSliderDA_" + windowviewid).slider("option", "value", sliderVal); $('#txtLayerNumberDA_' + windowviewid).val(parseInt(currentlayer)); } } function mouseMoveListener(e) { var windowviewid = (e.currentTarget.id).split("_")[1]; e.preventDefault(); //to prevent screen scroll on ipad while drawing TB e.preventDefault(); var canvasDiv = document.getElementById("canvasDivDA_" + windowviewid); $scope.verticalScrollPosition = canvasDiv.scrollTop; $scope.horizontlScrollPosition = canvasDiv.scrollLeft; var currentMousePosition = $scope.getMousePos(e.pageX,e.pageY,windowviewid); var move_x = currentMousePosition.x + $scope.horizontlScrollPosition, move_y = currentMousePosition.y + $scope.verticalScrollPosition, width = move_x - $scope.TransparencyBoxStartX, height = move_y - $scope.TransparencyBoxStartY, new_x, new_y; new_x = (move_x < $scope.TransparencyBoxStartX) ? ($scope.TransparencyBoxStartX - width) : $scope.TransparencyBoxStartX; new_y = (move_y < $scope.TransparencyBoxStartY) ? ($scope.TransparencyBoxStartY - height) : $scope.TransparencyBoxStartY; $('.rectangle').css({ 'width': width, 'height': height, //'background': 'transparent' }); } function mouseUpListener(e) { var windowviewid = (event.currentTarget.id).split("_")[1]; e.preventDefault(); //to prevent screen scroll on ipad while drawing TB e.preventDefault(); $scope.SetwindowStoreData(windowviewid,'isTBDrawnOnBodyRegion',false); $('.com_'+windowviewid).remove(); $('#dot_'+windowviewid).remove(); $('#bord_'+windowviewid).remove(); $('#sppeachBubble_'+windowviewid).remove(); var previewRectangleWidth = $('.rectangle').width(); var previewRectangleHeight = $('.rectangle').height() $scope.SetwindowStoreData(windowviewid,'currentLayerNumber',parseInt($('#txtLayerNumberDA_' + windowviewid).val())); $('.rectangle').remove(); var currentMousePosition = $scope.getMousePos(e.pageX,e.pageY,windowviewid); var canavsDivScrollPos = $scope.getCanavsDivScrollPosition(windowviewid); var TransparencyEndX = currentMousePosition.x + canavsDivScrollPos.horizontlScrollPosition; var TransparencyBoxEndY = currentMousePosition.y + canavsDivScrollPos.verticalScrollPosition; $scope.isTboxDrwan = true; $scope.TbEndX = TransparencyEndX; $scope.TbEndY = TransparencyBoxEndY; $scope.TransparencyEndX = TransparencyEndX; $scope.TransparencyBoxEndY = TransparencyBoxEndY; if ($scope.TransparencyBoxStartX == $scope.TransparencyEndX && $scope.TransparencyBoxStartY == $scope.TransparencyBoxEndY) { } else { if (previewRectangleWidth == 0 && previewRectangleHeight == 0) { } else { $scope.DisableUI(); $scope.SetwindowStoreData(windowviewid,'layerNumberBeforeTBDraw',parseInt($('#txtLayerNumberDA_' + windowviewid).val())); //draw temp box to store the canvas data with original transparecy if (document.getElementById('tempCanvas_' + windowviewid) != null) { $('#tempCanvas_' + windowviewid).remove(); } if (document.getElementById('tempCanvas_'+ windowviewid) == null || document.getElementById('tempCanvas_'+ windowviewid) == undefined) { var tempCanvas = document.createElement('canvas'); tempCanvas.id = 'tempCanvas_' + windowviewid; tempCanvas.height = TransparencyBoxEndY - $scope.startY; tempCanvas.width = TransparencyEndX - $scope.startX; tempCanvas.style.position = "absolute"; tempCanvas.style.left = 200 + 'px'; tempCanvas.style.top = 200 + 'px'; tempCanvas.style.backgroundColor = "transparent"; tempCanvas.style.visibility = 'hidden'; tempCanvas.style.border = "black 1px solid"; document.getElementById("canvasDivDA_" + windowviewid).appendChild(tempCanvas); } $scope.SetwindowStoreData(windowviewid,'isTransparencyActivated',true); $scope.SetwindowStoreData(windowviewid,'isTransparencyBtnClicked',false); var BodyRegionDictionary = $scope.GetwindowStoreData(windowviewid,'BodyRegionCordinatesData'); $scope.IncludedBodyRegions = []; $scope.transparencyDrawnRegions = []; $scope.canThirdBRDrawn = false; $.each(BodyRegionDictionary, function (index, value) { var tBoxDimesions = $scope.getTBoxDimesions($scope.TransparencyBoxStartX, TransparencyEndX, $scope.TransparencyBoxStartY, TransparencyBoxEndY, value.X, value.Y, value.Height, value.Width); var transparencyBoxHeight = tBoxDimesions.transparencyBoxHeight; var transparencyBoxWidth = tBoxDimesions.transparencyBoxWidth; var transparencyBoxBottom = tBoxDimesions.transparencyBoxBottom; var transparencyBoxRight = tBoxDimesions.transparencyBoxRight; var bodyRegionRight = tBoxDimesions.bodyRegionRight; var bodyRegionBottom = tBoxDimesions.bodyRegionBottom; var transparencyCanvas = document.createElement('canvas'); var tBox = document.getElementById('transparencyCanvas_'+ windowviewid); if (tBox == null) { transparencyCanvas.id = 'transparencyCanvas_'+ windowviewid; $scope.transparencyCanvasId = transparencyCanvas.id; transparencyCanvas.height = TransparencyBoxEndY - $scope.startY; transparencyCanvas.width = TransparencyEndX - $scope.startX; transparencyCanvas.style.position = "absolute"; transparencyCanvas.style.left = $scope.startX + 'px' // x + "px"; transparencyCanvas.style.top = $scope.startY + "px"//y + "px"; transparencyCanvas.style.border = "black 1px solid"; transparencyCanvas.style.backgroundColor = "transparent"; transparencyCanvas.style.zIndex = 200; document.getElementById("canvasDivDA_" + windowviewid).appendChild(transparencyCanvas); $scope.transparencyChangeCounter = 0; $('#transparencyCanvas_' + windowviewid).resizable({ handles: "e,s,se,w,n,ne,nw,sw", stop: function (event, ui) { resizeTransparencyBox(windowviewid); }, start: function (event, ui) { clearTransCanvas(windowviewid); } }); $scope.transparencyCanvasHeight = transparencyCanvas.height; $scope.transparencyCanvasWidth = transparencyCanvas.width; //bind click listener transparencyCanvas.addEventListener('click', TransparencyCanvasClickListener); $(".ui-wrapper").css("z-index", $scope.GetwindowStoreData(windowviewid,'UIWrapperZIndex')); } if ($scope.TransparencyBoxStartX <= bodyRegionRight && value.X <= transparencyBoxRight && $scope.TransparencyBoxStartY <= bodyRegionBottom && value.Y <= transparencyBoxBottom) { $scope.SetwindowStoreData(windowviewid,'isTBDrawnOnBodyRegion',true); if (value.bodyRegionId == '3') { var BR_SixTBData = new jinqJs() .from($scope.transparencyDrawnRegions) .where('BRID == 6') .select(); if (BR_SixTBData != null && BR_SixTBData != undefined && BR_SixTBData.length > 0) { $scope.canThirdBRDrawn = true; } } var bodyVid=$scope.GetwindowStoreData(windowviewid,'voId'); if (bodyVid == "9" || bodyVid == "11" || bodyVid == "2" || bodyVid == "3" || bodyVid == "6" || bodyVid == "7") { if (value.bodyRegionId == "6") { $scope.loadTransparencyImage(value.bodyRegionId, value.Height, value.Width, value.X, value.Y, value.IsMirror, $scope.TransparencyBoxStartX, TransparencyEndX, $scope.TransparencyBoxStartY, TransparencyBoxEndY, $scope, false, false, false, windowviewid); } else { $scope.loadTransparencyImage(value.bodyRegionId, value.Height, value.Width, value.X, value.Y, value.IsMirror, $scope.TransparencyBoxStartX, TransparencyEndX, $scope.TransparencyBoxStartY, TransparencyBoxEndY, $scope, false, false, false, windowviewid); } } else { if (value.bodyRegionId == '3' && $scope.canThirdBRDrawn == true) { $scope.loadTransparencyImage(value.bodyRegionId, value.Height, value.Width, value.X, value.Y, value.IsMirror, $scope.TransparencyBoxStartX, TransparencyEndX, $scope.TransparencyBoxStartY, TransparencyBoxEndY, $scope, false, false, false, windowviewid); } else { if (value.bodyRegionId == '3' && $scope.canThirdBRDrawn == false) { //1. draw 6th var BRSixData = new jinqJs() .from(BodyRegionDictionary) .where('bodyRegionId == 6') .select(); var isMirror = BRSixData[0].IsMirror; if (isMirror == 'Yes') { //draw mirror arm $scope.loadTransparencyImage(BRSixData[0].bodyRegionId, BRSixData[0].Height, BRSixData[0].Width, BRSixData[0].X, BRSixData[0].Y, 'Yes', $scope.TransparencyBoxStartX, TransparencyEndX, $scope.TransparencyBoxStartY, TransparencyBoxEndY, $scope, false, false, false, windowviewid); //draw non mirror arm $scope.loadTransparencyImage(BRSixData[1].bodyRegionId, BRSixData[1].Height, BRSixData[1].Width, BRSixData[1].X, BRSixData[1].Y, 'No', $scope.TransparencyBoxStartX, TransparencyEndX, $scope.TransparencyBoxStartY, TransparencyBoxEndY, $scope, false, false, false, windowviewid); //draw 3rd BR $timeout(function () { $scope.loadTransparencyImage(value.bodyRegionId, value.Height, value.Width, value.X, value.Y, value.IsMirror, $scope.TransparencyBoxStartX, TransparencyEndX, $scope.TransparencyBoxStartY, TransparencyBoxEndY, $scope, false, false, false, windowviewid); }, 200); } else { //draw mirror arm $scope.loadTransparencyImage(BRSixData[0].bodyRegionId, BRSixData[0].Height, BRSixData[0].Width, BRSixData[0].X, BRSixData[0].Y, 'No', $scope.TransparencyBoxStartX, TransparencyEndX, $scope.TransparencyBoxStartY, TransparencyBoxEndY, $scope, false, false, false, windowviewid); //draw mirror arm $scope.loadTransparencyImage(BRSixData[1].bodyRegionId, BRSixData[1].Height, BRSixData[1].Width, BRSixData[1].X, BRSixData[1].Y, 'Yes', $scope.TransparencyBoxStartX, TransparencyEndX, $scope.TransparencyBoxStartY, TransparencyBoxEndY, $scope, false, false, false, windowviewid); //draw mirror arm $timeout(function () { $scope.loadTransparencyImage(value.bodyRegionId, value.Height, value.Width, value.X, value.Y, value.IsMirror, $scope.TransparencyBoxStartX, TransparencyEndX, $scope.TransparencyBoxStartY, TransparencyBoxEndY, $scope, false, false, false, windowviewid); }, 200); } } else { var BR_SixTBData = new jinqJs() .from($scope.transparencyDrawnRegions) .where('BRID == 6') .select(); if (value.bodyRegionId == "6" && BR_SixTBData != undefined && BR_SixTBData != null && BR_SixTBData.length > 0) { } else $scope.loadTransparencyImage(value.bodyRegionId, value.Height, value.Width, value.X, value.Y, value.IsMirror, $scope.TransparencyBoxStartX, TransparencyEndX, $scope.TransparencyBoxStartY, TransparencyBoxEndY, $scope, false, false, false, windowviewid); } } } } else { //when user draw TB outside body than no bodyRegion //is covred and nothing is drawn so the function is not called in which we are enabling UI $scope.EnableUI(); } }) //for modesty var modestyImageInfo=$scope.GetwindowStoreData(windowviewid,'modestyImageInfo'); if (modestyImageInfo.length > 0) { $.each(modestyImageInfo, function (index, value) { var tBoxDimesions = $scope.getTBoxDimesions($scope.TransparencyBoxStartX, TransparencyEndX, $scope.TransparencyBoxStartY, TransparencyBoxEndY, value.x, value.y, value.Height, value.Width); var transparencyBoxHeight = tBoxDimesions.transparencyBoxHeight; var transparencyBoxWidth = tBoxDimesions.transparencyBoxWidth; var transparencyBoxBottom = tBoxDimesions.transparencyBoxBottom; var transparencyBoxRight = tBoxDimesions.transparencyBoxRight; var bodyRegionRight = tBoxDimesions.bodyRegionRight; var bodyRegionBottom = tBoxDimesions.bodyRegionBottom; if ($scope.TransparencyBoxStartX <= bodyRegionRight && value.x <= transparencyBoxRight && $scope.TransparencyBoxStartY <= bodyRegionBottom && value.y <= transparencyBoxBottom) { $scope.loadTransparencyImage(value.bodyRegionId, value.Height, value.Width, value.x, value.y, value.IsMirror, $scope.TransparencyBoxStartX, TransparencyEndX, $scope.TransparencyBoxStartY, TransparencyBoxEndY, $scope, false, false,false, windowviewid); } }) } // // $('#transparencyScale').modal('show'); $('#transparencyScale_' + windowviewid).css('position', 'fixed') $('#transparencyScale_' + windowviewid).css('top', $scope.TBDrawStartY - 10) $('#transparencyScale_' + windowviewid).css('left', $scope.TBDrawStartX + 130) $('#transparencyScale_' + windowviewid).css('visibility', 'visible') $('#transparencyScale_' + windowviewid).css("z-index", "100000") //Dated:16-07-2016 Issue#4962:Transparency box should be on top. $("#tbSlider_" + windowviewid + " .ui-slider-range-min").css("width", "100%"); $("#tbSlider_" + windowviewid + " .ui-slider-handle").css("left", "100%"); } } document.getElementById("canvasDivDA_" + windowviewid).removeEventListener("mousedown", mouseDownListener); document.getElementById("canvasDivDA_" + windowviewid).removeEventListener("mousemove", mouseMoveListener); document.getElementById("canvasDivDA_" + windowviewid).removeEventListener("mouseup", mouseUpListener); document.getElementById("canvasDivDA_" + windowviewid).removeEventListener("touchstart", mouseDownListener); document.getElementById("canvasDivDA_" + windowviewid).removeEventListener("touchmove", mouseMoveListener); document.getElementById("canvasDivDA_" + windowviewid).removeEventListener("touchend", mouseUpListener); $('#btnTranparency_' + windowviewid).removeClass('btn-black'); $('#btnTranparency_' + windowviewid).addClass('tButtonActive'); //Dated:18-07-2016 Issue#4975: Transparency box should not be clickable if it is already selected. $('#btnTranparency_' + windowviewid).removeClass('tButtonActive'); $('#btnTranparency_' + windowviewid).addClass('btn-black'); $('#btnIdentify_' + windowviewid).removeClass('btn-black'); $('#btnIdentify_' + windowviewid).addClass('btn-primary'); // clear canvas before drawing transparency box if ($rootScope.isAnnotationWindowOpen == true) { $('#canvasDA_'+windowviewid).removeLayers(); var paintCanvasObj = document.getElementById("canvasPaintDA_"+windowviewid); if (paintCanvasObj != null) { var ctx = paintCanvasObj.getContext("2d"); ctx.clearRect(0, 0, 2277, 3248); } var sktch = $("#canvasPaintDA_"+windowviewid).sketch(); $("#canvasPaintDA_"+windowviewid).sketch().actions = []; $("#annotationpaintbrushsize").removeClass("activebtncolor"); $("#annotationpainteraser").removeClass("activebtncolor"); if ($("#DrawMode").hasClass("annotationtoolbartab")) { if ($scope.GetwindowStoreData(windowviewid,'isTBoxModestyVisible') == true) { $rootScope.switchCanvas(); } else { var drawCanvasZindex = $('#canvasDA_'+windowviewid).css("z-index"); var paintCanvasZindex = $("#canvasPaintDA_"+windowviewid).css("z-index"); drawCanvasZindex = parseInt(drawCanvasZindex) - 1; paintCanvasZindex = parseInt(paintCanvasZindex) - 1; if (drawCanvasZindex > paintCanvasZindex) { $(".ui-wrapper").css("z-index", drawCanvasZindex); $scope.SetwindowStoreData(windowviewid,'UIWrapperZIndex',drawCanvasZindex); } else { $(".ui-wrapper").css("z-index", paintCanvasZindex); $scope.SetwindowStoreData(windowviewid,'UIWrapperZIndex',paintCanvasZindex); } } } else { $rootScope.switchToTransparencycanvas(); } } else { $scope.SetwindowStoreData(windowviewid,'UIWrapperZIndex',12000); $(".ui-wrapper").css("z-index", $scope.GetwindowStoreData(windowviewid,'UIWrapperZIndex')); } //hide the speechbubble if ($rootScope.isAnnotationWindowOpen == true) $rootScope.isTBCompleted = true; } $scope.getCanavsDivScrollPosition = function (windowviewid) { var canvasDiv = document.getElementById("canvasDivDA_" + windowviewid); return { verticalScrollPosition: canvasDiv.scrollTop, horizontlScrollPosition: canvasDiv.scrollLeft } } $scope.getTBoxDimesions = function (TransparencyBoxStartX, TransparencyEndX, TransparencyBoxStartY, TransparencyBoxEndY, X, Y, Height, Width) { var tBoxHeight = parseInt(TransparencyBoxEndY) - parseInt(TransparencyBoxStartY); var tBoxWidth = parseInt(TransparencyEndX) - parseInt(TransparencyBoxStartX); var tBoxBottom = parseInt(TransparencyBoxStartY) + parseInt(tBoxHeight); var tBoxRight = parseInt(TransparencyBoxStartX) + parseInt(tBoxWidth); return { transparencyBoxHeight: tBoxHeight, transparencyBoxWidth: tBoxWidth, transparencyBoxBottom: tBoxBottom, transparencyBoxRight: tBoxRight, bodyRegionRight: parseInt(X) + parseInt(Width), bodyRegionBottom: parseInt(Y) + parseInt(Height) } } $scope.loadTransparencyImage = function (bodyRegionId, Height, Width, X, Y, IsMirror, TransparencyBoxStartX, TransparencyEndX, TransparencyBoxStartY, TransparencyBoxEndY, scope, isLayerChanged, isTransparencyChanged, isResized, windowviewid) { var transparencyCanvas = document.getElementById('transparencyCanvas_' + windowviewid); TransparencyBoxStartX = parseInt((transparencyCanvas.style.left).replace('px', '')); TransparencyBoxStartY = parseInt((transparencyCanvas.style.top).replace('px', '')); TransparencyEndX = parseInt(transparencyCanvas.width) + parseInt(TransparencyBoxStartX); TransparencyBoxEndY = parseInt(transparencyCanvas.height) + parseInt(TransparencyBoxStartY); var TBImageDimensions = $scope.calculateDimensionsForTBImage(Height, Width, X, Y, IsMirror, TransparencyBoxStartX, TransparencyEndX, TransparencyBoxStartY, TransparencyBoxEndY, bodyRegionId); var XforCopyImage = TBImageDimensions.XforCopyImageTB; var YforCopyImage = TBImageDimensions.YforCopyImageTB; var WidthforCopyImage = TBImageDimensions.WidthforCopyImageTB; var HeightforCopyImage = TBImageDimensions.HeightforCopyImageTB; var XforTransImage = TBImageDimensions.XforTransImageTB; var WidthforTransImage = TBImageDimensions.WidthforTransImageTB; var HeightforTransImage = TBImageDimensions.HeightforTransImageTB; var YforTransImage = TBImageDimensions.YforTransImageTB; //0. get current layer number if (isResized || isLayerChanged) { //do nothing $scope.SetwindowStoreData(windowviewid,'transNumber',100); $("#tbSlider_" + windowviewid).slider('value', 100); } else { var tranparencyLayer; var currentLayer = $scope.GetwindowStoreData(windowviewid,'layerNumberBeforeTBDraw'); var totalLayers=$scope.GetwindowStoreData(windowviewid,'totalLayers'); if (currentLayer == totalLayers) { tranparencyLayer = currentLayer; } else { tranparencyLayer = currentLayer + 1; } $scope.SetwindowStoreData(windowviewid,'layerNumber',tranparencyLayer); } $('#txtLayerNumberDA_' + windowviewid).val( $scope.GetwindowStoreData(windowviewid,'layerNumber')); var tranparencyImgSrc; var tranparencyMaskImgSrc; var modestyImageInfo=$scope.GetwindowStoreData(windowviewid,'modestyImageInfo'); if ((bodyRegionId.match('modestyImg'))) { var modestyBodyRegionData = new jinqJs() .from(modestyImageInfo) .where('bodyRegionId == ' + bodyRegionId) .select(); tranparencyImgSrc = modestyBodyRegionData[0].SRC; } else { tranparencyImgSrc = $scope.GetImageSource(bodyRegionId, windowviewid); tranparencyMaskImgSrc = $scope.GetMaskImageSource(tranparencyImgSrc); } //remove old canvases var oldCanvas; var oldtempTransCanvasMask; var oldtempTransCanvasMaskMR; if (IsMirror == 'Yes') { oldCanvas = document.getElementById('transparencyTempCanvas_MR_' + bodyRegionId + "_" + windowviewid); oldtempTransCanvasMaskMR = document.getElementById('transparencyTempCanvasMask_MR' + bodyRegionId + '_mci' + "_" + windowviewid); oldtempTransCanvasMask = document.getElementById('transparencyTempCanvasMask_' + bodyRegionId + '_mci' + "_" + windowviewid); if (oldtempTransCanvasMaskMR != null) { document.getElementById("canvasDivDA_" + windowviewid).removeChild(oldtempTransCanvasMaskMR); } } else { oldCanvas = document.getElementById('transparencyTempCanvas_' + bodyRegionId + "_" + windowviewid) oldtempTransCanvasMask = document.getElementById('transparencyTempCanvasMask_' + bodyRegionId + '_mci' + "_" + windowviewid); } if (oldCanvas != null) { document.getElementById("canvasDivDA_" + windowviewid).removeChild(oldCanvas); } if (oldtempTransCanvasMask != null) { document.getElementById("canvasDivDA_" + windowviewid).removeChild(oldtempTransCanvasMask); } var transparencyTempCanvas = document.createElement('canvas'); var transparencyTempcanavsMask = document.createElement('canvas'); //if mirror then draw mask image for non mirrored body region for annotation if (IsMirror == 'Yes') { transparencyTempCanvas.id = 'transparencyTempCanvas_MR_' + bodyRegionId + "_" + windowviewid; transparencyTempcanavsMask.id = 'transparencyTempCanvasMask_MR' + bodyRegionId + '_mci' + "_" + windowviewid; } else { if ((bodyRegionId.match('modestyImg'))) { transparencyTempCanvas.id = 'transparencyTempCanvas_' + bodyRegionId + "_" + windowviewid; } else { transparencyTempCanvas.id = 'transparencyTempCanvas_' + bodyRegionId + "_" + windowviewid; transparencyTempcanavsMask.id = 'transparencyTempCanvasMask_' + bodyRegionId + '_mci' + "_" + windowviewid; } } transparencyTempCanvas.height = Height; transparencyTempCanvas.width = Width; transparencyTempCanvas.style.position = "absolute"; transparencyTempCanvas.style.left = X + 'px' // x + "px"; transparencyTempCanvas.style.top = Y + "px"//y + "px"; transparencyTempCanvas.style.visibility = 'hidden'; document.getElementById("canvasDivDA_" + windowviewid).appendChild(transparencyTempCanvas); //create temp mask canvas if ((bodyRegionId.match('modestyImg'))) { } else { transparencyTempcanavsMask.height = Height; transparencyTempcanavsMask.width = Width; transparencyTempcanavsMask.style.position = "absolute"; transparencyTempcanavsMask.style.left = X + 'px' // x + "px"; transparencyTempcanavsMask.style.top = Y + "px"//y + "px"; transparencyTempcanavsMask.style.visibility = 'hidden'; document.getElementById("canvasDivDA_" + windowviewid).appendChild(transparencyTempcanavsMask); } //for modesty canvas if ((bodyRegionId.match('modestyImg'))) { var modestyTransTempCanvasId = 'tempCanvasModesty_' + bodyRegionId + "_" + windowviewid; var modestyTransCanvasId = 'modestyTransCanavs_' + bodyRegionId + "_" + windowviewid; if (document.getElementById(modestyTransTempCanvasId) != null) { document.getElementById(modestyTransTempCanvasId).parentNode.removeChild(document.getElementById(modestyTransTempCanvasId)); } if (document.getElementById(modestyTransTempCanvasId) == null || document.getElementById(modestyTransTempCanvasId) == undefined) { var tempCanvasModesty = document.createElement('canvas'); tempCanvasModesty.id = modestyTransTempCanvasId; tempCanvasModesty.height = Height; tempCanvasModesty.width = Width; tempCanvasModesty.style.position = "absolute"; tempCanvasModesty.style.left = 10 + 'px'; tempCanvasModesty.style.top = 10 + 'px'; tempCanvasModesty.style.backgroundColor = "transparent"; tempCanvasModesty.style.visibility = 'hidden'; // tempCanvasModesty.style.border = "black 1px solid"; document.getElementById("canvasDivDA_" + windowviewid).appendChild(tempCanvasModesty); } if (document.getElementById(modestyTransCanvasId) != null) { document.getElementById(modestyTransCanvasId).parentNode.removeChild(document.getElementById(modestyTransCanvasId)); } if (document.getElementById(modestyTransCanvasId) == null || document.getElementById(modestyTransCanvasId) == undefined) { var canvasModesty = document.createElement('canvas'); canvasModesty.id = modestyTransCanvasId; canvasModesty.className = 'transModestyImg' canvasModesty.height = Height; canvasModesty.width = Width; canvasModesty.style.position = "absolute"; canvasModesty.style.left = X + 'px'; canvasModesty.style.top = Y + 'px'; var isModestyOn=$scope.GetwindowStoreData(windowviewid,'isModestyOn'); if (isModestyOn == true) { canvasModesty.style.visibility = 'visible'; $scope.SetwindowStoreData(windowviewid,'isTBoxModestyVisible',true); } else canvasModesty.style.visibility = 'hidden'; if ($scope.GetwindowStoreData(windowviewid,'voId') == "11") { canvasModesty.style.zIndex = 11000; } else canvasModesty.style.zIndex = $rootScope.modestyCanvasZindex; canvasModesty.addEventListener('click', OnClickModestyTransCanvas); document.getElementById("canvasDivDA_" + windowviewid).appendChild(canvasModesty); } } if (tranparencyImgSrc != undefined) { var tempImg = new Image(); var tempCanvasID; if (IsMirror == 'Yes') { tempCanvasID = 'transparencyTempCanvas_MR_' + bodyRegionId + "_" + windowviewid; } else { if ((bodyRegionId.match('modestyImg'))) { tempCanvasID = 'transparencyTempCanvas_' + bodyRegionId + "_" + windowviewid; } else tempCanvasID = 'transparencyTempCanvas_' + bodyRegionId + "_" + windowviewid;; } tempImg.onload = function () { var tempCtx = transparencyTempCanvas.getContext('2d'); if (IsMirror == 'Yes') { tempCtx.save(); tempCtx.translate(Width, 0); tempCtx.scale(-1, 1); tempCtx.drawImage(tempImg, 0, 0); if ($scope.GetwindowStoreData(windowviewid,'isHighLight') == true) { $scope.highlightTempTransparencyCanvas(tempCanvasID, XforCopyImage, YforCopyImage, WidthforCopyImage, HeightforCopyImage, XforTransImage, YforTransImage, WidthforTransImage, HeightforTransImage, Height, Width, bodyRegionId, windowviewid); } } else { tempCtx.drawImage(tempImg, 0, 0); if ($scope.GetwindowStoreData(windowviewid,'isHighLight') == true) { $scope.highlightTempTransparencyCanvas(tempCanvasID, XforCopyImage, YforCopyImage, WidthforCopyImage, HeightforCopyImage, XforTransImage, YforTransImage, WidthforTransImage, HeightforTransImage, Height, Width, bodyRegionId, windowviewid); } } if ($scope.GetwindowStoreData(windowviewid,'isHighLight') != true) { if ((bodyRegionId.match('modestyImg'))) { var modestyTempCanvasId = 'tempCanvasModesty_' + bodyRegionId + "_" + windowviewid; if (document.getElementById(modestyTempCanvasId) != undefined || document.getElementById(modestyTempCanvasId) != null) { var contxModestyTemp = document.getElementById(modestyTempCanvasId).getContext('2d'); var tbTempCanvas = document.getElementById(tempCanvasID) contxModestyTemp.drawImage(tbTempCanvas, XforCopyImage, YforCopyImage, WidthforCopyImage, HeightforCopyImage, XforTransImage, YforTransImage, WidthforTransImage, HeightforTransImage); } } else { if (document.getElementById('tempCanvas_' + windowviewid) != null && document.getElementById('tempCanvas_' + windowviewid) != undefined) { var contx = document.getElementById('tempCanvas_' + windowviewid).getContext('2d'); var tbTempCanvas = document.getElementById(tempCanvasID) contx.drawImage(tbTempCanvas, XforCopyImage, YforCopyImage, WidthforCopyImage, HeightforCopyImage, XforTransImage, YforTransImage, WidthforTransImage, HeightforTransImage); } } $scope.DrawOnTBWithSelectedTransparency(tempCanvasID, XforCopyImage, YforCopyImage, WidthforCopyImage, HeightforCopyImage, XforTransImage, YforTransImage, WidthforTransImage, HeightforTransImage, Height, Width, bodyRegionId, windowviewid); } } tempImg.src = tranparencyImgSrc;//"http://localhost/AIA/" + tranparencyImgSrc; } //mask image code //draw mask for annotation var tempMaskImg = new Image(); var tranparencyMaskImgSrc = $scope.GetMaskImageSource(tranparencyImgSrc); tempMaskImg.src = tranparencyMaskImgSrc;//"http://localhost/AIA/" + tranparencyMaskImgSrc; tempMaskImg.onload = function () { var tempmaskCtx = transparencyTempcanavsMask.getContext('2d'); if (IsMirror == 'Yes') { tempmaskCtx.save(); tempmaskCtx.translate(Width, 0); tempmaskCtx.scale(-1, 1); tempmaskCtx.drawImage(tempMaskImg, 0, 0); } else { tempmaskCtx.drawImage(tempMaskImg, 0, 0); } } //set modesty image visiblility true/false as per layer var BRID = ''; if (bodyRegionId.match('modestyImg') && document.getElementById('modestyTransCanavs_' + bodyRegionId + "_" + windowviewid) != null) { BRID = bodyRegionId[bodyRegionId.length - 1]; } else if ((bodyRegionId == '2' || bodyRegionId == '3') && document.getElementById('modestyTransCanavs_modestyImg' + bodyRegionId + "_" + windowviewid) != null) { BRID = bodyRegionId; } if (BRID != '') { var layerInfoForModesty=$scope.GetwindowStoreData(windowviewid,'layerInfoForModesty'); var layerInfo = new jinqJs() .from(layerInfoForModesty) .where('bodyRegionId == ' + BRID) .select(); if (layerInfo != undefined && layerInfo.length > 0) { var lowerlayerNumberForModesty = layerInfo[0].lowerlayerNumberForModesty; var HigherlayerNumberForModesty = layerInfo[0].HigherlayerNumberForModesty; var modestyTransCanvases = $("canvas[id*='modestyTransCanavs']"); if (modestyTransCanvases != null || modestyTransCanvases != undefined && modestyTransCanvases.length > 0) { var isModestyOn=$scope.GetwindowStoreData(windowviewid,'isModestyOn'); for (var j = 0; j < modestyTransCanvases.length; j++) { var len= (modestyTransCanvases[j].id).split("_").length; var winid = (modestyTransCanvases[j].id).split("_")[len-1]; if(winid==windowviewid) { if (modestyTransCanvases[j].id.match(bodyRegionId)) { var modestyCanavs = document.getElementById(modestyTransCanvases[j].id); if (isModestyOn == true && (parseInt(lowerlayerNumberForModesty) <= parseInt( $scope.GetwindowStoreData(windowviewid,'layerNumber'))) && (HigherlayerNumberForModesty) > parseInt($scope.GetwindowStoreData(windowviewid,'layerNumber'))) { $rootScope.isTBLayerLessSeven = true; modestyCanavs.style.visibility = 'visible'; } else { $rootScope.isTBLayerLessSeven = false; modestyCanavs.style.visibility = 'hidden'; } } } } } } } } $scope.calculateDimensionsForTBImage = function (Height, Width, X, Y, IsMirror, TransparencyBoxStartX, TransparencyEndX, TransparencyBoxStartY, TransparencyBoxEndY, bodyRegionId) { var XforCopyImage = 0; var YforCopyImage = 0; var WidthforCopyImage = 0; var HeightforCopyImage = 0; var XforTransImage = 0; var WidthforTransImage = 0; var HeightforTransImage = 0; var YforTransImage = 0; //X ends outside and start outside of bodyregion if (TransparencyBoxStartX < X && TransparencyEndX > parseInt(X) + parseInt(Width)) { XforCopyImage = 0; WidthforCopyImage = Width; WidthforTransImage = Width; if ((bodyRegionId.match('modestyImg'))) { XforTransImage = 0; } else XforTransImage = parseInt(X) - (parseInt(TransparencyBoxStartX)); } else if (TransparencyBoxStartX < X && TransparencyEndX < parseInt(X) + parseInt(Width)) { XforCopyImage = 0; WidthforCopyImage = parseInt(TransparencyEndX) - parseInt(X); WidthforTransImage = parseInt(TransparencyEndX) - parseInt(X); if ((bodyRegionId.match('modestyImg'))) { XforTransImage = 0; } else XforTransImage = parseInt(X) - (parseInt(TransparencyBoxStartX)); } else if (TransparencyBoxStartX > X && TransparencyEndX > parseInt(X) + parseInt(Width)) { XforCopyImage = parseInt(TransparencyBoxStartX) - parseInt(X); WidthforCopyImage = parseInt(X) + parseInt(Width) - parseInt(TransparencyBoxStartX); WidthforTransImage = parseInt(X) + parseInt(Width) - parseInt(TransparencyBoxStartX); if ((bodyRegionId.match('modestyImg'))) { XforTransImage = parseInt(TransparencyBoxStartX) - parseInt(X); } else XforTransImage = 0; } else if (TransparencyBoxStartX > X && TransparencyEndX < parseInt(X) + parseInt(Width)) { XforCopyImage = parseInt(TransparencyBoxStartX) - parseInt(X);//parseInt(X) + parseInt(Width) - parseInt(scope.TransparencyBoxStartX)// scope.TransparencyBoxStartX ; WidthforCopyImage = parseInt(TransparencyEndX) - parseInt(TransparencyBoxStartX); WidthforTransImage = parseInt(TransparencyEndX) - parseInt(TransparencyBoxStartX); if ((bodyRegionId.match('modestyImg'))) { XforTransImage = parseInt(TransparencyBoxStartX) - parseInt(X); } else XforTransImage = 0; } //calculate Y and height for tempTranparency box from where to cut the image if (TransparencyBoxStartY < Y && TransparencyBoxEndY > parseInt(Y) + parseInt(Height)) { YforCopyImage = 0; HeightforCopyImage = Height; HeightforTransImage = Height; if ((bodyRegionId.match('modestyImg'))) { YforTransImage = 0; } else YforTransImage = parseFloat(Y) - parseInt(TransparencyBoxStartY)//parseFloat(Y) - (24.4); } else if (TransparencyBoxStartY < Y && TransparencyBoxEndY < (parseInt(Y) + parseInt(Height))) { YforCopyImage = 0; HeightforCopyImage = (parseInt(TransparencyBoxEndY)) - parseInt(Y)//(parseInt(Height) + parseInt(Y)) - (parseInt(TransparencyBoxEndY) - parseInt(scope.TransparencyBoxStartY)); HeightforTransImage = (parseInt(TransparencyBoxEndY)) - parseInt(Y)// - parseInt(scope.TransparencyBoxStartY)); if ((bodyRegionId.match('modestyImg'))) { YforTransImage = 0; } else YforTransImage = parseFloat(Y) - parseInt(TransparencyBoxStartY);// - (24.4); } else if (TransparencyBoxStartY > Y && TransparencyBoxEndY > parseInt(Y) + parseInt(Height)) { YforCopyImage = parseInt(TransparencyBoxStartY) - parseInt(Y); HeightforCopyImage = parseInt(Y) + parseInt(Height) - parseInt(TransparencyBoxStartY); HeightforTransImage = parseInt(Y) + parseInt(Height) - parseInt(TransparencyBoxStartY); if ((bodyRegionId.match('modestyImg'))) { YforTransImage = parseInt(TransparencyBoxStartY) - parseInt(Y); } else YforTransImage = 0; } else if (TransparencyBoxStartY > Y && TransparencyBoxEndY < parseInt(Y) + parseInt(Height)) { YforCopyImage = parseInt(TransparencyBoxStartY) - parseInt(Y); HeightforCopyImage = parseInt(TransparencyBoxEndY) - parseInt(TransparencyBoxStartY); HeightforTransImage = parseInt(TransparencyBoxEndY) - parseInt(TransparencyBoxStartY); if ((bodyRegionId.match('modestyImg'))) { YforTransImage = parseInt(TransparencyBoxStartY) - parseInt(Y); } else YforTransImage = 0; } return { XforCopyImageTB: XforCopyImage, YforCopyImageTB: YforCopyImage, WidthforCopyImageTB: WidthforCopyImage, HeightforCopyImageTB: HeightforCopyImage, XforTransImageTB: XforTransImage, WidthforTransImageTB: WidthforTransImage, HeightforTransImageTB: HeightforTransImage, YforTransImageTB: YforTransImage } } $scope.highlightTempTransparencyCanvas = function (tempCanvasID, XforCopyImage, YforCopyImage, WidthforCopyImage, HeightforCopyImage, XforTransImage, YforTransImage, WidthforTransImage, HeightforTransImage, Height, Width, bodyRegionId, windowviewid) { var tempTransCanvas = document.getElementById(tempCanvasID); var tempCanvasContext = tempTransCanvas.getContext('2d'); var dataURL = tempTransCanvas.toDataURL(); var img = new Image(); img.src = dataURL; img.onload = function () { var DAData = new BitmapData(parseInt(tempTransCanvas.width), parseInt(tempTransCanvas.height)); DAData.draw(img); var colorMode = $scope.applyGrayMatrix(img, tempCanvasContext); if (colorMode != undefined || colorMode != null) { var zeroPoint = new Point(); DAData.applyFilter(DAData, DAData.rect, zeroPoint, colorMode); tempCanvasContext.putImageData(DAData.data, 0, 0); var isModestyOn=$scope.GetwindowStoreData(windowviewid,'isModestyOn'); //keep the original image on temp canavs to use it in changing transparency if (isModestyOn == true && (bodyRegionId.match('modestyImg'))) { var modestyTempCanvasId = 'tempCanvasModesty_' + bodyRegionId + "_" + windowviewid; if (document.getElementById(modestyTempCanvasId) != undefined || document.getElementById(modestyTempCanvasId) != null) { var contxModestyTemp = document.getElementById(modestyTempCanvasId).getContext('2d'); var tbTempCanvas = document.getElementById(tempCanvasID) contxModestyTemp.drawImage(tbTempCanvas, XforCopyImage, YforCopyImage, WidthforCopyImage, HeightforCopyImage, XforTransImage, YforTransImage, WidthforTransImage, HeightforTransImage); } } else { if (document.getElementById('tempCanvas_' + windowviewid) != null) { var contx = document.getElementById('tempCanvas_' + windowviewid).getContext('2d'); var tbTempCanvas = document.getElementById(tempCanvasID) contx.drawImage(tbTempCanvas, XforCopyImage, YforCopyImage, WidthforCopyImage, HeightforCopyImage, XforTransImage, YforTransImage, WidthforTransImage, HeightforTransImage); } } $scope.DrawOnTBWithSelectedTransparency(tempCanvasID, XforCopyImage, YforCopyImage, WidthforCopyImage, HeightforCopyImage, XforTransImage, YforTransImage, WidthforTransImage, HeightforTransImage, Height, Width, bodyRegionId, windowviewid); } } } $scope.DrawOnTBWithSelectedTransparency = function (tempCanvasID, XforCopyImage, YforCopyImage, WidthforCopyImage, HeightforCopyImage, XforTransImage, YforTransImage, WidthforTransImage, HeightforTransImage, Height, Width, bodyRegionId, windowviewid) { var transNumber = $scope.GetwindowStoreData(windowviewid,'transNumber');//txtTransparencyChange.value; //this changes the transparency when transparency is already activated and user resizes or chage the layer var tempCtx = document.getElementById(tempCanvasID).getContext('2d'); var imageD = tempCtx.getImageData(0, 0, Width, Height); var imageData = imageD.data; var length = imageData.length; //to resolve lateral arm black issue in highlight mode if ($scope.GetwindowStoreData(windowviewid,'isHighLight')) { var c = 0; for (var i = 0; i < imageData.length; i += 4) { if (imageData[i] == imageData[i + 1] && imageData[i + 1] == imageData[i + 2] && imageData[i + 2] === 0) { imageData[i + 3] = 0; } } tempCtx.putImageData(imageD, 0, 0); //} } // set every fourth value to the desired number of transparency var imageD1 = tempCtx.getImageData(0, 0, Width, Height); var imageData1 = imageD1.data; var length = imageData.length; var bodyVid=$scope.GetwindowStoreData(windowviewid,'voId'); for (var i = 3; i < length; i += 4) { if (bodyVid == "9" || bodyVid == "11") { if (imageData1[i] == 0) { } else { imageData1[i] = ((255) * (parseInt(transNumber))) / 100; } } else { imageData1[i] = ((255) * (parseInt(transNumber))) / 100; } } tempCtx.putImageData(imageD1, 0, 0); $scope.widthOfImage = WidthforTransImage; $scope.heightOfImage = HeightforTransImage; $scope.xOfImage = XforTransImage; $scope.yOfImage = YforTransImage; var transparencyCanvas = document.getElementById('transparencyCanvas_' + windowviewid); var ctx = transparencyCanvas.getContext('2d'); var tmpCanvasContext = document.getElementById(tempCanvasID);//.getContext('2d'); var ctx; if ((bodyRegionId.match('modestyImg'))) { var modestyTransCanvasId = 'modestyTransCanavs_' + bodyRegionId + "_" + windowviewid ctx = document.getElementById(modestyTransCanvasId).getContext('2d'); } else ctx = transparencyCanvas.getContext('2d'); // var ctx = transparencyCanvas.getContext('2d'); ctx.drawImage(tmpCanvasContext, XforCopyImage, YforCopyImage, WidthforCopyImage, HeightforCopyImage, XforTransImage, YforTransImage, WidthforTransImage, HeightforTransImage) if ((bodyRegionId.match('modestyImg'))) { var imageD1 = ctx.getImageData(0, 0, Width, Height); var imageData1 = imageD1.data; var length1 = imageData1.length; // set every fourth value to the desired number of transparency for (var i = 0; i < imageData1.length; i += 4) { if (imageData1[i] == imageData1[i + 1] && imageData1[i + 1] == imageData1[i + 2] && imageData1[i + 2] === 0) { imageData1[i + 3] = 0; } } ctx.putImageData(imageD1, 0, 0); var isModestyOn=$scope.GetwindowStoreData(windowviewid,'isModestyOn'); if (isModestyOn && $rootScope.isTBLayerLessSeven == true) { document.getElementById('modestyTransCanavs_' + bodyRegionId + "_" + windowviewid).style.visibility = 'visible'; } else { document.getElementById('modestyTransCanavs_' + bodyRegionId + "_" + windowviewid).style.visibility = 'hidden'; } } // $scope.transparencyDrawnRegions.push(bodyRegionId); $scope.transparencyDrawnRegions.push({ 'BRID': bodyRegionId }); $rootScope.isLoading = false; $('#spinner').css('visibility', 'hidden'); if ($scope.transparencyDrawnRegions.length == $scope.IncludedBodyRegions.length) { transparencyCanvas.style.visibility = 'visible'; $('.rectangle').remove(); } $scope.EnableUI(); } $scope.changeTransparency = function (windowviewid) { //this changes the transparency when user click on transparency scale(we have already set the original //data on tras canvas irrespective of the trans number, so we can chnage the transparnecy of original data not the manipulated) var transNumber = $scope.GetwindowStoreData(windowviewid,'transNumber'); var bodyVid=$scope.GetwindowStoreData(windowviewid,'voId'); var isHighLight=$scope.GetwindowStoreData(windowviewid,'isHighLight'); var modestyTransCanvases = $("canvas[id*='modestyTransCanavs']"); if (modestyTransCanvases != null || modestyTransCanvases != undefined && modestyTransCanvases.length > 0) { //for modesty for (var j = 0; j < modestyTransCanvases.length; j++) { var len= (modestyTransCanvases[j].id).split("_").length; var winid = (modestyTransCanvases[j].id).split("_")[len-1]; if(winid==windowviewid) { var modctx = document.getElementById(modestyTransCanvases[j].id).getContext('2d'); var modimageDa = modctx.getImageData(0, 0, modestyTransCanvases[j].width, modestyTransCanvases[j].height); var modimageData = modimageDa.data; var length = modimageData.length; if (isHighLight) { var c = 0; for (var i = 0; i < modimageData.length; i += 4) { if (modimageData[i] == modimageData[i + 1] && modimageData[i + 1] == modimageData[i + 2] && modimageData[i + 2] === 0) { modimageData[i + 3] = 0; } } modctx.putImageData(modimageDa, 0, 0); // } } // set every fourth value to desired transparency var ctx1 = document.getElementById(modestyTransCanvases[j].id).getContext('2d'); var imageDa1 = ctx1.getImageData(0, 0, modestyTransCanvases[j].width, modestyTransCanvases[j].height); var imageData1 = imageDa1.data; var length = imageData1.length; for (var i = 3; i < length; i += 4) { if (bodyVid == "9" || bodyVid == "11") { if (imageData1[i] == 0) { } else { imageData1[i] = ((255) * (parseInt(transNumber))) / 100; } } else { if (imageData1[i] == 0) { } else imageData1[i] = ((255) * (parseInt(transNumber))) / 100; } } // after the manipulation, reset the data // and put the imagedata back to the canvas ctx1.putImageData(imageDa1, 0, 0); } } } var ctx = document.getElementById('transparencyCanvas_' + windowviewid).getContext('2d'); // var imageDa = ctx.getImageData(XforTransImage, YforTransImage, WidthforTransImage, HeightforTransImage); var imageDa1 = ctx.getImageData(0, 0, $scope.transparencyCanvasWidth, $scope.transparencyCanvasHeight); // get the image data values var imageData1 = imageDa1.data; var length = imageData1.length; if (isHighLight) { if (bodyVid == "9" || bodyVid == "11") { var c = 0; for (var i = 0; i < imageData1.length; i += 4) { if (imageData1[i] == imageData1[i + 1] && imageData1[i + 1] == imageData1[i + 2] && imageData1[i + 2] === 0) { imageData1[i + 3] = 0; } } ctx.putImageData(imageDa1, 0, 0); } } // set every fourth value to selected transparency var imageDa = ctx.getImageData(0, 0, $scope.transparencyCanvasWidth, $scope.transparencyCanvasHeight); // get the image data values var imageData = imageDa.data; var length = imageData.length; for (var i = 3; i < length; i += 4) { //NIKITA if (bodyVid == "9" || bodyVid == "11") { if (imageData[i] == 0) { } else { imageData[i] = ((255) * (parseInt(transNumber))) / 100; } } else { if (imageData[i] == 0) { } else imageData[i] = ((255) * (parseInt(transNumber))) / 100; } } // after the manipulation, reset the data // imageDa.data = imageData; // and put the imagedata back to the canvas ctx.putImageData(imageDa, 0, 0); } // History Maintained Issue// $rootScope.getAnnotationTextBasedOnSelectedBodyRegion = function (event) { var windowviewid = (event.currentTarget.id).split("_")[2]; var canvasDiv = document.getElementById("canvasDivDA_" + windowviewid); var verticalScrollPosition = canvasDiv.scrollTop; var horizontlScrollPosition = canvasDiv.scrollLeft; $rootScope.Xaxis = event.pageX - $('#canvasDivDA_' + windowviewid).offset().left + horizontlScrollPosition; $rootScope.Yaxis = event.pageY - $('#canvasDivDA_' + windowviewid).offset().top + verticalScrollPosition; $rootScope.setSelectedBodyRegionData(windowviewid); if ($rootScope.isMirrorBodyRegion == "No") { var maskCanvasId = "imageCanvas" + $rootScope.BRId + "_mci" + "|" + windowviewid; var maskCanvas = document.getElementById(maskCanvasId); var maskCanvasContext = maskCanvas.getContext("2d"); var actulalX = $rootScope.Xaxis; var actualY = $rootScope.Yaxis; var RGBColor = $scope.GetRGBColor(maskCanvasContext, actulalX, actualY, $rootScope.BodyRegionXAxis, $rootScope.BodyRegionYAxis); var annotationText = $scope.GetAnnotationText(parseInt(RGBColor),windowviewid); } else { var maskCanvasId = "imageCanvas" + $rootScope.BRId + "_MR_mci"+ "|" + windowviewid; var maskoffsetval = $('#' + maskCanvasId).offset(); var mirrorCanvasX = maskoffsetval.left; //alert(mirrorCanvasX); var mirrorImageCanvas = document.getElementById(maskCanvasId); var mirrorCanvasWidth = mirrorImageCanvas.clientWidth; // alert(mirrorCanvasWidth); var maskCanvas = document.getElementById(maskCanvasId); var maskCanvasContext = maskCanvas.getContext("2d"); var distanceXOnMirrorImage = (parseInt(mirrorCanvasX) + parseInt(mirrorCanvasWidth)) - (parseInt(event.pageX) + horizontlScrollPosition);// - 135); var mirrorXOnNormalImage = parseInt(maskCanvasContext.canvas.offsetLeft) + parseInt(distanceXOnMirrorImage); var actulalX = mirrorXOnNormalImage; var actualY = event.pageY + verticalScrollPosition; var pixelData = maskCanvasContext.getImageData(Math.round(actulalX - parseInt(maskCanvasContext.canvas.offsetLeft)), Math.round(actualY - $rootScope.BodyRegionYAxis), 1, 1); pixelData.data[0] = pixelData.data[0] - 9; pixelData.data[1] = pixelData.data[1] - 9; pixelData.data[2] = pixelData.data[2] - 9 var Red; var Green; var Blue; var zero = "0"; if ((pixelData.data[0]).toString().length != 2) { Red = zero.concat((pixelData.data[0]).toString()) } else { Red = (pixelData.data[0]).toString() } if ((pixelData.data[1]).toString().length != 2) { Green = zero.concat((pixelData.data[1]).toString()) } else { Green = (pixelData.data[1]).toString() } if ((pixelData.data[2]).toString().length != 2) { Blue = zero.concat((pixelData.data[2]).toString()) } else { Blue = (pixelData.data[2]).toString() } var RGBColor = (Red + Green + Blue); } $scope.MultiLanguageAnnationArray = []; var TermAnnotationText=$scope.GetwindowStoreData(windowviewid,'TermAnnotationText'); for (var i = 0; i <= TermAnnotationText.length - 1; i++) { $scope.MultiLanguageAnnationArray.push(TermAnnotationText[i]); } if (TermAnnotationText.length>0) { $scope.createDynamicSpeechBubble(event, event.pageX + horizontlScrollPosition - $('#canvasDivDA_' + windowviewid).offset().left, event.pageY + verticalScrollPosition - $('#canvasDivDA_' + windowviewid).offset().top, true, 0, 0,windowviewid) } } $rootScope.setSelectedBodyRegionData = function (windowviewid) { var BodyRegionDictionary = $scope.GetwindowStoreData(windowviewid,'BodyRegionCordinatesData'); var bodyVid= $scope.GetwindowStoreData(windowviewid,'voId') $.each(BodyRegionDictionary, function (index, value) { var bodyRegionRight = parseInt(value.X) + parseInt(value.Width); var bodyRegionBottom = parseInt(value.Y) + parseInt(value.Height); if ($rootScope.Xaxis <= bodyRegionRight && $rootScope.Yaxis <= bodyRegionBottom && value.X <= $rootScope.Xaxis && value.Y <= $rootScope.Yaxis) { if (bodyVid == "11" || bodyVid == "9") { if (value.bodyRegionId == "6") { $rootScope.BRId = value.bodyRegionId; $rootScope.BodyRegionXAxis = value.X; $rootScope.BodyRegionYAxis = value.Y; $rootScope.isMirrorBodyRegion = value.IsMirror; return false; } } else { $rootScope.BRId = value.bodyRegionId; $rootScope.BodyRegionXAxis = value.X; $rootScope.BodyRegionYAxis = value.Y; $rootScope.isMirrorBodyRegion = value.IsMirror; return false; } } }); } function resizeTransparencyBox(windowviewid) { clearTransCanvas(windowviewid); var tCanvas = document.getElementById('transparencyCanvas_' + windowviewid); var tCanvasContext = tCanvas.getContext('2d'); var tCanvasHeight = parseInt((tCanvas.style.height).replace('px', '')); var tCanvasWidth = parseInt((tCanvas.style.width).replace('px', '')); var tBoxStartX = parseInt((tCanvas.style.left).replace('px', '')); var tBoxEndX = parseInt((tCanvas.style.left).replace('px', '')) + parseInt((tCanvas.style.width.replace('px', ''))); var tBoxStartY = parseInt((tCanvas.style.top).replace('px', '')); var tBoxEndY = parseInt((tCanvas.style.top).replace('px', '')) + parseInt((tCanvas.style.height).replace('px', '')); var transparencyBoxBottom = parseInt(tBoxStartY) + parseInt(tCanvasHeight); var transparencyBoxRight = parseInt(tBoxStartX) + parseInt(tCanvasWidth); if (tCanvas != null) { $('#transparencyCanvas_' + windowviewid).remove(); } var modestyTransCanvases = $("canvas[id*='modestyTransCanavs']"); if (modestyTransCanvases != null || modestyTransCanvases != undefined && modestyTransCanvases.length > 0) { for (var j = 0; j < modestyTransCanvases.length; j++) { var len= (modestyTransCanvases[j].id).split("_").length; var winid = (modestyTransCanvases[j].id).split("_")[len-1]; if(winid==windowviewid) { modestyTransCanvases[j].parentNode.removeChild(modestyTransCanvases[j]); } } } var modestyTempCanvases = $("canvas[id*='tempCanvasModesty']"); if (modestyTempCanvases != null || modestyTempCanvases != undefined && modestyTempCanvases.length > 0) { for (var j = 0; j < modestyTempCanvases.length; j++) { var len= (modestyTempCanvases[j].id).split("_").length; var winid = (modestyTempCanvases[j].id).split("_")[len-1]; if(winid==windowviewid) { modestyTempCanvases[j].parentNode.removeChild(modestyTempCanvases[j]); } } } if (tCanvasHeight != $scope.transparencyCanvasHeight || tCanvasWidth != $scope.transparencyCanvasWidth) { var transparencyCanvas = document.createElement('canvas'); transparencyCanvas.id = 'transparencyCanvas_' + windowviewid; $scope.transparencyCanvas = tCanvas.id; transparencyCanvas.height = tCanvasHeight; transparencyCanvas.width = tCanvasWidth; transparencyCanvas.style.position = "absolute"; transparencyCanvas.style.left = tCanvas.style.left; // x + "px"; transparencyCanvas.style.top = tCanvas.style.top//y + "px"; transparencyCanvas.style.border = "black 1px solid"; transparencyCanvas.style.zIndex = 200; document.getElementById('canvasDivDA_' + windowviewid).appendChild(transparencyCanvas); $('#transparencyCanvas_' + windowviewid).resizable({ handles: "e,s,se,w,n,ne,nw,sw", stop: function (event, ui) { resizeTransparencyBox(windowviewid); }, start: function (event, ui) { clearTransCanvas(windowviewid); } }); $(".ui-wrapper").css("z-index", $scope.GetwindowStoreData(windowviewid,'UIWrapperZIndex')); //bind click listener transparencyCanvas.addEventListener('click', TransparencyCanvasClickListener); } $scope.transparencyCanvasHeight = tCanvasHeight; $scope.transparencyCanvasWidth = tCanvasWidth; //create temp cavas to retain the original anavs data for use in transparency change as //if u use original canvas data for transprency change then at 0 transparency all data will become transparent and if u increase transparency with this data then the canavs will be blank if (document.getElementById('tempCanvas_' + windowviewid) != null) { $('#tempCanvas_'+ windowviewid).remove(); } var tempCanvas = document.createElement('canvas'); tempCanvas.id = 'tempCanvas_' + windowviewid; $scope.tempCanvas = tempCanvas.id; tempCanvas.height = $scope.transparencyCanvasHeight; tempCanvas.width = $scope.transparencyCanvasWidth; tempCanvas.style.position = "absolute"; tempCanvas.style.left = 200 + 'px'; tempCanvas.style.backgroundColor = "transparent"; tempCanvas.style.visibility = 'hidden'; // tempCanvas.style.border = "black 1px solid"; document.getElementById('canvasDivDA_' + windowviewid).appendChild(tempCanvas); var BodyRegionDictionary = $scope.GetwindowStoreData(windowviewid,'BodyRegionCordinatesData'); $scope.IncludedBodyRegions = []; $scope.transparencyDrawnRegions = []; $scope.canThirdBRDrawn = false; var counter = 0; var bodyVid=$scope.GetwindowStoreData(windowviewid,'voId'); $.each(BodyRegionDictionary, function (index, value) { var bodyRegionRight = parseInt(value.X) + parseInt(value.Width); var bodyRegionBottom = parseInt(value.Y) + parseInt(value.Height); var TBRight = parseInt((document.getElementById('transparencyCanvas_' + windowviewid).style.left).replace('px', '')) + parseInt((document.getElementById('transparencyCanvas_' + windowviewid).style.width).replace('px', '')); var TBBottom = parseInt((document.getElementById('transparencyCanvas_' + windowviewid).style.top).replace('px', '')) + parseInt((document.getElementById('transparencyCanvas_' + windowviewid).style.height).replace('px', '')); var TBStartX = parseInt((document.getElementById('transparencyCanvas_'+ windowviewid).style.left).replace('px', '')); var TBStartY = parseInt((document.getElementById('transparencyCanvas_' + windowviewid).style.top).replace('px', '')); if (TBStartX <= bodyRegionRight && value.X <= TBRight && TBStartY <= bodyRegionBottom && value.Y <= TBBottom) { if ($scope.GetwindowStoreData(windowviewid,'isTBDrawnOnBodyRegion') == false) { var totalayer=$scope.GetwindowStoreData(windowviewid,'totalLayers'); var layer=$scope.GetwindowStoreData(windowviewid,'layerNumber'); if (layer < totalayer) { var layerup=layer+1; $scope.SetwindowStoreData(windowviewid,'layerNumber',layerup); } } if (value.bodyRegionId == '3') { var BR_SixTBData = new jinqJs() .from($scope.transparencyDrawnRegions) .where('BRID == 6') .select(); if (BR_SixTBData != null && BR_SixTBData != undefined && BR_SixTBData.length > 0) { $scope.canThirdBRDrawn = true; } } if ((bodyVid == "9" || bodyVid == "11" || bodyVid == "2" || bodyVid == "3" || bodyVid == "6" ||bodyVid == "7")) { if (value.bodyRegionId == "6") { $scope.loadTransparencyImage(value.bodyRegionId, value.Height, value.Width, value.X, value.Y, value.IsMirror, $scope.TransparencyBoxStartX, $scope.TransparencyEndX, $scope.TransparencyBoxStartY, $scope.TransparencyBoxEndY, $scope, false, false, true, windowviewid); } else { $scope.loadTransparencyImage(value.bodyRegionId, value.Height, value.Width, value.X, value.Y, value.IsMirror, $scope.TransparencyBoxStartX, $scope.TransparencyEndX, $scope.TransparencyBoxStartY, $scope.TransparencyBoxEndY, $scope, false, false, true, windowviewid); } } else { if (value.bodyRegionId == '3' && $scope.canThirdBRDrawn == true) { $scope.loadTransparencyImage(value.bodyRegionId, value.Height, value.Width, value.X, value.Y, value.IsMirror, $scope.TransparencyBoxStartX, $scope.TransparencyEndX, $scope.TransparencyBoxStartY, $scope.TransparencyBoxEndY, $scope, false, false, true, windowviewid); } else { if (value.bodyRegionId == '3' && $scope.canThirdBRDrawn == false) { //1. draw 6th var BRSixData = new jinqJs() .from(BodyRegionDictionary) .where('bodyRegionId == 6') .select(); var isMirror = BRSixData[0].IsMirror; if (isMirror == 'Yes') { //draw mirror arm $scope.loadTransparencyImage(BRSixData[0].bodyRegionId, BRSixData[0].Height, BRSixData[0].Width, BRSixData[0].X, BRSixData[0].Y, 'Yes', $scope.TransparencyBoxStartX, $scope.TransparencyEndX, $scope.TransparencyBoxStartY, $scope.TransparencyBoxEndY, $scope, false, false, true, windowviewid); //draw non mirror arm $scope.loadTransparencyImage(BRSixData[1].bodyRegionId, BRSixData[1].Height, BRSixData[1].Width, BRSixData[1].X, BRSixData[1].Y, 'No', $scope.TransparencyBoxStartX, $scope.TransparencyEndX, $scope.TransparencyBoxStartY, $scope.TransparencyBoxEndY, $scope, false, false, true, windowviewid); //draw 3rd BR $timeout(function () { $scope.loadTransparencyImage(value.bodyRegionId, value.Height, value.Width, value.X, value.Y, value.IsMirror, $scope.TransparencyBoxStartX, $scope.TransparencyEndX, $scope.TransparencyBoxStartY, $scope.TransparencyBoxEndY, $scope, false, false, true, windowviewid); }, 200); } else { //draw mirror arm $scope.loadTransparencyImage(BRSixData[0].bodyRegionId, BRSixData[0].Height, BRSixData[0].Width, BRSixData[0].X, BRSixData[0].Y, 'No', $scope.TransparencyBoxStartX, $scope.TransparencyEndX, $scope.TransparencyBoxStartY, $scope.TransparencyBoxEndY, $scope, false, false, true, windowviewid); //draw non mirror arm $scope.loadTransparencyImage(BRSixData[1].bodyRegionId, BRSixData[1].Height, BRSixData[1].Width, BRSixData[1].X, BRSixData[1].Y, 'Yes', $scope.TransparencyBoxStartX, $scope.TransparencyEndX, $scope.TransparencyBoxStartY, $scope.TransparencyBoxEndY, $scope, false, false, true, windowviewid); //draw 3rd BR $timeout(function () { $scope.loadTransparencyImage(value.bodyRegionId, value.Height, value.Width, value.X, value.Y, value.IsMirror, $scope.TransparencyBoxStartX, $scope.TransparencyEndX, $scope.TransparencyBoxStartY, $scope.TransparencyBoxEndY, $scope, false, false, true, windowviewid); }, 200); } } else { var BR_SixTBData = new jinqJs() .from($scope.transparencyDrawnRegions) .where('BRID == 6') .select(); if (value.bodyRegionId == "6" && BR_SixTBData != undefined && BR_SixTBData != null && BR_SixTBData.length > 0) { //do not draw 6 BR again, its already drawn } else $scope.loadTransparencyImage(value.bodyRegionId, value.Height, value.Width, value.X, value.Y, value.IsMirror, $scope.TransparencyBoxStartX, $scope.TransparencyEndX, $scope.TransparencyBoxStartY, $scope.TransparencyBoxEndY, $scope, false, false, true, windowviewid); } } } $scope.SetwindowStoreData(windowviewid,'isTBDrawnOnBodyRegion',true); } }) var isModestyOn=$scope.GetwindowStoreData(windowviewid,'isModestyOn'); var modestyImageInfo=$scope.GetwindowStoreData(windowviewid,'modestyImageInfo'); //for modesty if (isModestyOn == true && modestyImageInfo.length > 0) { $.each(modestyImageInfo, function (index, value) { var bodyRegionRight = parseInt(value.x) + parseInt(value.Width); var bodyRegionBottom = parseInt(value.y) + parseInt(value.Height); var TBRight = parseInt((document.getElementById('transparencyCanvas_' + windowviewid).style.left).replace('px', '')) + parseInt((document.getElementById('transparencyCanvas_' + windowviewid).style.width).replace('px', '')); var TBBottom = parseInt((document.getElementById('transparencyCanvas_' + windowviewid).style.top).replace('px', '')) + parseInt((document.getElementById('transparencyCanvas_' + windowviewid).style.height).replace('px', '')); var TBStartX = parseInt((document.getElementById('transparencyCanvas_' + windowviewid).style.left).replace('px', '')); var TBStartY = parseInt((document.getElementById('transparencyCanvas_' + windowviewid).style.top).replace('px', '')); if (TBStartX <= bodyRegionRight && value.x <= TBRight && TBStartY <= bodyRegionBottom && value.y <= TBBottom) { $scope.loadTransparencyImage(value.bodyRegionId, value.Height, value.Width, value.x, value.y, value.IsMirror, $scope.TransparencyBoxStartX, $scope.TransparencyEndX, $scope.TransparencyBoxStartY, $scope.TransparencyBoxEndY, $scope, false, false, true, windowviewid); } }) } } function TransparencyCanvasClickListener(evt) { var windowviewid = (evt.currentTarget.id).split("_")[1]; var pixelData; var pixelDataTrans; var mousePos = $scope.getMousePos(evt.pageX,evt.pageY,windowviewid); // alert(mousePos.x + ',' + mousePos.y); var canvasDiv = document.getElementById("canvasDivDA_" + windowviewid); var verticalScrollPosition = canvasDiv.scrollTop; var horizontlScrollPosition = canvasDiv.scrollLeft; //We substracted 135, as the difference between flex and html coordinates for same organ is 135 var actulalX = mousePos.x + horizontlScrollPosition; var actualY = mousePos.y + verticalScrollPosition //- 135; //+ tomenuBarheight + titleBarheight + searchComboheight; var clickedBodyRegion; var x; var y; var isMirror; var width; // var BodyRegionDictionary = $rootScope.BodyRegionCordinatesData; var BodyRegionDictionary = $scope.GetwindowStoreData(windowviewid,'BodyRegionCordinatesData'); var viewOrientationId=$scope.GetwindowStoreData(windowviewid,'viewOrientationId'); if (viewOrientationId == 5) { var clickedBodyRegionData = new jinqJs() .from(BodyRegionDictionary) .where('bodyRegionId == 6') .select(); // clickedBodyRegion = clickedBodyRegionData[0].bodyRegionId; x = clickedBodyRegionData[0].X; y = clickedBodyRegionData[0].Y; width = clickedBodyRegionData[0].Width; var height = clickedBodyRegionData[0].Height; isMirror = clickedBodyRegionData[0].IsMirror; var bodyRegionRight = parseInt(x) + parseInt(width); var bodyRegionBottom = parseInt(y) + parseInt(height); if (actulalX <= bodyRegionRight && x <= actulalX && actualY <= bodyRegionBottom && y <= actualY) { clickedBodyRegion = clickedBodyRegionData[0].bodyRegionId; x = clickedBodyRegionData[0].X; y = clickedBodyRegionData[0].Y; width = clickedBodyRegionData[0].Width; var height = clickedBodyRegionData[0].Height; isMirror = clickedBodyRegionData[0].IsMirror; } } else { $.each(BodyRegionDictionary, function (index, value) { var bodyRegionRight = parseInt(value.X) + parseInt(value.Width); var bodyRegionBottom = parseInt(value.Y) + parseInt(value.Height); if (actulalX <= bodyRegionRight && value.X <= actulalX && actualY <= bodyRegionBottom && value.Y <= actualY) { clickedBodyRegion = value.bodyRegionId; x = value.X; y = value.Y; width = value.Width; isMirror = value.IsMirror; return false; } }) } if(clickedBodyRegion==undefined) return; if (isMirror == "Yes") { var mirrorCanvasX = x; var mirrorCanvasWidth = width; var clickedCanvasMaskId = 'imageCanvas' + clickedBodyRegion + '_mci' + "|" + windowviewid; var clickedCanavs = document.getElementById(clickedCanvasMaskId); var maskCanvasId = 'transparencyTempCanvasMask_' + clickedBodyRegion + '_mci' + "_" + windowviewid; var maskCanvas = document.getElementById(maskCanvasId); if (maskCanvas != null) { x = maskCanvas.style.left; y = maskCanvas.style.top; var maskCanvasTransId = 'transparencyTempCanvasMask_' + clickedBodyRegion + '_mci' + "_" + windowviewid; var maskCanvastrans = document.getElementById(maskCanvasTransId); var maskCanvasContexttrans = maskCanvastrans.getContext("2d"); getAnnotationAndCraeteSpeechBubble(mirrorCanvasX, mirrorCanvasWidth, mousePos, maskCanvasContexttrans, clickedBodyRegion, x, y, evt) } //if non mirrored canvas does not exist for this irror Body region then draw non mirrored image to get annotation else if (maskCanvas == null) { var clickedBodyRegionData = new jinqJs() .from(BodyRegionDictionary) .where('bodyRegionId == ' + clickedBodyRegion) .select(); if (clickedBodyRegionData != null || clickedBodyRegionData != undefined) { var nomMirroredBodyRegion = new jinqJs() .from(clickedBodyRegionData) .where('IsMirror == No') .select(); var transparencyTempcanavsMask = document.createElement('canvas'); transparencyTempcanavsMask.id = 'transparencyTempCanvasMask_' + clickedBodyRegion + '_mci' + "_" + windowviewid; transparencyTempcanavsMask.height = nomMirroredBodyRegion[0].Height; transparencyTempcanavsMask.width = nomMirroredBodyRegion[0].Width; transparencyTempcanavsMask.style.position = "absolute"; transparencyTempcanavsMask.style.left = nomMirroredBodyRegion[0].X + 'px' // x + "px"; transparencyTempcanavsMask.style.top = nomMirroredBodyRegion[0].Y + "px"//y + "px"; transparencyTempcanavsMask.style.visibility = 'hidden'; document.getElementById('canvasDivDA_' + windowviewid).appendChild(transparencyTempcanavsMask); var tranparencyImgSrc = $scope.GetImageSource(clickedBodyRegion, windowviewid); var tranparencyMaskImgSrc = $scope.GetMaskImageSource(tranparencyImgSrc); var tempMaskImg = new Image(); tempMaskImg.src = tranparencyMaskImgSrc; tempMaskImg.onload = function () { var transparencyTempcanavsMask = document.getElementById(maskCanvasId); var tempmaskCtx = transparencyTempcanavsMask.getContext('2d'); tempmaskCtx.drawImage(tempMaskImg, 0, 0); //get x,y of non mirrored canvas for this body region x = transparencyTempcanavsMask.style.left; y = transparencyTempcanavsMask.style.top; getAnnotationAndCraeteSpeechBubble(mirrorCanvasX, mirrorCanvasWidth, mousePos, tempmaskCtx, clickedBodyRegion, x, y, evt) } } } } else { var clickedCanvasMaskId = 'imageCanvas' + clickedBodyRegion + '_mci' + "|" + windowviewid; var maskCanvas = document.getElementById(clickedCanvasMaskId); var maskCanvasContext = maskCanvas.getContext("2d"); //transparecncy canvas var maskCanvasTransId = 'transparencyTempCanvasMask_' + clickedBodyRegion + '_mci' + "_" + windowviewid; var maskCanvastrans = document.getElementById(maskCanvasTransId); var maskCanvasContexttrans = maskCanvastrans.getContext("2d"); pixelData = maskCanvasContext.getImageData(Math.round(actulalX - x), Math.round(actualY - y), 1, 1); pixelDataTrans = maskCanvasContexttrans.getImageData(Math.round(actulalX - x), Math.round(actualY - y), 1, 1); var annotations = $scope.getAnnotationForTransparencyBox(pixelData, pixelDataTrans, $scope,windowviewid); $scope.annotationTextArrayT1 = []; $scope.annotationTextArrayT2 = []; for (var i = 0; i <= $rootScope.annotationTextForTrans1.length - 1; i++) { $scope.annotationTextArrayT1.push($rootScope.annotationTextForTrans1[i]); } for (var i = 0; i <= $rootScope.annotationTextForTrans2.length - 1; i++) { $scope.annotationTextArrayT2.push($rootScope.annotationTextForTrans2[i]); } var TermAnnotationText=$scope.GetwindowStoreData(windowviewid,'TermAnnotationText'); if (TermAnnotationText.length > 0) { $scope.createDynamicSpeechBubble(evt, evt.pageX + horizontlScrollPosition - $('#canvasDivDA_' + windowviewid).offset().left, evt.pageY + verticalScrollPosition - $('#canvasDivDA_' + windowviewid).offset().top, false, 0, 0,windowviewid); } } } function OnClickModestyTransCanvas(evt) { var windowviewid = (evt.currentTarget.id).split("_")[2]; var tCanvasLeft = $(".ui-wrapper").css("left"); var tCanvasLeftAftrSplit = tCanvasLeft.split("p"); var tCanvasTop = $(".ui-wrapper").css("top"); var tCanvasTopAftrSplit = tCanvasTop.split("p"); var tCanvasWidth = $(".ui-wrapper").css("width"); var tCanvasWidthAftrSplit = tCanvasWidth.split("p"); var tCanvasHeight = $(".ui-wrapper").css("height"); var tCanvasHeightAftrSplit = tCanvasHeight.split("p"); // alert("modesty"); var tCanvasTotalWidth = parseInt(tCanvasLeftAftrSplit[0]) + parseInt(tCanvasWidthAftrSplit[0]); var tCanvasTotalHeight = parseInt(tCanvasTopAftrSplit[0]) + parseInt(tCanvasHeightAftrSplit[0]); var mousePos = $scope.getMousePos(evt.pageX,evt.pageY,windowviewid); var canvasDiv = document.getElementById('canvasDivDA_'+windowviewid); var verticalScrollPosition = canvasDiv.scrollTop; var horizontlScrollPosition = canvasDiv.scrollLeft; var actulalX = mousePos.x + horizontlScrollPosition; var actualY = mousePos.y + verticalScrollPosition; var canavsX = evt.currentTarget.offsetLeft; var canvasY = evt.currentTarget.offsetTop; if ((tCanvasLeftAftrSplit[0] <= actulalX && (actulalX <= tCanvasTotalWidth)) && (tCanvasTopAftrSplit[0] <= actualY && actualY <= tCanvasTotalHeight)) { var canvasId = evt.currentTarget.id; var canavsContext = document.getElementById(canvasId).getContext('2d'); var RGBColor = $scope.GetRGBColor(canavsContext, actulalX, actualY, canavsX, canvasY); var annotationText; //Modesty ON if (canvasId.match('modestyImg') && RGBColor != '000000') { RGBColor = DA[0].figLeafTermId; annotationText = $scope.GetAnnotationBasedOnActualTermNo(RGBColor, null, windowviewid); $scope.annotationTextArrayT1 = []; $scope.annotationTextArrayT2 = []; $scope.annotationTextArrayT1.push(annotationText); $scope.annotationTextArrayT2.push(annotationText); } //Modesty On but clicked somewhre else, we did modesty check because the modesty image covers whole body region so if user will click to //see the annotation apart from leaf then the actual click will be on modesty canvas, but for annotation er // else if (canvasId.match('modestyImg') && RGBColor == '000000') { var bodyRegionId = canvasId.split("_")[1].slice(-1); var maskCanvasId = 'imageCanvas' + bodyRegionId + '_mci' + '|' + windowviewid; var maskCanvas = document.getElementById(maskCanvasId); var maskCanvasContext = maskCanvas.getContext("2d"); //transparecncy canvas var maskCanvasTransId = 'transparencyTempCanvasMask_' + bodyRegionId + '_mci' + "_" + windowviewid; var maskCanvastrans = document.getElementById(maskCanvasTransId); var maskCanvasContexttrans = maskCanvastrans.getContext("2d"); var pixelData = maskCanvasContext.getImageData(Math.round(actulalX - canavsX), Math.round(actualY - canvasY), 1, 1); var pixelDataTrans = maskCanvasContexttrans.getImageData(Math.round(actulalX - canavsX), Math.round(actualY - canvasY), 1, 1); var annotations = $scope.getAnnotationForTransparencyBox(pixelData, pixelDataTrans, $scope,windowviewid); $scope.annotationTextArrayT1 = []; $scope.annotationTextArrayT2 = []; for (var i = 0; i <= annotations.annotationT1.length - 1; i++) { $scope.annotationTextArrayT1.push(annotations.annotationT1[i]); } for (var i = 0; i <= annotations.annotationT2.length - 1; i++) { $scope.annotationTextArrayT2.push(annotations.annotationT2[i]); } } var tCanvasTopPos = $(".ui-wrapper").css("top"); var tCanvasTopPosAftrSplit = tCanvasTopPos.split("p"); var tCanvasHeight = $(".ui-wrapper").css("height"); var tCanvasHeightAftrSplit = tCanvasHeight.split("p"); var tCanvasAttr = parseInt(tCanvasTopPosAftrSplit[0]) + parseInt(tCanvasHeightAftrSplit[0]); var TermAnnotationText=$scope.GetwindowStoreData(windowviewid,'TermAnnotationText'); if (TermAnnotationText.length > 0) { $scope.createDynamicSpeechBubble(evt, evt.pageX + horizontlScrollPosition - $('#canvasDivDA_' + windowviewid).offset().left, evt.pageY + verticalScrollPosition - $('#canvasDivDA_' + windowviewid).offset().top, false, 0, 0, windowviewid); } } else { $rootScope.getAnnotationTextBasedOnSelectedBodyRegion(evt); } } function getAnnotationAndCraeteSpeechBubble(mirrorCanvasX, mirrorCanvasWidth, mousePos, maskCanvasContexttrans, clickedBodyRegion, x, y, evt) { var windowviewid = (evt.target.id).split("_")[1]; var canvasDiv = document.getElementById('canvasDivDA_' + windowviewid); var verticalScrollPosition = canvasDiv.scrollTop; var horizontlScrollPosition = canvasDiv.scrollLeft; var distanceXOnMirrorImage = (parseInt(mirrorCanvasX) + parseInt(mirrorCanvasWidth)) - (parseInt(mousePos.x) + horizontlScrollPosition);// - 135); var mirrorXOnNormalImage = parseInt(maskCanvasContexttrans.canvas.offsetLeft) + parseInt(distanceXOnMirrorImage); var actulalX = mirrorXOnNormalImage var actualY = mousePos.y + verticalScrollPosition var clickedCanvasMaskId = 'imageCanvas' + clickedBodyRegion + '_mci' + '|' + windowviewid; var maskCanvas = document.getElementById(clickedCanvasMaskId); var maskCanvasContext = maskCanvas.getContext("2d"); var imgX = Math.round(actulalX - parseInt((x).replace('px', ''))); var imgY = Math.round(actualY - parseInt((y).replace('px', ''))); var pixelData = maskCanvasContext.getImageData(imgX, imgY, 1, 1); //trans layer image data var pixelDataTrans = maskCanvasContexttrans.getImageData(imgX, imgY, 1, 1); // console.log('at the time' + pixelData.data[0]) var annotations = $scope.getAnnotationForTransparencyBox(pixelData, pixelDataTrans, $scope,windowviewid); $scope.annotationTextArrayT1 = []; $scope.annotationTextArrayT2 = []; for (var i = 0; i <= $rootScope.annotationTextForTrans1.length - 1; i++) { $scope.annotationTextArrayT1.push($rootScope.annotationTextForTrans1[i]); } for (var i = 0; i <= $rootScope.annotationTextForTrans2.length - 1; i++) { $scope.annotationTextArrayT2.push($rootScope.annotationTextForTrans2[i]); } var TermAnnotationText=$scope.GetwindowStoreData(windowviewid,'TermAnnotationText'); if (TermAnnotationText.length > 0) { $scope.createDynamicSpeechBubble(evt, evt.pageX + horizontlScrollPosition - $('#canvasDivDA_' + windowviewid).offset().left, evt.pageY + verticalScrollPosition - $('#canvasDivDA_' + windowviewid).offset().top, false, 0, 0,windowviewid); } } function clearTransCanvas(windowviewid) { var tCanvas = document.getElementById('transparencyCanvas_' + windowviewid); if (tCanvas != null) { var tCanvasContext = tCanvas.getContext('2d'); tCanvasContext.clearRect(0, 0, parseInt(tCanvas.style.width), parseInt(tCanvas.style.height)); } } $scope.getAnnotationForTransparencyBox = function (pixelData, pixelDataTrans, scope,windowviewid) { pixelData.data[0] = pixelData.data[0] - 9; pixelData.data[1] = pixelData.data[1] - 9; pixelData.data[2] = pixelData.data[2] - 9; //trans pixel data pixelDataTrans.data[0] = pixelDataTrans.data[0] - 9; pixelDataTrans.data[1] = pixelDataTrans.data[1] - 9; pixelDataTrans.data[2] = pixelDataTrans.data[2] - 9; var Red; var Green; var Blue; var zero = "0"; if ((pixelData.data[0]).toString().length != 2) { Red = zero.concat((pixelData.data[0]).toString()) } else { Red = (pixelData.data[0]).toString() } if ((pixelData.data[1]).toString().length != 2) { Green = zero.concat((pixelData.data[1]).toString()) } else { Green = (pixelData.data[1]).toString() } if ((pixelData.data[2]).toString().length != 2) { Blue = zero.concat((pixelData.data[2]).toString()) } else { Blue = (pixelData.data[2]).toString() } var RGBColor = (Red + Green + Blue); $rootScope.annotationTextForTrans1 = []; var annotationText1 = $scope.GetAnnotationText(parseInt(RGBColor),windowviewid); var TermAnnotationText=$scope.GetwindowStoreData(windowviewid,'TermAnnotationText'); for (var i = 0; i <= TermAnnotationText.length - 1; i++) { $rootScope.annotationTextForTrans1.push(TermAnnotationText[i]); } //get annotation for trans canavs var RedTrans; var GreenTrans; var BlueTrans; var zero = "0"; if ((pixelDataTrans.data[0]).toString().length != 2) { RedTrans = zero.concat((pixelDataTrans.data[0]).toString()) } else { RedTrans = (pixelDataTrans.data[0]).toString() } if ((pixelDataTrans.data[1]).toString().length != 2) { GreenTrans = zero.concat((pixelDataTrans.data[1]).toString()) } else { GreenTrans = (pixelDataTrans.data[1]).toString() } if ((pixelDataTrans.data[2]).toString().length != 2) { BlueTrans = zero.concat((pixelDataTrans.data[2]).toString()) } else { BlueTrans = (pixelDataTrans.data[2]).toString() } var RGBColorTrans = (RedTrans + GreenTrans + BlueTrans); $rootScope.annotationTextForTrans2 = []; var annotationText2 = $scope.GetAnnotationText(parseInt(RGBColorTrans),windowviewid); var TermAnnotationText=$scope.GetwindowStoreData(windowviewid,'TermAnnotationText'); for (var i = 0; i <= TermAnnotationText.length - 1; i++) { $rootScope.annotationTextForTrans2.push(TermAnnotationText[i]); } return { annotationT1: annotationText1, annotationT2: annotationText2 } } $scope.onTransparencyChange = function (ev, ui) { var targetid = ev.target.id; var windowviewid = targetid.split('_')[1]; $scope.SetwindowStoreData(windowviewid,'transNumber',ui.value); var tCanvas = document.getElementById('transparencyCanvas_' + windowviewid); var tCanvasContext = tCanvas.getContext('2d'); var tCanvasHeight = parseInt((tCanvas.style.height).replace('px', '')); var tCanvasWidth = parseInt((tCanvas.style.width).replace('px', '')); var tBoxStartX = parseInt((tCanvas.style.left).replace('px', '')); var tBoxEndX = parseInt((tCanvas.style.left).replace('px', '')) + parseInt((tCanvas.style.width.replace('px', ''))); var tBoxStartY = parseInt((tCanvas.style.top).replace('px', '')); var tBoxEndY = parseInt((tCanvas.style.top).replace('px', '')) + parseInt((tCanvas.style.height).replace('px', '')); var transparencyBoxBottom = parseInt(tBoxStartY) + parseInt(tCanvasHeight); var transparencyBoxRight = parseInt(tBoxStartX) + parseInt(tCanvasWidth); var arr = []; $scope.transparencyChangeCounter++; //before changing the transparency of first canvas, hold the orignal canvas data on temp canvas //put original data on transcanvas so that it can be used to change transparency properly var tempCanavs = document.getElementById('tempCanvas_' + windowviewid); var tempCanvasContext = tempCanavs.getContext('2d'); var originalTransparencyData = tempCanvasContext.getImageData(0, 0, $scope.transparencyCanvasWidth, $scope.transparencyCanvasHeight); var ctx = document.getElementById('transparencyCanvas_' + windowviewid).getContext('2d'); ctx.putImageData(originalTransparencyData, 0, 0); $scope.transparencyDrawnRegions = []; //for modesty var isModestyOn=$scope.GetwindowStoreData(windowviewid,'isModestyOn'); var modestyImageInfo=$scope.GetwindowStoreData(windowviewid,'modestyImageInfo'); if (isModestyOn == true && modestyImageInfo.length > 0) { $.each(modestyImageInfo, function (index, value) { var brId = value.bodyRegionId; var modestyTransTempCanvasId = 'tempCanvasModesty_' + brId + "_" + windowviewid; var modestyTransCanvasId = 'modestyTransCanavs_' + brId + "_" + windowviewid; if (document.getElementById(modestyTransTempCanvasId) != null) { var tempCanvasContext = document.getElementById(modestyTransTempCanvasId).getContext('2d'); var originalTransparencyData = tempCanvasContext.getImageData(0, 0, value.Width, value.Height); var ctx = document.getElementById(modestyTransCanvasId).getContext('2d'); ctx.putImageData(originalTransparencyData, 0, 0); } }) } $scope.changeTransparency(windowviewid); // }); } $scope.CloseTransparencyBox = function (windowviewid) { $scope.SetwindowStoreData(windowviewid,'isTBoxModestyVisible',false); //for enabling annoataions. //Now everything si done on canavases uswed in annotation toolbar. $rootScope.switchCanvas(); if ($rootScope.isAnnotaionToolBarDrawingModeActive == true) { $("#OnIdentify").removeClass('annotationtoolbartab'); $("#DrawMode").addClass('annotationtoolbartab'); //$('.btnCursor').trigger('click'); $("#annotationpaintbrushsize").removeClass("activebtncolor"); $("#annotationpainteraser").removeClass("activebtncolor"); $('.btnCursor').addClass('activebtncolor'); } else { $("#OnIdentify").addClass('annotationtoolbartab'); $("#DrawMode").removeClass('annotationtoolbartab'); } //To enable extract button $scope.SetwindowStoreData(windowviewid,'isTransparencyActivated',false); // $rootScope.isTransparencyActivated = false; $("#btnExtract_" + windowviewid).removeClass("disabled"); $("#btnExtract_" + windowviewid).css("pointer-events", "auto"); $('.com_anno_'+windowviewid).remove(); $('#sppeachBubble_annotation_'+windowviewid).remove(); $('#dot_annotation_'+windowviewid).remove(); $('#bord_annotation_'+windowviewid).remove(); $('#dot_'+windowviewid).remove(); $('#sppeachBubble_'+windowviewid).remove(); $('.com_'+windowviewid).remove(); $('#bord_'+windowviewid).remove(); // clear canvas on closing of transparency box if ($rootScope.isAnnotationWindowOpen == true) { $('#canvasDA_'+windowviewid).removeLayers(); var paintCanvasObj = document.getElementById('canvasPaintDA_'+windowviewid); if (paintCanvasObj != null) { var ctx = paintCanvasObj.getContext("2d"); ctx.clearRect(0, 0, 2277, 3248); var sktch = $('#canvasPaintDA_'+windowviewid).sketch(); $('#canvasPaintDA_'+windowviewid).sketch().actions = []; } } var tBox = document.getElementById('transparencyCanvas_' + windowviewid); if (tBox != null) { tBox.parentNode.removeChild(tBox) var elements = document.getElementsByClassName('ui-icon ui-icon-gripsmall-diagonal-se'); while (elements.length > 0) { elements[0].parentNode.removeChild(elements[0]); } var totalayer=$scope.GetwindowStoreData(windowviewid,'totalLayers'); var currentlayer=$scope.GetwindowStoreData(windowviewid,'currentLayerNumber'); var sliderVal = parseInt(totalayer) - parseInt(currentlayer); console.log('inside mouseDownListener. document.getElementById layerChangeSlider value : ' + document.getElementById('layerChangeSlider') + '$rootScope.totalLayers: ' + totalayer + ' - $rootScope.currentLayerNumber: ' + currentlayer + ' = set value for layerChangeSlider: ' + sliderVal); $("#layerChangeSliderDA_" + windowviewid).slider("option", "value", sliderVal); $('#txtLayerNumberDA_' + windowviewid).val(parseInt(currentlayer)); if (document.getElementById('tempCanvas_' + windowviewid) != null) { $('#tempCanvas_' + windowviewid).remove(); } var tempCanvases = $("canvas[id*='transparencyTempCanvas']"); for (var i = 0; i < tempCanvases.length; i++) { var len= (tempCanvases[i].id).split("_").length; var winid = (tempCanvases[i].id).split("_")[len-1]; if(winid==windowviewid) { tempCanvases[i].parentNode.removeChild(tempCanvases[i]); } } $('.ui-wrapper').remove(); $scope.SetwindowStoreData(windowviewid,'layerNumber',currentlayer); $scope.SetwindowStoreData(windowviewid,'transNumber',100); } var modestyTempCanvases = $("canvas[id*='tempCanvasModesty']"); if (modestyTempCanvases != null || modestyTempCanvases != undefined && modestyTempCanvases.length > 0) { for (var j = 0; j < modestyTempCanvases.length; j++) { var len= (modestyTempCanvases[j].id).split("_").length; var winid = (modestyTempCanvases[j].id).split("_")[len-1]; if(winid==windowviewid) { modestyTempCanvases[j].parentNode.removeChild(modestyTempCanvases[j]); } } } var modestyTransCanvases = $("canvas[id*='modestyTransCanavs']"); if (modestyTransCanvases != null || modestyTransCanvases != undefined && modestyTransCanvases.length > 0) { for (var j = 0; j < modestyTransCanvases.length; j++) { var len= (modestyTransCanvases[j].id).split("_").length; var winid = (modestyTransCanvases[j].id).split("_")[len-1]; if(winid==windowviewid) { modestyTransCanvases[j].parentNode.removeChild(modestyTransCanvases[j]); } } } $('#transparencyScale_' + windowviewid).css('visibility', 'hidden'); $('#btnTranparency_' + windowviewid).removeClass('tButtonActive'); $('#btnTranparency_' + windowviewid).addClass('btn-black'); $('#btnIdentify_' + windowviewid).removeClass('btn-black'); $('#btnIdentify_' + windowviewid).addClass('btn-primary'); document.getElementById('btnTranparency_' + windowviewid).removeEventListener("click", $scope.createTransparencyBox); } function positionTooltip(event, x, y) { // alert('positionTooltip') x = 100, y = 200, $('div.speech-bubble').css({ 'position': 'absolute', 'top': x, 'left': y, 'background-color': '#f8f8f8', 'border': '2px solid #c8c8c8', 'width': '150px', 'height': '50px' }); $('.arrow').css({ 'border-style': 'solid', 'position': 'absolute' }); $('.bottom').css({ 'border-color': '#c8c8c8 transparent transparent transparent', 'border-width': ' 8px 8px 0px 8px', 'bottom': -'8px' }) }; function positionTooltip(event, x, y) { // alert('positionTooltip') x = 100, y = 200, $('div.speech-bubble').css({ 'position': 'absolute', 'top': x, 'left': y, 'background-color': '#f8f8f8', 'border': '2px solid #c8c8c8', 'width': '150px', 'height': '50px' }); $('.arrow').css({ 'border-style': 'solid', 'position': 'absolute' }); $('.bottom').css({ 'border-color': '#c8c8c8 transparent transparent transparent', 'border-width': ' 8px 8px 0px 8px', 'bottom': -'8px' }) }; $scope.IdentifyClick = function (windowviewid) { //if listanager is visisble then close it $scope.SetwindowStoreData(windowviewid,'isListManagerSelected',false); $rootScope.CloseListManager(); if ($scope.GetwindowStoreData(windowviewid,'isTransparencyBtnClicked') == true) { $scope.SetwindowStoreData(windowviewid,'isTransparencyBtnClicked',false); var canvasDiv = document.getElementById('canvasDivDA_'+windowviewid); canvasDiv.removeEventListener("mousedown", mouseDownListener); canvasDiv.removeEventListener("mousemove", mouseMoveListener); canvasDiv.removeEventListener("mouseup", mouseUpListener) $('#btnTranparency_' + windowviewid).removeClass('tButtonActive'); $('#btnTranparency_' + windowviewid).addClass('btn-black'); $("#btnExtract_" + windowviewid).removeClass("disabled"); $("#btnExtract_" + windowviewid).css("pointer-events", "auto"); } } $scope.enableZoom = function (event) { var windowviewid = (event.currentTarget.id).split("_")[1]; if ($rootScope.isOpenResourceBtnClicked) { var btnId = (event.currentTarget).id; if (btnId.indexOf('_') != -1) { $rootScope.multiViewCounter = (btnId).split("_")[1]; $scope.setScopeVariables(); } } if ($rootScope.isCallFromOtherModule) { $scope.SetwindowStoreData(windowviewid,'isHighlightBodyWithCBTermData',false); $scope.SetwindowStoreData(windowviewid,'fullTermlist',[]); $scope.SetwindowStoreData(windowviewid,'AllTerms',[]); $scope.SetwindowStoreData(windowviewid,'CurriculumTermData',[]); } $("#OnIdentify").removeClass("annotationtoolbartab"); $("#DrawMode").removeClass("annotationtoolbartab"); $('.btnCursor').removeClass('activebtncolor'); $(".annotationTollbar").css("display", "none"); $("#annotationButton").removeClass("active"); if ($scope.GetwindowStoreData(windowviewid,'isTransparencyBtnClicked') == true && !$scope.GetwindowStoreData(windowviewid,'isTransparencyActivated')) { $("#btnExtract_" + windowviewid).addClass("disabled"); $("#btnExtract_" + windowviewid).css("pointer-events", "none"); $('#btnTranparency_' + windowviewid).addClass('tButtonActive'); $('#btnTranparency_' + windowviewid).removeClass('btn-black'); } else $("#btnExtract_" + windowviewid).removeClass("disabled"); $("#btnExtract_" + windowviewid).css("pointer-events", "auto"); $('#btnTranparency_' + windowviewid).removeClass("disabled"); $('#btnTranparency_' + windowviewid).css("pointer-events", "auto"); $rootScope.isTransparencyBoxActivated = false; $scope.SetwindowStoreData(windowviewid,'isNormalMode',false); $scope.SetwindowStoreData(windowviewid,'isGenderChnage',false); $scope.SetwindowStoreData(windowviewid,'isViewChange',false); //if listanager is visisble then close it $rootScope.CloseListManager(); $('#sppeachBubble_'+windowviewid).css('display', 'none'); $('#dot_'+windowviewid).css("display", "none"); $scope.terminateCurrentlyRunningWPs(); if ($scope.GetwindowStoreData(windowviewid,'isTransparencyActivated')) { $scope.CloseTransparencyBox(windowviewid); } $scope.SetwindowStoreData(windowviewid,'isZoomed',true); //1. $scope.flushCanvas(windowviewid); if ($rootScope.isOpenResourceBtnClicked) { var zoomVal = $('#zoomValueDA_' + windowviewid).val(); if (zoomVal == 25) { $scope.SetwindowStoreData(windowviewid,'zoomInOut',75); $('#zoomValueDA_' + windowviewid).attr('value', $scope.GetwindowStoreData(windowviewid,'zoomInOut')); } else { $scope.SetwindowStoreData(windowviewid,'zoomInOut',25); $('#$zoomValueDA_' + windowviewid).attr('value', $scope.GetwindowStoreData(windowviewid,'zoomInOut')); } } else { var zoomVal = $('#zoomValueDA_' +windowviewid).val(); if (zoomVal == 25) { $scope.SetwindowStoreData(windowviewid,'zoomInOut',75); $('#zoomValueDA_' + windowviewid).attr('value', $scope.GetwindowStoreData(windowviewid,'zoomInOut')); } else { $scope.SetwindowStoreData(windowviewid,'zoomInOut',25); $('#zoomValueDA_' + windowviewid).attr('value', $scope.GetwindowStoreData(windowviewid,'zoomInOut')); } } var viewOrientationId=$scope.GetwindowStoreData(windowviewid,'viewOrientationId'); $scope.CalculateImageCordinates(viewOrientationId,windowviewid); //3. if ($scope.GetwindowStoreData(windowviewid,'zoomInOut') == 25) { if ($('#canvasDivDA_' + windowviewid) != null) $('#canvasDivDA_' + windowviewid).scrollLeft(0) } else { if ($('#canvasDivDA_' + windowviewid) != null) $('#canvasDivDA_' + windowviewid).scrollLeft($('#canvasDivDA_'+windowviewid).width() / 2) } //remove annotation speech bubble if ($('#dot_'+windowviewid).length > 0) { $('#dot_'+windowviewid).remove(); } if ($('#sppeachBubble_'+windowviewid).length > 0) { $('#sppeachBubble_'+windowviewid).remove(); } //4. if ($scope.GetwindowStoreData(windowviewid,'isHighLight') == true) { $timeout(function () { $scope.highLightBody(windowviewid) }, 50); } } $scope.flushCanvas = function (windowviewid) { $rootScope.isLoading = true; $('#spinner').css('visibility', 'visible'); var viewOrientationId=$scope.GetwindowStoreData(windowviewid,'viewOrientationId'); var endIndex = 0; var startIndex = 0; if ((viewOrientationId == '1') || (viewOrientationId == '4')) { endIndex = 6; startIndex = 1; } else if ((viewOrientationId == '2') || (viewOrientationId == '3')) { endIndex = 5; startIndex = 1; } else if ((viewOrientationId == '5')) { endIndex = 6; startIndex = 2; } else if ((viewOrientationId == '6')) { endIndex = 6; startIndex = 6; } for (var i = startIndex; i <= endIndex; i++) { var id; var maskId; if ($rootScope.isOpenResourceBtnClicked) { id = 'imageCanvas' + i + '|' + windowviewid; maskId = 'imageCanvas' + i + '_mci' + '|' + windowviewid; } else { id = 'imageCanvas' + i + '|' + windowviewid; maskId = 'imageCanvas' + i + '_mci'+'|'+ windowviewid; } var canvas = document.getElementById(id); if (canvas != null || canvas != undefined) document.getElementById('canvasDivDA_' + windowviewid).removeChild(canvas); var maskcanvas = document.getElementById(maskId); if (maskcanvas != null || maskcanvas != undefined) document.getElementById('canvasDivDA_' + windowviewid).removeChild(maskcanvas); if (endIndex == 6) { if (i == 4 || i == 5 || i == 6) { if ($rootScope.isOpenResourceBtnClicked) { id = 'imageCanvas' + i + '_MR' + '|' + windowviewid; maskId = 'imageCanvas' + i + '_MR_mci' + '|' + windowviewid; } else { id = 'imageCanvas' + i + '_MR'+'|'+ windowviewid; maskId = 'imageCanvas' + i + '_MR_mci'+'|'+ windowviewid; } var canvas = document.getElementById(id); if (canvas != null || canvas != undefined) document.getElementById('canvasDivDA_' + windowviewid).removeChild(canvas); var maskcanvas = document.getElementById(maskId); if (maskcanvas != null || maskcanvas != undefined) document.getElementById('canvasDivDA_' + windowviewid).removeChild(maskcanvas); } } //remove modesty canavs var modestyCanvases = $("canvas[id*='imageCanvasmodestyImg']"); if (modestyCanvases != null || modestyCanvases != undefined && modestyCanvases.length > 0) { for (var j = 0; j < modestyCanvases.length; j++) { var len= (modestyCanvases[j].id).split("|").length; var winid = (modestyCanvases[j].id).split("|")[len-1]; if(winid==windowviewid) { modestyCanvases[j].parentNode.removeChild(modestyCanvases[j]); } } } } } $scope.terminateCurrentlyRunningWPs = function () { if ($scope.runningWorkers != null || $scope.runningWorkers != undefined) { var workerCount = $scope.runningWorkers.length; if (workerCount > 0) { for (var i = workerCount - 1; i >= 0; i--) { var runningWorker = $scope.runningWorkers[i].workerName; runningWorker.terminate(); $scope.runningWorkers.splice(i, 1); // workerCount--; } } } } $scope.enableHighlight = function (windowviewid) { $scope.DisableUI(); $('#btnTranparency_' + windowviewid).removeAttr('disabled', 'disabled'); //if listanager is visisble then close it $rootScope.CloseListManager(); var isHighlightBodyByBodySystem=$scope.GetwindowStoreData(windowviewid,'isHighlightBodyByBodySystem'); if (isHighlightBodyByBodySystem) { $scope.SetwindowStoreData(windowviewid,'isHighlightBodyByBodySystem',false); //to make the system highlight if the body systme highlighted than Normal and again highlight $scope.SetwindowStoreData(windowviewid,'isbodySystemHighlight',true); } if ($scope.GetwindowStoreData(windowviewid,'isHighLight') == true) { } else { if ($rootScope.isCallFromOtherModule) { $scope.SetwindowStoreData(windowviewid,'isHighlightBodyWithCBTermData',false); $scope.SetwindowStoreData(windowviewid,'fullTermlist',[]); $scope.SetwindowStoreData(windowviewid,'AllTerms',[]); $scope.SetwindowStoreData(windowviewid,'CurriculumTermData',[]); } $scope.SetwindowStoreData(windowviewid,'isHighLight',true); $scope.SetwindowStoreData(windowviewid,'isNormalMode',false); $scope.SetwindowStoreData(windowviewid,'isZoomed',false); if ($scope.GetwindowStoreData(windowviewid,'isExtract') == true) { //1. $scope.SetwindowStoreData(windowviewid,'isExtract',false); //2. $scope.flushCanvas(windowviewid); //3. var viewOrientationId=$scope.GetwindowStoreData(windowviewid,'viewOrientationId'); $scope.CalculateImageCordinates(viewOrientationId,windowviewid); } else { console.log('highLightBody from enableHighlight') $timeout(function () { $scope.highLightBody(windowviewid) }, 50); } } // unhighlight other $("#btnHighLight_" + windowviewid).removeClass("btn-black"); $("#btnHighLight_" + windowviewid).addClass("btn-primary"); if (!$("#btnNormalMode_" + windowviewid).hasClass("btn-black")) { $("#btnNormalMode_" + windowviewid).addClass("btn-black"); } if (!$("#btnExtract_" + windowviewid).hasClass("btn-black")) { $("#btnExtract_" + windowviewid).addClass("btn-black"); } if ($("#btnExtract_" + windowviewid).hasClass("btn-primary")) { $("#btnExtract_" + windowviewid).removeClass("btn-primary"); } if ($("#btnNormalMode_" + windowviewid).hasClass("btn-primary")) { $("#btnNormalMode_" + windowviewid).removeClass("btn-primary"); } //7900 var CanvasDivLeftPosition=$scope.GetwindowStoreData(windowviewid,'CanvasDivLeftPosition'); var CanvasDivTopPosition=$scope.GetwindowStoreData(windowviewid,'CanvasDivTopPosition'); $('#canvasDivDA_' + windowviewid).scrollTop(CanvasDivTopPosition); $('#canvasDivDA_' + windowviewid).scrollLeft(CanvasDivLeftPosition); $scope.EnableUI(); } $scope.enableNormalMode = function (windowviewid) { $scope.SetwindowStoreData(windowviewid,'previousHighlightList',[]); $('#btnTranparency_' + windowviewid).removeClass("disabled"); $('#btnTranparency_' + windowviewid).css("pointer-events", "auto"); if ($scope.GetwindowStoreData(windowviewid,'isTransparencyActivated')) { var currentLayerNumber=$scope.GetwindowStoreData(windowviewid,'currentLayerNumber'); $scope.SetwindowStoreData(windowviewid,'layerNumber',currentLayerNumber); } else { $scope.SetwindowStoreData(windowviewid,'layerNumber',$("#txtLayerNumberDA_" + windowviewid).val()); } $('#txtLayerNumberDA_' + windowviewid).val($scope.GetwindowStoreData(windowviewid,'layerNumber')) $scope.SetwindowStoreData(windowviewid,'isNormalMode',false); console.log('enableNormalMode is called'); //to do should not call every time $rootScope.CloseListManager(); var isHighlightBodyByBodySystem=$scope.GetwindowStoreData(windowviewid,'isHighlightBodyByBodySystem'); if (isHighlightBodyByBodySystem) { $scope.SetwindowStoreData(windowviewid,'isHighlightBodyByBodySystem',false); //to make the system highlight if the body systme highlighted than Normal and again highlight $scope.SetwindowStoreData(windowviewid,'isbodySystemHighlight',true); } if ($scope.GetwindowStoreData(windowviewid,'isNormalMode') == true) { } else { if ($rootScope.isCallFromOtherModule) { $scope.SetwindowStoreData(windowviewid,'isHighlightBodyWithCBTermData',false); $scope.SetwindowStoreData(windowviewid,'fullTermlist',[]); $scope.SetwindowStoreData(windowviewid,'AllTerms',[]); $scope.SetwindowStoreData(windowviewid,'CurriculumTermData',[]); } //1. $scope.flushCanvas(windowviewid); //2. $scope.SetwindowStoreData(windowviewid,'isNormalMode',true); //3. $scope.SetwindowStoreData(windowviewid,'isHighLight',false); //4. $scope.SetwindowStoreData(windowviewid,'isExtract',false); //5. $scope.SetwindowStoreData(windowviewid,'isZoomed',false); //6. var isListManagerSelected=$scope.GetwindowStoreData(windowviewid,'isListManagerSelected'); var actualTermNumber=$scope.GetwindowStoreData(windowviewid,'actualTermNumber'); if (actualTermNumber != null && actualTermNumber != undefined && isListManagerSelected == true) { $scope.SetwindowStoreData(windowviewid,'isListManagerSelected',false); $scope.SetwindowStoreData(windowviewid,'isListManagerAlreadySelected',true); } var viewOrientationId=$scope.GetwindowStoreData(windowviewid,'viewOrientationId'); $scope.CalculateImageCordinates(viewOrientationId,windowviewid); var CanvasDivLeftPosition=$scope.GetwindowStoreData(windowviewid,'CanvasDivLeftPosition'); var CanvasDivTopPosition=$scope.GetwindowStoreData(windowviewid,'CanvasDivTopPosition'); $('#canvasDivDA_' + windowviewid).scrollTop(CanvasDivTopPosition); $('#canvasDivDA_' + windowviewid).scrollLeft(CanvasDivLeftPosition); } $("#btnNormalMode_" + windowviewid).addClass("btn-primary"); $("#btnNormalMode_" + windowviewid).removeClass("btn-black"); if (!$("#btnExtract_" + windowviewid).hasClass("btn-black")) { $("#btnExtract_" + windowviewid).addClass("btn-black"); } if (!$("#btnHighLight_" + windowviewid).hasClass("btn-black")) { $("#btnHighLight_" + windowviewid).addClass("btn-black"); } if ($("#btnExtract_" + windowviewid).hasClass("btn-primary")) { $("#btnExtract_" + windowviewid).removeClass("btn-primary"); } if ($("#btnHighLight_" + windowviewid).hasClass("btn-primary")) { $("#btnHighLight_" + windowviewid).removeClass("btn-primary"); } } //// #7972 Mozilla Firefox> Incorrect navigation $("#canvasDiv").scroll(function (event) { var windowviewid = (event.currentTarget.id).split("_")[1]; $scope.SetwindowStoreData(windowviewid,'CanvasDivLeftPosition',$('#canvasDivDA_' + windowviewid).scrollLeft()); $scope.SetwindowStoreData(windowviewid,'CanvasDivTopPosition',$('#canvasDivDA_' + windowviewid).scrollTop()); }); $scope.enableExtract = function (isCalledFromButton,windowviewid) { $scope.DisableUI(); console.log('isCalledFromButton= ' + isCalledFromButton); if ($rootScope.isCallFromOtherModule) { $scope.SetwindowStoreData(windowviewid,'isHighlightBodyWithCBTermData',false); $scope.SetwindowStoreData(windowviewid,'fullTermlist',[]); $scope.SetwindowStoreData(windowviewid,'AllTerms',[]); $scope.SetwindowStoreData(windowviewid,'CurriculumTermData',[]); } $scope.SetwindowStoreData(windowviewid,'CanvasDivLeftPosition',$('#canvasDivDA_' + windowviewid).scrollLeft()); $scope.SetwindowStoreData(windowviewid,'CanvasDivTopPosition',$('#canvasDivDA_' + windowviewid).scrollTop()); if ($scope.GetwindowStoreData(windowviewid,'isTransparencyActivated') == true) { $("#btnExtract_" + windowviewid).addClass("disabled"); $("#btnExtract_" + windowviewid).css("pointer-events", "none"); } else { $rootScope.CloseListManager(); //2. $scope.terminateCurrentlyRunningWPs(); //3. //if extarct is alraedy enabled and user cliked on any body part then extract that. if (isCalledFromButton == false) { $scope.SetwindowStoreData(windowviewid,'isExtract',true); //disable transparency button $('#btnTranparency_' + windowviewid).addClass("disabled"); $('#btnTranparency_' + windowviewid).css("pointer-events", "none"); if ($scope.GetwindowStoreData(windowviewid,'isNormalMode') == true) { $scope.SetwindowStoreData(windowviewid,'isHighLight',false); $scope.SetwindowStoreData(windowviewid,'isNormalMode',false); } else { $scope.SetwindowStoreData(windowviewid,'isHighLight',false); } //4. console.log('highLightBody from enableExtract') $scope.highLightBody(windowviewid); } else { if ($scope.GetwindowStoreData(windowviewid,'isExtract') == true) { } else { $scope.SetwindowStoreData(windowviewid,'isExtract',true); //disable transparency button $("#btnTranparency_" + windowviewid).addClass("disabled"); $("#btnTranparency_" + windowviewid).css("pointer-events", "none"); if ($scope.GetwindowStoreData(windowviewid,'isNormalMode') == true) { $scope.SetwindowStoreData(windowviewid,'isHighLight',false); $scope.SetwindowStoreData(windowviewid,'isNormalMode',false); } else { $scope.SetwindowStoreData(windowviewid,'isHighLight',false); } //4. console.log('highLightBody from enableExtract') $scope.highLightBody(windowviewid); } } //5. unhighlight other $("#btnExtract_" + windowviewid).addClass("btn-primary"); $("#btnExtract_" + windowviewid).removeClass("btn-black"); if (!$("#btnNormalMode_" + windowviewid).hasClass("btn-black")) { $("#btnNormalMode_" + windowviewid).addClass("btn-black"); } if (!$("#btnHighLight_" + windowviewid).hasClass("btn-black")) { $("#btnHighLight_" + windowviewid).addClass("btn-black"); } if ($("#btnNormalMode_" + windowviewid).hasClass("btn-primary")) { $("#btnNormalMode_" + windowviewid).removeClass("btn-primary"); } if ($("#btnHighLight_" + windowviewid).hasClass("btn-primary")) { $("#btnHighLight_" + windowviewid).removeClass("btn-primary"); } } $scope.EnableUI(); } $scope.enableShowHideStructureBox = function (event) { //if listanager is visisble then close it var windowviewid = (event.currentTarget.id).split("_")[1]; $scope.SetwindowStoreData(windowviewid,'isListManagerSelected',false); $rootScope.CloseListManager(); var btnStrutureBoxname = document.getElementById("btnStrutureBox_" + windowviewid).name; if (btnStrutureBoxname == "showAnnotationStructure") { $("#btnStrutureBox_" + windowviewid).addClass("disableHideShowStructure"); $scope.hideAnnotation(windowviewid); document.getElementById("btnStrutureBox_" + windowviewid).name = "hideAnnotationStructure"; } else { $("#btnStrutureBox_" + windowviewid).removeClass("disableHideShowStructure"); $scope.showAnnotation(windowviewid); document.getElementById("btnStrutureBox_" + windowviewid).name = "showAnnotationStructure"; } } $scope.highLightBody = function (windowviewid) { var viewOrientationId=$scope.GetwindowStoreData(windowviewid,'viewOrientationId'); if ($scope.GetwindowStoreData(windowviewid,'isTransparencyActivated') && $scope.GetwindowStoreData(windowviewid,'isGlobalSettingChanged')) { //do not close Tbox $scope.SetwindowStoreData(windowviewid,'isGlobalSettingChanged',false); } else if ($scope.GetwindowStoreData(windowviewid,'isTransparencyActivated')) { $scope.CloseTransparencyBox(windowviewid); } if ($scope.GetwindowStoreData(windowviewid,'isTransparencyBtnClicked') == true && !$scope.GetwindowStoreData(windowviewid,'isTransparencyActivated')) { $("#btnExtract_" + windowviewid).addClass("disabled"); $("#btnExtract_" + windowviewid).css("pointer-events", "none"); $('#btnTranparency_' + windowviewid).addClass('tButtonActive'); $('#btnTranparency_' + windowviewid).removeClass('btn-black'); } $scope.Normal = ""; $scope.Extract = ""; $scope.Highlight = "LeftButtonsDefaultState"; $('#btnTranparency_' + windowviewid).removeAttr('disabled', 'disabled'); var ColoredImageSRC=$scope.GetwindowStoreData(windowviewid,'ColoredImageSRC'); console.log('highLightBody is called and ColoredImageSRC length: ' + ColoredImageSRC.length); $scope.terminateCurrentlyRunningWPs(); //different body views have different count of bodyegions so the length of ColoredImageSRC will be different if ((ColoredImageSRC != null || ColoredImageSRC != undefined)) { var doHighlightOrExtract=false; if (((viewOrientationId == '1') || (viewOrientationId == '4')) && (ColoredImageSRC.length == 9)) { doHighlightOrExtract = true; } else if (((viewOrientationId == '2') || (viewOrientationId == '3')) && (ColoredImageSRC.length == 5)) { doHighlightOrExtract = true; } else if (((viewOrientationId == '5')) && (ColoredImageSRC.length == 4)) { doHighlightOrExtract = true; } else if (((viewOrientationId == '6')) && (ColoredImageSRC.length == 1)) { doHighlightOrExtract = true; } else { doHighlightOrExtract = false; } if (doHighlightOrExtract == true) { $scope.loopcounter=0; $scope.whiteImageDataList = []; $scope.SetwindowStoreData(windowviewid,'whiteImageDataList',[]); $scope.whiteImageMRDataList = []; $scope.SetwindowStoreData(windowviewid,'whiteImageMRDataList',[]); $scope.grayImageDataList = []; $scope.SetwindowStoreData(windowviewid,'grayImageDataList',[]); $scope.grayImageMRDataList = []; $scope.SetwindowStoreData(windowviewid,'grayImageMRDataList',[]); // not using // $scope.SetwindowStoreData(windowviewid,'updatedWhiteImageDataList',[]); // $scope.SetwindowStoreData(windowviewid,'updatedWhiteImageMRDataList',[]); var previousHighlightList=$scope.GetwindowStoreData(windowviewid,'previousHighlightList'); if ($scope.GetwindowStoreData(windowviewid,'isHighLight') == true) { $scope.grayedBR = []; $scope.SetwindowStoreData(windowviewid,'grayedBR',[]); angular.forEach(ColoredImageSRC, function (value, key) { console.log('ColoredImageSRC length before gray= ' + ColoredImageSRC.length) var id; if (value.haveMirror == 'true') { if ($rootScope.multiViewCounter != undefined) { id = 'imageCanvas' + value.bodyRegionId + '_MR' + '|' + windowviewid; } else { id = 'imageCanvas' + value.bodyRegionId + '_MR' + '|' + windowviewid; } } else { if ($rootScope.multiViewCounter != undefined) { id = 'imageCanvas' + value.bodyRegionId + '|' + windowviewid; } else { id = 'imageCanvas' + value.bodyRegionId + '|' + windowviewid; } } var imageCanvas = document.getElementById(id); var width = value.Width; var ht = value.Height; var coloredCanvasContext = imageCanvas.getContext("2d"); var coloredImageData = coloredCanvasContext.getImageData(0, 0, width, ht); var coloredImageDataVar = coloredImageData; var context_gray = imageCanvas.getContext('2d'); var dataURL = imageCanvas.toDataURL(); var img = new Image(); img.src = dataURL; img.onload = function () { $scope.loopcounter=$scope.loopcounter+1; console.log('Before BitmapData call, width: ' + Math.max(img.width) + ', height: ' + Math.max(img.height) + ' value.bodyRegionId= ' + value.bodyRegionId) var DAData = new BitmapData(Math.max(img.width), Math.max(img.height)); DAData.draw(img); var colorMode; if ($scope.GetwindowStoreData(windowviewid,'isExtract') == true) { var isHighlightBodyByBodySystem=$scope.GetwindowStoreData(windowviewid,'isHighlightBodyByBodySystem'); var isbodySystemHighlight=$scope.GetwindowStoreData(windowviewid,'isbodySystemHighlight'); var isListManagerSelected=$scope.GetwindowStoreData(windowviewid,'isListManagerSelected'); if (((previousHighlightList != null || previousHighlightList != undefined) && previousHighlightList.length > 0) || isListManagerSelected == true || (isHighlightBodyByBodySystem == true || isbodySystemHighlight == true)) { colorMode = $scope.applyWhiteMatrix(img, context_gray); } } else { colorMode = $scope.applyGrayMatrix(img, context_gray); } console.log('colorMode inside if = ' + colorMode); if (colorMode != undefined || colorMode != null) { $rootScope.isLoading = true; $('#spinner').css('visibility', 'visible'); var zeroPoint = new Point(); DAData.applyFilter(DAData, DAData.rect, zeroPoint, colorMode); context_gray.putImageData(DAData.data, 0, 0) //to resolve lateral arm black issue in highlight mode if (viewOrientationId == 5 && (value.bodyRegionId == 6 || value.bodyRegionId == 4)) { var imgData = context_gray.getImageData(0, 0, width, ht); var data = imgData.data; var c = 0; for (var i = 0; i < data.length; i += 4) { if (data[i] == data[i + 1] && data[i + 1] == data[i + 2] && data[i + 2] === 0) { data[i + 3] = 0; } } context_gray.putImageData(imgData, 0, 0); } imageCanvas.style.visibility = 'visible'; //push BRID into array var totalCanvas; if ((viewOrientationId == '1') || (viewOrientationId == '4')) { totalCanvas = 9; } else if ((viewOrientationId == '2') || (viewOrientationId == '3')) { totalCanvas = 5; } else if ((viewOrientationId == '5')) { totalCanvas = 4; } else if ((viewOrientationId == '6')) { totalCanvas = 1; } if ($scope.grayedBR.length < totalCanvas) { $scope.grayedBR.push({ 'BRID': value.bodyRegionId }); } var grayImageData = context_gray.getImageData(0, 0, width, ht); if ($scope.GetwindowStoreData(windowviewid,'isExtract') == true) { if (value.haveMirror == 'true') { $scope.whiteImageMRDataList[parseInt(value.bodyRegionId)] = grayImageData; } else { $scope.whiteImageDataList[parseInt(value.bodyRegionId - 1)] = grayImageData; } } else { if (value.haveMirror == 'true') { $scope.grayImageMRDataList[parseInt(value.bodyRegionId)] = grayImageData; } else { $scope.grayImageDataList[parseInt(value.bodyRegionId - 1)] = grayImageData; } } if($scope.loopcounter==ColoredImageSRC.length) { $scope.SetwindowStoreData(windowviewid,'whiteImageDataList',$scope.whiteImageDataList); $scope.SetwindowStoreData(windowviewid,'whiteImageMRDataList',$scope.whiteImageMRDataList); $scope.SetwindowStoreData(windowviewid,'grayImageDataList',$scope.grayImageDataList); $scope.SetwindowStoreData(windowviewid,'grayImageMRDataList',$scope.grayImageMRDataList); } if ($scope.grayedBR != null || $scope.grayedBR != undefined) { var isEligibleForHighlightBodyByTermList = false; if (((viewOrientationId == '1') || (viewOrientationId == '4')) && ($scope.grayedBR.length == 9)) { isEligibleForHighlightBodyByTermList = true; } else if (((viewOrientationId == '2') || (viewOrientationId == '3')) && ($scope.grayedBR.length == 5)) { isEligibleForHighlightBodyByTermList = true; } else if (((viewOrientationId == '5')) && ($scope.grayedBR.length == 4)) { isEligibleForHighlightBodyByTermList = true; } else if (((viewOrientationId == '6')) && ($scope.grayedBR.length == 1)) { isEligibleForHighlightBodyByTermList = true; } else { isEligibleForHighlightBodyByTermList = false; } if (isEligibleForHighlightBodyByTermList == true) { $scope.SetwindowStoreData(windowviewid,'grayedBR',$scope.grayedBR); var isHighlightBodyByBodySystem=$scope.GetwindowStoreData(windowviewid,'isHighlightBodyByBodySystem'); var isHighLight=$scope.GetwindowStoreData(windowviewid,'isHighLight'); var isbodySystemHighlight=$scope.GetwindowStoreData(windowviewid,'isbodySystemHighlight'); var isListManagerSelected=$scope.GetwindowStoreData(windowviewid,'isListManagerSelected'); var isGenderChnage = $scope.GetwindowStoreData(windowviewid,'isGenderChnage'); var isViewChange = $scope.GetwindowStoreData(windowviewid,'isViewChange'); var isListManagerAlreadySelected=$scope.GetwindowStoreData(windowviewid,'isListManagerAlreadySelected'); if (((isHighlightBodyByBodySystem == true)) || (isbodySystemHighlight == true && isHighLight == true)) { $rootScope.isLoading = true; $('#spinner').css('visibility', 'visible'); $timeout(function () { $scope.HighlightBodyByTermListForBodySystem(null, windowviewid) }, 100); } else if (($rootScope.isCallFromOtherModule == true) || (isListManagerSelected == true) || (previousHighlightList != null && previousHighlightList.length > 0) && (isGenderChnage == true || isViewChange == true) || isListManagerAlreadySelected == true) { $timeout(function () { $rootScope.isLoading = true; $('#spinner').css('visibility', 'visible'); var AllTerms=$scope.GetwindowStoreData(windowviewid,'AllTerms'); if (AllTerms != undefined && AllTerms.length > 0) { $scope.HighlightBodyByTermList(AllTerms,windowviewid); } else { $scope.EnableUI(); } }, 500); } else if ((previousHighlightList != null || previousHighlightList != undefined) && previousHighlightList.length > 0) { $scope.createTermListByPreviousTermsAndHighlight(windowviewid); } else { $rootScope.isLoading = false; $('#spinner').css('visibility', 'hidden'); //for highlight when highlight button is clicked the ui got disabled, //now highlight is completed so enalbe UI $scope.EnableUI(); } } } } console.log('highlightboy. $rootScope.isExtract= ' + $rootScope.isExtract + ', previousHighlightList.length= ' + previousHighlightList.length) if ($scope.GetwindowStoreData(windowviewid,'isExtract') == true) { var isHighlightBodyByBodySystem=$scope.GetwindowStoreData(windowviewid,'isHighlightBodyByBodySystem'); var isbodySystemHighlight=$scope.GetwindowStoreData(windowviewid,'isbodySystemHighlight'); var isListManagerSelected=$scope.GetwindowStoreData(windowviewid,'isListManagerSelected'); if ((previousHighlightList != null || previousHighlightList != undefined) && previousHighlightList.length > 0) { console.log('1. $rootScope.isExtract=true and previousHighlightList != null') $timeout(function () { $scope.DisableUI(); $scope.HighlightBodyOnExtract(windowviewid) }, 50); } else if (isListManagerSelected == true) { console.log('1. $rootScope.isExtract=true and $rootScope.isListManagerSelected == true') $timeout(function () { $scope.DisableUI(); $scope.HighlightBodyOnExtract(windowviewid) }, 50); } else if (isHighlightBodyByBodySystem == true || isbodySystemHighlight == true) { $scope.HighlightBodyByTermListForBodySystem(null,windowviewid); } else { $rootScope.isLoading = false; $('#spinner').css('visibility', 'hidden'); $scope.EnableUI(); } } } }) } else { // This code will execute when user will select normal Mode but this time isHighlight will be false console.log('highlightboy ELSE. $rootScope.isExtract= ' + $scope.GetwindowStoreData(windowviewid,'isExtract') + ', previousHighlightList.length= ' + previousHighlightList.length) angular.forEach(ColoredImageSRC, function (value, key) { var id; if (value.haveMirror == 'true') { if ($rootScope.multiViewCounter != undefined) { id = 'imageCanvas' + value.bodyRegionId + '_MR' + '|' + windowviewid; } else { id = 'imageCanvas' + value.bodyRegionId + '_MR'+'|' + windowviewid;; } } else { if ($rootScope.multiViewCounter != undefined) { id = 'imageCanvas' + value.bodyRegionId + '|' + windowviewid; } else { id = 'imageCanvas' + value.bodyRegionId + '|' + windowviewid; } } var imageCanvas = document.getElementById(id); var width = value.Width; var ht = value.Height; var coloredCanvasContext = imageCanvas.getContext("2d"); var coloredImageData = coloredCanvasContext.getImageData(0, 0, width, ht); var coloredImageDataVar = coloredImageData; var context = imageCanvas.getContext('2d'); var dataURL = imageCanvas.toDataURL(); var img = new Image(); img.src = dataURL; img.onload = function () { $scope.loopcounter=$scope.loopcounter+1; var DAData = new BitmapData(Math.max(img.width), Math.max(img.height)); DAData.draw(img); var colorMode; if ($scope.GetwindowStoreData(windowviewid,'isExtract') == true) { var isHighlightBodyByBodySystem=$scope.GetwindowStoreData(windowviewid,'isHighlightBodyByBodySystem'); var isbodySystemHighlight=$scope.GetwindowStoreData(windowviewid,'isbodySystemHighlight'); var isListManagerSelected=$scope.GetwindowStoreData(windowviewid,'isListManagerSelected'); if (((previousHighlightList != null || previousHighlightList != undefined) && previousHighlightList.length > 0) || isListManagerSelected == true || isHighlightBodyByBodySystem == true || isbodySystemHighlight == true) { colorMode = $scope.applyWhiteMatrix(img, context); } } console.log('colorMode inside else = ' + colorMode); if (colorMode != undefined || colorMode != null) { $rootScope.isLoading = true; $('#spinner').css('visibility', 'visible'); var zeroPoint = new Point(); DAData.applyFilter(DAData, DAData.rect, zeroPoint, colorMode); context.putImageData(DAData.data, 0, 0) //NIKI- to resolve lateral arm black issue in mode if (viewOrientationId == 5 && (value.bodyRegionId == 6 || value.bodyRegionId == 4)) { var imgData = context.getImageData(0, 0, width, ht); var data = imgData.data; var c = 0; for (var i = 0; i < data.length; i += 4) { if (data[i] == data[i + 1] && data[i + 1] == data[i + 2] && data[i + 2] === 0) { data[i + 3] = 0; } } context.putImageData(imgData, 0, 0); } imageCanvas.style.visibility = 'visible' var grayImageData = context.getImageData(0, 0, width, ht); var grayImageImageDataVar = grayImageData.data; if ($scope.GetwindowStoreData(windowviewid,'isExtract') == true) { if (value.haveMirror == 'true') { $scope.whiteImageMRDataList[parseInt(value.bodyRegionId)] = grayImageData; } else { $scope.whiteImageDataList[parseInt(value.bodyRegionId - 1)] = grayImageData; } } else { if (value.haveMirror == 'true') { $scope.grayImageMRDataList[parseInt(value.bodyRegionId)] = grayImageData; } else { $scope.grayImageDataList[parseInt(value.bodyRegionId - 1)] = grayImageData; } } if($scope.loopcounter==ColoredImageSRC.length) { $scope.SetwindowStoreData(windowviewid,'whiteImageDataList',$scope.whiteImageDataList); $scope.SetwindowStoreData(windowviewid,'whiteImageMRDataList',$scope.whiteImageMRDataList); $scope.SetwindowStoreData(windowviewid,'grayImageDataList',$scope.grayImageDataList); $scope.SetwindowStoreData(windowviewid,'grayImageMRDataList',$scope.grayImageMRDataList); } } } }) if ($scope.GetwindowStoreData(windowviewid,'isExtract') == true) { var isHighlightBodyByBodySystem=$scope.GetwindowStoreData(windowviewid,'isHighlightBodyByBodySystem'); var isbodySystemHighlight=$scope.GetwindowStoreData(windowviewid,'isbodySystemHighlight'); var isListManagerSelected=$scope.GetwindowStoreData(windowviewid,'isListManagerSelected'); if ((previousHighlightList != null || previousHighlightList != undefined) && previousHighlightList.length > 0) { console.log('2. $rootScope.isExtract=true and previousHighlightList != null, previousHighlightList.length= ' + previousHighlightList.length) $timeout(function () { $scope.DisableUI(); $scope.HighlightBodyOnExtract(windowviewid) }, 50); } else if (isListManagerSelected == true) { console.log('2. $rootScope.isExtract=true and $rootScope.isListManagerSelected == true') $timeout(function () { $scope.DisableUI(); $scope.HighlightBodyOnExtract(windowviewid) }, 50); } else if (isHighlightBodyByBodySystem == true || isbodySystemHighlight == true) { $scope.HighlightBodyByTermListForBodySystem(null,windowviewid); } else { $rootScope.isLoading = false; $('#spinner').css('visibility', 'hidden'); $scope.EnableUI(); } } } } } if (!$("#btnExtract_" + windowviewid).hasClass("btn-primary")) { $("#btnHighLight_" + windowviewid).removeClass("btn-black"); $("#btnHighLight_" + windowviewid).addClass("btn-primary"); if (!$("#btnNormalMode_" + windowviewid).hasClass("btn-black")) { $("#btnNormalMode_" + windowviewid).addClass("btn-black"); } if (!$("#btnExtract_" + windowviewid).hasClass("btn-black")) { $("#btnExtract_" + windowviewid).addClass("btn-black"); } if ($("#btnExtract_" + windowviewid).hasClass("btn-primary")) { $("#btnExtract_" + windowviewid).removeClass("btn-primary"); } if ($("#btnNormalMode_" + windowviewid).hasClass("btn-primary")) { $("#btnNormalMode_" + windowviewid).removeClass("btn-primary"); } } } $scope.applyGrayMatrix = function (img, context_gray) { var RED = 0.3086; // luminance contrast value for red var GREEN = 0.694; // luminance contrast value for green var BLUE = 0.0820; // luminance contrast value for blue var RGB = [RED, GREEN, BLUE, 0, 0]; var RGB2 = [RED, GREEN, BLUE, 0, 0]; var RGB3 = [RED, GREEN, BLUE, 0, 0]; var ALPHA = [0, 0, 0, 1, 0]; var rgbPx = RGB.concat(RGB2); var rgbPx2 = rgbPx.concat(RGB3); var matrix = rgbPx2.concat(ALPHA); var grayScale = new ColorMatrixFilter(matrix); return grayScale; } $scope.applyWhiteMatrix = function (img, context_gray) { var RED = 255; // white color value for red var GREEN = 255; // white color value for green var BLUE = 255; // white color value for blue var RGB = [RED, GREEN, BLUE, 0, 0]; var RGB2 = [RED, GREEN, BLUE, 0, 0]; var RGB3 = [RED, GREEN, BLUE, 0, 0]; var ALPHA = [0, 0, 0, 1, 0]; var rgbPx = RGB.concat(RGB2); var rgbPx2 = rgbPx.concat(RGB3); var matrix = rgbPx2.concat(ALPHA); var grayScale = new ColorMatrixFilter(matrix); return grayScale; } $scope.getActualTermNumber = function (iColor, windowviewid) { var TermNData=$scope.GetwindowStoreData(windowviewid,'TermNumberData'); $scope.actualTermNo = new jinqJs() .from(TermNData.TermData.Term) .where('_TermNumber == ' + iColor) .select('_ActualTermNumber'); if ($scope.actualTermNo != null && $scope.actualTermNo != undefined && $scope.actualTermNo.length > 0) { return $scope.actualTermNo[0]._ActualTermNumber; } else { return null; } } $scope.getTermNumberList = function (actualTermNo,windowviewid) { var TermNData=$scope.GetwindowStoreData(windowviewid,'TermNumberData'); if (TermNData != null) { $scope.termList = new jinqJs() .from(TermNData.TermData.Term) .where('_ActualTermNumber == ' + actualTermNo) .select(); if ($scope.termList != null || $scope.termList != undefined) { return $scope.termList; } else { return null; } } else { var currentBodyViewId = $scope.GetwindowStoreData(windowviewid,'voId'); var termJsonPath = '~/../content/data/json/da/body-views/' + currentBodyViewId + '/da_dat_tm_sg_' + currentBodyViewId + '.json'; DataService.getAnotherJson(termJsonPath) .then( function (result) { //$rootScope.TermNumberData = result; $scope.SetwindowStoreData(windowviewid,'TermNumberData',result); $scope.getTermNumberList(actualTermNo,windowviewid); }) } } $scope.OnGenderChange = function (event) { var windowviewid = (event.target.parentElement.parentElement.id).split("_")[1]; var genderId = $scope.GetwindowStoreData(windowviewid,'genderId'); if (genderId == event.currentTarget.title) { return; } $scope.DisableUI(); var canvasDiv = document.getElementById("canvasDivDA_" + windowviewid); $scope.imageVerticalScrollPosition = canvasDiv.scrollTop; $scope.imageHorizontlScrollPosition = canvasDiv.scrollLeft; $("#btnExtract_" + windowviewid).removeClass("disabled"); $("#btnExtract_" + windowviewid).css("pointer-events", "auto"); $("#btnTranparency_" + windowviewid).removeClass("disabled"); $("#btnTranparency_" + windowviewid).css("pointer-events", "auto"); if ($scope.GetwindowStoreData(windowviewid,'isTransparencyActivated')) { $scope.CloseTransparencyBox(windowviewid); } $rootScope.isTransparencyBoxActivated = false; $scope.SetwindowStoreData(windowviewid,'isNormalMode',false); if ($scope.GetwindowStoreData(windowviewid,'isTransparencyBtnClicked') == true && !$scope.GetwindowStoreData(windowviewid,'isTransparencyActivated')) { $("#btnExtract_" + windowviewid).addClass("disabled"); $("#btnExtract_" + windowviewid).css("pointer-events", "none"); $('#btnTranparency_' + windowviewid).addClass('tButtonActive'); $('#btnTranparency_' + windowviewid).removeClass('btn-black'); } //if listanager is visisble then close it $rootScope.CloseListManager(); //Remove the Search list and then Repopulate it on change of Gender $('#searchListDiv_' + windowviewid).empty() $scope.SetwindowStoreData(windowviewid,'isGenderChnage',true); if ($scope.GetwindowStoreData(windowviewid,'isExtract')== true) { $scope.SetwindowStoreData(windowviewid,'isExtract',false); $scope.SetwindowStoreData(windowviewid,'isHighLight',true); $("#btnExtract_" + windowviewid).removeClass("btn-primary"); $("#btnExtract_" + windowviewid).addClass("btn-black"); $("#btnHighLight_" + windowviewid).removeClass("btn-black"); $("#btnHighLight_" + windowviewid).addClass("btn-primary"); } var previousHighlightList=$scope.GetwindowStoreData(windowviewid,'previousHighlightList'); if (previousHighlightList.length > 0) { $("#btnNormalMode_" + windowviewid).addClass("btn-black"); $scope.SetwindowStoreData(windowviewid,'previousHighlightList',[]); $("#btnHighLight_" + windowviewid).removeClass("btn-black"); $("#btnHighLight_" + windowviewid).addClass("btn-primary"); } if ($rootScope.isCallFromOtherModule) { $scope.SetwindowStoreData(windowviewid,'isHighlightBodyWithCBTermData',false); $scope.SetwindowStoreData(windowviewid,'fullTermlist',[]); $scope.SetwindowStoreData(windowviewid,'AllTerms',[]); $scope.SetwindowStoreData(windowviewid,'CurriculumTermData',[]); } var currentBodyViewId = $scope.correspondingBodyViewIds[$scope.GetwindowStoreData(windowviewid,'voId')]; if ((event.currentTarget.title == 'Male') && (genderId == 'Female')) { //1. $scope.SetwindowStoreData(windowviewid,'genderId','Male'); //2 first update the currentbodyviewid in local storage localStorage.setItem("currentBodyViewId", currentBodyViewId); $rootScope.isLoading = true; $('#spinner').css('visibility', 'visible'); //3. $scope.SetwindowStoreData(windowviewid,'layerNumber',0); $scope.loadSelectedBodyView(currentBodyViewId, windowviewid); //4. $scope.loadNavigatorForSelectedBodyView(currentBodyViewId, windowviewid); //5. change the search terms as per the selected bodyview $rootScope.loadSearchData(windowviewid); $scope.GetBodySystemData(currentBodyViewId,windowviewid); //6. var currentViewTitle = $scope.GetwindowStoreData(windowviewid,'currentViewTitle').replace('Female', 'Male'); $('#daImagePanel_' + windowviewid)[0].childNodes[0].childNodes[0].innerHTML = currentViewTitle; $scope.SetwindowStoreData(windowviewid,'currentViewTitle',currentViewTitle); $rootScope.isLoading = true; } else if ((event.currentTarget.title == 'Female') && (genderId == 'Male')) { //1. $scope.SetwindowStoreData(windowviewid,'genderId','Female') //2. first update the currentbodyviewid in local storage localStorage.setItem("currentBodyViewId", currentBodyViewId); $rootScope.isLoading = true; $('#spinner').css('visibility', 'visible'); //3. $scope.SetwindowStoreData(windowviewid,'layerNumber',0); $scope.loadSelectedBodyView(currentBodyViewId, windowviewid); //4. $scope.loadNavigatorForSelectedBodyView(currentBodyViewId, windowviewid); //5. change the search terms as per the selected bodyview $rootScope.loadSearchData(windowviewid); $scope.GetBodySystemData(currentBodyViewId,windowviewid); //6. var currentViewTitle = $scope.GetwindowStoreData(windowviewid,'currentViewTitle').replace('Male', 'Female'); $('#daImagePanel_' + windowviewid)[0].childNodes[0].childNodes[0].innerHTML = currentViewTitle; $scope.SetwindowStoreData(windowviewid,'currentViewTitle',currentViewTitle); $rootScope.isLoading = true; } $rootScope.openViews.push( { "module": $rootScope.currentActiveModuleTitle, "bodyView": currentViewTitle, "state": 'max', "BodyViewId": currentBodyViewId, "slug": $scope.GetwindowStoreData(windowviewid, 'currentSlug') } ); var target = angular.element(event.currentTarget); var title_male_female = target.attr('title'); $scope.switchGender(windowviewid,title_male_female); $rootScope.CloseAnnotationTool(); $('#typedTermName_' + windowviewid).val(''); } //clsoe worker process $scope.$on('jsPanelCloseEvent', function (event, data) { console.log('terminate worker process') //terminate previous running workers to create space for new workers $scope.terminateCurrentlyRunningWPs(); $rootScope.isLoading = false; $('#spinner').css('visibility', 'hidden'); $rootScope.CloseListManager(); }) $scope.loadSelectedBodyView = function (currentBodyViewId, windowviewid) { var previousHighlightList=$scope.GetwindowStoreData(windowviewid,'previousHighlightList'); //remove transaprency scale if ($('#transparencyScale_' + windowviewid) != null) { $('#transparencyScale_' + windowviewid).css('visibility', 'hidden'); } $scope.SetwindowStoreData(windowviewid,'voId',currentBodyViewId); var layerJsonPath = '~/../content/data/json/da/body-views/' + currentBodyViewId + '/da_dat_layer_' + currentBodyViewId + '.json'; DataService.getJson(layerJsonPath) .then( function (result) { // $rootScope.BodyLayerData = result; $scope.SetwindowStoreData(windowviewid,'BodyLayerData',result); //set max for LayerNumber input var totalLayer = result.Layers.DataLayer.length-1; $scope.SetwindowStoreData(windowviewid,'totalLayers',totalLayer); $('#txtLayerNumberDA_' + windowviewid).attr('max', totalLayer); console.log('inside DataService.getJson. document.getElementById layerChangeSlider value : ' + document.getElementById('layerChangeSlider') + 'set value: ' + totalLayer); $("#layerChangeSliderDA_" + windowviewid).slider("option", "max", totalLayer); //load json for annotations // $http({ method: 'GET', url: '~/../content/data/json/da_dat_tm_sg_1.json' }).success(function (data) { var termJsonPath = '~/../content/data/json/da/body-views/' + currentBodyViewId + '/da_dat_tm_sg_' + currentBodyViewId + '.json'; DataService.getAnotherJson(termJsonPath) .then( function (result) { var viewOrientationId=$scope.GetwindowStoreData(windowviewid,'viewOrientationId'); $scope.SetwindowStoreData(windowviewid,'TermNumberData',result); var isViewChange=$scope.GetwindowStoreData(windowviewid,'isViewChange'); var isGenderChnage=$scope.GetwindowStoreData(windowviewid,'isGenderChnage'); var isListManagerSelected=$scope.GetwindowStoreData(windowviewid,'isListManagerSelected'); var isListManagerAlreadySelected=$scope.GetwindowStoreData(windowviewid,'isListManagerAlreadySelected'); //if user seelcted any term and serached before gender cnage then itshould be highlighted in chnaged gender if (((isListManagerSelected == true) || isListManagerAlreadySelected == true || ($scope.GetwindowStoreData(windowviewid,'isHighLight') == true && previousHighlightList != null && previousHighlightList.length > 0)) && ((isGenderChnage == true) || isViewChange == true)) { $scope.setLayerNumberAndHighlightByTermList(windowviewid); } else if (previousHighlightList != null && previousHighlightList.length > 0 && (isGenderChnage == true || isViewChange == true)) { $scope.SetwindowStoreData(windowviewid,'AllTerms',[]); $scope.SetwindowStoreData(windowviewid,'isHighLight',true); var TermNData=$scope.GetwindowStoreData(windowviewid,'TermNumberData'); if (TermNData != undefined) { var actualTermNumber=$scope.GetwindowStoreData(windowviewid,'actualTermNumber'); $scope.TermList = $scope.getTermNumberList(actualTermNumber,windowviewid); if ($scope.TermList != null && $scope.TermList.length > 0) { $scope.setLayerNumberAndHighlightByTermList(windowviewid); } else { //actual term number is not found in thsi view menas previously selected body part does not exist in this view $scope.CalculateImageCordinates(viewOrientationId, windowviewid) } } } else { $scope.CalculateImageCordinates(viewOrientationId, windowviewid); $('#txtLayerNumberDA_' + windowviewid).val( $scope.GetwindowStoreData(windowviewid,'layerNumber')) } }, function (error) { // handle errors here console.log(' $rootScope.TermNumberData= ' + error.statusText); } ) }, function (error) { // handle errors here console.log(' $rootScope.BodyLayerData= ' + error.statusText); } ); } $scope.OnViewChange = function (event) { var windowviewid = (event.target.parentElement.parentElement.id).split('_')[1]; var viewid = $scope.GetwindowStoreData(windowviewid,'voId') var selectedViewId = $scope.bodyViews[event.currentTarget.title]; if (viewid == selectedViewId) { return; } var childrenOfCurrentViewChangeDropdown = $('#viewChangeIDDA_' + windowviewid).children(); var isSameViewClicked = false; $.each(childrenOfCurrentViewChangeDropdown, function (key, val) { if (val.children[0].title == event.target.title && val.children[0].parentElement.className == "active") { isSameViewClicked = true; } }) if ($rootScope.isOpenResourceBtnClicked && isSameViewClicked) { } else { var previousHighlightList=$scope.GetwindowStoreData(windowviewid,'previousHighlightList'); if (previousHighlightList.length > 0) { $scope.SetwindowStoreData(windowviewid,'previousHighlightList',[]); } $scope.DisableUI(); $scope.SetwindowStoreData(windowviewid,'isViewChange',true); if ($rootScope.isOpenResourceBtnClicked) { var multiViewInfo = $rootScope.multiViewInfo; var windowviewid = event.target.parentElement.parentElement.id.split('_')[1]; $rootScope.multiViewCounter = windowviewid; $scope.setScopeVariables(); } var canvasDiv = document.getElementById("canvasDivDA_" + windowviewid); $scope.imageVerticalScrollPosition = canvasDiv.scrollTop; $scope.imageHorizontlScrollPosition = canvasDiv.scrollLeft; $("#btnExtract_" + windowviewid).removeClass("disabled"); $("#btnExtract_" + windowviewid).css("pointer-events", "auto"); $('#btnTranparency_' + windowviewid).removeClass("disabled"); $('#btnTranparency_' + windowviewid).css("pointer-events", "auto"); $rootScope.isTransparencyBoxActivated = false; $scope.SetwindowStoreData(windowviewid,'isNormalMode',false); //close transparency box if ($scope.GetwindowStoreData(windowviewid,'isTransparencyActivated')) { $scope.CloseTransparencyBox(windowviewid); } if ($scope.GetwindowStoreData(windowviewid,'isTransparencyBtnClicked') == true && !$scope.GetwindowStoreData(windowviewid,'isTransparencyActivated')) { $("#btnExtract_" + windowviewid).addClass("disabled"); $("#btnExtract_" + windowviewid).css("pointer-events", "none"); $('#btnTranparency_' + windowviewid).addClass('tButtonActive'); $('#btnTranparency_' + windowviewid).removeClass('btn-black'); } //if listanager is visisble then close it $rootScope.CloseListManager(); //to get the body system highlighted on view change. commented the below line // $rootScope.isHighlightBodyByBodySystem = false; //Remove the search list and then Repopulate it on change of View $('#searchListDiv_' + windowviewid).empty() if ($rootScope.openViews.length > 0) { $rootScope.openViews.splice($rootScope.openViews.length - 1); } if ($scope.GetwindowStoreData(windowviewid,'isExtract') == true) { $scope.SetwindowStoreData(windowviewid,'isExtract',false); $scope.SetwindowStoreData(windowviewid,'isHighLight',true); $("#btnExtract_" + windowviewid).removeClass("btn-primary"); $("#btnExtract_" + windowviewid).addClass("btn-black"); $("#btnHighLight_" + windowviewid).removeClass("btn-black"); $("#btnHighLight_" + windowviewid).addClass("btn-primary"); } $scope.SetwindowStoreData(windowviewid,'layerNumber',0); //remove existing body view var canDiv = document.getElementById("canvasDivDA_" + windowviewid); var canDivChildCount = canDiv.childElementCount; if (canDivChildCount > 0) { canDiv.innerHTML = ''; } if ($rootScope.isCallFromOtherModule) { $scope.SetwindowStoreData(windowviewid,'isHighlightBodyWithCBTermData',false); $scope.SetwindowStoreData(windowviewid,'fullTermlist',[]); $scope.SetwindowStoreData(windowviewid,'AllTerms',[]); $scope.SetwindowStoreData(windowviewid,'CurriculumTermData',[]); } $scope.SetwindowStoreData(windowviewid,'viewOrientationId',selectedViewId); var genderId = $scope.GetwindowStoreData(windowviewid,'genderId'); if (genderId == 'Male') { if ($scope.GetwindowStoreData(windowviewid,'voId') != selectedViewId) { if (selectedViewId == 5) { $scope.SetwindowStoreData(windowviewid,'voId',9); } else if (selectedViewId == 6) { $scope.SetwindowStoreData(windowviewid,'voId',10); } else $scope.SetwindowStoreData(windowviewid,'voId',selectedViewId); $rootScope.isLoading = true; $rootScope.isLoading = true; $('#spinner').css('visibility', 'visible'); var bodyVid= $scope.GetwindowStoreData(windowviewid,'voId') //1. first update the currentbodyviewid in local storage localStorage.setItem("currentBodyViewId", bodyVid); //2. Load selected body view $scope.loadSelectedBodyView(bodyVid,windowviewid); //3. load corresponding navigator man $scope.loadNavigatorForSelectedBodyView(bodyVid,windowviewid); //4. change the search terms as per the selected bodyview $rootScope.loadSearchData(windowviewid); $scope.GetBodySystemData(bodyVid,windowviewid); }; } else { if (selectedViewId == 5) { selectedViewId = 11; } else if (selectedViewId == 6) { selectedViewId = 12; } else selectedViewId = $scope.correspondingBodyViewIds[selectedViewId]; if ($scope.GetwindowStoreData(windowviewid,'voId') != selectedViewId) { $scope.SetwindowStoreData(windowviewid,'voId',selectedViewId); $rootScope.isLoading = true; $rootScope.isLoading = true; $('#spinner').css('visibility', 'visible'); var bodyVid=$scope.GetwindowStoreData(windowviewid,'voId'); //1. localStorage.setItem("currentBodyViewId", bodyVid); $scope.loadSelectedBodyView(bodyVid, windowviewid); //3. load corresponding navigator man $scope.loadNavigatorForSelectedBodyView(bodyVid, windowviewid); //4. change the search terms as per the selected bodyview $rootScope.loadSearchData(windowviewid); }; } var currentViewTitle = genderId + " " + event.currentTarget.title; $('#daImagePanel_' + windowviewid)[0].childNodes[0].childNodes[0].innerHTML = currentViewTitle; $scope.SetwindowStoreData(windowviewid,'currentViewTitle',currentViewTitle); $rootScope.openViews.push( { "module": $rootScope.currentActiveModuleTitle, "bodyView": currentViewTitle, "state": 'max', "BodyViewId": bodyVid, "slug": $scope.GetwindowStoreData(windowviewid, 'currentSlug') } ); var viewtarget = angular.element(event.currentTarget); var title_drop_view = viewtarget.attr('title'); $scope.setActiveview(windowviewid,title_drop_view); $rootScope.CloseAnnotationTool(); $('#typedTermName_' + windowviewid).val(''); } } //Reload DA controller event listener after setting change $scope.$on('reloadDAControllerEvent', function (event, data) { console.log('reloadDAControllerEvent'); $scope.loadDissectibleAnatomyData(); }) $scope.$on('changeNavigatorModestyEvent', function (event, data) { console.log('changeNavigatorModestyEvent'); $scope.loadNavigatorForSelectedBodyView(data.bodyViewId,$rootScope.MULTI_VIEW_ID); }) //Reload DA controller Body View after setting Change $scope.$on('reloadDABodyViewEvent', function (event, data) { //console.log('reloadDABodyViewEvent'); $scope.SetwindowStoreData($rootScope.MULTI_VIEW_ID,'isGlobalSettingChanged',true); if ($rootScope.isSettingEventAlredayDispachted == true) { $scope.DisableUI(); $rootScope.isSettingEventAlredayDispachted = false; // define at home controller $scope.SetwindowStoreData($rootScope.MULTI_VIEW_ID,'layerNumber',parseInt($('#txtLayerNumberDA_' + $rootScope.MULTI_VIEW_ID).val())); //alert('mouseUp'); var currentLayerNumber=$scope.GetwindowStoreData($rootScope.MULTI_VIEW_ID,'currentLayerNumber'); if ($scope.GetwindowStoreData($rootScope.MULTI_VIEW_ID,'isTransparencyActivated') && currentLayerNumber == 0) { $scope.SetwindowStoreData($rootScope.MULTI_VIEW_ID,'layerNumber',currentLayerNumber) ; $scope.loadSelectedBodyView(data.reloadDABodyViewId, $rootScope.MULTI_VIEW_ID); } else if ($scope.GetwindowStoreData($rootScope.MULTI_VIEW_ID,'layerNumber') == 0) { $scope.loadSelectedBodyView(data.reloadDABodyViewId, $rootScope.MULTI_VIEW_ID); } $scope.loadNavigatorForSelectedBodyView(data.reloadDABodyViewId, $rootScope.MULTI_VIEW_ID); if ($scope.GetwindowStoreData($rootScope.MULTI_VIEW_ID,'layerNumber')!= 0) { $scope.EnableUI(); } } }) $scope.loadNavigatorForSelectedBodyView = function (currentBodyViewId, windowviewid) { var NavigatorData=$scope.GetwindowStoreData(windowviewid,'NavigatorData'); $scope.SetwindowStoreData(windowviewid,'curentEthnicity',$rootScope.globalSetting.ethnicity); if (NavigatorData != null || NavigatorData != undefined) { var navdtlOrient = new jinqJs() .from(NavigatorData.Navigtor.ViewOrientation) .where("_ViewOrientationId == " + currentBodyViewId) .select(); if (navdtlOrient != null || navdtlOrient != undefined) { var navOrientationdata = new jinqJs() .from(navdtlOrient[0].ImageInfo) .where("_Ethnicity == " + $rootScope.globalSetting.ethnicity) .select(); if (navOrientationdata != null || navOrientationdata != undefined) { var navigatorImage = navOrientationdata; var navImageModesty; angular.forEach(navigatorImage, function (value, key) { if (value._HaveModesty === $rootScope.globalSetting.modesty) { navImageModesty = value._ImageName; } }) if (typeof (navImageModesty) === "undefined" || navImageModesty === null) { navImageModesty = navigatorImage[0]._ImageName; } var bodyVid=$scope.GetwindowStoreData(windowviewid,'voId'); document.getElementById("navimg_" + windowviewid).src = '~/../content/images/DA/ethnicity/body-views/' + bodyVid + '/' + $rootScope.globalSetting.ethnicity + '/navigator_images/' + navImageModesty; } } } } //Annotation tool event lsitener // $scope.drawing = drawing; // $scope.lastX = lastX; // $scope.lastY = lastY; // $scope.currentX; // $scope.currentY; //----Annotation Toolbar: Jcanvas--- $rootScope.$on('annotationToolEvent', function (event, data) { $('#editstylebackgroundcolor .minicolors >.minicolors-swatch > .minicolors-swatch-color').css("background-color", "rgb(255,255,255)") $('#editstylebackgroundcolor .minicolors >.minicolors-panel > .minicolors-grid >.minicolors-picker').css({ "top": "145px", "left": "4px" }); $('#outlineColor .minicolors >.minicolors-swatch > .minicolors-swatch-color').css("background-color", "rgb(0,0,0)") $('#outlineColor .minicolors >.minicolors-panel > .minicolors-grid >.minicolors-picker').css({ "top": "145px", "left": "4px" }); $("#canvas").css("display", "block"); $("#canvasPaint").css("display", "block"); $rootScope.onDrawingCanvasClick(); $rootScope.FreeStylePaint(); }); $scope.mousePs; function OnPaintCanvasClick(event) { } $scope.GetBodySystemData = function (currentBodyViewId,windowviewid) { var bodySystemDataPath = '~/../content/data/json/da/body-views/' + currentBodyViewId + '/da_dat_body_system_term_' + currentBodyViewId + '.json'; DataService.getJson(bodySystemDataPath) .then( function (result) { $scope.SetwindowStoreData(windowviewid,'BodySystemData',result); }, function (error) { console.log(error.statusText) } ) } angular.element(document).click(function (event) { $(".tool-dropdown-menu").css("display", "none"); var $ua = navigator.userAgent; if (($ua.match(/(iPod|iPhone|iPad|android)/i))) { $(".custom-tooltip").css("display", "none"); $(".custom-tooltip1").css("display", "none"); $(".custom-tooltip2").css("display", "none"); } }); $scope.HighlightBodyByBodySystem = function (event) { var windowviewid = (event.target.parentElement.parentElement.id).split("_")[1]; var viewOrientationId=$scope.GetwindowStoreData(windowviewid,'viewOrientationId'); $scope.SetwindowStoreData(windowviewid,'isExtract',false); $("#structureDropdownDA_" + windowviewid).toggle(); $scope.DisableUI(); if ($rootScope.isCallFromOtherModule) { $scope.SetwindowStoreData(windowviewid,'isHighlightBodyWithCBTermData',false); $scope.SetwindowStoreData(windowviewid,'fullTermlist',[]); $scope.SetwindowStoreData(windowviewid,'AllTerms',[]); $scope.SetwindowStoreData(windowviewid,'CurriculumTermData',[]); } $scope.SetwindowStoreData(windowviewid,'isListManagerSelected',false); $rootScope.CloseListManager(); $scope.SetwindowStoreData(windowviewid,'systemNumber',event.currentTarget.id); if (event.currentTarget.id == 0) { console.log("inside HighlightBodyByBodySystem ..came inside current structure"); //clear highlighted system $scope.removeCurrentHighlightedBodySystem(windowviewid); $scope.SetwindowStoreData(windowviewid,'isHighlightBodyByBodySystem',false); $scope.SetwindowStoreData(windowviewid,'isbodySystemHighlight',false); $scope.EnableUI(); } else { //NIKITA $scope.SetwindowStoreData(windowviewid,'isHighlightBodyByBodySystem',true); // no $scope.systemMatchedTermList using ,getting from service // birendra // var BodySystemData=$scope.GetwindowStoreData(windowviewid,'BodySystemData'); // $scope.systemMatchedTermList = new jinqJs() // .from(BodySystemData.BodySystem.BodySystemTerm) // .where('_SystemNumber == ' + event.currentTarget.id) // .select(); if ($scope.GetwindowStoreData(windowviewid,'isHighLight') == false) { //color the body gray console.log('highLightBody from HighlightBodyByBodySystem'); $scope.SetwindowStoreData(windowviewid,'isHighLight',true); if ($scope.GetwindowStoreData(windowviewid,'isExtract') == true) { $scope.SetwindowStoreData(windowviewid,'isExtract',false); $scope.CalculateImageCordinates(viewOrientationId, windowviewid); } else $scope.highLightBody(windowviewid); } else { //This else is when user seraced anything then change the view and clicked on highlight options //in this case body is already highlihted(gray) so no need to var grayedBR=$scope.GetwindowStoreData(windowviewid,'grayedBR'); if (grayedBR != null || grayedBR != undefined) { if (((viewOrientationId == '1') || (viewOrientationId == '4')) && (grayedBR.length == 9)) { $scope.isAlreadyHighlighted = true; } else if (((viewOrientationId == '2') || (viewOrientationId == '3')) && (grayedBR.length == 5)) { $scope.isAlreadyHighlighted = true; } else if (((viewOrientationId == '5')) && (grayedBR.length == 4)) { $scope.isAlreadyHighlighted = true; } else if (((viewOrientationId == '6')) && (grayedBR.length == 1)) { $scope.isAlreadyHighlighted = true; } var isHighlightBodyByBodySystem=$scope.GetwindowStoreData(windowviewid,'isHighlightBodyByBodySystem'); if (($scope.isAlreadyHighlighted == true && isHighlightBodyByBodySystem == true)) { $rootScope.isLoading = true; $('#spinner').css('visibility', 'visible'); $timeout(function () { $scope.HighlightBodyByTermListForBodySystem(null, windowviewid) }, 100); } } } //$rootScope.isLoading = true; $('#spinner').css('visibility', 'visible'); var viewtarget_highlightbody = angular.element(event.currentTarget); var title_highlightbody = viewtarget_highlightbody.attr('title'); $scope.removeBodySyetemSelectionClass(title_highlightbody); //Highlight button should be active $("#btnHighLight_" + windowviewid).addClass("btn-primary"); $("#btnHighLight_" + windowviewid).removeClass("btn-black"); if (!$("#btnNormalMode_" + windowviewid).hasClass("btn-black")) { $("#btnNormalMode_" + windowviewid).addClass("btn-black"); } if (!$("#btnExtract_" + windowviewid).hasClass("btn-black")) { $("#btnExtract_" + windowviewid).addClass("btn-black"); } if ($("#btnExtract_" + windowviewid).hasClass("btn-primary")) { $("#btnExtract_" + windowviewid).removeClass("btn-primary"); } if ($("#btnNormalMode_" + windowviewid).hasClass("btn-primary")) { $("#btnNormalMode_" + windowviewid).removeClass("btn-primary"); } } } $scope.removeCurrentHighlightedBodySystem = function (windowviewid) { var grayImageDataList=$scope.GetwindowStoreData(windowviewid,'grayImageDataList'); for (var i = 0; i < grayImageDataList.length; i++) { var grayCanvasID = 'imageCanvas' + parseInt(i + 1) + "|" + windowviewid; var grayCanvas = document.getElementById(grayCanvasID); if (grayCanvas != null) { var grayCanvasContext = grayCanvas.getContext("2d"); var canvasHeight = grayCanvas.height; var canvasWidth = grayCanvas.width; grayCanvasContext.clearRect(0, 0, canvasHeight, canvasWidth) grayCanvasContext.putImageData(grayImageDataList[parseInt(i)], 0, 0); } } } $scope.removeBodySyetemSelectionClass = function (title_highlightbody) { if (title_highlightbody == "CurrentStructure") { $scope.CurrentStructure = "active"; $scope.Cardiovascular = ""; $scope.Digestive = ""; $scope.Endocrine = ""; $scope.Immune = ""; $scope.Integumentary = ""; $scope.Lymphatic = ""; $scope.Muscular = ""; $scope.Nervous = ""; $scope.Reproductive = ""; $scope.Respiratory = ""; $scope.Skeletal = ""; $scope.Urinary = ""; } else if (title_highlightbody == "Cardiovascular") { $scope.CurrentStructure = ""; $scope.Cardiovascular = "active"; $scope.Digestive = ""; $scope.Endocrine = ""; $scope.Immune = ""; $scope.Integumentary = ""; $scope.Lymphatic = ""; $scope.Muscular = ""; $scope.Nervous = ""; $scope.Reproductive = ""; $scope.Respiratory = ""; $scope.Skeletal = ""; $scope.Urinary = ""; } else if (title_highlightbody == "Digestive") { $scope.CurrentStructure = ""; $scope.Cardiovascular = ""; $scope.Digestive = "active"; $scope.Endocrine = ""; $scope.Immune = ""; $scope.Integumentary = ""; $scope.Lymphatic = ""; $scope.Muscular = ""; $scope.Nervous = ""; $scope.Reproductive = ""; $scope.Respiratory = ""; $scope.Skeletal = ""; $scope.Urinary = ""; } else if (title_highlightbody == "Endocrine") { $scope.CurrentStructure = ""; $scope.Cardiovascular = ""; $scope.Digestive = ""; $scope.Endocrine = "active"; $scope.Immune = ""; $scope.Integumentary = ""; $scope.Lymphatic = ""; $scope.Muscular = ""; $scope.Nervous = ""; $scope.Reproductive = ""; $scope.Respiratory = ""; $scope.Skeletal = ""; $scope.Urinary = ""; } else if (title_highlightbody == "Immune") { $scope.CurrentStructure = ""; $scope.Cardiovascular = ""; $scope.Digestive = ""; $scope.Endocrine = ""; $scope.Immune = "active"; $scope.Integumentary = ""; $scope.Lymphatic = ""; $scope.Muscular = ""; $scope.Nervous = ""; $scope.Reproductive = ""; $scope.Respiratory = ""; $scope.Skeletal = ""; $scope.Urinary = ""; } else if (title_highlightbody == "Integumentary") { $scope.CurrentStructure = ""; $scope.Cardiovascular = ""; $scope.Digestive = ""; $scope.Endocrine = ""; $scope.Immune = ""; $scope.Integumentary = "active"; $scope.Lymphatic = ""; $scope.Muscular = ""; $scope.Nervous = ""; $scope.Reproductive = ""; $scope.Respiratory = ""; $scope.Skeletal = ""; $scope.Urinary = ""; } else if (title_highlightbody == "Lymphatic") { $scope.CurrentStructure = ""; $scope.Cardiovascular = ""; $scope.Digestive = ""; $scope.Endocrine = ""; $scope.Immune = ""; $scope.Integumentary = ""; $scope.Lymphatic = "active"; $scope.Muscular = ""; $scope.Nervous = ""; $scope.Reproductive = ""; $scope.Respiratory = ""; $scope.Skeletal = ""; $scope.Urinary = ""; } else if (title_highlightbody == "Muscular") { $scope.CurrentStructure = ""; $scope.Cardiovascular = ""; $scope.Digestive = ""; $scope.Endocrine = ""; $scope.Immune = ""; $scope.Integumentary = ""; $scope.Lymphatic = ""; $scope.Muscular = "active"; $scope.Nervous = ""; $scope.Reproductive = ""; $scope.Respiratory = ""; $scope.Skeletal = ""; $scope.Urinary = ""; } else if (title_highlightbody == "Nervous") { $scope.CurrentStructure = ""; $scope.Cardiovascular = ""; $scope.Digestive = ""; $scope.Endocrine = ""; $scope.Immune = ""; $scope.Integumentary = ""; $scope.Lymphatic = ""; $scope.Muscular = ""; $scope.Nervous = "active"; $scope.Reproductive = ""; $scope.Respiratory = ""; $scope.Skeletal = ""; $scope.Urinary = ""; } else if (title_highlightbody == "Reproductive") { $scope.CurrentStructure = ""; $scope.Cardiovascular = ""; $scope.Digestive = ""; $scope.Endocrine = ""; $scope.Immune = ""; $scope.Integumentary = ""; $scope.Lymphatic = ""; $scope.Muscular = ""; $scope.Nervous = ""; $scope.Reproductive = "active"; $scope.Respiratory = ""; $scope.Skeletal = ""; $scope.Urinary = ""; } else if (title_highlightbody == "Respiratory") { $scope.CurrentStructure = ""; $scope.Cardiovascular = ""; $scope.Digestive = ""; $scope.Endocrine = ""; $scope.Immune = ""; $scope.Integumentary = ""; $scope.Lymphatic = ""; $scope.Muscular = ""; $scope.Nervous = ""; $scope.Reproductive = ""; $scope.Respiratory = "active"; $scope.Skeletal = ""; $scope.Urinary = ""; } else if (title_highlightbody == "Skeletal") { $scope.CurrentStructure = ""; $scope.Cardiovascular = ""; $scope.Digestive = ""; $scope.Endocrine = ""; $scope.Immune = ""; $scope.Integumentary = ""; $scope.Lymphatic = ""; $scope.Muscular = ""; $scope.Nervous = ""; $scope.Reproductive = ""; $scope.Respiratory = ""; $scope.Skeletal = "active"; $scope.Urinary = ""; } else if (title_highlightbody == "Urinary") { $scope.CurrentStructure = ""; $scope.Cardiovascular = ""; $scope.Digestive = ""; $scope.Endocrine = ""; $scope.Immune = ""; $scope.Integumentary = ""; $scope.Lymphatic = ""; $scope.Muscular = ""; $scope.Nervous = ""; $scope.Reproductive = ""; $scope.Respiratory = ""; $scope.Skeletal = ""; $scope.Urinary = "active"; } else { $scope.CurrentStructure = ""; $scope.Cardiovascular = ""; $scope.Digestive = ""; $scope.Endocrine = ""; $scope.Immune = ""; $scope.Integumentary = ""; $scope.Lymphatic = ""; $scope.Muscular = ""; $scope.Nervous = ""; $scope.Reproductive = ""; $scope.Respiratory = ""; $scope.Skeletal = ""; $scope.Urinary = ""; } } $scope.ShowSearch = function (windowviewid) { $scope.SetwindowStoreData(windowviewid,'isSearchClicked',true); console.log('ShowSearch is called'); var primaryLexiconIndx = $scope.GetwindowStoreData(windowviewid, 'primaryLexiconInd'); var vocabTermDataArray = $scope.GetwindowStoreData(windowviewid, 'vocabTermDataArray'); //this check is for log only because we are writing length so need to check if its not null or undefined if (vocabTermDataArray[primaryLexiconIndx].vocabTermTxt != null || vocabTermDataArray[primaryLexiconIndx].vocabTermTxt != undefined) console.log('$scope.VocabTermTxt.length= ' + vocabTermDataArray[primaryLexiconIndx].vocabTermTxt.length) $scope.IsSearchVisible = true; $timeout(function () { var viewOrientationId=$scope.GetwindowStoreData(windowviewid,'viewOrientationId'); if ((vocabTermDataArray[primaryLexiconIndx].vocabTermTxt != null || vocabTermDataArray[primaryLexiconIndx].vocabTermTxt != undefined) && (vocabTermDataArray[0].vocabTermTxt.length > 0)) { //This is added as the $scope.VocabTermTxt can change while changing view also the li elements need to be removed //Remove the list and then Repopulate if ($('#searchListDiv_' + windowviewid).html() != "") $('#searchListDiv_' + windowviewid).empty(); //Delay compile of ul li so that the remove of li is completed. $scope.isSearchDataLoaded = true; var ColoredImageSRC=$scope.GetwindowStoreData(windowviewid,'ColoredImageSRC'); if ((ColoredImageSRC != null || ColoredImageSRC != undefined)) { if (((viewOrientationId == '1') || (viewOrientationId == '4')) && (ColoredImageSRC.length == 9)) { $rootScope.isLoading = false; $('#spinner').css('visibility', 'hidden'); } else if (((viewOrientationId == '2') || (viewOrientationId == '3')) && (ColoredImageSRC.length == 5)) { $rootScope.isLoading = false; $('#spinner').css('visibility', 'hidden'); } else if ((viewOrientationId == '5') && (ColoredImageSRC.length == 4)) { $rootScope.isLoading = false; $('#spinner').css('visibility', 'hidden'); } else if ((viewOrientationId == '6') && (ColoredImageSRC.length == 1)) { $rootScope.isLoading = false; $('#spinner').css('visibility', 'hidden'); } } console.log("primary language: " + vocabTermDataArray[primaryLexiconIndx].language); $rootScope.a = primaryLexiconIndx; $scope.vocabArray = vocabTermDataArray; $scope.sFilter = $("#typedTermName_" + windowviewid).val(); var $e2 = $('').appendTo('#searchListDiv_' + windowviewid); $compile($e2)($scope); console.log('termlistfilter is created and complied'); $(".daSearch").css("display", "none"); $("#termlistfilter_" + windowviewid).css("display", "block"); $timeout(function () { $("#termlistfilter_" + windowviewid + " > li").each(function (key, value) { if ($(this).find("a").html() == document.getElementById('typedTermName_'+windowviewid).value) { $("#termlistfilter_" + windowviewid + " li a").css({ "background-color": "#ffffff", "color": "#000000" }); $(this).find("a").css({ "background-color": "#3399FF", "color": "#ffffff" }); } }); $rootScope.searchListArray = []; $("#termlistfilter_" + windowviewid + " > li").each(function (key, value) { $rootScope.searchListArray.push({ "name": $(this).find("a").html(), "id": $(this).find("a").attr("id") }); }); }, 100); } else { $rootScope.loadSearchData(windowviewid); } }, 500); } $scope.HideSearch = function () { var windowviewid = (event.currentTarget.id).split("_")[1]; $timeout(function () { $("#termlistfilter_" + windowviewid).css("display", "none"); }, 500); } $scope.jumpToTerm = function (event) { var windowviewid = (event.target.parentElement.parentElement.id).split("_")[1]; $rootScope.isTermClicked = true; var currenttermidTxt=$('#' + event.currentTarget.id).text(); $rootScope.searchSelectedText =currenttermidTxt; //using at home controller $scope.SetwindowStoreData(windowviewid,'searchSelectedText',currenttermidTxt); $('#termList option[selected="selected"]').prop("selected", false); $('#termList option[value="' + currenttermidTxt + '"]').prop("selected", true); $("#termList").find("option").css({ "background-color": "#ffffff", "color": "#000000" }); $('#termList option[value="' + currenttermidTxt + '"]').css({ "background-color": "#3399FF", "color": "#ffffff" }); if ($rootScope.isCallFromOtherModule) { $scope.SetwindowStoreData(windowviewid,'isHighlightBodyWithCBTermData',false); $scope.SetwindowStoreData(windowviewid,'fullTermlist',[]); $scope.SetwindowStoreData(windowviewid,'AllTerms',[]); $scope.SetwindowStoreData(windowviewid,'CurriculumTermData',[]); } $rootScope.isLoading = true; $('#spinner').css('visibility', 'visible'); //1. if ($rootScope.isOpenResourceBtnClicked) { $("#typedTermName_" + windowviewid).val(event.currentTarget.innerHTML); } else { $("#typedTermName_" + windowviewid).val(event.currentTarget.innerHTML); } //2. $scope.HighlightBodyOnListManagerSelection(event.currentTarget.id, false, windowviewid); // $scope.SetwindowStoreData(windowviewid,'IsSearchVisible',false); $scope.IsSearchVisible = false; console.log("$scope.IsSearchVisible = false INSIDE $scope.jumpToTerm ") $scope.SetwindowStoreData(windowviewid,'isNormalMode',false); //Highlight only Highlight button $("#btnHighLight_" + windowviewid).addClass("btn-primary"); $("#btnHighLight_" + windowviewid).removeClass("btn-black"); if (!$("#btnNormalMode_" + windowviewid).hasClass("btn-black")) { $("#btnNormalMode_" + windowviewid).addClass("btn-black"); } if (!$("#btnExtract_" + windowviewid).hasClass("btn-black")) { $("#btnExtract_" + windowviewid).addClass("btn-black"); } if ($("#btnExtract_" + windowviewid).hasClass("btn-primary")) { $("#btnExtract_" + windowviewid).removeClass("btn-primary"); } if ($("#btnNormalMode_" + windowviewid).hasClass("btn-primary")) { $("#btnNormalMode_" + windowviewid).removeClass("btn-primary"); } } //Function to set the vertical and horizontal scroll position of CanvasDiv as per the Navigator $scope.ScrollCanvasDiv = function (event) { var windowviewid = (event.target.id).split("_")[1]; var x = $("#" + event.target.id).position(); var can = $("#canvasDivDA_" + windowviewid); var canheight = can[0].scrollHeight; var canwidth = can[0].scrollWidth; var scrolly = (x.top / ($('#navigatorDiv_' + windowviewid).height())) * (canheight); var scrollx = (x.left / $('#navigatorDiv_' + windowviewid).width()) * (canwidth); $("#canvasDivDA_" + windowviewid).scrollTop(scrolly); $("#canvasDivDA_" + windowviewid).scrollLeft(scrollx); var isHighlightBodyByBodySystem=$scope.GetwindowStoreData(windowviewid,'isHighlightBodyByBodySystem'); if ((isHighlightBodyByBodySystem == true)) { $timeout(function () { $scope.HighlightBodyByTermList(null,windowviewid) }, 100); } } //list manager $scope.$on('listManagerEvent', function (event, data) { var windowviewid= $rootScope.MULTI_VIEW_ID; if ($rootScope.islistManagerEventAlredayDispachted == true) { $('#spinner').css('visibility', 'visible'); console.log('listManagerEvent'); var systemList = $rootScope.CommonData.DACommonData.BodySystems.Item; var optionsLength = $('#bodySystems option').length;//.children('option').length; console.log('optionsLength= ' + optionsLength) if (optionsLength > 0) $('#bodySystems').empty(); $("#bodySystems").css("display", "block"); $("#AABodySystems").css("display", "none"); var $all = $('').appendTo('#bodySystems'); $compile($all)($scope); angular.forEach(systemList, function (value, key) { var $elem = $('').appendTo('#bodySystems'); $compile($elem)($scope); }) $('#viewName').empty(); var currentView = $scope.GetwindowStoreData(windowviewid,'currentViewTitle'); var viewNmeHtml = '' $('#viewName').append(viewNmeHtml); var len = $rootScope.openModules.length; var currentOpenModuleId = $rootScope.openModules[len - 1].ModuleId; //confirm that this is DA module which is last open if (currentOpenModuleId == 1) { $('#termList').empty(); if ($scope.GetwindowStoreData(windowviewid,'TermNumberData') == null) { setTimeout(function () { $scope.loadListManger(windowviewid); }, 3000); } else { $scope.loadListManger(windowviewid); } $rootScope.islistManagerEventAlredayDispachted = false; } } }); $scope.loadListManger = function (windowviewid) { var primaryLexiconIndex = $scope.GetwindowStoreData(windowviewid, 'primaryLexiconInd'); var vocabTermDataArray=$scope.GetwindowStoreData(windowviewid,'vocabTermDataArray'); if (vocabTermDataArray != null && vocabTermDataArray != undefined && vocabTermDataArray.length > 0) { for (var i = 0; i <= vocabTermDataArray.length - 1; i++) { if (vocabTermDataArray[i].language == $rootScope.lexiconLanguageArray[0].language) { primaryLexiconIndex = i; } } console.log(vocabTermDataArray[primaryLexiconIndex].language); $rootScope.isListManagerMenuSelected = true; var vocabTermTxt = []; var TermNData=$scope.GetwindowStoreData(windowviewid,'TermNumberData'); if (TermNData != null || TermNData != undefined && TermNData.TermData.Term.length > 0) { angular.forEach(TermNData.TermData.Term, function (value1, key1) { angular.forEach(vocabTermDataArray[primaryLexiconIndex].VocabTermData.VocabTerms.Term, function (value2, key2) { if (value1._ActualTermNumber === value2._ActualTermNumber) { vocabTermTxt.push( { "_ActualTermNumber": value2._ActualTermNumber, "_TermText": value2._TermText, "_cdId": value2._cdId } ); } }) }) var VocabTermTxtfilter = new jinqJs() .from(vocabTermTxt) .distinct('_TermText', '_ActualTermNumber') .orderBy([{ field: '_TermText', sort: 'asc' }]) .select('_ActualTermNumber', '_TermText', '_cdId'); if (VocabTermTxtfilter != null || VocabTermTxtfilter != undefined) { for (var j = 0; j < VocabTermTxtfilter.length; j++) { var $el = $('').appendTo('#termList') $compile($el)($scope); } $rootScope.isLoading = false; $('#spinner').css('visibility', 'hidden'); var termsTotal = '' + VocabTermTxtfilter.length + ' Structures'; $("#totalTerms").empty(); $('#totalTerms').append(termsTotal); } } else { console.log("$rootScope.TermNumberData NOT FOUND"); $rootScope.loadSearchData(windowviewid); } } else { $rootScope.loadSearchData(windowviewid); } } $scope.HighlightBodyOnListManagerSelection = function (actualTermNumber, isTermListOptionClicked, windowviewid) { if (windowviewid == null || windowviewid == undefined) { windowviewid = $rootScope.MULTI_VIEW_ID; } var currenttermidTxt=$("#" + actualTermNumber).text(); $rootScope.searchSelectedText =currenttermidTxt; //using at home controller $scope.SetwindowStoreData(windowviewid,'searchSelectedText',currenttermidTxt); if (isTermListOptionClicked == true) { $('#typedTermName_' + windowviewid).val(''); } if ($scope.GetwindowStoreData(windowviewid,'isTransparencyActivated')) { $scope.CloseTransparencyBox(windowviewid); } console.log('inside HighlightBodyOnListManagerSelection actualTermNumber= ' + actualTermNumber) // Terms search in the Search list should be disable in the List Manager and Vice-Versa. var prevId=$scope.GetwindowStoreData(windowviewid,'prevId'); if (prevId == actualTermNumber) { $rootScope.isLoading = false; $('#spinner').css('visibility', 'hidden'); } else { $scope.DisableUI(); $rootScope.isLoading = true; $('#spinner').css('visibility', 'visible'); $scope.SetwindowStoreData(windowviewid,'prevId',actualTermNumber); $("#termList").find("option").css({ "background-color": "#ffffff", "color": "#000000" }); $("#termList").find("option[id=" + actualTermNumber + "]").css({ "background-color": "#3399FF", "color": "#ffffff" }); $("div#backdrop #termlistfilter li").find("a").css({ "background-color": "#ffffff", "color": "#000000" }); $("div#backdrop #termlistfilter li").find("a[id=" + actualTermNumber + "]").css({ "background-color": "#3399FF", "color": "#ffffff" }); $scope.terminateCurrentlyRunningWPs(); var isListManagerSelected=true; $scope.SetwindowStoreData(windowviewid,'isListManagerSelected',isListManagerSelected); //--- if (isListManagerSelected == true) { $("#btnHighLight_" + windowviewid).addClass("btn-primary"); $("#btnHighLight_" + windowviewid).removeClass("btn-black"); if (!$("#btnNormalMode_" + windowviewid).hasClass("btn-black")) { $("#btnNormalMode_" + windowviewid).addClass("btn-black"); } if ($("#btnNormalMode_" + windowviewid).hasClass("btn-primary")) { $("#btnNormalMode_" + windowviewid).removeClass("btn-primary"); } } //--- $scope.SetwindowStoreData(windowviewid,'isHighlightBodyByBodySystem',false); $scope.SetwindowStoreData(windowviewid,'isbodySystemHighlight',false); $scope.removeBodySyetemSelectionClass(""); //1. $scope.SetwindowStoreData(windowviewid,'actualTermNumber',actualTermNumber); console.log(' $scope.actualTermNumber insde HighlightBodyOnListManagerSelection= ' + actualTermNumber) //2. $scope.setLayerNumberAndHighlightByTermList(windowviewid); } } $scope.setLayerNumberAndHighlightByTermList = function (windowviewid) { var actualTermNumber=$scope.GetwindowStoreData(windowviewid,'actualTermNumber'); console.log(' $scope.actualTermNumber insde setLayerNumberAndHighlightByTermList= ' + actualTermNumber) $scope.TermList = $scope.getTermNumberList(actualTermNumber,windowviewid); if (($scope.TermList != null || $scope.TermList != undefined) && $scope.TermList.length > 0) { var internalLayerNumberList = []; for (var i = 0; i < $scope.TermList.length; i++) { var layerNumber = $scope.TermList[i]._InternalLayerNumber internalLayerNumberList[i] = parseInt(layerNumber); } internalLayerNumberList.sort(function (a, b) { return a - b }) var internalLayerNumber = internalLayerNumberList[0]//.replace('00', ''); //3. get layer number if (internalLayerNumber >= DA[0].SKIN_START_INTERNAL_LAYER && internalLayerNumber <= DA[0].SKIN_END_INTERNAL_LAYER) { internalLayerNumber = DA[0].SKIN_DEFAULT_INTERNAL_LAYER; } var BodyLayerData=$scope.GetwindowStoreData(windowviewid,'BodyLayerData'); var layerNumber; var matchedLayerNumber = new jinqJs() .from(BodyLayerData.Layers.DataLayer) .where("_lni == " + internalLayerNumber) .select('_LayerNumber'); if (matchedLayerNumber == null || matchedLayerNumber.length == 0) { layerNumber = 0; } else { layerNumber = matchedLayerNumber[0]._LayerNumber } if (layerNumber == 0) { layerNumber = $scope.GetwindowStoreData(windowviewid,'totalLayers'); } else { layerNumber = parseInt(layerNumber) - 1; } $scope.SetwindowStoreData(windowviewid,'layerNumber',layerNumber); //4.get scroll position if (actualTermNumber != DA[0].SKIN_TERM_ID) { $scope.termCoordinate = $scope.getTermCoordinate(actualTermNumber); } //5. var TermNData=$scope.GetwindowStoreData(windowviewid,'TermNumberData'); var matchdedDataOnLayer = new jinqJs() .from(TermNData.TermData.Term) .where('_InternalLayerNumber == ' + internalLayerNumber) .select(); $scope.SetwindowStoreData(windowviewid,'matchdedDataOnLayer',matchdedDataOnLayer); if (matchdedDataOnLayer != null || matchdedDataOnLayer != undefined) { //6. var matchedDataonActualTerm = new jinqJs() .from(matchdedDataOnLayer) .where('_ActualTermNumber == ' + actualTermNumber) .select('_TermNumber'); if (matchedDataonActualTerm != null || matchedDataonActualTerm != undefined) { var termNo = matchedDataonActualTerm[0]._TermNumber.toString(); //7.get termList $scope.SetwindowStoreData(windowviewid,'fullTermlist',[]); $scope.SetwindowStoreData(windowviewid,'AllTerms',[]); console.log("initialised"); if (termNo != DA[0].figLeafTermId) { $scope.getChildTermList(termNo,windowviewid); $scope.getSiblings(termNo,windowviewid); } } } } else { var currentBodyViewId = $scope.GetwindowStoreData(windowviewid,'voId') ; var termJsonPath = '~/../content/data/json/da/body-views/' + currentBodyViewId + '/da_dat_tm_sg_' + currentBodyViewId + '.json'; DataService.getAnotherJson(termJsonPath) .then( function (result) { //$rootScope.TermNumberData = result; $scope.SetwindowStoreData(windowviewid,'TermNumberData',result); $scope.TermList = $scope.getTermNumberList(actualTermNumber,windowviewid); if (($scope.TermList != null || $scope.TermList != undefined) && $scope.TermList.length > 0) { $scope.setLayerNumberAndHighlightByTermList(windowviewid); } }) } var totalayer=$scope.GetwindowStoreData(windowviewid,'totalLayers'); var nlayer=$scope.GetwindowStoreData(windowviewid,'layerNumber'); $('#txtLayerNumberDA_' + windowviewid).val((parseInt(nlayer))); var sliderVal = parseInt(totalayer) - parseInt(nlayer); console.log('inside setLayerNumberAndHighlightByTermList. document.getElementById layerChangeSlider value : ' + document.getElementById('layerChangeSlider') + '$rootScope.totalLayers: ' + totalayer + ' - parseInt($scope.layerNumber): ' + parseInt(nlayer) + ' = set value for layerChangeSlider: ' + sliderVal); $('#layerChangeSliderDA_' + windowviewid).slider("option", "value", sliderVal); //remove existing body view var canDiv = document.getElementById('canvasDivDA_' + windowviewid); var canDivChildCount = canDiv.childElementCount; if (canDivChildCount > 0) { canDiv.innerHTML = ''; } //9. var isHighLight=$scope.GetwindowStoreData(windowviewid,'isHighLight'); $timeout(function () { if (($scope.GetwindowStoreData(windowviewid,'isGenderChnage') == true && isHighLight == true) || ($scope.GetwindowStoreData(windowviewid,'isViewChange') == true && isHighLight == true)) { } else { $scope.SetwindowStoreData(windowviewid,'isHighLight',false); } $('#sppeachBubble_'+windowviewid).css('display', 'none'); $('#dot_'+windowviewid).css("display", "none"); //DA > Annotation's Line should not displayed. $('#bord_'+windowviewid).css("display", "none"); $rootScope.isLoading = true; $('#spinner').css('visibility', 'visible'); //redraw body of respective layer var viewOrientationId=$scope.GetwindowStoreData(windowviewid,'viewOrientationId'); $scope.CalculateImageCordinates(viewOrientationId, windowviewid); }, 500); } $scope.getChildTermList = function (termNo,windowviewid) { var matchdedDataOnLayer=$scope.GetwindowStoreData(windowviewid,'matchdedDataOnLayer'); var data = new jinqJs() .from(matchdedDataOnLayer) .where("_ParentTermNumber == " + termNo) .select(); if (data != null || data != undefined) { var data2 = new jinqJs() .from(data) .where("_TermNumber != " + termNo) .select(); if ((data2 != null || data2 != undefined) && (data2.length > 0)) { var fullTermlist=$scope.GetwindowStoreData(windowviewid,'fullTermlist'); var AllTerms=$scope.GetwindowStoreData(windowviewid,'AllTerms'); for (var i = 0; i < data2.length; i++) { var serachTerm = data2[i]._TermNumber; var isFound = jQuery.inArray(serachTerm, fullTermlist) if (isFound == -1) { fullTermlist.push(serachTerm); console.log("psudhed in getChildTermList") AllTerms.push({ '_TermNumber': serachTerm }) $scope.getChildTermList(serachTerm,windowviewid); } } } } } $scope.getSiblings = function (termNo,windowviewid) { var matchdedDataOnLayer=$scope.GetwindowStoreData(windowviewid,'matchdedDataOnLayer'); var data = new jinqJs() .from(matchdedDataOnLayer) .where("_TermNumber == " + termNo) .select(); if (data != null || data != undefined) { var termNo = data[0]._ActualTermNumber; var data2 = new jinqJs() .from(matchdedDataOnLayer) .where("_ActualTermNumber == " + termNo) .select(); if ((data2 != null || data2 != undefined) && (data2.length > 0)) { var fullTermlist=$scope.GetwindowStoreData(windowviewid,'fullTermlist'); var AllTerms=$scope.GetwindowStoreData(windowviewid,'AllTerms'); for (var i = 0; i < data2.length; i++) { fullTermlist.push(data2[i]._TermNumber); console.log("psudhed in getSiblings") AllTerms.push({ '_TermNumber': data2[i]._TermNumber }) $scope.getChildTermList(data2[i]._TermNumber,windowviewid); } } } } $scope.getTermCoordinate = function (actualTermNumber) { if(actualTermNumber!=null || actualTermNumber!=undefined) { return { x: $scope.TermList[0]._CenterX, y: $scope.TermList[0]._CenterY } } else { return { x: 0, y: 0 } } } $scope.aligneCanvasWithTerm = function (windowviewid) { console.log('aligneCanvasWithTerm') var zoomValue=$scope.GetwindowStoreData(windowviewid,'zoomInOut'); var newX = parseInt($scope.scaleValue($scope.termCoordinate.x, zoomValue, DA[0].ZOOM_TERM_DATA)); var newY = parseInt($scope.scaleValue($scope.termCoordinate.y, zoomValue, DA[0].ZOOM_TERM_DATA)); var canvasX = parseInt(document.getElementById('canvasDivDA_' + windowviewid).offsetLeft); var canvasY = parseInt(document.getElementById('canvasDivDA_' + windowviewid).offsetTop); var canvasHeight = $('#canvasDivDA_' + windowviewid).height(); var canvasWidth = $('#canvasDivDA_' + windowviewid).width(); var canvasBottom = canvasY + canvasHeight; var canvasRight = canvasX + canvasWidth if (newX < canvasX || newX > canvasRight || newY < canvasY || newY > canvasBottom) { newX = newX - canvasWidth / 2; newY = newY - canvasHeight / 2; var maxVScrollPos = $('#canvasDivDA_' + windowviewid)[0].scrollHeight; var maxHScrollPos = $('#canvasDivDA_' + windowviewid)[0].scrollWidth; if (newY < maxVScrollPos) { newY = newY; } else { newY = maxVScrollPos; } if (newX < maxHScrollPos) { newX = newX; } else { newX = maxHScrollPos; } $('#canvasDivDA_' + windowviewid).scrollLeft(newX); $('#canvasDivDA_' + windowviewid).scrollTop(newY); $rootScope.isLoading = false; $('#spinner').css('visibility', 'hidden'); } $scope.SetwindowStoreData(windowviewid,'CanvasDivLeftPosition',$('#canvasDivDA_' + windowviewid).scrollLeft()); $scope.SetwindowStoreData(windowviewid,'CanvasDivTopPosition',$('#canvasDivDA_' + windowviewid).scrollTop()); $rootScope.isLoading = false; $('#spinner').css('visibility', 'hidden'); } $scope.scaleValue = function (nValue, nNewZoom, nExistingZoom) { var iReturnValue = nValue * nNewZoom; return Math.round(iReturnValue / nExistingZoom); } $rootScope.refreshTermListOnSystemSelection = function (bodysystemId) { var windowviewid= $rootScope.MULTI_VIEW_ID; $rootScope.isLoading = true; $('#spinner').css('visibility', 'visible'); $rootScope.selectedBodySystemId = bodysystemId; $rootScope.selectedBodySystemName = $('#bodySystems option[id="' + bodysystemId + '"]').val(); $("#bodySystems").find("option").css({ "background-color": "#ffffff", "color": "#000000" }); $("#bodySystems").find("option[id=" + bodysystemId + "]").css({ "background-color": "#3399FF", "color": "#ffffff" }); $('#termList').empty(); if (bodysystemId == 0) { $scope.loadListManger(windowviewid); } else { var bodySystemDataPath = '~/../content/data/json/da/body-views/' + $rootScope.getLocalStorageValue("currentBodyViewId") + '/da_dat_body_system_term_' + $rootScope.getLocalStorageValue("currentBodyViewId") + '.json'; DataService.getJson(bodySystemDataPath) .then( function (result) { $scope.SetwindowStoreData(windowviewid,'BodySystemData',result); var systemMatchedTermList = new jinqJs() .from(result.BodySystem.BodySystemTerm) .where('_SystemNumber == ' + bodysystemId) .select(); if (systemMatchedTermList != null || systemMatchedTermList != undefined) { $rootScope.isLoading = false; $('#spinner').css('visibility', 'hidden'); $scope.refreshTerms(systemMatchedTermList,windowviewid); } }, function (error) { console.log(error.statusText) } ) } } $scope.refreshTerms = function (termList,windowviewid) { var path = '~/../content/data/json/da/vocab/english/cm_dat_vocabterm_1.json' $http({ method: 'GET', url: '~/../content/data/json/da/vocab/english/cm_dat_vocabterm_1.json' }).success(function (data) { var VocabTermData = data; var vocabTermTxt = []; var TermNData=$scope.GetwindowStoreData(windowviewid,'TermNumberData'); for (var i = 0; i < termList.length; i++) { var actulaTermNumber = new jinqJs() .from(TermNData.TermData.Term) .where('_TermNumber == ' + termList[i]._TermNumber) .select('_ActualTermNumber'); if (actulaTermNumber != null || actulaTermNumber != undefined) { angular.forEach(VocabTermData.VocabTerms.Term, function (value2, key2) { if (actulaTermNumber[0]._ActualTermNumber == value2._ActualTermNumber) { vocabTermTxt.push( { "_ActualTermNumber": value2._ActualTermNumber, "_TermText": value2._TermText, "_cdId": value2._cdId } ); } }) } } var VocabTermTxtfilter = new jinqJs() .from(vocabTermTxt) .distinct('_TermText', '_ActualTermNumber') .orderBy([{ field: '_TermText', sort: 'asc' }]) .select('_ActualTermNumber', '_TermText', '_cdId'); if (VocabTermTxtfilter != null || VocabTermTxtfilter != undefined) { for (var j = 0; j < VocabTermTxtfilter.length; j++) { var $el = $('').appendTo('#termList') $compile($el)($scope); } var termsTotal = '' + VocabTermTxtfilter.length + ' Structures'; $("#totalTerms").empty(); $('#totalTerms').append(termsTotal); $rootScope.isLoading = false; $('#spinner').css('visibility', 'hidden'); } }) .error(function (data, status, headers, config) { console.log(data); }); } $scope.LayerChangeBasedOnKeyPressed = function (e) { var windowviewid = (event.currentTarget.id).split("_")[1]; // 'x' button is displaying inside the input box in IE browser. if (e.keyCode == 38) { var layerInputVal = $('#txtLayerNumberDA_' + windowviewid).val(); var totalayer=$scope.GetwindowStoreData(windowviewid,'totalLayers'); if (layerInputVal < totalayer) { var layerInputValInc = parseInt(layerInputVal) + 1; $scope.SetwindowStoreData(windowviewid,'layerNumber',parseInt(layerInputValInc)); $('#txtLayerNumberDA_' + windowviewid).val(layerInputValInc); $scope.SetwindowStoreData(windowviewid,'PreviouslayerNumbr',layerInputValInc); } else { $('#txtLayerNumberDA_' + windowviewid).val(totalayer); } } // 'x' button is displaying inside the input box in IE browser. if (e.keyCode == 40) { var layerInputVal = $('#txtLayerNumberDA_' + windowviewid).val(); if (layerInputVal > 0) { var layerInputValDec = parseInt(layerInputVal) - 1; $scope.SetwindowStoreData(windowviewid,'layerNumber',parseInt(layerInputValDec)); $('#txtLayerNumberDA_' + windowviewid).val(layerInputValDec); $scope.SetwindowStoreData(windowviewid,'PreviouslayerNumbr',layerInputValDec); } } } $scope.LayerValueChangeBasedOnKeyUp = function (e) { var windowviewid = (event.currentTarget.id).split("_")[1]; var totalayer=$scope.GetwindowStoreData(windowviewid,'totalLayers'); if (e.keyCode == 13) { if ($('#txtLayerNumberDA_' + windowviewid).val() == '') { $('#txtLayerNumberDA_' + windowviewid).val($scope.GetwindowStoreData(windowviewid,'PreviouslayerNumbr')); } else { $scope.SetwindowStoreData(windowviewid,'PreviouslayerNumbr',$('#txtLayerNumberDA_' + windowviewid).val()); var keyUplayerNumber = parseInt($('#txtLayerNumberDA_' + windowviewid).val()); if (isNaN(keyUplayerNumber)) { document.getElementById('txtLayerNumberDA_' + windowviewid).value = ""; } else { if (keyUplayerNumber > totalayer) { $('#txtLayerNumberDA_' + windowviewid).val(totalayer); $scope.SetwindowStoreData(windowviewid,'layerNumber',parseInt(totalayer)); } else { $('#txtLayerNumberDA_' + windowviewid).val(keyUplayerNumber); $scope.SetwindowStoreData(windowviewid,'layerNumber',parseInt(keyUplayerNumber)); } $scope.LayerChange(windowviewid); } } } else { var layerInputVal = $('#txtLayerNumberDA_' + windowviewid).val(); if (layerInputVal <= totalayer) { $('#txtLayerNumberDA_' + windowviewid).val(layerInputVal); } else { $('#txtLayerNumberDA_' + windowviewid).val(totalayer); } } } $scope.resetSearchListView = function () { $scope.showFilteredTerms() } $scope.showFilteredTerms = function () { var targetid = event.target.id; var windowviewid = targetid.split('_')[1]; if ($('#searchListDiv_' + windowviewid).html() != "") { $('#searchListDiv_' + windowviewid).empty(); } var vocabTermDataArray = $scope.GetwindowStoreData(windowviewid, 'vocabTermDataArray'); $scope.vocabArray = vocabTermDataArray; $rootScope.a = $scope.GetwindowStoreData(windowviewid, 'primaryLexiconInd'); $scope.sFilter = $("#typedTermName_" + windowviewid).val(); var $e2 = $('').appendTo('#searchListDiv_' + windowviewid); $compile($e2)($scope); $("#termlistfilter_" + windowviewid).css("display", "block"); $timeout(function () { $("#termlistfilter_" + windowviewid + " > li").each(function (key, value) { if ($(this).find("a").html() == document.getElementById("typedTermName_" + windowviewid).value) { $("#termlistfilter_" + windowviewid + " li a").css({ "background-color": "#ffffff", "color": "#000000" }); $(this).find("a").css({ "background-color": "#3399FF", "color": "#ffffff" }); } }); }, 100); }; $scope.ApplySearch = function () { var windowviewid = (event.currentTarget.id).split("_")[1]; $rootScope.isLoading = false; $('#spinner').css('visibility', 'hidden'); $('#searchedTermListPopUp_' + windowviewid).css({ 'background': '#fff', 'border-radius': '3px', 'border': '1px solid #ededed', '-webkit-box-shadow': '0px 0px 2px 1px rgba(173,173,173,1)', '-moz-box-shadow': '0px 0px 2px 1px rgba(173,173,173,1)', 'box-shadow': '0px 0px 2px 1px rgba(173,173,173,1)', 'width': '350px', 'position': 'absolute', 'top': '170px', 'left': '140px', 'display': 'none', 'z-index': '780000', 'height': 'auto !important' }); $('#searchedTermListPopUp_' + windowviewid + ' .annotation-modal-header').css({ 'background': '#818f44', 'padding': '2px 10px', }); $('#searchedTermListPopUp_' + windowviewid + ' .annotation-modal-header h4').css({ 'color': '#fff', 'font-size': '15px', 'line-height': '20px' }); $('#searchedTermListPopUp_' + windowviewid + ' .modal-header .close').css({ 'color': '#fff', 'margin': '0', 'opacity': '10', 'text-shadow': 'none' }); $('#searchedTermListPopUp_' + windowviewid + ' .modal-footer').css({ 'padding': '5px 10px' }); $('#searchedTermListPopUp_' + windowviewid).css('display', 'block'); $('#searchedTermListPopUp_' + windowviewid).css("visibility", "visible"); $('#searchedTermListPopUp_' + windowviewid).draggable(); $scope.FillSearchList(windowviewid); } $scope.FillSearchList = function (windowviewid) { if ($('#searchTermListUl_' + windowviewid).html() != "") { $('#searchTermListUl_' + windowviewid).empty(); } $rootScope.a = $scope.GetwindowStoreData(windowviewid, 'primaryLexiconInd'); $scope.vocabArray=$scope.GetwindowStoreData(windowviewid,'vocabTermDataArray'); $scope.sFilter = $("#typedTermName_" + windowviewid).val(); var $e2 = $('
  • ' + '{{item._TermText}}' + '
  • ').appendTo('#searchTermListUl_' + windowviewid) $compile($e2)($scope); $rootScope.isLoading = false; $('#spinner').css('visibility', 'hidden'); } $scope.closeSerachTermListPopUp = function () { var windowviewid = (event.target.parentElement.parentElement.parentElement.id).split("_")[1]; $('#searchedTermListPopUp_' + windowviewid).css('display', 'none'); $('#searchedTermListPopUp_' + windowviewid).css("visibility", "hidden"); } }]) function OnGenderChange(event) { console.log('gender chnaged is called outside '); var scope = angular.element(document.getElementsByClassName("daBodyView")).scope(); scope.$apply(function () { scope.OnGenderChange(event); }); } function OnViewChange(event) { console.log('OnViewChange chnaged is called outside '); var scope = angular.element(document.getElementsByClassName("daBodyView")).scope(); scope.$apply(function () { scope.OnViewChange(event); }); } function OnBodySystemSelection(event) { console.log('OnBodySystem chnaged is called outside '); var scope = angular.element(document.getElementsByClassName("daBodyView")).scope(); scope.$apply(function () { scope.HighlightBodyByBodySystem(event); }); } function enableShowHideStructureBox(event) { console.log('OnBodySystem chnaged is called outside '); var scope = angular.element(document.getElementsByClassName("daBodyView")).scope(); scope.$apply(function () { scope.enableShowHideStructureBox(event); }); } function OnSearch(event) { console.log('Show Search is called outside '); var scope = angular.element(document.getElementsByClassName("daBodyView")).scope(); scope.$apply(function () { var windowviewid = (event.currentTarget.id).split("_")[1]; scope.ShowSearch(windowviewid); }); } function selectTerm(event) { console.log('selectTerm is called outside '); var scope = angular.element(document.getElementsByClassName("daBodyView")).scope(); scope.$apply(function () { scope.jumpToTerm(event); }); } function HighlightBodyOnListManager(event) { console.log('HighlightBodyOnListManager is called outside '); var scope = angular.element(document.getElementsByClassName("daBodyView")).scope(); scope.$apply(function () { scope.HighlightBodyOnListManagerSelection(event); }); } function refreshTermListOnSystem(bodysystemId) { console.log('refreshTermListOnSystem is called outside '); var scope = angular.element(document.getElementsByClassName("daBodyView")).scope(); scope.$apply(function () { scope.refreshTermListOnSystemSelection(bodysystemId); }); } function OnEnableExtract() { console.log('OnEnableExtract is called outside '); var scope = angular.element(document.getElementsByClassName("daBodyView")).scope(); scope.$apply(function () { var windowviewid = (event.currentTarget.id).split("_")[1]; scope.enableExtract('true',windowviewid); }); } function onTboxCreation() { console.log('OnEnableExtract is called outside '); var scope = angular.element(document.getElementsByClassName("daBodyView")).scope(); scope.$apply(function () { var windowviewid = (event.currentTarget.id).split("_")[1]; scope.createTransparencyBox(windowviewid); }); } function onTboxClose() { console.log('onTboxClose is called outside '); var scope = angular.element(document.getElementsByClassName("daBodyView")).scope(); scope.$apply(function () { var windowviewid = (event.currentTarget.id).split("_")[1]; scope.CloseTransparencyBox(windowviewid); }); } function OnEnableNormalMode() { console.log('OnEnableNormalMode is called outside '); var scope = angular.element(document.getElementsByClassName("daBodyView")).scope(); scope.$apply(function () { var windowviewid = (event.currentTarget.id).split("_")[1]; scope.enableNormalMode(windowviewid); }); } function OnEnableHighlight() { console.log('OnEnableHighlight is called outside '); var scope = angular.element(document.getElementsByClassName("daBodyView")).scope(); scope.$apply(function () { var windowviewid = (event.currentTarget.id).split("_")[1]; scope.enableHighlight(windowviewid); }); } function OnIdentifyClick() { console.log('OnIdentifyClick is called outside '); var scope = angular.element(document.getElementsByClassName("daBodyView")).scope(); scope.$apply(function () { var windowviewid = (event.currentTarget.id).split("_")[1]; scope.IdentifyClick(windowviewid); }); } function OnZoom(event) { var scope = angular.element(document.getElementsByClassName("daBodyView")).scope(); scope.DisableUI(); var windowviewid = (event.currentTarget.id).split("_")[1]; if ($(".btn-annotation").hasClass("activebtncolor")) //Bug #14928 $(".btn-annotation").removeClass("activebtncolor"); //Dissectible Anatomy > Extract and Annotations displays apart on the page after click on Zoom-in. $('.com_'+windowviewid).remove(); $('#bord_'+windowviewid).remove(); console.log('OnZoom is called outside '); var scope = angular.element(document.getElementsByClassName("daBodyView")).scope(); scope.$apply(function () { scope.enableZoom(event); }); } function onListManagerTermSelection(id, isTermListOptionClicked) { var scope = angular.element(document.getElementsByClassName("daBodyView")).scope(); scope.$apply(function () { scope.HighlightBodyOnListManagerSelection(id, isTermListOptionClicked,null); }); } function genderChange(event) { event.stopPropagation(); var windowviewid = (event.currentTarget.id).split("_")[1]; $("#structureDropdownDA_" + windowviewid).css("display", "none"); $("#viewChangeIDDA_" + windowviewid).css("display", "none"); $("#genderChangeIdDA_" + windowviewid).toggle(); var $ua = navigator.userAgent; if (($ua.match(/(iPod|iPhone|iPad|android)/i))) { $(".custom-tooltip1").toggle(); } } function viewChange(event) { event.stopPropagation(); var windowviewid = (event.currentTarget.id).split("_")[1]; $("#structureDropdownDA_" + windowviewid).css("display", "none"); $("#genderChangeIdDA_" + windowviewid).css("display", "none"); $("#viewChangeIDDA_" + windowviewid).toggle(); var $ua = navigator.userAgent; if (($ua.match(/(iPod|iPhone|iPad|android)/i))) { $(".custom-tooltip2").toggle(); } } //body highlight options functinality function LoadBodySystemData(event) { var windowviewid = (event.currentTarget.id).split("_")[1]; event.stopPropagation(); $("#structureDropdownDA_" + windowviewid).toggle(); $("#genderChangeIdDA_" + windowviewid).css("display", "none"); $("#viewChangeIDDA_" + windowviewid).css("display", "none"); var $ua = navigator.userAgent; if (($ua.match(/(iPod|iPhone|iPad|android)/i))) { $(".custom-tooltip").toggle(); } }