ЙажаСценарий / Говнокод #16174 Ссылка на оригинал

0

  1. 1
  2. 2
  3. 3
  4. 4
  5. 5
  6. 6
  7. 7
  8. 8
  9. 9
  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 JovialLiX, (Updated )

Комментарии (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, если это не точка, а восклицательный знак (или, что хуже, несколько таких)
              Ответить
    • Как отписаться от сообщений о ваших комментариях? 🙂
      Проблему давно решил, а на почту все сыпит сообщения из вашего филологического кружка 😀
      Ответить
      • >Как отписаться от сообщений о ваших комментариях? 🙂
        удалить почтовый ящик, отформатировать диск, выкинуть комп и уехать в Сибирь.
        >Проблему давно решил
        Это тебе не какой-нибудь форум, чтоб тут проблемы решать.
        Ответить

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

Переведи на "PHP", guest!

    А не использовать ли нам bbcode?


    8