2016. október 14., péntek

Ki mikor dolgozik? Tudja a Numbers!

A legjobb feladatokat az ügyfeleinktől kapjuk. A múlt héten időnyilvántartó megoldást próbáltunk Numbersben összerakni. Elsőre természetesen csak egy ronda és fapados változat születhetett, de most volt időm kicsit összerakni rendesen. Meg is osztom.

Ez a végeredmény, persze ezen is lehetne még mit csiszolni, de. A felső táblázatban megadható, hogy ki mikor érkezett és távozott. A táblázat végén összegzés, ki mennyi órát és percet volt bent – heti bontás volt a feladat. Pontosabban nem is nyomkövetés, hanem tervezés. És a tervezést segíti a napi időbeosztást mutató grafikonsor alul.
Mutatom, hogy készült ez a Numbers dokumentum.

Percek összeadása, hiba jelzés
Ugyan a Numbers képes időintervallumokat kezelni - két időpont különbségét kiszámolni és megjeleníteni -, de ha kihasználjuk ezt a képességét, csak rettenetes verítékkel fogunk elfoglaltságot jelző színes csíkokat rajzolni. A veríték elkerülése érdekében választottam ketté az óra és a perc bevitelét is. Az értelmes fejlécezés segíti a felhasználót, sőt, idővel magunkat is, ha egy több éve használt táblázat kerül elénk. Az előrelátó tervezés - valójában harmadik újratervezés - után roppant összetett függvényeket kellett használni.

Hogy számolom ki, hogy hány percet volt bent Anita hétfőn? Átváltom az órákat percre, megszorzom hatvannal, hozzáadom a perceket, és a távozási percből kivonom az érkezési percet. Ezt a képletet az előző ábán balra láthatod, minden nap utolsó oszlopába kerül így az aznapi percek száma. Csak épp láthatatlanul. Miért? Hogy?
Azért "rejtettem el", mert vizuálisan zavaró volna és a felhasználónak nincs rá szüksége. Hogy rejtettem el? Feltételes formázással.
Az elrejtést megejthettem volna úgyis, hogy az adott cellákban a szöveg színét fehérre veszem, amilyen a cella háttere. Ezt is megteszem mindjárt, ám előbb "kezelni kell" azt az adatbeviteli balesetet, amikor valaki előbb megy haza, mint bejönne. (A táblázatban 7:00 és 21:00 között lehet dolgozni.)
Az egyik könnyen használható, de nagyon látványos és hatékony megoldás adott cellák automatikus, a bennük lévő számértéktől függő átszínezésére a feltételes formázás. Ha valaki előbb menne haza, mint bejönne, akkor a bent töltött percek száma negatív lesz. Ezért azt az utasítást adtam a Numbersnek, hogy ha a cellába írt szám negatív, akkor legyen a cella háttere és a cellába írt szám ugyanolyan vörös.
Ha csak ezt az utasítást adom, akkor a pozitív, helyesen megadott, szám fehér alapon fekete maradt volna. Így még egy feltételt szabtam: minden más esetben legyen fehér alapon fehér szöveg.
Megtehetnénk, hogy a nyolc óránál többet bent levőknél ez a cella más színű, mondjuk zöld legyen. Ehhez kell még egy szabály, mely szerint a cella értéke 480-nál több, akkor a háttér legyen zöld. És így tovább.
A második ábrán látható, egyszerű Sum függvénnyel adtam össze az öt nap perc adatait. Majd ebből számoltam ki az órákat - osztva hatvannal és csak az egész számít - és a perceket - a maradék. Az első képen a táblázatnak ez az oszlopa nem is látható, mert a felhasználót nem érdekli, elrejtettem, ne zavarja.

