FullCalendar日历组件集成实战(7)

背景

有一些应用系统或应用功能,如日程管理、任务管理需要使用到日历组件。虽然Element Plus也提供了日历组件,但功能比较简单,用来做数据展现勉强可用。但如果需要进行复杂的数据展示,以及互动操作如通过点击添加事件,则需要做大量的二次开发。
FullCalendar是一款备受欢迎的开源日历组件,以其强大的功能而著称。其基础功能不仅免费且开源,为开发者提供了极大的便利,仅有少量高级功能需要收费。然而,尽管该组件功能卓越,其文档却相对简洁,导致在集成过程中需要开发者自行摸索与探索,这无疑增加了不少学习和验证的时间成本。
为此,本专栏通过日程管理系统的真实案例,手把手带你了解该组件的属性和功能,通过需求导向的方式,详细阐述FullCalendar组件的集成思路和实用解决方案。
在介绍过程中,我们将重点关注集成要点和注意事项,力求帮助开发者在集成过程中少走弯路,提供有效的避坑指南,从而提升开发效率,更好地利用这款优秀的日历组件。

官网:https://fullcalendar.io/
image.png
环境Vue3+Element Plus+FullCalendar 6.1.11。

使用

设置事件颜色

应用通常需要根据事件属性进一步来设置不同颜色,区分事件的类型、状态、重要程度或优先级。
例如,高优先级使用红色、中优先级使用黄色、低优先级使用绿色 。

有三个属性来细粒度控制:
backgroundColor:背景颜色
borderColor:边框颜色
textColor:文本颜色

在加载数据时,根据属性设置颜色,源码如下:

 // 加载数据loadData() {this.$api.personaltask.task.listWithChildren().then((res) => {if (res.data) {const eventArray = res.data.map((item) => {// 若起止时间均为00:00:00,则设置为allDay属性为truelet allDay = falseif (item.startTime &&item.endTime &&item.startTime.substr(11, 8) === '00:00:00' &&item.endTime.substr(11, 8) === '00:00:00') {allDay = true}// 根据优先级设置不同的颜色let color = '#000000'switch (item.priority) {case 'HIGH':color = '#FF0000'breakcase 'MEDIUM':color = '#FFFF00'breakcase 'LOW':color = '#00FF00'break}return {id: item.id,title: item.name,start: item.startTime,end: item.endTime,allDay: allDay,status: item.status,textColor: color}})this.eventData = eventArraythis.filteData()}})}

效果如下:
image.png
这里发现一个问题:颜色设置对全天事件所有视图生效;对非全天事件,周视图和日视图生效,月视图无效,怀疑是组件bug或者设计时没有考虑到这方面。

