'use strict'; AIA.controller("TileViewListController", ["$scope", "$window", "$rootScope", "$compile", "$http", "$log", "$location", "$timeout", "DA", "Modules", "$routeParams", "BodyRegions", "BodySystems", "ViewOrientations", "ImageTypes", "DataService", "ModuleService", function ($scope, $window, $rootScope, $compile, $http, $log, $location, $timeout, DA, Modules, $routeParam, BodyRegions, BodySystems, ViewOrientations, ImageTypes, DataService, ModuleService) { $rootScope.OpenedTileData = []; var DISSECTIBLE_ANATOMY = 'Dissectible Anatomy'; var ATLAS_ANATOMY = 'Atlas Anatomy'; var CLINICAL_ILLUSTRATION = 'Clinical Illustrations'; var CLINICAL_ANIMATION = 'Clinical Animations'; $rootScope.closeBtnImgPath = "~/../content/images/speeachBubbleClose.png"; $rootScope.listArray = []; //variables to bind Filter by Controls $scope.searchAAListViewData = []; $scope.SelectedAAthumbImage = []; $scope.SelectedAAImage = []; $scope.SelectedAASummary = []; $scope.SelectedAAId = []; $scope.SelectedAATitle = []; $scope.selectedAAListViewData = []; $scope.filterstring = false; $scope.AllBodyRegion = []; $scope.AllBodySystem = []; $scope.AllOrientation = []; $scope.AllImageType = []; $rootScope.speechBubbleDimaensions = []; $scope.runningSearchWorkers = []; $scope.clickedPins = []; $scope.sliderPercentValue = 1; $scope.query = { selectedbodyregion: '', selectedbodysystem: '', selectedorientation: '', selectedimagetype: '', }; $scope.activePinArray = []; $scope.showTabButton = true; $scope.isListViewDataLoaded = true; $scope.setActiveTab = function (tabToSet) { $scope.activeTab = tabToSet; localStorage.setItem("activeTab", $scope.activeTab); if ($scope.activeTab == 1) { $('#grid-view').css("display", "block"); $('#list-view').css("display", "none"); $("#demoView").remove(); } else { $('#grid-view').css("display", "none"); $('#list-view').css("display", "block"); } }; $scope.loadForModuleById = function (moduleId) { $rootScope.openModules.push({ "ModuleId": 2 }); if ($rootScope.refreshcheck == null) { $location.path('/'); } $scope.moduleId = moduleId; $scope.activeTab = 1; console.log('loadForModuleById is called') $rootScope.moduleName = Modules[moduleId].Name; $rootScope.currentActiveModuleTitle = $rootScope.moduleName; $scope.AllBodyRegion = BodyRegions; $scope.AllBodySystem = BodySystems; $scope.AllOrientation = ViewOrientations; $scope.AllImageType = ImageTypes; var promise = ModuleService.loadModuleDataBasedOnModuleName($scope.moduleName) .then( function (result) { $scope.moduleLandingData = result; // setTimeout(function () { $('#' + $rootScope.highlightid).find('.thumbnail').addClass('hightlightstate'); }, 100); setTimeout(function () { if ($rootScope.getLocalStorageValue('AAGridViewHighlightThumbnail') !== null) { $('#' + $rootScope.getLocalStorageValue("AAGridViewHighlightThumbnail")).find('.thumbnail').addClass('HightLightThumbnail'); } if ($rootScope.getLocalStorageValue('AAGridViewScroll') !== null && $location.url() == "/tile-view-list") { $('html, body').animate({ scrollTop: $rootScope.getLocalStorageValue('AAGridViewScroll') }, 'slow'); } }, 100); //console.log(JSON.stringify(result, null, 4)); }, function (error) { // handle errors here console.log(' error: ' + error.statusText); } ) $('#list-view').css('display', 'none'); } //$scope.$on('$viewContentLoaded', function (event) { // $scope.loadForModuleById(); //}); $scope.isOpenBtnClicked = false; $scope.openModuleItemView = function (event) { $rootScope.MenuModuleName = "AA"; localStorage.setItem("activeTab", $scope.activeTab); //0. Get selected Image Id if ($scope.isListViewButtonClicked == true) { if ($scope.isOpenBtnClicked == true) { var moduleItemDataToBeSaved = $("#demoText").text().trim(); $scope.isOpenBtnClicked = false; } else { var moduleItemDataToBeSavedID = event.currentTarget.id; localStorage.setItem("listViewSelectedID", moduleItemDataToBeSavedID); var moduleItemDataToBeSaved = $("#list-view table tbody #" + moduleItemDataToBeSavedID).find('td:eq(0)').text().trim(); } } else { var moduleItemDataToBeSaved = event.target.id; localStorage.setItem("listViewSelectedID", event.currentTarget.id); $scope.isListViewButtonClicked = false; } //1.Filter selected module ietem data and get the pushed opened moduile array object $rootScope.OpenedTileData = ModuleService.GetOpenedTileData(moduleItemDataToBeSaved, $scope.moduleLandingData); //2. Pick the image name to create a source to open $rootScope.imageId = $rootScope.OpenedTileData[0]; $rootScope.imageName = $rootScope.OpenedTileData[3]; $rootScope.bodySystemName = $rootScope.OpenedTileData[2]; $rootScope.OpenItemImagePath = "../../../content/images/aa/images/" + $rootScope.OpenedTileData[3]; $scope.OpenItemImagePath = "../../../content/images/aa/images/" + $rootScope.OpenedTileData[3]; //$rootScope.listArray = []; $rootScope.listArray.push({ "imageName": $rootScope.OpenItemImagePath, "text": moduleItemDataToBeSaved }); //3. set opened module item ti localStorage.setItem("currentViewTitle", $rootScope.OpenedTileData[6]); localStorage.setItem("AAGridViewScroll", $($window).scrollTop()); localStorage.setItem("AAGridViewHighlightThumbnail", $(event.target).parent().parent().parent().attr('id')); //3. Navigate to the Module-item-view var u = $location.url(); $location.url('/module-item-view'); } $scope.openListViewModuleItem = function (event) { $("#demoView").remove(); var moduleItemDataToBeSavedID = event.currentTarget.id; $("#list-view table tbody tr").removeClass("active"); localStorage.setItem("listViewSelectedID", moduleItemDataToBeSavedID); $("#list-view table tbody #" + moduleItemDataToBeSavedID).addClass("active"); localStorage.setItem("AAListViewScroll", $("#list-view table tbody").scrollTop()); var moduleItemDataToBeSaved = $("#list-view table tbody #" + moduleItemDataToBeSavedID).find('td:eq(0)').text().trim(); $rootScope.OpenedTileData = ModuleService.GetOpenedTileData(moduleItemDataToBeSaved, $scope.moduleLandingData); $rootScope.OpenItemImagePath = "../../../content/images/aa/images/" + $rootScope.OpenedTileData[3]; //$rootScope.listArray = []; $rootScope.listArray.push({ "imageName": $rootScope.OpenItemImagePath, "text": moduleItemDataToBeSaved }); $("#viewList").append("
" + moduleItemDataToBeSaved + "
Open
"); } $scope.openModuleItem = function () { if ($rootScope.refreshcheck == null) { $location.path('/'); } var jsContentURL; var moduleItemViewDivId; //1. create a jsPanel and load the module item view if ($rootScope.moduleName == ATLAS_ANATOMY) { jsContentURL = 'app/views/aa/atlas-anatomy-detail.html'; moduleItemViewDivId = 'aaDetailPageDiv'; } else if ($rootScope.moduleName == CLINICAL_ANIMATION) { //to do, in next phase of project } else if ($rootScope.moduleName == CLINICAL_ILLUSTRATION) { //to do, in next phase of project } //1. create a jsPanel and load the module item view if ($rootScope.moduleName == ATLAS_ANATOMY) { $.jsPanel({ id: 'ImagePanel', selector: '.aaBodyView', theme: 'success', currentController: 'TileViewListController', parentSlug: 'tile-view-list', ajax: { url: jsContentURL }, title: $rootScope.getLocalStorageValue("currentViewTitle"), position: { top: 70, left: 1, }, size: { width: $(window).outerWidth() - 10, height: $(window).outerHeight() - 125 }, }); console.log('jsPanel loaded ImagePanel exist= ' + document.getElementById('ImagePanel')) //0.3 var aaViewElement = angular.element(document.getElementById(moduleItemViewDivId)); //0.4 for Opening module item, load it into image $rootScope.isLoading = true; $('#spinner').css('visibility', 'visible'); var openedImage = new Image(); openedImage.id = 'modItemImage'; openedImage.name = $rootScope.OpenItemImagePath; openedImage.onload = function () { $scope.imageWidth = this.width; $scope.imageHeight = this.height; $timeout(function () { $compile(aaViewElement.contents())($scope); //if (document.getElementById('aaDetailPageDiv') != null) { if (document.getElementById('aaBodyView') != null) { //0.4 added some stylesheets $('#aaBodyView').css("height", $(window).outerHeight() - 65); $('#aaBodyView').css("width", $(window).outerWidth() - 15); $rootScope.canvasDivHeight = $('.jsPanel-content').height() - $('.main2 .stickey-area').height(); $('.canvasDivClass').css("height", $rootScope.canvasDivHeight); $scope.currentTitleFromJson = $rootScope.getLocalStorageValue("currentViewTitle"); $("#modItemImage").attr('src', $rootScope.OpenItemImagePath); $rootScope.ViewImageWidth = $("#modItemImage").width(); $scope.ViewImageWidth = $("#modItemImage").width(); $scope.ViewImageHeight = $("#modItemImage").height(); $scope.relativeDimesion = 0; $("#modItemImage").css("width", $rootScope.ViewImageWidth + "px"); //0.5 create canvas on the top of image so that I can draw a line over the canvas. var canvas = document.createElement('canvas'); canvas.id = 'aaDetailViewCanvas'; canvas.className = '.aaCanvas' canvas.height = parseInt(($scope.imageHeight)); canvas.width = parseInt($scope.imageWidth); canvas.style.left = '0px'; canvas.style.top = '0px'; canvas.style.position = "absolute"; $("#canvasDiv").append(canvas); $scope.context = canvas.getContext("2d") //6. Show all pins on AA opened item $scope.showAllPins(); //7. Highlight all system body list in left side $scope.highlightBodySystemList(); } }, 500); } openedImage.onerror = loadFailure; openedImage.src = $rootScope.OpenItemImagePath; } } $scope.highlightBodySystemList = function () { $rootScope.bodySystemNames = $rootScope.bodySystemName.trim().split(/\s*,\s*/); var bodySystemListObj = document.getElementById("bodySystemList").getElementsByTagName("a"); var bodySystemListlength = bodySystemListObj.length; for (var i = 0; i < bodySystemListlength; i++) { //var boldTag = lis[i]; for (var j = 0; j < $rootScope.bodySystemNames.length; j++) { if ((bodySystemListObj[i].innerHTML) == ($rootScope.bodySystemNames[j])) { $("#" + i).parent().removeClass("disabledSelectedSystem"); } } } } function loadFailure() { console.log('unable to load opened module ietem'); return true; } angular.element(document).ready(function (e) { $("#ImagePanel").resize(function () { $("#canvasDiv").scrollLeft($rootScope.CanvasDivLeftPosition); $("#canvasDiv").scrollTop($rootScope.CanvasDivTopPosition); }); $(document).on("click", "#ImagePanel .jsPanel-hdr .jsPanel-hdr-r .jsPanel-btn-close .jsglyph-remove", function () { $scope.setActiveTab(parseInt($rootScope.getLocalStorageValue("activeTab"))); $(".tools").css("z-index", "15000"); $rootScope.selectedBodySystemName = 'All'; $rootScope.selectedBodySystemId = 0; $rootScope.searchSelectedText = ''; }); $(document).on("click", "#dvPrintPreview .jsPanel-hdr .jsPanel-hdr-r .jsPanel-btn-close .jsglyph-remove", function () { if ($rootScope.isShowAllPinBtnActiveInPrintPreviewMode == true) { $("#allPinBtn").trigger("click"); $rootScope.isShowAllPinBtnActiveInPrintPreviewMode = false; } if ($rootScope.isHidePinBtnActiveInPrintPreview == true) { $("#hidePinBtn").trigger("click"); $rootScope.isHidePinBtnActiveInPrintPreview = false; } if($rootScope.isShowSelectedPinActiveInPrintPrevMode == true) { $("#selectedPin").trigger("click"); $rootScope.isShowSelectedPinActiveInPrintPrevMode = false; } }); }) $rootScope.aaPinDataArray = []; $scope.showAllPins = function () { $scope.allPinDataArray = []; var promise = ModuleService.getPinDataForImage($rootScope.imageName) .then( function (result) { //load navigator image if (result.data.Root._NavigatorImage != undefined) { document.getElementById('navimg').src = '~/../content/images/aa/images/navigator/' + result.data.Root._NavigatorImage; } else { document.getElementById('navimg').style.visibility = 'hidden'; document.getElementById('navigatorBtn').style.visibility = 'hidden'; document.getElementById('navigatorDiv').style.visibility = 'hidden'; } //draw pins $scope.aaPinData = result.data.Root.Item; if ($scope.aaPinData != null && $scope.aaPinData.length > 0) { $rootScope.aaPinDataArray = $scope.aaPinData angular.forEach($scope.aaPinData, function (value, key) { $scope.allPinDataArray.push(value._PinId); $scope.drawStaticPinsOnImage('aaDetailViewCanvas', value._PinId, value._PinX, value._PinY, value._HeadX, value._HeadY) }) //load search/vocab data $rootScope.loadSearchData(); } }, function (error) { console.log(' error in showAllPins: ' + error.statusText); } ) if ($scope.isSliderChange == true) { $timeout(function () { $scope.activePinOnLayerChange(); }, 1000); } } $scope.FilterByImage = function (moduleId, query) { $scope.moduleId = moduleId; $scope.filterstring = true; console.log('loadForModuleById is called'); $rootScope.moduleName = Modules[moduleId].Name; while ($scope.searchAAListViewData.length) { $scope.searchAAListViewData.pop(); } var filtercount = 0; if (typeof (query.selectedbodyregion) !== "undefined" && (query.selectedbodyregion !== null && query.selectedbodyregion !== "")) { filtercount = filtercount + 1; localStorage.setItem("CurrentBodyRegion", query.selectedbodyregion); } else { localStorage.setItem("CurrentBodyRegion", ''); } if (typeof (query.selectedbodysystem) !== "undefined" && (query.selectedbodysystem !== null && query.selectedbodysystem !== "")) { filtercount = filtercount + 1; localStorage.setItem("CurrentBodySystem", query.selectedbodysystem); } else { localStorage.setItem("CurrentBodySystem", ''); } if (typeof (query.selectedorientation) !== "undefined" && (query.selectedorientation !== null && query.selectedorientation !== '')) { filtercount = filtercount + 1; localStorage.setItem("CurrentOrientation", query.selectedorientation); } else { localStorage.setItem("CurrentOrientation", ''); } if (typeof (query.selectedimagetype) !== "undefined" && (query.selectedimagetype !== null && query.selectedimagetype !== '')) { filtercount = filtercount + 1; localStorage.setItem("CurrentImageType", query.selectedimagetype); } else { localStorage.setItem("CurrentImageType", ''); } var promise = ModuleService.loadModuleDataBasedOnModuleName($scope.moduleName) .then( function (result) { // alert(JSON.stringify($scope.moduleLandingData)); $scope.moduleLandingData = result; $scope.selectedAAListViewData = new jinqJs() .from($scope.moduleLandingData.data.root.Item) .orderBy([{ field: '_Title', sort: 'asc' }]) .select(); $('#grid-view').empty(); //alert(JSON.stringify($scope.selectedAAListViewData)) angular.forEach($scope.selectedAAListViewData, function (value, key) { var selectimg = true; var count = 0; if (typeof (query.selectedbodyregion) !== "undefined" && (query.selectedbodyregion !== null && query.selectedbodyregion !== "")) { var posbodyregion = value._BodyRegion.indexOf((query.selectedbodyregion.trim())); if (posbodyregion > -1) { selectimg = true; count = count + 1; } else { selectimg = false; count = count - 1; } } if (typeof (query.selectedbodysystem) !== "undefined" && (query.selectedbodysystem !== null && query.selectedbodysystem !== "")) { var posbodysystem = value._BodySystem.indexOf(query.selectedbodysystem); if (posbodysystem > -1) { count = count + 1; selectimg = true; } else { selectimg = false; count = count - 1; } } if (typeof (query.selectedorientation) !== "undefined" && (query.selectedorientation !== null && query.selectedorientation !== "")) { var posorientation = value._ViewOrientation.indexOf(query.selectedorientation); if (posorientation > -1) { count = count + 1; selectimg = true; } else { selectimg = false; count = count - 1; } } if (typeof (query.selectedimagetype) !== "undefined" && (query.selectedimagetype !== null && query.selectedimagetype !== "")) { var posimagetype = value._ImageType.indexOf(query.selectedimagetype); if (posimagetype > -1) { count = count + 1; selectimg = true; } else { selectimg = false; count = count - 1; } } if (selectimg === true && count >= filtercount) { $scope.imagePath = "../content/images/aa/thumbnails/" + value._TileImageName; var $el = $('
' + '
' + '' + '

' + value._Title + '

').appendTo('#grid-view'); $compile($el)($scope); $(".sidebar").mCustomScrollbar({ autoHideScrollbar: true, //theme:"rounded" }); $scope.searchAAListViewData.push( { "_Id": value._Id, "_ImageId": value._ImageId, "_Title": value._Title, "_ImageName": value._contentImage, "_TileImageName": value._ThumbnailImage, "_BodySystem": value._BodySystem, "_BodyRegion": value._BodyRegion, "_ViewOrientation": value._ViewOrientation, "_ImageType": value._ImageType //"$$hashKey": value._Summary }); console.log($scope.searchAAListViewData); if ($('#searchItem').length > 0) $('#searchItem').remove(); } }); //Show Error Message in case of gridview/ ListView [if no data is found] if ($scope.searchAAListViewData.length == 0) { var $el = $('
No illustration found for the selected search criteria!
').appendTo('#grid-view'); $compile($el)($scope); $('table > #ListViewDiv > #searchItem').remove(); $('#ListViewDiv').append('No illustration found for the selected search criteria!'); } //console.log(JSON.stringify(result, null, 4)); console.log('SearchAAListViewData--' + $scope.searchAAListViewData); }, function (error) { // handle errors here console.log(' error: ' + error.statusText); } ) } $scope.Reset = function (moduleId, query) { query.selectedbodyregion = ""; query.selectedbodysystem = ""; query.selectedorientation = ""; query.selectedimagetype = ""; query.selectedspecialty = ""; //set localstorage values localStorage.setItem("CurrentBodyRegion", ''); localStorage.setItem("CurrentBodySystem", ''); localStorage.setItem("CurrentOrientation", ''); localStorage.setItem("CurrentImageType", ''); //localStorage.setItem("CISelectedRowId", ""); //localStorage.setItem("CIListViewScroll", ''); if ($('.selected').hasClass("selected")) { $('.selected').removeClass("selected"); } $('#ListViewDiv').scrollTop(0); if ($('#demoView').length > 0) $('#demoView').remove(); // $scope.HideListViewDiv(); $scope.filterstring = false; //while ($scope.searchCIListViewData.length) { // $scope.searchCIListViewData.pop(); //} $scope.FilterByImage(1, query); } $scope.showSelectedSystemPins = function (event) { var bodySystemListObj = document.getElementById("bodySystemList").getElementsByTagName("a"); var bodySystemListlength = bodySystemListObj.length; for (var i = 0; i < bodySystemListlength; i++) { $("#" + i).parent().removeClass("activeAASystemSelect"); } $("#" + event.currentTarget.id).parent().addClass("activeAASystemSelect"); $rootScope.isLoading = true; $('#spinner').css('visibility', 'visible'); $scope.removeSpeechBubble(); if (event.currentTarget.id == "0") { $scope.selectedSystemName = null; if ($scope.isHidePinBtnClicked) { // $scope.showAllPinsAfterHide($scope.aaPinData); $scope.showAllPinsAfterHide(); } else { $scope.showAllPins(); } } else { $scope.selectedSystemName = event.currentTarget.title; // get termText info var promise = ModuleService.getTermTextDataForPin($scope.moduleName) .then( function (response) { $scope.TermInfo = response.data.Terms.Term; //on gettng all required data, draw pins if ($scope.aaPinData != null && $scope.aaPinData.length > 0) { $scope.selectedSystemPinData = new jinqJs() .from($scope.aaPinData) .where("_BodySystemName == " + $scope.selectedSystemName) .select(); if ($scope.isHidePinBtnClicked) { // $scope.showAllPinsAfterHide($scope.selectedSystemPinData); $scope.showAllPinsAfterHide(); } else { //remove other system pins if ($scope.selectedSystemPinData != null && $scope.selectedSystemPinData.length > 0) { angular.forEach($scope.aaPinData, function (aaPinDataValue, aaPinDataKey) { if (aaPinDataValue._BodySystemName != $scope.selectedSystemName) $scope.removePin('aaDetailViewCanvas', aaPinDataValue._PinId); }) angular.forEach($scope.selectedSystemPinData, function (value, key) { $scope.drawStaticPinsOnImage('aaDetailViewCanvas', value._PinId, value._PinX, value._PinY, value._HeadX, value._HeadY) }) //show annotation on first pin of the sysyem $scope.showAnnotation($scope.selectedSystemPinData, false, false, false); } } } }, function (error) { // handle errors here console.log(' error: ' + error.statusText); } ) } } $scope.showAnnotation = function (selectedPinData, isCtrlPressed, isPinClicked, isItemSearched) { $scope.clickedPins = []; $scope.selectedPin = []; var isSameTermWithMultiPin = false; var firstPinId = selectedPinData[0]._PinId; var pinTermNumber = selectedPinData[0]._TermId; //check if other pin have same termNumber if ($scope.aaPinData != null && $scope.aaPinData.length > 0) { var pinDataWithFirstTermNumber = new jinqJs() .from($scope.aaPinData) .where("_TermId == " + pinTermNumber) .select(); $scope.MultiLanguageAnnationArray = []; $scope.GetAnnotationBasedOnActualTermNo(pinTermNumber); if (isCtrlPressed) { } else { if (isPinClicked || isItemSearched) { var existingSpeechBubble = $("div[id*='speechBubble']"); for (var i = 0; i < existingSpeechBubble.length; i++) { existingSpeechBubble[i].parentNode.removeChild(existingSpeechBubble[i]); //make all pin heads grey var radial = $('#aaDetailViewCanvas').createGradient({ x1: 50, y1: 50, x2: 50, y2: 50, r1: 10, r2: 30, c1: 'rgba(100, 50, 0,0)', c2: 'rgb(216, 216, 216)' }); $('#aaDetailViewCanvas').setLayers({ fillStyle: radial, }).drawLayers(); } var existingSpeechBubbleLine = $("div[id*='speechBubbleLine']"); for (var i = 0; i < existingSpeechBubbleLine.length; i++) { existingSpeechBubbleLine[i].parentNode.removeChild(existingSpeechBubbleLine[i]); } var speechBubbleDraggedLine = $("div[id*='speechBubbleDraggedLine']"); for (var i = 0; i < speechBubbleDraggedLine.length; i++) { speechBubbleDraggedLine[i].parentNode.removeChild(speechBubbleDraggedLine[i]); } } } if (pinDataWithFirstTermNumber.length > 1) { isSameTermWithMultiPin = true; } angular.forEach(pinDataWithFirstTermNumber, function (value, key) { $scope.selectedPin.push(value._PinId); $scope.clickedPins.push({ 'id': value._PinId }); var headX = (parseInt(value._HeadX)); var headY = (parseInt(value._HeadY)); $scope.createSpeechBubble(parseInt(headX) + 10, parseInt(headY) + 10, value._PinId, isCtrlPressed, isPinClicked, isSameTermWithMultiPin); }) } $rootScope.isLoading = false; $('#spinner').css('visibility', 'hidden'); // $scope.MultiLanguageAnnationArray.push($rootScope.annotationText[i]) } $scope.removeSpeechBubble = function () { //clear speech bubbles var speechBubbles = $("div[id*='speechBubble']"); if (speechBubbles != null || speechBubbles != undefined && speechBubbles.length > 0) { for (var j = 0; j < speechBubbles.length; j++) { speechBubbles[j].parentNode.removeChild(speechBubbles[j]); } } var speechBubbleLines = $("div[id*='speechBubbleLine']"); if (speechBubbleLines != null || speechBubbleLines != undefined && speechBubbleLines.length > 0) { for (var j = 0; j < speechBubbleLines.length; j++) { speechBubbleLines[j].parentNode.removeChild(speechBubbleLines[j]); } } var speechBubbleDraggedLines = $("div[id*='speechBubbleDraggedLine']"); if (speechBubbleDraggedLines != null || speechBubbleDraggedLines != undefined && speechBubbleDraggedLines.length > 0) { for (var j = 0; j < speechBubbleDraggedLines.length; j++) { speechBubbleDraggedLines[j].parentNode.removeChild(speechBubbleDraggedLines[j]); } } }; $scope.showSpeechBubble = function () { //clear speech bubbles var speechBubbles = $("div[id*='speechBubble']"); if (speechBubbles != null || speechBubbles != undefined && speechBubbles.length > 0) { for (var j = 0; j < speechBubbles.length; j++) { document.getElementById(speechBubbles[j].id).style.visibility = 'visible'; } } var speechBubbleLines = $("div[id*='speechBubbleLine']"); if (speechBubbleLines != null || speechBubbleLines != undefined && speechBubbleLines.length > 0) { for (var j = 0; j < speechBubbleLines.length; j++) { document.getElementById(speechBubbleLines[j].id).style.visibility = 'visible'; } } var speechBubbleDraggedLines = $("div[id*='speechBubbleDraggedLine']"); if (speechBubbleDraggedLines != null || speechBubbleDraggedLines != undefined && speechBubbleDraggedLines.length > 0) { for (var j = 0; j < speechBubbleDraggedLines.length; j++) { document.getElementById(speechBubbleDraggedLines[j].id).style.visibility = 'visible'; } } }; $scope.hideSpeechBubble = function () { //clear speech bubbles var speechBubbles = $("div[id*='speechBubble']"); if (speechBubbles != null || speechBubbles != undefined && speechBubbles.length > 0) { for (var j = 0; j < speechBubbles.length; j++) { document.getElementById(speechBubbles[j].id).style.visibility = 'hidden'; } } var speechBubbleLines = $("div[id*='speechBubbleLine']"); if (speechBubbleLines != null || speechBubbleLines != undefined && speechBubbleLines.length > 0) { for (var j = 0; j < speechBubbleLines.length; j++) { document.getElementById(speechBubbleLines[j].id).style.visibility = 'hidden'; } } var speechBubbleDraggedLines = $("div[id*='speechBubbleDraggedLine']"); if (speechBubbleDraggedLines != null || speechBubbleDraggedLines != undefined && speechBubbleDraggedLines.length > 0) { for (var j = 0; j < speechBubbleDraggedLines.length; j++) { document.getElementById(speechBubbleDraggedLines[j].id).style.visibility = 'hidden'; } } }; $scope.createSpeechBubble = function (x, y, PinId, isCtrlPressed, isPinClicked, isSameTermWithMultiPin) { $scope.longestAnnotation = $scope.MultiLanguageAnnationArray.reduce(function (firstAnnotation, seconAnnotation) { return firstAnnotation.length > seconAnnotation.length ? firstAnnotation : seconAnnotation; }); $scope.createSpeechBubbleBasedOnAnnotationLength(x, y, PinId); $('#speechBubble').draggable( { drag: function (evt) { $("#dot").css("visibility", "hidden"); var verticalScrollPosition = canvasDiv.scrollTop; var horizontlScrollPosition = canvasDiv.scrollLeft; $scope.angle(x * $scope.sliderPercentValue, y * $scope.sliderPercentValue, evt.pageX + horizontlScrollPosition - $('#canvasDiv').offset().left, evt.pageY + verticalScrollPosition - $('#canvasDiv').offset().top, true); }, }); } $scope.sliderVal = 100; $scope.createSpeechBubbleBasedOnAnnotationLength = function (x, y, PinId) { x = x * $scope.sliderPercentValue; y = y * $scope.sliderPercentValue; var speechBubbleHTML = '' + '
' + '' + '
' + ''; //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 { $('#canvasDiv').append(speechBubbleHTML); if ($scope.MultiLanguageAnnationArray.length > 0) { for (var i = 0; i <= $scope.MultiLanguageAnnationArray.length - 1; i++) { var MultipleLanguage = $scope.MultiLanguageAnnationArray[i]; $rootScope.clickedPinAnnotation = $scope.MultiLanguageAnnationArray[0]; $("#speechBubble" + PinId).append("

" + MultipleLanguage + "

"); } } else { console.log('MultiLanguageAnnationArray.length is :' + $scope.MultiLanguageAnnationArray.length) } if ($scope.longestAnnotation != null || $scope.longestAnnotation != undefined) { if ($scope.longestAnnotation.length <= 10) { $("#speechBubble").css("width", "100px"); } else if ($scope.longestAnnotation.length > 10 && $scope.longestAnnotation.length <= 17) { $("#speechBubble").css("width", "140px"); } else if ($scope.longestAnnotation.length > 17 && $scope.longestAnnotation.length <= 26) { $("#speechBubble").css("width", "195px"); } else if ($scope.longestAnnotation.length > 26 && $scope.longestAnnotation.length <= 34) { $("#speechBubble").css("width", "248px"); } else if ($scope.longestAnnotation.length > 34 && $scope.longestAnnotation.length <= 44) { $("#speechBubble").css("width", "300px"); } else if ($scope.longestAnnotation.length > 44 && $scope.longestAnnotation.length <= 54) { $("#speechBubble").css("width", "370px"); } else if ($scope.longestAnnotation.length > 54 && $scope.longestAnnotation.length <= 69) { $("#speechBubble").css("width", "450px"); } else if ($scope.longestAnnotation.length > 69 && $scope.longestAnnotation.length <= 75) { $("#speechBubble").css("width", "510px"); } else { $("#speechBubble").css("width", ($scope.longestAnnotation.length) + "%"); } } } var speechBubbleDims = []; $rootScope.speechBubbleDimaensions.push({ "currentX": x, "currentY": y, "id": PinId }); speechBubbleDims.push({ currentX: x, currentY: y }); document.getElementById('speechBubbleLine' + PinId + '').style.display = 'block'; document.getElementById('speechBubbleLine' + PinId + '').style.left = ((speechBubbleDims[0].currentX - 12)) + 'px'; if ($scope.sliderVal == 25) { document.getElementById('speechBubbleLine' + PinId + '').style.top = ((speechBubbleDims[0].currentY + 5)) + 'px'; } else { document.getElementById('speechBubbleLine' + PinId + '').style.top = ((speechBubbleDims[0].currentY)) + 'px'; } document.getElementById('speechBubble' + PinId + '').style.display = 'block'; document.getElementById('speechBubble' + PinId + '').style.left = (speechBubbleDims[0].currentX - 4) + 'px'; document.getElementById('speechBubble' + PinId + '').style.top = (speechBubbleDims[0].currentY) + 'px'; $('.common-drag').draggable( { drag: function (evt) { var verticalScrollPosition = document.getElementById('canvasDiv').scrollTop; var horizontlScrollPosition = document.getElementById('canvasDiv').scrollLeft; var clickedSpeechBubbleId = $(this).attr("id"); var clickedPinId = clickedSpeechBubbleId.substring(12, clickedSpeechBubbleId.length); $("#speechBubbleLine" + clickedPinId).css("visibility", "hidden"); $("#speechBubbleLine" + clickedPinId).css("display", "none"); for (var i = 0; i <= $rootScope.speechBubbleDimaensions.length - 1; i++) { if ($rootScope.speechBubbleDimaensions[i].id == clickedPinId) { $scope.angle(clickedPinId, $rootScope.speechBubbleDimaensions[i].currentX, $rootScope.speechBubbleDimaensions[i].currentY, evt.pageX + horizontlScrollPosition - $('#canvasDiv').offset().left, evt.pageY + verticalScrollPosition - $('#canvasDiv').offset().top, true); } } }, }); $('.crossDiv_temp').on('click', function (evt) { var imgId = $(this).attr("id"); var pinId = imgId.substring(8, imgId.length); $('#speechBubble' + pinId).remove(); $("#speechBubbleDraggedLine" + pinId).remove(); $("#speechBubbleLine" + pinId).remove(); //make all pin heads grey var pinHeadName = 'PinArc_' + pinId; var radial = $('#aaDetailViewCanvas').createGradient({ x1: 50, y1: 50, x2: 50, y2: 50, r1: 10, r2: 30, c1: 'rgba(100, 50, 0,0)', c2: 'rgb(216, 216, 216)' }); $('#aaDetailViewCanvas').setLayer(pinHeadName, { fillStyle: radial, }).drawLayers(); }); //make the head green var radialAfterClick = $('#aaDetailViewCanvas').createGradient({ x1: 50, y1: 50, x2: 50, y2: 50, r1: 10, r2: 30, c1: 'rgba(100, 50, 0,0)', c2: 'rgb(126, 187, 83)' }); var pinHeadName = 'PinArc_' + PinId; var pin = $('#aaDetailViewCanvas').getLayer(pinHeadName); // pin.fillStyle = radialAfterClick; $('#aaDetailViewCanvas').setLayer(pinHeadName, { fillStyle: radialAfterClick, }).drawLayers(); } $scope.angle = function (id, cx, cy, ex, ey, BoolValues) { 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) { if ($scope.sliderVal == 40) { $("#speechBubbleDraggedLine" + id).css({ 'display': 'block', 'width': d + 'px', 'top': (e - 5) + 'px', 'left': (f - 5) + 'px', 'transform': 'rotate(' + theta + 'deg)', '-moz-transform': 'rotate(' + theta + 'deg)', '-webkit-transform': 'rotate(' + theta + 'deg)', 'transform-origin': '0% 0%' }); } else if ($scope.sliderVal == 25) { $("#speechBubbleDraggedLine" + id).css({ 'display': 'block', 'width': d + 'px', 'top': (e - 2) + 'px', 'left': (f - 2) + 'px', 'transform': 'rotate(' + theta + 'deg)', '-moz-transform': 'rotate(' + theta + 'deg)', '-webkit-transform': 'rotate(' + theta + 'deg)', 'transform-origin': '0% 0%' }); } else { $("#speechBubbleDraggedLine" + id).css({ 'display': 'block', 'width': d + 'px', 'top': (e - 10) + 'px', 'left': (f - 5) + 'px', 'transform': 'rotate(' + theta + 'deg)', '-moz-transform': 'rotate(' + theta + 'deg)', '-webkit-transform': 'rotate(' + theta + 'deg)', 'transform-origin': '0% 0%' }); } } else { $("#bord_annotation").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.drawStaticPinsOnImage = function (canvasId, PinId, offsetX1, offsetY1, x, y) { $scope.clickedPins = []; // if ($scope.isSliderChange == true) { console.log('isSliderrChange') var radial = $('#' + canvasId).createGradient({ x1: 50, y1: 50, x2: 50, y2: 50, r1: 10, r2: 30, c1: 'rgba(100, 50, 0,0)', c2: 'rgb(216, 216, 216)' }); $('#' + canvasId).drawLine({ layer: true, name: "Pin_" + PinId, groups: ["Pin_" + PinId], strokeStyle: '#565656', strokeWidth: 2, visible: true, x1: offsetX1 * $scope.sliderPercentValue, y1: offsetY1 * $scope.sliderPercentValue, x2: x * $scope.sliderPercentValue, y2: y * $scope.sliderPercentValue, }).drawArc({ name: "PinArc_" + PinId, layer: true, groups: ["Pin_" + PinId], strokeStyle: 'grey', strokeWidth: 2, visible: true, fillStyle: radial, x: x * $scope.sliderPercentValue, y: y * $scope.sliderPercentValue, radius: 5 * $scope.sliderPercentValue, click: function (clickedPin) { if (clickedPin.event.ctrlKey == false) { $scope.clickedPins = []; } var pinID = (clickedPin.name).substring(7, (clickedPin.name).length); var pinData = new jinqJs() .from($scope.aaPinData) .where("_PinId == " + pinID) .select(); var pinTermNumber = pinData[0]._TermId; var pinWithSameTerm = new jinqJs() .from($scope.aaPinData) .where("_TermId == " + pinTermNumber) .select(); if (pinWithSameTerm != undefined && pinWithSameTerm != null && pinWithSameTerm.length > 0) { for (var i = 0; i < pinWithSameTerm.length; i++) { $scope.clickedPins.push({ 'id': pinWithSameTerm[i]._PinId }) } } $scope.isSelectedPinBtnClickedAftrSliderCange = false; var selectedPinData = new jinqJs() .from($scope.aaPinData) .where("_PinId == " + pinID) .select(); if (clickedPin.event.ctrlKey == true) { $scope.activePinArray.push(clickedPin.name); var radialAfterClick = $('#aaDetailViewCanvas').createGradient({ x1: 50, y1: 50, x2: 50, y2: 50, r1: 10, r2: 30, c1: 'rgba(100, 50, 0,0)', c2: 'rgb(126, 187, 83)' }); clickedPin.fillStyle = radialAfterClick; $scope.showAnnotation(selectedPinData, true, true, false); } else { $scope.activePinArray = []; $scope.activePinArray.push(clickedPin.name); var radial = $('#aaDetailViewCanvas').createGradient({ x1: 50, y1: 50, x2: 50, y2: 50, r1: 10, r2: 30, c1: 'rgba(100, 50, 0,0)', c2: 'rgb(216, 216, 216)' }); $('#aaDetailViewCanvas').setLayers({ fillStyle: radial, }).drawLayers(); //change the head color to green var radialAfterClick = $('#aaDetailViewCanvas').createGradient({ x1: 50, y1: 50, x2: 50, y2: 50, r1: 10, r2: 30, c1: 'rgba(100, 50, 0,0)', c2: 'rgb(126, 187, 83)' }); clickedPin.fillStyle = radialAfterClick; $scope.showAnnotation(selectedPinData, false, true, false); } } }).drawLayers(); } $scope.getMousePos = function (evt) { return { x: Math.round(evt.pageX - $('#canvasDiv').offset().left), y: Math.round(evt.pageY - $('#canvasDiv').offset().top) } } $scope.removePin = function (canvasId, pinId) { var pinName = 'Pin_' + pinId; var pinArcName = 'PinArc_' + pinId; $('#' + canvasId).removeLayer(pinName).drawLayers(); $('#' + canvasId).removeLayer(pinArcName).drawLayers(); $scope.removeSpeechBubble(); //$rootScope.isSliderChanged = true; //$('#aaDetailViewCanvas').removeLayers(); } $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(); }); $rootScope.loadSearchData = function () { //$("#termList").find("option").css({ "background-color": "#ffffff", "color": "#000000" }); var imageId = $rootScope.imageId; var promise = ModuleService.getTermTextDataForAAImage(imageId) .then( function (response) { $scope.AAPinTermData = response.data.PinTermData.TermData; $rootScope.isLoading = false; $('#setting-spinner').css('visibility', 'hidden'); $scope.pinTermData = []; var primaryLexicon = $rootScope.lexiconLanguageArray[0].id; $scope.matchedLanguageTermData = new jinqJs() .from($scope.AAPinTermData) .where('_LanguageId == ' + primaryLexicon) .select(); var sortedTermTextArray = []; for (var i = 0; i < $scope.matchedLanguageTermData.length; i++) { sortedTermTextArray.push($scope.matchedLanguageTermData[i]._TermText); sortedTermTextArray.sort(); } for (var i = 0; i <= sortedTermTextArray.length - 1; i++) { for (var j = 0; j <= $scope.matchedLanguageTermData.length - 1; j++) { if ($scope.matchedLanguageTermData[j]._TermText == sortedTermTextArray[i]) { $scope.pinTermData.push({ "LanguageId": $scope.matchedLanguageTermData[j]._LanguageId, "TermNumber": $scope.matchedLanguageTermData[j]._TermNumber, "TermTxt": $scope.matchedLanguageTermData[j]._TermText }); break; } } } $scope.$watch('$scope.pinTermData', function (newValue, oldValue, scope) { if (($('#termlistfilter').html() != "")) $('#termlistfilter').empty(); if ($scope.pinTermData.length > 0) { $timeout(function () { console.log('pinTermData= ' + $scope.pinTermData.length); $('#termList').empty(); $('#termlistfilter').empty(); for (var j = 0; j < $scope.pinTermData.length; j++) { var $el = $('
  • ' + $scope.pinTermData[j].TermTxt + '
  • ').appendTo('#termlistfilter') //var $el = $('
  • ' + $scope.pinTermData[j].TermTxt + '
  • ').appendTo('#termlistfilter') $compile($el)($scope); var $selectedOptions = $('').appendTo("#termList") $compile($selectedOptions)($scope); $("#AABodySystems").empty(); $("#bodySystems").css("display", "none"); $("#AABodySystems").css("display", "block"); $("#bodySystemList li a").each(function (key, value) { var $systemOptions = $('').appendTo("#AABodySystems") $compile($systemOptions)($scope); }); } }, 500); } }) }, function (error) { // handle errors here console.log(' error: ' + error.statusText); } ) } $scope.$on('listManagerEvent', function (event, data) { $("#viewName").empty(); var currentView = $rootScope.getLocalStorageValue("currentViewTitle"); var viewNmeHtml = '' $('#viewName').append(viewNmeHtml); //$("#viewName").append(""); $rootScope.isLoading = false; $('#spinner').css('visibility', 'hidden'); if ($rootScope.bodySystemSeletedId == null) { $rootScope.loadSearchData(); } else { $rootScope.refreshTermListOnAASystemSelection($rootScope.bodySystemSeletedId); } $timeout(function () { $("#totalTerms").empty(); $("#totalTerms").html("" + $("#termList option").length + " Structures"); }, 1000); }); $rootScope.refreshTermListOnAASystemSelection = function (bodySystemId) { $rootScope.bodySystemSeletedId = bodySystemId; $('#termList').empty(); var bodySystemName = $("#AABodySystems #" + bodySystemId).val(); if (bodySystemName == "All") { for (var j = 0; j <= $scope.pinTermData.length - 1; j++) { var $selectedOptions = $('').appendTo("#termList") $compile($selectedOptions)($scope); } $("#totalTerms").empty(); $("#totalTerms").html("" + $("#termList option").length + " Structures"); } else { var imageId = $rootScope.imageId; $scope.pinDataUrl = "aa_dat_pinterm_" + imageId; $rootScope.bodySystemTermArray = []; $rootScope.sortedListArray = []; $rootScope.duplicateListArray = []; $.ajax({ url: '~/../content/data/json/aa/aa_pinterm/' + $scope.pinDataUrl + '.json', type: 'GET', dataType: "json", async: false, success: function (result) { $(result.PinTermData.TermData).each(function (key, value) { $rootScope.bodySystemTermArray.push({ "termNumbr": result.PinTermData.TermData[key]._TermNumber, "text": result.PinTermData.TermData[key]._TermText, "language": result.PinTermData.TermData[key]._LanguageId }); }); for (var i = 0; i <= $scope.aaPinData.length - 1; i++) { if ($scope.aaPinData[i]._BodySystemName.toLowerCase() == bodySystemName.toLowerCase()) { for (var j = 0 ; j <= $rootScope.bodySystemTermArray.length - 1; j++) { if ($scope.aaPinData[i]._TermId == $rootScope.bodySystemTermArray[j].termNumbr) { if ($rootScope.bodySystemTermArray[j].language == $rootScope.lexiconLanguageArray[0].id) { console.log($rootScope.bodySystemTermArray[j].text); $rootScope.duplicateListArray.push({ "title": $rootScope.bodySystemTermArray[j].text, "id": $rootScope.bodySystemTermArray[j].termNumbr }); } } } } } var temp = []; for (var i = 0; i <= $rootScope.duplicateListArray.length - 1; i++) { var termID = $rootScope.duplicateListArray[i].id; if ($.inArray(termID, temp) == -1) { temp.push(termID); $rootScope.sortedListArray.push({ "title": $rootScope.duplicateListArray[i].title, "id": termID }); } } for (var i = 0; i <= $rootScope.sortedListArray.length - 1; i++) { for (j = i + 1; j <= $rootScope.sortedListArray.length - 1; j++) { if ($rootScope.sortedListArray[i].title.substr(0, 1) > $rootScope.sortedListArray[j].title.substr(0, 1)) { var termText = $rootScope.sortedListArray[i].title; var termNumbr = $rootScope.sortedListArray[i].termNumbr; var termLanguage = $rootScope.sortedListArray[i].language; $rootScope.sortedListArray[i].title = $rootScope.sortedListArray[j].title; $rootScope.sortedListArray[i].termNumbr = $rootScope.sortedListArray[j].termNumbr; $rootScope.sortedListArray[i].language = $rootScope.sortedListArray[j].language; $rootScope.sortedListArray[j].title = termText; $rootScope.sortedListArray[j].termNumbr = termNumbr; $rootScope.sortedListArray[j].language = termLanguage; } } } for (var j = 0; j <= $rootScope.sortedListArray.length - 1; j++) { var $selectedOptions = $('').appendTo("#termList") $compile($selectedOptions)($scope); } } }); $("#totalTerms").empty(); $("#totalTerms").html("" + $("#termList option").length + " Structures"); } } $scope.GetAnnotationBasedOnActualTermNo = function (actualTermNo) { var languageArray = $rootScope.lexiconLanguageArray; if ($scope.AAPinTermData != null || $scope.AAPinTermData != undefined) { $scope.matchedTermNoData = new jinqJs() .from($scope.AAPinTermData) .where('_TermNumber == ' + actualTermNo) .select(); if ($scope.matchedTermNoData != null || $scope.matchedTermNoData != undefined) { for (var j = 0; j <= languageArray.length - 1; j++) { $scope.matchedLanguageTermNoData = new jinqJs() .from($scope.matchedTermNoData) .where('_LanguageId == ' + languageArray[j].id) .select(); var termText = $scope.matchedLanguageTermNoData[0]._TermText; $scope.MultiLanguageAnnationArray.push(termText); }; } } } $rootScope.hidePins = function () { $("#dropdownMenu221").addClass("aaSystemDisable"); $rootScope.isLoading = true; $('#spinner').css('visibility', 'visible'); $scope.hideSpeechBubble(); $scope.isHidePinBtnClicked = true; angular.forEach($scope.aaPinData, function (aaPinDataValue, aaPinDataKey) { var pinName = 'Pin_' + aaPinDataValue._PinId; var pinArcName = 'PinArc_' + aaPinDataValue._PinId; $('#aaDetailViewCanvas').setLayer(pinName, { visible: false // set to true instead to show the layer again }).drawLayers(); $('#aaDetailViewCanvas').setLayer(pinArcName, { visible: false // set to true instead to show the layer again }).drawLayers(); }) $rootScope.isLoading = false; $('#spinner').css('visibility', 'hidden'); $(".tooltip-custom").removeClass("btn-primary"); $(".tooltip-custom").addClass("btn-black"); $("#hidePinBtn").addClass("btn-primary"); $("#hidePinBtn").removeClass("btn-black"); } $scope.showAllPinsAfterHide = function (event) { if ($("#dropdownMenu221").hasClass("aaSystemDisable")) { $("#dropdownMenu221").removeClass("aaSystemDisable"); } $rootScope.isLoading = true; $('#spinner').css('visibility', 'visible'); $scope.isHidePinBtnClicked = false; $rootScope.isshowAllPinsBtnAfterHideClicked = true; if ($scope.selectedSystemName != null && $scope.selectedSystemName != undefined) { $scope.showSystemPins($scope.selectedSystemPinData, false); } else { $scope.showSystemPins($scope.aaPinData, false); } $scope.showSpeechBubble(); $(".tooltip-custom").removeClass("btn-primary"); $(".tooltip-custom").addClass("btn-black"); $("#allPinBtn").addClass("btn-primary"); $("#allPinBtn").removeClass("btn-black"); if ($scope.isSliderChange == true) { $scope.isSliderChange = false; $scope.showAllPins(); } }; $scope.showSelectedPins = function () { $("#dropdownMenu221").addClass("aaSystemDisable"); $rootScope.isLoading = true; $('#spinner').css('visibility', 'visible'); $scope.isHidePinBtnClicked = false; if ($scope.selectedSystemName != null && $scope.selectedSystemName != undefined) { $scope.showSystemPins($scope.selectedSystemPinData, true); } else { $scope.showSystemPins($scope.aaPinData, true); } $scope.showSpeechBubble(); $(".tooltip-custom").removeClass("btn-primary"); $(".tooltip-custom").addClass("btn-black"); $("#selectedPin").addClass("btn-primary"); $("#selectedPin").removeClass("btn-black"); if ($scope.isSelectedPinBtnClickedAftrSliderCange == true) { for (var i = 0; i <= $scope.activePinArray.length - 1; i++) { var pinName = $scope.activePinArray[i].split("_"); var activePinName = 'Pin_' + pinName[1]; var pinArcName = 'PinArc_' + pinName[1]; $('#aaDetailViewCanvas').setLayer(activePinName, { visible: true // set to true instead to show the layer again }).drawLayers(); $('#aaDetailViewCanvas').setLayer(pinArcName, { visible: true // set to true instead to show the layer again }).drawLayers(); } } }; $scope.showSystemPins = function (seletedSystemPinData, isShowSelectedPins) { if (isShowSelectedPins) { angular.forEach($scope.clickedPins, function (value, key) { seletedSystemPinData = new jinqJs() .from(seletedSystemPinData) .where('_PinId != ' + value.id) .select(); }) angular.forEach($scope.clickedPins, function (value1, key1) { // if (aaPinDataValue._PinId != value.id) { var pinName = 'Pin_' + value1.id; var pinArcName = 'PinArc_' + value1.id; $('#aaDetailViewCanvas').setLayer(pinName, { visible: true // set to true instead to show the layer again }).drawLayers(); $('#aaDetailViewCanvas').setLayer(pinArcName, { visible: true // set to true instead to show the layer again }).drawLayers(); // } }) angular.forEach(seletedSystemPinData, function (aaPinDataValue, aaPinDataKey) { var pinName = 'Pin_' + aaPinDataValue._PinId; var pinArcName = 'PinArc_' + aaPinDataValue._PinId; $('#aaDetailViewCanvas').setLayer(pinName, { visible: false // set to true instead to show the layer again }).drawLayers(); $('#aaDetailViewCanvas').setLayer(pinArcName, { visible: false // set to true instead to show the layer again }).drawLayers(); }) } else { angular.forEach(seletedSystemPinData, function (aaPinDataValue, aaPinDataKey) { var pinName = 'Pin_' + aaPinDataValue._PinId; var pinArcName = 'PinArc_' + aaPinDataValue._PinId; $('#aaDetailViewCanvas').setLayer(pinName, { visible: true // set to true instead to show the layer again }).drawLayers(); $('#aaDetailViewCanvas').setLayer(pinArcName, { visible: true // set to true instead to show the layer again }).drawLayers(); }) } $rootScope.isLoading = false; $('#spinner').css('visibility', 'hidden'); } $rootScope.isshowAllPinsBtnAfterHideClicked = true; $scope.showItemsForSearch = function () { if($rootScope.isshowAllPinsBtnAfterHideClicked == true){ console.log('showItemsForSearch is called'); //this check is for log only because we are writing length so need to check if its not null or undefined $timeout(function () { if (($scope.AAPinTermData != null || $scope.AAPinTermData != undefined) && ($scope.AAPinTermData.length > 0)) { $scope.IsSearchVisible = true; document.getElementById("termlistfilter").style.display = "block"; } else { $rootScope.loadSearchData(); if ($scope.AAPinTermData.length > 0) { $scope.showItemsForSearch(); } } if ($rootScope.isSearchInputClicked == true) { $rootScope.isSearchInputClicked = false; $rootScope.searchListArray = []; $("#backdrop > #searchListDivAA > #termlistfilter > li").each(function (key, value) { $rootScope.searchListArray.push({ "name": $(this).find("a").html(), "id": $(this).find("a").attr("id") }); }); } }, 500); } } $scope.HideSearchList = function () { $timeout(function () { $("#termlistfilter").css("display", "none"); }, 1000); } $scope.highlightPinBasedOnSerachItem = function (id) { $scope.searchItemId = id; $scope.searchItemText = $("#" + id).text(); $rootScope.searchSelectedText = $("#" + id).text(); $('#termList option[selected="selected"]').prop("selected", false); $('#termList option[value="' + $rootScope.searchSelectedText + '"]').prop("selected", true); $("#termList").find("option").css({ "background-color": "#ffffff", "color": "#000000" }); $('#termList option[value="' + $rootScope.searchSelectedText + '"]').css({ "background-color": "#3399FF", "color": "#ffffff" }); $("#termlistfilter li a").css({ "background-color": "#ffffff", "color": "#000000" }); $("#termlistfilter li #" + $scope.searchItemId).css({ "background-color": "#3399FF", "color": "#ffffff" }); $scope.searchFilter = $("#" + id).text(); //selectedTermName.placeholder = $("#" + id).text(); selectedTermName.value = $("#" + id).text(); selectedTermName.placeholder = "search... "; //get data from pindata for this trem var pinDataForTerm = new jinqJs() .from($scope.aaPinData) .where("_TermId == " + $scope.searchItemId) .select(); $scope.showAnnotation(pinDataForTerm, false, false, true); // maintaing scroll position on selection of options in list manager. var annotationTopPos = $(".common-drag").css("top").split("p"); $("#canvasDiv").scrollTop(annotationTopPos[0]); $scope.IsSearchVisible = false; } $rootScope.isShowHideButtonClicked = true; $scope.ShowHideAnnotation = function () { if ($rootScope.isShowHideButtonClicked == true) { $rootScope.annotationArray = []; $("#canvasDiv").find(".common-drag").each(function () { var speechBubbleID = $(this).attr("id"); var sppechBubbleId = $(this).attr("id").substring(12); var b = $("#speechBubbleDraggedLine" + sppechBubbleId).css("display"); var speechBubbleLineDispProp = $("#speechBubbleLine" + sppechBubbleId).css("display"); var speechBubbleLineID = "speechBubbleLine" + sppechBubbleId; var speechBubbleDraggedLineID = "speechBubbleDraggedLine" + sppechBubbleId; $("#comment-box").addClass("btn-primary"); $("#comment-box").removeClass("btn-black"); if (speechBubbleLineDispProp == "block") { $rootScope.annotationArray.push({ "speechBuubleId": speechBubbleID, "speechBubbleLineId": speechBubbleLineID }); } else { $rootScope.annotationArray.push({ "speechBuubleId": speechBubbleID, "speechBubbleLineId": speechBubbleDraggedLineID }); } }); $rootScope.isShowHideButtonClicked = false; for (var i = 0; i <= $rootScope.annotationArray.length - 1; i++) { $("#" + $rootScope.annotationArray[i].speechBuubleId).css("display", "none"); $("#" + $rootScope.annotationArray[i].speechBubbleLineId).css("display", "none"); } } else { $rootScope.isShowHideButtonClicked = true; for (var i = 0; i <= $rootScope.annotationArray.length - 1; i++) { $("#" + $rootScope.annotationArray[i].speechBuubleId).css("display", "block"); $("#" + $rootScope.annotationArray[i].speechBubbleLineId).css("display", "block"); } $("#comment-box").removeClass("btn-primary"); $("#comment-box").addClass("btn-black"); } } $scope.activePinOnLayerChange = function () { for (var i = 0; i <= $scope.activePinArray.length - 1; i++) { var radialAfterClick = $('#aaDetailViewCanvas').createGradient({ x1: 50, y1: 50, x2: 50, y2: 50, r1: 10, r2: 30, c1: 'rgba(100, 50, 0,0)', c2: 'rgb(126, 187, 83)' }); var clickedPin = $scope.activePinArray[i]; $('#aaDetailViewCanvas').setLayer(clickedPin, { fillStyle: radialAfterClick }).drawLayers(); } } $scope.activePinOnSliderChange = function () { if ($scope.activePinArray.length == 1) { for (var i = 0; i <= $scope.allPinDataArray.length - 1; i++) { var activeArc = $scope.activePinArray[0].split("_"); if ($scope.allPinDataArray[i] == activeArc[1]) { var pinName = 'Pin_' + $scope.allPinDataArray[i]; var pinArcName = 'PinArc_' + $scope.allPinDataArray[i]; $('#aaDetailViewCanvas').setLayer(pinName, { visible: true // set to true instead to show the layer again }).drawLayers(); $('#aaDetailViewCanvas').setLayer(pinArcName, { visible: true // set to true instead to show the layer again }).drawLayers(); } else { var pinName = 'Pin_' + $scope.allPinDataArray[i]; var pinArcName = 'PinArc_' + $scope.allPinDataArray[i]; $('#aaDetailViewCanvas').setLayer(pinName, { visible: false // set to true instead to show the layer again }).drawLayers(); $('#aaDetailViewCanvas').setLayer(pinArcName, { visible: false // set to true instead to show the layer again }).drawLayers(); } } } else { var seletedSystemPinData; angular.forEach($scope.activePinArray, function (value, key) { var pinID = value.split("_"); seletedSystemPinData = new jinqJs() .from($scope.allPinDataArray) .where('_PinId != ' + pinID[1]) .select(); }) angular.forEach(seletedSystemPinData, function (aaPinDataValue, aaPinDataKey) { var pinName = 'Pin_' + aaPinDataValue; var pinArcName = 'PinArc_' + aaPinDataValue; $('#aaDetailViewCanvas').setLayer(pinName, { visible: false // set to true instead to show the layer again }).drawLayers(); $('#aaDetailViewCanvas').setLayer(pinArcName, { visible: false // set to true instead to show the layer again }).drawLayers(); }) for (var i = 0; i <= $scope.activePinArray.length - 1; i++) { var pinName = $scope.activePinArray[i].split("_"); var activePinName = 'Pin_' + pinName[1]; var pinArcName = 'PinArc_' + pinName[1]; $('#aaDetailViewCanvas').setLayer(activePinName, { visible: true // set to true instead to show the layer again }).drawLayers(); $('#aaDetailViewCanvas').setLayer(pinArcName, { visible: true // set to true instead to show the layer again }).drawLayers(); } } } }]); function refreshTermListOnSystemSel(bodySystemId) { var rootScope = angular.element(document.getElementById("aaDetailPageDiv")).scope(); rootScope.$apply(function () { rootScope.refreshTermListOnAASystemSelection(bodySystemId); }); } function showSelectedSystemPins(event) { console.log('OnBodySystem chnaged is called outside '); var scope = angular.element(document.getElementById("aaDetailPageDiv")).scope(); scope.$apply(function () { scope.showSelectedSystemPins(event); }); } function hidePins(event) { var rootScope = angular.element(document.getElementById("aaDetailPageDiv")).scope(); rootScope.$apply(function () { rootScope.hidePins(event); }); } function showAllPins(event) { var scope = angular.element(document.getElementById("aaDetailPageDiv")).scope(); scope.$apply(function () { scope.showAllPinsAfterHide(event); }); } function onSearchAA(event) { console.log('AA search is called') var scope = angular.element(document.getElementById("aaDetailPageDiv")).scope(); scope.$apply(function () { scope.showItemsForSearch(); }); } function hideSearchList(event) { console.log('AA hide search is called') var scope = angular.element(document.getElementById("aaDetailPageDiv")).scope(); scope.$apply(function () { scope.HideSearchList(); }); } function onSearchItemSelection(id) { console.log('AA hide search is called'); var scope = angular.element(document.getElementById("aaDetailPageDiv")).scope(); scope.$apply(function () { scope.highlightPinBasedOnSerachItem(id); }); } //function onListManagerTermSelection(event) { // var scope = angular.element(document.getElementById("aaDetailPageDiv")).scope(); // scope.isTermListOptionClicked = true; // scope.$apply(function () { // scope.highlightPinBasedOnSerachItem1(event); // }); //} function showHideAnnotation(event) { var scope = angular.element(document.getElementById("aaDetailPageDiv")).scope(); scope.$apply(function () { scope.ShowHideAnnotation(event); }); } function showSelectedPins(event) { console.log('showSelectedPins is called') var scope = angular.element(document.getElementById("aaDetailPageDiv")).scope(); scope.$apply(function () { scope.showSelectedPins(event); }); } function openModuleItemView(event) { var scope = angular.element(document.getElementById("list-view")).scope(); scope.isListViewButtonClicked = true; scope.$apply(function () { scope.openModuleItemView(event); }); } function openListViewModuleItem(event) { var scope = angular.element(document.getElementById("list-view")).scope(); scope.isListViewButtonClicked = true; scope.$apply(function () { scope.openListViewModuleItem(event); }); } function openCurrentView(event) { var scope = angular.element(document.getElementById("list-view")).scope(); scope.isListViewButtonClicked = true; scope.isOpenBtnClicked = true; scope.$apply(function () { scope.openModuleItemView(event); }); } function onZoom(scope) { //$(".common-drag").remove(); //$(".commonDot").remove(); //$(".commonDraggedLine").remove(); //var radial = $('#aaDetailViewCanvas').createGradient({ // x1: 50, y1: 50, // x2: 50, y2: 50, // r1: 10, r2: 30, // c1: 'rgba(100, 50, 0,0)', // c2: 'rgb(216, 216, 216)' //}); //$('#aaDetailViewCanvas').setLayers({ // fillStyle: radial, //}).drawLayers(); // scope.removePin(); // scope.showAllPins(); //6. Show all pins on AA opened item } $(document).ready(function () { 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 }); $("#ImagePanel").css("width", "100%"); //hide pin button clicked $("#hidePinBtn").removeAttr("onclick"); $("#hidePinBtn").on("touchstart", function () { var rootScope = angular.element(document.getElementById("aaDetailPageDiv")).scope(); rootScope.$apply(function () { rootScope.hidePins(event); }); }); //selected pin button clicked $("#selectedPin").removeAttr("onclick"); $("#selectedPin").on("touchstart", function () { console.log('showSelectedPins is called') var scope = angular.element(document.getElementById("aaDetailPageDiv")).scope(); scope.$apply(function () { scope.showSelectedPins(event); }); }); //all pin button clicked $("#allPinBtn").removeAttr("onclick"); $("#allPinBtn").on("touchstart", function () { var scope = angular.element(document.getElementById("aaDetailPageDiv")).scope(); scope.$apply(function () { scope.showAllPinsAfterHide(event); }); }); //comment-box button clicked $("#comment-box").removeAttr("onclick"); $("#comment-box").on("touchstart", function () { var scope = angular.element(document.getElementById("aaDetailPageDiv")).scope(); scope.$apply(function () { scope.ShowHideAnnotation(event); }); }); } $(".slider").slider({ min: 25, max: 100, value: 100, range: "min", orientation: "vertical", slide: function (event, ui) { var scope = angular.element(document.getElementById("aaDetailPageDiv")).scope(); scope.$apply(function () { scope.sliderVal = ui.value; scope.removeSpeechBubble(); var relativeWidth = 0; var relativeHeight = 0; if (ui.value == 25 || ui.value == 40 || ui.value == 55 || ui.value == 70 || ui.value == 85 || ui.value == 100) { if (ui.value == 100) { relativeWidth = scope.ViewImageWidth; relativeHeight = scope.ViewImageHeight scope.sliderPercentValue = 1.0; } else if (ui.value == 85) { relativeWidth = scope.ViewImageWidth * 0.85; relativeHeight = scope.ViewImageHeight * 0.85; scope.sliderPercentValue = 0.85; } else if (ui.value == 70) { relativeWidth = scope.ViewImageWidth * 0.70; relativeHeight = scope.ViewImageHeight * 0.70; scope.sliderPercentValue = 0.70; } else if (ui.value == 55) { relativeWidth = scope.ViewImageWidth * 0.55; relativeHeight = scope.ViewImageHeight * 0.55; scope.sliderPercentValue = 0.55; } else if (ui.value == 40) { relativeWidth = scope.ViewImageWidth * 0.40; relativeHeight = scope.ViewImageHeight * 0.40; scope.sliderPercentValue = 0.40; } else if (ui.value == 25) { relativeWidth = scope.ViewImageWidth * 0.25; relativeHeight = scope.ViewImageHeight * 0.25; scope.sliderPercentValue = 0.25; } } if (ui.value == 25 || ui.value == 40 || ui.value == 55 || ui.value == 70 || ui.value == 85 || ui.value == 100) { $("#modItemImage").css("width", relativeWidth + "px"); $("#modItemImage").css("height", relativeHeight + "px"); $("#aaDetailViewCanvas").css("width", relativeWidth + "px"); $("#modItemImage").css("height", relativeHeight + "px"); $("#modItemImage").attr('src', ''); $("#aaDetailViewCanvas").remove(); //0.5 create canvas on the top of image so that I can draw a line over the canvas. var canvas = document.createElement('canvas'); canvas.id = 'aaDetailViewCanvas'; canvas.className = 'aaCanvas'; canvas.height = relativeHeight; canvas.width = relativeWidth; canvas.style.left = '0px'; canvas.style.top = '0px'; canvas.style.position = "absolute"; $("#canvasDiv").append(canvas); scope.context = canvas.getContext("2d") $("#modItemImage").attr('src', scope.OpenItemImagePath); scope.isSliderChange = true; var btnID = ''; $("div.tools div:eq(1) div").each(function () { if ($(this).find("button").hasClass("btn-primary")) { btnID = $(this).find("button").attr("id"); $('#' + btnID).removeClass("btn-black"); $('#' + btnID).addClass("btn-primary"); } }); scope.isSelectedPinBtnClickedAftrSliderCange = true; switch (btnID) { case "hidePinBtn": break; case "allPinBtn": scope.showAllPins(); break; case "selectedPin": scope.showAllPins(); setTimeout(function () { console.log(scope.allPinDataArray); scope.activePinOnSliderChange(); }, 1000); break; } } }); } }) .slider("pips", { rest: "label", step: "15" }); });