inBuilder 低代码平台新特性推荐 - 第二十期

今天来给大家带来的是 inBuilder 低代码平台特性推荐系列第二十期——菜单导航模式个性化示例。

场景介绍

目前平台提供了四种菜单导航模式,包括分组视图、列表视图、横向视图、平铺视图,均为横向导航,这些也是主流的菜单导航模式。

在某些项目上用户希望使用左侧树导航,也就是也就是将导航菜单放置左侧固定,页面布局上基本为左右结构,针对这类的菜单个性化定制需求,平台也提供了扩展的机制。

本文将呈现两种菜单个性化定制效果,如下,并详细描述扩展的过程。

1、左侧树导航, 将菜单栏放置在左侧,页面布局上基本为左右结构,将导航菜单放置左侧固定

2、混合导航,顶部导航与侧边导航进行结合。通常将一级导航菜单放置顶部,通过一级菜单的点击后,展示侧边的二、三级菜单 。

运行效果

1、侧边导航

本例在默认风格科技蓝的基础上进行调整,整个风格还是蓝色基调,运行效果如下图:

2、 混合导航效果如下:

开发步骤

说明: 运行框架将主界面视图层划分了多个可扩展的区域(如下图示意):顶部header、workbench左侧、workbench右侧,重写可扩展区域的DOM结构,可以实现多种导航模式,如:左侧树导航(运行效果图1)、混合式导航(运行效果图2)。实现过程主要分两步:

第一步: 扩展框架预留的加载前扩展脚本【\web\platform\runtime\common\web\gsprtf\preload.js】,扩展脚本中预留了约定的扩展方法,定制实现预留方法,可重写界面布局,实现想要的菜单导航模式。

第二步: 基于第一步,扩展的DOM里会用到很多自定义的样式,那么可以将自定义样式定制为扩展主题皮肤,框架加载扩展DOM的时候,可以加载这些自定义样式。

以下两种导航模式的实现过程均基于这两步实现,具体实现过程请参见下文1左侧树导航实现过程和2混合导航实现过程。

1 左侧树导航实现过程

1.1 扩展框架预留的preload.js脚本

框架预留了加载前扩展脚本【\web\platform\runtime\common\web\gsprtf\preload.js】,并提供了加载前的扩展服务接口,在框架加载前,可以从扩展脚本preload.js里边调用,可以获取菜单、工具栏、个人信息等相关内容,支持ajax通信。根据菜单、工具栏等基本信息,可以构建扩展布局结构。

本例场景1中要实现左侧树导航模式,那么可以修改preload.js,在此文件的getCustomLeftAreaTemp()方法中返回组织好的竖导航DOM结构,因为扩展脚本较多,可点击下载本例交付物,查看preload.js文件。

1.2 扩展主题皮肤

上一步骤中扩展的树形导航DOM里会用到很多自定义的样式,那么可以将自定义样式定制为扩展主题皮肤,框架加载扩展DOM的时候,可以加载这些自定义样式。

1.2.1 预制主题皮肤数据

预制主题皮肤数据需要在对应数据库表中预制,主题皮肤配置表为gspThemesConfig ,打开 gspThemesConfig后,手动插入一条数据,即新增一种新颜色的配置,在填写各列值时可参考type值为color的默认配置行中的各列值,需要注意的是要将新增行的”defaultflag”列值设置为1,即设置为默认样式;其余type值为color的配置行的“defaultflag”列值全设置为0。

本例新增的主题配置数据如下红框内:

1.2.2 添加样式

1.在【\web\platform\runtime\sys\web\assets\style\themes】目录下新建文件夹“HandsOnLab”,即以新主题的标识(颜色)命名,该主题(颜色)对应表【gspthemesconfig】中的code列值,即上图红框处。

2.基于上一步骤,在【\web\platform\runtime\sys\web\assets\style\themes\HandsOnLab】目录下添加“gsp-cloud-web.css”文件,可以用来对首页样式以及自定义的竖导航样式进行修改。 可点击下载本例交付交付物本例交付交付物,查看“gsp-cloud-web.css”文件。

