Skip to content

Commit

Permalink
docy snippets added
Browse files Browse the repository at this point in the history
awb99 committed Nov 23, 2024
1 parent c913f70 commit 976ec82
Showing 23 changed files with 364 additions and 47 deletions.
3 changes: 2 additions & 1 deletion .gitignore
Original file line number Diff line number Diff line change
@@ -34,4 +34,5 @@ package-lock.json
shadow-cljs.edn
goldly_bindings_generated.cljs
resources/META-INF
.data
.data
demo/.reval/
3 changes: 2 additions & 1 deletion README.md
Original file line number Diff line number Diff line change
@@ -8,8 +8,9 @@
- as a techml dataset (which gets loaded via transit-json encoding)
- under the hood it uses
- ag-grid
- highcharts.js
- cheetah grid
- highcharts.js
- vega charts
- it also implements its own
- table renderer and
- pixijs based canvas chart renderer.
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
; saved on 2024-11-22 15:42:11
; saved on 2024-11-22 16:13:42
{:content [{:out "",
:id :b0e15f3e-f1be-489a-9595-7ed0f4ed5492,
:id :733e23b3-b1c7-41c2-aded-ba796dc990f5,
:code "(ns demo.notebook.highchart-barcolor\n (:require\n [tablecloth.api :as tc]\n [rtable.plot :as plot]\n [demo.random-bars :refer [random-bar-ds]]\n [demo.env :refer [env]]))",
:ns "demo.notebook.highchart-barcolor",
:result ^{:dali true}
@@ -9,7 +9,7 @@
{:style {:color "grey"}}
"nil"]}}
{:out "",
:id :e6d1c1ae-7e1e-4a3e-b279-d7641b6fe243,
:id :ea0fe39e-6a61-4875-baa5-4ce4f75539e7,
:code "(def ds\n (random-bar-ds 30))",
:ns "demo.notebook.highchart-barcolor",
:result ^{:dali true}
@@ -18,16 +18,16 @@
{:style {:color "deeppink"}}
"#'demo.notebook.highchart-barcolor/ds"]}}
{:out "",
:id :b735448a-3cb9-437a-b95b-3e173c966944,
:id :d2844fe3-2472-46c0-b01f-80c89184a67a,
:code "(def ds-signal \n (tc/add-column ds \n :signal \n (map (fn [p] \n (if (> (rand-int 100) 90 )\n true\n false)) (:close ds))))",
:ns "demo.notebook.highchart-barcolor",
:result ^{:dali true}
{:viewer-fn dali.viewer.hiccup/hiccup,
:data [:span
{:style {:color "deeppink"}}
"#'demo.notebook.highchart-barcolor/ds-signal"]}}
{:out "2024-11-22T20:42:11.805139496Z INFO LOG nuc12 dali.store.file(23,7) - writing .data/public/dali/yBAGa.transit-json\n",
:id :fbbbf899-70b2-4a1e-9eff-914959c005c5,
{:out "2024-11-22T21:13:41.943592325Z INFO LOG nuc12 dali.store.file(23,7) - writing .data/public/dali/iEO4U.transit-json\n",
:id :60a2f59b-364d-466f-85ce-eda9a4adaacc,
:code "(plot/highstock-ds\n env {:style {:width \"600px\"\n :height \"300px\"}\n :charts [{:bar {:type :ohlc\n :mode :candle\n :barcolor {:column :signal\n :color {true \"green-5\"}\n }\n }}\n {:volume :column}]}\n ds-signal)",
:ns "demo.notebook.highchart-barcolor",
:result ^{:dali true}
@@ -41,19 +41,19 @@
:barcolor {:column :signal,
:color {true "green-5"}}}}
{:volume :column}],
:load {:id "yBAGa",
:url "/r/dali/yBAGa.transit-json",
:filename "yBAGa.transit-json",
:load {:id "iEO4U",
:url "/r/dali/iEO4U.transit-json",
:filename "iEO4U.transit-json",
:fmt "transit-json"}}}}
{:out "",
:id :08c986bd-4db7-4e44-80f7-7fcacf8f0d4c,
:id :7fb556c2-7638-40bc-96f8-ef10673ec30c,
:code ";ds-signal\n\n(tc/select-rows ds-signal #(:signal %))",
:ns "demo.notebook.highchart-barcolor",
:result ^{:dali true}
{:viewer-fn dali.viewer.text/text,
:data {:text "_unnamed [2 7]:\n\n| :date | :close | :open | :high | :low | :volume | :signal |\n|-----------------------------|-------------:|-------------:|-------------:|-------------:|---------------:|---------|\n| 2024-10-25T20:42:11.800319Z | 100.03358941 | 100.36587999 | 101.38420713 | 99.38671147 | 92996.90611692 | true |\n| 2024-11-12T20:42:11.800285Z | 102.07740565 | 101.72813023 | 103.21929602 | 101.27371811 | 65394.03152824 | true |\n"}}}],
:meta {:id :9c281118-4924-4917-aea6-bec3691514a5,
:eval-time "2024-11-22T20:42:11.811915254Z",
:data {:text "_unnamed [3 7]:\n\n| :date | :close | :open | :high | :low | :volume | :signal |\n|-----------------------------|-------------:|-------------:|-------------:|-------------:|---------------:|---------|\n| 2024-10-25T21:13:41.924274Z | 99.89753558 | 100.00350906 | 101.26201808 | 98.89499821 | 24610.24185409 | true |\n| 2024-10-29T21:13:41.924266Z | 99.93237554 | 99.55315775 | 101.30158904 | 98.70680411 | 52770.18911772 | true |\n| 2024-11-01T21:13:41.924261Z | 100.84055245 | 100.65342290 | 101.63422997 | 100.06887770 | 66598.30845784 | true |\n"}}}],
:meta {:id :b706c276-040e-4f4f-9561-b62fefb01e4f,
:eval-time "2024-11-22T21:13:42.006656278Z",
:ns "demo.notebook.highchart-barcolor",
:java "19.0.2",
:clojure "1.11.1"}}
3 changes: 2 additions & 1 deletion demo/deps.edn
Original file line number Diff line number Diff line change
@@ -9,7 +9,8 @@
org.pinkgorilla/clj-service {:mvn/version "0.3.20"}
org.pinkgorilla/webly {:mvn/version "0.7.703"} ; build tool
org.pinkgorilla/goldly {:mvn/version "0.7.684"}
org.pinkgorilla/reval {:mvn/version "0.9.171"}
org.pinkgorilla/reval {:mvn/version "0.9.176"}
org.pinkgorilla/docy {:mvn/version "0.0.10"}
;
org.pinkgorilla/ui-tailwind {:mvn/version "0.1.8"} ; tailwind css classes
org.pinkgorilla/ui-site {:mvn/version "0.0.31"} ; site-menu, ipsum
25 changes: 24 additions & 1 deletion demo/resources/demo-config.edn
Original file line number Diff line number Diff line change
@@ -4,7 +4,30 @@
:demo {:clj "demo/notebook/" ; embedded notebooks in jars.
:cljs "demo/notebook/"}}}


