reagent/demo/demo.cljs

71 lines
2.2 KiB
Plaintext
Raw Normal View History

2014-01-02 13:04:30 +00:00
(ns demo
2014-01-17 10:12:11 +00:00
(:require [reagent.core :as reagent :refer [atom]]
2014-04-09 14:50:15 +00:00
[reagent.interop :as i :refer-macros [.' .! fvar]]
2014-01-06 11:46:58 +00:00
[clojure.string :as string]
2014-01-21 10:50:08 +00:00
[reagentdemo.page :as page :refer [page-map page link prefix]]
[reagentdemo.common :as common :refer [demo-component]]
2014-01-18 10:31:43 +00:00
[reagentdemo.intro :as intro]
[reagentdemo.news :as news]
2014-01-17 10:12:11 +00:00
[reagent.debug :refer-macros [dbg println]]))
2014-01-02 13:04:30 +00:00
2014-04-09 14:50:15 +00:00
(i/import-react)
2014-01-20 10:37:57 +00:00
(swap! page-map assoc
"index.html" (fvar intro/main)
"news/index.html" (fvar news/main))
(def github {:href "https://github.com/reagent-project/reagent"})
2014-01-22 07:40:04 +00:00
2014-01-07 16:01:28 +00:00
(defn github-badge []
[:a.github-badge
2014-01-22 07:40:04 +00:00
github
2014-01-07 16:01:28 +00:00
[:img {:style {:position "absolute" :top 0 :left 0 :border 0}
2014-01-22 07:40:04 +00:00
:alt "Fork me on GitHub"
:src "https://s3.amazonaws.com/github/ribbons/forkme_left_orange_ff7600.png"}]])
2014-01-07 16:01:28 +00:00
2014-01-02 13:04:30 +00:00
(defn demo []
[:div
[:div.nav
[:ul.nav
[:li.brand [link {:href (fvar intro/main)} "Reagent:"]]
[:li [link {:href (fvar intro/main)} "Intro"]]
[:li [link {:href (fvar news/main)} "News"]]
2014-01-22 07:40:04 +00:00
[:li [:a github "GitHub"]]]]
(let [comp (get @page-map @page (fvar intro/main))]
2014-01-20 10:37:57 +00:00
[comp])
2014-01-09 13:37:11 +00:00
[github-badge]])
2014-01-05 10:16:01 +00:00
2014-01-19 11:13:19 +00:00
(defn ^:export mountdemo [p]
2014-01-27 21:30:42 +00:00
(when p (page/set-start-page p))
2014-01-17 10:12:11 +00:00
(reagent/render-component [demo] (.-body js/document)))
2014-01-05 10:16:01 +00:00
2014-01-19 11:13:19 +00:00
(defn gen-page [p timestamp]
(reset! page p)
(let [body (reagent/render-component-to-string [demo])
2014-01-27 21:30:42 +00:00
title @page/title-atom
load-page (case p "index.html" "" p)]
2014-01-19 11:13:19 +00:00
(str "<!doctype html>
<html>
<head>
<meta charset='utf-8'>
<title>" title "</title>
<meta name='viewport' content='width=device-width, initial-scale=1.0' />
<link rel='stylesheet' href='" (prefix "assets/demo.css") timestamp "'>
</head>
<body>
" body "
<script type='text/javascript'
src='" (prefix "assets/demo.js") timestamp "'></script>
<script type='text/javascript'>
2014-01-27 21:30:42 +00:00
setTimeout(function() {demo.mountdemo('" load-page "')}, 200);
2014-01-19 11:13:19 +00:00
</script>
</body>
</html>")))
(defn ^:export genpages []
(let [timestamp (str "?" (.now js/Date))]
2014-01-20 10:37:57 +00:00
(->> (keys @page-map)
2014-01-19 11:13:19 +00:00
(map #(vector % (gen-page % timestamp)))
(into {})
clj->js)))