Files
integreat/src/cljs/auto_ap/views/pages/ledger/side_bar.cljs
2020-09-01 17:07:03 -07:00

80 lines
3.9 KiB
Clojure

(ns auto-ap.views.pages.ledger.side-bar
(:require [auto-ap.routes :as routes]
[auto-ap.subs :as subs]
[auto-ap.views.components.date-range-filter :refer [date-range-filter]]
[auto-ap.views.components.number-filter :refer [number-filter]]
[auto-ap.views.components.typeahead :refer [typeahead-entity]]
[auto-ap.views.pages.data-page :as data-page]
[auto-ap.views.utils :refer [active-when]]
[bidi.bidi :as bidi]
[re-frame.core :as re-frame]))
(defn ledger-side-bar [{:keys [data-page]}]
(let [ap @(re-frame/subscribe [::subs/active-page])
user @(re-frame/subscribe [::subs/user])
accounts @(re-frame/subscribe [::subs/accounts])]
[:div
[:ul.menu-list
[:li.menu-item
[:a.item {:href (bidi/path-for routes/routes :ledger)
:class [(active-when ap = :ledger)]}
[:span {:class "icon icon-receipt" :style {:font-size "25px"}}]
[:span {:class "name"} "Register"]]]
[:li.menu-item
[:a.item {:href (bidi/path-for routes/routes :profit-and-loss)
:class [(active-when ap = :profit-and-loss)]}
[:span {:class "icon icon-performance-increase-1" :style {:font-size "25px"}}]
[:span {:class "name"} "Profit & Loss"]]]
[:li.menu-item
[:a.item {:href (bidi/path-for routes/routes :balance-sheet)
:class [(active-when ap = :balance-sheet)]}
[:span {:class "icon icon-accounting-abacus" :style {:font-size "25px"}}]
[:span {:class "name"} "Balance Sheet"]]]
(when (= "admin" (:user/role user))
[:li.menu-item
[:a.item {:href (bidi/path-for routes/routes :external-import-ledger)
:class [(active-when ap = :external-import-ledger)]}
[:span.icon [:i {:class "fa fa-download"}]]
[:span {:class "name"} "External Import"]]])
(when (= :ledger ap)
[:div
[:p.menu-label "Bank Account"]
[:div
[typeahead-entity {:matches @(re-frame/subscribe [::subs/bank-accounts])
:match->text :name
:include-keys [:name :id]
:type "typeahead-entity"
:on-change #(re-frame/dispatch [::data-page/filter-changed data-page :bank-account %])
:value @(re-frame/subscribe [::data-page/filter data-page :bank-account])}]]
[:p.menu-label "Vendor"]
[:div
[typeahead-entity {:matches @(re-frame/subscribe [::subs/searchable-vendors])
:on-change #(re-frame/dispatch [::data-page/filter-changed data-page :vendor %])
:include-keys [:name :id]
:match->text :name
:type "typeahead-entity"
:value @(re-frame/subscribe [::data-page/filter data-page :vendor])}]]
[:p.menu-label "Account"]
[:div
[typeahead-entity {:matches accounts
:match->text (fn [x ] (str (:numeric-code x) " - " (:name x)))
:include-keys [:name :id :numeric-code]
:type "typeahead-entity"
:on-change #(re-frame/dispatch [::data-page/filter-changed data-page :account %])
:value @(re-frame/subscribe [::data-page/filter data-page :account])}]]
[:p.menu-label "Amount"]
[:div
[number-filter
{:on-change-event [::data-page/filter-changed data-page :amount-range]
:value @(re-frame/subscribe [::data-page/filter data-page :amount-range])}]]
[:p.menu-label "Date Range"]
[:div
[date-range-filter
{:on-change-event [::data-page/filter-changed data-page :date-range]
:value @(re-frame/subscribe [::data-page/filter data-page :date-range])}]]])]]))