Philip Davis and Rob Bohnke
Small details make a big difference, and visual effects can enhance perception and functionality. Experiment to find the right effect.
Effects can:
- Show feature is working
- Add personality
- Focus attention
import SwiftUI | |
import UniformTypeIdentifiers | |
struct MeshGradientPoint: Identifiable { | |
let id = UUID() | |
var point: SIMD2<Float> | |
var color: Color | |
} | |
struct ContentView: View { |
// Variables used by Scriptable. | |
// These must be at the very top of the file. Do not edit. | |
// icon-color: deep-blue; icon-glyph: subway; | |
let GtfsRealtimeBindings = importModule("gtfs-realtime.js") // add this file to Scriptable from https://github.com/MobilityData/gtfs-realtime-bindings/blob/master/nodejs/gtfs-realtime.js | |
// also add https://github.com/protobufjs/protobuf.js/blob/master/dist/protobuf.min.js to Scriptable | |
const API_KEY = "paste_your_api_key_here" // get a free MTA API key at https://api.mta.info/#/landing | |
const ROOT = "entity" | |
const ALERT = "alert" |
// Variables used by Scriptable. | |
// These must be at the very top of the file. Do not edit. | |
// icon-color: blue; icon-glyph: bicycle; | |
/*** WIDGET SETUP *** | |
* Edit the Scriptable widget, select this CitiBike script, and fill the Parameter field with your station's id | |
* | |
* HOW TO FIND A STATION'S ID | |
* Search for a CitiBike station by street name at https://gbfs.citibikenyc.com/gbfs/en/station_information.json | |
* Find the station_id field associated with the name |
// Variables used by Scriptable. | |
// These must be at the very top of the file. Do not edit. | |
// icon-color: deep-green; icon-glyph: tree; | |
/*** SETUP *** | |
* Register for a free Accuweather API Key at https://developer.accuweather.com | |
* Enter your API key in the field below | |
* | |
* Use the Locations API to determine the location key of your city at http://dataservice.accuweather.com/locations/v1/search | |
* Paste the location key in the appropriate variable below |
I hereby claim:
To claim this, I am signing this object: