playing
This commit is contained in:
parent
ffb9fd2167
commit
f7c5d095a9
3 changed files with 40 additions and 36 deletions
|
@ -1,6 +1,5 @@
|
||||||
(ns apintro.core
|
(ns apintro.core
|
||||||
; (:refer-clojure :exclude [atom])
|
(:require [freactive.core :refer [cursor]]
|
||||||
(:require [freactive.core :refer [atom cursor]]
|
|
||||||
[freactive.dom :as dom]
|
[freactive.dom :as dom]
|
||||||
[freactive.animation :as animation]
|
[freactive.animation :as animation]
|
||||||
[apintro.model :refer [init! sets gets swaps]]
|
[apintro.model :refer [init! sets gets swaps]]
|
||||||
|
@ -16,7 +15,7 @@
|
||||||
:vgapi vgapi/initial-state
|
:vgapi vgapi/initial-state
|
||||||
})
|
})
|
||||||
|
|
||||||
(vgapi/init)
|
(vgapi/init :vgapi)
|
||||||
|
|
||||||
(defn on-js-reload []
|
(defn on-js-reload []
|
||||||
;; optionally touch your app-state to force rerendering depending on
|
;; optionally touch your app-state to force rerendering depending on
|
||||||
|
@ -48,7 +47,7 @@
|
||||||
(defn animated-title [text]
|
(defn animated-title [text]
|
||||||
[:h1 {:style
|
[:h1 {:style
|
||||||
{:font-size (rx (str (* 80 @ease1) "px"))
|
{:font-size (rx (str (* 80 @ease1) "px"))
|
||||||
:padding-top (rx (str (* 200 @ease1) "px"))
|
:padding-top (rx (str (* 100 @ease1) "px"))
|
||||||
:opacity (rx (str @ease2))
|
:opacity (rx (str @ease2))
|
||||||
:transform (rx (str "rotate(" @ease3 "deg)"))
|
:transform (rx (str "rotate(" @ease3 "deg)"))
|
||||||
:-webkit-transform (rx (str "rotate(" @ease3 "deg)"))
|
:-webkit-transform (rx (str "rotate(" @ease3 "deg)"))
|
||||||
|
@ -78,21 +77,11 @@
|
||||||
[:div
|
[:div
|
||||||
[animated-title (gets [:title])]
|
[animated-title (gets [:title])]
|
||||||
[:div.project {:style {:font-family "Monaco,monospace" :opacity 0.5}}
|
[:div.project {:style {:font-family "Monaco,monospace" :opacity 0.5}}
|
||||||
(gets [:vgapi :project-id])]]]
|
(gets [:vgapi :project-id])]
|
||||||
|
(rx [vgapi/view (gets [:vgapi])])
|
||||||
|
]]
|
||||||
[page 1 "subtitle" green "#title" "« Back to Title"
|
[page 1 "subtitle" green "#title" "« Back to Title"
|
||||||
[animated-title (gets [:subtitle])]]
|
[animated-title (gets [:subtitle])]]])
|
||||||
])
|
|
||||||
|
|
||||||
(defn view []
|
|
||||||
[:div
|
|
||||||
{:width "100%"
|
|
||||||
:height "100%"
|
|
||||||
:style {:border "1px solid black"}
|
|
||||||
:on-mousemove (fn [e] (sets [:mouse-pos] [(.-clientX e) (.-clientY e)]))
|
|
||||||
}
|
|
||||||
[:h1 (gets [:text])]
|
|
||||||
[:p "Your mouse is at: " (rx (str (gets [:mouse-pos])))]
|
|
||||||
])
|
|
||||||
|
|
||||||
(dom/mount! (.getElementById js/document "root") (ease-view))
|
(dom/mount! (.getElementById js/document "root") (ease-view))
|
||||||
|
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
(ns ^:figwheel-always apintro.model
|
(ns ^:figwheel-always apintro.model
|
||||||
(:refer-clojure :exclude [atom])
|
(:refer-clojure :exclude [atom])
|
||||||
(:require [freactive.core :refer [atom]]))
|
(:require [freactive.core :refer [atom cursor]]))
|
||||||
|
|
||||||
(defonce state (atom {}))
|
(defonce state (atom {}))
|
||||||
|
|
||||||
|
|
|
@ -1,8 +1,10 @@
|
||||||
(ns ^:figwheel-always apintro.vgapi
|
(ns ^:figwheel-always apintro.vgapi
|
||||||
|
(:refer-clojure :exclude [atom])
|
||||||
(:require-macros [cljs.core.async.macros :refer [go]]
|
(:require-macros [cljs.core.async.macros :refer [go]]
|
||||||
[freactive.macros :refer [rx]])
|
[freactive.macros :refer [rx]])
|
||||||
(:require
|
(:require
|
||||||
[apintro.model :refer [gets sets]]
|
[apintro.model :refer [gets sets]]
|
||||||
|
[freactive.animation :as animation]
|
||||||
[cljs-http.client :as http]
|
[cljs-http.client :as http]
|
||||||
[cljs.core.async :refer [<!]]))
|
[cljs.core.async :refer [<!]]))
|
||||||
|
|
||||||
|
@ -12,7 +14,7 @@
|
||||||
(def initial-state
|
(def initial-state
|
||||||
{:color 0
|
{:color 0
|
||||||
:angle 0
|
:angle 0
|
||||||
:volume 1
|
:volume 0
|
||||||
:project-id "vigiglobe-Microsoft"
|
:project-id "vigiglobe-Microsoft"
|
||||||
:msg "Nothing done yet."})
|
:msg "Nothing done yet."})
|
||||||
|
|
||||||
|
@ -23,14 +25,14 @@
|
||||||
(f)
|
(f)
|
||||||
(js/setInterval f n))
|
(js/setInterval f n))
|
||||||
|
|
||||||
(defn get-datas-every [route params interval action]
|
(defn get-datas-every [prefix route params interval action]
|
||||||
(smart-si
|
(smart-si
|
||||||
(fn []
|
(fn []
|
||||||
(go (let [now (.getTime (new js/Date))
|
(go (let [now (.getTime (new js/Date))
|
||||||
from (.toISOString (new js/Date (- now (+ interval (* 60 1000)))))
|
from (.toISOString (new js/Date (- now (+ interval (* 60 1000)))))
|
||||||
to (.toISOString (new js/Date (- now (* 60 1000))))
|
to (.toISOString (new js/Date (- now (* 60 1000))))
|
||||||
response (<! (http/get (str "http://dev.api.vigiglo.be/api" route)
|
response (<! (http/get (str "http://dev.api.vigiglo.be/api" route)
|
||||||
{:query-params (into {:project_id (gets [:vgapi :project-id])
|
{:query-params (into {:project_id (gets [prefix :project-id])
|
||||||
:timeFrom from
|
:timeFrom from
|
||||||
:timeTo to}
|
:timeTo to}
|
||||||
params)}))]
|
params)}))]
|
||||||
|
@ -39,30 +41,32 @@
|
||||||
(get-in response [:body :data]))))))
|
(get-in response [:body :data]))))))
|
||||||
interval))
|
interval))
|
||||||
|
|
||||||
(defn get-volume []
|
(defn get-volume [prefix]
|
||||||
(get-datas-every
|
(get-datas-every
|
||||||
|
prefix
|
||||||
"/statistics/v1/volume" {} 1000
|
"/statistics/v1/volume" {} 1000
|
||||||
(fn [res]
|
(fn [res]
|
||||||
(let [new-size (second (first (:messages res)))]
|
(let [new-size (second (first (:messages res)))]
|
||||||
(sets [:msg] (str new-size))
|
(sets [prefix :msg] (str new-size))
|
||||||
(sets [:volume] new-size)))))
|
(sets [prefix :volume] new-size)))))
|
||||||
|
|
||||||
(defn get-messages []
|
(defn get-messages [prefix]
|
||||||
(let [interval 1000]
|
(let [interval 1000]
|
||||||
(get-datas-every
|
(get-datas-every
|
||||||
|
prefix
|
||||||
"/content/v1/messages" {:limit (* 20 (/ interval 100))} interval
|
"/content/v1/messages" {:limit (* 20 (/ interval 100))} interval
|
||||||
(fn [res]
|
(fn [res]
|
||||||
(let [now (.getTime (new js/Date))]
|
(let [now (.getTime (new js/Date))]
|
||||||
(sets [:msg-time] now)
|
(sets [prefix :msg-time] now)
|
||||||
(sets [:msg-refresh] (+ interval now))
|
(sets [prefix :msg-refresh] (+ interval now))
|
||||||
(sets [:messages] res))))))
|
(sets [prefix :messages] res))))))
|
||||||
|
|
||||||
;; ------------------------------------------------------------------------------
|
;; ------------------------------------------------------------------------------
|
||||||
;; Init
|
;; Init
|
||||||
;; ------------------------------------------------------------------------------
|
;; ------------------------------------------------------------------------------
|
||||||
(defn init []
|
(defn init [prefix]
|
||||||
(get-volume)
|
; (get-volume prefix)
|
||||||
(get-messages)
|
(get-messages prefix)
|
||||||
{})
|
{})
|
||||||
|
|
||||||
;; ------------------------------------------------------------------------------
|
;; ------------------------------------------------------------------------------
|
||||||
|
@ -84,12 +88,23 @@
|
||||||
;; View
|
;; View
|
||||||
;; ------------------------------------------------------------------------------
|
;; ------------------------------------------------------------------------------
|
||||||
(defn view-tweets [state]
|
(defn view-tweets [state]
|
||||||
[:div "tweets"])
|
(let [ease (animation/easer 1.0)]
|
||||||
|
[:div {:style {:text-align "left"
|
||||||
|
:line-height "2em"
|
||||||
|
:opacity (rx @ease)
|
||||||
|
:font-family "Futura, sans-serif"}
|
||||||
|
:node/on-attached (fn [node callback]
|
||||||
|
(animation/start-easing! ease 1.0 0.0 1000 animation/quad-in callback))
|
||||||
|
}
|
||||||
|
[:ul
|
||||||
|
(for [tweet (:messages state)]
|
||||||
|
[:li (:text tweet)])]]))
|
||||||
|
|
||||||
(defn view-volume [state]
|
(defn view-volume [state]
|
||||||
[:div "volume"])
|
[:div
|
||||||
|
(str "volume: " (:volume state))])
|
||||||
|
|
||||||
(defn view [state]
|
(defn view [state]
|
||||||
[:div
|
[:div
|
||||||
[view-volume]
|
[view-volume state]
|
||||||
[view-tweets]])
|
[view-tweets state]])
|
||||||
|
|
Loading…
Reference in a new issue