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 "./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