使用面板节点实现表格关键词搜索

这把我C 2022-05-26 16:24:43 2399

背景

在node-red中,要做一个美观的面板,很多人都会选择使用node-red-dashboard这个库,该库在github上的star也很高,支持的特性也很多,比如中间件,多页面,栅栏式的排版布局。今天的这篇文章我就带大家使用dashboar的做一个常见的布局。

布局介绍

在使用dashboard做页面时必须要了解其中的几个概念,
其一就是dashboard的tab,所有的页面元素都要有一个tab来装载,它是一个基本的容器,一个页面可以有多个tab,用户可以自由切换。

一个页面同一时间只能显示一个tab。
dashboard tab 的配置页面

在tab下,又存在多个group,每个group相当于一个div,每个div可以设置宽度,
width的每一格默认代表 48px, 间隔为6px

在group下,可以存在多个template,form表单,等各种页面元素。
这里的页面元素,宽度可以设置为自动,扩展到整个容器。

理解了这三类页面元素,下面看一下如何使用这个元素排版,做一些业务系统中常见的布局,

常见布局

下面我们来实现一个表格搜索的功能,

示例的效果图如上,显示一个表格,里面会显示用户名,年龄,性别,
此外还有一个关键词,当用户在输入框中输入值后,自动搜索匹配的名称。

这是一个非常常见的业务场景。
下面来看一下如何实现。

实现示例

首先创建一个表格布局的dashboard tab
然后在其中创建一个用户管理的group,宽度设置为 20 单位。这样group的宽度为 20*48 = 960px 左右(会有偏差,和padding)

然后将 text-input 组件,配置label Wie关键词 拖入到流编辑器中,

表格的显示我们可以使用template 搭配 table 标签来显示

template节点的配置如下

拖入一个function 节点,function节点可以帮助我们处理数据的搜索,过滤,接受上一步的关键词后,使用关键词进行搜索,搜索后在重新组装数据,将数据向下传递。从而到达流式调用。
配置如下:

数据格式为

const payload = msg.payload
const data = 
    [
        {
            "name": "Fizz",
            "age": 29,
            "gender": "男"
        },
        {
            "name": "Tom",
            "age": 30,
            "gender": "男"
        }
    ]

if(payload){
    msg.payload = data.filter(x => {
    return x.name.includes(payload)
})

} else{
    msg.payload = data
}

console.log(msg)
return msg;

这显示template中,我们读取msg.payload来获取上一个节点的数据。并使用angular的ng-repeat 遍历来显示数组, ng-repeat是angular中自带的指令,使用它我们可以变量一个可迭代的对象,并使用{{}}来讲数组中的数据显示到页面上。这一步需要有一点angular的知识。整体来说,dashboard就是使用angualr来实现的。所以内置了很多angular的指令和写法。
如下

<div style="width:100%">
    <table style="width:100%;text-align:center" border>
        <thead>
            <tr>
                <th>名字</th>
                <th>年龄</th>
                <th>性别</th>
            </tr>
        </thead>
        <tbody>
            <tr ng-repeat="key in msg.payload">
                <td>{{key.name}}</td>
                <td>{{key.age}}</td>
                <td>{{key.gender}}</td>
            </tr>
        </tbody>
    </table>

</div>

注意当用户改变关键词输入框的值后,会自动向下游发送输入框的值,值的属性以msg.payload 负载。

然后使用一个function 节点来处理搜索的数据,这里我使用了一个filter 方法进行搜索。

表格搜索是在后台管理端中常用的功能,下一篇文章我将给大家做一些漂亮的折线图,柱状图。这在物联网大屏系统中,非常实用。希望同学们好好学。

声明:本文内容由易百纳平台入驻作者撰写,文章观点仅代表作者本人,不代表易百纳立场。如有内容侵权或者其他问题,请联系本站进行删除。
红包 1 1 评论 打赏
评论
0个
内容存在敏感词
手气红包
    易百纳技术社区暂无数据
相关专栏
置顶时间设置
结束时间
删除原因
  • 广告/SPAM
  • 恶意灌水
  • 违规内容
  • 文不对题
  • 重复发帖
打赏作者
易百纳技术社区
这把我C
您的支持将鼓励我继续创作!
打赏金额:
¥1易百纳技术社区
¥5易百纳技术社区
¥10易百纳技术社区
¥50易百纳技术社区
¥100易百纳技术社区
支付方式:
微信支付
支付宝支付
易百纳技术社区微信支付
易百纳技术社区
打赏成功!

感谢您的打赏,如若您也想被打赏,可前往 发表专栏 哦~

举报反馈

举报类型

  • 内容涉黄/赌/毒
  • 内容侵权/抄袭
  • 政治相关
  • 涉嫌广告
  • 侮辱谩骂
  • 其他

详细说明

审核成功

发布时间设置
发布时间:
是否关联周任务-专栏模块

审核失败

失败原因
备注
拼手气红包 红包规则
祝福语
恭喜发财,大吉大利!
红包金额
红包最小金额不能低于5元
红包数量
红包数量范围10~50个
余额支付
当前余额:
可前往问答、专栏板块获取收益 去获取
取 消 确 定

小包子的红包

恭喜发财,大吉大利

已领取20/40,共1.6元 红包规则

    易百纳技术社区