mirror of
https://github.com/mruwnik/chicken-master.git
synced 2025-06-08 21:34:43 +02:00
localstorage db
This commit is contained in:
parent
b1889b44b6
commit
5110316617
@ -32,7 +32,13 @@
|
|||||||
(set-item! val (apply fun (get-item val) args))
|
(set-item! val (apply fun (get-item val) args))
|
||||||
(get-item val))
|
(get-item val))
|
||||||
|
|
||||||
|
(defn purge-items []
|
||||||
|
(doseq [item [:stock-products :products :customers :orders :settings]]
|
||||||
|
(remove-item! item))
|
||||||
|
(set-item! :id-counter -1))
|
||||||
|
|
||||||
(defn generate-items []
|
(defn generate-items []
|
||||||
|
(set-item! :settings {})
|
||||||
(set-item! :stock-products {:eggs 22 :milk 32 :cabbage 54 :carrots 11 :cows 32 :ants 21})
|
(set-item! :stock-products {:eggs 22 :milk 32 :cabbage 54 :carrots 11 :cows 32 :ants 21})
|
||||||
(set-item! :id-counter -1)
|
(set-item! :id-counter -1)
|
||||||
|
|
||||||
@ -60,8 +66,6 @@
|
|||||||
flatten
|
flatten
|
||||||
(map #(vector (:id %) %))
|
(map #(vector (:id %) %))
|
||||||
(into {}))))
|
(into {}))))
|
||||||
(if-not (get-item :orders)
|
|
||||||
(generate-items))
|
|
||||||
|
|
||||||
(defn fetch-customers [_]
|
(defn fetch-customers [_]
|
||||||
(get-item :customers))
|
(get-item :customers))
|
||||||
|
@ -6,20 +6,34 @@
|
|||||||
(def debug?
|
(def debug?
|
||||||
^boolean goog.DEBUG)
|
^boolean goog.DEBUG)
|
||||||
|
|
||||||
(def default-settings {:first-day-offset 1 ; which is the first day of the week (add the offset to `day-names`)
|
(defn set-item!
|
||||||
:day-names ["Niedz" "Pon" "Wt" "Śr" "Czw" "Pt" "Sob"] ; how days should be displayed in the calendar view
|
"Set `key' in browser's localStorage to `val`."
|
||||||
:calendar-heading false ; show a header with the names of days
|
[key val]
|
||||||
:show-date true ; display the date for each day
|
(.setItem (.-localStorage js/window) key val))
|
||||||
:show-day-name-with-date true ; add the day name to each date
|
|
||||||
:show-day-add-order true ; Show an add order button in each day
|
|
||||||
|
|
||||||
:show-order-time false ; display the time of each order
|
(defn get-setting
|
||||||
:show-order-notes true ; display notes
|
"Returns value of `key' from browser's localStorage."
|
||||||
:editable-number-inputs false ; only allow number modifications in the edit modal
|
([key]
|
||||||
:hide-fulfilled-orders false
|
(-> js/window (.-localStorage) (.getItem :settings) cljs.reader/read-string (get key)))
|
||||||
|
([key default]
|
||||||
|
(if (nil? (get-setting key))
|
||||||
|
default
|
||||||
|
(get-setting key))))
|
||||||
|
|
||||||
:http-dispatch :http;-xhrio
|
(def default-settings {:first-day-offset (get-setting :first-day-offset 1) ; which is the first day of the week (add the offset to `day-names`)
|
||||||
:backend-url "http://localhost:3000/"
|
:day-names (get-setting :day-names ["Niedz" "Pon" "Wt" "Śr" "Czw" "Pt" "Sob"]) ; how days should be displayed in the calendar view
|
||||||
|
:calendar-heading (get-setting :calendar-heading false) ; show a header with the names of days
|
||||||
|
:show-date (get-setting :show-date true) ; display the date for each day
|
||||||
|
:show-day-name-with-date (get-setting :show-day-name-with-date true) ; add the day name to each date
|
||||||
|
:show-day-add-order (get-setting :show-day-add-order true) ; Show an add order button in each day
|
||||||
|
|
||||||
|
:show-order-time (get-setting :show-order-time false) ; display the time of each order
|
||||||
|
:show-order-notes (get-setting :show-order-notes true) ; display notes
|
||||||
|
:editable-number-inputs (get-setting :editable-number-inputs false) ; only allow number modifications in the edit modal
|
||||||
|
:hide-fulfilled-orders (get-setting :hide-fulfilled-orders false)
|
||||||
|
|
||||||
|
:http-dispatch (get-setting :http-dispatch :http);-xhrio
|
||||||
|
:backend-url (get-setting :backend-url "http://localhost:3000/")
|
||||||
})
|
})
|
||||||
|
|
||||||
(defn- settings [key]
|
(defn- settings [key]
|
||||||
@ -34,6 +48,8 @@
|
|||||||
(assoc db :settings settings))))
|
(assoc db :settings settings))))
|
||||||
|
|
||||||
(defn change-setting [key val]
|
(defn change-setting [key val]
|
||||||
|
(set-item! :settings (assoc (get-setting :settings) key val))
|
||||||
|
(prn (get-setting :settings))
|
||||||
(re-frame/dispatch [::change-setting key val]))
|
(re-frame/dispatch [::change-setting key val]))
|
||||||
|
|
||||||
(defn input [id label opts]
|
(defn input [id label opts]
|
||||||
@ -75,4 +91,14 @@
|
|||||||
[:option {:value :http} "client side mock"]
|
[:option {:value :http} "client side mock"]
|
||||||
[:option {:value :http-xhrio} "re-frame-http-fx"]]
|
[:option {:value :http-xhrio} "re-frame-http-fx"]]
|
||||||
|
|
||||||
(input :backend-url "backend URL" {})])
|
(input :backend-url "backend URL" {})
|
||||||
|
|
||||||
|
[:button {:on-click #(re-frame/dispatch
|
||||||
|
[:chicken-master.events/confirm-action
|
||||||
|
"na pewno wyczyścić?"
|
||||||
|
:chicken-master.events/clear-database])} "Wyczyść bazę"]
|
||||||
|
[:button {:on-click #(re-frame/dispatch
|
||||||
|
[:chicken-master.events/confirm-action
|
||||||
|
"na pewno nowe dane wygenerować?"
|
||||||
|
:chicken-master.events/generate-database])} "Wygeneruj dane"]
|
||||||
|
])
|
||||||
|
@ -119,6 +119,7 @@
|
|||||||
days (into #{} (time/get-weeks day 2))
|
days (into #{} (time/get-weeks day 2))
|
||||||
filtered-orders (->> orders vals (filter (comp days :day)) (group-by :day))]
|
filtered-orders (->> orders vals (filter (comp days :day)) (group-by :day))]
|
||||||
(assoc db
|
(assoc db
|
||||||
|
:loading? nil
|
||||||
:start-date day
|
:start-date day
|
||||||
:current-days (map #(vector % (get filtered-orders %)) (sort days))))))
|
:current-days (map #(vector % (get filtered-orders %)) (sort days))))))
|
||||||
|
|
||||||
@ -144,8 +145,9 @@
|
|||||||
(re-frame/reg-event-fx
|
(re-frame/reg-event-fx
|
||||||
::remove-customer
|
::remove-customer
|
||||||
(fn [_ [_ id]]
|
(fn [_ [_ id]]
|
||||||
{(settings :http-dispatch) (http-request :delete (str "customers/" id)
|
{:dispatch [::start-loading]
|
||||||
:on-success ::process-stock)}))
|
(settings :http-dispatch) (http-request :delete (str "customers/" id)
|
||||||
|
:on-success ::process-stock)}))
|
||||||
|
|
||||||
;;; Storage events
|
;;; Storage events
|
||||||
|
|
||||||
@ -197,13 +199,10 @@
|
|||||||
|
|
||||||
;; Settings
|
;; Settings
|
||||||
|
|
||||||
(re-frame/reg-event-fx
|
(re-frame/reg-event-db
|
||||||
::show-settings
|
::show-settings
|
||||||
(fn [{db :db} _]
|
(fn [db _]
|
||||||
{:db (assoc-in db [:settings :show] true)}))
|
(assoc-in db [:settings :show] true)))
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
(comment
|
(comment
|
||||||
@ -212,7 +211,19 @@
|
|||||||
)
|
)
|
||||||
;;;;;;;; Backend mocks
|
;;;;;;;; Backend mocks
|
||||||
|
|
||||||
|
(re-frame/reg-event-fx
|
||||||
|
::clear-database
|
||||||
|
(fn [_ _]
|
||||||
|
(mocks/purge-items)
|
||||||
|
(.reload js/location)))
|
||||||
|
|
||||||
|
(re-frame/reg-event-fx
|
||||||
|
::generate-database
|
||||||
|
(fn [_ _]
|
||||||
|
(mocks/generate-items)
|
||||||
|
{:fx [[:dispatch [::start-loading]]
|
||||||
|
[:dispatch [::fetch-stock]]
|
||||||
|
[:dispatch [::fetch-orders]]]}))
|
||||||
|
|
||||||
(re-frame/reg-fx
|
(re-frame/reg-fx
|
||||||
:http
|
:http
|
||||||
|
Loading…
x
Reference in New Issue
Block a user