阿桂天山的技术小结:Flask对Ztree树节点搜索定位

news2024/10/1 17:21:06

话不多说,上图上源码

1.先看效果图

2.前端页面部分:

        1)页面

<!DOCTYPE html>
<HTML>

<HEAD>
    <TITLE>Ewangda 阿桂天山的Ztree实战</TITLE>
    <meta http-equiv="content-type" content="text/html; charset=UTF-8">
    <link rel="stylesheet" href="/static/css/bootstrapStyle/bootstrapStyle.css" type="text/css">

<link href="/static/bootstrap/css/bootstrap.min.css" rel="stylesheet" />

    <script type="text/javascript" src="/static/js/jquery-2.2.0.min.js"></script>
    <script type="text/javascript" src="/static/ztree/js/jquery.ztree.core-3.5.js"></script>
    <script type="text/javascript" src="/static/ztree/js/jquery.ztree.excheck-3.5.js"></script>
    <script type="text/javascript" src="/static/ztree/js/jquery.ztree.exedit-3.5.js"></script>
    <!--  gtj 实现对ztree节点筛选功能用  -->
    <script type="text/javascript" src="/static/ztree/js/jquery.ztree.exhide-3.5.js"></script>

</HEAD>

<BODY>
    <h2>具有搜索定位功能的Ztree</h2>
    <div class="input-group" style="width:300px">
        <input type="text" id="search-input" onkeyup="autoMatchForZtree();" class="form-control" placeholder="模糊查询" style="border: 1px solid #cccccc; border-right: 0;"/>
        <div class="input-group-addon"><i class="glyphicon glyphicon-search"></i></div>
    </div>
    <ul id="treeDemo" class="ztree"></ul>
</BODY>

</HTML>

        2)前端javascript脚本

<script >
$SCRIPT_ROOT = {{ request.script_root|tojson|safe }};
var setting = {
    view: {
        selectedMulti: false
    },
    check: {
        enable: true
    },
    data: {
        simpleData: {
            enable: true
        }
    },
};

$(document).ready(function() {
    $.getJSON($SCRIPT_ROOT+'/_get_tree','',function(data){
            var zTreeObj = $.fn.zTree.init($("#treeDemo"), setting, data);
            zTreeObj.expandAll(true); //---gtj 所有节点都会默认展开
    })

});

/*** 功能:gtj 搜索匹配树节点 ***/
function searchChildren(keyword, children){
    if(children == null || children.length == 0){
        return false;
    }
    for(var i = 0; i < children.length; i++){
        var node = children[i];
        if(node.name.indexOf(keyword) != -1 && node.isHidden === false){
            return true;
        }
        var result = searchChildren(keyword, node.children);
        if(result){
            return true;
        }
    }
    return false;
}

function searchParent(keyword, node){
    if(node == null){
        return false;
    }
    if(node.name.indexOf(keyword) != -1 && node.isHidden === false){
        return true;
    }
    return searchParent(keyword, node.getParentNode());
}

var hiddenNodesForZtree = [];

function autoMatchForZtree(){
    setTimeout(function(){
        var ztreeObj = $.fn.zTree.getZTreeObj("treeDemo");

        ztreeObj.showNodes(hiddenNodesForZtree);

        function filterFunc(node){
            var keyword = $("#search-input").val();

            if(searchParent(keyword, node) || searchChildren(keyword, node.children)){
                return false;
            }
            return true;
        };

        hiddenNodesForZtree = ztreeObj.getNodesByFilter(filterFunc);

        ztreeObj.hideNodes(hiddenNodesForZtree);

    }, 300);
}

</script>

3.后端Flask代码

        1)searchztree.py

#=============================================================
#---------------------阿桂天山 Ewangda--------------------------
import op_sql
import json

from flask import Flask, render_template, request

app = Flask(__name__)


# 前端主页面
@app.route('/')
def searchztree():
    return render_template('searchztree.html')


# 后台返回所有数据
@app.route('/_get_tree')
def get_tree():
    return json.dumps(op_sql.transport())


# 启动主页面
if __name__ == "__main__":
    app.run(debug=True)

        2)连接数据库获取数据:

                2.1)mysql建表语句及测试数据

CREATE TABLE `t_ztree` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `name` varchar(50) DEFAULT NULL,
  `pId` int(11) DEFAULT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=42 DEFAULT CHARSET=utf8;

