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

    0

    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
    function * getTreePost(postsInfo, id) {
      var parent = _.filter(postsInfo, function (item) {
        return Boolean(item._id == id);
      });
    
      var children = _.filter(postsInfo, function (item) {
        return Boolean(item.parentId);
      });
    
      return _.union(parent, findChildren(id, children));
    
      function findChildren(parentId) {
        if (parentId) {
          var data = _.where(children, {parentId: parentId});
          var ret = [];
          if (data.length) {
            _.each(data, function (item, index) {
              var data_r = findChildren(item._id);
              if (data_r.length) {
                ret = _.union(data_r, ret);
              }
            });
            return _.union(data, ret);
          } else
            return [];
        } else return [];
      }
    }

    обычная рекурсия

    volodymyrkoval, 18 Мая 2016

    Комментарии (1)
  2. JavaScript / Говнокод #20013

    0

    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
    function saveQuestion() {
    	var questionContent = {};
    	var questionResult = {};
    	switch(questionFields.attr('class')) {
    		case 'check-question':
    			questionResult.text = questionFields.children('.question-text')[0].innerText;																				
    			questionResult.type = 'check';
    			questionResult.answers = [];
    			[].forEach.call(questionFields.children('.answer-preview'), function(answerElement, i, arr) {
    				var answer = {};
    				answer.text = $(answerElement).children('.answer-text')[0].innerText;
    				answer.right = ($(answerElement).children('.answer-check')[0].checked) ? 1 : 0;
    				answer.weight = (!answer.right) ? $(answerElement).children('.answer-weight')[0].getPosition() : 1;
    				answer.weight = (answer.weight > 0 && answer.weight <= 1) ? answer.weight : 0;
    				questionResult.answers.push(answer);
    			});
    			
    			if (checkQuestionCorrect(questionResult)) {
    				questionResult= JSON.stringify(questionResult);
    				questionContent = JSON.parse(questionResult); //клонируем объект
    				[].forEach.call(questionContent.answers, function(answer, i, answers) { delete answer.right; delete answer.weight; });
    				questionContent = JSON.stringify(questionContent);
    				console.log('result: ' + questionResult);
    				console.log('content: ' + questionContent);
    				net.addQuestion(loID, questionContent, questionResult, function(r){
    					$('.add-question').slideUp(200, function(){
    						$('.add-question-row').remove();
    						openLOPreview(loID);
    					});
    				});
    			}
    		break;	
    		
    		case 'input-question':
    			var highlights = highlighter.highlights;
    			questionResult.type = 'input';
    			questionResult.text = $('#question-text-area').get(0).innerText;
    			questionResult.answers = [];
    			for (i = 0; i < highlights.length; i++) {
    				var answer = {};
    				answer.id = highlights[i].id;
    				answer.posStart = highlights[i].characterRange.start;
    				answer.posEnd = highlights[i].characterRange.end;
    				answer.text = highlights[i].answerText;
    				answer.strict = ('strict' in highlights[i]) ? highlights[i].strict : true;
    				questionResult.answers.push(answer);
    			}
    			questionResult.answers.sort(function(a, b){ return a.posStart - b.posStart; });
    			questionResult.serializedHighlight = highlighter.serialize();
    			questionResult = JSON.stringify(questionResult);
    			questionContent = JSON.stringify(questionContent);
    			
    			net.addQuestion(loID, questionContent, questionResult, function(r){
    				$('.add-question').slideUp(200, function(){
    						$('.add-question-row').remove();
    						openLOPreview(loID);
    					});
    			});	
    		break;
    		
    		default: break;
    	}							
    }

    Моя дипломная работа по теме "тестирование студентов". Конструктор тестов, обработчик кнопки сохранения вопроса. Используются библиотеки jQuery и Rangy (для работы с выделением текста).

    cotheq, 16 Мая 2016

    Комментарии (40)
  3. JavaScript / Говнокод #20011

    +4

    1. 1
    2. 2
    while (st.indexOf(" ") != -1)
            st = st.replace(" ", " ");

    FrontlineReporter, 15 Мая 2016

    Комментарии (37)
  4. JavaScript / Говнокод #19991

    0

    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
    /**
     * Static Content Helpers
     */
    (function (window, ng, app) {
    
        app.service('$StaticContentHelpers', function () {
    
            var instance = null;
    
            /**
             * Конструктор хелперов
             *
             * @returns {Object} Функции-хелперы
             * @constructor
             */
            function Init () {
    
                /**
                 * Обертка для статического контента,
                 * добавляет static домен, который пришел с бэкенда
                 *
                 * @param {String} url Урл, к которому необходимо добавить домен для статики
                 *
                 * @return {String} Готовый абсолютный url для статического контента
                 */
                function wrapStaticContent (url) {
                    // Проверим, от корня ли путь
                    return window.currentStaticDomain + ((/(^\/)/.test(url)) ? '' : '/') + url;
                }
    
                return {
                    wrapStaticContent: wrapStaticContent
                }
    
            }
    
            function getInstance () {
                if (!instance) {
                    instance = new Init();
                }
                return instance;
            }
    
            return {
                getInstance: getInstance
            };
    
        });
    
    }(window, angular, mainModule));

    гуру паттернов..

    _finico, 13 Мая 2016

    Комментарии (4)
  5. JavaScript / Говнокод #19985

    +5

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    6. 6
    7. 7
    $(document).on('click', 'a.switcher_link', function(e) {
        e.preventDefault();
        var btn = $(this);
        $.getJSON(btn.attr('href'), {type: 'json'}, function(data) {
          btn.parent().parent().parent().parent().parent().parent().parent().parent().replaceWith(data.data);
        });
      });

    Нашел и ахуел....

    gerasim13, 11 Мая 2016

    Комментарии (10)
  6. JavaScript / Говнокод #19984

    +4

    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
    $ nodejs
    > var buffer = new ArrayBuffer(2);
    undefined
    > var uint16View = new Uint16Array(buffer);
    undefined
    > var uint8View = new Uint8Array(buffer);
    undefined
    > uint16View[0]=0xff00
    65280
    > uint8View[1]
    255
    > uint8View[0]
    0

    https://developer.mozilla.org/en/docs/Web/JavaScript/Typed_arrays
    endianness - теперь и в жабаскрипте. Почти как union

    j123123, 11 Мая 2016

    Комментарии (15)
  7. JavaScript / Говнокод #19946

    −2

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    11. 11
    this.params.IsCellEditable = function(rowNumber, cellNumber) {
    	cellNumber == 1;
    	this.params.ButtonList = this.params.ButtonList.filter(b=>b[0] === "OnRefresh");
    
    	let textContr = new CTextArea('textContr');
    	textContr.SourceName = "value";
    	textContr.ViewName = "Params";
    	textContr.ComEdit = true;
    	this.params.arrEditObj[1] = textContr;
    
    }

    Найдено в нашем проекте в старом модуле, в авторстве никто не признаётся.
    Во-первых, строка 2 бессмысленна. Во-вторых, всё последующее имело бы хоть какой-то смысл _вне_ этой функции, а внутри уже на строке 3 выкидывает ошибку, потому что контекст там и есть this.param из первой строчки. В-третьих, строка 3 призвана выкидывать из тулбара виджета this.param все кнопки, кроме OnRefresh, но на самом деле она там только одна и есть. В-четвёртых, строчки 7 и 8 просто лишние (ну, это из логики используемого в проекте движка следует). В-пятых, из названия метода можно предположить (и это действительно так), что он должен бы возвращать булевское значение, но он всегда возвращает только undefined и, таким образом, все ячейки виджета оказываются нередактируемыми — что совсем лишает смысла создание контрола для редактирования в строках 5—9.
    Редкостная бредятина. Кто-то в полном затмении писал, и даже десяти секунд не потратил на тестирование.

    torbasow, 06 Мая 2016

    Комментарии (8)
  8. JavaScript / Говнокод #19939

    0

    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
    function floatToStringPrec(f, precisionDigits)
    {
        var PRECISION = Math.pow(10, precisionDigits);
        
        var integerPart = Math.floor(f);
        var fractionalPart = f % 1;
        if (fractionalPart == 0)
        {
            return integerPart.toString();
        }
        
        var zeroesInFracPart = -Math.log10(fractionalPart);
        if (Math.floor(zeroesInFracPart) == zeroesInFracPart)
        {
            zeroesInFracPart--;
        }
        else
        {
            zeroesInFracPart = Math.floor(zeroesInFracPart);
        }
        
        fractionalPart = Math.round(fractionalPart * PRECISION);
    
        while (fractionalPart % 10 == 0)
        {
             fractionalPart /= 10;
        }
        
        var zeroes = '';
        
        if (zeroesInFracPart > 0)
        {
            zeroes = Array(zeroesInFracPart + 1).join('0');
        }
        
        return integerPart.toString() + '.' + zeroes + fractionalPart.toString();
    }

    Преобразовать плавающего питуха в строку; сохранить не более precisionDigits цифр после запятой (остальные - округлить).

    gost, 05 Мая 2016

    Комментарии (31)
  9. JavaScript / Говнокод #19925

    0

    1. 1
    var routers = new (R(views))();

    Чет по другому не придумал как в роутер view передать

    arny, 04 Мая 2016

    Комментарии (1)
  10. JavaScript / Говнокод #19924

    0

    1. 1
    2. 2
    3. 3
    //- ASAP OR DIE♪
        //   re: ASAP OR DIE♪
        //-   next time, you should die

    mcheguevara2, 04 Мая 2016

    Комментарии (1)