standardizing vendors.
This commit is contained in:
@@ -125,10 +125,7 @@
|
|||||||
[table/table {:id :transactions
|
[table/table {:id :transactions
|
||||||
:params (re-frame/subscribe [::params])
|
:params (re-frame/subscribe [::params])
|
||||||
:rule-page (re-frame/subscribe [::page])
|
:rule-page (re-frame/subscribe [::page])
|
||||||
:status @(re-frame/subscribe [::status/single ::page])
|
:status @(re-frame/subscribe [::status/single ::page])}]
|
||||||
:on-params-change (fn [params]
|
|
||||||
(println "CHANGING PARAMS TO" params)
|
|
||||||
(re-frame/dispatch [::params-change params]))}]
|
|
||||||
]))
|
]))
|
||||||
{:component-did-mount (dispatch-event [::mounted ])
|
{:component-did-mount (dispatch-event [::mounted ])
|
||||||
:component-will-unmount #(re-frame/dispatch-sync [::unmounted])}))
|
:component-will-unmount #(re-frame/dispatch-sync [::unmounted])}))
|
||||||
|
|||||||
@@ -99,9 +99,8 @@
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
(defn table* [{:keys [id rule-page on-params-change params status]}]
|
(defn table* [{:keys [id rule-page params status]}]
|
||||||
(let [{:keys [sort asc]} @params
|
(let [{:keys [transaction-rules start end count total]} @rule-page
|
||||||
{:keys [transaction-rules start end count total]} @rule-page
|
|
||||||
selected-client @(re-frame/subscribe [::subs/client])
|
selected-client @(re-frame/subscribe [::subs/client])
|
||||||
opc (fn [p]
|
opc (fn [p]
|
||||||
(re-frame/dispatch [::params-changed p]))
|
(re-frame/dispatch [::params-changed p]))
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
(ns auto-ap.views.pages.admin.vendors
|
(ns auto-ap.views.pages.admin.vendors
|
||||||
(:require [re-frame.core :as re-frame]
|
(:require [re-frame.core :as re-frame]
|
||||||
[reagent.core :as reagent]
|
[reagent.core :as reagent]
|
||||||
[clojure.string :as str]
|
[clojure.string :as str]
|
||||||
[auto-ap.views.components.buttons :as buttons]
|
[auto-ap.views.components.buttons :as buttons]
|
||||||
@@ -17,11 +17,14 @@
|
|||||||
[auto-ap.views.components.layouts :refer [side-bar-layout]]
|
[auto-ap.views.components.layouts :refer [side-bar-layout]]
|
||||||
[clojure.spec.alpha :as s]
|
[clojure.spec.alpha :as s]
|
||||||
[auto-ap.views.utils :refer [login-url dispatch-value-change dispatch-event bind-field horizontal-field action-cell-width]]
|
[auto-ap.views.utils :refer [login-url dispatch-value-change dispatch-event bind-field horizontal-field action-cell-width]]
|
||||||
|
[auto-ap.views.pages.admin.vendors.table :as table]
|
||||||
|
|
||||||
[auto-ap.views.components.typeahead :refer [typeahead]]
|
[auto-ap.views.components.typeahead :refer [typeahead]]
|
||||||
[cljs.reader :as edn]
|
[cljs.reader :as edn]
|
||||||
[auto-ap.routes :as routes]
|
[auto-ap.routes :as routes]
|
||||||
[bidi.bidi :as bidi])
|
[bidi.bidi :as bidi]
|
||||||
|
[auto-ap.status :as status]
|
||||||
|
[vimsical.re-frame.fx.track :as track])
|
||||||
(:require-macros [cljs.core.async.macros :refer [go]]
|
(:require-macros [cljs.core.async.macros :refer [go]]
|
||||||
[auto-ap.entities.vendors :as vendor]))
|
[auto-ap.entities.vendors :as vendor]))
|
||||||
|
|
||||||
@@ -31,8 +34,12 @@
|
|||||||
::mounted
|
::mounted
|
||||||
(fn [{:keys [db]} _]
|
(fn [{:keys [db]} _]
|
||||||
{:graphql {:token (:user db)
|
{:graphql {:token (:user db)
|
||||||
|
:owns-state {:single ::vendor-page}
|
||||||
:query-obj {:venia/queries [[:vendor events/vendor-query]]}
|
:query-obj {:venia/queries [[:vendor events/vendor-query]]}
|
||||||
:on-success [::received-vendors]}}))
|
:on-success [::received-vendors]}
|
||||||
|
::track/register {:id ::params
|
||||||
|
:subscription [::params]
|
||||||
|
:event-fn (fn [params] [::params-change params])}}))
|
||||||
|
|
||||||
(re-frame/reg-event-db
|
(re-frame/reg-event-db
|
||||||
::received-vendors
|
::received-vendors
|
||||||
@@ -40,31 +47,25 @@
|
|||||||
(assoc db :vendors (by :id (:vendor vendors )))))
|
(assoc db :vendors (by :id (:vendor vendors )))))
|
||||||
|
|
||||||
|
|
||||||
(re-frame/reg-event-db
|
|
||||||
::table-params-changed
|
|
||||||
(fn [db [_ p]]
|
|
||||||
(assoc db ::table-params p)))
|
|
||||||
|
|
||||||
(re-frame/reg-sub
|
|
||||||
::table-params
|
|
||||||
(fn [db]
|
|
||||||
(-> db ::table-params)))
|
|
||||||
|
|
||||||
(re-frame/reg-event-fx
|
(re-frame/reg-event-fx
|
||||||
::unmounted
|
::unmounted
|
||||||
(fn [{:keys [db]} _]
|
(fn [{:keys [db]} _]
|
||||||
{:db (dissoc db ::table-params ::side-bar/filter-params)}))
|
{:db (dissoc db ::table/params ::side-bar/filter-params)
|
||||||
|
::track/dispose {:id ::params}}))
|
||||||
|
|
||||||
(re-frame/reg-sub
|
(re-frame/reg-sub
|
||||||
::params
|
::params
|
||||||
:<- [::side-bar/filter-params]
|
:<- [::side-bar/filter-params]
|
||||||
:<- [::table-params]
|
:<- [::table/params]
|
||||||
(fn [[filter-params table-params]]
|
(fn [[filter-params table-params]]
|
||||||
(println "TABLE params" table-params)
|
|
||||||
(cond-> {}
|
(cond-> {}
|
||||||
(seq filter-params) (merge filter-params)
|
(seq filter-params) (merge filter-params)
|
||||||
(seq table-params) (merge table-params))))
|
(seq table-params) (merge table-params))))
|
||||||
|
|
||||||
|
(re-frame/reg-event-fx
|
||||||
|
::params-change
|
||||||
|
(fn [_ [_ params]]
|
||||||
|
{:set-uri-params params}))
|
||||||
|
|
||||||
(re-frame/reg-sub
|
(re-frame/reg-sub
|
||||||
::vendor-page
|
::vendor-page
|
||||||
@@ -72,46 +73,11 @@
|
|||||||
:<- [::subs/sorted-all-vendors]
|
:<- [::subs/sorted-all-vendors]
|
||||||
(fn [[params all-vendors]]
|
(fn [[params all-vendors]]
|
||||||
(let [matching-vendors (cond->> all-vendors
|
(let [matching-vendors (cond->> all-vendors
|
||||||
(:name params) (filter #(str/includes? (str/lower-case (:name %)) (str/lower-case (:name params)))))]
|
(:name-like params) (filter #(str/includes? (str/lower-case (or (:name %) ""))
|
||||||
|
(str/lower-case (:name-like params)))))]
|
||||||
(assoc (grid/virtual-paginate-controls (:start params ) matching-vendors)
|
(assoc (grid/virtual-paginate-controls (:start params ) matching-vendors)
|
||||||
:data (grid/virtual-paginate (:start params) matching-vendors)))))
|
:data (grid/virtual-paginate (:start params) matching-vendors)))))
|
||||||
|
|
||||||
(defn vendors-table []
|
|
||||||
(let [vendor-page @(re-frame/subscribe [::vendor-page])
|
|
||||||
params @(re-frame/subscribe [::params])
|
|
||||||
accounts @(re-frame/subscribe [::subs/all-accounts-by-id])
|
|
||||||
]
|
|
||||||
|
|
||||||
[grid/grid {:status nil
|
|
||||||
:on-params-change (fn [p]
|
|
||||||
(re-frame/dispatch [::table-params-changed p]))
|
|
||||||
:params params
|
|
||||||
:column-count 4}
|
|
||||||
[grid/controls vendor-page]
|
|
||||||
[grid/table {:fullwidth true}
|
|
||||||
[grid/header
|
|
||||||
[grid/row {}
|
|
||||||
[grid/header-cell {} "Name"]
|
|
||||||
[grid/header-cell {} "Email"]
|
|
||||||
[grid/header-cell {} "Default Account"]
|
|
||||||
[grid/header-cell {:style {:width (action-cell-width 1)}}]]]
|
|
||||||
[grid/body
|
|
||||||
(for [v (:data vendor-page)]
|
|
||||||
^{:key (str (:id v))}
|
|
||||||
[grid/row {:class (:class v)}
|
|
||||||
[grid/cell {} (:name v)]
|
|
||||||
[grid/cell {} (:email (:primary-contact v))]
|
|
||||||
[grid/cell {} (-> v :default-account :id accounts :name)]
|
|
||||||
[grid/cell {}
|
|
||||||
[buttons/fa-icon {:event [::vendor-dialog/started v]
|
|
||||||
:icon "fa-pencil"}]]])]]]))
|
|
||||||
|
|
||||||
(defn danger-for [[dom {:keys [field subscription class] :as keys} & rest]]
|
|
||||||
(let [keys (assoc keys :class (str class
|
|
||||||
(when (not (s/valid? field (field subscription)))
|
|
||||||
" is-danger")))
|
|
||||||
keys (dissoc keys :field :subscription)]
|
|
||||||
(vec (concat [dom keys] rest))))
|
|
||||||
|
|
||||||
(re-frame/reg-event-fx
|
(re-frame/reg-event-fx
|
||||||
::merge-clicked
|
::merge-clicked
|
||||||
@@ -191,10 +157,11 @@
|
|||||||
[:div
|
[:div
|
||||||
[:h1.title "Vendors"]
|
[:h1.title "Vendors"]
|
||||||
[:div.is-pulled-right [:a.button.is-primary.is-outlined {:on-click (dispatch-event [::merge-clicked])} "Merge vendors"]]
|
[:div.is-pulled-right [:a.button.is-primary.is-outlined {:on-click (dispatch-event [::merge-clicked])} "Merge vendors"]]
|
||||||
[vendors-table]
|
[table/vendors-table {:page @(re-frame/subscribe [::vendor-page])
|
||||||
|
:status @(re-frame/subscribe [::status/single ::vendor-page])}]
|
||||||
[merge-vendors-dialog]])])
|
[merge-vendors-dialog]])])
|
||||||
{:component-did-mount (fn []
|
{:component-did-mount #(re-frame/dispatch [::mounted])
|
||||||
(re-frame/dispatch [::mounted]))})])
|
:component-will-unmount #(re-frame/dispatch-sync [::unmounted])})])
|
||||||
|
|
||||||
(defn admin-vendors-page []
|
(defn admin-vendors-page []
|
||||||
[side-bar-layout {:side-bar [admin-side-bar {}
|
[side-bar-layout {:side-bar [admin-side-bar {}
|
||||||
|
|||||||
@@ -17,7 +17,8 @@
|
|||||||
:<- [::subs/query-params]
|
:<- [::subs/query-params]
|
||||||
(fn [[specific-filters vendors-by-id query-params] ]
|
(fn [[specific-filters vendors-by-id query-params] ]
|
||||||
(let [url-filters (-> query-params
|
(let [url-filters (-> query-params
|
||||||
(select-keys #{:name}))]
|
(select-keys #{:name-like})
|
||||||
|
(update :name-like #(some-> % str)))]
|
||||||
(merge url-filters specific-filters ))))
|
(merge url-filters specific-filters ))))
|
||||||
|
|
||||||
(re-frame/reg-sub
|
(re-frame/reg-sub
|
||||||
@@ -34,9 +35,11 @@
|
|||||||
(re-frame/reg-sub
|
(re-frame/reg-sub
|
||||||
::filter-params
|
::filter-params
|
||||||
:<- [::settled-filters]
|
:<- [::settled-filters]
|
||||||
|
:<- [::filters]
|
||||||
:<- [::subs/active-page]
|
:<- [::subs/active-page]
|
||||||
(fn [[filters ap ]]
|
(fn [[settled-filters filters ap ]]
|
||||||
{:name (:name filters)}))
|
(let [filters (or settled-filters filters)]
|
||||||
|
{:name-like (:name-like filters)})))
|
||||||
|
|
||||||
(re-frame/reg-event-fx
|
(re-frame/reg-event-fx
|
||||||
::filters-settled
|
::filters-settled
|
||||||
@@ -62,7 +65,7 @@
|
|||||||
|
|
||||||
[:div.field
|
[:div.field
|
||||||
[:div.control [:input.input {:placeholder "Harry's Food Products"
|
[:div.control [:input.input {:placeholder "Harry's Food Products"
|
||||||
:value @(re-frame/subscribe [::filter :name])
|
:value @(re-frame/subscribe [::filter :name-like])
|
||||||
:on-change (dispatch-value-change [::filter-changed :name])} ]]]])
|
:on-change (dispatch-value-change [::filter-changed :name-like])} ]]]])
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
48
src/cljs/auto_ap/views/pages/admin/vendors/table.cljs
vendored
Normal file
48
src/cljs/auto_ap/views/pages/admin/vendors/table.cljs
vendored
Normal file
@@ -0,0 +1,48 @@
|
|||||||
|
(ns auto-ap.views.pages.admin.vendors.table
|
||||||
|
(:require
|
||||||
|
[re-frame.core :as re-frame]
|
||||||
|
[reagent.core :as reagent]
|
||||||
|
[auto-ap.subs :as subs]
|
||||||
|
[auto-ap.status :as status]
|
||||||
|
[auto-ap.views.components.vendor-dialog :refer [vendor-dialog] :as vendor-dialog]
|
||||||
|
[auto-ap.views.components.grid :as grid]
|
||||||
|
[auto-ap.views.utils :refer [login-url dispatch-value-change dispatch-event bind-field horizontal-field action-cell-width]]
|
||||||
|
[auto-ap.views.components.buttons :as buttons]))
|
||||||
|
|
||||||
|
(re-frame/reg-event-fx
|
||||||
|
::params-changed
|
||||||
|
(fn [{:keys [db]} [_ p]]
|
||||||
|
{:db (assoc db ::params p)}))
|
||||||
|
|
||||||
|
(re-frame/reg-sub
|
||||||
|
::params
|
||||||
|
(fn [db]
|
||||||
|
(-> db ::params)))
|
||||||
|
|
||||||
|
(defn vendors-table [{:keys [status page]}]
|
||||||
|
(let [params @(re-frame/subscribe [::params])
|
||||||
|
accounts @(re-frame/subscribe [::subs/all-accounts-by-id])]
|
||||||
|
|
||||||
|
[grid/grid {:status status
|
||||||
|
:on-params-change (fn [p]
|
||||||
|
(re-frame/dispatch [::params-changed p]))
|
||||||
|
:params params
|
||||||
|
:column-count 4}
|
||||||
|
[grid/controls page]
|
||||||
|
[grid/table {:fullwidth true}
|
||||||
|
[grid/header
|
||||||
|
[grid/row {}
|
||||||
|
[grid/header-cell {} "Name"]
|
||||||
|
[grid/header-cell {} "Email"]
|
||||||
|
[grid/header-cell {} "Default Account"]
|
||||||
|
[grid/header-cell {:style {:width (action-cell-width 1)}}]]]
|
||||||
|
[grid/body
|
||||||
|
(for [v (:data page)]
|
||||||
|
^{:key (str (:id v))}
|
||||||
|
[grid/row {:class (:class v)}
|
||||||
|
[grid/cell {} (:name v)]
|
||||||
|
[grid/cell {} (:email (:primary-contact v))]
|
||||||
|
[grid/cell {} (-> v :default-account :id accounts :name)]
|
||||||
|
[grid/cell {}
|
||||||
|
[buttons/fa-icon {:event [::vendor-dialog/started v]
|
||||||
|
:icon "fa-pencil"}]]])]]]))
|
||||||
Reference in New Issue
Block a user