SIGforum.com    Main Page  Hop To Forum Categories  The Lounge    Any java / json / api experts in here?
Go
New
Find
Notify
Tools
Reply
  
Any java / json / api experts in here? Login/Join 
Member
posted
Dont ask my why, but I have been using shortcuts in iOS and just got into scriptable, another cool app to customize things.

The problem, I am no good at it.

I am trying to make a widget for my phone that updates based on an api with every county in the USA listed. I had this working with a different link that only had results for TN as a whole, so it was easy enough to sort. But now that I want it to just pull very specific data from the json, I am way out of my league.

Here is the NEW api. https://covid19-us-api.herokuapp.com/county

Here is the widget I was using that was for a different api, but it worked. I want to update it to give me the total, confirmed, and last updated for my county from the new link. But I have no idea where to start, or what needs to go where. I am assuming I can use some kind of .filter. I know there are probably forums on this stuff, but I am so new I dont think I could even understand what they are telling me.

 let covid = new Request('https://api.covidtracking.com/v1/states/tn/current.json')
let positive = parseInt(await covid.loadJSON().then(pos => pos.positive)).toLocaleString('en')
let increases = parseInt(await covid.loadJSON().then(pos => pos.positiveIncrease)).toLocaleString('en')
let d = new Date(await covid.loadJSON().then(update => update.lastUpdateEt))
let ff = new DateFormatter()
ff.dateFormat = 'MM-dd'
let frmt = ff.string(d)
var widget = new ListWidget()
let head = widget.addText('Tennessee ' + frmt)
head.font = Font.systemFont(30)
head.textColor = new Color('f77f00')
widget.addSpacer (20)
let covid19 = widget.addText('COVID-19')
covid19.font = Font.systemFont(18)
covid19.textColor = new Color('#ffffff')
widget.backgroundColor = new Color('#58595B')
let increase = widget.addText(increases + ' New Cases')
increase.font = Font.systemFont(18)
increase.textColor = new Color('#ffffff')
let cases = widget.addText( positive + ' Total Cases')
cases.font = Font.systemFont(18)
cases.textColor = new Color('#ffffff')
Script.setWidget(widget) 
 
Posts: 3118 | Location: Germantown, TN | Registered: June 28, 2005Reply With QuoteReport This Post
Member
posted Hide Post
That looks like Javascript to me.
 
Posts: 2561 | Location: KY | Registered: October 20, 2001Reply With QuoteReport This Post
Serenity now!
Picture of 4x5
posted Hide Post
I'm not familiar with scriptable, but this is how I would do it in javascript using jquery:


$(document).ready(function(){

$.get("https://covid19-us-api.herokuapp.com/county", function(data, status){

// this filters the returned data to get only the records for Shelby County, TN.
// the result of this filter operation is an array, which should only have one element in it
var county = data.message.filter(item => item.state_name == 'Tennessee' && item.county_name == 'Shelby');
// inspect the data in the first (and hopefully only) element in the filtered array
var confirmedCases = county[0].confirmed;
var newCases = county[0].new;
var lastUpdated = county[0].last_update;

alert('confirmed cases: ' + confirmedCases + ' new cases: ' + newCases + ' last updated: ' + lastUpdated);
});
});


The only part of this that is jquery-specific if the call to 'get' the data, and the document.ready function, which is executed when the page loads.



Ladies and gentlemen, take my advice - pull down your pants and slide on the ice.
ʘ ͜ʖ ʘ
 
Posts: 4958 | Location: Highland, UT | Registered: September 14, 2006Reply With QuoteReport This Post
  Powered by Social Strata  
 

SIGforum.com    Main Page  Hop To Forum Categories  The Lounge    Any java / json / api experts in here?

© SIGforum 2025