Uff, tak jsem jakž takž dokončil ankety

⚠️ Pozor: obrázky z tohoto příspěvku se ztratily při výpadku v roce 2016. Chybějící obrázky nahradí automaticky vtipným placeholderem plugin Broken Image Placeholder.

Raději tu ani nebudu psát jak dlouho mi to trvalo. Je pravda že jsem mezi tím dělal i jiné věci a hlavně si hrál s Dartem od Googlu, ale i tak nejsem spokojen se svou rychlostí. Zpět k anketám, co ankety umí. Do anket mohou hlasovat nebo přispívat pouze přihlášení uživatelé. Každý uživatel může do ankety hlasovat jen pro jednu odpověď a to pouze jednou. Je to tak proto aby někdo nehlasoval jak blbý aby byla nějaká odpověď (nej)lepší a abych já tak neměl zahlcenou DB a taky proto aby hlasování bylo více objektivní a nezmanipulované mnohočetným hlasováním. Pokud uživatel zahlasuje a do 60s si svou odpověď rozmyslí, může kliknout na odkaz, který právě po 60s zmizí. To samé s přidáváním odpovědí – mohou přidávat pouze přihlášení uživatelé, do každé ankety pouze jednou(výjimkou jsou majitelé anket, kteří mohou vložit odpovědi kolik chtějí přímo v anketě) a pokud do 60s si svou vloženou odpověď rozmyslí, může ji vzít zpět a zapsat novou nebo pro něco hlasovat. Zde je to akorát nedodělek, že pokud uživatel svou možnost hlasovat vezme zpět, klikne na odkaz, zapsaný hlas i odpověď se smažou, ale vizuálně zůstanou v anketě a jen se zobrazí zpráva že pokud chce uživatel zadat jinou vlastní hodnotu, ať refreshuje stránku. Pokud uživatel klikne na odpověď, kterou teď smazal, web nespadne ani nevypíše chybovou zprávu ASP.NET, ale nad anketou v boxu se zobrazí “Tato odpověď nebyla v DB nalezena.”. Čili i proti tomu je web chráněný. Na výběr pro možnosti v anketě je zatím 7 barev ale budu se snažit rychle přidat další. Když uživatel specifikuje odpověď, která ještě v tabulce není, přiřadí se jí náhodná barva právě z těchto 7 barev. Nebere to ohled na to jestli daná barva už v anketě je, takže i když je v anketě méně než 7 položek, tak se může stát že 8. položka bude mít stejnou barvu jako některá předchozí. Limit délky textu je pro otázku 80 znaků a pro odpověď 30 znaků. Dále pak limit odpovědí v jedné anketě je 255(což by už byla extrémně dlouhá anketa na stránce, protože zatím moje ankety neumí skrývat odpovědi které jsou níž nebo nemají tolik hlasů), limit hlasů i limit anket je neomezený ve smyslu že ho já uměle neomezuji, ale DB nějaké omezení má. Ale to je moje starost až budou docházet indexy abych změnil datový typ sloupce nebo to vyřešil jinak. Ve výsledném HTML ankety se můžou seřadit položky podle počtu jejich kliknutí sestupně. U každé ankety mám poznačeno datum kdy byla vytvořena i datum, kdy může vypršet, které může být nastaveno na Nikdy. Datum vytvoření po vytvoření ankety už nejde nijak změnit, kdežto datum expirace lze libovolně měnit ve správě ankety. Pro mě jako pro webmastera je výhoda že se mi podařilo všechen JS dát k výstupu html, takže teď pouze specifikuji

