diff --git a/project.clj b/project.clj index 8dc13e3c..a2926425 100644 --- a/project.clj +++ b/project.clj @@ -144,8 +144,7 @@ [com.bhauman/rebel-readline-cljs "0.1.4" :exclusions [org.clojure/clojurescript]] [javax.servlet/servlet-api "2.5"]] :plugins [[lein-pdo "0.1.1"]] - :jvm-opts ["-Dconfig=config/dev.edn" "-Dlogback.configurationFile=logback.xml" "-Xms4G" "-Xmx20G" #_#_"-Ddatomic.valcachePath=/mnt/data/datomic-cache" "-Ddatomic.valcacheMaxGb=50"]} - + :jvm-opts ["-Dconfig=config/dev.edn" "-Dlogback.configurationFile=logback.xml" "-Xms4G" "-Xmx20G" ]} :uberjar {:java-cmd "/usr/lib/jvm/java-11-openjdk/bin/java" diff --git a/src/clj/auto_ap/routes/ezcater_xls.clj b/src/clj/auto_ap/routes/ezcater_xls.clj index b7aeb120..71ed8612 100644 --- a/src/clj/auto_ap/routes/ezcater_xls.clj +++ b/src/clj/auto_ap/routes/ezcater_xls.clj @@ -85,7 +85,6 @@ :tip (fmt-amount tip)}] :total (fmt-amount (+ food-total tax - tip (or adjustments 0.0))) :discount (fmt-amount (or adjustments 0.0)) :service-charge (fmt-amount (+ fee commission)) diff --git a/src/clj/auto_ap/solr.clj b/src/clj/auto_ap/solr.clj index b67edfa4..57fc6900 100644 --- a/src/clj/auto_ap/solr.clj +++ b/src/clj/auto_ap/solr.clj @@ -136,7 +136,7 @@ (index-documents-raw [this index xs] (client/post (str (assoc (url/url solr-uri "solr" index "update") - :query {"commitWithin" 60000})) + :query {"commitWithin" 5000})) {:headers {"Content-Type" "application/json"} :socket-timeout 30000 @@ -147,7 +147,7 @@ (index-documents [this index xs] (client/post (str (assoc (url/url solr-uri "solr" index "update") - :query {"commitWithin" 60000})) + :query {"commitWithin" 5000})) {:headers {"Content-Type" "application/json"} :socket-timeout 30000 :connection-timeout 30000 diff --git a/src/cljs/auto_ap/views/pages/ledger/external_ledger.cljs b/src/cljs/auto_ap/views/pages/ledger/external_ledger.cljs index 64b0eb5f..4fa6f330 100644 --- a/src/cljs/auto_ap/views/pages/ledger/external_ledger.cljs +++ b/src/cljs/auto_ap/views/pages/ledger/external_ledger.cljs @@ -13,7 +13,9 @@ [clojure.set :as set] [re-frame.core :as re-frame] [reagent.core :as reagent] - [vimsical.re-frame.fx.track :as track])) + [vimsical.re-frame.fx.track :as track] + [vimsical.re-frame.cofx.inject :as inject] + [auto-ap.views.components.buttons :as buttons])) (defn data-params->query-params [params] {:start (:start params 0) @@ -61,6 +63,29 @@ [::data-page/received ::page (set/rename-keys (:ledger-page result) {:journal-entries :data})])}})) +(re-frame/reg-sub + ::csv-content + (fn [db] + (::csv-content db))) + +(re-frame/reg-event-fx + ::csv-exported + (fn [{:keys [db]} [_ csv]] + {:db (assoc db ::csv-content csv)})) + +(re-frame/reg-event-fx + ::export-csv + [with-user (re-frame/inject-cofx ::inject/sub [::data-page/params ::page])] + (fn [{:keys [user db] ::data-page/keys [params]}] + {:graphql {:token user + :owns-state {:single [::data-page/page ::page]} + :query-obj {:venia/queries [[:ledger-csv + {:filters (data-params->query-params params)} + [:csv_content_b64]]]} + :on-success (fn [result] + [::csv-exported (:csv-content-b64 (:ledger-csv result))])}})) + + (re-frame/reg-event-fx ::unmounted (fn [_ _] @@ -101,31 +126,51 @@ :on-success (fn [result] [::delete-successful result params])}}))) +(defn action-buttons [] + (println "HERE?") + (let [params @(re-frame/subscribe [::data-page/params ::page]) + csv-content @(re-frame/subscribe [::csv-content]) + is-admin? @(re-frame/subscribe [::subs/is-admin?]) + status @(re-frame/subscribe [::status/single [::data-page/page ::page]]) + checked @(re-frame/subscribe [::data-page/checked ::page])] + [:div.buttons + (into [:div.tags] (map (fn [[z {:keys [id external-id]}]] + (if (= "header" z) + [:span.tag.is-medium {:on-click + (dispatch-event [::data-page/remove-check ::page "header"])} + "All visible ledger entries"] + [:span.tag.is-medium external-id + [:button.delete.is-small {:on-click + (dispatch-event [::data-page/remove-check ::page id])}]])) + checked)) + [:button.button.is-danger {:on-click (dispatch-event [::delete-selected params]) + :class (status/class-for @(re-frame/subscribe [::status/single ::delete-selected])) + :disabled (or (status/disabled-for @(re-frame/subscribe [::status/single ::delete-selected])) + (not (seq checked)))} + "Delete selected"] + (when is-admin? + (if csv-content + [:a {:href (str "data:attachment/csv;base64," csv-content) + :target "_blank" + :download (str "ledger.csv")} + "Click here to download"] + [buttons/event-button {:event [::export-csv] + :name "Export" + :class (status/class-for status) + :disabled (status/disabled-for status)}]))])) + (defn ledger-content [] (let [_ @(re-frame/subscribe [::subs/client]) params @(re-frame/subscribe [::data-page/params ::page]) - checked @(re-frame/subscribe [::data-page/checked ::page])] + ] [:div [:h1.title "External Ledger"] [status/status-notification {:statuses [[::status/single ::delete-selected]]}] [:div.is-pulled-right - [:div.buttons - (into [:div.tags ] (map (fn [[z {:keys [id external-id]}]] - (if (= "header" z) - [:span.tag.is-medium {:on-click - (dispatch-event [::data-page/remove-check ::page "header"])} - "All visible ledger entries"] - [:span.tag.is-medium external-id - [:button.delete.is-small {:on-click - (dispatch-event [::data-page/remove-check ::page id])}]])) - checked)) - [:button.button.is-danger {:on-click (dispatch-event [::delete-selected params]) - :class (status/class-for @(re-frame/subscribe [::status/single ::delete-selected])) - :disabled (or (status/disabled-for @(re-frame/subscribe [::status/single ::delete-selected])) - (not (seq checked)))} - "Delete selected"]]] + ] [table/table {:id :ledger - :data-page ::page}]])) + :data-page ::page + :action-buttons [action-buttons]}]])) (defn external-ledger-page [] diff --git a/src/cljs/auto_ap/views/pages/ledger/external_ledger_table.cljs b/src/cljs/auto_ap/views/pages/ledger/external_ledger_table.cljs index f5127975..e276c90f 100644 --- a/src/cljs/auto_ap/views/pages/ledger/external_ledger_table.cljs +++ b/src/cljs/auto_ap/views/pages/ledger/external_ledger_table.cljs @@ -42,16 +42,16 @@ [grid/cell {:class "has-text-right"} (when debit (nf debit ))] [grid/cell {:class "has-text-right"} (when credit (nf credit ))]])]]) -(defn table [{:keys [data-page]}] +(defn table [{:keys [data-page action-buttons]}] (let [{:keys [data params]} @(re-frame/subscribe [::data-page/page data-page]) selected-client @(re-frame/subscribe [::subs/client]) bank-accounts-by-id @(re-frame/subscribe [::subs/bank-accounts-by-id])] [grid/grid {:data-page data-page :check-boxes? true :column-count (if selected-client 7 8)} - [grid/controls data] + [grid/controls (assoc data :action-buttons action-buttons)] [grid/table {:fullwidth true :class ["wrappable"]} - [grid/header + [grid/header [grid/row {:id "header" :entity params} (when-not selected-client @@ -67,6 +67,6 @@ (for [{:keys [id] :as i} (:data data)] ^{:key id} [external-ledger-row {:row i - :selected-client selected-client - :bank-accounts-by-id bank-accounts-by-id}])]]])) + :selected-client selected-client + :bank-accounts-by-id bank-accounts-by-id}])]]]))