Marek Piasecki
2 years ago
4 changed files with 78 additions and 2 deletions
@ -1,3 +1,2 @@ |
|||||
import "pro-router/standalone" |
|
||||
import "./router.imba" |
import "./router.imba" |
||||
import "./main.imba" |
// import "./main.imba"
|
@ -0,0 +1,52 @@ |
|||||
|
import './plus-minus.imba' |
||||
|
|
||||
|
let h = |
||||
|
zero: do new Date(0) |
||||
|
max_size: do #ms ||= R.getters.size "3_0_0", 1 # 3 days |
||||
|
|
||||
|
validate: do |s| |
||||
|
return R.getters.size("0_0_5", 1) if s < h.zero! |
||||
|
return new Date(h.max_size!) if s > h.max_size! |
||||
|
s |
||||
|
|
||||
|
modify: do |what, n, date=R.param('size')| |
||||
|
date["set{what}"]( date["get{what}"]() + n ) |
||||
|
h.validate(date) |
||||
|
|
||||
|
change: do |what, n, date=R.param('size')| |
||||
|
h.save h.modify(*arguments) |
||||
|
|
||||
|
save: do |date| |
||||
|
R.write 'size', date |
||||
|
|
||||
|
days: do |day=R.param('size')| day.getDate! - 1 |
||||
|
incr_day: do h.change "Date", 1 |
||||
|
decr_day: do h.change "Date", -1 |
||||
|
incr_h: do h.change "Hours", 1 |
||||
|
decr_h: do h.change "Hours", -1 |
||||
|
incr_min: do h.change "Minutes", 5 |
||||
|
decr_min: do h.change "Minutes", -5 |
||||
|
|
||||
|
set_time: do |days, hour, min, date=h.zero!| |
||||
|
date.setHours(hour, min, 0, 0) |
||||
|
date.setDate(Number(days)+1) |
||||
|
date |
||||
|
|
||||
|
format_d: do |n| "{n}{n > 1 ? "days" : "day"}" |
||||
|
format_h: do |n| "{n}h" |
||||
|
format_min: do |n| "{n}min" |
||||
|
|
||||
|
export default h |
||||
|
|
||||
|
R.setters.size = do |v| let s = "{h.days(v)}_{v.getHours!}_{v.getMinutes!}"; s if s!= "0_0_30" |
||||
|
R.getters.size = do |v, skip_validation| |
||||
|
let size = v ? v.split('_') : [0, 0, 30] |
||||
|
let date = h.set_time(*size) |
||||
|
skip_validation ? date : h.validate(date) |
||||
|
|
||||
|
tag slot-size-input |
||||
|
<self[d:hflex jac:center]> |
||||
|
if h.days! > 0 |
||||
|
<plus-minus value=h.days! decorate=h.format_d decr=h.decr_day incr=h.incr_day> |
||||
|
<plus-minus value=R.param('size').getHours!.toString! decorate=h.format_h decr=h.decr_h incr=h.incr_h> |
||||
|
<plus-minus value=R.param('size').getMinutes!.toString! decorate=h.format_min decr=h.decr_min incr=h.incr_min> |
@ -0,0 +1,24 @@ |
|||||
|
import sh from "../ui/slot-size-input.imba" |
||||
|
import "../ui/action-button.imba" |
||||
|
|
||||
|
tag view-choose-slot |
||||
|
<self> |
||||
|
<h1> "How long?" |
||||
|
<SizeHint size="1"> |
||||
|
<SizeHint size="3"> |
||||
|
<SizeHint size="6"> |
||||
|
<SizeHint size="10"> |
||||
|
<SizeHint size="12"> |
||||
|
<slot-size-input> |
||||
|
<pro-ref view="booking-confirmation"> |
||||
|
<action-button[w:230px fs:larger]> "Book slot" |
||||
|
|
||||
|
tag SizeHint < action-button |
||||
|
prop size |
||||
|
<self[mx:7px].clickable.bordered.active=compare @click=sh.save(R.getters.size(size_hash))> "{ size }h" |
||||
|
|
||||
|
get compare |
||||
|
R.params.size == size_hash |
||||
|
|
||||
|
get size_hash |
||||
|
"0_{size}_0" |
Loading…
Reference in new issue