Небольшой рассказик =))) от меня...

Discussion in 'Болталка' started by Trinux, 3 Jun 2006.

  1. Trinux

    Trinux Members of Antichat

    Joined:
    26 Nov 2004
    Messages:
    1,403
    Likes Received:
    296
    Reputations:
    364
    Короче строго не судите =))) просто хотел поделиться мыслями внутри моей головы. Может кто-то улыбнется, читая следующие строки. А это главное.

    В общем, задача - сделать вот такое вот меню на javascript (отрытие разделов, добавлние разделов, перетаскивание разделов вместе со всеми подразделами и прочее, прочее прочее) и xmlhttprequest без перезагрузки страницы соответственно...

    [​IMG]
    С виду задача простая. Да и решение не очень сложное, но пара подводных комней есть. Я не пытаюсь объяснить как делать такое меню данным текстом. Я пытаюсь подойти к этому с литературной стороны. Итак. Поехали...

    Трин представил в голове как все будет крутится... Красиво блин =) Начал со структуры таблицы. Соответственно, для подобной задачи выбирает технологию смежных вершин для организации дерева каталогов. Что такое "смежные вершины" он никогда не знал, не знает и врядли когда-нить сможен объяснить. Все что друзьям удавалось из него вытянуть по этой технологии, это: "Да хрен знает. Короче это такой способ организации дерева, которой совсем не очевидный и еще менее понятный. Да поможет тебе гугль.". Где-то он прав... Не суть.
    Структура готова, тут ничего сложного. Вбил парочку каталогов для тестов и пошел верстать все это на страницу... На протяжении вот уже почти года Трин верстает страницы с точки зрения философии CSS. Очевидно что и это меню-каталог он решает делать на списках (<ul></ul>). А зря...
    Через пол часа поиска логики построения нужных открывающихся и закрывающихся тегов списков он судорожно вставляет рандомный код в рандомное место скрипта, пытясь получить искомый результат. Еще через пол часа успокаивается, открывает здорову тетрадь и рисует очередную блок-схему. Черкает ее... Рисует новую. Думает, что как же жаль, что способ "рандом в рандом" в данном случае не помог. Наконец дорисовывает вроде как абсолютно точный алгоритм расстановки тегов и переводит его на php. Наконец-то код генерится как надо... Славит йайца словами: "Слава йайцам" и добавляет кнопочку "добавить раздел" в каждый из разделов. Смотрит. Куча текста, нихрена не понятно... Тырит иконки с simplebits.com (он всегда их тырит, дорисовывает пару пикселей, меняет цветовую гамму и выдает за свои. У него, по официальным данным, 170 метров иконок для сайтов на винте)

    [​IMG]

    Плюсики и точки рисует сам. Вставляет всю эту требуху в CSS - работает... Радуется и идет за шоколадкой. По дороге вспоминает что на диете и возвращается. По дороге вспоминает что диета с понедельника и снова направляется к холодильнику.
    Пишет добавление разделов в разделы итп. Тут все просто. AJAX выводит новое окошко, вписывается новое имя, тем же xmlhttprequest добавляется запись в БД а тем временем средствами javascript добавляется новый элемент списка в нужное место. Потестил... через какое-то время все содержимое страницы очутилось в списке... "Хмм...", - сказал Трин и полез в БД. в таблице с деревом, там где вложенные множества, творился хаос... "Хмм...", - еще раз сказал Трин. На этот раз более продолжительно. Открыл скрипт добавления записи и снов сво большу тетрадку. Нарисовал дерево, расставил правые и левые ключи, пересчитал. Переписал скрипт. Сново потестил - все работало. Это было достаточно странно...
    "ОМГ!", - воскликнул Трин, вспомнив о существовании IE. Он не ошибся, в IE был именно ОМГ. Но ОМГ был лишь с первого взгляда. 5 минут ковыряния CSS со спецификацией и в IE тоже царила красота. Оставалось доделать "живое" перетаскиваение элементов меню. Никакой сложности это не представляло... с первого взгляда.
    Начал Трин со своего любимого =))) с юмора =))) Немного поколдовав над явой он получил следующую картину:

    [​IMG]

    Поржал он, надо сказать, от души =)))
    Продолжил. Вроде все просто. Создал новый li элемент средствами javascript, приаттачил его ребенком к своему списку, всунул текст, идентичный тексту элемента списка, на которм было зарегистрировано onMouseDown, применил новому li абсолютное позиционирование и зарек бегать за курсором мышки. Все просто. Но как понять в какой пункт меню был "перетащен" текущий пункт меню? На первый взгляд тоже вроде просто... ловить событие onMouseUp на каждом из пунктов, тем самым получая нужные данные... Не тут то было. При onMouseDown IE блочит все MouseEvent события кроме текущего... Трин всеми клеточками совего достаточно жирного организма начал понимать, насколько же сильно он ненавидит IE... Открыл большой javascript справочник, купленный в книжном "Москва" в 12 часов ночи на голодные желудок, пролистал до MouseEvent... вычитал что в IE для event существует свойство srcElement, которое отдает элемент документа, в котором произошло событие... Посмотрел на потолок и понял всеми клеточками своего достаточно толстого тела, как же он любит IE... Тестит - не пашет... "Странная йухня", - подумал трин и тут вдруг еще один "ОМГ" пробежал в его голове... Он убрал к чертям этот srcElement и почистил кеш IE. Все работало... его теория о том что IE блочит все MouseEvent при событии одного из них полетела прахом.
    Вот так вот в течении всего дня Трин сделал подобное меню. Завтра заказчику он будет со стеклянными глозами говорить что это ерунда и работы там на 15 минут было... такой вот он урод =)))

    Ладно, на этом все =))) тут друзья приехали, требуют продолжение пятницы =) всем удачи
     
    _________________________
  2. GreenBear

    GreenBear наркоман с медалью

    Joined:
    7 May 2005
    Messages:
    2,548
    Likes Received:
    1,397
    Reputations:
    612
    Красавчег =)
     
  3. Дикс

    Дикс Elder - Старейшина

    Joined:
    16 Apr 2006
    Messages:
    1,194
    Likes Received:
    227
    Reputations:
    26
    ну если учесть что шоколадки не хранят в холодильниках =))) то крута =)
    самокритично %)
     
  4. KoTeG

    KoTeG Banned

    Joined:
    29 Apr 2006
    Messages:
    198
    Likes Received:
    165
    Reputations:
    2
    Good.....
     
  5. Trinux

    Trinux Members of Antichat

    Joined:
    26 Nov 2004
    Messages:
    1,403
    Likes Received:
    296
    Reputations:
    364
    2 Дикс
    А я храню =)
     
    _________________________
  6. nerezus

    nerezus Banned

    Joined:
    12 Aug 2004
    Messages:
    3,191
    Likes Received:
    727
    Reputations:
    266
    я когда их жрал(года 4 назад) - то тоже хранил, чтобы не растаяли =))
     
    #6 nerezus, 4 Jun 2006
    Last edited: 4 Jun 2006
  7. Trinux

    Trinux Members of Antichat

    Joined:
    26 Nov 2004
    Messages:
    1,403
    Likes Received:
    296
    Reputations:
    364
    Сегодня, кстати, ниипательсткая жара в Москве =) с чем всех и поздравляю =)
     
    _________________________
  8. Dumkopff

    Dumkopff Elder - Старейшина

    Joined:
    5 Apr 2006
    Messages:
    60
    Likes Received:
    25
    Reputations:
    0
    Уже ниипательская гроза :) . По крайней мере в районе Басманки.
     
  9. Trinux

    Trinux Members of Antichat

    Joined:
    26 Nov 2004
    Messages:
    1,403
    Likes Received:
    296
    Reputations:
    364
    да да. От грозы ночью проснулся =) пересрался =)
     
    _________________________
  10. Rebz

    Rebz Super Moderator
    Staff Member

    Joined:
    8 Nov 2004
    Messages:
    4,055
    Likes Received:
    1,532
    Reputations:
    1,128
    флудеры))
    я даже заснял молнию... вспомнился фильм Война Миров с Томом Крузом)))
     
  11. m0nzt3r

    m0nzt3r моня

    Joined:
    22 Jun 2004
    Messages:
    2,091
    Likes Received:
    671
    Reputations:
    591
    неее ребят вы ниипать погисчо не видели... 37!!! ебануццо можно
     
  12. GreenBear

    GreenBear наркоман с медалью

    Joined:
    7 May 2005
    Messages:
    2,548
    Likes Received:
    1,397
    Reputations:
    612
    Помню в дервевне, года 4 назад, на солнце + 49 =))
     
  13. Дикс

    Дикс Elder - Старейшина

    Joined:
    16 Apr 2006
    Messages:
    1,194
    Likes Received:
    227
    Reputations:
    26
    кто больше? %) обсуждаем рассказ трина...
     
  14. ^ацтанЬ^

    ^ацтанЬ^ New Member

    Joined:
    4 Aug 2006
    Messages:
    19
    Likes Received:
    2
    Reputations:
    -2
    Подгани иконки, нах было линией закрывать те что запостил
     
  15. alextoun

    alextoun Вылет с Трассы

    Joined:
    7 May 2006
    Messages:
    563
    Likes Received:
    216
    Reputations:
    96
    Не понял, вы погоду расматриваете или темы трина?