User can set up sales queries on their own now.

This commit is contained in:
2022-04-07 08:22:50 -07:00
parent a4c823c9ff
commit 45cf97a480
7 changed files with 288 additions and 224 deletions

View File

@@ -3,9 +3,11 @@
[clojure.string :as str]
[re-frame.core :as re-frame]
[auto-ap.views.pages.admin.clients.form :as form]
[auto-ap.views.utils :refer [action-cell-width date->str]]
[auto-ap.views.utils :refer [action-cell-width date->str with-user]]
[auto-ap.views.components.grid :as grid]
[auto-ap.views.components.buttons :as buttons]))
[auto-ap.views.components.modal :as modal]
[auto-ap.views.components.buttons :as buttons]
[auto-ap.status :as status]))
(re-frame/reg-sub
::specific-params
@@ -17,6 +19,28 @@
(fn [{:keys [db]} [_ p]]
{:db (assoc db ::params p)}))
(re-frame/reg-event-fx
::sales-queries-setup
(fn [_ [_ results]]
{:dispatch [::modal/modal-requested {:title "Sales Queries"
:body [:div [:pre (:message (:setup-sales-queries results))]]}]}))
(re-frame/reg-event-fx
::setup-sales-queries
[with-user]
(fn [{:keys [user]} [_ client-id]]
{:graphql
{:token user
:owns-state {:multi ::setup-sales-queries
:which client-id}
:query-obj {:venia/operation {:operation/type :mutation
:operation/name "SetupSalesQueries"}
:venia/queries [{:query/data [:setup-sales-queries
{:client-id client-id}
[:message]]}]}
:on-success [::sales-queries-setup]}}
))
(re-frame/reg-sub
::params
:<- [::specific-params]
@@ -26,33 +50,37 @@
(defn clients-table [{:keys [page status]}]
[grid/grid {:on-params-change (fn [p]
(re-frame/dispatch [::params-changed p]))
:status status
:params @(re-frame/subscribe [::params])
:column-count 5}
[grid/controls page]
[grid/table {:fullwidth true}
[grid/header
[grid/row {}
[grid/header-cell {} "Name"]
[grid/header-cell {:style {:width "20em"}} "Code"]
[grid/header-cell {} "Locations"]
[grid/header-cell {} "Locked Until"]
[grid/header-cell {} "Email"]
[grid/header-cell {:style {:width (action-cell-width 1)}}]]
]
[grid/body
(for [{:keys [id name email locked-until code locations] :as c} (:data page)]
^{:key (str name "-" id )}
[grid/row {:id id}
[grid/cell {} name]
[grid/cell {} code]
[grid/cell {} (str/join ", " locations)]
[grid/cell {} [:div.tag (or (some-> locked-until date->str)
"Not locked"
(let [states @(re-frame/subscribe [::status/multi ::setup-sales-queries])]
[grid/grid {:on-params-change (fn [p]
(re-frame/dispatch [::params-changed p]))
:status status
:params @(re-frame/subscribe [::params])
:column-count 5}
[grid/controls page]
[grid/table {:fullwidth true}
[grid/header
[grid/row {}
[grid/header-cell {} "Name"]
[grid/header-cell {:style {:width "20em"}} "Code"]
[grid/header-cell {} "Locations"]
[grid/header-cell {} "Locked Until"]
[grid/header-cell {} "Email"]
[grid/header-cell {:style {:width (action-cell-width 2)}}]]
]
[grid/body
(for [{:keys [id name email locked-until code locations]} (:data page)]
^{:key (str name "-" id )}
[grid/row {:id id}
[grid/cell {} name]
[grid/cell {} code]
[grid/cell {} (str/join ", " locations)]
[grid/cell {} [:div.tag (or (some-> locked-until date->str)
"Not locked"
)]]
[grid/cell {} email]
[grid/cell {} [buttons/fa-icon {:event [::form/editing id]
:icon :fa-pencil}]]])]]])
)]]
[grid/cell {} email]
[grid/cell {} [:div.buttons [buttons/fa-icon {:event [::setup-sales-queries id]
:class (status/class-for (get states id))
:icon :fa-dollar}]
[buttons/fa-icon {:event [::form/editing id]
:icon :fa-pencil}]]]])]]]))