Guest User

Untitled

a guest
Mar 24th, 2018
68
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 6.88 KB | None | 0 0
  1. //Добавления строки таблицы
  2.  
  3. $('.btn').click(function () {
  4. var ind = $('tr:last').index();
  5. $('.hide').clone().appendTo('table').addClass('row').removeClass('hide');
  6. $('tr:last>td:nth-child(2)>input').addClass('x');
  7. $('tr:last>td:nth-child(3)>input').addClass('y');
  8. $('tr:last>td:first').text(ind);
  9. data = [];
  10. });
  11.  
  12. var rawData = [];
  13. height = 500,
  14. width = 500,
  15. margin=50,
  16. data=[],
  17. numb,
  18. x, y,
  19. mass = {},
  20. info;
  21.  
  22. //функция построения сетки координат
  23.  
  24. var osi = function () {
  25. var cur = 0;
  26.  
  27. // создание объекта svg
  28. var svg = d3.select("body").append("svg")
  29. .attr("class", "axis")
  30. .attr("width", width)
  31. .attr("height", height);
  32.  
  33. // длина оси X= ширина контейнера svg - отступ слева и справа
  34. var xAxisLength = width - 2 * margin;
  35.  
  36. // длина оси Y = высота контейнера svg - отступ сверху и снизу
  37. var yAxisLength = height - 2 * margin;
  38.  
  39. for (var i = 0; i < rawData.length; i++) {
  40. if (cur < rawData[i].x) {
  41. cur = rawData[i].x
  42. }
  43. if (cur < rawData[i].y) {
  44. cur = rawData[i].y
  45. }
  46. }
  47. var sizePlus = cur/100*10;
  48. numb = cur + sizePlus;
  49.  
  50. // функция интерполяции значений на ось Х
  51. var scaleX = d3.scale.linear()
  52. .domain([0, numb])
  53. .range([0, xAxisLength]);
  54.  
  55. // функция интерполяции значений на ось Y
  56. var scaleY = d3.scale.linear()
  57. .domain([numb, 0])
  58. .range([0, yAxisLength]);
  59.  
  60. // масштабирование реальных данных в данные для нашей координатной системы
  61. for(i=0; i<rawData.length; i++)
  62. data.push({x: scaleX(rawData[i].x)+margin, y: scaleY(rawData[i].y) + margin});
  63.  
  64. // создаем ось X
  65. var xAxis = d3.svg.axis()
  66. .scale(scaleX)
  67. .orient("bottom");
  68. // создаем ось Y
  69. var yAxis = d3.svg.axis()
  70. .scale(scaleY)
  71. .orient("left");
  72.  
  73. for(i=0; i<rawData.length; i++)
  74. data.push({x: scaleX(rawData[i].x)+margin, y: scaleY(rawData[i].y) + margin});
  75.  
  76. // отрисовка оси Х
  77. svg.append("g")
  78. .attr("class", "x-axis")
  79. .attr("transform", // сдвиг оси вниз и вправо
  80. "translate(" + margin + "," + (height - margin) + ")")
  81. .call(xAxis);
  82.  
  83. // отрисовка оси Y
  84. svg.append("g")
  85. .attr("class", "y-axis")
  86. .attr("transform", // сдвиг оси вниз и вправо на margin
  87. "translate(" + margin + "," + margin + ")")
  88. .call(yAxis);
  89.  
  90. // создаем набор вертикальных линий для сетки
  91. d3.selectAll("g.x-axis g.tick")
  92. .append("line")
  93. .classed("grid-line", true)
  94. .attr("x1", 0)
  95. .attr("y1", 0)
  96. .attr("x2", 0)
  97. .attr("y2", - (yAxisLength));
  98.  
  99. // рисуем горизонтальные линии координатной сетки
  100. d3.selectAll("g.y-axis g.tick")
  101. .append("line")
  102. .classed("grid-line", true)
  103. .attr("x1", 0)
  104. .attr("y1", 0)
  105. .attr("x2", xAxisLength)
  106. .attr("y2", 0);
  107. }
  108.  
  109. //функция которая читает значение переменных и записывает из в масив.
  110.  
  111. var inputToMass = function () {
  112. data = [];
  113. var inpx = $('.x');
  114. var inpy = $('.y');
  115. var massx = [];
  116. var massy = [];
  117. for (i = 0; i < inpx.length; i++) {
  118. mass = {};
  119. x = inpx[i].value;
  120. x = parseInt(x);
  121. mass.x = x;
  122. y = inpy[i].value;
  123. y = parseInt(y);
  124. mass.y = y;
  125. rawData[i] = mass;
  126. }
  127. for (i = 0; inpx.length > i; i++) {
  128. x = inpx[i].value;
  129. x = parseInt(x);
  130. massx[i] = x;
  131. y = inpy[i].value;
  132. y = parseInt(y);
  133. massy[i] = y;
  134. }
  135. }
  136.  
  137. // общая функция которая при нажатии на кнопку вызывает остальные функции
  138.  
  139. $('.btn2').click(function () {
  140. $('svg').remove();
  141. inputToMass();
  142. osi();
  143. chart1();
  144. });
  145.  
  146. // функция чтения из файла
  147.  
  148. $('.file').change(function () {
  149. var fr = new FileReader();
  150. fr.onload = function(info) {
  151. var rezf = info.target.result;
  152. $('svg').remove();
  153. data = [];
  154. rawData = JSON.parse(rezf);
  155. osi();
  156. chart1()
  157. console.log(data);
  158. }
  159. fr.readAsText(this.files[0]);
  160. });
  161.  
  162. //функция построения графика #1
  163.  
  164. var chart1 = function () {
  165. // создание объекта svg
  166. var svg = d3.select("body").append("svg")
  167. .attr("class", "axis")
  168. .attr("width", width)
  169. .attr("height", height);
  170.  
  171. // функция, создающая по массиву точек линии
  172. var line = d3.svg.line()
  173. .x(function(d){return d.x;})
  174. .y(function(d){return d.y;});
  175.  
  176. // добавляем путь
  177. svg.append("g").append("path")
  178. .attr("d", line(data))
  179. .style("stroke", "steelblue")
  180. .style("stroke-width", 2);
  181. }
  182.  
  183. //функция построения графика #2
  184.  
  185. var chart2 = function () {
  186.  
  187. var svg = d3.select("body").append("svg")
  188. .attr("class", "axis")
  189. .attr("width", width)
  190. .attr("height", height);
  191. // функция, создающая по массиву точек линии
  192. var line = d3.svg.line()
  193. .x(function(d){return d.x;})
  194. .y(function(d){return d.y;});
  195. // функция, создающая область
  196. var area = d3.svg.area()
  197. .x(function(d) { return d.x; })
  198. .y0(height - margin)
  199. .y1(function(d) { return d.y; });
  200.  
  201. var g = svg.append("g");
  202. g.append("path")
  203. .attr("d", area(data))
  204. .style("fill", "lightblue");
  205. g.append("path")
  206. .attr("d", line(data))
  207. .style("stroke", "steelblue")
  208. .style("stroke-width", 2);
  209. }
  210.  
  211. //функция построения графика #3
  212.  
  213. var chart3 = function () {
  214. var svg = d3.select("body").append("svg")
  215. .attr("class", "axis")
  216. .attr("width", width)
  217. .attr("height", height);
  218.  
  219. var line = d3.svg.line().interpolate("basis")
  220. .x(function(d){return d.x;})
  221. .y(function(d){return d.y;});
  222.  
  223. var area = d3.svg.area().interpolate("basis")
  224. .x(function(d) { return d.x; })
  225. .y0(height - margin)
  226. .y1(function(d) { return d.y; });
  227.  
  228. var g = svg.append("g");
  229. g.append("path")
  230. .attr("d", area(data))
  231. .style("fill", "lightblue");
  232. g.append("path")
  233. .attr("d", line(data))
  234. .style("stroke", "steelblue")
  235. .style("stroke-width", 2);
  236. }
  237.  
  238. <body>
  239.  
  240. <div class="table">
  241. <table border="1">
  242. <tr>
  243. <th>#</th>
  244. <th>X</th>
  245. <th>Y</th>
  246. </tr>
  247. <tr class="hide">
  248. <td></td>
  249. <td><input type="number"></td>
  250. <td><input type="number"></td>
  251. </tr>
  252. <tr class="row">
  253. <td>1</td>
  254. <td><input class="x" type="number"></td>
  255. <td><input class="y" type="number"></td>
  256. </tr>
  257. </table>
  258. </div>
  259.  
  260. <br><br>
  261.  
  262. <button class="btn">Add Row</button>
  263.  
  264. <button class="btn2">generate</button>
  265.  
  266. <input class="file" type="file">
  267.  
  268. <pre class="cont"></pre>
  269.  
  270. <button class="btnhelp">HELP</button>
  271.  
  272. </body>
Add Comment
Please, Sign In to add comment