Elegancia kontra pontosság és a Numbers
Ebbe a táblázatba bármilyen számadat bevihető. Talán szebb, elegánsabb, ha picit kontrolláljuk az adatbevitelt, ezzel persze a lehetőségeket csökkentjük. Az október 16-i oszlopba csak negyedórás bontásban lehet időt felvinni. Ezt segíti a számformátumok közül választható Stepper vagy Léptetés.
Beállíthatom, hogy a cella mettől (0) meddig (45) vehet fel értéket és milyen lépésközzel (15) halad. Amikor a felhasználó a cellára kattint, más adatot nem adhat meg. Az elegancia jegyében a beérkezési órákat is korlátoztam 8-15 közé egyesével léptetve az óra mezőt, a távozásnál pedig 12-21-t adtam meg.
Egy rondaságot ekkor nem tudok megoldani, a 0 perc (egész óra) esetén a perc cellájában egyetlen nulla kerül e helyett: 9:00, két nulla kellene.
Ha nem brillírozok a Léptetéssel, hanem engedem, hogy bármilyen számot (valójában: bármit) beírjon a felhasználó, akkor viszont a mutatott módon létre tudok hozni olyan számformátumot, amely az egyjegyű számok esetén is mutatja a vezető nullát.
Sajnos léptetésnél és más spéci beviteli módoknál nem használhatok saját számformátumot. Ez azért túlélhető.



Hogy lesz ebből grafikon?
Szükségem van egy segédtáblázatra, bár ezt a számítást is betehettem volna az első táblázat végébe elrejtve. Minden embernél két napi adat kell percben, mikor jött be és mikor ment el. Illetve a távozás időpontjából levonom a beérkezés időpontját. Miért? Mert a "2D halmozott sáv" nevű grafikont így tudom felhasználni.
Nem is egyszer fogom használni, hanem ötször, ahány napot ábrázolnom kell. A sor eleji neveket egy külön táblázat tárolja, ez egy-az-egyben hivatkozik az időpontbevivőre. Így elég egy helyen átírni a nevet, neveket. A vízszintes skála feliratait külön szövegdobozok tárolják, de erről később.
A halmozott sáv olyan grafikon, ahol az első adat csíkja után rajzolja a Numbers a második adatét, így halmozza fel őket. Nálam az első csík azt mutatná, hogy éjfélhez képest mikor jött be - de erre nincs szükségem.
Az adatok megadása után megjelenő grafikon vízszintes skáláját átméreteztem, annak minimál értéke a hét órának (7:00) megfelelő perc szám (420), a maximum értéke pedig 21 óra (1260). Azért adom meg én a két értéket és nem hagyom a Numbersre, mert így a skálázás változatlan marad. És a napok is egységesek. Ellenkező esetben, ha egy nap mindenki csak 11-12:00 között volna bent, akkor a skálázás is 11-től 12-ig (660-tól 720-ig) tartana.
Az első sávot kijelölöm, ez mutatja ugye a beérkezési időt és nem adok neki sem színt, sem keretet, árnyékot, semmit.
És akkor visszaugorva a grafikonok vízszintes skálájára! A Numberst nem tudom rávenni, hogy az általam kívánt órákat mutassa, ezért inkább elrejtettem a vízszintes tengely feliratait (ahogy a függőlegesét is). A látható órákat egyesével egy-egy szövegdobozba helyeztem el, és játszottam helyére az első grafikon alatt. Amikor kész voltam, összezártam őket egyetlen elemmé, és így másoltam tovább.
A grafikonokat sem szenvedtem végig ötször, csupán az elsőt - azt persze többször is, mire ilyen lett. Amikor az első meg volt, akkor megdupláztam, majd fogd-és-vidd módosítottam, melyik cella tartományt mutassa.

Hogyan használd?
Ha igaz, innen le tudod tölteni - a regisztrációs ablak alján regisztráció nélkül le lehet tölteni a fájlt. Érdemes egy másolatot készíteni róla, vagy Command+I info ablakban sablonná minősíteni. Az időpontok nagy részét véletlenszám generátor állítja elő, így, amíg nem írod át, azok minden enter leütésénél meg fognak váloztni - no para.

Vagy/És gyere el Numbers képzésünkre!

Nincsenek megjegyzések:

Megjegyzés küldése