2025

Mar

21

Av Rolf

Små tillämpningar, s.k. widgets, som visas på datorskrivbordet eller mobilen har åter blivit populära. En widget kan t.ex. visa aktuellt väder, innetemperaturen eller senaste dagarnas försäljningsresultat direkt hämtat från din FileMaker-lösning. I det här exemplet visar jag hur du gör en egen widget om du har iPhone eller iPad samt lite kunskaper i Javascript som hämtar data från din FileMaker-databas.

Som exempel tänkte jag visa en widget som ser ut som bilden nedan.

Eller om du drar ut den så att den blir bredare:

Exempel-widgeten visar Antal, varje stapel i diagrammet representerar en dag. Senaste värdet för Antal visas upptill till höger. Värdet i Antal hämtas från en FileMaker-databas där det finns en tabell, "Antal", med en post per dag som innehåller två fält: datum och antal. Värdet i FileMaker-tabellen skapas dagligen av ett schemalagt script och är ett slumpmässigt valt värde. (Det finns poster sedan oktober förra året eftersom jag glömt bort detta inlägg tills nu...)

Om widgeten är liten visas diagram för de 7 senaste dagarna, är den bred visas de 14 senaste dagar.

Det kunde lika gärna varit försäljningssiffrorna senaste veckorna, antal bokningar, eller någon annan information som du vill ha nära till hands.

Du behöver en app, Scriptable, som du laddar ner kostnadsfritt från AppStore. I appen skriver du korta (nåja, ganska korta) Javascript-funktioner som blir en widget med ett fördefinierat ramverk.

Data hämtas från en FileMaker-databas med hjälp av den ganska nya metoden OData. OData är ett alternativ till Data API. Det är enklare såtillvida att det behövs endast 1 anrop för att hämta värden. Med Data API behövs 3 steg: först logga in och få ett s.k. token, hämta värden och sedan logga ut.

Nackdelen med OData är dess lite knixiga syntax. Vill du lära dig mer om OData i FileMaker rekommenderar jag ett blogginlägg från Beezwax. Läs gärna också om OData i Claris hjälp.

Kopplingen till FileMaker-databasen görs med några Javascript-rader. Först definierar jag servern där FileMaker-databasen måste finnas tillgänglig från internet, kontonamn och lösenord för att logga in med rätt behörighet. Tänk på att kontots behörighetsuppsättning måste ha behörigheten "Åtkomst via OData (fmodata)" samt att OData måste vara påslaget på servern.

I variabeln fmConnection.database byter du ut serverns namn och databasens namn mot din egen. "Antal" i url:en betyder att tabellen i min databas där värdena finns heter Antal. Du byter förstås ut mot ditt tabellnamn. En fördel med OData är att du behöver ingen speciell layout, all data hämtas direkt från tabellen.

Nästa steg är att sätta ihop en url. Du anger ett "filter" som i det här fallet är att datum ska vara större än datumet 7 (eller 14) dagar tillbaka samt resultatet ska sorteras fallande i datumordning ($orderby). Till sist anger du vilka fält som resultatet ska innehålla, i det här fallet fälten antal och datum ($select).

Anropsmetoden är GET och i headern som skickas ska förutom OData-värden även finnas inloggningsinformation med konto/lösenord i base64-format.

Med funktionen "loadJSON" skickas url:en med OData-kommandona till FileMaker som returnerar fälten antal och datum i JSON-format.

Koden finns på Github. Kopiera och ändra gärna!

Även om koden finns i appen Scriptable så är det inte praktiskt att skriva den där (om du inte är på stranden och behöver tidsfördriv förstås). Istället använder du en Mac och en delad mapp som heter Scriptable i iCloud Drive. Alla ändringar du gör i Javascriptet med din Mac, uppdateras automatiskt i din widget på din mobil (om du använder samma Apple-konto på båda förstås).

När du gjort din widget klar och provkört i Scriptable-appen lägger du till en widget på hemskärmen. Lägg till en widget av typen Scriptable. Klicka sedan på widgeten och välj vilket Javascript du vill visa.

Widgeten på hemskärmen uppdateras oregelbundet när iOS vill, räkna med att uppdatering och hämtning av nya data från FileMaker görs var 10-15 minut.

Skriv en kommentar

Din epost-adress stannar hos oss.
Webbsajten använder FileMaker som CMS.