3.在【\web\platform\runtime\sys\web\assets\style\themes\HandsOnLab】目录下添加“fonts”文件夹,放置“FontAwesome”图表库相关文件。可点击下载本例交付交付物本例交付交付物,查看“FontAwesome”文件。

4.在【\web\platform\runtime\sys\web\assets\custom\launcher】目录下放置图标logo图片。

1.3 修改主页标题

在本例场景1中,即运行效果中第一个界面,修改了主页的Logo和标题,改成了“HandsOnLab 动手实验室”,

如果项目上也替换程自己的Logo或者标题,那么可以直接打开 gspFrameworkConfig表,修改id为“frm-custom-config-key”这条记录,配置首页标题,以及菜单展开按钮的显隐,修改“frmconfigs” 列的值为,

1.  {"logoImg":"handsonlablogo.png","frmIcon":"", "frmShortcutIcon":"","navigationShown":0}

其中logoImg为 运行框架左上角LOGO文件名称 ,

将文件部署在“\web\platform\runtime\sys\web\assets\custom\launcher”路径下 。

1.4 选择主题

欢迎大家下载inBuilder开源社区版,体验上述特性,开启低代码开发之旅!

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

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

相关文章

05-控制流(分支结构)

05-控制流(分支结构) 一、二路分支 程序中某一段代码需要满足一定的条件才会被执行。 if 语句:用于表达一种条件,如果条件满足则执行某个代码块。if-else 语句:用于表达一种条件,如果条件满足则执行某个代码块,否则…

css文本超长溢出显示省略号 ...

