@@ -51,13 +51,15 @@ type alias User =
51
51
, email : Maybe String
52
52
}
53
53
54
+
54
55
type alias CreateUser =
55
56
{ first_name : String
56
57
, last_name : String
57
58
, banner_id : Maybe Int
58
59
, email : Maybe String
59
60
}
60
61
62
+
61
63
type alias UserList =
62
64
List User
63
65
@@ -73,7 +75,7 @@ init _ =
73
75
, create_user = Nothing
74
76
}
75
77
, Http . get
76
- { url = " http://localhost:8000/users"
78
+ { url = " http://localhost:8000/users/ "
77
79
, expect = Http . expectJson GotUsers decodeUserList
78
80
}
79
81
)
@@ -138,57 +140,76 @@ update msg model =
138
140
case model. create_user of
139
141
Just create_user ->
140
142
let
141
- new_create_user = { create_user | first_name = first_name }
143
+ new_create_user =
144
+ { create_user | first_name = first_name }
142
145
in
143
- ( { model | create_user = Just new_create_user }, Cmd . none )
146
+ ( { model | create_user = Just new_create_user }, Cmd . none )
147
+
144
148
Nothing ->
145
- ( model, Cmd . none)
149
+ ( model, Cmd . none )
146
150
147
151
CreateUserLastName last_name ->
148
152
case model. create_user of
149
153
Just create_user ->
150
154
let
151
- new_create_user = { create_user | last_name = last_name }
155
+ new_create_user =
156
+ { create_user | last_name = last_name }
152
157
in
153
- ( { model | create_user = Just new_create_user }, Cmd . none )
158
+ ( { model | create_user = Just new_create_user }, Cmd . none )
159
+
154
160
Nothing ->
155
- ( model, Cmd . none)
161
+ ( model, Cmd . none )
156
162
157
163
CreateUserBannerId banner_id ->
158
164
case model. create_user of
159
165
Just create_user ->
160
166
let
161
- new_create_user = { create_user | banner_id = emptyToNothingInt banner_id }
167
+ new_create_user =
168
+ { create_user | banner_id = emptyToNothingInt banner_id }
162
169
in
163
- ( { model | create_user = Just new_create_user }, Cmd . none )
170
+ ( { model | create_user = Just new_create_user }, Cmd . none )
171
+
164
172
Nothing ->
165
- ( model, Cmd . none)
173
+ ( model, Cmd . none )
166
174
167
175
CreateUserHasEmail has_email ->
168
176
case model. create_user of
169
177
Just create_user ->
170
178
let
171
- new_create_user = { create_user | email = if has_email then Just " " else Nothing }
179
+ new_create_user =
180
+ { create_user
181
+ | email =
182
+ if has_email then
183
+ Just " "
184
+
185
+ else
186
+ Nothing
187
+ }
172
188
in
173
- ( { model | create_user = Just new_create_user }, Cmd . none )
189
+ ( { model | create_user = Just new_create_user }, Cmd . none )
190
+
174
191
Nothing ->
175
- ( model, Cmd . none)
192
+ ( model, Cmd . none )
176
193
177
194
CreateUserEmail email ->
178
195
case model. create_user of
179
196
Just create_user ->
180
197
let
181
- new_create_user = { create_user | email = Just email }
198
+ new_create_user =
199
+ { create_user | email = Just email }
182
200
in
183
- ( { model | create_user = Just new_create_user }, Cmd . none )
201
+ ( { model | create_user = Just new_create_user }, Cmd . none )
202
+
184
203
Nothing ->
185
- ( model, Cmd . none)
204
+ ( model, Cmd . none )
186
205
187
206
SubmitCreateUser _ ->
188
207
case model. create_user of
189
208
Just create_user ->
190
209
( { model | create_user = Nothing }, createCmd create_user )
191
- Nothing -> ( model, Cmd . none )
210
+
211
+ Nothing ->
212
+ ( model, Cmd . none )
192
213
193
214
SubmittedCreateUser err ->
194
215
( model, searchCmd model )
@@ -199,23 +220,30 @@ createCmd create_user =
199
220
case create_user. banner_id of
200
221
Just banner_id ->
201
222
let
202
- user_body = Encode . object
203
- [ ( " first_name" , Encode . string create_user. first_name)
204
- , ( " last_name" , Encode . string create_user. last_name)
205
- , ( " banner_id" , Encode . int banner_id)
206
- , ( " email" ,
207
- case create_user. email of
208
- Just email -> Encode . string email
209
- Nothing -> Encode . null
210
- )
211
- ]
223
+ user_body =
224
+ Encode . object
225
+ [ ( " first_name" , Encode . string create_user. first_name )
226
+ , ( " last_name" , Encode . string create_user. last_name )
227
+ , ( " banner_id" , Encode . int banner_id )
228
+ , ( " email"
229
+ , case create_user. email of
230
+ Just email ->
231
+ Encode . string email
232
+
233
+ Nothing ->
234
+ Encode . null
235
+ )
236
+ ]
212
237
in
213
- Http . post
214
- { url = " http://localhost:8000/users"
215
- , body = Http . jsonBody user_body
216
- , expect = Http . expectWhatever SubmittedCreateUser
217
- }
218
- Nothing -> Cmd . none
238
+ Http . post
239
+ { url = " http://localhost:8000/users/"
240
+ , body = Http . jsonBody user_body
241
+ , expect = Http . expectWhatever SubmittedCreateUser
242
+ }
243
+
244
+ Nothing ->
245
+ Cmd . none
246
+
219
247
220
248
emptyCreateUser : CreateUser
221
249
emptyCreateUser =
@@ -225,6 +253,7 @@ emptyCreateUser =
225
253
, email = Nothing
226
254
}
227
255
256
+
228
257
emptyToNothingInt : String -> Maybe Int
229
258
emptyToNothingInt s =
230
259
if String . isEmpty s then
@@ -242,24 +271,26 @@ emptyToNothing s =
242
271
else
243
272
Just s
244
273
274
+
245
275
deleteCmd : Int -> Cmd UserMsg
246
276
deleteCmd id =
247
277
Http . request
248
278
{ method = " DELETE"
249
279
, headers = []
250
- , url = crossOrigin " http://localhost:8000" [ " users" , String . fromInt id] []
280
+ , url = crossOrigin " http://localhost:8000" [ " users" , String . fromInt id ] []
251
281
, body = Http . emptyBody
252
282
, expect = Http . expectWhatever UserDeleted
253
283
, timeout = Nothing
254
284
, tracker = Nothing
255
285
}
256
286
287
+
257
288
searchCmd : UserModel -> Cmd UserMsg
258
289
searchCmd model =
259
290
Http . get
260
291
{ url =
261
292
crossOrigin " http://localhost:8000"
262
- [ " users" ]
293
+ [ " users/ " ]
263
294
( []
264
295
|> concatConditional
265
296
( Maybe . map ( \ a -> Url . Builder . string " first_name_exact" a) model. first_name_search)
@@ -361,54 +392,64 @@ view model =
361
392
, case model. create_user of
362
393
Nothing ->
363
394
input [ type_ " button" , value " Add User" , onClick ( ShowCreateUser () ) ] []
395
+
364
396
Just create_user ->
365
397
viewCreateUser create_user
366
398
]
367
399
400
+
368
401
viewCreateUser : CreateUser -> Html UserMsg
369
402
viewCreateUser create_user =
370
403
div []
371
404
(( [ input
372
- [ type_ " text"
373
- , value create_user. first_name
374
- , onInput CreateUserFirstName
375
- ] []
376
- , input
377
- [ type_ " text"
378
- , value create_user. last_name
379
- , onInput CreateUserLastName
380
- ] []
381
- , input
382
- [ type_ " text"
383
- , value ( Maybe . withDefault " " ( Maybe . map String . fromInt create_user. banner_id))
384
- , onInput CreateUserBannerId
385
- ] []
386
- , div []
387
- [ text " Has email?"
388
- , input
389
- [ type_ " checkbox"
390
- , checked
391
- ( case create_user. email of
392
- Just _ -> True
393
- Nothing -> False
394
- )
395
- , onCheck CreateUserHasEmail
396
- ] []
397
- ]
398
- ]
399
- |> concatConditional
400
- ( Maybe . map
401
- ( \ email -> input [ type_ " text" , value email, onInput CreateUserEmail ] [] )
402
- create_user. email
403
- ))
404
- ++
405
- [ input
406
- [ type_ " button"
407
- , value " Submit User"
408
- , onClick ( SubmitCreateUser () )
409
- ] []
410
- ] )
411
-
405
+ [ type_ " text"
406
+ , value create_user. first_name
407
+ , onInput CreateUserFirstName
408
+ ]
409
+ []
410
+ , input
411
+ [ type_ " text"
412
+ , value create_user. last_name
413
+ , onInput CreateUserLastName
414
+ ]
415
+ []
416
+ , input
417
+ [ type_ " text"
418
+ , value ( Maybe . withDefault " " ( Maybe . map String . fromInt create_user. banner_id))
419
+ , onInput CreateUserBannerId
420
+ ]
421
+ []
422
+ , div []
423
+ [ text " Has email?"
424
+ , input
425
+ [ type_ " checkbox"
426
+ , checked
427
+ ( case create_user. email of
428
+ Just _ ->
429
+ True
430
+
431
+ Nothing ->
432
+ False
433
+ )
434
+ , onCheck CreateUserHasEmail
435
+ ]
436
+ []
437
+ ]
438
+ ]
439
+ |> concatConditional
440
+ ( Maybe . map
441
+ ( \ email -> input [ type_ " text" , value email, onInput CreateUserEmail ] [] )
442
+ create_user. email
443
+ )
444
+ )
445
+ ++ [ input
446
+ [ type_ " button"
447
+ , value " Submit User"
448
+ , onClick ( SubmitCreateUser () )
449
+ ]
450
+ []
451
+ ]
452
+ )
412
453
413
454
414
455
viewUsers : List User -> Html UserMsg
0 commit comments