1. JavaScript / Говнокод #16174

    +156

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    11. 11
    12. 12
    13. 13
    14. 14
    15. 15
    16. 16
    17. 17
    18. 18
    19. 19
    20. 20
    21. 21
    22. 22
    23. 23
    24. 24
    25. 25
    26. 26
    27. 27
    28. 28
    29. 29
    30. 30
    31. 31
    32. 32
    33. 33
    34. 34
    35. 35
    36. 36
    37. 37
    38. 38
    39. 39
    40. 40
    41. 41
    42. 42
    43. 43
    44. 44
    45. 45
    46. 46
    47. 47
    48. 48
    49. 49
    50. 50
    51. 51
    52. 52
    53. 53
    54. 54
    55. 55
    56. 56
    57. 57
    58. 58
    59. 59
    60. 60
    61. 61
    62. 62
    63. 63
    64. 64
    65. 65
    66. 66
    67. 67
    68. 68
    function EngineListCtrl($scope, $timeout, $http)
    {
    	$scope.engines = {};
    	$scope.workers = [];
    	
    	$scope.checkEngines = function(){
    		$http.get(engineUrl + '&type=json&jcmd=getClients').success(function(req){
    			var engines = {};
    			var workers = {};
    			$scope.workers = []; // Это в отрисовке не используется.
    			
    // Сначала распихиваю всех по местам
    			angular.forEach(req, function(ob, i){
    				if( ob.info.type == 'engine' )
    					engines[ob.info.engine] = ob;
    				
    				if( ob.info.type == 'worker' ){
    					if( workers[ob.info.engine] == undefined )
    						workers[ob.info.engine] = {};
    					workers[ob.info.engine][ob.info.worker] = ob;
    					if( ob.task && ob.task.state )
    						ob.info.state = ob.task.state;
    					$scope.workers.push(ob);
    				}
    			});
    			
    // Перебераю уже имеющиеся объекты
    			angular.forEach($scope.engines, function(engineOb, engineName){
    				var needRemove = true;
    				angular.forEach(engines, function(val, key){
    					if( engineName == key ){
    						angular.extend($scope.engines[engineName], val);
    						needRemove = false;
    					}
    				});
    				
    				if( needRemove == false && $scope.engines[engineName] ){
    					$scope.checkEngineEvents($scope.engines[engineName]);
    					if( workers[engineName] != undefined ){
    						if( $scope.engines[engineName].workers == undefined )
    							$scope.engines[engineName].workers = {};
    						angular.extend($scope.engines[engineName].workers, workers[engineName]);
    					}else
    						$scope.engines[engineName].workers = {};
    				}
    				
    				if( needRemove == true ){
    					delete $scope.engines[engineName];
    				}
    			});
    			
    // А теперь новые добавляю
    			angular.forEach(engines, function(engineOb, engineName){
    				if( $scope.engines[engineName] == undefined ){
    					$scope.engines[engineName] = engineOb;
    					if( workers[engineName] != undefined ){
    						if( $scope.engines[engineName].workers == undefined )
    							$scope.engines[engineName].workers = {};
    						angular.extend($scope.engines[engineName].workers, workers[engineName]);
    					}
    					$scope.checkEngineEvents($scope.engines[engineName]);
    				}
    			});
    			$timeout($scope.checkEngines, 2000);
    		});
    		
    	}
    	$timeout($scope.checkEngines, 1000);

    Запостил: JovialLiX, 16 Июня 2014

    Комментарии (14) RSS

    • А в Ангулар-то тоже форыч есть. А some / any таки нету? Или автор не знал?
      Ответить
      • Неа. Ангуляром пользуюсь крайне редко. Так что не в курсе.
        some / any - для чего нужно? Тут проблема с прорисовкой, при обновлении workers перерисовывается все сразу.
        Проблема здесь
        angular.extend($scope.engines[engineName].workers, workers[engineName]);
        Ответить
        • angular.forEach(engines, function(val, key){
          	if( engineName == key ){
          		angular.extend($scope.engines[engineName], val);
          		needRemove = false;
          	}
          });


          Вот это должно было быть как-нибудь типа:
          var needRemove = angular.some(engines, function (val, key) {
              return key == engineName;
          });
          Ответить
    • > Перебераю
      -бер- но -бира-

      P.S. Да, я сраный граммар-наци (при этом не знающий ни одного правила кроме "жи и ши пиши с буквой и", а правило про бер/бир тупо загугливший) и не смог пройти мимо ;( Минусуйте.
      Ответить
      • В этом сезоне модно.
        Ответить
        • [оффтоп]
          Кстати сейчас просто убойный вопрос попался на ответах майлсру:
          динис капустин: какой либо пишется через дифис или нет.
          [/оффтоп]
          Ответить
          • Я как-то порывался почитать эти рассадники фимоза, через пять минут моё лицо было красным от руколицевания. С тех пор обхожу стороной.
            Ответить
            • Да я гуглил как пишется "какой-либо". И там второй ссылкой вопрос этого диниса.
              Ответить
              • хрен бы с этим дифисом, но у меня кровавые мысли появляются в тот момент, когда вопросы пишут без соответствующего (вопросительного) знака. кровожадность увеличивается на 100, если это не точка, а восклицательный знак (или, что хуже, несколько таких)
                Ответить
    • Долго ждал, куда захуячить, дождался наполовину

      https://pbs.twimg.com/media/Bp1l0CPIgAAtcXP.jpg:large
      Ответить
      • Как отписаться от сообщений о ваших комментариях? :)
        Проблему давно решил, а на почту все сыпит сообщения из вашего филологического кружка :D
        Ответить
        • >Как отписаться от сообщений о ваших комментариях? :)
          удалить почтовый ящик, отформатировать диск, выкинуть комп и уехать в Сибирь.
          >Проблему давно решил
          Это тебе не какой-нибудь форум, чтоб тут проблемы решать.
          Ответить

    Добавить комментарий