-- ----------------------------
-- Records of t_ztree
-- ----------------------------
INSERT INTO t_ztree VALUES ('1', 'Ewangda', '0');
INSERT INTO t_ztree VALUES ('2', '数智化服务', '1');
INSERT INTO t_ztree VALUES ('3', '创新视觉服务', '1');
INSERT INTO t_ztree VALUES ('4', '精准系列', '2');
INSERT INTO t_ztree VALUES ('5', '精细系列', '2');
INSERT INTO t_ztree VALUES ('8', 'EDS企业数字服务平台', '4');
INSERT INTO t_ztree VALUES ('9', 'PDS精准数字服务云平台', '4');
INSERT INTO t_ztree VALUES ('23', '精工系列', '2');
INSERT INTO t_ztree VALUES ('36', '精致系列', '3');
INSERT INTO t_ztree VALUES ('37', 'AR智能电商', '36');
INSERT INTO t_ztree VALUES ('38', '精彩系列', '3');
INSERT INTO t_ztree VALUES ('39', '大屏展示', '38');
INSERT INTO t_ztree VALUES ('40', '智能美唇', '37');
INSERT INTO t_ztree VALUES ('41', '智能靓镜', '37');

        2.2)生成ztree数据函数文件op_sql.py

def query(sql_select):
    conn = pymysql.connect(user="aaa", password="123xxxx", host="127.0.0.1", database="test-ztree")
    cursor = conn.cursor()
    try:

        cursor.execute(sql_select)
        result = cursor.fetchall()
        return result
    finally:
        conn.close()

# 将数据库查询数据标准化json数据以便传入后台
def transport():
    zNdodes = []

    for i in query("select id, name, pId from t_ztree;"):
        zNdode = {}
        zNdode['id'] = i[0]
        zNdode['name'] = i[1]
        zNdode['pId'] = i[2]

        zNdodes.append(zNdode)
    return zNdodes

总结:所有内容都在这了,对你有用给个赞吧!!!

最后要注意:要让树节点能被筛选,一定要有ztree.exhide库

             

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1072472.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

vue脚手架项目创建及整理

环境准备 首先安装node,如果项目需要指定node版本 可以按装nvm控制版本 创建vue vue create 项目名选择对应版本 这边我是选的自定义&#xff0c;就是第三个选项&#xff0c;可以提前给我下好 router vuex什么的&#xff08;空格&#xff09; 选项如图标注 等待下载所需的…

什么是Spring

一、前言 参与java项目开发的工作&#xff0c;没有人可以离开Spring&#xff0c;但是什么是Spring呢&#xff1f;我们平时可以说对于这个概念早已经是熟视无睹。今天我还特意查看了官网的介绍&#xff0c;但是上面竟然没有说明Spring是什么&#xff0c;之说了Spring的特征和能…

这道面试题工作中经常碰到,但 99% 的程序员都答不上来

小时候都被问过一个脑筋急转弯&#xff0c;把大象放进冰箱有几个步骤&#xff1f;我们一开始都会抓耳挠腮&#xff0c;去想着该如何把大象塞进冰箱。最终揭晓的答案却根本不关心具体的操作方法&#xff0c;只是提供了 3 个步骤组成的流程&#xff0c;「把冰箱打开&#xff0c;把…

MQTT服务器源码解析

目录 1、关于header问题 2、MQTT 连接参数的使用 2.1连接地址 2.2 基于 TCP 的 MQTT 连接 2.3 基于 WebSocket 的连接 3、订阅topic 4、推送消息给订阅者 5、QOS 机制 5.1 QOS是什么 5.2 QOS的实现原理 5.3 发送流程 6、reatain机制 总结&#xff1a;给还没上线的…

节日灯饰灯串灯出口欧洲CE认证检测

灯串&#xff08;灯带&#xff09;&#xff0c;这个产品的形状就象一根带子一样&#xff0c;再加上产品的主要原件就是LED&#xff0c;因此叫做灯串或者灯带。2022年&#xff0c;我国灯具及相关配件产品出口总额超过460亿美元。其中北美是最大的出口市场。其次是欧洲市场&#…

传奇开服教程GOM传奇引擎外网全套架设教程

传奇开服教程&#xff1a;GOM引擎外网架设教程 准备工具&#xff1a;版本&#xff0c;DBC数据库&#xff0c;传奇客户端&#xff0c;服务器&#xff0c;备案域名 架设传奇外网GOM引擎版本之前我们连接登录服务器&#xff0c;我们把版本&#xff0c;DBC数据库&#xff0c;传奇…

会议邀请 | 思腾合力邀您共赴PRCV 2023第六届中国模式识别与计算机视觉大会

第六届中国模式识别与计算机视觉大会&#xff08;The 6th Chinese Conference on Pattern Recognition and Computer Vision, PRCV 2023&#xff09;将于2023年10月13日至15日在厦门举办。PRCV 2023由中国计算机学会&#xff08;CCF&#xff09;、中国自动化学会&#xff08;CA…

Java8实战-总结38

Java8实战-总结38 默认方法概述默认方法默认方法的使用模式可选方法行为的多继承 默认方法 概述默认方法 默认方法是Java 8中引入的一个新特性&#xff0c;希望能借此以兼容的方式改进API。现在&#xff0c;接口包含的方法签名在它的实现类中也可以不提供实现。缺失的方法实现…

静电除尘器的工作原理及使用说明

