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

    0

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    checkTableFilters () {
        if (this._activeTableFilter && this._filter.filter._filters.get(this._activeTableFilter)) {
          this._filter.filter._filters.get(this._activeTableFilter).Update();
        }
      }

    "Так вышло" - хороший ответ.
    1. this._filter.filter._filters (фильтры фильтра фильтра?..)
    2. Зачем имитировать приватность полей класса соглашением о наименовании, если её игнорируют как могут?..
    3. ... дополните сами

    webviewer, 30 Января 2019

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

    +2

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    11. 11
    12. 12
    let tableCellHamburgers = Array.prototype.slice.call(document.getElementsByClassName('js-listen__letters-table__hamburger'));
      tableCellHamburgers.forEach((tableCellHamburger) => {
    	let code = Array.prototype.slice.call(tableCellHamburger.classList).filter(elem => elem.indexOf('js-table__cell__hamburger__') === 0)[0].replace('js-table__cell__hamburger__', '');
    	let searchInput = document.querySelector(`.js-table__cell__search-input__${code}`);
    	if (!(searchInput && searchInput.value)) {
    	  tableCellHamburger.style.filter = 'none';
    	}
    	let dropdownContent = document.querySelector(`.js-table__cell__dropdown-content__${code}`);
    	if (dropdownContent) {
    	  dropdownContent.style.display = 'none';
    	}
      });

    Автор этого кода (full-stack программист) собирался выпилить jQuery из проекта, т.к. всю работу с DOM давно можно красиво писать на чистом ES6. К счастью, он уволился, не осуществив свой замысел.

    webviewer, 30 Января 2019

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

    +2

    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
    (function(_){
    _.mixin({makeCarouselWidget: function (container, el, width, height, tmpl) {
        var list_of_rows = _(container).groupBy(function(e, index){
            return Math.floor(index / (width * height));
        });                                             // transform collection to list by 'num_of_cols' chunks
        _(list_of_rows).each(function(row){
            var list_of_chunks = _(row).groupBy(function(e, index){
                return Math.floor(index/width);
            });
            var li = $('<li>').appendTo(el);
            _.each(list_of_chunks, function(chunk){
                var r = $('<div>').attr('class','row fooitem')
                    .attr('style', "margin-right:50px;").appendTo(li);
                _.each(chunk, function(item){
                    r.append(
                        tmpl.render(item)
                    );
                });
            })
        });                                             // each list_of_rows
    }});
    })(_);

    Я хочу быть кочегаром, кочегаром, кочегаром.
    Работать сутки-через-трое, через-трое, через-трое...

    gueest8, 20 Января 2019

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

    +2

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    11. 11
    12. 12
    ...
    removed: function(row) {
    
        if ($(row).find('textarea')[0].style.backgroundColor === "red") {
            $(row).find('textarea')[0].style.backgroundColor = "white";
            --disabled_elements_count;
        }
    
        if (disabled_elements_count === 0) {
            $("input[type='submit']").prop('disabled', false);
        }
    }, ...

    eternalfame, 11 Января 2019

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

    +1

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    11. 11
    12. 12
    $( obj ).text( "Сохранение..." );
    
      $.ajax({
        url: url,
        type: "POST",
        data: params,
        dataType: "json",
        success: function( response ) {
          $(obj).parent().parent().parent().parent().parent().html( response.data );
          prepareeventhandlers();
        }
      });

    eternalfame, 10 Января 2019

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

    +1

    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
    function preventSelection(element){
      var preventSelection = false;
    
      function addHandler(element, event, handler){
        if (element.attachEvent) 
          element.attachEvent('on' + event, handler);
        else 
          if (element.addEventListener) 
            element.addEventListener(event, handler, false);
      }
      function removeSelection(){
        if (window.getSelection) { window.getSelection().removeAllRanges(); }
        else if (document.selection && document.selection.clear)
          document.selection.clear();
      }
      function killCtrlA(event){
        var event = event || window.event;
        var sender = event.target || event.srcElement;
    
        if (sender.tagName.match(/INPUT|TEXTAREA/i))
          return;
    
        var key = event.keyCode || event.which;
        if (event.ctrlKey && key == 'A'.charCodeAt(0))  // 'A'.charCodeAt(0) можно заменить на 65
        {
          removeSelection();
    
          if (event.preventDefault) 
            event.preventDefault();
          else
            event.returnValue = false;
        }
      }
    
      // не даем выделять текст мышкой
      addHandler(element, 'mousemove', function(){
        if(preventSelection)
          removeSelection();
      });
      addHandler(element, 'mousedown', function(event){
        var event = event || window.event;
        var sender = event.target || event.srcElement;
        preventSelection = !sender.tagName.match(/INPUT|TEXTAREA/i);
      });
    
      // борем dblclick
      // если вешать функцию не на событие dblclick, можно избежать
      // временное выделение текста в некоторых браузерах
      addHandler(element, 'mouseup', function(){
        if (preventSelection)
          removeSelection();
        preventSelection = false;
      });
    
      // борем ctrl+A
      // скорей всего это и не надо, к тому же есть подозрение
      // что в случае все же такой необходимости функцию нужно 
      // вешать один раз и на document, а не на элемент
      addHandler(element, 'keydown', killCtrlA);
      addHandler(element, 'keyup', killCtrlA);
    }

    Долбоёбы борются с ветряными мельницами.

    gost, 05 Января 2019

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

    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
    protected setElementModel(formModel: any): any {
                var self = this;
    
                var workModel = jQuery.extend(true, {}, formModel, {
                    onSave: function (e) { e.preventDefault(); self._onSave(e); },
                    onSaveExit: function (e) { e.preventDefault(); self._onSaveExit(e); },
                    onCancel: function (e) { e.preventDefault(); self._onCancel(e); },
                    }
                );
    
                return self.setModel(workModel);
            }
    
            protected setModel(formModel: any): any {
                return formModel;
            }

    typescript at its best

    phpMASTER666, 26 Декабря 2018

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

    +2

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    11. 11
    12. 12
    const arr = [['govno',  'shit'], ['kod', 'code']]
    //we expect it to be {'govno': 'shit', 'kod' :  'code'}
    
    //unsupported(yet)
    Object.fromEntries = arr => 
        Object.assign({}, ...Array.from(arr, ([k, v]) => ({[k]: v}) ));
    const res1 = Object.fromEntries(arr)
    
    const res2 = arr.reduce((res, [key, value]) => Object.defineProperty(res, key, {'value': value, 'enumerable': true}), {})
    
    const res3 = {}
    arr.forEach(([key, value]) => res3[key] = value)

    А как превратить массив пар ключ-значение в ассоциативный на Вашем языке?

    bootcamp_dropout, 23 Декабря 2018

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

    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
    class Cat {
      constructor(
        public name: string) {
      }
      toCoolCat(coolness: number): CoolCat {
        return new CoolCat(this.name, coolness);
      }
    }
    // ...
    class CoolCat extends Cat {
      constructor(
        name: string,
        public coolness: number) {
    
        super(name);
      }
    }
    //...
    function addCoolCat(coolness: number, cat: Cat): void {
      this.coolCats.push(cat.toCoolCat(coolness);
    }
    //...
    addCoolCat(80, {name: 'Greycat'});

    Вроде TypeScript, а на самом деле NotCompletelyTypeScript.
    Во время выполнения получим ошибку "cat.toCoolCat is not a function". Тем не менее, компилятор TypeScript позволяет это (а конкретно, строку 23) скомпилировать. Хотелось бы, чтобы не позволял.

    wissenstein, 19 Декабря 2018

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

    0

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    6. 6
    7. 7
    8. 8
    коммит на гитхабе:
    https://github.com/nativescript-vue/nativescript-vue.org/commit/f964457a5e4944864485c7194b0b5d850f8edb67
    русская документация:
    https://nativescript-vue.org/ru/docs/routing/manual-routing/#navigateto
    английская документация:
    https://nativescript-vue.org/en/docs/routing/manual-routing/#passing-props-to-the-modal
    
    угадайте, какой вариант передачи пропсов рабочий ?

    #SEO документация, JS.

    хуита, 13 Декабря 2018

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