From 7e379ba57617f18dda5f147a2b188a06929f9c4a Mon Sep 17 00:00:00 2001 From: ronreg-ribdev <56719257+ronreg-ribdev@users.noreply.github.com> Date: Sun, 31 May 2020 04:28:47 -0700 Subject: [PATCH] Wired up station dropdowns --- src/js/components/root.js | 42 +++++++++++++++++++++++++------------- src/js/reducers/config.js | 11 ---------- src/js/reducers/initial.js | 11 ---------- src/js/reducers/update.js | 11 ++++------ src/js/store.js | 16 ++++----------- src/js/subscription.js | 7 +++++++ urbit/app/bartinfo.hoon | 6 ++++-- 7 files changed, 47 insertions(+), 57 deletions(-) delete mode 100644 src/js/reducers/config.js delete mode 100644 src/js/reducers/initial.js diff --git a/src/js/components/root.js b/src/js/components/root.js index cf40f48..16c928a 100644 --- a/src/js/components/root.js +++ b/src/js/components/root.js @@ -7,16 +7,40 @@ import { HeaderBar } from "./lib/header-bar.js" export class Root extends Component { constructor(props) { super(props); - - this.state = { fromValue: "ashby", toValue: "24th" }; + this.state = store.state; + store.setStateHandler((newState) => { + this.setState(newState); + }); } action() { console.log("Clickin'"); } - render() { + renderStationOptions() { + const stations = this.state.stations || []; + return _.map(stations, (station) => { + const abbr = station.abbr; + const name = station.name; + return ; + }); + } + renderStationForm() { + return (
+ From: + +
+ To: + +
); + } + + render() { return (
@@ -35,19 +59,9 @@ export class Root extends Component {
Search scheduled trains: + { this.renderStationForm() }
From: - -
- To: -
diff --git a/src/js/reducers/config.js b/src/js/reducers/config.js deleted file mode 100644 index 04bb524..0000000 --- a/src/js/reducers/config.js +++ /dev/null @@ -1,11 +0,0 @@ -import _ from 'lodash'; - - -export class ConfigReducer { - reduce(json, state) { - let data = _.get(json, 'bartinfo', false); - if (data) { - state.inbox = data.inbox; - } - } -} diff --git a/src/js/reducers/initial.js b/src/js/reducers/initial.js deleted file mode 100644 index 2ba151c..0000000 --- a/src/js/reducers/initial.js +++ /dev/null @@ -1,11 +0,0 @@ -import _ from 'lodash'; - - -export class InitialReducer { - reduce(json, state) { - let data = _.get(json, 'initial', false); - if (data) { - state.inbox = data.inbox; - } - } -} diff --git a/src/js/reducers/update.js b/src/js/reducers/update.js index a167c59..a5d62e7 100644 --- a/src/js/reducers/update.js +++ b/src/js/reducers/update.js @@ -5,13 +5,10 @@ export class UpdateReducer { reduce(json, state) { let data = _.get(json, 'update', false); if (data) { - this.reduceInbox(_.get(data, 'inbox', false), state); - } - } - - reduceInbox(inbox, state) { - if (inbox) { - state.inbox = inbox; + const stations = _.get(data, 'stations', false); + if (stations) { + state.stations = stations; + } } } } diff --git a/src/js/store.js b/src/js/store.js index 7b8b8de..71e8b0b 100644 --- a/src/js/store.js +++ b/src/js/store.js @@ -1,33 +1,25 @@ -import { InitialReducer } from '/reducers/initial'; -import { ConfigReducer } from '/reducers/config'; import { UpdateReducer } from '/reducers/update'; class Store { constructor() { - this.state = { - inbox: {} - }; + this.state = {} - this.initialReducer = new InitialReducer(); - this.configReducer = new ConfigReducer(); this.updateReducer = new UpdateReducer(); this.setState = () => { }; } setStateHandler(setState) { + console.log("Calling setStateHandler"); this.setState = setState; } handleEvent(data) { + console.log("Handling event"); + console.log(data); let json = data.data; - console.log("Storing event"); - console.log(json); - this.initialReducer.reduce(json, this.state); - this.configReducer.reduce(json, this.state); this.updateReducer.reduce(json, this.state); - this.setState(this.state); } } diff --git a/src/js/subscription.js b/src/js/subscription.js index 646c6ef..863c5db 100644 --- a/src/js/subscription.js +++ b/src/js/subscription.js @@ -14,9 +14,16 @@ export class Subscription { } initializebartinfo() { + /* api.bind('/primary', 'PUT', api.authTokens.ship, 'bartinfo', this.handleEvent.bind(this), this.handleError.bind(this)); + */ + + api.bind('/bartstations', 'PUT', api.authTokens.ship, 'bartinfo', + this.handleEvent.bind(this), + this.handleError.bind(this)); + } handleEvent(diff) { diff --git a/urbit/app/bartinfo.hoon b/urbit/app/bartinfo.hoon index 7f73534..4dac133 100644 --- a/urbit/app/bartinfo.hoon +++ b/urbit/app/bartinfo.hoon @@ -73,7 +73,7 @@ |= =path ^- (quip card _this) ~& "on-watch path: {}" - ?: ?=([%primary *] path) + ?: ?=([%bartstations *] path) =/ bart-station-request =/ out *outbound-config:iris =/ req bart-api-request-stations:cc @@ -96,7 +96,9 @@ ?+ wire ~ [%bartstationrequest *] =/ value=json (parse-request-stations-response:cc client-response.sign-arvo) - [%give %fact ~[/primary] %json !>(value)]~ + ?> ?=(%o -.value) + =/ update=json (pairs:enjs:format [update+o+p.value ~]) + [%give %fact ~[/bartstations] %json !>(update)]~ == [http-moves this] ?. ?=(%bound +<.sign-arvo)