首页 > 其他分享 >提升数据可视化:拖拽编辑自动汇总,树形数据表格展示新方式

提升数据可视化:拖拽编辑自动汇总,树形数据表格展示新方式

时间:2023-12-13 09:12:33浏览次数:45  
标签:month 树形 可视化 deposit year null 数据 拖拽

本文由葡萄城技术团队发布。转载请注明出处:葡萄城官网,葡萄城为开发者提供专业的开发工具、解决方案和服务,赋能开发者。

前言

树形结构是一种非常常见的数据结构,它由一组以层次关系排列的节点组成。树的结构类似于自然界中的一棵树,树根对应顶层节点,而子节点则分支延伸出来。

在树形结构中,每个节点可以有零个或多个子节点,但每个节点只能有一个父节点(除了根节点)。这种层级关系使得树形结构适用于许多实际问题的建模和解决。树形结构可以非常清晰、简洁地表示数据的上下级关系,例如省市区对应的树形结构就是这样的:

像“雁塔区”、“延安市”等这些没有子级的数据,称为树形结构的“叶子节点”,而那些有子级的,则称为“分枝节点”。

而在表格中的树形结构的表示形式如下所示(通过缩进的方式):

那么今天小编就为大家介绍如何实现一个表格中的树形结构。

业务场景需求

现在有一个业务需求场景:某银行在全国各地的区县级区域开设了分行,并希望以区、市、省为维度,做一个存贷款量的统计表。

在该场景下有这样的一些需要实现的效果:

1.级联折叠/展开省市

用户点击省和市的序号,其子级会自动折叠和展开。

2.自动计算并保护数据

用户无须编辑市和省的数据,而是自动计算其子集之和,新增、删除等操作也遵从这个原则。

3.拖拽调整数据层级

对于层级错误的数据(如汉中市应该属于陕西省,而非西安市),用户可以通过拖拽来实现层级的移动,也可以用ctrl shift拖拽来改变数据在同一层级的位置。

4.灵活新增数据

用户可以新增数据,新增时可以选择添加为当前数据的子级,也可以添加为同级。

5.删除数据及子级

用户在删除数据时,若数据有子级,需要一同删除其子数据,如删除西安市,需要将其下的灞桥区、碑林区等一并删除。

6.数据校验提示

用户在编辑总合计行时,系统会自动进行数据校验,若数据校验未通过,则智能提示并将背景色变化,同时鼠标悬浮可查看批注信息。这种智能数据校验功能,可以帮助用户更好地规范数据录入,提高数据的准确性和可靠性。

代码实现过程:

(1)上传数据(data.js)

//部分代码,完整代码请查看Gitee:https://gitee.com/GrapeCity/tree-form
let data = {
    data: [{
        name: "陕西省",
        no: "1",
        this_year_deposit: null,
        last_year_deposit: null,
        this_year_month_deposit: null,
        last_year_month_deposit: null,
        this_year_loan: null,
        last_year_loan: null,
        this_year_month_loan: null,
        last_year_month_loan: null,
    }, {
        name: "西安市",
        no: "1.1",
        this_year_deposit: null,
        last_year_deposit: null,
        this_year_month_deposit: null,
        last_year_month_deposit: null,
        this_year_loan: null,
        last_year_loan: null,
        this_year_month_loan: null,
        last_year_month_loan: null,
    }, {
        name: "灞桥区",
        no: "1.1.1",
        this_year_deposit: 100,
        last_year_deposit: 100,
        this_year_month_deposit: 100,
        last_year_month_deposit: 100,
        this_year_loan: 100,
        last_year_loan: 100,
        this_year_month_loan: 100,
        last_year_month_loan: 100,
    }]
}
let year = 2023
let month = 8
export {
    data,
    year,
    month
}

(2)编写Html

<!doctype html>
<html>

