Skip to content

Commit

Permalink
Working on labeled slider example.
Browse files Browse the repository at this point in the history
  • Loading branch information
foxdonut committed Apr 12, 2016
1 parent 53737a9 commit 0c2cd28
Show file tree
Hide file tree
Showing 5 changed files with 26 additions and 26 deletions.
19 changes: 0 additions & 19 deletions labeled-sliders/labeledSlider/feature.js

This file was deleted.

16 changes: 16 additions & 0 deletions labeled-sliders/labeledSlider/widget.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
import { initialModel } from "./model";
import { update } from "./update";
import { view } from "./view.jsx";

const createLabeledSliderWidget = id => {
const widget = {
id: id,
initialModel: [initialModel],
update: update,
view: view
};

return widget;
};

export { createLabeledSliderWidget };
5 changes: 2 additions & 3 deletions labeled-sliders/sliderContainer/feature.js
Original file line number Diff line number Diff line change
Expand Up @@ -5,12 +5,11 @@ import { view } from "./view.jsx";

const createSliderContainerFeature = config => {
const model = config && config.initialModel || initialModel;
const services = {
};

const featureConfig = {
inputs: config && config.inputs,
initialModel: [model, null],
update: update(services),
update: update,
view: view
};

Expand Down
9 changes: 5 additions & 4 deletions labeled-sliders/sliderContainer/update.js
Original file line number Diff line number Diff line change
@@ -1,20 +1,21 @@
import { append, assoc } from "ramda";
import { Action } from "./action";
import { createLabeledSliderWidget } from "../labeledSlider/widget";

// handler : Model -> [ model, Maybe (Task Action) ]
const handler = _services => model => ({
const handler = model => ({
NoOp: () => [model],
AddMeasurement: () => [
assoc("nextId", model.nextId + 1,
assoc("measurements", append({id: model.nextId}, model.measurements), model)
assoc("measurements", append(createLabeledSliderWidget(model.nextId), model.measurements), model)
)
],
RemoveMeasurement: id => [
assoc("measurements", model.measurements.filter(m => m.id !== id), model)
]
});

// update : Services -> Action -> Model -> [ model, Maybe (Task Action) ]
const update = services => action => model => Action.case(handler(services)(model), action);
// update : Action -> Model -> [ model, Maybe (Task Action) ]
const update = action => model => Action.case(handler(model), action);

export { update };
3 changes: 3 additions & 0 deletions labeled-sliders/sliderContainer/view.jsx
Original file line number Diff line number Diff line change
Expand Up @@ -8,9 +8,12 @@ const view = actions => model => {
const onRemoveMeasurement = id => _evt => actions.onNext(Action.RemoveMeasurement(id));

const renderMeasurement = measurement => {
const view = measurement.view();

return (
<div key={measurement.id}>
{measurement.id}
{view(model)}
<button onClick={onRemoveMeasurement(measurement.id)}>Remove Measurement</button>
</div>
);
Expand Down

0 comments on commit 0c2cd28

Please sign in to comment.