Skip to content

Commit

Permalink
- Fixed (bandaged?) JS memory leak created in v0.1.1
Browse files Browse the repository at this point in the history
- Data Board will go into a partial "display mode" when no mouse activity is detected for 60 seconds. This is similar to the effect you get when you hit the display mode toggle on the bottom right. Remove some UI clutter, less to render, etc.
- Added an optional (advanced user) :root-mod key to be in the base card map. This allows Cards to stick to the sides, top or bottom - but applying specific DSL code to the x,y coords. For example you can set :root-mod [[:right -4] [:bottom -5]] and depending on the size of your card (x,y is the top left corner) this would stick the card to the bottom right, no matter what the size of the browser is. :top, :bottom, :left, :right, :middle are all available.
    - to see and example of this - there is now a server-clock screen that tries to keep the clock cards on bottom middle regardless of the size and orientation of the screen. Dynamic size is likely next, but that is slightly trickier with diff use cases. In most scenarios I think that fixed layouts are best. Perhaps it is better to take the Tableau route and have pseudo screen-sizes and each is just a reconfigutation of the coords and dimensions of the content from a "base" screen config
- specialized data types are now strigified when they head to the grid UI to prevent "tag reader" errors - however, if you want to manipulate the native objects from the query - you should be able to access them in a repl via :data/view-name (more on this later!)
  • Loading branch information
