These are chat archives for synrc/n2o

18th
Sep 2015
Andy
@m-2k
Sep 18 2015 07:26
action_jq:render_action(#jq{target=inp1,property=contentEditable,right= <<"true">>}). =>
"qi('inp1').contentEditable = 'true';"
action_jq:render_action(#jq{target=inp1,property=contentEditable,right=true}).       
** exception error: bad argument
     in function  iolist_to_binary/1
        called as iolist_to_binary(true)
     in call from action_jq:render_action/1 /nitro/src/actions/action_jq.erl, line 24)
разве нинад добавить обработку true/false/undefined?
Namdak Tonpa
@5HT
Sep 18 2015 08:50
надо делать lists:concat/1
Andy
@m-2k
Sep 18 2015 08:51
где
Namdak Tonpa
@5HT
Sep 18 2015 08:51
ну когда true этот в строку превратить хотим
Andy
@m-2k
Sep 18 2015 08:52
мне фикс сделать?
там стока говнокода..
:smile:
Namdak Tonpa
@5HT
Sep 18 2015 08:52
ой попизди мне тут
Andy
@m-2k
Sep 18 2015 08:53
ты сам посмотри
Andrii Sergiienko
@fycth
Sep 18 2015 08:53
"скажи мне это в лицо!!"
Andy
@m-2k
Sep 18 2015 08:53
кароч такая тема
предлагаю поменять el.innerHTML на el.innerText
Namdak Tonpa
@5HT
Sep 18 2015 08:54
и шо станет?
Andy
@m-2k
Sep 18 2015 08:54
последний не возвращает теги и прочую ненужную шушару
ваще кароч афигенно все возвращает
Namdak Tonpa
@5HT
Sep 18 2015 08:55
а если пользователь захочет вставлять таблицы?
Andy
@m-2k
Sep 18 2015 08:55
ШТО
Namdak Tonpa
@5HT
Sep 18 2015 08:56
за контентэдитабл доктор отвечает
Andy
@m-2k
Sep 18 2015 08:56
ну <> можно написать, оно так и останется
Namdak Tonpa
@5HT
Sep 18 2015 08:56
с ним разбирайся :-)
там надо какой-то if влепить
Andy
@m-2k
Sep 18 2015 08:56
кароче что напиасал то и остается а если переместил кнопку в поле, то <input> не приедет а только текст кнопки
ахуенно же
Namdak Tonpa
@5HT
Sep 18 2015 08:57
счас самый главный фикс это сделать так чтобы bin на клиенте в енкодере работал без utf8
я понял твой фикс
ты хочешь чтобы textarea была как на translate.google.com
ты туда копируешь и оно обрезает все стили и копирует туда только текст
Andy
@m-2k
Sep 18 2015 08:57
в общем расскажи мне как взять innerText у элемента по нажатию кнопки и отправить на сервер?
Namdak Tonpa
@5HT
Sep 18 2015 08:58
контентэдитабл доктор использвоал для рич эдиторов
Andy
@m-2k
Sep 18 2015 08:58
я ниче не хочу, прост textarea не ресайзится автоматом по высоте
я смотрел на #ev и прочее, ниче не нашел как запикленным способом навешивать ивенты которые будут выполнять в браузере произвольный код
как это сделать? и тогда фикс нинужон
Namdak Tonpa
@5HT
Sep 18 2015 09:00
wf:wire очевидно
Andy
@m-2k
Sep 18 2015 09:00
пиклер руками вызывать?
Namdak Tonpa
@5HT
Sep 18 2015 09:01
можно client протокол для контролов использовать
можно формировать что-то типа wf_event в своем контроле
и руками пиклер вызывать чо
ты контрол сделал ?
Andy
@m-2k
Sep 18 2015 09:01
всмысле сделать свой контрол?
Namdak Tonpa
@5HT
Sep 18 2015 09:02
ну то что ты делаешь ты делаешь свой контрол
Andy
@m-2k
Sep 18 2015 09:02
я уже сделал блядь контрол который preventdefault добавляет в конец js
там 99% кода из n2o и 1 строка моя
Namdak Tonpa
@5HT
Sep 18 2015 09:02
давай будем честными
Andy
@m-2k
Sep 18 2015 09:02
и мне его типа придется синхронизировать постоянно на случай если чето в n2o поменяется
Namdak Tonpa
@5HT
Sep 18 2015 09:03
в n2o нет никаких контролов
Andy
@m-2k
Sep 18 2015 09:03
nitro
Namdak Tonpa
@5HT
Sep 18 2015 09:03
отож
Andy
@m-2k
Sep 18 2015 09:03
разница так важна?
Namdak Tonpa
@5HT
Sep 18 2015 09:03
    case element(#element.validation,Element) of
         [] -> skip;
         Code ->
         nitro:wire(nitro:f("{var name='~s'; qi(name)"
           ".addEventListener('validation',"
              "function(e) { if (!(~s)) e.preventDefault(); });"
              "qi(name).validation = true;}",[Id,Code]));
         _ -> skip end,
вот тут есть превент дефаулт
ты о чем?
Andy
@m-2k
Sep 18 2015 09:03
это откуда
Namdak Tonpa
@5HT
Sep 18 2015 09:04
от верблюда
wf_render_elements.erl
Andy
@m-2k
Sep 18 2015 09:05
это валидация вроде как
вот мой контрол
render_action(#event{postback=Postback,actions=_Actions,source=Source,target=Control,type=Type,delegate=Delegate}) ->
    Element=wf:to_list(Control),
    Data=list_to_binary([<<"[tuple(tuple(utf8_toByteArray('">>,Element,<<"'),bin('detail')),event.detail)">>,
         [ begin {SrcType,Src2}=case is_atom(Src) of
                 true -> { <<"atom">>,atom_to_list(Src) };
                 false -> { <<"utf8_toByteArray">>,Src } end,
             [ <<",tuple(">>,SrcType,<<"('">>,Src2,<<"'),querySource('">>,Src2,<<"'))">> ]
             end || Src <- Source ],<<"]">>]),
    PostbackBin = wf_event:new(Postback, Element, Delegate, event, Data, Source),
    [list_to_binary([<<"{var x=qi('">>,Element,<<"'); x && x.addEventListener('">>,
        wf:to_binary(Type),<<"',function (event){">>,
        PostbackBin,<<" event.preventDefault(); });};">>])].
мы уже говорили об этом
мож добавить возможность выполнять произвольный код до и после отправки события на сервер?
Namdak Tonpa
@5HT
Sep 18 2015 09:08
и шо если вставить превет дефаул везде
что то плохое будет?
Andy
@m-2k
Sep 18 2015 09:08
наверн
Namdak Tonpa
@5HT
Sep 18 2015 09:08
можно вставить я не против
но вроде такое уже вставлял
Andy
@m-2k
Sep 18 2015 09:09
я не спец по html
ссылки тыкаться перестанут если такой ивент навешан
например
будут выполнять js а по ссылке переходить не будут
то есть отправить статистику перехода по ссылке на сервак и перейти на страницу по href уже не получится
поэтому я не настаивал
Namdak Tonpa
@5HT
Sep 18 2015 09:11
не можно добавить поле еще с пост-джаваскриптом
это идея здравая
Andy
@m-2k
Sep 18 2015 09:11
и перед
Namdak Tonpa
@5HT
Sep 18 2015 09:11
это уже лишнее
перед — это валидация
Andy
@m-2k
Sep 18 2015 09:12
чтобы я мог value формировать блять
Namdak Tonpa
@5HT
Sep 18 2015 09:12
а после вроде тоже есть
счас ищу
перед есть
new(Postback, Element, Delegate, Name, Data, Source, Validation) ->
    Module = nitro:coalesce([Delegate, ?CTX#cx.module]),
    Join=fun([]) -> []; ([E]) -> [$'|E]++[$'];
        ([H|T]) -> [[$'|H]++[$']] ++ [ [$,,$'|E]++[$'] || E <- T ] end,
    Event = #ev{name=Name, module=Module, msg=Postback, trigger=Element},
    erlang:list_to_binary([ <<"{ if (validateSources([">>,
        Join([ case is_atom(S) of true -> atom_to_list(S); false -> S end || S <- Source, S =/= []]),
        <<"])) { ">>,nitro:to_binary(Validation),<<" ws.send(enc(tuple(atom('">>,
        nitro:to_binary(application:get_env(n2o,event,pickle)),<<"'),bin('">>,Element,<<"'),bin('">>,
        nitro:pickle(Event),<<"'),">>,Data,<<"))); } else console.log('Validation Error'); }">> ]).
вот видишь Validation
оно прямо ебашится перед ws.send
как строка
Andy
@m-2k
Sep 18 2015 09:12
да
я пока не разбирался с validation.js
я могу просто пихнуть туда js код?
Namdak Tonpa
@5HT
Sep 18 2015 09:13
да
Andy
@m-2k
Sep 18 2015 09:13
ща попробую
Namdak Tonpa
@5HT
Sep 18 2015 09:13
тебе все равно нужен конттрол свой или модифицировать существующий
вот например как это делает #link элемент
            nitro:wire(#event{ type=click,postback=Postback,target=ID,
         source=Record#link.source,delegate=Record#link.delegate,
              validation=Record#link.validate}),
#event.validation = Record#link.validate
т.е. если ты в линк ебанешь просто #link.validate ="alert('ok');" то этот джаваскрипт тупо вызовится перед ws.send
Andy
@m-2k
Sep 18 2015 09:16
для #panel такого не прокатит?
чот там все простецки
Namdak Tonpa
@5HT
Sep 18 2015 09:16
панель — это сквозной элемент там нет постбеков
это не активный элемент
читай документацию какие элементы активные какие нет
Andy
@m-2k
Sep 18 2015 09:17
а, чот я уже уехал
надо ж кнопку смотреть
для кнопки чот тоже валидации нет
какого хрена
Namdak Tonpa
@5HT
Sep 18 2015 09:18
для #button приму фикс
такое пока только для #link сдлеали как пример
Andy
@m-2k
Sep 18 2015 09:18
ок, а чо с js после ивента
Namdak Tonpa
@5HT
Sep 18 2015 09:18
надо для всех активных постбечных сделать
а что за js поле ивента?
Andy
@m-2k
Sep 18 2015 09:19
превент дефаулт
Namdak Tonpa
@5HT
Sep 18 2015 09:20
я же показал что привент дефаулт стоит
Andy
@m-2k
Sep 18 2015 09:20
я могу как-то отказаться от элемента в 50 строк ради 30-ти символов патча
и как его заюзать
Namdak Tonpa
@5HT
Sep 18 2015 09:20
ты перед тем как писать почитай сначала код там 15 строчек
и писал их сука ты
не беси меня
Andy
@m-2k
Sep 18 2015 09:21
лол
я не спал сутки
так что аналогично :smile:
Namdak Tonpa
@5HT
Sep 18 2015 09:21
этот привет дефаулт думаешь блдяь кто вставил я ?
ты же сука и вставил
а теперь приходишь ко мне через пол года
и еще один превент дефаулт хочешь вставить
Andy
@m-2k
Sep 18 2015 09:22
)))
Namdak Tonpa
@5HT
Sep 18 2015 09:22
ты шо ебанулся?
Andy
@m-2k
Sep 18 2015 09:22
превед дефаулт
Namdak Tonpa
@5HT
Sep 18 2015 09:23
ставь пустой валидатор и вызовется превент дефаулт
#element.validation = "false"
я же показал тебе код
Andy
@m-2k
Sep 18 2015 09:25
да-да, у меня тут дохуя окон, ща я распутаю их ток
Namdak Tonpa
@5HT
Sep 18 2015 09:25
каких окон, наркоман, тут все в одной ленте просто проскролируй выше
Andy
@m-2k
Sep 18 2015 09:26
да я вижу, я фиксаю уже
проверить же ж над
Namdak Tonpa
@5HT
Sep 18 2015 09:26
if (!(~s)) e.preventDefault();
вот надо сделать чтобы этот if всегда true возвращал если хочешь preventDefault
поэтому ~s Code #element.validation надо поставить false вместо значения по умолчанию []
строка там должна быть
не надо счас тут орать что блядь атомы и бинари туда не лезут
в N2O все есть уже давно!
не надо ничего сюда дописывать
я до статьи про валидаторы еще не дошел
Andy
@m-2k
Sep 18 2015 09:29
Error
column: 6381
line: 1
message: "null is not an object (evaluating 'qi(name).addEventListener')"
stack: "eval code↵eval@[native code]↵onio@http://localhost/static/n2o.min.js:1:7480↵http://localhost/static/n2o.min.js:1:8269"
proto: Error
Namdak Tonpa
@5HT
Sep 18 2015 09:29
ну и кто вася?
кто елементу без id валиадоры хуячит?
нахуй тебе этот min.js ?
подключай нормальный файлы
у тебя же даже не min
Andy
@m-2k
Sep 18 2015 09:31
<a class="link" id="auto-410695" href="/e/a">auto-423103</a>
Namdak Tonpa
@5HT
Sep 18 2015 09:31
разберешься
:-)
я уже не буду нихуя объяснять
про id объяснять это вообще пиздец какой-то
Andy
@m-2k
Sep 18 2015 09:34
var name = 'auto-409199';
    qi(name).addEventListener('validation', function(e) {
        if (!(false)) 
            e.preventDefault();
    });
    qi(name).validation = true;
а click тут при чем?
var x = qi('auto-409199');
    x && x.addEventListener('click', function (event) {
        {
            if (validateSources([])) {
                ws.send(enc(tuple(atom('pickle'), bin('auto-409199'), bin('Cvfw8******oKzV+0='), [tuple(tuple(utf8_toByteArray('auto-409199'), bin('detail')), [])])));
            } else 
                console.log('Validation Error');
        }
    });
вот тут чот нихуя превента нет
Namdak Tonpa
@5HT
Sep 18 2015 09:38
>  if (!(false)) console.log('true');
<  true
Andy
@m-2k
Sep 18 2015 09:38
и че
превент какого события?
Namdak Tonpa
@5HT
Sep 18 2015 09:39
validateSources([]) че пустой?
Andy
@m-2k
Sep 18 2015 09:39
я ебу?
Namdak Tonpa
@5HT
Sep 18 2015 09:39
в source=[] должны быть указаны контолы превент которых ты хочешь делать
давай ты пойдешь поспишь
а потом будешь задавать вопросы
я не хочу общаться с полуживым человеком
Andy
@m-2k
Sep 18 2015 09:40
так мне нинад ниче возвращать
Namdak Tonpa
@5HT
Sep 18 2015 09:40
тут в общей сумме 20 строк
Andy
@m-2k
Sep 18 2015 09:40
это ссылка на другую страницу
Namdak Tonpa
@5HT
Sep 18 2015 09:40
а пиздежа на 6 простыней
мне надо работать, прости
охвати своей мыслю весь код
и сделай конкретное рациональное предложение
а не "у меня нихуя не работает"
Andy
@m-2k
Sep 18 2015 09:45
я его сделал 10 минут назад
при чем тут первент для ивента validation?
мне нужно забить DEFAULT ивент, для кнопки или ссылки это click
Namdak Tonpa
@5HT
Sep 18 2015 09:46
пушо валидейшин полюбому вызывается для клика
Andy
@m-2k
Sep 18 2015 09:47
еще раз
qi(name).addEventListener('validation', function(e) {
        if (!(false))   e.preventDefault(); });
Namdak Tonpa
@5HT
Sep 18 2015 09:47
привентить дефаут — означает не пройти валидацию
ты реально меня заебал
сколько раз тебе написать что validation вызываетя для click?
в validateSources ?
Andy
@m-2k
Sep 18 2015 09:47
так
но если не проходит валидация то и ивент на сервер не отсылается?
вызывается
говно какое-то
Namdak Tonpa
@5HT
Sep 18 2015 09:50
но ты же можешь не только false там написать
а любую строку
(function(){ ws.send('...'), return false; })()
хотя нахуя шото на сервер слать если у тебя превент дефаулт непонятно
Andy
@m-2k
Sep 18 2015 09:51
мне кажется там надо написать debugger
Namdak Tonpa
@5HT
Sep 18 2015 09:52
нихуя не надо писать
все уже написано
Andy
@m-2k
Sep 18 2015 09:52
зачем мне писать ret 0?
Namdak Tonpa
@5HT
Sep 18 2015 09:52
подумай над этим вопрос два дня
Andy
@m-2k
Sep 18 2015 09:52
бля написал же что js работает
Namdak Tonpa
@5HT
Sep 18 2015 09:52
а потом приходи ок?
посиди просто помедитируй сидя
не думай ни о чем
потом я буду с тобой разговаривать
Andy
@m-2k
Sep 18 2015 09:53
:smile: лан
Andy
@m-2k
Sep 18 2015 10:09
так, вызвать js до отсылки ивента на сервак получилось
#event{postback=evt,source=[],target=store,type=click,validation="alert();"}
Namdak Tonpa
@5HT
Sep 18 2015 13:01
еще
#textarea{id=textarea,
       validtion="(function(){ ws.send('...'), return false; })()"},
#link{id=ok,validate="alert('hello');",
        source=[textarea]}
тебе можно без #event даже
Andy
@m-2k
Sep 18 2015 13:11
я так уже сделал
Value="[tuple(tuple(utf8_toByteArray('"++Button++"'), bin('detail')),[]),"
        "tuple(utf8_toByteArray('"++Input++"'), utf8_toByteArray(qi('"++Input++"').innerText))]",
    Event="qi('"++Button++"').addEventListener('click',function()"++
        binary_to_list(wf_event:new(#add{target=post,forms=Input},
        Button,undefined,event,Value,[],BeforeJs))++");",
ад конечно
все ж неплохо бы wire бинари хавать научить
Andy
@m-2k
Sep 18 2015 13:19
в твоем случае приезжает Unknown event: []
Namdak Tonpa
@5HT
Sep 18 2015 14:10
в каком моем случае, мой случай никаких ивентов не шлет
ты написал хуйню
удали ее
Namdak Tonpa
@5HT
Sep 18 2015 14:16
у нас работаю и валиаторы и постивенты
я тебе не сказки рассказываю
а описываю наш продакшен
поэтому если у тебя что-то неработает
это означает что еще не прошло 2 дня
и ты не осознал степень своей невменяемости