Обява

Свий
Няма добавени обяви.

Разни въпроси към WEB-аджиите...

Свий
X
 
  • Филтър
  • Час
  • Покажи
Изчисти всичко
нови мнения

  • Re: Разни въпроси към WEB-аджиите...

    viewPort е по добрия вариянт според мен, на дали ще има голяма разлика в перформънс, но имаш по малко код и по малко занимавка.
    По малкото код винаги води до по малко грешки и по лесна работа за в бъдеще.

    Коментар


    • От: Разни въпроси към WEB-аджиите...

      Реално кода във варианта за всяка клетка е по-малко. Клетките са "правят" от функция CreateCell, която им присвоява и ивент хандлерите, които се състоят от един ред.

      Разликата в пърформанса е около 2-3 в полза на хандлери за всяка клетка. Снощи мерих. Това по простата причина че нищо не се смята и никакви функции не се викат (ViewPort решението вика като минимум една - jQuery.offset, за да вземе координатите viewPort-а, и от там спрямо pageX и pageY на ивента да смятам в кой ред и коя клетка е. В крайна сметка работейки с таблицата, юзера няма да усети разлика между двете, освен че няма как с абсолютна точност да се сметне в коя клетка е кликнато, особено в Chrome, и се получават някои неточности от някой и друг пиксел тук-там. Което също от гледна точка на юзера трудно би се усетило.

      Клоня към вариант хандлер за всяка клетка + хандлер за всеки ред. Ако юзера е кликнал върху хоризонталните бордери на клетката, реално клика върху div-а на реда, а не на клетката, и се случва понякога да не извика хандлера на клетката, ами тоя на реда. Ивента така или иначе избълбуква по DOM веригата чак до най-високо, освен ако не го спра в някой хандлер по пътя. По тоя начин ако е кликнато върху клетка, знае се и реда, и колоната. Ако е кликнато върху ред - знае се реда, а колоната се смята, и в крайна сметка ивента приключва върху ViewPort-а, ама с максимално точно сметнати ред и колона, и винаги зацепващ, щом е кликнато върху таблицата.
      Интернет експлорър: Безплатно предоставян от Майкрософт тул за сваляне на браузер по избор.

      Коментар


      • Re: Разни въпроси към WEB-аджиите...

        Спарки, щом си забелязал проблем естествено е да на го ползваш.

        Коментар


        • От: Re: Разни въпроси към WEB-аджиите...

          Първоначално публикуван от Daniel Преглед на мнение
          Спарки, щом си забелязал проблем естествено е да на го ползваш.
          Проблема е още по дефиниция - практически няма как с абсолютна точност, и еднаква във всички броузъри, да вържеш мишите координати с координати на DOM елемент. И там са свобони съчинения на всеки броузерописач (Chrome и Safari са трагедия направо). Аз за туй казвам че тая пасмина е за бой. Хиляди хора, милиони кинти, десетилетия работа, и най-накрая за елементарни неща - никакво читаво решение. Да не говорим че рендерването като скорост е под всякаква критика, предвид изчислителната мощ на машините, с които работим. И това без изобщо да споменаваме хилядите бъгове. Цалата система е сбъркана изначално, ама явно толкова си можем.
          Интернет експлорър: Безплатно предоставян от Майкрософт тул за сваляне на браузер по избор.

          Коментар


          • Re: Разни въпроси към WEB-аджиите...

            Видя ли сега защо понякога форума има ядове с различно кретении свързани с браузърите
            Един читав няма, все нещо е накриво написано или недоработено или не работи както трябва.

            Коментар


            • От: Re: Разни въпроси към WEB-аджиите...

              Първоначално публикуван от Daniel Преглед на мнение
              Видя ли сега защо понякога форума има ядове с различно кретении свързани с браузърите
              Един читав няма, все нещо е накриво написано или недоработено или не работи както трябва.
              Това го знаех априори. Ама чак сега имам бели косми заради него. Но пък JavaSctipt-а кефи максимално. Като трябва да пиша на нормален език за програмиране, в първия момент ми е малко зор.
              Интернет експлорър: Безплатно предоставян от Майкрософт тул за сваляне на браузер по избор.

              Коментар


              • Re: Разни въпроси към WEB-аджиите...

                JavaSctipt си е готина част, само не трябва да се прекалява с него. Въпреки че като гледам напоследък колко са голями библиотеките направо се палаша.

                Коментар


                • От: Разни въпроси към WEB-аджиите...

                  Аха. jqGrid-а е огромен. Моето е лилипут, сравнено с него, и ще си остане такъв даже като го начича с всичките нужни екстри. Аз шарении не ща - трябва ми почти нормална таблица. За сметка на това почти нямам меню/прозорец/диалог в системата, на който да няма поне една.

                  Като стигна до печата подозирам че ще се появят още доволно количество бели косми, ама тогава ще го мисля. В сегашния ни енджин има някои екстри, на които броузера не е способен, а трябва да има някакво прилично принт превю. В краен случай ще им мятам или PDF-и, или ако ми стигне ентусиазма ще го направя през SVG, или майкросовската простотия. Хубавото е че ако си направя собствен енджин през SVG, няма да преписвам печата на справките, което е ужасно тегава история. PDF-и и сега си прави, без да иска нищо допълнително инсталирано. Ама принт превюто му е през winapi, като има функции за автоматично скейлване и пренасяне на текст в кутийка например. Проблема е че трябва да върви на IE8 поне, а там SVG няма.

                  ...бе ще го мисля като му дойде времето.
                  Интернет експлорър: Безплатно предоставян от Майкрософт тул за сваляне на браузер по избор.

                  Коментар


                  • Re: Разни въпроси към WEB-аджиите...

                    Няма ли да ти е най лесно с друг темплейт да е превюто. И да имаш експорт към ПДФ.

                    Коментар


                    • От: Разни въпроси към WEB-аджиите...

                      Експорта към PDF го има наличен, ама откъм сървъра. Освен ако не се емна да пиша библиотека на javascript за експорт към PDF, ама е малко вероятно. Да ползвам готова такава е с една идея по-вероятно. Най-вероятно ще набутвам справките от сървъра в XML или JSON, и от там - javascript енджин на клиентската машина ще ги показва я на екран, я в експорт към нещо (PDF, Excell и прочие полюции). Бедата е че в момента принт превюто излиза автоматично, и се печати с 2 клика на мишката или два ентера на клавиатурата. Ще ми се да става максимално лесно. Ако превюто е HTML пък, екстрата с автоматично побиране на текст в кутийка мяй няма как да стане, отделно дето по справките има и завъртяни текстове и прочие простотии, щото трябва да се имитират например бланки на статистиката, пък там са си галфони и рядко мислят повече от 5 минути, преди да свършат нещо. Бе трагедията е пълна, а аз трябва да измисля нещо с минимално писане да покрива изискванията, че иначе работата е зле. Тоя софтуер е писан 12 години, и сега го почвам практически от нула, при това върху концептуално различна платформа, както по отношение на бази данни, така и по отношение на интерфейс.

                      ...божеее, що писане ме чака....
                      Интернет експлорър: Безплатно предоставян от Майкрософт тул за сваляне на браузер по избор.

                      Коментар


                      • От: Разни въпроси към WEB-аджиите...

                        Следваща питанка: Може ли де се създаде куки, което броузера да не праща със всяка заявка към сървъра, ами да се ползва само локално, от WEB апликацията?

                        Общо взето картинката, която виждам е:
                        - Главната страница е крайно проста, но съдържа един скрипт, дето изгражда всичкия базов интерфейс.
                        - По нормален начин се зареджа само главната страница. Всичко останало е AJAX/JSON, и за това се грижи въпросния скрипт.
                        - Определени неща се кешират от самия скрипт, и когато вече са били зареждани в настоящата сесия, заявки към сървъра се изпращат само за данните, които се дисплейват. Това превръща сървъра почти изцяло в data server.

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

                        Казано иначе:
                        - При login-а, сървъра ще създаде идентификационно session куки, и ще пренасочи към главната страница (login страницата е крайно проста, почти изцяло чист HTML).
                        - При влизане в главната страница, броузера ще изпрати въпросното session куки + локалното куки за интерфейса (ако има такова).
                        - При работа от тук нататък (изцяло AJAX), броузера да праща само session кукито, без да праща интерфейс кукито.

                        Възможно ли е, и как? Някаква идея ми е да вържа session кукито към домейна+поддомейна, а интерфейс кукито към пълния адрес на основната страница, и понеже AJAX/JSON заявките ще са към адрес със същия домейн/поддомейн, но различни параметри след това, то при заявка ще се праща само session кукито. Правилно ли мисля?
                        Интернет експлорър: Безплатно предоставян от Майкрософт тул за сваляне на браузер по избор.

                        Коментар


                        • От: Разни въпроси към WEB-аджиите...

                          При записването на бисквитките даваш два параметъра - Domain & Path. Например:

                          Domain=www.off.bg
                          Path=/news

                          Трябва пътят на основната страница да съвпада с тези стойности за да прати браузъра тогава бисквитката. Трябва пътят на callback заявките да НЕ съвпада с тези стойности за да не се праща напразно там.
                          Отделно session бисквитката е с по-общ domain/path за да се праща и в двата случая.

                          Коментар


                          • От: Разни въпроси към WEB-аджиите...

                            А тенкЮ! Кратко и ясно. А аз се бях нещо омотал тотално.
                            Интернет експлорър: Безплатно предоставян от Майкрософт тул за сваляне на браузер по избор.

                            Коментар


                            • От: Re: Разни въпроси към WEB-аджиите...

                              Първоначално публикуван от sparkybg Преглед на мнение
                              Проблема е още по дефиниция - практически няма как с абсолютна точност, и еднаква във всички броузъри, да вържеш мишите координати с координати на DOM елемент. И там са свобони съчинения на всеки броузерописач (Chrome и Safari са трагедия направо). Аз за туй казвам че тая пасмина е за бой. Хиляди хора, милиони кинти, десетилетия работа, и най-накрая за елементарни неща - никакво читаво решение. Да не говорим че рендерването като скорост е под всякаква критика, предвид изчислителната мощ на машините, с които работим. И това без изобщо да споменаваме хилядите бъгове. Цалата система е сбъркана изначално, ама явно толкова си можем.
                              В крайна сметка го направих с един ивент хандлер. Таблицата в крайна сметка е ul, редовете li, колоните - div-ове в li-тата. ul-то е с role='grid', li-тата с role='row', и div-овете с role=gridcell. Хандлера е закачен към ul-to, а по ролята на event.target разбирам какво е цъкнато, после го намирам в един масив, представящ видимата част от таблицата.

                              Код:
                                              elRole = getAttr(e.target, "role");
                                              isRow = (elRole === "row");
                                              isCell = (elRole === "gridcell");
                                              rowEl = isRow ? e.target : (cellEl = e.target).parentNode;
                                              if (rowEl) {
                                                  row = ctt.rows.length;
                                                  while (row--) if (rowEl === (crr = ctt.rows[row])[0]) break;
                                                  row = crr.rowData.row;
                                                  if (cellEl) {
                                                      col = crr.cols.length;
                                                      while (col--) if (cellEl === (ccc = crr.cols[col])[0]) break;
                                                  }
                                                  else {
                                                      tw = (g.table.width.pixels || crr.innerWidth());
                                                      cRight = g.cols.width - (((e.pageX - crr.offset().left) * g.cols.width) / tw)
                                                      col = crr.cols.length;
                                                      while (col--) if ((cRight -= g.cols[col].width.pixels) <= 0) break;
                                                      ccc = crr.cols[(col = Math.max(0, col))];
                                                  }
                                                  col = ccc.cellData.col;
                                              }
                              Интернет експлорър: Безплатно предоставян от Майкрософт тул за сваляне на браузер по избор.

                              Коментар


                              • От: Разни въпроси към WEB-аджиите...

                                Простете милата ми глупота и извинявам се на Спарки, че му ползвам темата. За мен голям проблем, за вас смях до насълзяване. Но моля за помощ. Проблема е следния. Направих си блог, но не мога да го подредя. Малко слабо ми идва непълния превод и лошия английски. Та моля някой да ми помогне. Плащам в ценова листа от бар "Наздраве!", на съответното място. Да оцелеем до тогава де!
                                Как милата ми родина се падна в толкова скапана държава?

                                Коментар

                                Активност за темата

                                Свий

                                В момента има 1 потребители онлайн. 0 потребители и 1 гости.

                                Най-много потребители онлайн 8,787 в 16:37 на 21-06-23.

                                Зареждам...
                                X