ФорумПрограммированиеJavaScript → ExtJS. За и против

ExtJS. За и против

  • Абырвалг

    Сообщения: 6480 Репутация: N Группа: Джедаи

    Spritz 4 марта 2010 г. 15:31, спустя 18 минут 36 секунд

    в смысле стартап? все получится, но сейчас я занят сильно.
    план таков: 1) я допиливаю велосипедные библиотеки, пишу ман к ним, выкладываю на суд общественности. 2) перевожу нынешнюю говнокмс на них и внедряю в нее экст.
  • phpdude

    Сообщения: 26646 Репутация: N Группа: в ухо

    Spritz 4 марта 2010 г. 15:33, спустя 1 минуту 49 секунд

    Абырвалг, 3) удаляю нахуй все и работаю дальше как обычный человек за зарплату и имея план рабочий
    Спустя 8 сек.
    я бы начал с 3)
    Сапожник без сапог
  • AlexB

    Сообщения: 4306 Репутация: N Группа: в ухо

    Spritz 4 марта 2010 г. 15:43, спустя 9 минут 50 секунд


    в смысле стартап?
    В смысле, как сделать две панели и больше ничего … )))))))))
  • Абырвалг

    Сообщения: 6480 Репутация: N Группа: Джедаи

    Spritz 4 марта 2010 г. 15:57, спустя 13 минут 48 секунд

    phpdude, одно другому не мешает.

    я на этой говнокмс сделал 6 сайтов уже
    Спустя 14 сек.
    типа фриланс
    Спустя 156 сек.
    AlexB, на mytrouble.ru сейчас каждую неделю добавляют статейки про экст для начинающих
  • AlexB

    Сообщения: 4306 Репутация: N Группа: в ухо

    Spritz 5 марта 2010 г. 19:26, спустя 1 день 3 часа 29 минут

    Ну что же, мне стартап не подкинули, тогда подкидываю я его. ))))
    Вот что удалось наковырять за сегодняшний день.
    Итак, каркас простейшего приложения по типу КМС: Сверху - меню. Две панели. Слева - разные фильтры, формы и прочее. Справа - собственно данные.


    <html>
    <head>
      <title>Application</title>
      <link rel="stylesheet" type="text/css" href="extjs/resources/css/ext-all.css" />
      <script src="extjs/adapter/ext/ext-base.js"></script>
      <script src="extjs/ext-all-debug.js"></script>
    </head>
    <body>

    <script type="text/javascript">
    Ext.onReady(function()
    {

    // Типа создали каркас приложения с двумя панелями и меню

    var menu = new Ext.Toolbar
    ({
    items:
    [{
       xtype: 'tbbutton',
       text: 'Menu Button',
       menu:
    [
    {text: 'One'},
    {text: 'Two'},
    {text: 'Three'}
    ]
    }]
    });

    var toppanel = new Ext.Panel ({ region: 'north', height: 30, collapsible: false, split: false, items: [menu] });
    var leftpanel = new Ext.Panel ({ region: 'west',  width: 300, collapsible: true, split: true, frame: true });
    var rightpanel = new Ext.Panel ({ region: 'center', title: 'title', collapsible: false, frame: true });

    var container = new Ext.Viewport
    ({
       layout: 'border',
       items: [toppanel, leftpanel, rightpanel]
    });

    // А теперь зафигачим формочку в левую панель

    var form = new Ext.FormPanel
    ({
       items:
    [
    { xtype: 'textfield', fieldLabel: 'Value' },
    { xtype: 'textfield', fieldLabel: 'Value2' }
       ],
       buttons:
    [
    { text: 'Search' }
    ],
    buttonAlign: 'left'
    });
    leftpanel.add(form);
    leftpanel.doLayout();

    // А теперь grid в правую

    var myData =
    [
    ['Title1', 1, 555], ['Title2', 2, 666]
    ];

    var store = new Ext.data.SimpleStore
    ({
    fields:
    [
          { name: 'title' },
          { name: 'value', type: 'int' },
      { name: 'id', type: 'int'}
       ]
    });
    store.loadData(myData);

    var grid = new Ext.grid.GridPanel
    ({
    store: store,
       columns:
    [
    { header: "Title", id: 'title', dataIndex: 'title', sortable: true },
    { header: "Value", id: 'value',  dataIndex: 'value', sortable: true },
    { id: 'id', dataIndex: 'id', renderer: function(val) { return '<a href="#" onclick="EditItem(' + val + ');">Редактировать</a>'; }}
    ],
    stripeRows: false,
       autoExpandColumn: 'value',
    autoWidth: true,
    height: rightpanel.getInnerHeight(),
    autoScroll: true,
    forceLayout: true
    });

    rightpanel.add(grid);
    rightpanel.doLayout();

    // Перерисовываем грид, если изменился размер правой панели

    rightpanel.on
    (
    'resize', function(e) { grid.setSize(rightpanel.getInnerWidth(), rightpanel.getInnerHeight()); }
    );
                       
    });

    function EditItem(val)
    {
    alert(val);
    }

    </script>


    </body>
    </html>


    Спустя 259 сек.
    Что пока не понравилось. Рядом с каждой записью предполагается сделать кнопку реактировать. Стандартных средств для этого не нашел.
    Только запись в колумсах:
    { id: 'id', dataIndex: 'id', renderer: function(val) { return '<a href="#" onclick="EditItem(' + val + ');">Редактировать</a>'; }

    Это мне не нравится, ибо смысл данной либы вижу в том, чтоб вообще не писать никакого html, а только пользоваться готовыми JS компонентами. Это необходимо для стандартизации интерфейсов, надоела ситуация, когда группа разработчиков пишет кто в лес, кто по дрова.

    Какие будут соображения?

    1. extjs.jpg (195)
  • phpdude

    Сообщения: 26646 Репутация: N Группа: в ухо

    Spritz 5 марта 2010 г. 19:24, спустя 23 часа 57 минут 22 секунды

    Какие будут соображения?
    расширить базовый функицонал экста, чтобы он принимал наши объекты и писал из них хтмл, тогда всех программистам можно дать по топору и сказать где рубить :)
    Сапожник без сапог
  • AlexB

    Сообщения: 4306 Репутация: N Группа: в ухо

    Spritz 5 марта 2010 г. 19:37, спустя 13 минут 50 секунд

    Мне бы чего по конкретней. А то от консультанта на форуме примеров кода народ не дождался.
    http://www.extjs.com/forum/showthread.php?t=3539
    Вроде что-то ответил, но как сделать я так и не понял …
    После праздников еще поковыряю …
  • Абырвалг

    Сообщения: 6480 Репутация: N Группа: Джедаи

    Spritz 5 марта 2010 г. 20:48, спустя 1 час 10 минут 24 секунды

    1) Что таое стартап?
    2) что вы думаете по поводу генераторов экстовских форм?
  • phpdude

    Сообщения: 26646 Репутация: N Группа: в ухо

    Spritz 5 марта 2010 г. 20:57, спустя 9 минут 27 секунд


    1) Что таое стартап?
    2) что вы думаете по поводу генераторов экстовских форм?
    1. без денег - трата времени
    2. если жто стартап, то хуйня
    Сапожник без сапог
  • AlexB

    Сообщения: 4306 Репутация: N Группа: в ухо

    Spritz 5 марта 2010 г. 21:46, спустя 48 минут 57 секунд


    Что таое стартап?
    В данном контексте это: "Я нихуя не знаю. Как мне сделать Hello World?".


    что вы думаете по поводу генераторов экстовских форм?
    Пока ничего конкретного. Так как стаж писания на extjs - 1 день. И штуки эти все я еще не смотрел. Но если проводить аналогию с десктопными GUI программами, то генераторы должны использоваться. В любой среде разработки есть инструментарий для визуального редактирования форм и никто файл ресурса формы руками не редактирует. Если мы применяем аналогичный подход в вебе, то почему формы должны создаваться по другому?
  • Абырвалг

    Сообщения: 6480 Репутация: N Группа: Джедаи

    Spritz 5 марта 2010 г. 22:09, спустя 23 минуты 5 секунд

    В любой среде разработки есть инструментарий для визуального редактирования форм и никто файл ресурса формы руками не редактирует.

    я же совсем не о том. Я о
    form:
    name: requried, ninLength(5)
    mail : uniquie
    ….
    на основе этой хуйни генерируется экстовский код и клиентские проверки
  • AlexB

    Сообщения: 4306 Репутация: N Группа: в ухо

    Spritz 5 марта 2010 г. 22:53, спустя 44 минуты 9 секунд

    Гм, сорри, не понял. Точнее не знал, об этой "хуйне". Надо будет посмотреть.
    Но в принципе, какой смысл генерить одну текстовую нотификацию на основе другой? Почему сразу нельзя писать JS? Наверно что-то недопонимаю …

    Вот визуальный инструмент для сложной формы, мне кажется был бы не плохим подспорьем.
  • Абырвалг

    Сообщения: 6480 Репутация: N Группа: Джедаи

    Spritz 6 марта 2010 г. 0:55, спустя 2 часа 1 минуту 14 секунд

    писать сервер-сайд проверки (а без них никак)
    писать JS код для генерации форм через экст
    писать проверки клиент-сайд, которые перед отправкой форм происходили бы

    а не слишком ли много писать? Я вот, не люблю когда в обход шаблонизатора какой-то html/js генерируется. И просто неприемлимо что-то типа $this->form->field('name')->addAttr('onblur', 'javascript:checkField(this); return false'); Руки поотрывал бы за такую смесь JS и похапэ.

    я спать) день был насыщенный
  • AlexB

    Сообщения: 4306 Репутация: N Группа: в ухо

    Spritz 6 марта 2010 г. 1:04, спустя 8 минут 54 секунды


    писать сервер-сайд проверки (а без них никак)
    писать JS код для генерации форм через экст
    писать проверки клиент-сайд, которые перед отправкой форм происходили бы

    Ну дык мы так и так все это пишем. Только у нас HTML во втором пункте.


    Я вот, не люблю когда в обход шаблонизатора какой-то html/js генерируется. И просто неприемлимо что-то типа $this->form->field('name')->addAttr('onblur', 'javascript:checkField(this); return false'); Руки поотрывал бы за такую смесь JS и похапэ.

    Не спорю. Пых дожен только данные готовить и в JSON оборачивать. Все.
  • Абырвалг

    Сообщения: 6480 Репутация: N Группа: Джедаи

    Spritz 6 марта 2010 г. 2:19, спустя 1 час 15 минут 44 секунды

    что-то мне не спится. Шутки ради, давайте поговорим на языке, при помощи которого преподаются вышка и матан в большинстве ВТУЗОВ.

    Пусть есть условия, необходимые для описания идеальной формы[1] ( http://pyha.ru/forum/topic/4066.msg86397#msg86397 ), а именно:
    серверные проверки (1)
    сама форма (html) (2)
    клиент-сайд проверки на JS. (3)

    Считаем это описание достаточным в полной мере. Нас не сильно интересует метод, при помощи которого была сгенерирована html-форма, это может быть JS-фреймворк, а может быть и серверный шаблонизатор.

    Поставим под сомнение отсутствие возможности описать структуру формы любой сложности[2] на сервере, которая бы удовлетворяла условиям (1, 2, 3). При этом структуру формы будем описывать при помощи удобных для нас форматов, будь то XML, YAML, native-PHP один раз, и на основе этого описания посредством некоторых преобразований получим непосредственно форму и ее первичные обработчики[3], состоящие из вышеупомянутых компонентов (1, 2, 3).

    У нас будет возможность выбрать драйвер генератора, в качестве которого может выступать ExtJS или же просто шаблонизатор. В любом случае не будем исключать вероятность настройки драйвера. Под настройкой можем подразумевать значения классов с ошибками, обрамляющие элементы (div, label), порядок компонент (label for="" input или же label input /label), встраивание своих собственных шаблонов. Таким образом мы получим возможность внедрять свой JS-код в форму через встраивание шаблонов. Это позволит избавиться от кашици из JS и PHP в одном флаконе.

    Еще раз: единожды описав параметры формы мы сможем не писать отдельно три компонента, два из которых являются дублирующими друг друга.

    ——————————–
    1 на самом деле они не совсем такие, но в данном контексте это не важно
    2 вот этот оборот мне особенно нравится
    3 под первичными обработчиками будем подразумевать фильтры и валидации

    ахуенный такой графоманский высер, да?

Пожалуйста, авторизуйтесь, чтобы написать комментарий!