developer blog

451 degrees Fahrenheit

Archives Posts

Flexigrid, легкие и красивые таблицы с jquery

July 18th, 2008 by pilot

Рано или позно в наший проектах приходится испльзовать таблицы, и дабы облегчить себе и пользователям жизнь такие помошники как Flexigrid - незаменимы!

flexgrid

Автор вдохновился таблицами от такого монстра в это деле как ExtJS и реализовал их на jquery.

А вот и список фич:

  • Изменяемый размер колонок
  • Изменяемая высота и ширина
  • Сортировка в заголовке
  • Прикольный шаблончик
  • Возможно преобразовать в обычную таблицу
  • Возможно подключить ajax’ом файл с данными (XML либо JSON)
  • Страницы
  • Показывать/Скрыть столбец
  • Тулбар
  • Поиск
  • Простой API
  • И еще куча всего

Основная задача - это сохрнить небольшой размер библиотеки с большим функционалом, в противном случае лучше использовать ExtJS либо YUI

Filed under Ajax, javascript, jquery having No Comments »

Archives Posts

Autocomplete в двух направлениях (bidirect)

July 13th, 2008 by pilot

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

Но …

На мой взгляд они облегчают заполнение тем кто знает, что он туда пишет.

Интересное решение, проблемы предложил László Kozma, автозаполнение в двух направлениях.

bidirect_autocpmlete

Что примечательного в его варианте Автозаполнения, к примеру вы ищите Theodore Roosevelt, система вывела вам соответствующую подсказку, но если вам захотелось найти Franklin Roosevelt, в стандартном автокомплитере система ненайдет ничего пока вы не удалите из поля весь текст и не попытаеть набрать его заново начиная с Franklin.

А в двухстороннем автокомплитере вам достаточно переместить курсор за фамилию Roosevelt, удалить имя, на что система сразу же начнет выводить автоподсказку.

Т.е. автозаполнение в двух направлениях означает, что во фразе из двух слов, система подбирает подсказку как по первому так и по второму слову одновременно.

Filed under Ajax, javascript having No Comments »

Archives Posts

Объектно ориентированный Javascript с JS.Class

July 12th, 2008 by pilot

JS_Class-Ruby-like-classes-for-JavaScriptСейчас можно встретить большое количество библиотек, которые предлагают реализацию ООП модели в Javascript.

Из множества библиотек JS.Class написанная Джеймсом Когланом (James Coglan) выделяется своей простотой реализации объектно ориентированной разработки на JavaScript, похожести в организации структуры классов на Ruby, небольшой, но достаточной документацией, и маленьким размером. Она использует ряд идиом, заимствованных из Ruby для моделирования классов, наследования и создания модулей.

Небольшой пример создания класса:

    var Animal = new JS.Class({
      initialize: function(name) {
        this.name = name;
      },
      speak: function(things) {
        return 'My name is ' + this.name + ' and I like ' + things;
      }
    });

Все классы начинаются с метода initialize(). Этот метод создает объект класса и принимает все параметры нужные для объекта:

  var pig = new Animal('Porky');
  pig.speak('mud')   // -> "My name is Porky and I like mud"

Писать классы на Javascript с JS.Class так же просто как и в PHP или RUBY, особенно в случае больших приложений с разветвленным функционалом написанном на javascript.

Скачать JS.Class 1.6.1

Filed under javascript having 8 Comments »

Archives Posts

SoundManager2 &mdash ̶̶̶̶ музыка на сайте используя javascript

July 7th, 2008 by pilot

soundmangerflash9

SoundManager 2 — это звуковой API, которого так нехватает в Javascript.

На сегодняшний день наиболее удобный способ создания музыкальных плееров, это использовать Flash.

Но не все так печально, javascript библиотека SoundManager 2 мало того, что имеет функциональность не слабее, а даже больше чем у Flash’s. Использовать звуковые эффекты на сайте с SoundManager 2 очень просто и быстро.

Пример: Страница как - play list

page as playlist

Пример: Ссылки на MP3 файлы, сразу проигрываются

MP3 Links on a page

Немало важно то, что SoundManager 2 полностью совместим с Flash 8, и в данный момент в beta версии поддерживает и Flash 9

Filed under Ajax, javascript having 2 Comments »

Archives Posts

qUIpt - библиотека для кеширования javascript файлов

July 4th, 2008 by pilot

qUIpt

Небольшая, но очень полезная библиотека, которая кеширует Javascript файлы внутри браузера, работает даже через SSL. Основаная идея это уменьшения тарафика для владельцев сайтов и уменьшение скорости загрузки страниц для пользователей.