<head>
    <title>SpreadJS in TypeScript</title>
    <link rel="stylesheet" type="text/css" href="node_modules/@grapecity/spread-sheets/styles/gc.spread.sheets.excel2013white.css">
    <link rel="stylesheet" type="text/css" href="node_modules/@grapecity/spread-sheets-designer/styles/gc.spread.sheets.designer.min.css">
    <script src="node_modules/systemjs/dist/system.src.js"></script>
    <!-- <script src="//cdn.bootcdn.net/ajax/libs/FileSaver.js/2.0.5/FileSaver.js"></script> -->
    <script src="systemjs.config.js"></script>
    <style>
        * {
            margin: 0;
            padding: 0;
        }

        #loadAnother {
            margin-left: 30px;
        }
        .header {
            height: 30px;
        }
        #designer-container {
            height: calc(100vh - 30px)
        }
    </style>
</head>

<body>
    <div class="header">
        <button id="exportExcel">保存为Excel</button><button id="loadAnother">加载另一组数据</button>
        <span id="yearMonth"></span>
    </div>
    <div class="container">
        <div id="designer-container" style="width:100vw"></div>
    </div>
</body>
<script>
    let spread, designer, sheet
    System.import('./src/app');
</script>

</html>

(3)编写方法

(function (global) {
    System.config({
      transpiler: 'plugin-typescript',
      typescriptOptions: {
        "target": "es5",
        "module": "system",
      },
      baseURL: './node_modules/',
      meta: {
        'typescript': {
          "exports": "ts"
        },
        '*.css': { loader: 'systemjs-plugin-css' }
      },
      map: {
        'typescript': 'typescript/lib/typescript.js',
      },
      packageConfigPaths: ['./node_modules/*/package.json', "./node_modules/@grapecity/*/package.json"],
      // packages tells the System loader how to load when no filename and/or no extension
      packages: {
        "./src": {
          defaultExtension: 'js'
        },
        "object-assign": {
          main: "index.js"
        },
        "node_modules": {
          defaultExtension: 'js'
        },
      }
    });
  })(this);

以上是关键代码段,如果需要查看完整代码,欢迎访问Gitee:https://gitee.com/GrapeCity/tree-form

总结

表格展示树形数据的新方式让用户可以轻松地进行数据编辑。通过简单的拖拽操作,用户可以在树形结构中调整、移动各个数据项目的位置。这种直观的交互方式,不仅提高了用户的使用体验,也使得数据编辑变得更加简单、快速。同时,用户还可以通过拖拽来创建、合并甚至删除数据项目,进一步提升数据管理的灵活性和效率。

此外,示例中表格展示树形数据的新方式还具备自动汇总的功能。在传统的表格展示方式中,用户需要手动计算和汇总各个数据,这不仅费时费力,还容易产生错误。而通过新的方式,系统可以自动对树形数据进行汇总和计算,将结果实时展示在表格中。这让用户可以更加便捷地获取整体数据的情况,减少出错的可能性,并为数据分析和决策提供更有价值的参考依据,如果您想了解更多的信息资料,欢迎点击这里

扩展链接:

Redis从入门到实践

一节课带你搞懂数据库事务!

Chrome开发者工具使用教程

从表单驱动到模型驱动,解读低代码开发平台的发展趋势

低代码开发平台是什么?

基于分支的版本管理,帮助低代码从项目交付走向定制化产品开发

标签:month,树形,可视化,deposit,year,null,数据,拖拽
From: https://www.cnblogs.com/powertoolsteam/p/17833212.html

