'use strict';
AIA.controller("DAController", ["$scope", "$rootScope", "$compile", "$http", "$log", "$location", "$timeout", "DA", "Modules", "$routeParams", "DataService",
function ($scope, $rootScope, $compile, $http, $log, $location, $timeout, DA, Modules, $routeParam, DataService) {
$scope.genderId = "";
$scope.BodyViewData;
$scope.selectedGenderBodyViewData;
$scope.imagePath = "";
$scope.BodyRegionData;
$scope.BodyRegionCordinatesData;
$scope.isTransparencyActivated;
$scope.BodyLayerData;
$scope.VocabTermData;
$scope.TermNumberData;
$scope.bodyViewId = 0;
$scope.bgartData;
//view specific constants
$scope.voId;
$scope.layerNumber;
$scope.daCounter = 1;
$scope.bagartDetails;
$scope.genderId = "";
$scope.BodyViewData;
$scope.selectedGenderBodyViewData;
$scope.imagePath = "";
$scope.BodyRegionData;
$scope.BodyRegionCordinatesData;
$scope.isTransparencyActivated;
$scope.BodyLayerData;
$scope.VocabTermData;
$scope.TermNumberData;
$scope.bodyViewId = 0;
//view specific constants
$scope.voId;
$scope.layerNumber;
$scope.daCounter = 1;
$scope.isBodylayerdataLoaded = false;
$scope.isBodyRegionDataLoaded = false;
$scope.showme = false;
$scope.IsVisible = function () {
$scope.scroll();
}
$scope.scroll = function () {
// $window.scrollTo(0, 0);
$("html,body").scrollTop(0);
//alert("scroll");
}
//get the DA body view list based on selected gender
//get the DA body view list based on selected gender
$scope.getDAViewList = function ($event) {
// debugger;
if ($('#MainImage') != null) {
$('#MainImage').remove();
}
$rootScope.currentActiveModuleTitle = Modules[0].Name;
$("#bodyViewList").empty();
//for default load
if ($event == null || $event == undefined) {
//if ((localStorage.getItem("genderId") != "")||(localStorage.getItem("genderId")!="null")) {
// $scope.genderId = localStorage.getItem("genderId");
//}
var selectedGender=localStorage.getItem("genderId") ;
if ((selectedGender == null)) {
$scope.genderId = "Male";
}
else
$scope.genderId = localStorage.getItem("genderId");
}
else {
$scope.genderId = $event.currentTarget.id;
}
localStorage.setItem("genderId", $scope.genderId);
var selectedGender = localStorage.getItem("genderId");
if (selectedGender != null) {
if (selectedGender == "Male") {
$('#Male').addClass('active');
$('#Female').removeClass("active");
}
else {
$('#Female').addClass('active');
$('#Male').removeClass("active");
}
}
$scope.selectedGenderBodyViewData = new jinqJs()
.from($scope.BodyViewData.BodyViews.view)
.where('_gender == ' + $scope.genderId)
.select();
angular.forEach($scope.selectedGenderBodyViewData, function (value, key) {
var userEthnicity = DA[0].ethnicity;
var userModestysettings = DA[0].modesty;
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';
}
$scope.imagePath = "~/../content/images/DA/BodyViews/" + value._id + '/skintone/' + userEthnicity + '/' + thumbnailImage;
// debugger;
var $el = $('
'
+ '

'
+ '
').appendTo('#bodyViewList');
$compile($el)($scope);
$(".sidebar").mCustomScrollbar({
autoHideScrollbar: true,
//theme:"rounded"
});
});
};
$scope.openView = function ($event) {
// debugger;
$rootScope.currentBodyViewId = $event.currentTarget.id;
$rootScope.ViewTitle = $event.currentTarget.textContent;
localStorage.setItem("currentViewTitleFromJson", $event.currentTarget.textContent);
localStorage.setItem("currentBodyViewId", $event.currentTarget.id);
var u = $location.url();
$location.url('/da-body-view');
}
//load json data for body view
$scope.loadDissectibleAnatomyData = function () {
$rootScope.ClearIframe();
//load bodyView data
$http({ method: 'GET', url: '~/../content/data/json/da/da_dat_contentlist.json' }).success(function (data) {
$scope.BodyViewData = data;
//load default body view list for male
$scope.getDAViewList();
})
.error(function (data, status, headers, config) {
console.log(data);
});
// $('#daLoaderLabel').css('visibility', 'hidden')
$rootScope.isLoading = false;
$http({ method: 'GET', url: '~/../content/data/json/da_dat_tm_sg_1.json' }).success(function (data) {
$scope.TermNumberData = data;
})
.error(function (data, status, headers, config) {
console.log(data);
});
//load vocabterm data
$http({ method: 'GET', url: '~/../content/data/json/cm_dat_vocabterm_1.json' }).success(function (data) {
$scope.VocabTermData = data;
})
.error(function (data, status, headers, config) {
console.log(data);
});
//push the details of open module in array $rootScope.openModules
$rootScope.openModules.push({ "ModuleId": 1 });
}
//da-body-view functions
$scope.openBodyView = function () {
//debugger;
$rootScope.isLoading = true;
$scope.voId = localStorage.getItem("currentBodyViewId");;
//load bodyRegion data
var brViewdata = DataService.getJson('~/../content/data/json/da/da_dat_brview.json')
brViewdata.then(
function (result) {
// debugger;
$scope.BodyRegionData = result;
$scope.isBodyRegionDataLoaded = true;
// alert('da_dat_brview= ' + result)
var currentBodyViewId = localStorage.getItem("currentBodyViewId");
var layerJsonPath = '';
var bgArtJsonPath = '';
var CommonViewId = 0;
//get layer data for body view
//if (currentBodyViewId == 12) {
// CommonViewId = 10;
// layerJsonPath = '~/../content/data/json/da/bodyView/' + CommonViewId + '/da_dat_layer_' + CommonViewId + '.json';
//}
//else if (currentBodyViewId == 11)
//{
// CommonViewId = 9;
// layerJsonPath = '~/../content/data/json/da/bodyView/' + CommonViewId + '/da_dat_layer_' + CommonViewId + '.json';
//}
//else
//{
layerJsonPath = '~/../content/data/json/da/bodyView/' + currentBodyViewId + '/da_dat_layer_' + currentBodyViewId + '.json';
//}
DataService.getAnotherJson(layerJsonPath)
.then(
function (result) {
//debugger;
$scope.BodyLayerData = result;
$scope.isBodylayerdataLoaded = true;
//load json for annotations
// $http({ method: 'GET', url: '~/../content/data/json/da_dat_tm_sg_1.json' }).success(function (data) {
$http({ method: 'GET', url: '~/../content/data/json/da/bodyView/' + currentBodyViewId + '/da_dat_tm_sg_' + currentBodyViewId + '.json' }).success(function (data){
$scope.TermNumberData = data;
})
.error(function (data, status, headers, config) {
console.log(data);
});
var path = '~/../content/data/json/da/vocab/english/cm_dat_vocabterm_1.json';
//load vocabterm data
//$http({ method: 'GET', url: '~/../content/data/json/cm_dat_vocabterm_1.json' }).success(function (data) {
$http({ method: 'GET', url: path }).success(function (data){
$scope.VocabTermData = data;
})
.error(function (data, status, headers, config) {
console.log(data);
});
////load vocabterm data
//$http({ method: 'GET', url: '~/../content/data/json/cm_dat_vocabterm_1.json' }).success(function (data) {
// $scope.VocabTermData = data;
//})
// .error(function (data, status, headers, config) {
// console.log(data);
// });
var openViews;
// debugger;
if ($rootScope.openViews.length > 0) {
openViews = new jinqJs()
.from($rootScope.openViews)
.where("BodyViewId==" + currentBodyViewId)
.select();
}
var counter = 1;
// var tittle = $rootScope.ViewTitle;
var tittle = localStorage.getItem("currentViewTitleFromJson");
if (openViews != null && openViews.length > 0) {
angular.forEach(openViews, function (value, key) {
if (value.BodyView == tittle) {
tittle = localStorage.getItem("currentViewTitleFromJson") + counter++;
$rootScope.currentActiveViewTitle = tittle;
localStorage.setItem("currentViewTitle", tittle);
}
});
}
else {
localStorage.setItem("currentViewTitle", tittle);
}
$.jsPanel({
id: 'daImagePanel',
selector: '.daBodyView',
theme: 'success',
ajax: {
url: 'app/views/da/da-view.html'
},
title: localStorage.getItem("currentViewTitle"),
position: {
top: 70,
left: 1,
},
size: { width: $(window).outerWidth() - 10, height: $(window).outerHeight() - 110 },
});
// $rootScope.openViewsDA.push({ "ViewId": 1 });
$rootScope.currentSlug = 'da-body-view';
//hide scrollbar
$rootScope.openViews.push(
{
"module": $rootScope.currentActiveModuleTitle, "BodyView": tittle, "state": 'max', "BodyViewId": $rootScope.currentBodyViewId,
"slug": $rootScope.currentSlug
}
);
// debugger;
var e1 = angular.element(document.getElementById("daBodyview"));
$timeout(function () { $compile(e1.contents())($scope) }, 250);
// $compile(e1.contents())($scope);
$('#daBodyview').css("height", $(window).outerHeight());
$('#daBodyview').css("width", $(window).outerWidth());
// debugger
if ($scope.isBodylayerdataLoaded) {
$timeout(function () { $scope.LoadDefaultLayerImage() }, 350);
}
},
function (error) {
// handle errors here
console.log(' $scope.BodyLayerData= ' + error.statusText);
}
);
},
function (error) {
// handle errors here
console.log(' $scope.BodyRegionData = ' + error.statusText);
}
);
// debugger
$('#daBodyview').css("height", $(window).outerHeight());
$('#daBodyview').css("width", $(window).outerWidth());
}
angular.element(document).ready(function () {
})
$scope.LoadDefaultLayerImage = function () {
// debugger;
$scope.layerNumber = 0;
$scope.skinTone = DA[0].ethnicity;
$scope.viewOrientationId = $scope.voId;
if ($scope.voId == 5)
{
$scope.viewOrientationId = 1;
}
else if ($scope.voId == 6) {
$scope.viewOrientationId = 2;
}
else if ($scope.voId == 7) {
$scope.viewOrientationId = 3;
}
else if ($scope.voId == 8) {
$scope.viewOrientationId = 4;
}
else if ($scope.voId == 9) {
$scope.viewOrientationId = 5;
}
else if ($scope.voId == 10) {
$scope.viewOrientationId = 6;
}
else if ($scope.voId == 11) {
$scope.viewOrientationId = 5;
}
else if ($scope.voId == 12) {
$scope.viewOrientationId = 6;
}
//debugger;
var bgArtJsonPath = '';
if ($scope.voId == 9 || $scope.voId == 11) {
bgArtJsonPath = '~/../content/data/json/da/da_dat_bgart.json';
var bgartdata = DataService.getJson(bgArtJsonPath)
bgartdata.then(
function (result) {
//debugger;
$scope.bgartData = result;
$scope.CalculateImageCordinates($scope.viewOrientationId);
},
function (error) {
// handle errors here
console.log(' $scope.bgartData = ' + error.statusText);
});
}
else
$scope.CalculateImageCordinates($scope.viewOrientationId);
};
//calculate coordinates for body region images
$scope.CalculateImageCordinates = function (viewOrientationId) {
// debugger;
//set height of canvas div and left tool bar as per window size
$scope.BodyRegionCordinatesData = []; // create an empty array
$('#daBodyview').css('width', '100%');
$('#canvasDiv').css('height', $('#daImagePanel').outerHeight() - 104)
//$('#canvasDiv').css('width', $('#daImagePanel').outerWidth() - 100)
$('#leftToolBar').css('height', $('#daImagePanel').outerHeight())
//calculate image coordinates and draw image
var bodyRegionCoordinates = $scope.BodyRegionData.BodyRegionViews;
// var viewOrientationId = String($scope.voId);
$scope.bodyRegionCoordinates = new jinqJs()
.from($scope.BodyRegionData.BodyRegionViews.BodyRegionCordinates)
.where('_ViewOrientationId == '+viewOrientationId)
.select();
if ($scope.voId == 9 || $scope.voId == 11) {
$scope.bagartDetails = new jinqJs()
.from($scope.bgartData.BackgroundArts.BackgroundArtDetail)
.where('_ViewOrientationId == ' + viewOrientationId)
.select();
}
angular.forEach($scope.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);
//1.Get image source
var src = $scope.GetImageSource(value._BodyRegionId);
$scope.imageSource = src;
// debugger;
//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');
// debugger;
$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);
// debugger;
//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');
//Draw Normal Image
//0. Scaling as per default zoom
var rectangle = scaleRectangle(value._X, value._Y, value._Height, value._Width, 0);
//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');
$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');
}
else {
//Draw body region which don't have mirror image
// debugger;
//0.Scaling as per default zoom
var rectangle = scaleRectangle(value._X, value._Y, value._Height, value._Width, value._MirrorValue);
//1.Get image source
if (value._IsPrimary == 'N') {
var src = $scope.GetBackgroundImgSource(value._BodyRegionId);
$scope.imageSource = src;
}
else {
var src = $scope.GetImageSource(value._BodyRegionId);
$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');
$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');
}
});
//set scrollbars on canvas and hide loading label
// debugger;
// var isiOSSafari = (navigator.userAgent.match(/like Mac OS X/i)) ? true : false;
var isiOSSafari = (navigator.userAgent.match(/iPad/i)) ? true : false;
//set scrollbars on canvas and hide loading label
// $('#daLoaderLabel').css('visibility', 'hidden')
$rootScope.isLoading = false;
$('#canvasDiv').css('overflow', 'scroll')
if (isiOSSafari) {
$('#canvasDiv').scrollLeft($('#canvasDiv').width() + 150)
}
else {
$('#canvasDiv').scrollLeft($('#canvasDiv').width() / 2)
}
// $('#canvasDiv').scrollLeft($scope.imageHorizontlScrollPosition)
$('#canvasDiv').scrollTop(50)
var abc = $scope.BodyRegionCordinatesData;
// debugger;
$('#layerChangeSlider').slider("option", "value", parseInt($scope.totalLayers) - parseInt($scope.layerNumber));
}
function scaleRectangle(x, y, height, width, mirrorValue) {
var nzoom = 75;
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.match('.png')) {
var mciImage = src.replace('.png', '_mci.png')
}
else
{
var mciImage = src.replace('.jpg', '_mci.png')
}
return mciImage;
}
$scope.GetImageSource = function (bodyRegionId) {
// debugger;
var dataLength = $scope.BodyLayerData.Layers.DataLayer.length;
//set max for LayerNumber input
$scope.totalLayers = dataLength - 1;
$('#txtLayerNumber').attr('max', $scope.totalLayers);
$('#layerChangeSlider').slider("option", "max", $scope.totalLayers);
// $('#layerChangeSlider').slider("option", "value",parseInt($scope.totalLayers)-parseInt($scope.layerNumber));
$scope.one = 1;
$scope.userInput = parseInt($scope.layerNumber);
var SelectedLayerData = [];
SelectedLayerData = $scope.BodyLayerData.Layers.DataLayer[dataLength - $scope.userInput - 1];
if ($scope.layerNumber == 0) {
for (var z = 0; z <= SelectedLayerData.BodyRegion.length; z++) {
var bodyRegion = SelectedLayerData.BodyRegion[z]._BodyRegionId;
var bodyRegionSkinTone = SelectedLayerData.BodyRegion[z].Image._SkintTone;
if (bodyRegion == bodyRegionId && bodyRegionSkinTone == $scope.skinTone) {
return "content/images/DA/BodyViews/" + $scope.voId + "/layers/" + $scope.layerNumber + "/" + bodyRegionId + "/" + $scope.skinTone + "/" + SelectedLayerData.BodyRegion[z].Image._ImageName;
}
}
}
else {
// debugger;
//below 4 bodyviews have only single body region
if ($scope.voId == 9 || $scope.voId == 11 || $scope.voId == 10 || $scope.voId == 12)
{
var bodyRegion = SelectedLayerData.BodyRegion._BodyRegionId;
return "content/images/DA/BodyViews/" + $scope.voId + "/layers/" + $scope.layerNumber + "/" + bodyRegionId + "/" + SelectedLayerData.BodyRegion.Image._ImageName;
}
else // it is for other body view which have multiple body regions and layer no > 0
{
// debugger;
for (var z = 0; z <= SelectedLayerData.BodyRegion.length; z++) {
var bodyRegion = SelectedLayerData.BodyRegion[z]._BodyRegionId;
if (bodyRegion == bodyRegionId) {
//if ($scope.voId == 12) {
// return "content/images/DA/BodyViews/10/layers/" + $scope.layerNumber + "/" + bodyRegionId + "/" + SelectedLayerData.BodyRegion[z].Image._ImageName;
//}
//else {
return "content/images/DA/BodyViews/" + $scope.voId + "/layers/" + $scope.layerNumber + "/" + bodyRegionId + "/" + SelectedLayerData.BodyRegion[z].Image._ImageName;
//}
}
}
}
}
}
$scope.GetBackgroundImgSource = function (bodyRegionId) {
// debugger;
var selectedGender;
if (localStorage.getItem("genderId") == "Male") {
selectedGender = 'M';
}
else {
selectedGender = 'F';
}
//filter data based on bodyRegion
$scope.bagartBodyRegionDetails = new jinqJs()
.from($scope.bagartDetails)
.where('_BodyRegionId == ' + bodyRegionId)
.select();
//filter bodyRegion data basd on skintone
$scope.bagartDetailsOnSktn = new jinqJs()
.from($scope.bagartBodyRegionDetails)
.where('_Skintone == ' + $scope.skinTone)
.select();
//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/BodyViews/" + $scope.voId + "/layers/0/" + bodyRegionId + "/" + $scope.skinTone + "/" + $scope.bagartDetailsOnSktn[z]._ImageId;
}
}
}
else {
return "content/images/DA/BodyViews/" + $scope.voId + "/layers/0/" + bodyRegionId + "/" + $scope.skinTone + "/" + $scope.bagartDetailsOnSktn[0]._ImageId;
}
}
$scope.DrawMirroredImage = function (h, w, x, y, src, bodyRegionId, isMaskImage) {
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') {
FlipedImgCanvas.id = 'imageCanvas' + bodyRegionId + '_MR_mci';
FlipedImgCanvas.style.visibility = 'hidden'
}
else {
FlipedImgCanvas.id = 'imageCanvas' + bodyRegionId + '_MR';
FlipedImgCanvas.style.visibility = 'visible'
}
FlipedImgCanvas.addEventListener('click', function (evt) {
//get mouse coordinate of mirror image click
var mousePos = $scope.getMousePos(evt);
//alert(mousePos.x + ',' + mousePos.y);
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 canvasContextForRGB = maskCanvas.getContext("2d");
var canvasDiv = document.getElementById('canvasDiv');
var verticalScrollPosition = canvasDiv.scrollTop;
var horizontlScrollPosition = canvasDiv.scrollLeft;
var distanceXOnMirrorImage = (parseInt(mirrorCanvasX) + parseInt(mirrorCanvasWidth)) - (parseInt(mousePos.x) + horizontlScrollPosition);// - 135);
var mirrorXOnNormalImage = parseInt(canvasContextForRGB.canvas.offsetLeft) + parseInt(distanceXOnMirrorImage);
var actulalX = mirrorXOnNormalImage
var actualY = mousePos.y + verticalScrollPosition
var pixelData = canvasContextForRGB.getImageData(Math.round(actulalX - parseInt(canvasContextForRGB.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 annotationText = $scope.GetAnnotationText(parseInt(RGBColor));
if ($('#speechBubble').length > 0) {
$('#speechBubble').remove();
$scope.createSpeechBubble(evt, annotationText, evt.pageX + horizontlScrollPosition - $('#canvasDiv').offset().left + 5, evt.pageY + verticalScrollPosition - $('#canvasDiv').offset().top - 50)
}
else
$scope.createSpeechBubble(evt, annotationText, evt.pageX + horizontlScrollPosition - $('#canvasDiv').offset().left + 5, evt.pageY + verticalScrollPosition - $('#canvasDiv').offset().top - 50)
}, 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;
console.log("img.src: " + img.src);
console.log("src: " + src);
function start() {
context.save();
context.translate(w, 0);
context.scale(-1, 1);
context.drawImage(img, 0, 0);
context.restore();
};
document.getElementById('canvasDiv').appendChild(FlipedImgCanvas);
}
$scope.DrawImage = function (h, w, x, y, src, bodyRegionId, isMaskImage) {
// debugger;
var imgCanvas = document.createElement('canvas');
// imgCanvas.style.backgroundColor = 'red';
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'
imgCanvas.id = 'imageCanvas' + bodyRegionId + '_mci';
}
else {
imgCanvas.id = 'imageCanvas' + bodyRegionId;
imgCanvas.style.visibility = 'visible'
}
imgCanvas.addEventListener('click', function (evt) {
// debugger;
var context = imgCanvas.getContext("2d");
var canvasId = context.canvas.getAttribute('id');
var maskCanvasId = canvasId + '_mci';
var maskCanvas = document.getElementById(maskCanvasId);
var canvasContextForRGB = maskCanvas.getContext("2d");
var mousePos = $scope.getMousePos(evt);
// alert(mousePos.x + ',' + mousePos.y);
var canvasDiv = document.getElementById('canvasDiv');
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// - 135;// + leftToolBarWidth;
var actualY = mousePos.y + verticalScrollPosition //- 135; //+ tomenuBarheight + titleBarheight + searchComboheight;
var pixelData = canvasContextForRGB.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);
var annotationText = $scope.GetAnnotationText(parseInt(RGBColor));
if ($('#speechBubble').length > 0) {
$('#speechBubble').remove();
$scope.createSpeechBubble(evt, annotationText, evt.pageX + horizontlScrollPosition - $('#canvasDiv').offset().left + 5, evt.pageY + verticalScrollPosition - $('#canvasDiv').offset().top - 50)
}
else
$scope.createSpeechBubble(evt, annotationText, evt.pageX + horizontlScrollPosition - $('#canvasDiv').offset().left + 5, evt.pageY + verticalScrollPosition - $('#canvasDiv').offset().top - 50)
}, false);
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 context = imgCanvas.getContext('2d');
var img = new Image();
img.onload = start;
img.src = src;
// img.src = img.src = "~/../content/images/" + src;
console.log("img.src: " + img.src);
console.log("src: " + src);
function start() {
// debugger;
context.drawImage(img, 0, 0);
};
// $('#daLoaderLabel').css('visibility', 'visible')
$rootScope.isLoading = true;
document.getElementById('canvasDiv').appendChild(imgCanvas);
}
//get annotation from term number
$scope.GetAnnotationText = function (termNumber) {
//debugger;
var annotationText;
//0
var figLeafTermNo = 5868; // to do declare constant for this
if (parseInt(termNumber) != parseInt(figLeafTermNo)) {
$scope.TermNumber = termNumber;
$scope.matchedTermNoData = new jinqJs()
.from($scope.TermNumberData.TermData.Term)
.where('_TermNumber == ' + termNumber)
.select();
//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);
break;
};
//2.
}
else {
// send term no to vocab json data to get the text
}
return annotationText;
}
$scope.GetAnnotationBasedOnActualTermNo = function (actualTermNo) {
// debugger;
var Annotation;
$scope.ActualTermNo = actualTermNo;
$scope.matchedActualTermData = new jinqJs()
.from($scope.VocabTermData.VocabTerms.Term)
.where('_ActualTermNumber == ' + actualTermNo)
.select();
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;
}
//layer change function
$scope.LayerChange = function () {
var canvasDiv = document.getElementById('canvasDiv');
$scope.imageVerticalScrollPosition = canvasDiv.scrollTop;
$scope.imageHorizontlScrollPosition = canvasDiv.scrollLeft;
// $('#daLoaderLabel').css('visibility', 'visible');
$rootScope.isLoading = true;
var canDiv = document.getElementById('canvasDiv');
var canDivChildCount = canDiv.childElementCount;
if (canDivChildCount > 0) {
canDiv.innerHTML = '';
}
$scope.CalculateImageCordinates ($scope.viewOrientationId );
$('#canvasDiv').scrollLeft($scope.imageHorizontlScrollPosition)
$('#canvasDiv').scrollTop($scope.imageVerticalScrollPosition)
}
//called on jspanel close
$scope.openParent = function () {
// debugger;
var openViews = $rootScope.openViews;
if (openViews.length > 0) {
$rootScope.openViews.splice(openViews.length - 1);
}
if (openViews.length > 0) {
var lastOpenMoudle = $rootScope.openViews[openViews.length - 1];
}
$('#daImagePanel').remove();
$location.url('/da-view-list');
}
//called on jsanel minimize
$scope.setState = function (state, title) {
//debugger;
var alreadyOpenThisView = new jinqJs()
.from($rootScope.openViews)
.where("BodyView == " + title)
.select();
var k = 0;
if (alreadyOpenThisView != null) {
for (var i = 0; i < $rootScope.openViews.length; i++) {
k++;
if ($rootScope.openViews[i].BodyView == title) {
$rootScope.openViews.splice((k - 1), 1);
$rootScope.openViews.push(
{
"module": $rootScope.currentActiveModuleTitle, "BodyView": title, "state": state, "BodyViewId": $rootScope.currentBodyViewId,
"slug": $rootScope.currentSlug
}
);
}
}
}
if (state == 'max') {
$('#daBodyview').css('width', '100%')
}
}
$scope.changeLayer = function () {
console.log('changeLayer');
// alert('slide')
}
$('layerChangeSlider').slider().on('slideStop', function (ev) {
var newVal = $('.span2').data('slider').getValue();
if (originalVal != newVal) {
}
});
$scope.getMousePos = function (evt) {
return {
x: Math.round(evt.pageX - $('#canvasDiv').offset().left),
y: Math.round(evt.pageY - $('#canvasDiv').offset().top)
}
}
$scope.createSpeechBubble = function (event, text, x, y) {
$('#canvasDiv').css('cursor', 'pointer');
$(' '
+ '
'
+ '
' + text + '
'
//+'
+ '
').appendTo('#canvasDiv');
$('#speechBubble').on('click', '.BubbleCloseBtn', function (e) {
$('#speechBubble').css('display', 'none');
});
$('#canvasDiv').attr("data-bubbleid", "speechBubble")
};
$scope.createSpeechBubbleOnTransparencyBox = function (event, text1, text2, x, y) {
$('#canvasDiv').css('cursor', 'pointer');
$(' '
+ '
'
+ '
' + text1 + '
' + text2 + '
'
//+'
+ '
').appendTo('#canvasDiv');
$('#speechBubbleTrns').on('click', '.BubbleCloseBtn', function (e) {
$('#speechBubbleTrns').css('display', 'none');
});
$('#canvasDiv').attr("data-bubbleid", "speechBubble")
};
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'
})
};
}]
);