:docy {:namespaces [rtable.plot]
:snippets
[;; PLOT
;; Symbols generated via potempkin do not work, we need to
;; use the underlying real function.
{:ns "rtable.snippet.highstock"
:kernel :clj
:label "highstock simple"
:fns ["rtable.plot.highcharts/highstock-ds"]}
{:ns "rtable.snippet.rtable"
:kernel :clj
:label "rtable simple"
:fns ["rtable.plot.rtable/rtable-ds"]}
{:ns "rtable.snippet.agtable"
:kernel :clj
:label "agtable simple"
:fns ["rtable.plot.aggrid/aggrid-ds"]}
{:ns "rtable.snippet.agtable-unicode"
:kernel :clj
:label "agtable unicode"
:fns ["rtable.plot.aggrid/aggrid-ds"]}

]}

}


7 changes: 7 additions & 0 deletions demo/resources/demo-services.edn
Original file line number Diff line number Diff line change
@@ -15,6 +15,13 @@
(clip/ref :permission)
(clip/ref :exts))}

:docy {:start (docy.core/start-docy
{:exts (clip/ref :exts)
:clj (clip/ref :clj-service)
:role nil
:namespaces (:namespaces (:docy (deref (clip/ref :config))))
:snippets (:snippets (:docy (deref (clip/ref :config))))})}