相关文章

  • 数据可视化为何能够在众多行业中广泛应用?
    数据可视化作为一种强大的工具,在众多行业中得到了广泛的应用,其价值和优势不断被发掘和利用。让我们一起来探讨数据可视化之所以在各个行业中备受青睐的原因吧。无论是商业、科学、医疗保健、金融还是教育领域,数据可视化都在起到重要作用。它不仅仅是简单地将数据呈现出来,更是帮......
  • 可视化监控云平台/智能监控EasyCVR如何使用脚本创建ramdisk挂载并在ramdisk中临时运行
    视频云存储/安防监控EasyCVR视频汇聚平台基于云边端智能协同,支持海量视频的轻量化接入与汇聚、转码与处理、全网智能分发、视频集中存储等。安防管理视频平台EasyCVR拓展性强,视频能力丰富,具体可实现视频监控直播、视频轮播、视频录像、云存储、回放与检索、智能告警、服务器集群、......
  • 可视化监控云平台/智能监控EasyCVR如何使用脚本创建ramdisk挂载并在ramdisk中临时运行
    视频云存储/安防监控EasyCVR视频汇聚平台基于云边端智能协同,支持海量视频的轻量化接入与汇聚、转码与处理、全网智能分发、视频集中存储等。安防管理视频平台EasyCVR拓展性强,视频能力丰富,具体可实现视频监控直播、视频轮播、视频录像、云存储、回放与检索、智能告警、服务器集群、......
  • TSINGSEE青犀可视化视频云平台JT/T1078接入能力在智慧物流中的应用
    一、引言随着科技的快速发展和全球贸易的蓬勃发展,智慧物流成为了现代物流业的重要发展方向。智慧物流通过引入先进的信息技术,实现了物流过程的自动化、智能化和信息化,从而提高了物流效率和准确性。在这个过程中,JT/T1078接入技术发挥着关键的作用。二、JT/T1078接入技术JT/T1078接入......
  • TSINGSEE青犀可视化视频云平台JT/T1078接入能力在智慧物流中的应用
    一、引言随着科技的快速发展和全球贸易的蓬勃发展,智慧物流成为了现代物流业的重要发展方向。智慧物流通过引入先进的信息技术,实现了物流过程的自动化、智能化和信息化,从而提高了物流效率和准确性。在这个过程中,JT/T1078接入技术发挥着关键的作用。二、JT/T1078接入技术JT/T1078......
  • 数据驱动下的植被管理:可视化技术的新应用
    在当今时代,数据可视化技术已经成为了一个非常重要的技术。对于植被管理来说,数据可视化也有着非常重要的作用。通过将植被管理数据可视化,我们可以更加清晰地了解植被的状态和发展趋势,进而采取更加科学、精准的管理措施,保护生态环境,提高农业生产效率。 山海鲸可视化XX省植被管理......
  • Java开发者的Python快速实战指南:实用工具之PDF转DOCX文档(可视化界面)
    首先,大家对Python语法的了解已经基本完成,现在我们需要开始进行各种练习。我为大家准备了一些练习题目,比如之前的向量数据库等,这些题目可以参考第三方的SDK来进行操作,文档也是比较完善的。这个过程有点像我们之前使用Java对接第三方接口的方式,所以今天我想开发一个很实用的工具类,用......
  • Java开发者的Python快速实战指南:实用工具之PDF转DOCX文档(可视化界面)
    首先,大家对Python语法的了解已经基本完成,现在我们需要开始进行各种练习。我为大家准备了一些练习题目,比如之前的向量数据库等,这些题目可以参考第三方的SDK来进行操作,文档也是比较完善的。这个过程有点像我们之前使用Java对接第三方接口的方式,所以今天我想开发一个很实用的工具类,用......
  • 开源的linux可视化管理项目-1panel面板
    推荐一款开源的linux可视化管理项目,运维效率翻倍原创 小羊架构 小羊架构 2023-12-0316:19 发表于广东收录于合集#linux3个#开源5个#编程9个#IT16个#互联网17个  你好呀,我是小羊。linux是个非常好的开源操作系统,功能强大,使用也非常广泛,唯一的缺点就是上手有点难......
  • 软件测试/人工智能|Python数据可视化神器pyecharts教程(一)
    前言在很多时候,枯燥的数字并不能很直观的展示地域的差别,比如一个企业,想要分析产品在国内的销售情况,报表可能并不能最直接的展示差异,而一个结合地图的展示,就会直观得多,更便于大家去看到差距,更利于决策。当然,除了做商业决策,将数据与地图结合,也更便于我们展示诸如人口密度,经济总量等数......