From 5d7379ec321385a778ffb5565d8d1c2480b392d2 Mon Sep 17 00:00:00 2001 From: Andrey Antukh Date: Mon, 21 Dec 2015 19:16:02 +0200 Subject: [PATCH] Add basic color picker impl. --- frontend/uxbox/ui/colorpicker.cljs | 60 ++++++++++++++++++ frontend/uxbox/ui/dashboard/colors.cljs | 8 ++- frontend/uxbox/ui/util.cljs | 4 +- .../public/images/colorspecrum-400x300.png | Bin 0 -> 28698 bytes 4 files changed, 69 insertions(+), 3 deletions(-) create mode 100644 frontend/uxbox/ui/colorpicker.cljs create mode 100644 resources/public/images/colorspecrum-400x300.png diff --git a/frontend/uxbox/ui/colorpicker.cljs b/frontend/uxbox/ui/colorpicker.cljs new file mode 100644 index 0000000000..17f6bebb62 --- /dev/null +++ b/frontend/uxbox/ui/colorpicker.cljs @@ -0,0 +1,60 @@ +(ns uxbox.ui.colorpicker + (:require [sablono.core :as html :refer-macros [html]] + [rum.core :as rum] + [cats.labs.lens :as l] + [goog.events :as events] + [uxbox.ui.mixins :as mx] + [uxbox.ui.util :as util]) + (:import goog.events.EventType)) + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; Color Picker +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + +(defn on-click-handler + [e own callback] + (let [canvas (util/get-ref-dom own "colorpicker") + context (.getContext canvas "2d") + brect (.getBoundingClientRect canvas) + ox (.-left brect) + oy (.-top brect) + x (- (.-pageX e) ox) + y (- (.-pageY e) oy) + image (.getImageData context x y 1 1) + r (aget (.-data image) 0) + g (aget (.-data image) 1) + b (aget (.-data image) 2)] + (callback {:hex (util/rgb->hex [r g b]) + :rgb [r g b]}))) + +(defn colorpicker-render + [own callback] + (html + [:canvas + {:width "400" + :height "300" + :on-click #(on-click-handler % own callback) + :id "colorpicker" + :ref "colorpicker"}])) + +(defn colorpicker-did-mount + [own] + (let [canvas (util/get-ref-dom own "colorpicker") + context (.getContext canvas "2d") + img (js/Image.)] + (set! (.-src img) "/images/colorspecrum-400x300.png") + (let [key (events/listen img EventType.LOAD #(.drawImage context img 0 0))] + (assoc own ::key key)))) + +(defn colorpicker-will-unmout + [own] + (let [key (::key own)] + (events/unlistenByKey key))) + +(def ^:static colorpicker + (util/component + {:render colorpicker-render + :did-mount colorpicker-did-mount + :will-unmout colorpicker-will-unmout + :name "colorpicker" + :mixins [mx/static]})) diff --git a/frontend/uxbox/ui/dashboard/colors.cljs b/frontend/uxbox/ui/dashboard/colors.cljs index da823814d9..6ee1278e41 100644 --- a/frontend/uxbox/ui/dashboard/colors.cljs +++ b/frontend/uxbox/ui/dashboard/colors.cljs @@ -8,6 +8,7 @@ [uxbox.ui.dashboard.builtins :as builtins] [uxbox.ui.icons :as i] [uxbox.ui.lightbox :as lightbox] + [uxbox.ui.colorpicker :refer (colorpicker)] [uxbox.ui.dom :as dom] [uxbox.ui.mixins :as mx] [uxbox.ui.util :as util])) @@ -230,7 +231,12 @@ {:placeholder "RGB" :type "text"}]] [:input#project-btn.btn-primary {:value "+ Add color" :type "submit"}]] - [:a.close {:href "#" + + (colorpicker (fn [{:keys [rgb hex]}] + (println "HEX:" hex) + (println "RGB:" rgb))) + + [:a.close {:href "#" :on-click #(do (dom/prevent-default %) (lightbox/close!))} i/close]])) diff --git a/frontend/uxbox/ui/util.cljs b/frontend/uxbox/ui/util.cljs index bbecb331ea..244484f508 100644 --- a/frontend/uxbox/ui/util.cljs +++ b/frontend/uxbox/ui/util.cljs @@ -46,13 +46,13 @@ ;; Color Conversion ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; -(defn hex-to-rgb +(defn hex->rgb [^string data] (some->> (re-find #"^#?([a-f\d]{2})([a-f\d]{2})([a-f\d]{2})$" data) (rest) (mapv #(js/parseInt % 16)))) -(defn rgb-to-hex +(defn rgb->hex [[r g b]] (letfn [(to-hex [c] (let [hexdata (.toString c 16)] diff --git a/resources/public/images/colorspecrum-400x300.png b/resources/public/images/colorspecrum-400x300.png new file mode 100644 index 0000000000000000000000000000000000000000..bbc5b793dc11f6642eda2b2e8274ab15ccaa0151 GIT binary patch literal 28698 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 literal 0 HcmV?d00001