a v C# kódu zavolám jedinou metodu, kterou tento div naplním. Tato metoda si bere jediný parametr a to ID ankety. O nic více se nemusím starat, žádné kopírování JS kódu do stránek, kde může ale taky nemusí být anketa. Na jedné stránce může být více anket, ale všechny mají své vlastní JS metody a funkce, takže nevýhoda je ve větším množství kódu, výhoda je že prohlížeče nebudou zmatené kterou funkci mají použít. Další nedodělek anket je že když se bude hlasovat/zadávat nová odpověď, tak se pouze aktualizuje počet hlasů, % a graf u odpovědi které jste dali hlas. Všechny ostatní odpovědi, ačkoliv se poměr hlasů změnil, zůstanou nezměněny dokud nereloadnete stránku. Nahoře je box který zobrazuje informace které anketa podává a dole je počet hlasů celkově, který se aktualizuje nahoru či dolů podle toho zda hlasujete / přidáváte odpověď nebo odebíráte hlas. Toto by bylo k samotným anketám na stránkách a teď k stránkám, které tyto ankety spravují: Anketa byla úspěšně smazána Mám stránku pro zobrazení všech anket uživatele, kde kliknutím na ikonku se načte editační stránka ankety. Tato stránka obsahuje pouze tabulku se stránkováním s informacemi o anketě a editačním tlačítkem. Dále je zde možnost ankety řadit podle těchto kritérií:
  1. Výchozí (bez třídění)
  2. Podle počtu odpovědí
  3. Podle možnosti přidávat další odpovědi
  4. Podle data vytvoření
  5. Podle data expirace
  6. Podle celkového počtu hlasů
  7. Podle názvu ankety a->z
Editační stránka ankety má 2 mody – Vytváření nové ankety a Editace stávající ankety. Pokud v adrese specifikujete místo ID ankety ‘new’, tak se vám otevře v režimu Vytváření nové ankety. Po vyplnění základních meta informací a kliknutí na tlačítko se vytvoří v DB anketa a vás to přesměruje na stejnou stránku, pouze s ID této ankety, kde už můžete přidávat odpovědi. Odpovědi se přidávají v popupu, vyplníte název odpovědi(tlačítko pro uložení se vám zobrazí až když zadáte neprázdný text), barvu změníte pokud vám nebude vyhovovat a stisknete tlačítko. Pokud si rozmyslíte že nechcete přidávat novou odpověď, zmáčkněte tlačítko “zavřít” nebo klikněte kdekoliv mimo popup a ten se zavře. Ihned po přidání odpovědi se bez postbacku přidá tato odpověď ke stávajícím. S popupem je i editace odpovědi, tu lze změnit ale jen barvu, text odpovědi změnit nelze. Poslední akce je smazání odpovědi, to je bez popupu. Je tam ještě jedno tlačítko pro statistiky, ale to je zatím prázdná stránka. Další funkce které web umí je kompletně smazat celou anketu včetně všech odpovědí a hlasů. Pokud někde uživatel neaktualizuje ID nebo odkaz na anketu úplně nevymaže, zobrazí se mu na tomto místě “tato anketa nebyla nalezena”. Pár starších obrázků z administrace z ještě nehotové verze: Dokud se nezadá text, tlačítko pro uložení zůstane skryté Přidávání nové odpovědi. Dokud se nezadá text, tlačítko pro uložení zůstane skryté. Po napsání textu se tlačítko aktivuje Po zadání libovolného textu se tlačítko aktivuje. Umím změnit barvu ankety Popup pro editaci odpovědi. A hotové ankety v reálu, prvně se “blbými” daty se kterýma jsem to zkoušel na localhostu: Funkční ankety A pokud si to chcete vyzkoušet přímo na stránce, můžete na http://www.sunamo.net/geocaching/ . Jinde jsem zatím tuto anketu nedal(i když budou postupně přibývat a navíc chystám blogovací systém(uff), kde se bude moci dát anketa pod každý článek). Někdy až implementuji to API abych na něj mohl přispívat pomocí Windows Live Writeru a udělám ten blog systém schopný, přenesu si tam možná i tento blog na Bloggeru :). ]]>

Leave a Reply

Your email address will not be published. Required fields are marked *