63 lines
		
	
	
		
			2.4 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
			
		
		
	
	
			63 lines
		
	
	
		
			2.4 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
/*
 | 
						|
	Logic Solution
 | 
						|
	WeeeCarbonFootprint
 | 
						|
	this directive is resiponsible for quote UX , and deep clone the quoted data
 | 
						|
    therefore we need the caller to provide 
 | 
						|
    1.query api 
 | 
						|
    2.save back function
 | 
						|
 | 
						|
    paramas:{ 
 | 
						|
        queryDataAsyncFn : function (LCAID) //to get the list of survey form data
 | 
						|
        saveAsyncFn : function(List) //call back to save new quoted data with ID set to 0
 | 
						|
        fillterProductLCA : true/false //if product lca should be diplay in options
 | 
						|
    }
 | 
						|
*/
 | 
						|
 | 
						|
angular.module('View.Directive')
 | 
						|
    .directive('quote', function (CONSTANTS) {
 | 
						|
        var arr = window.location.href.split("/");
 | 
						|
        if (arr[3].indexOf('app') == 0)
 | 
						|
            baseUrl = '';
 | 
						|
        else
 | 
						|
            baseUrl = '/' + arr[3];
 | 
						|
 | 
						|
        return {
 | 
						|
            restrict: 'A',
 | 
						|
            scope: {
 | 
						|
                paramas: "=quoteOptions",
 | 
						|
            },
 | 
						|
            transclude: true,
 | 
						|
            controller: function ($scope, $http, $routeParams) {
 | 
						|
                var lcaList = $scope.lcaList = [];
 | 
						|
                $scope.error = null;
 | 
						|
                $http.get(baseUrl+'/api/LCA/GetMyLCAforQuote').success(function (data) {
 | 
						|
                    angular.forEach(data, function (entry) {
 | 
						|
                        entry.isProductLCA = isProductLCA(entry.LCAType);
 | 
						|
                        if (entry.ID != $routeParams.LCAID)
 | 
						|
                            lcaList.push(entry);
 | 
						|
                    });
 | 
						|
                });
 | 
						|
                $scope.fetchQuoteData = function (selectedLCA) {
 | 
						|
                    var quoteResult = selectedLCA.quoteResult = [];
 | 
						|
                    $scope.paramas.queryDataAsyncFn(selectedLCA.ID).then(function (result) {
 | 
						|
                        angular.copy(result, quoteResult);
 | 
						|
                        angular.forEach(quoteResult, function (entry) {
 | 
						|
                            entry.ID = 0;
 | 
						|
                            entry.LCAID = $routeParams.LCAID;
 | 
						|
                        });
 | 
						|
                        $scope.error = null;
 | 
						|
                    }, function (error) {
 | 
						|
                        $scope.error = error;
 | 
						|
                    });
 | 
						|
                }
 | 
						|
                $scope.quote = function (selected) {
 | 
						|
                    $scope.paramas.saveAsyncFn(selected.quoteResult).then(function (result) {
 | 
						|
                        $scope.error = null;
 | 
						|
                    }, function (error) {
 | 
						|
                        $scope.error = error;
 | 
						|
                    });
 | 
						|
                }
 | 
						|
            },
 | 
						|
            templateUrl: CONSTANTS.TB + 'quote'
 | 
						|
        }
 | 
						|
    }) |