Files
integreat/src/cljs/auto_ap/views/main.cljs
2023-10-31 22:54:53 -07:00

119 lines
3.6 KiB
Clojure

(ns auto-ap.views.main
(:require
[re-frame.core :as re-frame]
[auto-ap.subs :as subs]
[auto-ap.views.components.layouts :refer [loading-layout]]
[auto-ap.views.pages.unpaid-invoices :refer [unpaid-invoices-page paid-invoices-page all-invoices-page voided-invoices-page]]
[auto-ap.views.pages.import-invoices :refer [import-invoices-page]]
[auto-ap.views.pages.needs-activation :refer [needs-activation-page]]
[auto-ap.views.pages.transactions :refer [transactions-page]]
[auto-ap.views.pages.ledger :refer [ledger-page]]
[auto-ap.views.pages.reports :refer [reports-page]]
[auto-ap.views.pages.error :refer [error-page]]
[auto-ap.views.pages.ledger.balance-sheet :refer [balance-sheet-page]]
[auto-ap.views.pages.ledger.external-import :refer [external-import-page]]
[auto-ap.views.pages.ledger.external-ledger :refer [external-ledger-page]]
[auto-ap.views.pages.ledger.profit-and-loss :refer [profit-and-loss-page]]
[auto-ap.views.pages.ledger.cash-flows :refer [cash-flows-page]]
[auto-ap.views.pages.ledger.profit-and-loss-detail :refer [profit-and-loss-detail-page]]
[auto-ap.views.pages.login :refer [login-page]]
[auto-ap.views.pages.payments :refer [payments-page]]
[auto-ap.views.pages.home :refer [home-page]]
[auto-ap.views.pages.admin.clients :refer [admin-clients-page]]
[auto-ap.views.pages.admin.vendors :refer [admin-vendors-page]]))
(defmulti page (fn [active-page] active-page))
(defmethod page :unpaid-invoices [_]
^{:key :unpaid}
[unpaid-invoices-page {:status :unpaid}])
(defmethod page :import-invoices [_]
(import-invoices-page ))
(defmethod page :reports [_]
(reports-page ))
(defmethod page :paid-invoices [_]
^{:key :paid}
[paid-invoices-page {:status :paid}])
(defmethod page :voided-invoices [_]
^{:key :voided}
[voided-invoices-page {:status :voided}])
(defmethod page :invoices [_]
^{:key :all}
[all-invoices-page {}])
(defmethod page :payments [_]
[payments-page])
(defmethod page :transactions [_]
(transactions-page {}))
(defmethod page :unapproved-transactions [_]
[transactions-page {:approval-status :unapproved}])
(defmethod page :approved-transactions [_]
[transactions-page {:approval-status :approved}])
(defmethod page :requires-feedback-transactions [_]
[transactions-page {:approval-status :requires-feedback}])
(defmethod page :excluded-transactions [_]
[transactions-page {:approval-status :excluded}])
(defmethod page :ledger [_]
(ledger-page))
(defmethod page :profit-and-loss [_]
(profit-and-loss-page))
(defmethod page :cash-flows [_]
(cash-flows-page))
(defmethod page :profit-and-loss-detail [_]
(profit-and-loss-detail-page))
(defmethod page :balance-sheet [_]
(balance-sheet-page))
(defmethod page :admin-clients [_]
(admin-clients-page))
(defmethod page :admin-specific-client [_]
(admin-clients-page))
(defmethod page :admin-vendors [_]
(admin-vendors-page))
(defmethod page :index [_]
(home-page))
(defmethod page :login [_]
[login-page])
(defmethod page :needs-activation [_]
[needs-activation-page])
(defmethod page :external-import-ledger [_]
[external-import-page])
(defmethod page :external-ledger [_]
[external-ledger-page])
(defmethod page :initial-error [_]
[error-page])
(defn active-page []
(let [ap (re-frame/subscribe [::subs/active-page])
current-client (pr-str @(re-frame/subscribe [::subs/selected-clients-raw]))
is-loading? @(re-frame/subscribe [::subs/is-initial-loading?])]
(when @ap
(if is-loading?
[loading-layout]
[:div
^{:key (str @ap "-" current-client)} [page @ap]]))))