diff --git a/.gitignore b/.gitignore index 0fe96a5..3c94ed1 100644 --- a/.gitignore +++ b/.gitignore @@ -8,3 +8,4 @@ out /node_modules /.lein-repl-history /secrets.yml +/doo-index.html diff --git a/Makefile b/Makefile index bc61e3f..ecbafbe 100644 --- a/Makefile +++ b/Makefile @@ -45,4 +45,7 @@ start: @$(MAKE) sass-dev @lein figwheel -.PHONY: help clean build-cljs install sass-dev sass-watch build start +test: + lein doo phantom test + +.PHONY: help clean build-cljs install sass-dev sass-watch build start test diff --git a/README.md b/README.md index fe66625..ab93664 100644 --- a/README.md +++ b/README.md @@ -9,17 +9,17 @@ stack: * language: [clojure](https://clojure.org/) / [clojurescript](https://github.com/clojure/clojurescript) [1] -* view: [reagent](http://reagent-project.github.io/) (react interface) / [hiccup](https://github.com/weavejester/hiccup) +* view: [reagent](http://reagent-project.github.io/) (react interface) * rx / state: [re-frame](https://github.com/day8/re-frame) -* routing: [secretary](https://github.com/gf3/secretary) +* routing: [bidi](https://github.com/juxt/bidi) * development environment: [figwheel](https://github.com/bhauman/lein-figwheel) * css: [sass](http://sass-lang.com/) -* tests: [doo](https://github.com/bensu/doo) +* tests: [doo](https://github.com/bensu/doo) (runner) / [cljs.test](https://github.com/clojure/clojurescript/blob/master/src/main/cljs/cljs/test.cljs) * ci: [drone](https://github.com/drone/drone) [2] @@ -75,16 +75,14 @@ requires filewatcher, see above. watches sass files, then uses sassc in an ephemeral docker container to rebuild when a file changes. also builds sourcemaps. - +the above command assumes that you have [phantomjs](https://www.npmjs.com/package/phantomjs) installed. however, please note that [doo](https://github.com/bensu/doo) can be configured to run cljs.test in many other js environments (phantom, chrome, ie, safari, opera, slimer, node, rhino, or nashorn). ## prod build diff --git a/project.clj b/project.clj index 6a11eea..dfa7408 100644 --- a/project.clj +++ b/project.clj @@ -48,6 +48,7 @@ :output-dir "resources/public/js/compiled/out" :asset-path "js/compiled/out" :source-map-timestamp true + :libs ["src/js"] :foreign-libs [{:file "node_modules/autotrack/autotrack.js" :provides ["autotrack"]}]}} @@ -55,7 +56,10 @@ :source-paths ["src/cljs" "test/cljs"] :compiler {:output-to "resources/public/js/compiled/test.js" :main ulysses.runner - :optimizations :none}}]}} + :optimizations :none + :libs ["src/js"] + :foreign-libs [{:file "node_modules/autotrack/autotrack.js" + :provides ["autotrack"]}]}}]}} :prod {:cljsbuild @@ -66,7 +70,7 @@ :output-to "resources/public/js/compiled/app.js" :optimizations :advanced :closure-defines {goog.DEBUG false} - :externs ["src/externs/extra.externs.js"] + :libs ["src/js"] :foreign-libs [{:file "node_modules/autotrack/autotrack.js" :provides ["autotrack"]}] :pretty-print false}}]}}}) diff --git a/resources/public/index.html b/resources/public/index.html index f0eaad9..45b9ee9 100644 --- a/resources/public/index.html +++ b/resources/public/index.html @@ -7,7 +7,6 @@
- diff --git a/src/cljs/ulysses/lib/packer.cljs b/src/cljs/ulysses/lib/packer.cljs index c404da2..6187d23 100644 --- a/src/cljs/ulysses/lib/packer.cljs +++ b/src/cljs/ulysses/lib/packer.cljs @@ -1,12 +1,11 @@ (ns ulysses.lib.packer (:require [clojure.walk :refer [keywordize-keys]] - [ulysses.utils :refer [map-subels ptr]])) - -(def jsPacker (.-Packer js/extra)) + [ulysses.utils :refer [map-subels ptr]] + [ulysses.extra :refer [Packer textDimensions]])) (defn fit [w h blocks] - (let [p (new jsPacker w h)] + (let [p (new Packer w h)] (->> blocks (sort-by :h) (reverse) @@ -19,12 +18,10 @@ (update block :fit dissoc :used :right :down :w :h)))))) -(def jsTextDimensions (.-textDimensions js/extra)) - (defn text-dimensions [text options] (-> text - (jsTextDimensions (clj->js options)) + (textDimensions (clj->js options)) (js->clj) (keywordize-keys))) diff --git a/src/cljs/ulysses/pages/builder.cljs b/src/cljs/ulysses/pages/builder.cljs index 4e5c386..95a7244 100644 --- a/src/cljs/ulysses/pages/builder.cljs +++ b/src/cljs/ulysses/pages/builder.cljs @@ -14,7 +14,8 @@ [ulysses.lib.packer :as packer] [reagent.core :as r] [clojure.string :as string] - [cljs.pprint :as pprint])) + [cljs.pprint :as pprint] + [ulysses.extra :refer [select_values]])) ;; ---------------------------------------------------------------------------- ; helpers @@ -35,7 +36,7 @@ (dispatch [:builder-filter-faculty-years-uconn (->> e (.-target) - (.select_values js/extra) + (select_values) (js->clj))]))} (map-subels (fn [t] [:option {:value t} (str t "+")]) diff --git a/src/externs/extra.externs.js b/src/externs/extra.externs.js deleted file mode 100644 index 790eb3f..0000000 --- a/src/externs/extra.externs.js +++ /dev/null @@ -1,67 +0,0 @@ -// externs for extra.js - -/** - * @const - */ -var extra = {}; - -// ---------------------------------------------------------------------------- -// Select values -// ---------------------------------------------------------------------------- - -/** - * @param {Element} el - * @return {Array.} - */ -extra.multiselect_values = function(el) {}; - -/** - * @param {Element} el - * @return {string|null} - */ -extra.select_values = function(el) {}; - -// ---------------------------------------------------------------------------- -// Packer -// ---------------------------------------------------------------------------- - -/** - * @param {Int} w - * @param {Int} h - */ -extra.Packer = function(w, h) {}; - -/** - * @param {Int} w - * @param {Int} h - */ -extra.Packer.prototype.init = function(w, h) {}; - -/** - * @param {Array} blocks - */ -extra.Packer.prototype.fit = function(blocks) {}; - -/** - * @param {Object} root - * @param {Int} w - * @param {Int} h - */ -extra.Packer.prototype.findNode = function(root, w, h) {}; - -/** - * @param {Object} node - * @param {Int} w - * @param {Int} h - */ -extra.Packer.prototype.splitNode = function(node, w, h) {}; - -// ---------------------------------------------------------------------------- -// Text dimensions -// ---------------------------------------------------------------------------- - -/** - * @param {string} text - * @param {Object} options - */ -extra.textDimensions = function(text, options) {}; diff --git a/resources/public/js/extra.js b/src/js/extra.js similarity index 97% rename from resources/public/js/extra.js rename to src/js/extra.js index 55499b6..d14d8bc 100644 --- a/resources/public/js/extra.js +++ b/src/js/extra.js @@ -1,10 +1,8 @@ // ulysses extra utility functions -// -// NOTE should be matched with externs in extra.externs.js -// +goog.provide('ulysses.extra') -var extra = (function() { +ulysses.extra = (function() { "use strict"; /**