Цитата:
|
Ну ладно я не прикалываюсь) и разумеется я начал писать функцию еще до того как увидел этот список) а перестал когда про тайпскрипт узнал)
|
UI.js 0.7 demo
<script src="http://yourjavascript.com/3017238062/fix.js"></script> <script src="http://yourjavascript.com/3322168260/ui.js"></script> <script> ui.module['Slideshow'] = function($, scope) { scope.active = 0; $.on('keydown(left)', function() { scope.active-- }); $.on('keydown(right)', function() { scope.active++ }); var srcs = [ 'http://cs402424.vk.me/v402424516/5f39/j9NEVbzaFho.jpg', 'http://cs540109.vk.me/c540101/v540101247/1e08/h5zYSV2a3C8.jpg', 'http://cs413921.vk.me/v413921890/1b63/q1lALPeD_9k.jpg', 'http://cs413921.vk.me/v413921890/1b52/gfODdvg3BeU.jpg', 'http://cs540109.vk.me/c540101/v540101247/1dfa/9tZrEKSJUPs.jpg', 'http://cs540109.vk.me/c540101/v540101247/1dec/IdbEO_5ghdE.jpg', 'http://cs417724.vk.me/v417724583/9737/OmJeOnhTQ9I.jpg' ]; $('slide').model({position: 'middle', src: ''}); $('slide').repeat('src', srcs); $('slide').watch('active', function(i, scope) { var active = scope.active; scope.position = (i < active) ? 'left' : (i > active) ? 'right' : 'center'; }); $('menu-item').model({index: 0}).repeat(srcs).each(function(i, scope) { scope.index = i; }).on('click', function(e, i) { scope.active = i; }); }; </script> <style> .Slideshow { position : absolute; width : 600px; height : 400px; left : 50%; top : 50%; margin-left : -300px; margin-top : -200px; list-style : none; padding : 0; overflow : hidden; } .Slideshow_slide { position : absolute; width : 100%; height : 100%; transition : all 0.3s; } .slide_left { left : -100% } .slide_right { left : 100% } li:hover { background-color : red; cursor : pointer; } </style> <div ui="Slideshow{ #myMenu toggle }"> <ul class="Slideshow"> <img ui="Slideshow-slide" src="{{src}}" class="Slideshow_slide slide_{{position}}"> </ul> <ul> <li ui="Slideshow-menu-item">слайд {{index}}</li> </ul> </div> |
все соснули ^__^
|
Я вот сижу на IPad'e и как мне по твоему листать?
|
Цитата:
ну давай на кнопочки повесим листалку еще) |
Это намек на то что твое Демо у меня не пашет)
|
все)
и да, разумеется массив картинок получаться будет через api как то так $.api.getImages(function(srcs){ $('slide').repeat('src', srcs); }); ^__^ |
Тьфу ты. Я думал тут что то интересное, а тут обычная переключалка фото. Хотя бы плавность добавил бы. А то такую переключалку и без твоих скриптов в пять строк кода сделать не проблема
|
Цитата:
а не с недокомпьютера Цитата:
|
devote, о, придумал, сделаю ка я рядом модуль менюшку которая бы по сокетам переключала слайды в галерее ^___^
|
devote, все, сделал, обрати внимание как 2 модуля общаются по средством сокетов (сокет toggle)
а так же обрати внимание что данные можно заносить как декларативно (прямо в html) так и динамически подгружать аяксом и подставлять под шаблон ^__^ |
Цитата:
|
Цитата:
Я уже сказал что понял тебя на счет мобилок я НЕ СЧЕЛ нужным писать css префиксы для анимации, не более) анимация это оформление и за это отвечает css. Ты мне лучше расскажи как ты относишься к анимированной галерее в 15 строчек кода)? Которую можно расширять, подключать к ней модули и.т.п. |
Цитата:
Никак. Так же как к галерее в 30 строчек кода. Галереи пишутся на раз, а потом ты про них забываешь навсегда. Давай еще пример. |
и как этим пользоваться.
меню слева несвязано с данными, количество li может отличаться от количества картинок. Слайдер внедрять сложно, так как каждый раз нужно прописывать картинки и кучу html чтобы внедрить 2й сладйер нужно копипастить js и html Слайдер не индексируется поисковиком. глубже копать боюсь. Я говорю о конкретном приведённом тобой примере. |
Цитата:
|
Цитата:
Цитата:
короче ладно я смотрю вы по коду не можете определить чо каждый метод делает так что надо носом тыкать и писать маны.. а я думал что названия очевидные получатся(( ![]() Цитата:
|
Цитата:
ну во первых, чо что там у тебя не индексируется это лишь от криворукости, нормальные пацоны умеют индексировать аякс приложения, гугл в помощь. во вторых, модули будут в будущем подгружаться(их яваскрипт код) АВТОМАТИЧЕСКИ с моего сайта, если не обнаружены локально, ну или можно будет вверху какой нить файлик с импортом сделать типа какие модули с сайта моего подключить и какие имена им дать внутри проекта и.т.п. во вторых появятся шаблоны, один раз описал галерею а потом в месте где хочешь чтобы она рисовалась прописываешь имя шаблона и все. более того шаблоны так же могут подгружаться как часть модуля с моего сайта, это же версия 0.7 ну, тут я прост показываю удобство ui, а оно по истине элитарно). |
Цитата:
аля: ui.setSlider(imgsObj, parent); а теперь смотрю и думаю, нафига пихать картинки в массив, отдельно, а подписи в html <li ui="Menu-item">слайд 1</li>, это же двойной труд. В итоге проще уж тогда пихать туда и <a> и <img>тогда и индексирование будет, хотя я и не понимаю зачем слайдеру индексирование. Я так понял шаблонизатор еще в пути? |
Цитата:
есть 2 модуля, я показал что их можно связывать по сокетам, в одном данные описаны декоративно а другом динамически(то есть вот этот массив с ссылочками на картиинки можно и нужно подгружать аяксом), я показал что можно работать и так и так, модули вообще не связные чтоб их связь хоть как то показать я сделал чтобы по сокету циферка передавалась , не более. НЕ НАДО ТАК ПРОГРАММИРОВАТЬ, если вы хотите сделать галерею с менюшкой сделайте менюшки частью модуля галерея , и это очевидно. короче надо демо лучше сделать тут наверное моя вина что вы не читаете что я пишу а смотрите только демо. что-не-по-нят-но-го? |
Цитата:
|
Ну ясно, мож видяху записать?
|
У меня твой демо ничего не показывает, АНДЕРСТЕНД? я вижу только код, картинки не грузятся.
|
все, изменил демо, убрал меню чтобы не отвлекало, листать стрелочками.
что значит демо не показывает? баг типа? |
то и значит, сейчас тупо место под картинку
|
задрали своими вконтактиками, НЕ ЗАРЕГАН Я!!!
![]() |
Цитата:
п.с. хорошо щас пикчи другие поставлю |
Ещё раз повторю плагин в реальный проект встраивать нельзя.
Приведи нормальный пример. Если я разработал компонент пользовательского интерфейса, то я хочу его применять столько раз сколько мне нужно, не периписывая его каждый раз. Хочу удобное конфигурирование. Я не понимаю в чём прикол писать бесполезную библиотеку. Смысл ui фреймворка в том чтобы создавать кирпичи из которых потом удобно строить дом. У тебя вместо кирпича навозная куча вышла, как его в стену ставить ? К примеру вот кирпичик раз <menu></menu> - это меню вот кирпичек 2 <slide></slide> - это слайдер а вот собранное из кирпичиков приложение. <div id="contr1" class="controller"> <menu data-source="imglist" select="selectitem"></menu> <slide data-source="imglist" select="selectitem"></slide> </div> Причём это можно даже на голом jQuery реализовать |
Gozar, все кстати сделал меню частью модуля слайд шоу, оно динамическое, правда делано немного костыльненькопо этому надо добавлять еще один метод) подумать как красиво биндить 2 коллекции к одному массиву данных)
|
Цитата:
в демки три компонента, все слабо связанны между собой. Для хардкора не испозованы даже хелперы. Собственно это просто доказательство возможности, на angular это проблема конечно изящнее решается. в демках UI я вообще не ивдел никогда декомпозиции, походу её там тупо нет. всё описание использования и взаимодействия компонентов занимает 4 строчки. <div id="contr1" class="controller"> <menu data-source="imglist" select="selectitem"></menu> <slide data-source="imglist" select="selectitem"></slide> </div> Роль контрола прежде всего в обепечение данными. Слайдер и меню независимы, и могут распространятся как jQuery плагины, независимо друг от друга. <script src="http://code.jquery.com/jquery-1.10.1.min.js"></script> <script> $(function(){ //================== плагин слайдера ===================// $('slide').each(function(){ var me= $(this), ds=me.attr('data-source'), selItem=me.attr('select'), scope=me.parent('.controller'); //применим шаблон me.append('<ul class="Slideshow"></ul>'); //слушаем изменения в data-source scope.on('change-'+ds, function(){ $('li',me).remove(); scope.data(ds).forEach(function(img){ $('ul',me).append('<img src="'+img+'" class="Slideshow_slide">'); }) }) //слушаем изменения в selectItem scope.on('change-'+selItem,function(){ me.find('img').removeClass('Slideshow_slide').addClass('Slideshow_slide_hide'); me.find('img:eq('+scope.data(selItem) +')').removeClass('Slideshow_slide_hide').addClass('Slideshow_slide'); }) }); //================== плагин меню ===================// $('menu').each(function(){ var me= $(this), ds=me.attr('data-source'), selItem=me.attr('select'), scope=me.parent('.controller'); //применим шаблон me.append('<ul></ul>'); //слушаем изменения в data-source scope.on('change-'+ds,function(e){ scope.data(ds).forEach(function(img){ $('ul',me).append('<li>'+img+'</li>'); }) me.find('li').click(function(e){ scope.data(selItem, $(this).index() ); scope.trigger('change-'+selItem); }) }) }); //================== контроллер ===================// $('#contr1').each(function(){ var me=$(this); me.data('imglist',[ 'http://cs402424.vk.me/v402424516/5f39/j9NEVbzaFho.jpg', 'http://cs540109.vk.me/c540101/v540101247/1e08/h5zYSV2a3C8.jpg', 'http://cs413921.vk.me/v413921890/1b63/q1lALPeD_9k.jpg', 'http://cs413921.vk.me/v413921890/1b52/gfODdvg3BeU.jpg', 'http://cs540109.vk.me/c540101/v540101247/1dfa/9tZrEKSJUPs.jpg', 'http://cs540109.vk.me/c540101/v540101247/1dec/IdbEO_5ghdE.jpg', 'http://cs417724.vk.me/v417724583/9737/OmJeOnhTQ9I.jpg' ]) me.data('selectitem',0); //оповестим плагины об изменении данных me.trigger('change-imglist'); me.trigger('change-selectitem'); }) }) </script> <style> .Slideshow { position : relative; width : 600px; height : 400px; list-style : none; padding : 0; overflow : hidden; } .Slideshow_slide_hide{ position : absolute; width : 0%; left : 50%; height : 100%; transition : all 0.2s; } .Slideshow_slide { position : absolute; width : 100%; height : 100%; transition : all 0.2s 0.2s; } li:hover { background-color : red; cursor : pointer; } </style> <div id="contr1" class="controller"> <menu data-source="imglist" select="selectitem"></menu> <slide data-source="imglist" select="selectitem"></slide> </div> |
Ну окей, теперь сделай так чтобы при клике колесиком мышки по активному слайду он и его пункт меню удалялся) ^__^
это то что у меня делается вот так $('slide').on('click(m-middle)', function(event, index){ $('slide').splice(index, 1); }); кстати надо обертку на удалялку написать) точно) п.с. и теперь посмотри на мои 15 строчек кода и на свои, а так же я не понял что ты хочешь доказать, ты хочешь показать свое незнание зачем нужны шаблонизаторы или что)? Если ты не знаешь зачем они нужны я могу быстренько по задавать тебе квесты от которых у тебя руки дыбом встанут) которые на шаблонизаторах решаются за 5 секунд) если уж тебе лень смотреть пособия по ангуляру) ок ок небольшое соревнование, давай напишем простое TODO приложение)) щас я опишу цель задания |
Причём тут шаблонизаторы, или размер кода.
Я не это пытаюсь донести. Я не полный псих чтобы angular серьёзно заменять jQuery. То что я написал это хардкор, по принципу могу жопой пропердеть концерт рахманинова. Я сделал важную вещь, я создал два независимых компонента и отправил их в чёрный ящик. с точки зрения пользователя компонентов приложение выглядит так. <script> $('#contr1').each(function(){ var me=$(this); me.data('imglist',[ 'http://cs402424.vk.me/v402424516/5f39/j9NEVbzaFho.jpg', 'http://cs540109.vk.me/c540101/v540101247/1e08/h5zYSV2a3C8.jpg', 'http://cs413921.vk.me/v413921890/1b63/q1lALPeD_9k.jpg', 'http://cs413921.vk.me/v413921890/1b52/gfODdvg3BeU.jpg', 'http://cs540109.vk.me/c540101/v540101247/1dfa/9tZrEKSJUPs.jpg', 'http://cs540109.vk.me/c540101/v540101247/1dec/IdbEO_5ghdE.jpg', 'http://cs417724.vk.me/v417724583/9737/OmJeOnhTQ9I.jpg' ]) me.data('selectitem',0); //оповестим плагины об изменении данных me.trigger('change-imglist'); me.trigger('change-selectitem'); }) </script> <div id="contr1" class="controller"> <menu data-source="imglist" select="selectitem"></menu> <slide data-source="imglist" select="selectitem"></slide> </div> У тебя все кишки на виду. <script> ui.module['Slideshow'] = function($, scope) { scope.active = 0; $.on('keydown(left)', function() { scope.active-- }); $.on('keydown(right)', function() { scope.active++ }); var srcs = [ 'http://cs402424.vk.me/v402424516/5f39/j9NEVbzaFho.jpg', 'http://cs540109.vk.me/c540101/v540101247/1e08/h5zYSV2a3C8.jpg', 'http://cs413921.vk.me/v413921890/1b63/q1lALPeD_9k.jpg', 'http://cs413921.vk.me/v413921890/1b52/gfODdvg3BeU.jpg', 'http://cs540109.vk.me/c540101/v540101247/1dfa/9tZrEKSJUPs.jpg', 'http://cs540109.vk.me/c540101/v540101247/1dec/IdbEO_5ghdE.jpg', 'http://cs417724.vk.me/v417724583/9737/OmJeOnhTQ9I.jpg' ]; $('slide').model({position: 'middle', src: ''}); $('slide').repeat('src', srcs); $('slide').watch('active', function(i, scope) { var active = scope.active; scope.position = (i < active) ? 'left' : (i > active) ? 'right' : 'center'; }); $('menu-item').model({index: 0}).repeat(srcs).each(function(i, scope) { scope.index = i; }).on('click', function(e, i) { scope.active = i; }); }; </script> <div ui="Slideshow{ #myMenu toggle }"> <ul class="Slideshow"> <img ui="Slideshow-slide" src="{{src}}" class="Slideshow_slide slide_{{position}}"> </ul> <ul> <li ui="Slideshow-menu-item">слайд {{index}}</li> </ul> </div> Кода на функционал конечно меньше чем у jQuery, но то что ты с его помощью разрабатываешь слишком сложно использовать. И я немогу добится от тебя примера где бы ты показал что я могу разработать деталь которую удобно встроить. Я не хочу писать вот такую парашу каждый раз когда мне нужен слайдер. <div ui="Slideshow{ #myMenu toggle }"> <ul class="Slideshow"> <img ui="Slideshow-slide" src="{{src}}" class="Slideshow_slide slide_{{position}}"> </ul> <ul> <li ui="Slideshow-menu-item">слайд {{index}}</li> </ul> </div> неужели так сложно понять ДАЙ МНЕ НОРМАЛЬНЫЙ ИНТЕРФЕЙС ДЛЯ ИСПОЛЬЗОВАНИЯ КОМПОНЕНТОВ И Я ОТ ТЕБЯ ОТСТАНУ :) Я раз 10 уже пинал тебя за это :) |
Ты видимо просто не до конца понимаешь ЧТО такое UI.js и как им пользоваться)
Цитата:
<ul ui-template="Slideshow"> <img ui="Slideshow-slide" src="{{src}}" class="slide_{{position}}"> </ul> Цитата:
DjDiablo, то о чем ты говоришь называется шаблоны) ты пытался применить редактор модулей в шаблонизации по этому и предположил что это придется писать каждый раз) вот и все) видимо мне действительно надо сделать демки нормальные на сайте чтобы показать что да как) а то вы не понимаете) ну это и логично вы же не знаете что в коде, вы видите только то что я показал) |
Может и не понимаем, я прошу эту демку от тебя с первой версии :)
|
Ну вот смотри короче, ты оцениваешь то что есть, но дело в том что я пилю все с нижних уровней так чтобы удобно было не только юзать модули, но и описывать их и.т.п. то есть на самом верхнем уровне у тебя стена и взаимодействие между кирпичиками строится так:
![]() у меня же верхние кирпичики это модули и используются они так: ![]() да да, на это место автоматически подставятся разметка из шаблонов этих модулей )) 2 (зарание описаных с зарание опсиаными шаблонами) модуля, и связаны они по всем сокетам (хотя что у менюшки что у слайдшоу по сути юзается только один сокет toggle перкключалка, если не написать название сокетов после айдишника модуля на который подписываемся то подписывание происходит на все сокеты которые у него вообще есть) Ну как-то так, просто это версия 0.7 и тут я просто придумываю как красиво описывать логику модулей и их шаблоны. все ж по порядку ну) и разумеется я добавлю параметры тут) чтобы легко описывать настройки каждого модуля пока мы просто видим что модуль Слайд шоу подписан на все сокета модуля с айдишником myMenu =) и реагирует на них, меню о слайдшоу ничего не знает потому что сокеты могут только "слушать" но не передавать) |
а инфа c путями к картинкам где ?
|
Цитата:
но можно добавить чо то типа контролов как у тебя и передавать их имена в настройки, ну тип того <ui src="urlLust">Shideshow{ #myMenu }</ui> <ui src="urlLust">Menu#myMenu</ui> но блин мне кажется данные надо как то на сервере хранить и аяксом получать, не? у меня щас это делается так описывается api для работы с сервером: ui.api = function(){ this.getComments = function (){}; this.getImgURLs = function (){}; } а внутри модуля просто юзается этот метод ui.module["Slideshow"] = function($){ $.api.getImgURLs(function(urls){ $('slide').repeat(urls) }) }; ну типа того |
Если сайт, то нужно помнить что аякс враг поисковика.
Если приложение то вероятнее всего ajax с сервера. Но нужно биндить данные очень аккуратно, возможно данные не только слайдером используются. К тому же данные могут редактировать на клиенте, удалятся, добавляться, и возможно сохранятся обратно на сервер. |
Цитата:
Цитата:
п.с. а знаешь сделаю ка я уровень стены уже сейчас) чтобы показать как это удобно Цитата:
так то ^__^ |
Часовой пояс GMT +3, время: 16:38. |