TileViewListController.js 6.8 KB

'use strict';

AIA.controller("TileViewListController", ["$scope", "$rootScope", "$compile", "$http", "$log", "$location", "$timeout", "DA", "Modules", "$routeParams", "DataService", "ModuleService",
function ($scope, $rootScope, $compile, $http, $log, $location, $timeout, DA, Modules, $routeParam, DataService, ModuleService) {


    $rootScope.OpenedTileData = [];
    var ATLAS_ANATOMY = 'Atlas Anatomy';
    var CLINICAL_ILLUSTRATION = 'Clinical Illustrations';
    var CLINICAL_ANIMATION = 'Clinical Animations';

    $scope.loadForModuleById = function (moduleId) {

        $scope.moduleId = moduleId;

        console.log('loadForModuleById is called')
        $rootScope.moduleName = Modules[moduleId].Name;
        
        var promise = ModuleService.loadModuleDataBasedOnModuleName($scope.moduleName)

            .then(
              function (result) {
                  $scope.moduleLandingData = result;

                  console.log(JSON.stringify(result, null, 4));
              },
               function (error) {
                   // handle errors here
                   console.log(' error: ' + error.statusText);
               }
              )
    }

    $scope.openModuleItemView = function (event) {

        debugger;

        //0. Get selected Image Id
        var moduleItemDataToBeSaved = event.target.id;

        //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.imageName = $rootScope.OpenedTileData[3];
        $rootScope.OpenItemImagePath = "../../../content/images/aa/images/" + $rootScope.OpenedTileData[3];

        //3. set opened module item title
        localStorage.setItem("currentViewTitle", $rootScope.OpenedTileData[6]);

        //3. Navigate to the Module-item-view
        var u = $location.url();
        $location.url('/module-item-view');
    }


    $scope.openModuleItem = function ()
    {
        debugger;
        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

        }

        $.jsPanel({
            id: 'ImagePanel',
            selector: '.aaBodyView',
            theme: 'success',
            currentController: 'TileViewListController',
            parentSlug: 'tile-view',
            ajax: {
                url: jsContentURL
            },
            title: localStorage.getItem("currentViewTitle"),

            position: {
                top: 70,
                left: 1,
            },

            size: { width: $(window).outerWidth() - 10, height: $(window).outerHeight() - 110 },

        });

        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
        var openedImage = new Image();
        openedImage.name = $rootScope.OpenItemImagePath;
        openedImage.onload = getImageHeightWidth;
        openedImage.onerror = loadFailure;
        openedImage.src = $rootScope.OpenItemImagePath;

        $timeout(function () {
            $compile(aaViewElement.contents())($scope);
           
            if (document.getElementById('aaDetailPageDiv') != null) {

                //0.4 added some stylesheets
                $('#aaBodyView').css("height", $(window).outerHeight());
                $('#aaBodyView').css("width", $(window).outerWidth());

                $scope.currentTitleFromJson = localStorage.getItem("currentViewTitle");
                $("#modItemImage").attr('src', $rootScope.OpenItemImagePath);

                //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.height = parseInt(($scope.imageHeight));
                canvas.width = parseInt($scope.imageWidth);
                canvas.style.left = '0px';
                canvas.style.top = '0px';              
                canvas.style.position = "absolute";

                $("#imageDiv").append(canvas);
                $scope.context = canvas.getContext("2d")
               
                //6. Show all pins on AA opened item
                $scope.showAllPins();
            }
        }, 1050);
    }

    function loadFailure() {
        console.log('unable to load opened module ietem');
       return true;
    }

    function getImageHeightWidth()
    {
           $scope.imageWidth = this.width;
           $scope.imageHeight = this.height;
    }

    angular.element(document).ready(function (e) {
        $("#ImagePanel").resize(function () {
            $("#imageDiv").scrollLeft($rootScope.CanvasDivLeftPosition);
            $("#imageDiv").scrollTop($rootScope.CanvasDivTopPosition);
        });

    })

    $scope.showAllPins = function () {

        var promise = ModuleService.getPinDataForImage($rootScope.imageName)

          .then(
            function (result) {
                $scope.aaPinData = result.data.Root.Item;
                debugger;
                angular.forEach($scope.aaPinData, function (value, key)
                {
                            
                    $scope.context.beginPath();
                    $scope.context.moveTo(value._PinX, value._PinY);
                    $scope.context.lineTo(value._HeadX, value._HeadY);
                    $scope.context.stroke();

                    var headX = (parseInt(value._HeadX)) - 20;
                    var headY = (parseInt(value._HeadY)) - 15;

                        var img = new Image();                  
                        img.src = "~/../../../content/images/noraml-pin.png";
                        img.onload = function () {
                        $scope.context.drawImage(img, headX, headY);
                    }

                })
             
                console.log(JSON.stringify(result, null, 4));
            },
             function (error) {
                 // handle errors here
                 console.log(' error: ' + error.statusText);
             }
            )
    }



}]);