О том как это чудо работает можно прочитать на офф сайте.

А примерчик можно посмотреть в живую прям здесь.

Немного объясню суть примера, там всего лишь одна ссылка, но при первой загрузке файла примера, дополнительно подгружаются 3 библиотеки:

  • dummy-js-file-01.js
  • dummy-js-file-02.js
  • jquery-1.2.6.min.js
    Firebug - показал первую скорость загрузки старинцы со скриптами 233 ms, в это время quipt  кешируют javascript файлы и после обновлия страницы скорость равна 0 ms, впечатляет!
Filed under javascript having 4 Comments »

Archives Posts

Картинка вместо стандартного checkbox

May 13th, 2008 by pilot

На самом деле checkbox и есть картинка, но в данном примере мы стандартную картинку заменим своей красивой!

Собственно надоели убогие checkbox’ы и захотелось красоты, вот что было найдено на эту тему

Fancy Form - http://lipidity.com/fancy-form

Fancy Form checkbox

Использует как основу javascript framework Mootools 1.11, облегченная версия которого входит в пакет загрузки Fancy Form

Второй не менее интересный вариант это Protocheck - http://bugrain.com/projects/protocheck/

Protocheck checkbox

Использует javascript framework Prototype - в пакет закачки эта библиотека не входит, ее нужно отдельно скачивать на  сайте разработчика www.prototypejs.com

Я выбрал для работы Protocheck, но не из-за его качеств, а только из-за того что он использует protoype, который в данный момент уже присутствует в проекте, т.е. основная цель - это не плодить javascript библиотеки.

Archives Posts

Jaxer - The Ajax Server от Aptana Studio IDE

April 30th, 2008 by pilot

jaxer - ajax serverНовая разработка Jaxer - выводит приложения использующие технологию Ajax на новый уровень.

Он позволяет работать с JavaScript, HTML, DOM и CSS как на стороне клиента, так и сервера (поддерживается стандарт JavaScript 1.8)

Полную статью на русском читаем здесь.

Filed under Ajax, javascript having 2 Comments »

Archives Posts

Доллар function, $() в prototype

December 10th, 2007 by pilot

В основном, это простая ссылка на document.getElementById(), но несколько более расширенная чем просто ссылка. Ниже показан пример использования:

node = $('elementID');

// То же самое
node = document.getElementById('elementID');

// Так же можно получать не только один елемент
// В этом случае результат будет массивом DOM елементов
nodes = $('firstDiv', 'secondDiv');

Prototype так же предлагает функцию, ее нет в ядре JavaScript, которая возвращается массив DOM елементов и как аргумент она принимает имя css класса (class name):

nodes = document.getElementByClassName('myclass');

Однако, я думаю использовать ее вы будете редко, так как Prototype предлагает более расширенную функцию двойной доллар, $$(). Эта фунция возвращает массив DOM елементов основанных на CSS селекторе (css selector). Таким образом код показанный выше можно записать так:

nodes = $$('.myclass');

Благодаря мощьности CSS селекторов (css selectors) вы можете парсить модель DOM по классам (class), ID, и родитель-наследник (parent-child) и предыдущий-следующий (previous-next) связям, гораздо проще чем при использовании XPath выражений. Вы можете получить доступ к элементу через сложную комбинацию селекторов:

nodes = $$('body div#main ul li.last img > span.legend');

И последний пример улучшения синтаксиса предлагаемого Prototype — это each array iterator, подобно как в PHP:

var vegetables = ['Carrots', 'Lettuce', 'Garlic'];
vegetables.each(function(food) { alert('I love ' + food); });

Не забывайте подписывать на рассылку.

Дальше будет еще много интересного.

Archives Posts

Обновление областей страниц на лету с помощью Ajax.Updater

November 23rd, 2007 by pilot

Ajax.Updater - один из методов библиотеки prototype.js

В web 2.0 проектах часто приходиться обновлять некоторые области на страничке, для упрощения жизни пользователя, к примеру:

  1. Вывод системного сообщения без перезагруки страницы
  2. Показать форму входа или регистрации
  3. Обновить блок новостей

это небольшой список из того, где можно использовать Ajax.Updater

Хочу заметить, что через мерное применение большого количества обновляемых элементов на странице не улучшает ее, а зачастую снижает общую скорость загрузки страницы, и приводит к более частым “поломкам” в разных броузерах.

Возьмем самый простой пример, динамически без перезагрузки страницы обновим область в которую выведем коментарии, к какому либо сообщению нашего блога.

