date range filter for everyone.

This commit is contained in:
Bryce Covert
2019-05-04 08:04:08 -07:00
parent 047a0c1f8e
commit d07367dc19
3 changed files with 29 additions and 1 deletions

View File

@@ -1,6 +1,6 @@
(ns auto-ap.datomic.invoices
(:require [datomic.api :as d]
[auto-ap.datomic :refer [uri remove-nils]]
[auto-ap.datomic :refer [uri remove-nils merge-query]]
[auto-ap.graphql.utils :refer [limited-clients]]
[auto-ap.parse :as parse]
[clj-time.coerce :as c]
@@ -51,6 +51,17 @@
(:original-id args) (add-arg '?original-id (cond-> (:original-id args) (string? (:original-id args)) Long/parseLong )
'[?e :invoice/client ?c]
'[?c :client/original-id ?original-id])
(:start (:date-range args)) (merge-query {:query {:in '[?start-date]
:where ['[?e :invoice/date ?date]
'[(>= ?date ?start-date)]]}
:args [(c/to-date (:start (:date-range args)))]})
(:end (:date-range args)) (merge-query {:query {:in '[?end-date]
:where ['[?e :invoice/date ?date]
'[(<= ?date ?end-date)]]}
:args [(c/to-date (:end (:date-range args)))]})
(:import-status args) (add-arg '?import-status (keyword "import-status" (:import-status args))
'[?e :invoice/import-status ?import-status])
(:status args) (add-arg '?status (keyword "invoice-status" (:status args))

View File

@@ -294,6 +294,7 @@
:invoice_page {:type '(list :invoice_page)
:args {:import_status {:type 'String}
:date_range {:type :date_range}
:status {:type 'String}
:client_id {:type :id}
:vendor_id {:type :id}

View File

@@ -14,6 +14,7 @@
[auto-ap.views.components.typeahead :refer [typeahead]]
[auto-ap.views.components.vendor-dialog :refer [vendor-dialog]]
[auto-ap.views.components.vendor-filter :refer [vendor-filter]]
[auto-ap.views.components.date-range-filter :refer [date-range-filter]]
[auto-ap.views.pages.invoices.common :refer [invoice-read]]
[auto-ap.views.utils
:refer
@@ -564,6 +565,16 @@
(assoc-in updated [::params :vendor-id] value))
updated))))
(re-frame/reg-event-fx
::change-selected-date-range
(fn [{:keys [db]} [_ key value]]
(let [[key] key
updated (-> db
(assoc-in [::invoice-page :date-range-filter key] value)
(assoc-in [::params :date-range key] value))]
{:dispatch [::params-change (::params updated)]
:db updated})))
(re-frame/reg-event-fx
::invoice-number-like-current-changed
(fn [{:keys [db]} [_ params invoice-like]]
@@ -704,6 +715,11 @@
[:div [vendor-filter {:on-change-event [::change-selected-vendor]
:value (:vendor-filter @(re-frame/subscribe [::invoice-page]))
:vendors @(re-frame/subscribe [::subs/vendors])}]]
[:p.menu-label "Date Range"]
[:div
[date-range-filter
{:on-change-event [::change-selected-date-range]
:value (:date-range-filter @(re-frame/subscribe [::invoice-page]))}]]
[:p.menu-label "Invoice #"]
[:div
[invoice-number-filter]]]]