From c2eb0c61e78a32487dbeb4d479d172a32f4a0d09 Mon Sep 17 00:00:00 2001 From: Bryce Covert Date: Thu, 24 Jan 2019 19:10:07 -0800 Subject: [PATCH] more reorg --- src/cljs/auto_ap/core.cljs | 3 +- .../views/components/admin/side_bar.cljs | 68 ++++++ .../views/components/invoices/side_bar.cljs | 14 +- .../auto_ap/views/components/layouts.cljs | 94 ++++++++ src/cljs/auto_ap/views/main.cljs | 222 +++--------------- src/cljs/auto_ap/views/pages/admin.cljs | 12 +- .../auto_ap/views/pages/admin/clients.cljs | 8 +- src/cljs/auto_ap/views/pages/admin/users.cljs | 8 +- .../auto_ap/views/pages/admin/vendors.cljs | 8 +- src/cljs/auto_ap/views/pages/checks.cljs | 7 +- .../auto_ap/views/pages/paid_invoices.cljs | 10 +- .../auto_ap/views/pages/transactions.cljs | 6 +- .../auto_ap/views/pages/unpaid_invoices.cljs | 35 +-- 13 files changed, 258 insertions(+), 237 deletions(-) create mode 100644 src/cljs/auto_ap/views/components/admin/side_bar.cljs create mode 100644 src/cljs/auto_ap/views/components/layouts.cljs diff --git a/src/cljs/auto_ap/core.cljs b/src/cljs/auto_ap/core.cljs index 34083271..9d7036b8 100644 --- a/src/cljs/auto_ap/core.cljs +++ b/src/cljs/auto_ap/core.cljs @@ -2,7 +2,8 @@ (:require [reagent.core :as reagent] [re-frame.core :as re-frame] [auto-ap.events :as events] - [auto-ap.views.main :refer [page active-page side-bar-layout] ] + [auto-ap.views.main :refer [page active-page] ] + [auto-ap.config :as config] [auto-ap.effects :as effects] [pushy.core :as pushy] diff --git a/src/cljs/auto_ap/views/components/admin/side_bar.cljs b/src/cljs/auto_ap/views/components/admin/side_bar.cljs new file mode 100644 index 00000000..fa3230ef --- /dev/null +++ b/src/cljs/auto_ap/views/components/admin/side_bar.cljs @@ -0,0 +1,68 @@ +(ns auto-ap.views.components.admin.side-bar + (:require [re-frame.core :as re-frame] + [reagent.core :as r] + [clojure.string :as str] + [clojure.spec.alpha :as s] + [cljs-time.core :as c] + [goog.string :as gstring] + [bidi.bidi :as bidi] + [auto-ap.routes :as routes] + [auto-ap.views.utils :refer [active-when dispatch-event bind-field horizontal-field date->str str->date pretty standard]] + [auto-ap.subs :as subs] + [auto-ap.events :as events])) + +(defn admin-side-bar [params & rest] + (let [ap @(re-frame/subscribe [::subs/active-page])] + [:div + [:p.menu-label "General"] + [:p.menu-item + [:a {:href (bidi/path-for routes/routes :admin) , :class (str "item" (active-when ap = :admin))} + [:span {:class "icon"} + [:i {:class "fa fa-tachometer"}]] + [:span {:class "name"} "Dashboard"]]] + + [:p.menu-label "Setup"] + [:ul.menu-list + [:li.menu-item + [:a {:href (bidi/path-for routes/routes :admin-clients) , :class (str "item" (active-when ap = :admin-clients))} + [:span {:class "icon"} + [:i {:class "fa fa-star-o"}]] + + [:span {:class "name"} "Clients"]]] + [:li.menu-item + [:a {:href (bidi/path-for routes/routes :admin-vendors) , :class (str "item" (active-when ap = :admin-vendors))} + [:span {:class "icon"} + [:i {:class "fa fa-star-o"}]] + + [:span {:class "name"} "Vendors"]]] + [:li.menu-item + [:a {:href (bidi/path-for routes/routes :admin-users), :class (str "item" (active-when ap = :admin-users))} + [:span {:class "icon"} + [:i {:class "fa fa-envelope-o"}]] + [:span {:class "name"} "Users"]]] + + + [:li.menu-item + [:a {:href (bidi/path-for routes/routes :admin-yodlee), :class (str "item" (active-when ap = :admin-yodlee))} + [:span {:class "icon"} + [:i {:class "fa fa-envelope-o"}]] + [:span {:class "name"} "Yodlee Link"]]] + + [:ul ]] + [:p.menu-label "History"] + [:ul.menu-list + [:li.menu-item + [:a {:href (bidi/path-for routes/routes :admin-reminders) , :class (str "item" (active-when ap = :admin-reminders))} + [:span {:class "icon"} + [:i {:class "fa fa-star-o"}]] + + [:span {:class "name"} "Reminders"]]]] + [:p.menu-label "Import"] + [:ul.menu-list + [:li.menu-item + [:a {:href (bidi/path-for routes/routes :admin-excel-import) , :class (str "item" (active-when ap = :admin-excel-import))} + [:span {:class "icon"} + [:i {:class "fa fa-download"}]] + + [:span {:class "name"} "Excel Invoices"]]]] + [:div rest]])) diff --git a/src/cljs/auto_ap/views/components/invoices/side_bar.cljs b/src/cljs/auto_ap/views/components/invoices/side_bar.cljs index 8512fc44..2b2ce991 100644 --- a/src/cljs/auto_ap/views/components/invoices/side_bar.cljs +++ b/src/cljs/auto_ap/views/components/invoices/side_bar.cljs @@ -11,8 +11,9 @@ [auto-ap.subs :as subs] [auto-ap.events :as events])) -(defn invoices-side-bar [] +(defn invoices-side-bar [params & rest] (let [ap @(re-frame/subscribe [::subs/active-page])] + [:div [:div [:p.menu-label "Type"] [:ul.menu-list [:li.menu-item @@ -27,7 +28,10 @@ [:span {:class "icon"} [:i {:class "fa fa-envelope-o"}]] [:span {:class "name"} "Paid Invoices"]]]] - [:div {:class "compose has-text-centered"} - [:a {:class "button is-danger is-block is-bold" :href (bidi/path-for routes/routes :index) - :on-click (dispatch-event [::events/modal-status ::user-editing-vendor {:visible? true}])} - [:span {:class "compose"} "New Vendor"]]]])) + ] + [:div + rest] + [:div {:class "compose has-text-centered"} + [:a {:class "button is-danger is-block is-bold" :href (bidi/path-for routes/routes :index) + :on-click (dispatch-event [::events/modal-status ::user-editing-vendor {:visible? true}])} + [:span {:class "compose"} "New Vendor"]]]])) diff --git a/src/cljs/auto_ap/views/components/layouts.cljs b/src/cljs/auto_ap/views/components/layouts.cljs new file mode 100644 index 00000000..11762b16 --- /dev/null +++ b/src/cljs/auto_ap/views/components/layouts.cljs @@ -0,0 +1,94 @@ +(ns auto-ap.views.components.layouts + (:require + [re-frame.core :as re-frame] + [bidi.bidi :as bidi] + [auto-ap.routes :as routes] + [auto-ap.subs :as subs] + [auto-ap.events :as events] + [auto-ap.views.utils :refer [active-when active-when= login-url dispatch-event]] + + [auto-ap.views.components.vendor-dialog :refer [vendor-dialog]])) + +(defn login-dropdown [] + (let [user (re-frame/subscribe [::subs/user]) + menu (re-frame/subscribe [::subs/menu])] + (if @user + [:div {:class (str "navbar-item has-dropdown " (when (get-in @menu [:account :active?]) "is-active"))} + [:a {:class "navbar-link login" :on-click (fn [e] (re-frame/dispatch [::events/toggle-menu :account]))} (:user/name @user)] + [:div {:class "navbar-dropdown"} + [:a {:class "navbar-item"} "My profile"] + (when (= "admin" (:user/role @user)) + [:a {:class "navbar-item" :href (bidi/path-for routes/routes :admin) + :on-click (fn [e] (re-frame/dispatch [::events/toggle-menu :account]))} "Administration"]) + [:hr {:class "navbar-divider"}] + [:a.navbar-item {:on-click (fn [e] (.preventDefault e) (re-frame/dispatch [::events/logout]))} "Logout"]]] + [:a.navbar-item {:href login-url} "Login"]))) + +(defn navbar [ap] + (let [client (re-frame/subscribe [::subs/client]) + clients (re-frame/subscribe [::subs/clients]) + menu (re-frame/subscribe [::subs/menu])] + [:nav {:class "navbar has-shadow"} + [:div {:class "container"} + [:div {:class "navbar-brand"} + [:a {:class "navbar-item", :href "../"} + [:img {:src "/img/logo.png"}]]] + [:div.navbar-menu + [:div.navbar-start + [:a.navbar-item {:class [(active-when ap = :index)] + :href (bidi/path-for routes/routes :index)} + "Home" ] + [:a.navbar-item {:class [(active-when ap #{:unpaid-invoices :paid-invoices})] + :href (bidi/path-for routes/routes :unpaid-invoices)} + "Invoices" ] + [:a.navbar-item {:class [(active-when ap = :checks)] + :href (bidi/path-for routes/routes :checks)} + "Payments" ] + [:a.navbar-item {:class [(active-when ap = :transactions)] + :href (bidi/path-for routes/routes :transactions)} + "Transactions" ]] + [:div {:class "navbar-burger burger", :data-target "navMenu"} + [:span] + [:span] + [:span]] + [:div.navbar-end + [:div { :class (str "navbar-item has-dropdown " (when (get-in @menu [:client :active?]) "is-active"))} + [:a {:class "navbar-link login" :on-click (fn [] (re-frame/dispatch [::events/toggle-menu :client]))} "Client: " (if @client (:name @client) + "All")] + [:div {:class "navbar-dropdown"} + [:a {:class "navbar-item" + :on-click (fn [] (re-frame/dispatch [::events/swap-client nil])) + } "All"] + [:hr {:class "navbar-divider"}] + (for [{:keys [name id] :as client} @clients] + ^{:key id } + [:a {:class "navbar-item" + :on-click (fn [] (re-frame/dispatch [::events/swap-client client])) + } name])]]]] + [login-dropdown]]])) + +(defn footer [] + [:footer {:class "footer"} + [:div {:class "container"} + [:div {:class "content has-text-centered"} + [:p + [:strong "Integreat"]] + [:p + [:a {:class "icon", :href "https://github.com/dansup/bulma-templates"} + [:i {:class "fa fa-github"}]]]]]]) + +(defn side-bar-layout [{:keys [side-bar main ap bottom]}] + (let [ap @(re-frame/subscribe [::subs/active-page])] + [:div + [navbar ap] + [:div {:class "columns ", :id "mail-app"} + [:aside {:class "column is-narrow aside menu hero is-fullheight"} + [:div.main.left-nav + side-bar]] + [:div {:class "column messages hero is-fullheight", :id "message-feed"} + ^{:key (str "active-page-")} + [:div.inbox-messages main]]] + [footer] + bottom + [:div#dz-hidden]])) + diff --git a/src/cljs/auto_ap/views/main.cljs b/src/cljs/auto_ap/views/main.cljs index 59790586..67297650 100644 --- a/src/cljs/auto_ap/views/main.cljs +++ b/src/cljs/auto_ap/views/main.cljs @@ -6,206 +6,19 @@ [auto-ap.subs :as subs] [auto-ap.events :as events] [auto-ap.views.utils :refer [active-when active-when= login-url dispatch-event]] + [auto-ap.views.components.layouts :refer [side-bar-layout]] [auto-ap.views.pages.unpaid-invoices :refer [unpaid-invoices-page]] [auto-ap.views.pages.paid-invoices :refer [paid-invoices-page]] + [auto-ap.views.pages.transactions :refer [transactions-page]] + [auto-ap.views.pages.checks :refer [checks-page]] + [auto-ap.views.pages.admin :refer [admin-page]] + [auto-ap.views.pages.admin.clients :refer [admin-clients-page]] + [auto-ap.views.pages.admin.vendors :refer [admin-vendors-page]] + [auto-ap.views.pages.admin.users :refer [admin-users-page]] [auto-ap.entities.clients :as clients] [auto-ap.views.pages :as pages] [auto-ap.views.components.vendor-dialog :refer [vendor-dialog]])) - - -(defn page->layout [page] - ({:login :blank - :checks :left-panel - :needs-activation :blank - :index :left-panel - :invoices :left-panel - :transactions :left-panel - :import-invoices :left-panel - :unpaid-invoices :left-panel - :paid-invoices :left-panel - :admin :admin-left-panel - :admin-clients :admin-left-panel - :admin-users :admin-left-panel - :admin-excel-import :admin-left-panel - :admin-vendors :admin-left-panel - :admin-yodlee :admin-left-panel - :admin-reminders :admin-left-panel - :new-invoice :blank} page :blank)) - -(defn login-dropdown [] - (let [user (re-frame/subscribe [::subs/user]) - menu (re-frame/subscribe [::subs/menu])] - (if @user - [:div {:class (str "navbar-item has-dropdown " (when (get-in @menu [:account :active?]) "is-active"))} - [:a {:class "navbar-link login" :on-click (fn [e] (re-frame/dispatch [::events/toggle-menu :account]))} (:user/name @user)] - [:div {:class "navbar-dropdown"} - [:a {:class "navbar-item"} "My profile"] - (when (= "admin" (:user/role @user)) - [:a {:class "navbar-item" :href (bidi/path-for routes/routes :admin) - :on-click (fn [e] (re-frame/dispatch [::events/toggle-menu :account]))} "Administration"]) - [:hr {:class "navbar-divider"}] - [:a.navbar-item {:on-click (fn [e] (.preventDefault e) (re-frame/dispatch [::events/logout]))} "Logout"]]] - [:a.navbar-item {:href login-url} "Login"]))) - -(defn navbar [ap] - (let [client (re-frame/subscribe [::subs/client]) - clients (re-frame/subscribe [::subs/clients]) - menu (re-frame/subscribe [::subs/menu])] - [:nav {:class "navbar has-shadow"} - [:div {:class "container"} - [:div {:class "navbar-brand"} - [:a {:class "navbar-item", :href "../"} - [:img {:src "/img/logo.png"}]]] - [:div.navbar-menu - [:div.navbar-start - [:a.navbar-item {:class [(active-when ap #{:unpaid-invoices :paid-invoices})] - :href (bidi/path-for routes/routes :unpaid-invoices)} - "Invoices" ] - [:a.navbar-item {:class [(active-when ap = :checks)] - :href (bidi/path-for routes/routes :checks)} - "Payments" ] - [:a.navbar-item {:class [(active-when ap = :transactions)] - :href (bidi/path-for routes/routes :transactions)} - "Transactions" ]] - [:div {:class "navbar-burger burger", :data-target "navMenu"} - [:span] - [:span] - [:span]] - [:div.navbar-end - [:div { :class (str "navbar-item has-dropdown " (when (get-in @menu [:client :active?]) "is-active"))} - [:a {:class "navbar-link login" :on-click (fn [] (re-frame/dispatch [::events/toggle-menu :client]))} "Client: " (if @client (:name @client) - "All")] - [:div {:class "navbar-dropdown"} - [:a {:class "navbar-item" - :on-click (fn [] (re-frame/dispatch [::events/swap-client nil])) - } "All"] - [:hr {:class "navbar-divider"}] - (for [{:keys [name id] :as client} @clients] - ^{:key id } - [:a {:class "navbar-item" - :on-click (fn [] (re-frame/dispatch [::events/swap-client client])) - } name])]]]] - [login-dropdown]]])) - -(defn footer [] - [:footer {:class "footer"} - [:div {:class "container"} - [:div {:class "content has-text-centered"} - [:p - [:strong "Integreat"]] - [:p - [:a {:class "icon", :href "https://github.com/dansup/bulma-templates"} - [:i {:class "fa fa-github"}]]]]]]) - -(defn side-bar-layout [{:keys [side-bar main ap bottom]}] - (let [ap @(re-frame/subscribe [::subs/active-page])] - [:div - [navbar ap] - [:div {:class "columns ", :id "mail-app"} - [:aside {:class "column is-narrow aside menu hero is-fullheight"} - [:div.main.left-nav - side-bar]] - [:div {:class "column messages hero is-fullheight", :id "message-feed"} - ^{:key (str "active-page-")} - [:div.inbox-messages main]]] - [footer] - bottom - [:div#dz-hidden]])) - -(defmulti layout page->layout) - -(defmethod layout :admin-left-panel [ap] - [side-bar-layout {:side-bar - [:div - [:p.menu-label "General"] - [:p.menu-item - [:a {:href (bidi/path-for routes/routes :admin) , :class (str "item" (active-when ap = :admin))} - [:span {:class "icon"} - [:i {:class "fa fa-tachometer"}]] - [:span {:class "name"} "Dashboard"]]] - - [:p.menu-label "Setup"] - [:ul.menu-list - [:li.menu-item - [:a {:href (bidi/path-for routes/routes :admin-clients) , :class (str "item" (active-when ap = :admin-clients))} - [:span {:class "icon"} - [:i {:class "fa fa-star-o"}]] - - [:span {:class "name"} "Clients"]]] - [:li.menu-item - [:a {:href (bidi/path-for routes/routes :admin-vendors) , :class (str "item" (active-when ap = :admin-vendors))} - [:span {:class "icon"} - [:i {:class "fa fa-star-o"}]] - - [:span {:class "name"} "Vendors"]]] - [:li.menu-item - [:a {:href (bidi/path-for routes/routes :admin-users), :class (str "item" (active-when ap = :admin-users))} - [:span {:class "icon"} - [:i {:class "fa fa-envelope-o"}]] - [:span {:class "name"} "Users"]]] - - - [:li.menu-item - [:a {:href (bidi/path-for routes/routes :admin-yodlee), :class (str "item" (active-when ap = :admin-yodlee))} - [:span {:class "icon"} - [:i {:class "fa fa-envelope-o"}]] - [:span {:class "name"} "Yodlee Link"]]] - - [:ul ]] - [:p.menu-label "History"] - [:ul.menu-list - [:li.menu-item - [:a {:href (bidi/path-for routes/routes :admin-reminders) , :class (str "item" (active-when ap = :admin-reminders))} - [:span {:class "icon"} - [:i {:class "fa fa-star-o"}]] - - [:span {:class "name"} "Reminders"]]]] - [:p.menu-label "Import"] - [:ul.menu-list - [:li.menu-item - [:a {:href (bidi/path-for routes/routes :admin-excel-import) , :class (str "item" (active-when ap = :admin-excel-import))} - [:span {:class "icon"} - [:i {:class "fa fa-download"}]] - - [:span {:class "name"} "Excel Invoices"]]]]] - :main [pages/active-page ap] - :ap ap - :bottom [vendor-dialog {:vendor @(re-frame/subscribe [::subs/user-editing-vendor]) - :save-event [::events/save-vendor] - :change-event [::events/change-nested-form-state [:user-editing-vendor]] - :id ::user-editing-vendor}]}]) - -(defmethod layout :left-panel [ap] - [side-bar-layout {:side-bar [:div [:p.menu-label "Type"] - [:ul.menu-list - [:li.menu-item - [:a.item {:href (bidi/path-for routes/routes :unpaid-invoices) - :class [(active-when ap = :unpaid-invoices)]} - [:span {:class "icon"} - [:i {:class "fa fa-envelope-open-o"}]] - [:span {:class "name"} "Unpaid Invoices"]]] - [:li.menu-item - [:a.item {:href (bidi/path-for routes/routes :paid-invoices) - :class [(active-when ap = :paid-invoices)]} - [:span {:class "icon"} - [:i {:class "fa fa-envelope-o"}]] - [:span {:class "name"} "Paid Invoices"]]]] - [:div {:class "compose has-text-centered"} - [:a {:class "button is-danger is-block is-bold" :href (bidi/path-for routes/routes :index) - :on-click (dispatch-event [::events/modal-status ::user-editing-vendor {:visible? true}])} - [:span {:class "compose"} "New Vendor"]]]] - :main [pages/active-page ap] - :bottom [vendor-dialog {:vendor @(re-frame/subscribe [::subs/user-editing-vendor]) - :save-event [::events/save-vendor] - :change-event [::events/change-nested-form-state [:user-editing-vendor]] - :id ::user-editing-vendor}] - :ap ap}]) - -(defmethod layout :blank [ap] - [:div - ^{:key ap} [pages/active-page ap]]) - (defmulti page (fn [active-page] active-page)) (defmethod page :unpaid-invoices [_] (unpaid-invoices-page)) @@ -213,6 +26,27 @@ (defmethod page :paid-invoices [_] (paid-invoices-page)) +(defmethod page :checks [_] + (checks-page)) + +(defmethod page :transactions [_] + (transactions-page)) + +(defmethod page :admin [_] + (admin-page)) + +(defmethod page :admin-clients [_] + (admin-clients-page)) + +(defmethod page :admin-users [_] + (admin-users-page)) + +(defmethod page :admin-vendors [_] + (admin-vendors-page)) + +(defmethod page :index [_] + [side-bar-layout {:side-bar [:div] + :main [:h1 "Home"]}]) (defn active-page [] (let [ap (re-frame/subscribe [::subs/active-page])] diff --git a/src/cljs/auto_ap/views/pages/admin.cljs b/src/cljs/auto_ap/views/pages/admin.cljs index 1f48b2a4..2cebbf5d 100644 --- a/src/cljs/auto_ap/views/pages/admin.cljs +++ b/src/cljs/auto_ap/views/pages/admin.cljs @@ -4,11 +4,11 @@ [reagent.core :as reagent] [auto-ap.subs :as subs] [auto-ap.events :as events] - [auto-ap.views.utils :refer [login-url]] - [cljs.reader :as edn] - [auto-ap.routes :as routes] - [bidi.bidi :as bidi])) + [auto-ap.views.components.admin.side-bar :refer [admin-side-bar]] + [auto-ap.views.components.layouts :refer [side-bar-layout]] + [auto-ap.views.utils :refer [login-url]])) (defn admin-page [] - [:div - [:h1.title "Admin"]]) + [side-bar-layout {:side-bar [admin-side-bar {}] + :main [:div + [:h1.title "Admin"]]}]) diff --git a/src/cljs/auto_ap/views/pages/admin/clients.cljs b/src/cljs/auto_ap/views/pages/admin/clients.cljs index 8f69c9c3..9c092d2a 100644 --- a/src/cljs/auto_ap/views/pages/admin/clients.cljs +++ b/src/cljs/auto_ap/views/pages/admin/clients.cljs @@ -6,6 +6,8 @@ [auto-ap.events :as events] [auto-ap.entities.clients :as entity] [auto-ap.views.components.address :refer [address-field]] + [auto-ap.views.components.layouts :refer [side-bar-layout]] + [auto-ap.views.components.admin.side-bar :refer [admin-side-bar]] [auto-ap.views.utils :refer [login-url dispatch-event dispatch-value-change bind-field horizontal-field]] [auto-ap.views.components.modal :refer [action-modal]] [cljs.reader :as edn] @@ -109,7 +111,7 @@ [:td name] [:td email]])]])) -(defn admin-clients-page [] +(defn admin-clients-content [] [:div (let [clients (re-frame/subscribe [::subs/clients]) editing-client (:client @(re-frame/subscribe [::subs/admin]))] @@ -239,3 +241,7 @@ ^{:key index} [:li [:strong "* " name] [:button.button {:on-click (dispatch-event [::remove-new-bank-account index])} [:span.icon [:i.fa.fa-times]]]])]]] (when (:saving? editing-client) [:div.is-overlay {:style {"backgroundColor" "rgba(150,150,150, 0.5)"}}])]])]) + +(defn admin-clients-page [] + [side-bar-layout {:side-bar [admin-side-bar {}] + :main [admin-clients-content]}]) diff --git a/src/cljs/auto_ap/views/pages/admin/users.cljs b/src/cljs/auto_ap/views/pages/admin/users.cljs index c07a8706..85361496 100644 --- a/src/cljs/auto_ap/views/pages/admin/users.cljs +++ b/src/cljs/auto_ap/views/pages/admin/users.cljs @@ -7,6 +7,8 @@ [auto-ap.events :as events] [auto-ap.entities.clients :as entity] [auto-ap.views.components.address :refer [address-field]] + [auto-ap.views.components.admin.side-bar :refer [admin-side-bar]] + [auto-ap.views.components.layouts :refer [side-bar-layout]] [auto-ap.views.utils :refer [login-url dispatch-value-change bind-field horizontal-field dispatch-event]] [auto-ap.views.components.modal :refer [modal action-modal]] [auto-ap.utils :refer [by replace-if]] @@ -112,7 +114,7 @@ -(def admin-users-page +(def admin-users-content (with-meta (fn [] [:div @@ -177,3 +179,7 @@ {:component-will-mount #(re-frame/dispatch-sync [::users-mounted {}]) })) +(defn admin-users-page [] + [side-bar-layout {:side-bar [admin-side-bar {}] + :main [admin-users-content]}]) + diff --git a/src/cljs/auto_ap/views/pages/admin/vendors.cljs b/src/cljs/auto_ap/views/pages/admin/vendors.cljs index 8f2179bb..149b9e5c 100644 --- a/src/cljs/auto_ap/views/pages/admin/vendors.cljs +++ b/src/cljs/auto_ap/views/pages/admin/vendors.cljs @@ -9,6 +9,8 @@ [auto-ap.views.components.address :refer [address-field]] [auto-ap.views.components.vendor-dialog :refer [vendor-dialog]] [auto-ap.views.components.modal :refer [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] [auto-ap.views.utils :refer [login-url dispatch-value-change dispatch-event bind-field horizontal-field]] @@ -55,7 +57,7 @@ (vec (concat [dom keys] rest)))) -(defn admin-vendors-page [] +(defn admin-vendors-content [] [(with-meta (fn [] [:div.inbox-messages @@ -78,3 +80,7 @@ :id ::admin-vendor}]])]) {:component-did-mount (fn [] (re-frame/dispatch [::events/mounted]))})]) + +(defn admin-vendors-page [] + [side-bar-layout {:side-bar [admin-side-bar {}] + :main [admin-vendors-content]}]) diff --git a/src/cljs/auto_ap/views/pages/checks.cljs b/src/cljs/auto_ap/views/pages/checks.cljs index 927d5a0d..227b6a08 100644 --- a/src/cljs/auto_ap/views/pages/checks.cljs +++ b/src/cljs/auto_ap/views/pages/checks.cljs @@ -5,6 +5,7 @@ [reagent.core :as reagent] [goog.string :as gstring] [auto-ap.views.components.sorter :refer [sorted-column]] + [auto-ap.views.components.layouts :refer [side-bar-layout]] [auto-ap.views.components.paginator :refer [paginator]] [auto-ap.events :as events] [auto-ap.views.utils :refer [dispatch-event date->str ]] @@ -172,8 +173,7 @@ ]))]]])))) -(def checks-page - +(def checks-content (with-meta (fn [] (let [current-client @(re-frame/subscribe [::subs/client])] @@ -187,3 +187,6 @@ (re-frame/dispatch [::params-change params]))}]])) {:component-will-mount #(re-frame/dispatch-sync [::params-change {}]) })) +(defn checks-page [] + [side-bar-layout {:side-bar [:div] + :main [checks-content]}]) diff --git a/src/cljs/auto_ap/views/pages/paid_invoices.cljs b/src/cljs/auto_ap/views/pages/paid_invoices.cljs index 83ada64e..0355985e 100644 --- a/src/cljs/auto_ap/views/pages/paid_invoices.cljs +++ b/src/cljs/auto_ap/views/pages/paid_invoices.cljs @@ -5,11 +5,11 @@ [auto-ap.events :as events] [auto-ap.views.utils :refer [dispatch-event]] [auto-ap.utils :refer [by replace-if]] - [auto-ap.views.main :refer [side-bar-layout]] + [auto-ap.views.components.layouts :refer [side-bar-layout]] + [auto-ap.views.components.invoices.side-bar :refer [invoices-side-bar]] [auto-ap.views.pages.check :as check] [auto-ap.views.components.invoice-table :refer [invoice-table] :as invoice-table] [auto-ap.views.components.expense-accounts-dialog :as expense-accounts-dialog] - [auto-ap.views.components.invoices.side-bar :refer [invoices-side-bar]] [auto-ap.views.components.vendor-dialog :refer [vendor-dialog]] [auto-ap.subs :as subs])) @@ -27,9 +27,6 @@ (re-frame/reg-event-fx ::params-change (fn [cofx [_ params]] - (println "HERE") - - {:db (-> (:db cofx) (assoc-in [:status :loading] true) (assoc-in [::params] params)) @@ -63,14 +60,11 @@ (dissoc ::change-expense-accounts))}))) (def paid-invoices-content - (with-meta (fn [] (let [current-client @(re-frame/subscribe [::subs/client])] [:div [:h1.title "Paid invoices"] - - [invoice-table {:id :paid :params (re-frame/subscribe [::params]) :invoice-page (re-frame/subscribe [::invoice-page]) diff --git a/src/cljs/auto_ap/views/pages/transactions.cljs b/src/cljs/auto_ap/views/pages/transactions.cljs index afb07c57..1bcfbac6 100644 --- a/src/cljs/auto_ap/views/pages/transactions.cljs +++ b/src/cljs/auto_ap/views/pages/transactions.cljs @@ -7,6 +7,7 @@ [auto-ap.views.components.sorter :refer [sorted-column]] [auto-ap.views.components.modal :refer [action-modal]] [auto-ap.views.components.paginator :refer [paginator]] + [auto-ap.views.components.layouts :refer [side-bar-layout]] [auto-ap.events :as events] [auto-ap.views.utils :refer [dispatch-event date->str bind-field]] [auto-ap.utils :refer [by]] @@ -196,7 +197,7 @@ (fn [db] (-> db ::notification))) -(def transactions-page +(def transactions-content (with-meta (fn [] @@ -235,4 +236,7 @@ (re-frame/dispatch [::params-change params]))}] [manual-yodlee-import-modal]])) {:component-will-mount #(re-frame/dispatch-sync [::params-change {}]) })) +(defn transactions-page [] + [side-bar-layout {:side-bar [:div] + :main [transactions-content]}]) diff --git a/src/cljs/auto_ap/views/pages/unpaid_invoices.cljs b/src/cljs/auto_ap/views/pages/unpaid_invoices.cljs index 17abca60..d000e3b9 100644 --- a/src/cljs/auto_ap/views/pages/unpaid_invoices.cljs +++ b/src/cljs/auto_ap/views/pages/unpaid_invoices.cljs @@ -9,7 +9,7 @@ [auto-ap.entities.invoice :as invoice] [auto-ap.entities.vendors :as vendor] [bidi.bidi :as bidi] - [auto-ap.views.main :refer [side-bar-layout]] + [auto-ap.views.components.layouts :refer [side-bar-layout]] [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]] @@ -681,30 +681,28 @@ 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}]]]]) (def unpaid-invoices-content (with-meta (fn [_] - (let [{:keys [checked print-checks-shown? print-checks-loading? advanced-print-shown? vendor-filter]} @(re-frame/subscribe [::invoice-page]) current-client @(re-frame/subscribe [::subs/client]) {check-results-shown? :shown? pdf-url :pdf-url} @(re-frame/subscribe [::check-results])] [:div [:h1.title "Unpaid invoices"] - [:div.field.has-addons.is-extended - [:p.control [:a.button.is-static "Filter Vendor"]] - [:div.control {:style {:width "500px"}} - [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}]]]] [:div.is-pulled-right [:button.button.is-danger {:on-click (dispatch-event [::new-invoice])} "New Invoice"] @@ -779,7 +777,10 @@ {:component-will-mount #(re-frame/dispatch-sync [::params-change {}]) })) (defn unpaid-invoices-page [] - [side-bar-layout {:side-bar [invoices-side-bar] + [side-bar-layout {:side-bar [invoices-side-bar {} + [:div [:p.menu-label "Vendor"] + [vendor-filter]] + ] :main [unpaid-invoices-content] :bottom [vendor-dialog {:vendor @(re-frame/subscribe [::subs/user-editing-vendor]) :save-event [::events/save-vendor]