-
Notifications
You must be signed in to change notification settings - Fork 0
Haku Ohjeet
Painettua leiriläisen kirjaa ei tule, vaan sen korvaavat
- Roihu App
- Nettisivut
- Lastu-turistikartta (A4 taittuu 1/8-osaan)
- Leiri-lpk:n kansio
Sisältönä on erilaisia ohjeita uimisesta, ensiavusta, pelisäännöistä, yms.
Kaikki data näytetään, vaikka käyttäjä ei ole kirjautunut.
Kukin ohjeartikkeli kuuluu tasan yhteen kategoriaan, jolloin muodostuvat seuraavan kuvan kolme tasoa:
- Taso 1: Lista kategorioista
- Taso 2: Lista artikkeleista
- Taso 3: Yksittäinen artikkeli
Kussakin artikkelissa on otsikko, leipäteksti ja viimeisen muokkauksen ajankohta. Tekstin tuottaja voi muotoilla leipätekstiä Markdownilla. 18.5. on vielä hieman auki, muutetaanko Markdown jo backendissä html-muotoon.
OPTIO: Artikkeliin saattaa tulla kuvituskuva, joka kuva tai luultavammin pelkkä linkki tulisi JSONissa muun datan mukana.
Edeltävään kuvaan seuraavat korjaukset:
- Kakkostason yläpalkkiin kategoriaotsikko, esim. "Vierailupäivä"
- Kakkostason lista eli artikkelien otsikot ei kapiteelilla, eli näytetään suoraan sellaisena kuin tulee backendistä
- Kolmostason Back-nuolen viereen paluukategoria, esim. "Vierailupäivä"
- Kolmostasolla otsikko niin, ettei vieri piiloon pidemmissä artikkeleissa
- OPTIO: Kolmostason yläpalkkiin nuoli ylös ja alas, joilla pääsee edeltävään ja seuraavaan artkkeliin (haun tapauksessa edeltävään ja seuraavaan hakutuloksissa); kategorian yli ei tarvitse päästä, vaan ekassa/vikassa artikkelissa vastaava nuoli harmaaksi
Navigointi ja tekstin liikuttelu tapahtuu ilmeisellä tavalla.
Jos käyttäjä napauttaa yläpalkin Refresh-nappia, haetaan viime kerran jälkeen muuttuneet tiedot backendistä ja tallennetaan ne paikalliseen storageen. Päivitetään myös oikean yläkulman tilanne-ajankohta.
Jos käyttäjä siirtyy toiseen osa-alueeseen (alereunan viisi tabia tai ylhäällä olevat Tapahtumat tai Paikat) ja palaa tänne myöhemmin takaisin, tulisi palata takaisin samaan näkymään, missä oltiin viimeksi. Ei tarvitse kuitenkaan tallentaa nykysijaintia siltä varalta, että sovellus kokonaan suljetaan.
Jos hakukenttään syötetään merkki, niin alla olevaan listaan vaihtuu kategorioiden tilalle lista merkkiin täsmäävistä artikkeleista. Tämä vastaavasti aina hakutekstin muuttuessa. Listan artikkelia napauttaessa aukeaa kyseinen artikkeli edeltävän kuvan kaltaisesti. Sieltä Back-napilla palatessa palataan takaisin haun äskeiseen tilanteeseen.
OPTIO: Hakutulosten artikkelilistassa otsikon alla kenties kaksi ekaa riviä leipätekstistä. Tämä olisi tosin arvokkaampi, jos näkyisivät ne rivit, joissa haettava teksti esiintyy.
Jos hakukentän tyhjentää, palaa kategorialista takaisin.
OPTIO: Hakukenttään nappi, jolla sen voi tyhjentää kerralla.
Toiminnossa on seuraavat sellaiset tekstit, jotka eivät tule backendistä:
- "Hae" taso 1:n hakukentässä kun se on tyhjä
- "tilanne" kunkin tason oikeassa yläkulmassa
- "viimeksi muokattu" artikkelitekstin perässä
Tämän appin asetuksissa olevan kielivalinnan mukaan em. tekstien tilalla voi olla ruotsia tai englantia.
Samat tekstit toistuvat useissa osa-alueissa, eli tekstien kannattaa olla appissa kerran globaalisti.
Haku/Ohjeet -toiminnon tiedot tulevat appin paikallisesta storagesta. Jos siellä ei ole mitään, appi lukee kaikki ohjeet backendistä ja tallentaa ne paikalliseen storageen. Tämän jälkeen ne sitten tulevat paikallisesta storagesta Haku/Ohjeet -toimintoon.
Myös tilanteessa, että käyttäjä muuttaa kielivalintaa, appi lukee kaikki tiedot uudestaan.
Tiedot tulevat backendistä täysin valmiina ja kaikissa tapauksissa ensin paikalliseen storageen, josta ruutuun.
Backend palauttaa tekstit suomeksi, ruotsiksi tai englanniksi appin kielivalinnan mukaan. Jos kielivalinta on joku muu, backend palauttaa tekstit englanniksi.
Alkulatauksen jälkeen käyttäjä voi käynnistää backend-tietojen luvun Refresh-napilla, jolloin ne menevät taas ensin paikalliseen storageen ja sieltä näyttöön. Tämä saatetaan aluksi toteuttaa niin, että luetaan kaikki tiedot, mutta alla on kuvattu tavoite, jossa luetaan vain muuttuneet tiedot.
Lisäksi käyttäjän saapuessa tähän osa-alueeseen appi tarkastaa automaattisesti, onko JSON-datan kertoma next_check-aika jo mennyt ohi. Jos on, niin appi lukee tiedot kuten edellä Refresh-nappia napauttaessa. Kyseistä aikaa säädellään backendissä. Kehitysvaiheessa se on 1 h ja tuotantoon siirryttäessä 25 h. Leirin aikana aikaa voidaan säätää kuorman ja tarpeen mukaan.
Tätä vastaavaa tukea ei ole vielä toteutettu backendissä.
Olemassa olevien artikkelien sisältö saattaa muuttua ja artikkeleita voi tulla uusia ja poistua aiemmin listalla olleita. Backendistä haetaan aina (next-check ja käyttäjän Refresh) vain ne tiedot, jotka ovat muuttuneet viime hakemisen jälkeen.
Uusimpien hakeminen tapahtuu niin, että client lisää urliin edellisessä onnistuneessa haussa saamansa timestamp-ajankohdan. Backend sitten palauttaa vain ne tietueet, jotka ovat syntyneet tai muuttuneet myöhemmin kuin mainittu timestamp miinus 5 minuuttia. Tämä miinustaminen tehdään, jotta varmasti ei jää mitään "väliinputoajia". Backend palauttaa myös tietueet, jotka on poistettu mainitun rajahetken jälkeen. Tällöin datassa on vain tietueen id ja sort_no: -1
Kehitysvaiheessa endpoint on osoitteessa:
http://roihuapp-demo.herokuapp.com/api/Instructioncategories/Translations?lang=FI
Kielet SV ja EN toimivat myös, mutta kaikki muut kielipyynnöt palauttavat englantia.
Tästä eteenpäin on alkuperäisen JSONin kuvaus, mutta saattaa olla osittain vanhentunut. Niinpä kannattaa käyttää vain yllä olevaa linkkiä.
Alla oleva JSON on tehty siltä pohjalta, että artikkelit sijaitsevat kategorioiden alla, mikä tapa on luultavasti appille helpoin. Vaihtoehtoinen tapa on, että kategoriat ovat yksi lista ja artikkelit erikseen toinen lista.
/*=============================================================
Roihu 2016 - Finnjamboree, July 2016
Roihu App - Mobile Application
-------------------------------------------------------------
SPECIFICATION OF THE BACKEND REST API
Sakari Kouti
Created Feb 15, 2016
Last modified Feb 15, 2016
=============================================================*/
/*=============================================================
READ CAMP INFO
=============================================================*/
/*-------------------------------------------------------------
Request (Read camp info)
URI....: /???/???
Method.: GET
Headers: Authorization: Bearer ABC123 (OAUTH 2 token)
What about an MD5 hash?
Accept-Language: FI, SV or EN (or some other)
Params.: xxx
-------------------------------------------------------------*/
/*-------------------------------------------------------------
Response (Read camp info)
-------------------------------------------------------------*/
{
"timestamp": "2016-02-10T20:10:05+0300", /* time and date when data was retrieved */
"next_check": "2016-02-11T20:10:05+0300", /* time and date when to check for new changes */
"language": "FI" /* or SV or EN, language of the retrieved texts */
"categories": [
{
"last_modified": "2016-01-14T12:45:06Z", /* when any of the fields was last modified */
"id": "907824855971753", /* or maybe a GUID? */
"sort_no": "10", /* let's use 10, 20, 30, etc., to give room for changes */
"title": "Pelisäännöt",
"articles: [
{
"last_modified": "2016-01-14T12:45:06Z", /* when the article was last modified */
"id": "907336855971753", /* or maybe a GUID? */
"sort_no": "10", /* determines article ordering */
"title": "Leirihuivin käyttö",
"bodytext": "abc",
"image": "AkjX234jS" /* Base64 encoding? */
},
{
"last_modified": "2016-01-14T12:45:06Z", /* when the article was last modified */
"id": "907336666971753", /* or maybe a GUID? */
"sort_no": "20", /* determines group ordering */
"title": "Uiminen",
"bodytext": "abc",
"image": "AkjX234jS" /* Base64 encoding? */
}
],
}
]
}