From fc9f45b84744035988dfb31d4f0a889a40e5bb19 Mon Sep 17 00:00:00 2001 From: Bryce Covert Date: Wed, 30 Sep 2020 07:11:09 -0700 Subject: [PATCH] manual ledger entries delete experience --- src/clj/auto_ap/graphql.clj | 6 ++++ src/clj/auto_ap/graphql/ledger.clj | 3 ++ .../views/pages/ledger/external_ledger.cljs | 28 +++++++++++++++++-- .../pages/ledger/external_ledger_table.cljs | 10 ++++--- 4 files changed, 40 insertions(+), 7 deletions(-) diff --git a/src/clj/auto_ap/graphql.clj b/src/clj/auto_ap/graphql.clj index 980bb571..7bd0bd00 100644 --- a/src/clj/auto_ap/graphql.clj +++ b/src/clj/auto_ap/graphql.clj @@ -829,6 +829,11 @@ :args {:filters {:type :transaction_filters} :ids {:type '(list :id)}} :resolve :mutation/unapprove-transactions} + + :delete_external_ledger {:type :message + :args {:filters {:type :ledger_filters} + :ids {:type '(list :id)}} + :resolve :mutation/delete-external-ledger} :delete_transactions {:type :message :args {:filters {:type :transaction_filters} :ids {:type '(list :id)}} @@ -1175,6 +1180,7 @@ :mutation/edit-invoice gq-invoices/edit-invoice :mutation/edit-transaction gq-transactions/edit-transaction :mutation/unapprove-transactions gq-transactions/unapprove-transactions + :mutation/delete-external-ledger gq-ledger/delete-external-ledger :mutation/delete-transactions gq-transactions/delete-transactions :mutation/upsert-transaction-rule gq-transaction-rules/upsert-transaction-rule :test-transaction-rule gq-transaction-rules/test-transaction-rule diff --git a/src/clj/auto_ap/graphql/ledger.clj b/src/clj/auto_ap/graphql/ledger.clj index 3402d39c..3d20a30b 100644 --- a/src/clj/auto_ap/graphql/ledger.clj +++ b/src/clj/auto_ap/graphql/ledger.clj @@ -205,6 +205,9 @@ (catch Exception e (assoc entry :error (.getMessage e)))))) +(defn delete-external-ledger [context args value] + ) + (defn import-ledger [context args value] (assert-admin (:id context)) (lc/with-context {:area "import ledger"} 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 da1392ce..4cfdaf2c 100644 --- a/src/cljs/auto_ap/views/pages/ledger/external_ledger.cljs +++ b/src/cljs/auto_ap/views/pages/ledger/external_ledger.cljs @@ -2,9 +2,14 @@ (:require [auto-ap.subs :as subs] [auto-ap.views.components.layouts :refer [side-bar-layout]] [auto-ap.views.pages.data-page :as data-page] - [auto-ap.views.pages.ledger.side-bar :as side-bar :refer [ledger-side-bar]] [auto-ap.views.pages.ledger.external-ledger-table :as table] - [auto-ap.views.utils :refer [with-user]] + [auto-ap.views.pages.ledger.side-bar + :as + side-bar + :refer + [ledger-side-bar]] + [auto-ap.views.utils :refer [with-user dispatch-event]] + [auto-ap.status :as status] [clojure.set :as set] [re-frame.core :as re-frame] [reagent.core :as reagent] @@ -71,9 +76,26 @@ (defn ledger-content [] - (let [current-client @(re-frame/subscribe [::subs/client])] + (let [current-client @(re-frame/subscribe [::subs/client]) + checked @(re-frame/subscribe [::data-page/checked ::page])] [:div [:h1.title "External Ledger"] + [: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 true #_(or (status/disabled-for @(re-frame/subscribe [::status/single ::delete-selected])) + (not (seq checked)))} + "Delete selected"]]] [table/table {:id :ledger :data-page ::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 f94b945a..f0c838cf 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 @@ -13,7 +13,7 @@ (defn external-ledger-row [{{:keys [client vendor alternate-description status date amount id source external-id line-items] :as i} :row :keys [selected-client accounts-by-id bank-accounts-by-id]}] [:<> - [grid/row {:class (:class i) :id id} + [grid/row {:class (:class i) :id id :checkable? true :entity i} (when-not selected-client [grid/cell {} (:name client)]) [grid/cell {} source ] @@ -31,7 +31,7 @@ :let [account (or (accounts-by-id (:id account)) (bank-accounts-by-id (:id account)))]] ^{:key id} - [grid/row {} + [grid/row {:checkable? false} (when-not selected-client [grid/cell {} ]) [grid/cell {} ] @@ -46,16 +46,18 @@ [grid/cell {:class "has-text-right"} (when credit (nf credit ))]])]]) (defn table [{:keys [id data-page status vendors on-check-changed expense-event]}] - (let [{:keys [data status]} @(re-frame/subscribe [::data-page/page data-page]) + (let [{:keys [data status params]} @(re-frame/subscribe [::data-page/page data-page]) selected-client @(re-frame/subscribe [::subs/client]) accounts-by-id @(re-frame/subscribe [::subs/accounts-by-id selected-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/table {:fullwidth true :class ["wrappable"]} [grid/header - [grid/row {} + [grid/row {:id "header" + :entity params} (when-not selected-client [grid/sortable-header-cell {:sort-key "client" :sort-name "Client"} "Client"]) [grid/sortable-header-cell {:sort-key "source" :sort-name "Source" :style {:width "10em"}} "Source"]