Ahoj, tento týden si v pravidelné minisoutěži o placku a samolepky
naprogramujeme "zkušenostní kruhy", nevím jak to pojmenovat lépe. Ty se
používají na stránkách pro zobrazení nějaké hodnoty, třeba procent
dovednosti nějakého jazyka atd., takže se vám bude určitě hodit i v
budoucnu. Ukázka, jak by to mohlo vypadat, je přiložena jako obrázek
níže.
Úkolem bude vytvořit co nejlepší takovýto kruh, můžete použít třeba
i různé animace, efekty atd. Hodnocen bude samozřejmě také kód a
přívětivost pro uživatele, tzn. aby si nemusel nastavovat milion složitých
věcí.
Do HTML tedy bude stačit zadat něco ve stylu
<canvas class="kruh" data-procent="86"></canvas>
No jasný, ale ani žádný test ti nedokáže určit, jak opravdu dobře na
tom jsi. Nápad na machra je dle mě dobrý, jen mi to osobně trošku
postrádá smysl (navíc bych se nikdy nepřiznával, že umím jazyk třeba jen
na 20% ).
No jasně, to ale není na uživateli, to je práce pro programátora,
tudíž to musí být v kódu. Uživateli je jedno jestli bude mít canvas
šířku 100px nebo 500px.
První myšlenku jsem moc nepobral a druhou nevyvracím - že postrádá
smysl, jsem měl na mysli ten kruh jako takový. Nápad na machra se mi líbí,
to jsem uvedl.
Musím se k němu přiklonit. Podle mě tyhle ukazatele - umím C# na 80%,
umím HTML na 90% je blbost. Za 1. zákazníka či huntera zaměstnanců
zajímá především jedno - reference A je smutné když si člověk napíše do portfolia umím XYZ5
jazyků na 10-150% a v referencích má jednu aplikaci (já nejsem výjimkou,
ale aspoň nehodnotím sám sebe dle procent). Podle mě to hodnotit takto
nejde. Co je definice umět ? Zvládání syntaxe ? OOP ? Algoritmické
myšlení ? Nabiflovaný kompletně manuál ?
Za 2. životopis a celková prezentace sebe samotného. Netvrdím že
stránku tyhle ukazatele neoživí, ale věty na porfóliech typu " Umím ASM,
Umím windows phone, umím android" jsou nesmysl. Lze to napsat jinak a lépe,
tj tak že řekneš jsem v tom dobrý ale nezní to tak kýčovitě. Navíc
každý ty procenta může chápat úplně jinak.
To jenom mírný offtopic, více to rozvádět nebudeme
Jasně, ale když se koukneš, tak to používá 70% portfolií. Podle mě to
není špatné, když se ohodnotíš, ale bohužel většina lidí si dává
třeba 90% C# a je jim 14let ... Pravda, že to hodně lidí přehání.
Ale je to off-topic, kdyžtak už jen přímo k soutěži prosím. Toto nemá smysl řešit.
Nemyslím si , že je uživateli jedno, jestli má canvas 100px nebo 500px,
aby mu to sedělo do layoutů stránky, bude si to chtít nastavit ne?
Co se týče toho hodnocení se, myslím, že člověk nemůže vědět, kolik z
celku toho umí, protože to, ostatní prostě neumí. A čím víc toho umí,
tím víc přichází a narazí na věci, které neumí. Tohle by řešili
jedině nějaké certifikované testy, ale pokud si to člověk jen tak "tipne"
a nebo si to tam napíše podle nějakého z "miliónů kvizů na internetu"
valný význam to podle mne nemá.
Obrázky, obyčejnými obrázky. Předpokládám, že se to bude načítat z
DB, takže podle záznamu procent načtu obrázek. Nevím jak vy tady na fóru,
ale já mám rád i uživatele s IE a i ty s vyplým javascriptem. Nepotřebuji
přece generovat statický obrázek po každém příchodu na stránku, stačí
jednou ne?
Animaci klidně udělám z těch obrázků. Nebudu je generovat na serveru,
prostě jich budu mít 100 a půjde to všem. Když ale někdo bude mít
vypnutý javascript nebo bude bez Canvasu, tak přijde jen o tu animaci a ne o
celé kruhy. Je mi jedno jaký je rok, já koukám na podíl prohlížečů. Je
pravda, proč to neudělat rovnou ve WebGL? To je taky IN a umí ho alespoň 18%
prohlížečů.
Hover udělám v CSS a místo onclicku je přesměruji na stránku kam chci.
Ještě že je v HTML tag A.
Ale podívej se na 100 obrázků průhledných png, jednak je to velké, než
to sem odešleš a než si to všichni stáhnou ... . Co když to nebudeš
chtít jen 100×100 pixelů? Ten tvůj script je úžasně jednoduchý, ale jak
to toho kruhu cokoliv dopíšeš? IE samozřejmě podporuji i já, IE 11
podporuje kde co i WebGL a není problém, pokud používáš zastaralé IE, tak
je mi tě líto.
Napozicuji to v CSS. Proto jsem to uzavřel do divu, kterému bych dal
position: relative. No pokusil jsem se jen říct co jsem myslel.
Velikost by mohl být problém, to uznávám. Průměr jednoho obrázku v
rozlišení 1000x1000 pixelů by se pohyboval okolo 300kB.
Já nepoužívám staré IE, ale spoustu lidí ano. IE 8 mají třeba Windows
7, které mám tedy také. Je pravda, že by to šlo dohnat pomocí excanvas.js
nebo VML. Jde spíš o ty uživatelé, kteří z javascriptu mají fobii a
tudíž ho mají permanentně vypnutý. Kvůli tomu že mají strach je přeci
nezapudím a nepřijdu tak o spoustu uživatelů. I kdyby byly jen 2, tak je to
důležité.
Ano, pro uživatelé s novými prohlížeči můžu klidně udělat nějakou
fíčurinu, ale na úkor toho, že vyškrtnu staré prohlížeče.
Filipe, moc pěkný
S canvasem nejsem moc kamarád, takže mi to jde trochu pomalu, ale naučit se
to musím a spřátelit s ním se taky musím
Zatím jsem došel k základu. http://jsfiddle.net/…204/sL5cQ/3/
Ahoj, tak zde přidávám svůj výtvor, originalitu do designu jsem sice
nevnukl, ale za to jsem se hodně trhl od zkušenostních krhů. Moje kruhy jsou
celkem stejné jako ty vaše, ale to je jenom zdání. Umožňují nastavit,
startovní úhel, barvu proužku, pozadí, písmo (čili můžete použít i
obrázkové písma), zdali mají být kruhy animované a samozřejmě taky
popisek. Ten jsem navrhl tak, že si ho definujete celý vy, stanovíte si
přesný formát. \n značí nový řádek a %%% bude nahrazeno procenty.
Tyto kruhy mohou být realtime updatované, v JS prostě změníte attribut
data-procenta a kruhy změní procenta.
V příkladech máte několik ukázek, na těch jdou nejlépe vidět
features, ta poslední (realitme update) bohužel nefunguje v Google Chrome (to
je paradox, že?), ale Mozzila a IE ji zvládají perfektně.
Použití se tedy meze nekladou, tím že to zvládá IE, je můžete
používat v Modern UI aplikacích i Windows Phone aplikacích.
Tak jsem o něco pokročil a zatím to vypadá takto.
Mám rád čistý design a vyplněný kruh se mi nelíbí, zvlášť se to asi
ani nehodí do "flat designu".
Není potřeba jQuery (ikdyž je tam nalinkované).
Stačí tedy jen vložit skript a canvas.
Takto může vypadat příklad:
Taky tam je napsáno, že se to má odeslat do vlákna nebo Sdracovi, ale
kdybych to poslal sdracovi tak je to taky špatně, vzhledem k tomu že sdraco
do tohoto machra nejspíše nebude ani zasahovat...
A .rar tu dokáže rozbalit snad každej když všude na netu se používá pro
archivy .rar a ne .zip, krom toho v pravidlech není přímo .rar zakázanej,
takže archiv jako archiv.
No, ale to je šumák, minule jsem to vyhrál taky s .rarem a nikdo si
nestěžoval.
Tak snad jsem aspoň trošku do toho vňuknul nový design, ikdyž tvar kruhu
stále zůstává. Je potřeba JQuery, odkaz na script soubor a element canvas s
parametrem data-procent. Funkce je objektová a canvasů můžete mít na
stránce neomezeně.
Co to umí?
Aspoň nějaká blbuvzdornost - při zadávání procent mimo rozmezí 0-100,
při zadávání neplatné šířky (neboli radiusu, jak to tam nazývám), či
při zadávání neplatné rychlosti animace a šířky animovaného proužku.
Vlastní stylyzování v podobě zvolení vlastních barev a šířky. Vlastní
počáteční úhel. Vlastní nadpis, což je snad i samozřejmostí. Pokud je
nějaká hodnota nezadaná, samo si to vezme předdefinovanou hodnotu.
Chyby
Pokud máte parametr data-poz="" (parametr pro nastavení barvy pozadí)
prázdný (jak je ukázáno) vezme si stejnou hodnotu jako barva písma nadpisu,
což by nemělo, ale ze zatím nezjištěných důvodů tomu tak je.
Pokud ovšem celý parametr data-poz chybí, již si to stejnou barvu nevezme a
pozadí se nastaví na automaticky předdefinovanou bílou barvu.
Ahoj, při náročném hodnocení jsem dospěl k následujícímu
pořadí:
1. 1Pupik1989 (90) - Hezký OOP návrh, může se změnit
vykreslování na line. Máš tam ale i pár chybek, jako například při
zadání více procent než 100. 2. Misaz (85) - Lepší by bylo OOP přes prototype. Jinak
docela dobré. 3. Funebrak (77) - Určitě bych nenastavoval text pomocí
elementu. Chtělo by to dát do OOP. 3. FilipPyrek (77) - Chybka při zadání více než 100%.
Někdy se mi to zdálo trochu zmatené. 4. DoctorMuscha (70) - Také chybka při více než 100%.
Používáš moc ifů, které by se dali zapsat jinak a výhodněji. 5. zdenda204 (65) - Kód máš moc nahňácaný v pár
funkcích. Chtělo by to dát do OOP. 5. vojtamaniak (65) - Kód máš moc nahňácaný v pár
funkcích. Chtělo by to dát do OOP.
Dost z vás mělo použito OOP, což znamená znovupoužitelnost. Rozdělujte
tedy metody na to co opravdu dělají, tedy aby metoda PAINT nepočítala
různé rozměry, to má dělat jiná metoda... Poté byste museli měnit celou
metodu PAINT, jelikož vám nebude fungovat pro jiné hodnoty.
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.