1、单行文本溢出省略 对于单行文本,可以使用以下CSS样式来实现溢出省略号显示: .single-line-ellipsis { width: 100px; /* 设置容器宽度 */ overflow: hidden; /* 隐藏超出容器的内容 */ text-overflow: ellipsis; /* 用省略号表示溢出的文本 */ whit…

车载以太网测试要测些什么呢?

车载以太网测试大致可以分成两块:TC8测试和以太网通信测试。 TC8测试全称TC8一致性测试,其规范由OPEN联盟制定,包括车载以太网ECU从物理层到应用层的各层互操作性以及常规基础功能服务。目的在于提高不同ECU之间的兼容性。 TC8测试规范可以…

基于Golang的AOI算法实现与优化

本文深入探讨了AOI(Area of Interest)算法在游戏开发中的重要性,详细介绍了如何使用Golang语言实现AOI算法,包括网格法、四叉树、十字链表等实现方式,并讨论了性能优化策略及实际应用场景。 文章目录 AOI算法概述AOI算…

Springboot项目:使用MockMvc测试get和post接口(含单个和多个请求参数场景)

一、引入MockMvc依赖 使用MockMvc&#xff0c;必须要引入依赖 <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-test</artifactId><scope>test</scope></dependency>二、具体演示…

差分原理+练习

差分的原理和前缀和相似&#xff0c;我们先联想一下前缀和。 前缀和计算下标从0到n的和&#xff0c;记为sum[n1];如果想要求出[l,r]区间的和&#xff0c;可以快速的通过sum[r1]-sum[l]来得到 。 前缀和适用于需要多次获取指定连续区间和的情景 而差分即计算相邻两个元素的差…

搜索与图论:树的重心

搜索与图论&#xff1a;树的重心 题目描述参考代码 题目描述 输入样例 9 1 2 1 7 1 4 2 8 2 5 4 3 3 9 4 6输出样例 4参考代码 #include <cstring> #include <iostream> #include <algorithm>using namespace std;const int N 100010, M N * 2;int n, m…

在Vue中使用websocket的流程

在Vue中使用WebSocket的完整流程可以总结如下&#xff1a; 安装WebSocket库&#xff08;如果需要&#xff09; 如果你选择使用特定的Vue WebSocket库&#xff08;如vue-websocket&#xff09;&#xff0c;你可以通过npm进行安装。 npm install vue-websocket --save或者&#…

【VUE 具名插槽的应用】

具名插槽类似于提前将布局安排好&#xff0c;但内容为空&#xff0c;一旦有具体内容填充进来&#xff0c;可以很和谐的展示&#xff0c;不影响整体效果。&#x1f347; “举个&#x1f330;&#xff1a;系统里大部分页面的查询条件是相同的&#xff0c;所以需要封装一个公用的查…

【2024最新华为OD-C/D卷试题汇总】目录管理器 (200分) - 支持在线评测+三语言AC题解(Python/Java/Cpp)

🍭 大家好这里是清隆学长 ,一枚热爱算法的程序员 ✨ 本系列打算持续跟新华为OD-C/D卷的三语言AC题解 💻 ACM银牌🥈| 多次AK大厂笔试 | 编程一对一辅导 👏 感谢大家的订阅➕ 和 喜欢💗 在线评测链接 目录管理器 (200分) 🌍 评测功能需要订阅专栏后私信联系清隆解…

【Python Cookbook】S01E23 以不区分大小写的方式对文本做查找和替换 re.IGNORECASE

目录 问题解决方案讨论 问题 如果我们需要从一段字符串中以不区分大小写的方式做查找和替换&#xff0c;该怎么做&#xff1f; 解决方案 正则化模块 re 提供 re.IGNORECASE 标识从而实现以不区分大小写的方式做查找和替换。 查找 re.findall() import retext "UPPER…

如何在QGIS中加载高清卫星影像?

我们在《如何在GlobalMapper中加载高清卫星影像》一文中&#xff0c;分享了在GlobalMapper中加载卫星影像的方法。 这里再为你分享如何在QGIS中加载高清卫星影像的方法&#xff0c;并可以在文末查看领取软件安装包和图源的方法。 如何加载高清图源&#xff1f; 要在QGIS中在…

接口签名和postman预处理生成签名

nestjs后端代码 controller Get(md5hmacSHA1b64)postMd5hmacSHA1b64(Req() request: Request, Query() query) {// 获取GET请求参数const queryParamsMap new Map(Object.entries(query));return this.handleMd5hmacSHA1b64(queryParamsMap, request);}Post(md5hmacSHA1b64)U…

单点登录(SSO)前端怎么做

单点登录&#xff08;SSO&#xff09;前端怎么做 本文介绍单点登录&#xff08;SSO&#xff09;是什么&#xff0c;还有就是前端怎么做。 单点登录&#xff08;SSO&#xff09;是什么 单点登录&#xff08;SSO&#xff0c;Single Sign On&#xff09;&#xff0c;是在企业内部…

【再探】Java—Java 沙箱机制与类加载器

沙箱&#xff08;Sandbox&#xff09;机制是将Java程序限定在JVM特定的运行范围内&#xff0c;并严格限制代码对本地系统资源的访问&#xff0c;以保证代码的有效隔离&#xff0c;防止对本地系统造成破坏。 1 安全模型 类在加载过程中&#xff0c;类加载器会为类设置初始的安…

PyQt5中按钮长按指定时间后松开触发(鼠标事件)

背景&#xff1a;为了节约人力测试成本&#xff0c;模拟鼠标长按后松开&#xff0c;整理了这个简单的小demo 1、关键方法 实例鼠标按下事件 QMouseEvent(QEvent.MouseButtonPress, self.p_pos, Qt.MouseButton.LeftButton, Qt.MouseButton.LeftButton, Qt.NoModifier)实例…

常见的项目模块以及项目流程

1.图片轮播功能咋测的 接口&#xff0c;功能&#xff0c;影响面&#xff0c;性能&#xff0c;新旧数据兼容性测试 第一&#xff0c;测试环境查看旧数据功能是否正常&#xff0c;新增图片轮播是否正常&#xff0c;第二&#xff0c;自己写一个数据库数据迁移脚本将老数据迁移到…

gstreamer+mpp调用硬解码播放视频

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 前言一、cpu解码二、gstreamermpp1.默认已安装2.没安装必要软件 总结 前言 以前一直在MPP上开发硬解码推理&#xff0c;最近想弄一个盒子支持调用mpp硬解码播放视频…

跑图像生成模型GAN时,遇到OSError: cannot open resource 报错解决办法

报错信息如下&#xff1a; Traceback (most recent call last): File "/root/autodl-tmp/ssa-gan/pretrain_DAMSM.py", line 276, in <module> count train(dataloader, image_encoder, text_encoder, File "/root/autodl-tmp/ssa-gan/pretrain_DAMSM.py…