/* Logic Solution WeeeCarbonFootprint Template Directive displayOption example: { show: true/false, onOk(selected,selectedType): callback function , selected : the parameter that user selected , selectedType : the category that parameter belongs } */ angular.module('View.Directive') .directive('quality', function (CONSTANTS) { var arr = window.location.href.split("/"); if (arr[3].indexOf('app') == 0) baseUrl = ''; else baseUrl = '/' + arr[3]; return { restrict: 'E', scope: { displayOption: '=displayOption', }, transclude: true, controller: function ($scope, $element, $timeout, $http) { function DQRni2DQRi(DQRni) { var ret; switch (DQRni) { case 1: case 2: case 3: ret = 1; break; case 4: case 5: ret = 2; break; case 6: case 8: case 9: ret = 3; break; case 10: case 12: case 16: ret = 4; break; case 15: case 20: case 25: ret = 5; break; default: ret = 0; break; } //console.log('DQRni2DQRi', DQRni, ret); return ret; } function DQR(Re, Co, Ti, Ge, Te) { if (isNaN(Re) || isNaN(Co) || isNaN(Ti) || isNaN(Ge) || isNaN(Te)) return NaN; var Xw = 0; if (Re > Xw) Xw = Re; if (Co > Xw) Xw = Co; if (Ti > Xw) Xw = Ti; if (Ge > Xw) Xw = Ge; if (Te > Xw) Xw = Te; var ret; ret = (Re + Co + Ti + Ge + Te + Xw * 5.0) / 10; return ret; } $scope.calculate = function () { if ($scope.displayOption != undefined) { //console.log('calculate'); $scope.displayOption.data.DQRniRe = $scope.displayOption.data.DQRaiRe * $scope.displayOption.data.DQReiRe; $scope.displayOption.data.DQRniCo = $scope.displayOption.data.DQRaiCo * $scope.displayOption.data.DQReiCo; $scope.displayOption.data.DQRniTi = $scope.displayOption.data.DQRaiTi * $scope.displayOption.data.DQReiTi; $scope.displayOption.data.DQRniGe = $scope.displayOption.data.DQRaiGe * $scope.displayOption.data.DQReiGe; $scope.displayOption.data.DQRniTe = $scope.displayOption.data.DQRaiTe * $scope.displayOption.data.DQReiTe; $scope.displayOption.data.DQRiRe = DQRni2DQRi($scope.displayOption.data.DQRniRe); $scope.displayOption.data.DQRiCo = DQRni2DQRi($scope.displayOption.data.DQRniCo); $scope.displayOption.data.DQRiTi = DQRni2DQRi($scope.displayOption.data.DQRniTi); $scope.displayOption.data.DQRiGe = DQRni2DQRi($scope.displayOption.data.DQRniGe); $scope.displayOption.data.DQRiTe = DQRni2DQRi($scope.displayOption.data.DQRniTe); $scope.displayOption.data.DQR = DQR( $scope.displayOption.data.DQRiRe, $scope.displayOption.data.DQRiCo, $scope.displayOption.data.DQRiTi, $scope.displayOption.data.DQRiGe, $scope.displayOption.data.DQRiTe ); $scope.displayOption.data.DQRw = $scope.displayOption.data.DQR * $scope.displayOption.data.Fi; } }; $scope.onOkFn = function () { $http.post(baseUrl+'/api/DataQualityLevel/Save/', $scope.displayOption.data ).success(function (data) { //console.log(data); }).error(function (data, status) { //console.log(data, status); }); $scope.displayOption.show = false; }; $scope.onCancelFn = function () { $scope.displayOption.show = false; }; }, link: function (scope, element, attrs) { // using $watch to find modal opening event scope.$watch('displayOption', function (newValue, oldValue) { if (scope.displayOption && (scope.displayOption.show == true)) { // add class 'modal-open' to if a modal is opening angular.element('body').addClass('modal-open'); //alert('show'); } else if (scope.displayOption && (scope.displayOption.show == false)) { // remove class 'modal-open' from if a modal is colsing angular.element('body').removeClass('modal-open'); //alert('hide'); } // Reset form status by $setPristine if (scope.passedForm) { scope.passedForm.$setPristine(); } }, true) }, templateUrl: CONSTANTS.TB + 'quality' }; });