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]
|
[goog.string :as gstring]
|
||||||
[clojure.spec.alpha :as s]
|
[clojure.spec.alpha :as s]
|
||||||
[auto-ap.views.components.sorter :refer [sorted-column]]
|
[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.layouts :refer [side-bar-layout]]
|
||||||
[auto-ap.views.components.typeahead :refer [typeahead]]
|
[auto-ap.views.components.typeahead :refer [typeahead]]
|
||||||
[auto-ap.views.components.paginator :refer [paginator]]
|
[auto-ap.views.components.paginator :refer [paginator]]
|
||||||
@@ -95,20 +96,20 @@
|
|||||||
updated))))
|
updated))))
|
||||||
|
|
||||||
(defn check-table [{:keys [id payment-page status on-params-change vendors params check-boxes checked on-check-changed expense-event]}]
|
(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])
|
selected-client @(re-frame/subscribe [::subs/client])
|
||||||
opc (fn [p]
|
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]}]
|
(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
|
{:keys [payments start end count total]} @payment-page
|
||||||
selected-client @(re-frame/subscribe [::subs/client])
|
selected-client @(re-frame/subscribe [::subs/client])
|
||||||
percentage-size (if selected-client "50%" "33%")]
|
percentage-size (if selected-client "50%" "33%")]
|
||||||
[:div
|
[:div
|
||||||
[paginator {:start start :end end :count count :total total
|
[paginator {:start start :end end :count count :total total
|
||||||
:on-change (fn [p ]
|
:on-change (fn [p ]
|
||||||
(on-params-change (swap! state merge p)))}]
|
(on-params-change (merge @params p)))}]
|
||||||
"Showing " (inc start) "-" end "/" total
|
"Showing " (inc start) "-" end "/" total
|
||||||
|
|
||||||
[:table.table.is-fullwidth
|
[:table.table.is-fullwidth
|
||||||
@@ -203,23 +204,13 @@
|
|||||||
(re-frame/dispatch [::params-change params]))}]]))
|
(re-frame/dispatch [::params-change params]))}]]))
|
||||||
{:component-will-mount #(re-frame/dispatch-sync [::params-change {}]) }))
|
{: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 []
|
(defn checks-page []
|
||||||
[side-bar-layout {:side-bar
|
[side-bar-layout {:side-bar
|
||||||
[:div
|
[:div
|
||||||
[:p.menu-label "Vendor"]
|
[: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]}])
|
:main [checks-content]}])
|
||||||
|
|||||||
@@ -13,6 +13,7 @@
|
|||||||
[auto-ap.routes :as routes]
|
[auto-ap.routes :as routes]
|
||||||
[auto-ap.views.components.expense-accounts-dialog :as expense-accounts-dialog]
|
[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-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.views.components.invoices.side-bar :refer [invoices-side-bar]]
|
||||||
[auto-ap.expense-accounts :as expense-accounts]
|
[auto-ap.expense-accounts :as expense-accounts]
|
||||||
[auto-ap.entities.invoices-expense-accounts :as invoices-expense-accounts]
|
[auto-ap.entities.invoices-expense-accounts :as invoices-expense-accounts]
|
||||||
@@ -678,21 +679,6 @@
|
|||||||
(assoc-in updated [::params :vendor-id] value))
|
(assoc-in updated [::params :vendor-id] value))
|
||||||
updated))))
|
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 []
|
(defn invoice-number-filter []
|
||||||
(let [{:keys [invoice-number-like] :as params} @(re-frame/subscribe [::params])]
|
(let [{:keys [invoice-number-like] :as params} @(re-frame/subscribe [::params])]
|
||||||
[:div.field
|
[:div.field
|
||||||
@@ -794,7 +780,9 @@
|
|||||||
^{:key "extra-filter"}
|
^{:key "extra-filter"}
|
||||||
[:div
|
[:div
|
||||||
[:p.menu-label "Vendor"]
|
[: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 #"]
|
[:p.menu-label "Invoice #"]
|
||||||
[:div
|
[:div
|
||||||
[invoice-number-filter]]]]
|
[invoice-number-filter]]]]
|
||||||
|
|||||||
Reference in New Issue
Block a user