Guest User

Untitled

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