added vendor filter

This commit is contained in:
Bryce Covert
2019-01-25 23:20:10 -08:00
parent 7aaf9bf035
commit e63d5d77e7
3 changed files with 33 additions and 35 deletions

View File

@@ -0,0 +1,19 @@
(ns auto-ap.views.components.vendor-filter
(:require
[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]]))
(defn vendor-filter [{:keys [value on-change-event vendors]}]
[:div.field
[:div.control
[bind-field
[typeahead {:matches (map (fn [x] [(:id x) (:name x)]) vendors)
:type "typeahead"
:auto-focus true
:field [:vendor-id]
:text-field [:vendor-name]
:event on-change-event
:spec (s/nilable ::invoice/vendor-id)
:subscription value}]]]])

View File

@@ -7,6 +7,7 @@
[goog.string :as gstring]
[clojure.spec.alpha :as s]
[auto-ap.views.components.sorter :refer [sorted-column]]
[auto-ap.views.components.vendor-filter :refer [vendor-filter]]
[auto-ap.views.components.layouts :refer [side-bar-layout]]
[auto-ap.views.components.typeahead :refer [typeahead]]
[auto-ap.views.components.paginator :refer [paginator]]
@@ -95,20 +96,20 @@
updated))))
(defn check-table [{:keys [id payment-page status on-params-change vendors params check-boxes checked on-check-changed expense-event]}]
(let [state (reagent/atom (or @params {}))
(let [#_#_state (reagent/atom (or @params {}))
selected-client @(re-frame/subscribe [::subs/client])
opc (fn [p]
(swap! state merge p)
(on-params-change p))]
(on-params-change (merge @params p)))]
(fn [{:keys [id payment-page status on-params-change vendors checked]}]
(let [{:keys [sort-by asc]} @state
(let [{:keys [sort-by asc]} @params
{:keys [payments start end count total]} @payment-page
selected-client @(re-frame/subscribe [::subs/client])
percentage-size (if selected-client "50%" "33%")]
[:div
[paginator {:start start :end end :count count :total total
:on-change (fn [p ]
(on-params-change (swap! state merge p)))}]
(on-params-change (merge @params p)))}]
"Showing " (inc start) "-" end "/" total
[:table.table.is-fullwidth
@@ -203,23 +204,13 @@
(re-frame/dispatch [::params-change params]))}]]))
{:component-will-mount #(re-frame/dispatch-sync [::params-change {}]) }))
(defn vendor-filter []
(let [{:keys [vendor-filter]} @(re-frame/subscribe [::payment-page])]
[:div.field
[:div.control
[bind-field
[typeahead {:matches (map (fn [x] [(:id x) (:name x)]) @(re-frame/subscribe [::subs/vendors]))
:type "typeahead"
:auto-focus true
:field [:vendor-id]
:text-field [:vendor-name]
:event [::change-selected-vendor]
:spec (s/nilable ::invoice/vendor-id)
:subscription vendor-filter}]]]]))
(defn checks-page []
[side-bar-layout {:side-bar
[:div
[:p.menu-label "Vendor"]
[:div [vendor-filter]]]
[:div [vendor-filter {:on-change-event [::change-selected-vendor]
:value (:vendor-filter @(re-frame/subscribe [::payment-page]))
:vendors @(re-frame/subscribe [::subs/vendors])}]]]
:main [checks-content]}])

View File

@@ -13,6 +13,7 @@
[auto-ap.routes :as routes]
[auto-ap.views.components.expense-accounts-dialog :as expense-accounts-dialog]
[auto-ap.views.components.vendor-dialog :refer [vendor-dialog]]
[auto-ap.views.components.vendor-filter :refer [vendor-filter]]
[auto-ap.views.components.invoices.side-bar :refer [invoices-side-bar]]
[auto-ap.expense-accounts :as expense-accounts]
[auto-ap.entities.invoices-expense-accounts :as invoices-expense-accounts]
@@ -678,21 +679,6 @@
(assoc-in updated [::params :vendor-id] value))
updated))))
(defn vendor-filter []
(let [{:keys [vendor-filter]} @(re-frame/subscribe [::invoice-page])]
[:div.field
[:div.control
[bind-field
[typeahead {:matches (map (fn [x] [(:id x) (:name x)]) @(re-frame/subscribe [::subs/vendors]))
:type "typeahead"
:auto-focus true
:field [:vendor-id]
:text-field [:vendor-name]
:event [::change-selected-vendor]
:spec (s/nilable ::invoice/vendor-id)
:subscription vendor-filter}]]]]))
(defn invoice-number-filter []
(let [{:keys [invoice-number-like] :as params} @(re-frame/subscribe [::params])]
[:div.field
@@ -794,7 +780,9 @@
^{:key "extra-filter"}
[:div
[:p.menu-label "Vendor"]
[:div [vendor-filter]]
[: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 "Invoice #"]
[:div
[invoice-number-filter]]]]