Advertisement
pro_cessor

ColorPicker Using d3

Nov 30th, 2013
70
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. <body>
  2.    
  3. </body>
  4. <script src="d3.v3.min.js" charset="utf-8"></script>
  5. <script>
  6. var ColorPicker = function (defaultColor, colorScale) {
  7.     var self = this;
  8.     var rainbow = ["#FFD300", "#FFFF00", "#A2F300", "#00DB00", "#00B7FF", "#1449C4", "#4117C7", "#820AC3", "#DB007C", "#FF0000", "#FF7400", "#FFAA00"]
  9.     var colorScale = colorScale || rainbow;
  10.     var color = function (i) { return colorScale[i];};
  11.     var defaultColor = defaultColor || color(0);
  12.  
  13.     self.pickedColor = defaultColor;
  14.     self.picked = function (color) {};
  15.     var clicked = function () {
  16.         self.picked(self.pickedColor);
  17.     };
  18.  
  19.     var pie = d3.layout.pie().sort(null);
  20.     var arc = d3.svg.arc().innerRadius(75).outerRadius(150);
  21.  
  22.     var svg = d3.select("body")
  23.         .append("svg")
  24.         .attr("width", 500)
  25.         .attr("height", 500)
  26.         .append("g")
  27.         .attr("transform", "translate(200,200)");
  28.  
  29.     var plate = svg.append("circle")
  30.         .attr("fill", defaultColor)
  31.         .attr("stroke", "#fff")
  32.         .attr("stroke-width", 4)
  33.         .attr("r", 75)
  34.         .attr("cx", 0)
  35.         .attr("cy", 0)
  36.         .on("click", clicked);
  37.  
  38.     svg
  39.         .datum([1,1,1,1,1,1,1,1,1,1,1,1])
  40.         .selectAll("path")
  41.         .data(pie)
  42.         .enter()
  43.             .append("path")
  44.             .attr("fill", function (d,i) {return color(i); })
  45.             .attr("stroke", "#fff")
  46.             .attr("stroke-width", 4)
  47.             .attr("d", arc)
  48.             .on("mouseover", function () {
  49.                 var fill = d3.select(this).attr("fill");
  50.                 self.pickedColor = fill;
  51.                 plate.attr("fill", fill);
  52.             })
  53.             .on("click", clicked);
  54. };
  55.  
  56. var picker = new ColorPicker("#00DB00");
  57. picker.picked = function (color) { alert(color); };
  58.  
  59. </script>
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement