Help Garden

Powered by 🌱Roam Garden

{{TODO}} Put this at the top of your file

  • Code
    • (ns starting-point-for-custom-roam
        (:require
         [reagent.core :as r]
         [datascript.core :as d]
         [roam.datascript.reactive :as dr]))
      
    • (defn *page-with-children-by-node-title [name] 
          (dr/pull '[{:block/children ...}
                     :block/string 
                     :block/uid 
                     :block/props
                    ]
                   [:node/title name])
        )
      
    • (defn block-with-children-by-uid [name] 
          (dr/pull '[
                     {:block/children ...}
                     {:block/path ...}
                     :block/string 
                     :block/uid 
                     :block/props
                    ]
                   [:block/uid name])
        )
      
    • 
      (defn all-children [ent]
          (:block/children ent)
        )
      
      (defn controlled-input [my-local-string]
         [:div 
                    "My local string is controlled by the input" 
                    [:li  @my-local-string]
                    
                   [:input {:value @my-local-string
                            :on-change 
                            (fn [event] 
                              (reset! my-local-string 
                                   (.. event -target -value)))}]
                   
                   ]
        )
      
      (declare color)
      
      (defn counter [my-local-number]
                     [:div "I have been clicked"
                   [:button {:on-click 
                             (fn [e] (swap! my-local-number inc))}
                     @my-local-number]
                    " times"]
        )
      
      
    • 
      (def color ["#2EE115" "rgb(0,244,255)" "#F44336"])
      
      ``` [*](((oYL_2lm6B)))
      
    • (defn all-descendents-as-cards [block-entity]
      [:div 
          (doall (for [block (rest (tree-seq :block/uid :block/children block-entity))]
                [:button.bp3-card
                  {:style {:background-color (rand-nth color)}
                   :on-click (fn [e] (js/alert (:block/uid block)))}
                 (:block/string block)]))
              ]
      )
      ``` [*](((Fv9oJp3HV)))
      
    • 
      
      (defn test [{:keys [block-uid]} & args]
        (let [*my-children (dr/pull '[{:block/children ...} 
                            :block/string 
                            :block/uid] 
                                    [:block/uid block-uid])]
          (js/console.log args)
          (fn [& args]
            [:div 
              (doall (for [block (rest (tree-seq :block/uid :block/children @*my-children))]
                [:button.bp3-card
                  {:style {:background-color (rand-nth color)}
                   :on-click (fn [e] (js/alert (:block/uid block)))}
                 (:block/string block)]))
              ])))
      
      (defn test2 [{:keys [block-uid]} & args]
        (let [*my-children (dr/pull '[{:block/_refs ...}
                                      {:block/children ...} 
                            :block/string 
                            :block/uid] 
                            [:node/title "TODO"])]
          (js/console.log args)
          (fn [& args]
            [:div 
              (doall (for [block (rest (tree-seq :block/uid :block/_refs @*my-children))]
                [:button.bp3-card.green
                  {:style {:background-color (rand-nth color)}
                   :on-click (fn [e] (js/alert (:block/uid block)))}
                 (:block/string block)]))
              ])))
      
    • (defn page-by-node-title [name] 
          (dr/pull '[{:block/_refs ...}
                     {:block/refs ...}
                     {:block/children ...}
                     {:block/path ...}
                     :block/string 
                     :block/uid 
                     :block/props
                    ]
                   [:node/title name])
        )
      ``` [*](((N5iOmzEp3)))
      
    • 
      (defn my-view [{:keys [:block/uid] :as this-block}]     
        (let [my-local-string (r/atom "hello")
                my-local-number (r/atom 0)]
            (fn [this-block]
                  [:div.bp3-card 
                   "I am a div"
      
                   ""
                   (pr-str color)
                   (for [x (range 2)]
                   [counter my-local-number])
                   [controlled-input my-local-string]
                   [controlled-input my-local-string]])))
      
      
      (defn last-render [{:keys [:block/uid] :as this-block}]     
        (let [my-local-string (r/atom "hello")
                my-local-number (r/atom 0)]
            (fn [this-block]
                  [:div.bp3-card 
                   "I am a div"
      
                   ""
                   [all-descendents-as-cards 
                    @(*page-with-children-by-node-title "roamhacker")]
                  ])))
      
      
    • (defn random-n-refs [n ent]
          (take n (set (:block/_refs ent))
        ))
      
    • (defn *pull-refs [block-uid]
          (dr/pull '[{:block/_refs ...}
                     :node/title
                     :block/string
                     :block/uid]
                   block-uid)
          
        )
      
    • 
      (defn show-refs [component n x]
      [:div  
       (doall (for [y (take @n (:block/_refs @x))]
        [component y]))]
        )
      
      (defn my-item [data]
          [:div.bp3-card (:block/string data)]
        )
      
      (defn my-random-generator [{:keys [:block/uid] :as this-block} n v]     
        (let [my-local-string (r/atom v)
                my-local-number (r/atom (js/parseInt n))]
            (fn [this-block n v]
                  [:div.bp3-card 
                   "I am a div"
      
                   ""
                   (pr-str v)
                   [counter my-local-number]
                   [controlled-input my-local-string]
                  
                   [show-refs my-item 
                    my-local-number 
                    (*pull-refs [:node/title @my-local-string])]
                   ])))
      
      
  • r/atom gives you a local variable
  • Final function in your namespace is what gets called with roam-render
December 1st, 2020