<!-- Выводим текст сообщения блога -->
<div>
 Эта статья раскажет как обновлять старницу на лету
 с помощью Ajax.Update из библиотеки prototype.js
</div>
<!-- Комментарии к статье -->
<div id="comments"> здесь будут коментарии... </div>

<script language="javascript">
  new Ajax.Updater('comments', '/url_to_comments/comments.php', {
    method: get
  })
</script>

В примере выше, Ajax.Updater вызывает файл /url_to_comments/comments.php, который выводить комментарии к статье, и обновляется контейнер id=”comments”.

Контейнер id=”comments” полностью перезаписывается, поэтому в вызываемом файле comments.php нужно указывать открывающие и закрывающие <div> коментарии </div> теги.

Ajax.Updater имеет еще ряд параметров. Если сервер возвращает HTML, содержащий скрипты, и вы хотите чтоб они исполнялисть, в строке параметров нужно указать

evalScripts: true.

Русский перевод статьи об Ajax в protoype.js вы можете почитать на страницах блога Parabola.

Приведенный выше пример не совсем точно показывает всю прелесть обновления блоков на странице, ниже показан более правильный способ использования Ajax.Updater.

<form method="POST">
<!-- Выводим текст сообщения блога -->
<div>
 Эта статья раскажет как обновлять старницу на лету
 с помощью Ajax.Update из библиотеки prototype.js
</div>
<!-- Комментарии к статье -->
<div id="comments"> здесь будут коментарии... </div>
<input type="button" value="Показать комментарии" onclick="showComments()">
</form>

<script language="javascript">
  function showComments()
  {
    new Ajax.Updater('comments', '/url_to_comments/comments.php', {
      method: get
    })
  }
</script>

В этом примере добавиласть кнопка “Показать комментарии”, т.е. при первоначальной загрузки старницы, комментариев под статьей нет, в момент нажатия на кнопку “показать комментарии”, вызывается функция showComments(). Которая обновляет контейнер id=”comments” и выводит комментарии к статье.

Работать с Ajax.Updater очень просто! Если у вас есть свои примеры использования этого метода оставляйте их в комментариях к этой статье.

В следующей статье я раскажу об методе Ajax.Autocompleter из библиотеки script.aculo.us, который во многом похож на Ajax.Updater и позволяет добавлять к полям формы автозаполнение по мере ввода текста в форму.

Не забывайте подписавать на рассылки.

Filed under Ajax, Prototype, javascript having 7 Comments »

Archives Posts

Пишем простой Tab list с prototype.js

November 3rd, 2007 by pilot

Как я написал свой Tab list и почему не использовал доступные в интернете готовые примеры.

tab_list

Вот примеры Tab листов, которые я раньше использовал:

  1. Dexagogo
  2. Livepipe

На примерах этих tab листов, трудно понять как работает сам механизм связанный с переключаниями между tab’ами.

И один из больших недостатков я не смог застивить работать эти tab листы на динамически вызваных страницах, которые вызваются через методы библиотеки prototype.js (Ajax.Updater и др.). Вот по этой причине я решил написать свой tab лист.

Первое, создаем простой html документ:

<html>
<head>
    <title>Делаем ТАБы</title>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
    <style>
      /* tab */
      .panel {
        clear: both;
        display: none;
        border: 3px solid #CCC;
        padding: 1em;
      }
      .panel.active-tab-body {
        display: block;
      }
      #tabs {
        list-style: none;
      }
     
      #tabs li {
       float: left; 
      }
     
      #tabs a {
        float: left;
        padding: 2px 8px;
        background-color: #F2F2F2;
        text-decoration: none;
        color: #999999;
      }
     
      #tabs a.active-tab {
        background-color: #CCC;
        border-top: 3px solid #999;
        padding-top: 0px;
        color: #000;
      }
    </style>
    <script type="text/javascript" language="JavaScript" src="/js/scriptaculous/lib/prototype.js"></script>   
</head>

<body>



</body>
</html>

Обратите внимание на кодировку в документе используется UTF-8, так как библиотека prototype.js не дружит с нашими кодировками windowds-1251

Если у вас все же есть необходимость использовать в работе кодировку windows-1251, вам поможет библиотека Дмитрия Котерова JsHttpRequest. Которая полностью совместима с prototype.js

В моем примере tab list я использую CSS стили из проекта Dexagogo.

Перед закрытием тега </head> , добавляем подключение библиотеки prototype.js, которую я использую для переключения между tab’ами, и динамеческой загрузки информации в выбранный tab.

Read the rest of this entry »

Filed under Ajax, Prototype, javascript having 7 Comments »