(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 "Financial 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 "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 "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])}]] [: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])}]]])]]))