静电除尘器是一种通过静电场将空气中的颗粒物带电并吸附到电极上&#xff0c;再利用机械振打或气流将颗粒物从电极上清除的空气净化设备。以下是静电除尘器的工作原理及使用说明&#xff1a; 工作原理&#xff1a; 静电除尘器主要由电极系统、电源系统、收尘系统、清灰系统等…

计算机的分类

文章目录 前言一、超级计算机二、大型计算机三、迷你计算机&#xff08;服务器&#xff09;四、工作站五、微型计算机 前言 世界上所有的计算机总共分为五类&#xff1a;超级计算机、大型计算机、迷你计算机、工作站、微型计算机。今天就简单介绍下各自特点和用途。 一、超级计…

allegro pcb designer铜皮合并

前提&#xff0c;两块铜皮是同一个网络 现在是没有合并的状态 第一步选中两块铜皮 点击sharpe菜单&#xff0c;点击merge shape子菜单&#xff0c;两块铜皮就合并了。

字符输入转换流字符输出转换流

字符输入转换流&字符输出转换流 字符输入转换流&字符输出转换流 package newTest;import java.io.*;public class test2 {//目标&#xff1a; 掌握字符输入转换流public static void main(String[] args) {try(//文件管道对象//得到原始的字节编码InputStream fsnew Fi…

2023-2024年云赛道模拟题库

2023-2024年云赛道模拟题库上线啦&#xff0c;全面覆盖云计算&#xff0c;云服务&#xff0c;大数据和人工智能考点&#xff0c;都是带有解析&#xff0c;实时更新&#xff0c;永久使用 参赛对象及要求&#xff1a; 参赛对象&#xff1a;现有华为ICT学院及未来有意愿成为华为…

一个CPU是怎么寻址的?

目录 CISC vs RISC 概念和历史 CISC vs RISC 对比举例&#xff1a;X86的CAS(做原子操作的) 对比举例&#xff1a;ARM的CAS(做原子操作的) 指令寻址 指令中的操作数的寻址方式 各语言对象内存布局对比 C内存布局 理解编译单元 Java对象内存布局 python对象模型 CPU …

Linux 基金会分叉 Terraform,正式推出 OpenTofu

导读Linux 基金会宣布推出 OpenTofu&#xff0c;这是一个 Terraform 的开源替代方案&#xff0c;并且分叉自 Terraform。OpenTofu 原名 OpenTF&#xff0c;为所有人提供了一个在中立治理模式下的可靠的开源替代方案。 Terraform 是 HashiCorp 开源的一个安全和高效的用来构建、…

JavaScript中的深拷贝(deep copy)和浅拷贝(shallow copy)

聚沙成塔每天进步一点点 ⭐ 专栏简介 前端入门之旅&#xff1a;探索Web开发的奇妙世界 欢迎来到前端入门之旅&#xff01;感兴趣的可以订阅本专栏哦&#xff01;这个专栏是为那些对Web开发感兴趣、刚刚踏入前端领域的朋友们量身打造的。无论你是完全的新手还是有一些基础的开发…

突发!该国教育部将MDPI、Hindawi和Frontiers三大出版商打包“拉黑”了!

最近&#xff0c;基于对学术诚信和作者署名的特别关切&#xff0c;马来西亚大学教育部发布了一项声明&#xff0c;禁止该国的公立大学使用政府预算来支付在MDPI、Hindawi和Frontiers三家学术出版商旗下的所有期刊上发表论文的费用。 马来西亚大学教育部还成立了一个特别委员会…

MyCat-web安装文档:安装Zookeeper、安装Mycat-web

安装Zookeeper A. 上传安装包 zookeeper-3.4.6.tar.gzB. 解压 #解压到当前目录&#xff0c;之后会生成一个安装后的目录 tar -zxvf zookeeper-3.4.6.tar.gz#加上-c 代表解压到指定目录 tar -zxvf zookeeper-3.4.6.tar.gz -C /usr/local/C. 在安装目录下&#xff0c;创建数据…

Attention Is All You Need(中文版)

目录 1 简介 2 背景 3 模型结构 3.1 编码器和解码器 3.2 注意力机制 3.2.1 缩放的点积注意力机制 3.2.2 多头注意力机制 3.2.3 Transformers中的注意力机制 3.3 基于位置的前馈神经网络 3.4 词嵌入和 softmax 3.5 位置编码 4 为什么选择自注意力机制 5 训练 5.1 硬件和时间 5.2…

深眸科技自研AI视觉分拣系统,实现物流行业无序分拣场景智慧应用

在机器视觉应用环节中&#xff0c;物体分拣是建立在识别、检测之后的一个环节&#xff0c;通过机器视觉系统对图像进行处理&#xff0c;并结合机械臂的使用实现产品分类。 通过引入视觉分拣技术&#xff0c;不仅可以实现自动化作业&#xff0c;还能提高生产线的生产效率和准确…