This commit is contained in:
Bryce Covert
2020-01-05 10:33:58 -08:00
7 changed files with 147 additions and 39 deletions

View File

@@ -5,10 +5,12 @@
[clojure.string :as str]
[auto-ap.subs :as subs]
[auto-ap.events :as main-events]
[auto-ap.forms :as forms]
[auto-ap.events.admin.vendors :as events]
[auto-ap.entities.vendors :as entity]
[auto-ap.views.components.address :refer [address-field]]
[auto-ap.views.components.modal :refer [modal]]
[auto-ap.views.components.vendor-dialog :refer [vendor-dialog]]
[auto-ap.views.components.modal :refer [modal action-modal]]
[auto-ap.views.components.admin.side-bar :refer [admin-side-bar]]
[auto-ap.views.components.layouts :refer [side-bar-layout]]
[clojure.spec.alpha :as s]
@@ -55,6 +57,72 @@
keys (dissoc keys :field :subscription)]
(vec (concat [dom keys] rest))))
(re-frame/reg-event-fx
::merge-clicked
(fn [{:keys [db]} _]
{:db (forms/start-form db ::merge-vendors {})
:dispatch [::main-events/modal-status ::merge-vendors {:visible? true :saving? false}]}))
(re-frame/reg-event-fx
::merge-vendors-complete
(fn [{:keys [db]} _]
{:db (forms/stop-form db ::merge-vendors)
:dispatch-n (list [::main-events/modal-status ::merge-vendors {:visible? false}]
[::events/mounted])}))
(re-frame/reg-event-fx
::merge-submit-clicked
[(forms/in-form ::merge-vendors)]
(fn [{{{:keys [from-id to-id]} :data :as merge-vendors-form} :db :as g} _]
(let [user @(re-frame/subscribe [::subs/token])]
(if (and from-id to-id)
{:db (-> merge-vendors-form
(assoc :status :loading)
(assoc :error nil))
:graphql
{:token user
:query-obj {:venia/operation {:operation/type :mutation
:operation/name "MergeVendors"}
:venia/queries [{:query/data [:merge-vendors
{:from from-id :to to-id}
[]]}]}
:on-success [::merge-vendors-complete]
:on-error [::forms/save-error ::merge-vendors]}}
{:db merge-vendors-form}))))
(defn merge-vendors-dialog []
(let [{:keys [data active? error id]} @(re-frame/subscribe [::forms/form ::merge-vendors])
change-event [::forms/change ::merge-vendors]]
[action-modal {:id ::merge-vendors
:title "Merge Vendors"
:action-text "Merge"
:save-event [::merge-submit-clicked]
:status-from ::merge-vendors}
[:div.field
[:label.label
"From Vendor (will be deleted)"]
[:div.control
[bind-field
[typeahead {:matches (map (fn [x] [(:id x) (:name x)]) @(re-frame/subscribe [::subs/vendors]))
:type "typeahead"
:auto-focus true
:field [:from-id]
:text-field [:from-name]
:event change-event
:subscription data}]]]]
[:div.field
[:label.label
"To Vendor"]
[:div.control
[bind-field
[typeahead {:matches (map (fn [x] [(:id x) (:name x)]) @(re-frame/subscribe [::subs/vendors]))
:type "typeahead"
:field [:to-id]
:text-field [:to-name]
:event change-event
:subscription data}]]]]]))
(defn admin-vendors-content []
[(with-meta
@@ -64,16 +132,18 @@
[:div.notification banner])
(let [vendors (re-frame/subscribe [::subs/vendors])
editing-vendor (:vendor @(re-frame/subscribe [::subs/admin]))]
[:div
[:h1.title "Vendors"]
[:a.button.is-primary.is-large {:on-click (dispatch-event [::merge-clicked])} "Merge vendors"]
[vendors-table]
[:div.is-pulled-right
[:a.button.is-primary.is-large {:on-click (dispatch-event [::main-events/modal-status :auto-ap.views.main/user-editing-vendor {:visible? true}])} "New vendor"]]
])])
[merge-vendors-dialog]
[vendor-dialog {:vendor editing-vendor
:save-event [::events/save]
:change-event ::events/change
:id ::admin-vendor}]])])
{:component-did-mount (fn []
(re-frame/dispatch [::events/mounted]))})])