added vendor filter
This commit is contained in:
19
src/cljs/auto_ap/views/components/vendor_filter.cljs
Normal file
19
src/cljs/auto_ap/views/components/vendor_filter.cljs
Normal 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}]]]])
|
||||
@@ -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]}])
|
||||
|
||||
@@ -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]]]]
|
||||
|
||||
Reference in New Issue
Block a user