通过echarts,使表格组件轮播

版本

v1.2:可以使单页面所有表格轮播

v1.3: 可以使单个首个报表滚动并且自动调整高度

v1.4: 可以使全局所有报表滚动并且自动调整高度

功能

通过echart图表中的js代码,使同页面的表格内容滚动轮播

用法

1.1 新建表格

页面内新建任意数里的表格后

1.2 新增echart图表

将js代码复制到echart图表中

这是一个空白的图表,通过该图表使同页面的所有表格生成轮播效果,建议隐藏在底部。

v1.2代码

  1. // 向右侧数据面板中拖入字段,可在代码中引用dataSet字段获取二维数组数据
  2. var doc = window.parent.document;
  3. var tables = doc.querySelectorAll('.m-dashbox-table .tbody table');
  4. function startmarquee(lh, speed, delay, o) {
  5. var p = true;
  6. var t;
  7. function start() {
  8. t = setInterval(scrolling, speed);
  9. if (p) o.style.marginTop = parseInt(o.style.marginTop || 0) - 1 + 'px';
  10. }
  11. function scrolling() {
  12. if (parseInt(o.style.marginTop) % lh != 0) {
  13. o.style.marginTop = parseInt(o.style.marginTop || 0) - 1 + 'px';
  14. if (Math.abs(parseInt(o.style.marginTop || 0)) >= o.scrollHeight / 2) o.style.marginTop = 0;
  15. }
  16. else {
  17. clearInterval(t);
  18. setTimeout(start, delay);
  19. }
  20. }
  21. setTimeout(function() {
  22. var tbodys = o.querySelectorAll('tbody');
  23. if (tbodys.length === 1) {
  24. o.innerHTML += tbodys[0].innerHTML;
  25. }
  26. o.style.marginTop = 0;
  27. start();
  28. }, delay);
  29. }
  30. for (var i = 0; i < tables.length; i++) {
  31. startmarquee(48, 20, 2000, tables[i]);
  32. }

v1.3代码

  1. // 向右侧数据面板中拖入字段,可在代码中引用dataSet字段获取二维数组数据
  2. var doc = window.parent.document;
  3. var tables = doc.querySelectorAll('.m-dashbox-table .tbody table');
  4. function startmarquee(speed, delay, o) {
  5. var p = true;
  6. var t;
  7. var lh;
  8. function start() {
  9. t = setInterval(scrolling, speed);
  10. if (p) o.style.marginTop = parseInt(o.style.marginTop || 0) - 1 + 'px';
  11. }
  12. function scrolling() {
  13. if (parseInt(o.style.marginTop) % lh !== 0) {
  14. o.style.marginTop = parseInt(o.style.marginTop || 0) - 1 + 'px';
  15. if (Math.abs(parseInt(o.style.marginTop || 0)) >= o.scrollHeight / 2) o.style.marginTop = 0;
  16. }
  17. else {
  18. clearInterval(t);
  19. setTimeout(start, delay);
  20. }
  21. }
  22. setTimeout(function() {
  23. var tbodys = o.querySelectorAll('tbody');
  24. var tr = tbodys[0].querySelector('tr');
  25. lh = tr ? tr.offsetHeight : 32;
  26. if (tbodys.length === 1) {
  27. o.innerHTML += tbodys[0].innerHTML;
  28. }
  29. o.style.marginTop = 0;
  30. start();
  31. }, delay);
  32. }
  33. startmarquee(20, 2000, tables[0]);

v1.4

  1. // 向右侧数据面板中拖入字段,可在代码中引用dataSet字段获取二维数组数据
  2. var doc = window.parent.document;
  3. var tables = doc.querySelectorAll('.m-dashbox-table .tbody table');
  4. function startmarquee(speed, delay, o) {
  5. var p = true;
  6. var t;
  7. var lh;
  8. function start() {
  9. t = setInterval(scrolling, speed);
  10. if (p) o.style.marginTop = parseInt(o.style.marginTop || 0) - 1 + 'px';
  11. }
  12. function scrolling() {
  13. if (parseInt(o.style.marginTop) % lh !== 0) {
  14. o.style.marginTop = parseInt(o.style.marginTop || 0) - 1 + 'px';
  15. if (Math.abs(parseInt(o.style.marginTop || 0)) >= o.scrollHeight / 2) o.style.marginTop = 0;
  16. }
  17. else {
  18. clearInterval(t);
  19. setTimeout(start, delay);
  20. }
  21. }
  22. setTimeout(function() {
  23. var tbodys = o.querySelectorAll('tbody');
  24. var tr = tbodys[0].querySelector('tr');
  25. lh = tr ? tr.offsetHeight : 32;
  26. if (tbodys.length === 1) {
  27. o.innerHTML += tbodys[0].innerHTML;
  28. }
  29. o.style.marginTop = 0;
  30. start();
  31. }, delay);
  32. }
  33. for (var i = 0; i < tables.length; i++) {
  34. startmarquee(20, 2000, tables[i]);
  35. }