:reval {:start (reval.core/start-reval
(merge {:clj (clip/ref :clj-service)
7 changes: 2 additions & 5 deletions demo/src/demo/page/core.cljs
Original file line number Diff line number Diff line change
@@ -2,14 +2,12 @@
(:require
[re-frame.core :as rf]))


(defn item [text page]
[:div
{:class "hover:bg-blue-400 border rounded cursor-pointer w-64 bg-blue-200 m-5"
:on-click #(rf/dispatch [:bidi/goto page :query-params {}])}
text])


(defn page [_]
[:div.h-screen.w-screen.bg-blue-100
[:grid.grid-cols-2.grid-flow-row.w-full-h-full
@@ -28,8 +26,7 @@
[item "layout" 'demo.page.layout/page]
[item "layout-viewer" 'demo.page.layout-viewer/page]




; docy
[item "docy" 'docy.page/docy-page]
]])

31 changes: 31 additions & 0 deletions demo/src/demo/reval_experiment.clj
Original file line number Diff line number Diff line change
@@ -0,0 +1,31 @@
(ns demo.reval-experiment
(:require
[modular.system]
[reval.dali.eval :refer [dali-eval-blocking]]))


(def s (modular.system/system :reval))

s

(dali-eval-blocking
s
{:kernel :clj
:code "(ns rtable.snippet.rtable
(:require
[rtable.plot :as plot]
[rtable.snippet.data.random-bars :refer [random-bar-ds]]))
(def ds (random-bar-ds 200))
(plot/rtable {:class \"table-head-fixed padding-sm table-red table-striped table-hover\"
:style {:width \"50vw\"
:height \"40vh\"
:border \"3px solid green\"}
:columns [{:path :date :format 'ta.viz.lib.format-date/dt-yyyymmdd-hhmm :max-width \"80px\"}
{:path :close :format 'ta.viz.lib.format-number/fmt-nodigits}
{:path :volume}]}
ds)"})



4 changes: 0 additions & 4 deletions resources/docy/dali-cheetah.md
Original file line number Diff line number Diff line change
@@ -23,7 +23,3 @@ ListGrid({



todo
- rtable plot in reagent-table.
- highcharts gets the data how?
- move in vega?
File renamed without changes.
23 changes: 23 additions & 0 deletions src/rtable/format/format_date.cljs
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
(ns rtable.format.format-date
(:require
[tick.helper :refer [dt-format]]))

(defn dt-yyyymmdd [dt]
;(println "dt-yyyymmdd: " dt)
(if (nil? dt)
""
(if (string? dt)
dt
(dt-format "YYYY-MM-dd" dt)
;(str dt)
)))

(defn dt-yyyymmdd-hhmm [dt]
;(println "dt-yyyymmdd: " dt)
(if (nil? dt)
""
(if (string? dt)
dt
(dt-format "YYYY-MM-dd HH:mm" dt)
;(str dt)
)))
18 changes: 18 additions & 0 deletions src/rtable/format/format_number.cljs
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
(ns rtable.format.format-number
(:require
[pinkgorilla.goog.string :refer [format]]))

(defn format-number [sformat nr]
;(println "fmt-nodigits nr: " nr)
;;(js/isNaN nr)
;(= nr ##NaN)
;(to-fixed nr 1)
(if (nil? nr)
"-"
(if (string? nr)
nr
(format "%.0f" nr))))

(defn fmt-nodigits [nr]
(format-number "%.0f" nr))

10 changes: 6 additions & 4 deletions src/rtable/plot/cheetah.clj
Original file line number Diff line number Diff line change
@@ -4,10 +4,12 @@
[dali.store.file.transit] ; side effects
[dali.store :refer [write]]))

(defn cheetah-ds [{:keys [dali-store]}
{:keys [style class columns]
:or {style {:width "100%" :height "100%"}
class ""}} ds]
(defn cheetah-ds
"plot techml dataset via cheetah grid"
[{:keys [dali-store]}
{:keys [style class columns]
:or {style {:width "100%" :height "100%"}
class ""}} ds]
(create-dali-spec
{:viewer-fn 'rtable.viewer.cheetah/cheetah-ds
:transform-fn 'rtable.transform.cheetah/load-and-transform-cheetah
8 changes: 5 additions & 3 deletions src/rtable/plot/echarts.clj
Original file line number Diff line number Diff line change
@@ -6,9 +6,11 @@
[dali.spec :refer [create-dali-spec]]
[dali.plot.anomaly :as plot]))

(defn echarts [{:keys [style class data]
:or {style {:width "100%" :height "100%"}}
:as opts}]
(defn echarts
"plot data via echats"
[{:keys [style class data]
:or {style {:width "100%" :height "100%"}}
:as opts}]
(create-dali-spec
{:viewer-fn 'rtable.viewer.echarts/echarts
:data {:style style
14 changes: 9 additions & 5 deletions src/rtable/plot/highcharts.clj
Original file line number Diff line number Diff line change
@@ -23,11 +23,15 @@
;(dtype/clone)
(map instant->epoch-ms))))

(defn highstock-ds [{:keys [dali-store]}
{:keys [style class charts]
:or {style {:width "100%" :height "100%"}
class ""}}
ds]
(defn highstock-ds
"plot using highcharts.js/highstock from a techml dataset.
:style and :class apply to the wrapper
charts is our chart-spec spec format."
[{:keys [dali-store]}
{:keys [style class charts]
:or {style {:width "100%" :height "100%"}
class ""}}
ds]
(create-dali-spec
{:viewer-fn 'rtable.viewer.highcharts/highstock
:transform-fn 'rtable.transform.highcharts/load-and-transform-highcharts
10 changes: 6 additions & 4 deletions src/rtable/plot/pixi.clj
Original file line number Diff line number Diff line change
@@ -4,10 +4,12 @@
[dali.store.file.transit] ; side effects
[dali.store :refer [write]]))

(defn pixi-ds [{:keys [dali-store]}
{:keys [style class charts]
:or {style {:width "100%" :height "100%"}
class ""}} ds]
(defn pixi-ds
"plot techml dataset via pixi.js chart renderer"
[{:keys [dali-store]}
{:keys [style class charts]
:or {style {:width "100%" :height "100%"}
class ""}} ds]
(create-dali-spec
{:viewer-fn 'rtable.viewer.pixi/pixi
:transform-fn 'rtable.transform.pixi/load-and-transform-pixi
14 changes: 9 additions & 5 deletions src/rtable/plot/vega.clj
Original file line number Diff line number Diff line change
@@ -24,18 +24,22 @@
(tds/mapseq-reader)
(into [])))

(defn vegalite-ds [{:keys [dali-store]} {:keys [style cols spec] :as opts} ds]
(defn vegalite-ds
"plot techml dataset via vega/vega-lite"
[{:keys [dali-store]} {:keys [style cols spec] :as opts} ds]
(create-dali-spec
{:viewer-fn 'rtable.viewer.vega/vegalite
:data (merge
opts
{:style style
:spec (assoc spec :data {:values (convert-data ds cols)})})}))

(defn vega [{:keys [dali-store]}
{:keys [style]
:or {style {:width "100%" :height "100%"}}
:as opts} data]
(defn vega
"plot techml dataset via vega/vega"
[{:keys [dali-store]}
{:keys [style]
:or {style {:width "100%" :height "100%"}}
:as opts} data]
(create-dali-spec
{:viewer-fn 'rtable.viewer.vega/vega
:data (merge
37 changes: 37 additions & 0 deletions src/rtable/snippet/agtable.clj
Original file line number Diff line number Diff line change
@@ -0,0 +1,37 @@
(ns rtable.snippet.agtable
(:require
[reval.core :refer [*env*]]
[rtable.plot :as plot]
[rtable.snippet.data.random-bars :refer [random-bar-ds]]))

(def ds (random-bar-ds 200))

(def opts
{:style {;:width "800px" :height "600px"
:width "800px" :height "600px"
;:width "100%" :height "100%"
}
:timezone "America/Panama"
:columns [{:field :date}
{:field :open
:cellStyle {:color "red" :background-color "green"}
:resizable true}
{:field :high
:type "rightAligned"
:resizable true
;:valueGetter: p => p.data.athlete
; A Value Getter is a function that gets called for each row to return the Cell Value for a Column.
}
{:field :low :width 70
:cellClass "shaded-class"
:resizable true}
{:field :close :header "C" :resizable true
;:cellClassRules {"bg-blue-500" (fn [p]
; (println "ccr: " p)
; (nil? (.-value p)))}
}
{:field :volume :width 70
:resizable true
:cellStyle {:fontWeight "bold"}}]})

(plot/aggrid-ds *env* opts ds)
Loading

0 comments on commit 976ec82

Please sign in to comment.