supports date filter.

This commit is contained in:
Bryce Covert
2019-05-03 13:51:47 -07:00
parent 34751fe77a
commit 36f5321454
2 changed files with 66 additions and 34 deletions

View File

@@ -3,36 +3,62 @@
[clojure.spec.alpha :as s]
[auto-ap.entities.invoice :as invoice]
[auto-ap.views.components.typeahead :refer [typeahead]]
[auto-ap.views.utils :refer [bind-field date-picker]]))
[auto-ap.views.utils :refer [bind-field date-picker date->str local-now standard]]
[cljs-time.core :as t]
[re-frame.core :as re-frame]))
(defn dispatch-change [on-change-event start end]
(fn [_]
(re-frame/dispatch (into on-change-event [[:start] start]) )
(re-frame/dispatch (into on-change-event [[:end] end]))))
(defn date-range-filter [{:keys [value on-change-event]}]
[:div.field
[:div.control
[:div.columns.is-variable.is-1
[:div.column
[bind-field
[date-picker {:class-name "input is-fullwidth"
:class "input"
:format-week-number (fn [] "")
:previous-month-button-label ""
:placeholder "Start Date mm/dd/yyyy"
:next-month-button-label ""
:next-month-label ""
:event on-change-event
:type "date"
:field [:start]
:subscription value}]]]
[:div.column.is-narrow " to "]
[:div.column
[bind-field
[date-picker {:class-name "input is-fullwidth"
:class "input"
:format-week-number (fn [] "")
:previous-month-button-label ""
:placeholder "Start Date mm/dd/yyyy"
:next-month-button-label ""
:event on-change-event
:next-month-label ""
:type "date"
:field [:end]
:subscription value}]]]]]])
[:div
[:div.field.has-addons
[:p.control [:a.button.is-small {:on-click
(dispatch-change on-change-event
(date->str (t/minus (local-now) (t/period :days 7)) standard)
(date->str (local-now) standard))}
"Week" ]]
[:p.control [:a.button.is-small {:on-click
(dispatch-change on-change-event
(date->str (t/minus (local-now) (t/period :months 1)) standard)
(date->str (local-now) standard))}
"Month" ]]
[:p.control [:a.button.is-small {:on-click
(dispatch-change on-change-event
(date->str (t/minus (local-now) (t/period :years 1)) standard)
(date->str (local-now) standard))}
"Year"]]
[:p.control [:a.button.is-small {:on-click
(dispatch-change on-change-event
nil
nil)}
"All"]]]
[:div.field.has-addons
[:div.control
[bind-field
[date-picker {:class-name "input is-fullwidth"
:class "input"
:format-week-number (fn [] "")
:previous-month-button-label ""
:placeholder-text "Start"
:next-month-button-label ""
:next-month-label ""
:event on-change-event
:type "date"
:field [:start]
:subscription value}]]]
[:div.control
[bind-field
[date-picker {:class-name "input is-fullwidth"
:class "input"
:format-week-number (fn [] "")
:previous-month-button-label ""
:placeholder-text "End"
:next-month-button-label ""
:event on-change-event
:next-month-label ""
:type "date"
:field [:end]
:subscription value}]]]]])

View File

@@ -10,7 +10,8 @@
[auto-ap.subs :as subs]
[cljs-time.format :as format]
[goog.i18n.NumberFormat.Format]
[cljs-time.core :as t])
[cljs-time.core :as t]
[clojure.string :as str])
(:import
(goog.i18n NumberFormat)
(goog.i18n.NumberFormat Format)))
@@ -76,7 +77,10 @@
(defn dispatch-date-change [event]
(fn [e g]
(re-frame/dispatch (conj event (date->str (time/from-default-time-zone (c/from-date e)) standard)))))
(re-frame/dispatch (conj event
(if (str/blank? e)
e
(date->str (time/from-default-time-zone (c/from-date e)) standard))))))
(defmulti do-bind (fn [a {:keys [type] :as x}]
type))
@@ -163,7 +167,9 @@
event (if (keyword? event) [event] event)
selected (get-in subscription field)
x (str->date selected standard)
selected (if (string? selected) (c/to-date (time/to-default-time-zone (time/from-default-time-zone x))) selected )
selected (if (string? selected)
(c/to-date (time/to-default-time-zone (time/from-default-time-zone x)))
selected )
keys (assoc keys
:on-change (dispatch-date-change (conj event field))
:selected selected