尝试了另一种方式,覆写事件内容展示的回调方法eventContent。

 eventContent(arg) {let event = arg.event// 根据优先级设置不同的颜色let color = '#000000'switch (event.extendedProps.priority) {case 'HIGH':color = '#FF0000'breakcase 'MEDIUM':color = '#FFFF00'breakcase 'LOW':color = '#00FF00'break}this.eventData.forEach((item) => {if (item.id === event.id) {item.textColor = colorreturn}})return '标题'}

测试发现,还是仅对全天事件生效,进一步印证了前面推测,对于非全天事件,不受textColor属性控制。
image.png
该方式不仅没达到目的,还得完全自己输出事件的内容展示(上面统一固化为“标题”仅为了测试颜色效果),此路不通,放弃。

该问题暂时搁置,后续有了解决方案再修订。

设置事件排序

同一单元格内多个事件,显示时谁先谁后,如何控制?
组件内置了事件排序控制,其属性为eventOrder,可接受多类型的值(String / Array / Function),默认为"start,-duration,allDay,title",代表优先按开始时间、持续时长、全天事件和标题排序。
其中duration前的减号,代表降序,无减号则代表升序。

官方预置的默认排序规则相对是最合理的选择了,此处不做调整,仅做备忘。
若日后需要按照优先级排序,可从该处着手探索解决方案。

设置事件最小高度

默认情况,事件的最小高度是15像素,当事件较多时,会自动缩小字体类适配。
image.png
这种方式可以按时间规整排列,但字体大小不同,特别是字太小影响查看。
可以通过设置eventMinHeight属性来调整最小高度,如下:

// 视图个性化配置设置
views: {dayGridMonth: {},timeGridWeek: {},timeGridDay: {// 列表视图中事件最小高度eventMinHeight: 50},listMonth: {}
},

调整后效果如下:
image.png
字体大小一致了,不会过小,不过事件就不再规整了,需要调整下事件查看习惯,从上到下,从左到右,这种方式充分利用了屏幕,个人推荐该方式。

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

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

相关文章

Pip,whl,源码编译安装Python库

pip安装 pip 是 Python 包管理工具,用于安装和管理 Python 包。pip 是 Python 开发中不可或缺的工具,能够帮助开发者轻松地管理项目所需的各种库和依赖。无论是安装新包、升级现有包还是卸载不需要的包,pip 都提供了简单而强大的命令来完成这…

中国改革报是什么级别的报刊?在哪些领域具有较高的影响力?

中国改革报是什么级别的报刊?在哪些领域具有较高的影响力? 《中国改革报》是国家发展和改革委员会主管的全国性综合类报纸。它在经济领域和改革发展方面具有重要的影响力,是传递国家政策、反映改革动态的重要平台。该报对于推动中国的经济改…

Pulsar 社区周报 | No.2024-05-24

“ 各位热爱 Pulsar 的小伙伴们,Pulsar 社区周报更新啦!这里将记录 Pulsar 社区每周的重要更新,每周发布。 ” Pulsar Weekly Merge Stars 感谢以下的小伙伴,感谢你们本周为 Apache Pulsar 做的精彩贡献(排名不分先后&…

C++的数论相关算法

数论是数学的一个分支,主要研究整数的性质和关系。在计算机科学中,数论算法对于密码学、优化问题和算法分析等方面都具有重要作用。C作为一种高效的编程语言,非常适合用来实现这些算法。下面我们将介绍几个C中的数论相关算法,包括…

一篇文章教你入门Python

💝💝💝欢迎莅临我的博客,很高兴能够在这里和您见面!希望您在这里可以感受到一份轻松愉快的氛围,不仅可以获得有趣的内容和知识,也可以畅所欲言、分享您的想法和见解。 推荐:「stormsha的主页」…

[Algorihm][简单多状态DP问题][买卖股票的最佳时机含冷冻期][买卖股票的最佳时机含手续费]详细讲解

目录 1.买卖股票的最佳时机含冷冻期1.题目链接买卖股票的最佳时机含冷冻期2.算法原理详解3.代码实现 2.买卖股票的最佳时机含手续费1.题目链接2.算法原理详解3.代码实现 1.买卖股票的最佳时机含冷冻期 1.题目链接 买卖股票的最佳时机含冷冻期 2.算法原理详解 思路&#xff…

基于jeecgboot-vue3的Flowable新建流程定义(三)

因为这个项目license问题无法开源,更多技术支持与服务请加入我的知识星球。 接上一节 8、同时可以进行流程的编辑 /** 编辑流程设计弹窗页面 */const handleLoadXml (row) > {console.log("handleLoadXml row",row)designerData.title "流程设…

SW手势定义

crtle:独立; T:测量;R隐藏;视图>用户界面>动态显示父子关系 crtld:相同零件; alte:草图显示; altw:基准面显示; ALTZ:上一视图;

MyBatis框架的使用:mybatis介绍+环境搭建+基础sql的使用+如何使用Map传入多个参数+返回多个实体用List或者Map接收+特殊sql的使用

MyBatis框架的使用:mybatis介绍环境搭建基础sql的使用如何使用Map传入多个参数返回多个实体用List或者Map接收特殊sql的使用 一、MyBatis介绍1.1 特性1.2 下载地址1.3 和其它持久层技术对比 二、搭建环境2.1配置maven2.2 创建mybatis配置文件2.3 搭建测试环境 三、基…

JAVA:Spring Boot整合MyBatis Plus持久层

1、简述 MyBatis Plus是MyBatis的增强工具包,它在MyBatis的基础上进行了扩展,提供了许多便捷的功能,例如通用CRUD操作、分页插件、代码生成器等。使用MyBatis Plus,开发者可以更加方便地进行持久层操作,并且减少了很多…

自动驾驶---Perception之IPM图和BEV图

1 前言 IPM(Inverse Perspective Mapping,逆透视变换)图的历史可以追溯到计算机视觉和图像处理领域的发展。逆透视变换是一种用于消除图像中透视效应的技术,使得原本由于透视产生的形变得以纠正,进而更准确地描述和理解…

【优选算法】位运算 {位运算符及其优先级;位运算的应用:判断位,打开位,关闭位,转置位,位图,get lowbit,close lowbit;相关编程题解析}

一、位运算符及其优先级 我们知道,计算机中的数在内存中都是以二进制形式进行存储的 ,而位运算就是直接对整数在内存中的二进制位进行操作,因此其执行效率非常高,在程序中尽量使用位运算进行操作,这会大大提高程序的性…

04_前端三大件JS

文章目录 JavaScript1.JS的组成部分2.JS引入2.1 直接在head中通过一对script标签定义脚本代码2.2创建JS函数池文件,所有html文件共享调用 3.JS的数据类型和运算符4.分支结构5.循环结构6.JS函数的声明7.JS中自定义对象8.JS_JSON在客户端使用8.1JSON串格式8.2JSON在前…

弘君资本股市行情:股指预计保持震荡上扬格局 关注汽车、银行等板块

弘君资本指出,近期商场体现全体分化,指数层面上看,沪指一路震动上行,创出年内新高,创业板指和科创50指数体现相对较弱,依然是底部震动走势。从盘面体现上看,轮动依然是当时商场的主基调&#xf…

IBERT眼图扫描(高速收发器八)

前文讲解了GTX的时钟及收发数据通道的组成,之后讲解了眼图、加重、均衡等原理及原因,本文通过xilinx提供的IBERT IP完成实际工程的眼图扫描,确定加重和幅值调节的参数。 1、回环模式 在此之前,需要了解一下GTX的回环模式。如果板…

【字典树(前缀树) 字符串】2416. 字符串的前缀分数和

本文涉及知识点 字典树(前缀树) 字符串 LeetCode 2416. 字符串的前缀分数和 给你一个长度为 n 的数组 words ,该数组由 非空 字符串组成。 定义字符串 word 的 分数 等于以 word 作为 前缀 的 words[i] 的数目。 例如,如果 words [“a”,…

【list】list库介绍 + 简化模拟实现

本节博客先对list进行用法介绍,再在库的基础上简化其内容和形式,简单进行模拟实现,有需要借鉴即可。 目录 1.list介绍1.1 list概述1.2相关接口的介绍 2.简化模拟实现3.各部分的细节详述3.1结点3.2迭代器细节1:迭代器用原生指针还是…

【Codesys】-执行第三方程序,或Windows脚本

该记录旨在解决RTE作为第一个Windows的一个exe程序不能调用其他程序的问题。 可以实现:在PLC界面打开第三方程序、在PLC界面关闭本机Windows操作系统 首先添加依赖库-SysProcess,3.5.17.0 然后在程序里执行相应的指令,该指令可以被Windows识别为类似于执行Bat文件…

国产操作系统上使用rsync恢复用户数据 _ 统信 _ 麒麟 _ 中科方德

原文链接:国产操作系统上使用rsync恢复用户数据 | 统信 | 麒麟 | 中科方德 Hello,大家好啊!今天给大家带来一篇关于在国产操作系统上使用rsync备份并还原用户数据的文章。rsync是一款功能强大的文件同步和备份工具,广泛用于Linux系…

河南乙级道路与桥梁资质年审材料准备要点解析

河南乙级道路与桥梁资质年审材料准备要点解析如下:河南宽信权经理 一、企业基本情况材料 营业执照副本复印件:确保复印件清晰、完整,并加盖企业公章。 企业章程:提供最新的企业章程,并加盖企业公章。此材料需反映企业…