LabExercController.js 15.3 KB
/// <reference path="../../content/data/json/le/LabExercise.js" />
AIA.controller("LabExercController", ["$scope", "$rootScope", "pages", "$log", '$http', 'DataService', '$filter', '$location', '$document', '$sce',"$compile","$location",
function ($scope, $rootScope, pages, log, $http, DataService, $filter, $location, $document, $sce, $compile, $location) {
    $scope.$sce = $sce;
    $scope.LabExerciseName;
    $scope.LabExerciseQuiz = null;
    $scope.TotalNumberofQuiz = "0";
    $scope.quiznumber = 1;
    $scope.activityTitle = "";
    $scope.Title = "";
    $scope.Imagepath = "";
    $scope.DraggedList = [];
    $scope.dragableId = "";
    $scope.blReviewAttempt = false;
    $scope.$on('$viewContentLoaded', function (event) {

        if ($rootScope.refreshcheck == null) {
            $location.path('/');
        }
        // code that will be executed ... 
        // every time this view is loaded

        //get current path
        var currentURL = $location.path();
        var selectedModuleName = '';
        //set module title
        angular.forEach($rootScope.userModules, function (value, key) {
            if (value.slug === currentURL.replace('/', '')) {
                selectedModuleName = value.name;
            }
            $rootScope.currentActiveModuleTitle = selectedModuleName;
        })

        $scope.showTabButton = false;
        //$rootScope.currentActiveModuleTitle = pages[8].name;
        $scope.getLabExerciseModules();

        $scope.scroll();
        $document.find('div#divoptions div.thumbnail').draggable();
        //$document.find("#droppable").droppable({
        //    drop: function (event, ui) {
        //        $(this)
        //          .find("img")
        //            .html("Dropped!");
        //    }
        //});

    });

    // $scope.showTabButton = false;
    $scope.IsVisible = function () {
        // $scope.scroll();


    }

    $scope.scroll = function () {
        // $window.scrollTo(0, 0);
        $("html,body").scrollTop(0);
        //alert("scroll");
    }
    // $rootScope.currentActiveModuleTitle = pages[8].Name;

    //to get all lab exercise modules from json files
    $scope.getLabExerciseModules = function () {
        //debugger;
        $scope.LabExerciseModules1 = null;
        var labExerciseModulePath = '~/../content/data/json/le/labexercise.json';

        DataService.getAnotherJson(labExerciseModulePath).then(
        function (result) {
            //debugger;
            //alert(JSON.stringify(result));
            $scope.LabExerciseModules1 = result;
        },
        function (error) {
            console.log(error.statusText)
        }
        )
    }

    $scope.getLabExerciseTitle = function (title) {
        $rootScope.menuLabExer = 1;

        if (title != null) {
            $scope.LabExerciseQuiz = title;
            $scope.LabExerciseName = title.Topic;
            $location.url("/lab-exercises-detail?labexercise=" + (title.Slug || ""));
        }

    }


    $scope.GetQuizByTopic = function () {

        if ($rootScope.refreshcheck == null) {
            $location.path('/');
        }
        var keywords = $location.search();
        $scope.LabExerciseName = keywords.labexercise;
        $scope.LabExerciseModules = null;
        $scope.LabExerciseBoxes = null;
        var labExerciseModulePath = '~/../content/data/json/le/' + $scope.LabExerciseName + '.json';

        DataService.getAnotherJson(labExerciseModulePath).then(
        function (result) {
            //debugger;
            // alert(JSON.stringify(result.LabExercise));
            $.each(result.LabExercise, function (index, value) {
                $scope.LabExerciseName = result.LabExercise[index].Topic;
                if (result.LabExercise[index].Slug == keywords.labexercise) {

                    $scope.TotalNumberofQuiz = result.LabExercise[index].NumberofQuestions;
                    $.each(result.LabExercise[index].Questions, function (index1, value1) {
                        if (result.LabExercise[index].Questions[index1].Number == $scope.quiznumber) {
                            if (result.LabExercise[index].Questions[index1].ImagePath == "") {
                                $("#imgblock").css("display", "none");
                                $scope.IsVisible = false;
                                $("#textblock").css("display", "block");
                                $scope.LabExerciseModules = result.LabExercise[index].Questions[index1];
                                $scope.deliberatelyTrustDangerousSnippet = function (html) {
                                   //var htmltag= $compile(html)($scope);
                                   return $sce.trustAsHtml(html);
                                };
                                $scope.activityTitle = result.LabExercise[index].Questions[index1].activityTitle;
                                $scope.Title = result.LabExercise[index].Questions[index1].Title;
                            }
                            else {
                                $("#imgblock").css("display", "block");
                                $scope.IsVisible = true;
                                $("#textblock").css("display", "none");
                                $scope.LabExerciseModules = result.LabExercise[index].Questions[index1];
                                $scope.activityTitle = result.LabExercise[index].Questions[index1].activityTitle;
                                $scope.Title = result.LabExercise[index].Questions[index1].Title;
                                $scope.Imagepath = keywords.labexercise + "/" + result.LabExercise[index].Questions[index1].ImagePath;
                            }
                            $scope.ShowHideDiv(result.LabExercise[index].Questions[index1].Options[0].textalign);
                        }
                    });
                    //$scope.quiznumber++;

                }

            });
            //$scope.ShowHideDiv();
        },
        function (error) {
            console.log(error.statusText)
        }
        )
    }

    $scope.nextQuiz = function () {
        if ($scope.quiznumber == $scope.TotalNumberofQuiz)
            return;
        else
            $scope.quiznumber++;
        $scope.resetQuiz();
        $scope.ShowHideDiv();
    }

    $scope.prevQuiz = function () {
        if ($scope.quiznumber == 1)
            return;
        else
            $scope.quiznumber--;

        $scope.resetQuiz();
        $scope.ShowHideDiv();
    }

    $scope.handleDragStart = function (e) {

        this.style.opacity = '0.4';
        e.dataTransfer.setData('text/plain', this.innerHTML);
        $scope.dragableId = $(this).attr("Id");

    };

    $scope.handleDragEnd = function (e) {
        this.style.opacity = '1.0';
    };

    $scope.handleDrop = function (e) {
        e.preventDefault();
        e.stopPropagation();
        var x = $("#droppable").offset();
        //alert(x.left + "," + $("#droppable").clientWidth + "," + x.top);

        var id = $(this).attr("id");
        var keywords = $location.search();
        var dataText = e.dataTransfer.getData('text/plain');
        if (id == "divoptions" || id == "divleft" || id == "divright") {
            var item = $('#' + $scope.dragableId).html();
            var rindex = $scope.DraggedList.indexOf(item);
            var labExerciseModulePath = '~/../content/data/json/le/' + keywords.labexercise + '.json';
            DataService.getAnotherJson(labExerciseModulePath).then(
            function (result) {

                $.each(result.LabExercise, function (index, value) {
                    if (result.LabExercise[index].Slug == keywords.labexercise) {
                        $.each(result.LabExercise[index].Questions, function (index1, value1) {
                            if (result.LabExercise[index].Questions[index1].Number == $scope.quiznumber) {
                                var Options = result.LabExercise[index].Questions[index1].Options;
                                $.each(Options, function (inx, value2) {
                                    if (Options[inx].OptionTitle == item) {
                                        if ($scope.DraggedList != null) {
                                            $.each($scope.DraggedList, function (inx1, value3) {

                                                if ($scope.DraggedList[inx1].Value == item) {
                                                    $scope.DraggedList.splice(inx1, 1);
                                                    $('#block-' + Options[inx].OptionNumber).css("display", "block");
                                                    $('#blockans-' + Options[inx].OptionNumber).css("background-color", "transparent !important");
                                                }
                                            });
                                        }
                                    }
                                });
                            }
                        });
                    }

                });

            },
            function (error) {
                console.log(error.statusText)
            }
            )
        }
        else {

            var labExerciseModulePath = '~/../content/data/json/le/' + keywords.labexercise + '.json';
            DataService.getAnotherJson(labExerciseModulePath).then(
            function (result) {
                $.each(result.LabExercise, function (index, value) {
                    if (result.LabExercise[index].Slug == keywords.labexercise) {
                        $.each(result.LabExercise[index].Questions, function (index1, value1) {
                            if (result.LabExercise[index].Questions[index1].Number == $scope.quiznumber) {
                                var Options = result.LabExercise[index].Questions[index1].OptionBox;
                                $.each(Options, function (inx, value2) {
                                    if (Options[inx].BoxName == id.split('-')[1]) {
                                        if ($scope.DraggedList != null) {
                                            $.each($scope.DraggedList, function (inx1, value3) {

                                                if ($scope.DraggedList[inx1].Value == dataText) {
                                                    $scope.DraggedList.splice(inx1, 1);
                                                }
                                            });
                                        }

                                        $scope.DraggedList.push({ "id": id.split('-')[1], "optionName": id.split('-')[1], "Value": dataText, "topcoord": Options[inx].topcoord, "leftcoord": Options[inx].leftcoord });
                                        //$('#' + $scope.dragableId).remove();
                                        $('#' + $scope.dragableId).css("display", "none");
                                        $('#blockans-' + Options[inx].OptionNumber).css("background-color", "transparent !important");
                                        //$('#' + id).remove();
                                    }
                                });
                            }
                        });
                    }

                });

            },
            function (error) {
                console.log(error.statusText)
            }
            )
        }
        $scope.$apply();
        //alert($("#divoptions").css("display") + "," + $("#divoptions").html());
        //if ($("#divoptions").css("display") == "block" && $("#divoptions").html()=="")
        //{
        //    $("#divoptions").html("<br><br><br><br>")
        //}
    };

    $scope.handleDragOver = function (e) {
        e.preventDefault(); // Necessary. Allows us to drop.
        e.dataTransfer.dropEffect = 'move';  // See the section on the DataTransfer object.
        //return false;
    };

    $scope.resetQuiz = function () {
        $scope.DraggedList = [];
        $scope.GetQuizByTopic();
    };

    $scope.ReviewAttempt = function () {
        var keywords = $location.search();
        var labExerciseModulePath = '~/../content/data/json/le/' + keywords.labexercise + '.json';
        DataService.getAnotherJson(labExerciseModulePath).then(
        function (result) {
            //alert(result)
            $.each(result.LabExercise, function (index, value) {
                if (result.LabExercise[index].Slug == keywords.labexercise) {
                    $.each(result.LabExercise[index].Questions, function (index1, value1) {
                        if (result.LabExercise[index].Questions[index1].Number == $scope.quiznumber) {
                            var correctResponse = result.LabExercise[index].Questions[index1].correctResponse;
                            var Options = result.LabExercise[index].Questions[index1].Options;
                            $.each(correctResponse, function (inx, value2) {
                                $scope.OptionName = "";
                                $.each(Options, function (inx1, value3) {
                                    if (Options[inx1].OptionTitle == $('#blockans-' + correctResponse[inx].OptionBox).text()) {
                                        $scope.OptionName = Options[inx1].OptionNumber;
                                    }
                                });
                                if (correctResponse[inx].Answer == $scope.OptionName) {
                                    blReviewAttempt = true;
                                }
                                else {
                                    blReviewAttempt = false;
                                    $('#blockans-' + correctResponse[inx].OptionBox).css("background", "#ff4e00");
                                }


                            });
                        }
                    });
                }
            });
        },
        function (error) {
            console.log(error.statusText)
        }
        )
    };

    $scope.ShowHideDiv = function (status) {

        if (status == "bottom") {
            $("#divright").css("display", "none");
            $("#divleft").css("display", "none");
            $("#divoptions").css("display", "block");

        }
        else {
            $("#divright").css("display", "block");
            $("#divleft").css("display", "block");
            $("#divoptions").css("display", "none");
        }

    };
   
}]

);

AIA.directive('draggable', function () {
    return {
        link: function ($scope, element, attrs) {
            element[0].addEventListener('dragstart', $scope.handleDragStart, false);
            element[0].addEventListener('dragend', $scope.handleDragEnd, false);
        }
    }
});

AIA.directive('droppable', function () {
    return {
        link: function ($scope, element, attrs) {
            element[0].addEventListener('drop', $scope.handleDrop, false);
            element[0].addEventListener('dragover', $scope.handleDragOver, false);
        }
    }
});

AIA.directive('imageonload', function () {
    return {
        restrict: 'A',
        link: function (scope, element, attrs) {
            element.bind('load', function (e) {
                $('#imgdiv').css('width', this.naturalWidth + "px");
            });
            element.bind('error', function () {
                //alert('image could not be loaded');
            });
        }
    };
});

//angular.module('app')
//.filter('to_trusted', ['$sce', function ($sce) {
//    return function (text) {
//        return $sce.trustAsHtml(text);
//    };
//}]);