Skip to content

Commit

Permalink
Tidying
Browse files Browse the repository at this point in the history
  • Loading branch information
RawToast committed Mar 30, 2018
1 parent e62d441 commit 70444d1
Show file tree
Hide file tree
Showing 10 changed files with 90 additions and 96 deletions.
4 changes: 1 addition & 3 deletions dokusho/src/app/DateSelector.re
Original file line number Diff line number Diff line change
@@ -1,10 +1,8 @@
let component = ReasonReact.reducerComponent("DateSelector");

let getDate = Js.Date.make;

let make = (~onChangeSelect, ~enabledDates, _children) => {
...component,
initialState: () => getDate(),
initialState: () => Js.Date.make(),
reducer: (state, _ext) =>
ReasonReact.Update({ state }),
render: (
Expand Down
2 changes: 1 addition & 1 deletion dokusho/src/app/Day.re
Original file line number Diff line number Diff line change
Expand Up @@ -38,5 +38,5 @@ module Day {
|> List.map(i => float_of_int(i.value) *. PageType.pageScore(i.kind))
|> List.fold_left((a, b) => a +. b, 0.);

let entries = (d: day) => d.entries
let entries = (d: day) => d.entries;
}
18 changes: 17 additions & 1 deletion dokusho/src/app/DokuUtil.re
Original file line number Diff line number Diff line change
Expand Up @@ -21,4 +21,20 @@ module DokuUtil = {
};
Bytes.sub_string(buf, 0, j^);
};
};
};

module DateUtil = {
open Types;

let availableDates = (d: readingHistory) => d.days |> List.map(d => Js.Date.fromString(d.date)) |> (ls) => [Js.Date.make(), ...ls] |> Array.of_list;

let dateWithoutTime = selectedDate => Js.Date.fromFloat(Js.Date.utcWithYMDHMS(
~year=Js.Date.getFullYear(selectedDate),
~month=Js.Date.getMonth(selectedDate),
~date=Js.Date.getDate(selectedDate),
~hours=0.,
~minutes=0.,
~seconds=0.)());

let asDateKey = (date) => Js.String.slice(~from=0, ~to_=16, Js.Date.toISOString(date));
}
27 changes: 10 additions & 17 deletions dokusho/src/app/Dokusho.re
Original file line number Diff line number Diff line change
@@ -1,10 +1,8 @@
open Input;
open Types;
open Day;
open PageTypeSelection;
open Actions;
open Entries;
open Footer;
open DokuUtil;
open Rationale;

