Aug. 30th, 2013

ermouth: (Default)

Мои научные чтения соместно с соображениями про неподвижную точку и теоремой 3.1 вот отсюда (pdf) дали прекрасный результат – я таки написал для jQuery.my серверный валидатор, который работает с того-же манифеста, что и сама форма.

Ну то-есть манифест компилируется в валидатор, который уже реюзабл и проверяет собсно данные. Со списочком ошибок, как полагается. Валидатор не только в node.js или там в CouchDb работает, на клиенте тоже.

Попутно в jQuery.my переписано куча кода и добавлены чумовые фичи типа подчинённых списков форм, корректного проброса this на манифест и шаблонизатора такого своеобразного. Шаблонизатор – чума просто формы рисовать.

Собсно, вот демо простенькое. Вся функциональность формы, включая html-разметку, обеспечивается манифестом в 120 строк длиной меньше 3кб.

Прямо в коде страницы всё видно. Колонка справа – как раз результаты “серверного” валидатора и под ним того, который на форме сидит.

***

Вообще про жись. Много работаю, и проекты интересные – но особо не порассказываешь. Всё большое, сложное, прекрасное – но до первого показа секретное )

Погода сёдня совсем погнуснела, вечером хлестал жестокий осенний дождь. Косой, серый и холодный. После него, правда, выглянуло солнце, тёплое. Я как раз в магазин ходил – и почему то Андерсена вспомнил, тот момент где “и Дюймовочка вышла взглянуть на солнце в последний раз”. Иррациональное, приходит вот иногда.

Прошёл в AeroflyFS на маке задание по сложному пилотажу – 50 ворот в воздухе на скорости ~600км/ч, 15 минут на всё (то-есть <20 секунд на манёвр) – но блин завалил посадку. Там садиться надо в тютельку, по схеме, даже пробег где отмечено закончить – а ветер, то-сё.

Очень адреналиновая кста хрень.

Надо вот кино какое-нибудь посмотреть, да.

ermouth: (Default)

$.my вместе с новым валидатором в полный рост реализует концепцию MVVM. Декларативное связывание реализовано даже круче чем в WPF где-то – контролы в UI “сидят” прямо на том-же объекте, что передан как данные и риалтайм его мутируют.

Обратное тоже верно – окружение формы может поменять данные под формой обычным яваскриптовым синтаксисом, сказать форме перерисоваться – и она перерисуется, отразив данные.

var data = {name:””, sex:””}; $(“#someform”).my(manifest, data); //init
data.name=”John”; $(“#someform”).my(“redraw”); // update

Соответственно, для всего остального кода значение объекта data будет меняться по мере изменения контролов.

MVVM как концепт, конечно, не без подводных камней. Вот сам Госсман, чувак который ввёл понятие MVVM пишет о некоторых “прелестях” MVVM в WPF. http://blogs.msdn.com/b/johngossman/archive/2006/03/04/543695.aspx

Оно, конечно, прожорливо, особенно если сохраняет undo-историю или подвязано к зеркальным контролам с частыми изменениями (слайдеры к примеру). Я это всё пронаблюдал, когда баловался с InfoPath и Silverlight.

jQuery.my, в отличие от WPF, для решения этой проблемы вводит дополнительный опциональный параметр связи между контролом и данными под ним – delay. И этот механизм подавляет на указанный период одинаковые события – байнд выполнится только по прошествии delay миллисекунд с последнего вызова. Если за это время был ещё вызов таймер сбросится и отсчёт начнётся снова.

Аккуратное регулирование этого параметра приводит к куче интерфейсных последствий. Вот пример http://jquerymy.com/s/delay078.html

Замечу, что код этого примера, манифест который всё рисует (включая html), содержательно занимает 9 строк.

{ params:{delay:3},	
  init:[
    {row:"550px", label:"150px", rowCss:"my-row pt8 pb8"}, 
    '<h3>Зеркально-зависимые контролы, 0.7.8</h3>',
    ["3 мс", "num#num", "sli#sli.w330.ml20"],
    ["100 мс", "num#num2", "sli#sli2.w330.ml20"]
  ],
  ui: {
    "#num":  {bind:"num",  watch:"#sli",  check:/^(100|\d{1,2})$/},
    "#sli":  {bind:"num",  watch:"#num"},
    "#num2": {bind:"num2", watch:"#sli2", delay:100, check:/^(100|\d{1,2})$/},
    "#sli2": {bind:"num2", watch:"#num2", delay:100}
}}


MVVM вопщем. InfoPath в браузере. Только там манифест, модель и схема данных раздельно жили, а у меня это единая конструкция.

Profile

ermouth: (Default)
ermouth

November 2021

S M T W T F S
 123456
78910111213
14151617181920
21 222324252627
282930    

Most Popular Tags

Style Credit

Expand Cut Tags

No cut tags
Page generated Mar. 21st, 2026 12:15 pm
Powered by Dreamwidth Studios