Guest User

Untitled

a guest
Nov 17th, 2018
89
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 6.39 KB | None | 0 0
  1. var pathWay = [];
  2. //DONT REMOVE LINE BELOW
  3. var lineWidth = 1414;
  4. var lineStart = 80;
  5. var lineDistance = 160;
  6.  
  7. var defs = d3.select('svg').append('defs');
  8. var path = g.append('path')
  9. .attr('stroke','blue')
  10. .attr('stroke-width',5)
  11. .attr('fill','red');
  12.  
  13. var curves_array = [];
  14. var curve = '';
  15. var d = [];
  16. var drawing = false;
  17.  
  18. d3.select('svg').on('click',function(){
  19. var point = {x:d3.event.pageX ,y:d3.event.pageY-75}
  20. d.push(point);
  21. if((!drawing && curve == '') || drawing == true){
  22. drawing = true;
  23. createCircle(point,'red');
  24. draw2(point)
  25. }
  26.  
  27. });
  28. function createCircle(pointD,color){
  29. if(!color){
  30. color = '#000000'
  31. }
  32. var circleHandler = g.append('circle')
  33. .attr('r',5)
  34. .attr('stroke',color)
  35. .attr('stroke-width',2)
  36. .attr('fill','white')
  37. .attr('cx',pointD.x)
  38. .attr('cy',pointD.y)
  39. .on('mouseover',function(){ d3.select(this).attr('fill',"#B6B623")})
  40. .on('mouseout',function(){ d3.select(this).attr('fill',"#FFFFFF") });
  41. if(drawing){
  42. circleHandler.on('click',function(){
  43. curve+= 'Z';
  44. draw2();
  45. drawing = false;
  46. })
  47. }
  48.  
  49. }
  50.  
  51. var draw2 = function(point){
  52. if(point != undefined){
  53. var n_point1 = {x:point.x-50 ,y:point.y}
  54. var n_point2 = {x:point.x+50 ,y:point.y}
  55.  
  56. if(curve == '')
  57. curve += 'M '+point.x+','+point.y;
  58. else{
  59. var q_move = 0
  60. var q_point1 = {x:point.x-q_move ,y:point.y-q_move}
  61. curve += ' Q '+(q_point1.x)+','+(q_point1.y)+', '+point.x+','+point.y;
  62.  
  63. //createLine(point.x,q_point1.x,point.y,q_point1.y)
  64. var previous_element = d[d.length-2]
  65. //createLine(previous_element.x,q_point1.x,previous_element.y,q_point1.y)
  66. createCircle(q_point1,'green',2)
  67. }
  68. createCircle(point)
  69. }
  70. path.attr('d',curve)
  71.  
  72. }
  73.  
  74.  
  75. // -------- Adding Helper Lines -----------------------
  76.  
  77. function createLine(x,x1,y,y1){
  78. g.append('line')
  79. .attr("x1",x)
  80. .attr("y1",y)
  81. .attr("x2",x1)
  82. .attr("y2",y1)
  83. .style("stroke-width", 3)
  84. .style("stroke", "black")
  85. }
  86.  
  87.  
  88. var pattern = defs.append('pattern')
  89. .attr('id','pattern1')
  90. .attr('pattermTransform','')
  91. .attr('height',40)
  92. .attr('width',40)
  93. .attr('patternUnits','userSpaceOnUse')
  94.  
  95. var line = pattern.append('line')
  96. .attr('x1',0)
  97. .attr('x2',40)
  98. .attr('y1',0)
  99. .attr('y2',0)
  100. .attr('fill',"#4D8891")
  101. .style("stroke-width", 2)
  102. .style("stroke", "steelblue")
  103.  
  104. var line = pattern.append('line')
  105. .attr('x1',0)
  106. .attr('x2',0)
  107. .attr('y1',0)
  108. .attr('y2',40)
  109. .attr('fill',"#4D8891")
  110. .style("stroke-width", 2)
  111. .style("stroke", "steelblue")
  112.  
  113. d3.select('svg').append('rect')
  114. .attr('height',779)
  115. .attr('width',1442)
  116. .attr('fill','url(#pattern1)')
  117. //---------------------- Button- and Add-to-editor-logic ----------------
  118. var addText = function(){
  119. var text = d3.select('#pathWay')
  120. var textValue = tribView.code_editor.getLine(0);
  121. var search = /var pathWay = \[(.*)\]/;
  122. var result = search.exec(textValue);
  123. if(textValue == 'var pathWay = [];'){
  124. add = '[1,2]';
  125. }else{
  126. add = ',[1,2]';
  127. }
  128. var modify = result[1]+add;
  129. var finalString = 'var pathWay = ['+(modify)+'];';
  130. //console.log('String',finalString);
  131. var test = text.text(finalString);
  132. test = test.text();
  133. tribView.code_editor.setLine(0,test);
  134.  
  135.  
  136. }
  137.  
  138.  
  139. function createButton(name,callback){
  140.  
  141. var buttonGroup = g.append('g')
  142. .on('click', function(d,i){
  143. callback(this)
  144. })
  145. .on('mousedown',function(){
  146. d3.select(this).select('#buttonBG')
  147. .attr('fill','url(#g3201)')
  148. .attr('stroke-width',3)
  149. .attr('stroke','url(#g3202)')
  150. })
  151. .on('mouseover',function(){
  152. d3.select(this).select('#buttonBG')
  153. .attr('fill','url(#g3203)')
  154. .attr('stroke-width',3)
  155. .attr('stroke','url(#g3204)')
  156. })
  157. .on('mouseout',function(){
  158. d3.select(this).select('#buttonBG')
  159. .attr('fill','url(#g3203)')
  160. .attr('stroke','url(#g3202)')
  161. .attr('stroke-width',3)
  162. })
  163.  
  164. var rect = buttonGroup.append('rect')
  165. .attr('width',122)
  166. .attr('height',45)
  167. .attr('fill',"#922F2F")
  168. .attr('rx',10)
  169. .attr('ry',10)
  170. .attr('id','buttonBG')
  171. .attr('height',45)
  172. .attr('fill','url(#g3203)')
  173. .attr('stroke','url(#g3202)')
  174. .attr('stroke-width',3)
  175.  
  176.  
  177.  
  178. var text = buttonGroup.append('text')
  179. .attr('id','pathWay')
  180. .attr('font-size',10)
  181. .attr('fill',"#FFFFFF")
  182. .style('text-shadow','1px 1px 2px'+"#000000")
  183. .text(name)
  184. .attr('transform','translate('+[10,rect.attr('width')/4.5]+')')
  185. var textLength = text.node().getBBox().width;
  186. rect.attr('width',textLength+20)
  187. return buttonGroup;
  188. }
  189.  
  190.  
  191. function addGradient(color1,color2,stopPX,id){
  192. var gradient = defs.append('linearGradient')
  193. .attr('id',id)
  194. .attr('gradientUnits','userSpaceOnUse')
  195. .attr('x1','0%')
  196. .attr('x2','0%')
  197. .attr('y1','0%')
  198. .attr('y2',stopPX)
  199. gradient.append('stop')
  200. .attr('stop-color',color1)
  201. .attr('offset','0')
  202. gradient.append('stop')
  203. .attr('stop-color',color2)
  204. .attr('offset','1')
  205. }
  206. // ---------------------------------------------------
  207. var y1 = lineStart
  208. var xheight = createLine(1,lineWidth,y1,y1)
  209.  
  210. var y2 = y1+ lineDistance
  211. var baseline = createLine(1,lineWidth,y2,y2)
  212.  
  213. var y3 = y2 + lineDistance
  214. var descentline = createLine(1,lineWidth,y3,y3)
  215. // ---------------------------------------------------
  216. addGradient("#363636", "#5B6B65", 46, 'g3201')
  217. addGradient("#5B6B65", "#363636", 46, 'g3202')
  218. addGradient("#FFF368", "#418041", 46, 'g3203')
  219. addGradient("#0085FF", "#1073A2", 46, 'g3204')
  220.  
  221.  
  222. var button1 = createButton('Add path', addText)
  223. .attr('transform','translate('+[32,9]+')')
  224.  
  225. var removeText = function(elem){
  226. var text = tribView.code_editor.setLine(0,'var pathWay = []; ')
  227. }
  228. var button2 = createButton('Remove path', removeText)
  229. .attr('transform','translate('+[126,9]+')')
Add Comment
Please, Sign In to add comment