module Dokusho {
Expand Down Expand Up @@ -35,21 +33,13 @@ module Dokusho {
Actions.loadUserData(testUser);
},
render: (self) => {
let calendarDate = Js.Date.fromFloat(Js.Date.utcWithYMDHMS(
~year=Js.Date.getFullYear(self.state.selectedDate),
~month=Js.Date.getMonth(self.state.selectedDate),
~date=Js.Date.getDate(self.state.selectedDate),
~hours=0.,
~minutes=0.,
~seconds=0.)());

let dateKey = Js.String.slice(0, 16, Js.Date.toISOString(calendarDate));

let dateKey = self.state.selectedDate |> DateUtil.dateWithoutTime |> DateUtil.asDateKey;

let day = RList.find(d => d.date == dateKey, self.state.readingData.days);
let pageCount = day |> Option.fmap(Day.pageCount) |> Option.default(0.);
let ents = day |> Option.fmap(d => d.entries) |> Option.default([]);
let entries = day |> Option.fmap(d => d.entries) |> Option.default([]);

let dats = self.state.readingData.days |> List.map(d => Js.Date.fromString(d.date)) |> (ls) => [Js.Date.make(), ...ls] |> Array.of_list;
let availableDates = DateUtil.availableDates(self.state.readingData);

<div>
<div className="title">
Expand All @@ -60,11 +50,14 @@ module Dokusho {
selection=self.state.selectedEntry
onSubmit=(self.reduce((text) => AddEntry(self.state.selectedEntry, int_of_string(text))))
/>

<PageTypeSelection onChangeSelect=(self.reduce(selected => ChangeSelection(selected))) />

<DateSelector onChangeSelect=(self.reduce(dt => SelectDate(dt))) enabledDates=(dats) />
<DateSelector
onChangeSelect=(self.reduce(date => SelectDate(date)))
enabledDates=(availableDates) />

<Entries entries=(ents) />
<Entries entries=(entries) />

<Footer pageCount=(pageCount) />
</div>
Expand Down
28 changes: 14 additions & 14 deletions dokusho/src/app/Entries.re
Original file line number Diff line number Diff line change
@@ -1,18 +1,18 @@
open Types;
open Entry;

module Entries = {
let component = ReasonReact.statelessComponent("Entry");

let component = ReasonReact.statelessComponent("Entry");

let make = (~entries: list(entry), _children) => {
...component,
render: (_) =>
<div className="entries">
(entries
|> List.map((entry: entry) => <Entry key=(string_of_int(entry.id)) entry=entry />)
|> Array.of_list
|> ReasonReact.arrayToElement)
</div>
};
let make = (~entries: list(entry), _children) => {
...component,
render: (_) =>
<div className="entries">
(
entries
|> List.map((entry: entry) =>
<Entry key=(string_of_int(entry.id)) entry />
)
|> Array.of_list
|> ReasonReact.arrayToElement
)
</div>
};
27 changes: 14 additions & 13 deletions dokusho/src/app/Entry.re
Original file line number Diff line number Diff line change
@@ -1,17 +1,18 @@
open Types;

open PageType;

module Entry = {
let component = ReasonReact.statelessComponent("Entry");
let make = (~entry: entry, _children) => {
...component,
render: (_) =>
<div className="entry">
(entry.kind |>
PageType.toString |>
(str) => str ++ ": " ++ string_of_int(entry.value) |>
ReasonReact.stringToElement)
</div>
};
let component = ReasonReact.statelessComponent("Entry");

let make = (~entry: entry, _children) => {
...component,
render: (_) =>
<div className="entry">
(
entry.kind
|> PageType.toString
|> ((str) => str ++ ": " ++ string_of_int(entry.value)
|> ReasonReact.stringToElement)
)
</div>
};
17 changes: 7 additions & 10 deletions dokusho/src/app/Footer.re
Original file line number Diff line number Diff line change
@@ -1,12 +1,9 @@
module Footer = {
let component = ReasonReact.statelessComponent("Footer");

let component = ReasonReact.statelessComponent("Footer");

let make = (~pageCount: float, _children) => {
...component,
render: (_) =>
<div className="footer">
(ReasonReact.stringToElement(string_of_float(pageCount) ++ " pages"))
</div>
};
let make = (~pageCount: float, _children) => {
...component,
render: (_) =>
<div className="footer">
(ReasonReact.stringToElement(string_of_float(pageCount) ++ " pages"))
</div>
};
54 changes: 25 additions & 29 deletions dokusho/src/app/PageTypeSelection.re
Original file line number Diff line number Diff line change
Expand Up @@ -2,34 +2,30 @@ open PageType;

open Types;

module PageTypeSelection = {
let component = ReasonReact.reducerComponent("PageTypeSelection");

type inputS = {text: string};

let str = ReasonReact.stringToElement;
let ptArray = PageType.pageTypes |> List.map(i => {"value": i.name, "label": i.name});

let component = ReasonReact.reducerComponent("PageTypeSelection");

let make = (~onChangeSelect, _) => {
...component,
initialState: () => {text: "Book"},
reducer: (state: inputS, _ext) => ReasonReact.Update({text: state.text}),
render: ({state, reduce}) =>
<ReactToolbox.Dropdown
className="pageselect"
auto=true
source=(Array.of_list(ptArray))
value=(`String(state.text))
onChange=(
(txt, _mse) =>
switch (txt |> PageType.findOptType) {
| Some(pt) =>
(reduce(() => {text: PageType.toString(pt)}))();
onChangeSelect(pt);
| None => ()
}
)
/>
};
let make = (~onChangeSelect, _) => {
...component,
initialState: () => "Book",
reducer: (state, _ext) => ReasonReact.Update(state),
render: ({state, reduce}) =>
<ReactToolbox.Dropdown
className="pageselect"
auto=true
source=(
PageType.pageTypes
|> List.map(i => {"value": i.name, "label": i.name})
|> Array.of_list
)
value=(`String(state))
onChange=(
(txt, _mse) =>
switch (txt |> PageType.findOptType) {
| Some(pt) =>
(reduce(() => PageType.toString(pt)))();
onChangeSelect(pt);
| None => ()
}
)
/>
};
2 changes: 1 addition & 1 deletion dokusho/src/styles/index.css
Original file line number Diff line number Diff line change
Expand Up @@ -36,7 +36,7 @@ body {
flex-direction: column;
font-size: 20px;
align-items: center;
padding: 20px;
padding: 15px 20px 0px 20px;
}

.dokusho {
Expand Down
7 changes: 0 additions & 7 deletions dokusho/src/test/PageTypeSelection_test.re
Original file line number Diff line number Diff line change
@@ -1,7 +1,5 @@
open Jest;

open PageTypeSelection;

describe("PageTypeSelection", () => {
open ExpectJs;

Expand All @@ -13,9 +11,4 @@ describe("PageTypeSelection", () => {

expect(Js.Undefined.return(component)) |> toBeDefined;
});

describe("PageTypeSelection.str", () => {
test("Is an alias for ReasonReact.stringToElement", () =>
expect(PageTypeSelection.str("Hello")) |> toBe(ReasonReact.stringToElement("Hello")));
});
});

0 comments on commit 70444d1

Please sign in to comment.