var Dedicated = {}; Dedicated.SliderController = (function(predefinedSelection){ var SliderController = function($scope, $http, $rootScope) { $scope.values = {value: 0, price: 0}; $scope.value = {} $scope.value.scope = $scope; $scope.value.loadedValue = predefinedSelection.backup; }; return SliderController; }(predefinedSelection)); Dedicated.HardwareController = (function(platformList, periodKoeficient, tariffResourceCode, licences, languages, predefinedSelection){ var HardwareController = function ($scope, $http) { $scope.dedicatedHardware = platformList; $scope.periodKoeficient = periodKoeficient; $scope.tariffResourceCode = tariffResourceCode; $scope.languages = languages; $scope.json = {}; $scope.licences = licences; $scope.predefinedSelection = predefinedSelection; $scope.totalPrice = { total: 0, base: 0, }, $scope.isChosenConfig = false; $scope.canSendForm = function(){ if( ! $scope.isChosenConfig){ alert('Nejprve musíte zvolit variantu platformy'); return false; } return true; } for(var i=0; i < $scope.dedicatedHardware.length; i++){ var currentHw = $scope.dedicatedHardware[i]; currentHw.priceIncludingHousing = parseInt(currentHw.price) + parseInt(currentHw.housingPrice) ; } $scope.defaults = { period: $scope.periodKoeficient[0], licence: $scope.licences[0], language: $scope.languages[0], } $scope.selected = { hw: { shortName: 'Varianta platformy', description: '', price: 0, ramList: [], hddList: [], cpuList: [], }, ram: [], cpu: [], hdd: [], tariffResourceCode: { label: $scope.tariffResourceCode }, period: $scope.defaults.period, licence: $scope.defaults.licence, language: $scope.defaults.language, }; if($scope.licences[0] !== undefined && $scope.licences[0].hasOwnProperty('label')){ $scope.additionalLicence = ''; } $scope.$watch(function(){return $scope.additionalLicence;}, function(newVal, oldVal){ if(newVal != oldVal){ buildJson(); } }); $scope.selectPlatform = function(hw){ if(hw.shortName == $scope.selected.hw.shortName){ return; } unselectAll($scope.selected.hw.ramList); unselectAll($scope.selected.hw.hddList); unselectAll($scope.selected.hw.cpuList); unselectAll($scope.periodKoeficient); $scope.selected.hw = hw; unselectAll($scope.dedicatedHardware); $scope.selected.hw.isSelected = true; resetComponents(); $scope.isChosenConfig = true; $('.other-params').show(); } var buildJson = function(backup){ var selectedConfiguration = {}; selectedConfiguration['platform'] = $scope.selected.hw.shortName; for(var key in $scope.selected){ if($scope.selected.hasOwnProperty(key) && $scope.selected[key] != undefined){ if($scope.selected[key].hasOwnProperty('label')){ selectedConfiguration[key] = $scope.selected[key].label } } } if($scope.additionalLicence !== undefined){ selectedConfiguration['additionalLicence'] = $scope.additionalLicence; } if(backup !== undefined){ selectedConfiguration['backup'] = backup; } $scope.json = JSON.stringify(selectedConfiguration); } var resetComponents = function(){ $scope.selectComponent('hdd', $scope.selected.hw.hddList[0], $scope.selected.hw.hddList); $scope.selectComponent('ram', $scope.selected.hw.ramList[0], $scope.selected.hw.ramList); $scope.selectComponent('cpu', $scope.selected.hw.cpuList[0], $scope.selected.hw.cpuList); } var unselectAll = function(selectableComponentList){ for(var i = 0; i < selectableComponentList.length; i++){ selectableComponentList[i].isSelected = false; } }; var getForWatch = function(){ var watch = $scope.selected; return angular.toJson(watch); } buildJson(); $scope.$emit('SH_CONFIG_EMERGED', $scope.json); $scope.$on('JSON_UPDATE', function(event, shConfig){ $scope.json = shConfig; }); $scope.$watch(function(){return getForWatch();}, function(newVal, oldVal){ if(oldVal != newVal){ $scope.$emit('SH_CONFIG_EMERGED', $scope.json); } }) $scope.selectComponent = function(componentName, component, compList){ $scope.selected[componentName] = component; unselectAll(compList); $scope.selected[componentName].isSelected = true; buildJson(); } $scope.selectFirstProvenConfiguration = function(){ var provenHardware = $scope.dedicatedHardware[0]; $scope.selectPlatform(provenHardware); $scope.selectComponent('hdd', provenHardware.hddList[6], provenHardware.hddList); $scope.selectComponent('ram', provenHardware.ramList[0], provenHardware.ramList); $scope.selectComponent('cpu', provenHardware.cpuList[0], provenHardware.cpuList); } $scope.selectSecondProvenConfiguration = function(){ var provenHardware = $scope.dedicatedHardware[2]; $scope.selectPlatform(provenHardware); $scope.selectComponent('hdd', provenHardware.hddList[0], provenHardware.hddList); $scope.selectComponent('ram', provenHardware.ramList[4], provenHardware.ramList); $scope.selectComponent('cpu', provenHardware.cpuList[1], provenHardware.cpuList); } $scope.selectPredefinedComponent = function(componentList, predefinedComponent, label){ for(var m in componentList){ if(componentList[m].label == predefinedComponent){ $scope.selectComponent(label, componentList[m], componentList); } } }; $scope.selectPredefinedForPlatform = function(platform){ $scope.selectPlatform(platform); var componentMap = { 'cpuList' : 'cpu', 'hddList' : 'hdd', 'ramList' : 'ram', }; for(var j in componentMap){ for(var k in platform[j]){ var compList = platform[j]; if(predefinedSelection[componentMap[j]] == compList[k].label){ $scope.selectComponent(componentMap[j], compList[k], compList); } } } $scope.selectPredefinedComponent(periodKoeficient, predefinedSelection.period, 'period'); if(predefinedSelection.licence){ $scope.selectPredefinedComponent($scope.licences, predefinedSelection.licence, 'licence'); } if(predefinedSelection.language){ $scope.selectPredefinedComponent($scope.languages, predefinedSelection.language, 'language'); } if(predefinedSelection.additionalLicence){ $scope.additionalLicence = predefinedSelection.additionalLicence; } } initialSelection = {}; initialSelection.period = predefinedSelection.period; initialSelection.licence = predefinedSelection.licence; initialSelection.language = predefinedSelection.language; initialSelection.cpu = predefinedSelection.cpu; initialSelection.hdd = predefinedSelection.hdd; initialSelection.ram = predefinedSelection.ram; initialSelection.tariffResourceCode = predefinedSelection.tariffResourceCode; initialSelection.backup = predefinedSelection.backup; initialSelection.platform = predefinedSelection.platform; $scope.$emit('SH_CONFIG_EMERGED', JSON.stringify(initialSelection)); for(var i in $scope.dedicatedHardware){ if($scope.dedicatedHardware[i].shortName == predefinedSelection.platform){ $scope.selectPredefinedForPlatform($scope.dedicatedHardware[i]); } } }; return HardwareController; }(platformList, periodKoeficient, tariffResourceCode, licences, languages, predefinedSelection));