Skip to content

Commit

Permalink
dali.transform.load load-edn load-json
Browse files Browse the repository at this point in the history
  • Loading branch information
awb99 committed Nov 9, 2024
1 parent 34b40b5 commit 7fcf6d2
Show file tree
Hide file tree
Showing 6 changed files with 70 additions and 2 deletions.
2 changes: 2 additions & 0 deletions demo/resources/public/person.edn
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
{:first-name "Walter"
:last-name "Schlemmel"}
7 changes: 7 additions & 0 deletions demo/src/demo/page/saying.cljs
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
(ns demo.page.saying
(:require
[reagent.core :as r]
[dali.viewer :refer [viewer2]]
[dali.cljviewer :refer [clj-viewer]]
[dali.container :refer [container-dimension]]
;[dali.error-boundary :refer [error-boundary]]
Expand All @@ -27,6 +28,12 @@
[clj-viewer {:fun 'demo.service.image/sun
:args []}]

[:h1 "viewer with edn load"]
[viewer2
{:viewer-fn 'demo.person/person
:transform-fn 'dali.transform.load/load-edn
:data {:url "/r/person.edn"}}]

; error boundary is not yet working
;[error-boundary [bad-component] ]
])
Expand Down
4 changes: 4 additions & 0 deletions demo/src/demo/person.cljs
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
(ns demo.person)

(defn person [{:keys [first-name last-name]}]
[:p "FirstName: " first-name " LastName: " last-name])
2 changes: 2 additions & 0 deletions deps.edn
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,9 @@
com.taoensso/telemere {:mvn/version "1.0.0-beta25"}
org.pinkgorilla/timbre {:mvn/version "0.0.7"}
de.otto/nom {:mvn/version "0.3.0"}
funcool/promesa {:mvn/version "11.0.674"}
org.clojure/data.codec {:mvn/version "0.1.1"} ; image base64 encoding
cljs-ajax/cljs-ajax {:mvn/version "0.8.4"} ; ajax http get/post/put/delete
org.pinkgorilla/clj-service {:mvn/version "0.3.20"}}

:aliases
Expand Down
6 changes: 4 additions & 2 deletions resources/ext/dali.edn
Original file line number Diff line number Diff line change
Expand Up @@ -5,17 +5,19 @@
:cljs-namespace [dali.viewer
dali.cljviewer
dali.container
dali.transform.load
dali.util.color
dali.error-boundary
; viewers
dali.viewer.hiccup
dali.viewer.text
dali.viewer.nom]
:cljs-ns-bindings {'dali.viewer {'viewer dali.viewer/viewer
:cljs-ns-bindings {'dali.transform.load {'load-edn dali.transform.load/load-edn
'load-json dali.transform.load/load-json}
'dali.viewer {'viewer dali.viewer/viewer
'viewer2 dali.viewer/viewer2}
'dali.cljviewer {'clj-viewer dali.cljviewer/clj-viewer}
'dali.container {'container-dimension dali.container/container-dimension}

'dali.util.color {'set-color dali.util.color/set-color}
; viewers
'dali.viewer.text {'text-exception dali.viewer.text/text-exception
Expand Down
51 changes: 51 additions & 0 deletions src/dali/transform/load.cljs
Original file line number Diff line number Diff line change
@@ -0,0 +1,51 @@
(ns dali.transform.load
(:require
[taoensso.timbre :refer-macros [info warn error]]
[promesa.core :as p]
[ajax.core :as ajax]
[clojure.edn :as edn]))

(defn wrap-promise
[AJAX-TYPE url params]
(p/create
(fn [resolve reject]
(AJAX-TYPE url
(merge params
{:handler (fn [response]
(resolve response))
:error-handler (fn [error]
(reject error))})))))

(defn GET
([url] (GET url {}))
([url params] (wrap-promise ajax/GET url params)))

(defn parse-edn [s]
(if (string? s)
(edn/read-string s)
s))

(defn load-edn [{:keys [url] :as opts}]
(info "loading edn from url: " url " opts: " opts)
(let [load-promise (GET url)]
(-> load-promise
(p/then (fn [data]
(info "url " url " loaded successfully. ")
(parse-edn data)))
(p/catch (fn [err]
(error "could not load edn from url " url " err: " err))))))

(defn parse-json [s]
(-> s js/JSON.parse js->clj))

(defn load-json [{:keys [url] :as opts}]
(info "loading json from url: " url " opts: " opts)
(let [load-promise (GET url)]
(-> load-promise
(p/then (fn [data]
(info "url " url " loaded successfully. ")
(parse-json data)))
(p/catch (fn [err]
(error "could not load json from url " url " err: " err))))))


0 comments on commit 7fcf6d2

Please sign in to comment.