- 1
- 2
- 3
- 4
- 5
checkTableFilters () {
if (this._activeTableFilter && this._filter.filter._filters.get(this._activeTableFilter)) {
this._filter.filter._filters.get(this._activeTableFilter).Update();
}
}
Нашли или выдавили из себя код, который нельзя назвать нормальным, на который без улыбки не взглянешь? Не торопитесь его удалять или рефакторить, — запостите его на говнокод.ру, посмеёмся вместе!
0
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. ... дополните сами
+2
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. К счастью, он уволился, не осуществив свой замысел.
+2
(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
}});
})(_);
Я хочу быть кочегаром, кочегаром, кочегаром.
Работать сутки-через-трое, через-трое, через-трое...
+2
...
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);
}
}, ...
+1
$( obj ).text( "Сохранение..." );
$.ajax({
url: url,
type: "POST",
data: params,
dataType: "json",
success: function( response ) {
$(obj).parent().parent().parent().parent().parent().html( response.data );
prepareeventhandlers();
}
});
+1
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);
}
Долбоёбы борются с ветряными мельницами.
0
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
+3
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)
А как превратить массив пар ключ-значение в ассоциативный на Вашем языке?
0
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) скомпилировать. Хотелось бы, чтобы не позволял.
0
коммит на гитхабе:
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.