ryrobes committed Sep 8, 2024
1 parent 097230b commit b79a6f4
Show file tree
Hide file tree
Showing 156 changed files with 4,031 additions and 2,711 deletions.
4 changes: 3 additions & 1 deletion .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -57,4 +57,6 @@ backend/defs/secrets.edn
!backend/extras/rabbit-kit-outliers/rabbit-kit-outliers.jar
/rvbbit-*
.zprint*
docker-staging/
docker-staging/
frontend/package-lock.json
backend/assets/snaps/*
12 changes: 9 additions & 3 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -258,19 +258,25 @@ Besides the built-in runners of SQL queries and Views (UI) - the combination of
</a>
<p style="margin-top: 10px; font-size: 21px;">Getting Started with RVBBIT ▶</p>
</div>
<div style="width: 48%; text-align: center;">
<div style="width: 48%; text-align: center;">
<a href="https://www.youtube.com/embed/rxYTSI7aenI?si=ZAC0KjDlN0NM2LJZ" target="_blank">
<img src="docs/harezero1.jpg" alt="User Space Kits and Plug-ins" style="width: 100%;">
</a>
<p style="margin-top: 10px; font-size: 21px;">Long-form Getting Started & Overview ▶</p>
</div>
</div>

## Caveats

- Use Engelbart's beautiful invention please 🐁
- Reccommend JDK 17+
- Smattering of various UI jank; being worked on
- Only tested on Chrome ATM (Firefox works somewhat)
- Various UI jank; being worked on
- Lots of bugs and edge cases not sorted out yet
- Limited SQL DB support ATM
Tested with SQLite, Postgres, MySQL, SQL Server, Vertica, Clickhouse, DuckDB
(with various quirks to each as I continute to smooth out the SQL engine)
- Have a laundry list of TODOs, will try and get them posted as issues so I can gauge interest and prioritize
- Have a laundry list of TODOs, will try and get them posted as issues or discussions so I can gauge interest / prioritize
- No concept of users / auth yet
- Meant to be used interally with a team that you trust (open REPLs, open shell access, etc.)
- Several features I had previously tweeted about and are 80% done (mostly working), but were pulled to make my (self-imposed) deadline, will def surface them discussion for priorities as well
Expand Down
Binary file added backend/assets/screen-snaps/big-clock.jpg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file modified backend/assets/screen-snaps/frost-terminal2.jpg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added backend/assets/screen-snaps/server-clock.jpg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file modified backend/assets/screen-snaps/server-stats2.jpg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file modified backend/assets/screen-snaps/winter-theme.jpg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
1 change: 1 addition & 0 deletions backend/assets/vega/us-10m.json

Large diffs are not rendered by default.

1 change: 1 addition & 0 deletions backend/assets/vega/world-110m.json

Large diffs are not rendered by default.

45 changes: 6 additions & 39 deletions backend/defs/config.edn
Original file line number Diff line number Diff line change
Expand Up @@ -9,11 +9,12 @@
{:debug-level 1 ;; for console output. somewhat deprecated.
:hide-sub-and-unsub-alerts? false
:show-query-times? false
:log-atom-sizes? false ;; expensive, only for debugging
:default "./screens/frost-terminal2.edn"
;; ^^ if no screen given in URL, load this one. the "start page" essentially.
;; if this screen can't be read or is nil, you will get a basic blank screen with a default theme
:harvest-on-boot? true ;;false
;; ^^ do a full database sniff for each connection on boot? (generally not needed)
:harvest-on-boot? true
;; ^^ do a full database sniff for each connection on boot? No reason not to unless it is causing issues.
:modes {:pre [:pre
{:style {:color :theme/editor-outer-rim-color
:background-color "#00000000 "
Expand Down Expand Up @@ -526,7 +527,7 @@
[:box :child "group-by dimensions to include"]
[:v-box
:children
(for [dimensions-chunk (partition-all 5 dimensions)]
(for [dimensions-chunk (partition-all 8 dimensions)]
[:h-box
:gap "8px"
:size "auto"
Expand Down Expand Up @@ -621,7 +622,7 @@
:icon "images/snail-shell.svg"}
:clojure2 {:type :nrepl ;; this is an example of some external remote nrepl that you control
:runner {:port 37851 :host "127.0.0.1"}
:when-expr (do
:when-expr (do ;; optional, but you might not want it to show up in the UI if we cant connect
(require '[nrepl.core :as nrepl])
(try
(do
Expand All @@ -630,42 +631,8 @@
(nrepl/message {:op "eval" :code "(+ 1 1)"})))
true)
(catch Exception _ false))) ;; connection refused will throw
:modes [:text :edn :clover :data :terminal]
:modes [:text :edn :clover :data :terminal]
:ext ".clj"
;; :kits {:new-lundberg2 {:when-fn (fn [_ _] ;; return a vector of [:block-id :runner-type :view-id] tuple for things that are "eligible"
;; [[:* :* :*]]) ;;; since this is a canvas level kit, we don't need to filter by panel or view. just say everything and make sure :icon-location is :canvas
;; :output :kit-map
;; :icon-location :canvas
;; :tooltip "Spawn a new view of Lundberg2."
;; :kit-expr (let [tab-name :tab-name
;; panel-key-name (keyword (str "lundberg-" (rand-int 777777)))
;; kit-map {:push-alerts {:body [:box
;; :style {:font-size "33px"
;; :color "orange"}
;; :child "Yeaaahhhhh... that'd be great."]
;; :w 15
;; :seconds 60}
;; :push-assocs {[:panels panel-key-name]
;; {:name "a wild lundberg appears!"
;; :w 8
;; :selected-view :yeaaahhhhh
;; :root [10 10]
;; :h 5
;; :tab tab-name
;; :minimized? false
;; :views {:yeaaahhhhh [:img {:src "https://img-cdn.inc.com/image/upload/w_600,ar_16:9,c_fill,g_auto,q_auto:best/images/panoramic/2C61CEF_533890_jojsbx.webp"
;; :style {:width "100%"
;; :padding "5px"
;; :border-radius "20px"
;; :height "100%"
;; :object-fit "cover"}}]}}}
;; :new-lundberg {:description "please get to work..."
;; :options {:pages? true :search? false :actions? false}
;; :parameters {}
;; :mutates {}
;; :data []}}]
;; kit-map)
;; :icon "ri-database-2-fill"}}
:default (let [clojure-version (clojure-version)
jvm-version (System/getProperty
"java.version")]
Expand Down
1 change: 1 addition & 0 deletions backend/defs/field-attributes.edn
Original file line number Diff line number Diff line change
Expand Up @@ -23,6 +23,7 @@
:low-cardinality? [:and [:> :distinct-count 8] [:<= :distinct-count 15]]
:medium-cardinality? [:and [:> :distinct-count 15] [:<= :distinct-count 30]]
:high-cardinality? [:>= :distinct-count 31]
:reasonable-cardinality? [:< :distinct-count 100]
:is-date? [:= :data-type "date"]
:is-datetime? [:= :data-type "datetime"]
:is-integer? [:= :data-type "integer"]
Expand Down
54 changes: 53 additions & 1 deletion backend/defs/solvers.edn
Original file line number Diff line number Diff line change
@@ -1,4 +1,15 @@
{:colors-of-the-moment {:signal :signal/changed-wallpaper?
{:materialize-bigfoot-sightings-drag-37
{:signal :signal/daily-at-7am
:type :sql
:snapshot? false
:data {:select [:alsonoticed :bfroid :class :county :date :environment :fixed_month :fixed_year
:locationdetails :month :nearestroad :nearesttown :observed :otherstories
:otherwitnesses :run_id :run_time :season :sketch :state :submitted :submitted_date
:timeandconditions :title :url :year]
:from [[:bigfoot_sightings :ii912]]
:page -4
:connection-id "bigfoot-ufos"}}
:colors-of-the-moment {:signal :signal/changed-wallpaper?
:cache? false
:type :flow
:data {:flowmap "node-color-thief-js-webp"
Expand Down Expand Up @@ -168,6 +179,32 @@
:type :clojure
:cache? true
:data (true? (clojure.string/ends-with? :solver/wallpaper-of-the-moment ".png"))}
:materialize-bigfoot-sightings-locations-drag-36
{:signal :signal/daily-at-7am
:type :sql
:snapshot? false
:data {:select [:alsonoticed :bfroid :class :county :cty_abbrev :cty_name :date :environment
:fips_county_code :fips_state_code :fixed_month :fixed_year :housing_units :land_area
:latitude :locationdetails :longitude :month :nearestroad :nearesttown :observed
:otherstories :otherwitnesses :population :run_id :run_time :season :state :state_abbrev
:state_name :submitted :submitted_date :timeandconditions :title :url :water_area :year
:zip_lat :zip_long :zip_name :zipcode]
:from [[:bigfoot_sightings_locations :pp646]]
:page -4
:connection-id "bigfoot-ufos"}}
:materialize-bigfoot-sightings-locations-drag-40
{:signal :signal/daily-at-7am
:type :sql
:snapshot? false
:data {:select [:alsonoticed :bfroid :class :county :cty_abbrev :cty_name :date :environment
:fips_county_code :fips_state_code :fixed_month :fixed_year :housing_units :land_area
:latitude :locationdetails :longitude :month :nearestroad :nearesttown :observed
:otherstories :otherwitnesses :population :run_id :run_time :season :state :state_abbrev
:state_name :submitted :submitted_date :timeandconditions :title :url :water_area :year
:zip_lat :zip_long :zip_name :zipcode]
:from [[:bigfoot_sightings_locations :nn100]]
:page -4
:connection-id "bigfoot-ufos"}}
:materialize-offenses-drag-24 {:signal :signal/daily-at-7am
:type :sql
:snapshot? false
Expand All @@ -191,6 +228,21 @@
image-paths (map (fn [x] (.getPath x)) image-files)
relative-paths (map (fn [x] (.substring x (count (.getPath dir)))) image-paths)]
(str relative-dir (when (seq relative-paths) (rand-nth relative-paths)))))}
:refresh-pg-date-test {:signal :signal/daily-at-9am
:type :clojure
:cache? false
:data (do (ns rvbbit-backend.cruiser
(:require [rvbbit-backend.websockets :as wss]
[rvbbit-backend.pool-party :as ppy]
[rvbbit-backend.sql :as sql]))
(let [conn (get (deref wss/conn-map) "pg-date-test")]
(lets-give-it-a-whirl-no-viz "connections/pg-date-test.edn"
conn
sql/system-db
default-sniff-tests
default-field-attributes
default-derived-fields
default-viz-shapes)))}
:refresh-bigfoot-ufos {:signal :signal/daily-at-9am
:type :clojure
:cache? false
Expand Down
Loading

0 comments on commit b79a6f4

Please sign in to comment.