Skip to content

Instantly share code, notes, and snippets.

@jeanpaulsio
Created August 26, 2017 22:33
Show Gist options
  • Save jeanpaulsio/e534814f568a0c9a2b743fce0f493077 to your computer and use it in GitHub Desktop.
Save jeanpaulsio/e534814f568a0c9a2b743fce0f493077 to your computer and use it in GitHub Desktop.
Time Data Structure
/*
0 - Sunday
1 - Monday
2 - Tuesday
3 - Wednesday
4 - Thursday
5 - Friday
6 - Saturday
*/
data =
[
{
id: 2
date_as_string: "Next Tuesday"
times: [
{
id: 1
time_string: "8:00am"
},
{
id: 2
time_string: "8:30am"
},
]
},
{
id: 3
date_as_string: "Next Wednesday"
times: [
{
id: 1
time_string: "8:00am"
},
{
id: 2
time_string: "8:30am"
},
]
},
]
@jeanpaulsio
Copy link
Author

Man, working through displaying schedule is actually really tough

  1. Line 16 is the day of the week as an integer - I just need an easy way to be able to display the days of the week in order
  2. I think this goes back to number 1. With Whiz there wasnt a concept of an id for the top level day. So in pseudo code, displaying the days with their respective times looks like this
newData = reduce data to be sorted into an object with key value pairs where key is day of week

newData.monday.each
  => sort times
  => display times

newData.tuesday.each
  => sort times
  => display times

newData.wednesday.each
  => etc.

Hopefully that makes sense

  1. I think that works. As I work through this, it's really looking like I actually need a unique ID and a week_day id. In order for me to display a time as being "selected" i need to be able to reference it's unique id

so in an ideal world, the data will come out looking like this:

data  = 
  [
    {
      unique_id: 123,
      week_day: 2,
      date_as_string: "Next Tuesday",
      times: [
        { unique_id: 123, id: 1, time_string: "8:00am" },
        { unique_id: 456, id: 2, time_string: "8:30am" },
        { unique_id: 789, id: 3, time_string: "9:00am" },
        { unique_id: 111, id: 4, time_string: "9:30am" },
        { unique_id: 222, id: 5, time_string: "10:00am" },
        { unique_id: 333, id: 6, time_string: "10:30am" },
      ]
    },
    {
      unique_id: 456,
      week_day: 3,
      date_as_string: "Next Wednesday",
      times: [
        { unique_id: 444, id: 1, time_string: "8:00am" },
        { unique_id: 555, id: 2, time_string: "8:30am" },
      ]
    },
  ]

thoughts??

@jeanpaulsio
Copy link
Author

      times: [
        { unique_id: 444, id: 1, time_string: "8:00am" },
        { unique_id: 555, id: 2, time_string: "8:30am" },
      ]

to be clear, the "id" is to indicate order. so "9:00am" would have an id of 3 for example

@jeanpaulsio
Copy link
Author

These things don't necessarily have to be called "id" - and normally i'm not big on assigning numbered values to things that correspond to strings - but this is strictly for displaying things in order

@jeanpaulsio
Copy link
Author

To put things in a little more perspective - i don't expect the data to come in already ordered:

      times: [
        { unique_id: 123, id: 1, time_string: "8:00am" },
        { unique_id: 456, id: 2, time_string: "8:30am" },
        { unique_id: 789, id: 3, time_string: "9:00am" },
        { unique_id: 111, id: 4, time_string: "9:30am" },
        { unique_id: 222, id: 5, time_string: "10:00am" },
        { unique_id: 333, id: 6, time_string: "10:30am" },
      ]

I imagine it's probably more like this:

      times: [
        { unique_id: 333, id: 6, time_string: "10:30am" },
        { unique_id: 456, id: 2, time_string: "8:30am" },
        { unique_id: 111, id: 4, time_string: "9:30am" },
        { unique_id: 789, id: 3, time_string: "9:00am" },
        { unique_id: 222, id: 5, time_string: "10:00am" }
        { unique_id: 123, id: 1, time_string: "8:00am" },
      ]

I still need a unique id for each of these values but I'm ok with ditching the "id" concept if we can guarantee that these times are spit out of the API in order

@Johnsalzarulo
Copy link

Well, I matched yours exactly AND made one that I think is better...

https://github.com/Johnsalzarulo/uvohealth#available-times-endpoint

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment