特效与样式(5)——Timetables的使用

news2024/9/21 14:38:09

第一次使用timetables做学校课表的开发,里面的门道东西挺多的,比我想的要复杂很多。包括我现在也只是实现了课表的初级效果。 主要是标题部分,数据部分,还有颜色控制部分。每个表格都需要一个控制颜色,每次写数据的时候,顺带要把背景颜色加入里面。 palette 颜色,这个地方是最复杂的,因为涉及到对应关系。颜色是按照表格里面的列一个一个控制的,这块做前端渲染的时候很容易绕进去。

该插件主要用来实现各种课表相关功能。 主要解析timestable.js的使用方法,还有变种类型开发

  var courseList = [
    ['英语', '英语', '', '', '', '', '毛概', '毛概8', '', '', '', '选修'],
    ['', '', '信号', '信号', '模拟', '模拟', '', '', '', '', '', ''],
    ['大学', '大学', '形势', '形势', '', '', '电路', '电路', '', '', '', ''],
    ['', '', '', '', '电装1', '电装', '', '', '', '体育', '体育', ''],
    ['', '', '数据', '数据', '', '', '', '', '信号', '信号', '', ''],
  ];  //这个数组里面的每一行数据在可视化表里面是每一列,我们后台需要进行转置处理  对比星期一到星期天,如果空缺,就空缺
  var week = window.innerWidth > 360 ? ['周一', '周二', '周三', '周四', '周五','周六','周日'] :
          ['一', '二', '三', '四', '五','六','日']; //列表相关数据
  var day = new Date().getDay();  //获取今天是星期几
  var courseType = [
    [{index: '1', name: '9:00'}, 1], //第一个index 是里面显示的标记  name表示这一行的信息
    [{index: '2', name: '10:00'}, 1], //最后一个1表示占据的行数,默认一行,当有多行需求的时候,需要打开多行
    [{index: '3', name: '11:00'}, 3],//这个表示  有过有数据的情况  会占据三行
    [{index: '4', name: '12:00'}, 1],
    [{index: '5', name: '13:00'}, 1],
    [{index: '6', name: '14:00'}, 1],
    [{index: '7', name: '15:00'}, 1],
    [{index: '8', name: '16:00'}, 1],
    [{index: '9', name: '17:00'}, 1],
    [{index: '10', name: '18:00'}, 1]
  ]; //这里对应的是每一行的数据 不够就不显示出来
  // 实例化(初始化课表)
  var Timetable = new Timetables({
    el: '#coursesTable',   // 渲染的dom的ID
    timetables: courseList, //时间格式
    week: week,  //星期模式  这样标题就会显示星期一到星期天
    timetableType: courseType, //左边的刻度 如果某一行需要俩行列表显示,需要重复
    highlightWeek: day,  //天数
    gridOnClick: function (e) {
      console.log(e); //点击每个格子触发的事件,例如看到每节课的备注详情
    },
    styles: {
     // palette: ['#dedcda', '#ff4081','#ff4081','#ff4081','#ff4081','#ff4081','#ff4081','#ff4081','#ff4081'],
      palette:['green','red'], //横方向数的颜色对应 row[1][1]  row[1][2] 会横向排列 这样可以控制每个格子的颜色显示
      Gheight: 50  //每个格子的高度
    }
  });

相关参数传入:

el  String(必传)  绑定dom节点的id('#id')
timetables  Array(必传)   日程表内容,格式为二维数组
week    Array(必传)   日程表头部周,格式为二维数组
timetableType   Array(必传)   日程表左侧分类,格式为二维数组
highlightWeek   Number  传入表头当天的索引,为日程表头部高亮某周增加一个class(可自定义样式)
styles  Object  日程表内容样式,具体使用见下文
merge   Boolean 是否合并一天内临近的相同日程(默认为true)
gridOnClick Function    单元格点击触发事件,方法参数中可获取到该格的信息
setOption   Function    实例化上的方法, 重新设置参数渲染表格,参数同上(没有el参数)1

进入开发: 最常用版本 直接替换 var courseList = [] 将里面组装数组,每个数组有7个元素,直接复用课表的模式。后台的拼接数据,第一个行的相关信息数据表示全部列的第一个数字,所以后端的存储格式$column [lie] [hang] 的二维数组。 对应的返回的数据格式:

每一行的数据对应了我们课表里面的每一行,而列也是对应了我们课表里面的列。改动的时间全部对应在列上面。

变种开发1: 是要查看每个课程的相关数据 左侧列表不再是刻度,而是每个课程。列表对应课程的班级 首先左侧的刻度要变掉,我们假设做一个三行 第三个课程比较多,占据了三列(每周排课最多的会显示列)

     var courseType = [
      [{name: '中国舞'}, 1],
      [{name: '毛笔'}, 1],
      [{name: '马术'}, 3],
    ]; 

然后通过课程数据:

    var courseListOther = [
         ["李老师,中国舞", "李老师,中国舞", "李老师,中国舞", "李老师,中国舞", "李老师,中国舞"],
         ["李老师,毛笔", "李老师,毛笔", "李老师,毛笔", "李老师,毛笔", "李老师,毛笔"],
         ["李老师,马术", "李老师,马术", "李老师,马术", "李老师,马术", "李老师,马术"],
         ["李老师,马术", '', "李老师,马术", "李老师,马术", "李老师,马术"],
         ["李老师,马术", "李老师,马术", '', "李老师,马术", "李老师,马术"],
    ];

我们要将每个写入的相同类型的数据,都赋值一个颜色。这样就可以确认可生成颜色是一样的。后台写入的数据逻辑:,生成一个逻辑二维数组,排序是 kecheng 星期几 第几节课 = 课程信息 然后每次写入一个数组到输出数组里面的时候,需要绑定一个格子的颜色(这样就变相的实现了每个格子的颜色是绑定的)

后端主要渲染的变量:

  var Timetable = new Timetables({
    el: '#coursesTable',
    timetables: courseList, //渲染数据
    week: week,
    timetableType: courseType, //左侧的数据
    merge: false,
    highlightWeek: day,
    gridOnClick: function (e) {
      console.log(e);
    },
    styles: {
      palette: {$kebiao.palette},  //渲染颜色
      Gheight: 100
    }
  });

实现的主要效果图:

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

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

相关文章

hyperf注解,自定义注解

注解是 Hyperf 非常强大的一项功能,可以通过注解的形式减少很多的配置,以及实现很多非常方便的功能。 结构 建立注解 在app下建立Annotation注解文件夹 在Annotation下建立Jim.php注解 下面的的Annotation 和 Target是全局注解,所以不需…

Go学习笔记(一)语法

标准库文档:Go语言标准库文档中文版 | Go语言中文网 | Golang中文社区 | Golang中国 B站课程:8小时转职Golang工程师(如果你想低成本学习Go语言) 课程作者语雀(首页有更多内容):8小时转职Golang工程师 语雀 代码仓…

C语言基础(二十)

链表是一种常见的数据结构,通常用来存储一系列元素,每个元素由一个节点来表示。在链表中,每个节点包含两部分:数据元素本身和指向下一个节点的指针。这种结构使得链表中的元素在内存中不是连续存储的,而是通过指针连接…

可拖拽表单设计器都有哪些突出特点?

为了提高效率、降低开发成本,利用低代码技术平台的优势特点可以实现这一目标。究竟什么是低代码技术平台?都有哪些值得夸耀的特点和优势?今天,我们就带着这些问题,一起来了解低代码技术平台、可拖拽表单设计器的多个优…

香港站群服务器优势

香港站群服务器因其独特的地理位置和网络连接优势,在SEO优化、网站群管理和网络营销等方面受到广泛关注。其优势主要体现在以下几个方面,rak小编为您整理发布。 地理位置优越 连接亚洲国际市场:香港作为亚太地区的重要经济中心,具…

华为2024年秋招-结构与材料工程师-结构方向-机试题(四套)(每套四十题)

华为2024年招聘-结构与材料工程师-结构方向-机试题(四套)(每套四十题) 岗位——结构与材料工程师 岗位意向——结构 真题题目分享,完整版带答案(有答案和解析,答案非官方,未仔细校正&#xff…

详细了解如何设计和实现一个SSO系统?

一、SSO系统有什么好处? 1、用户角度:一次登录多次使用,无需记录多套用户名和密码,省事省心。 2、系统管理员角度:管理员只需要维护好一个统一的账号中心就可以了,方便 3、新系统开发角度:新系统…

(二十六)STL vector容器(动态数组)

动态数组vector是标准模版库(STL, Stardard Template Library)中的模版,它有着节省空间和使用方便的优势,我们用一个形象的例子来说明: 开学了,有40个学生来报名,想要存储每个同学的姓名&#…

数字验证:一文弄懂UVM的factory机制

如果我们用SystemVerilog构建验证平台,构建好了之后,想改变平台中的某个组件,例如将driver改成driver_new,我们需要重新定义一下driver_new,当然也可以直接从driver继承。但是我们还需要在driver对象例化的地方将drive…

PHP同城派送多区域运营配送小程序源码

🚚💨「同城派送多区域运营小程序」——让每一份需求快速触达!🌈🚀 🔥 开篇燃爆:同城生活新风尚,一键速达不是梦! Hey小伙伴们,你还在为找不到合适的同城服务…

WEB渗透Win提权篇-PowerUp

提权工具合集包(免费分享): 夸克网盘分享 往期文章 WEB渗透Win提权篇-提权工具合集-CSDN博客 WEB渗透Win提权篇-RDP&Firewall-CSDN博客 WEB渗透Win提权篇-MSSQL-CSDN博客 WEB渗透Win提权篇-MYSQL-udf-CSDN博客 WEB渗透Win提权篇-Acc…

02-03:原理图与PCB交互以及快速模块化

1原理图与PCB交互 ①在PCB界面,点击工具, 勾选交叉选择模式 ②过滤器只选择元器件 2.按页快速模块化 配合F9快捷键

运放阻抗和噪声(同相放大器的输入/输出阻抗 + 电压跟随器阻抗 + 噪声 +信噪比)

2024-8-27,星期一,21:03,天气:阴雨,心情:晴。培训终于结束啦,开始轮岗了,看了两天PPT,加油加油,继续学习。 今天继续学习第六章运算放大器,主要学…

修改SpringBoot项目中MyBatis的mapper.xml文件的位置

由于MyBatis默认的mapper.xml的扫描位置是resource文件下,但是不可能整个项目的mapper.xml文件都放在resource下,如果文件较少还行,但是如果文件比较多,虽然有插件可以点击跳转,但是每次都这样也太麻烦了,所…

浙商之源——龙游商帮丨龙游商帮的具象文化符号之建筑篇

编撰者:袁勇 [三门源村] 三门源村位于浙江省龙游县石佛乡北部,距县城约28公里。因为进出村庄要经过三道屏障,且穿村而过的溪水又为塔石溪的源头,故称三门源。三门源群山环绕,仅有南面与金衢盆地相接,一泓溪…

无人机 PX4 飞控 | ROS应用层开发:指令(字符串)订阅功能

无人机 PX4 飞控 | ROS应用层开发:指令(字符串)订阅功能 指令(字符串)订阅功能代码测试 指令(字符串)订阅功能 为了通过键盘触发mavros 的不同功能,需要实现一个订阅字符串的功能 该…

【嵌入式开发之网络编程】Socket套接字及TCP、UDP通信的实现

Socket套接字 现有计算机网络体系结构有三种划分形式:OSI七层协议、TCP/IP四层协议结构、五层协议结构。具体介绍参考:【嵌入式开发之网络编程】网络分层、OSI七层模型、TCP/IP及五层体系结构 网络的体系结构 (Network Architecture) 是计算机网络的各…

MySQL索引(二)

MySQL索引(二) 文章目录 MySQL索引(二)MySQL有哪些索引?MySQL的主键是聚簇索引吗?聚簇索引和非聚簇索引的区别什么是覆盖索引什么是回表主键问题 外键约束什么是外键什么是外键约束外键带来的问题 联合索引最左匹配原则如何建立联合索引索引下推 学习地址…

适合 Spring Boot 3.0x的Redis 分布式锁

Spring Boot 中的 Redis 分布式锁 在分布式系统中,多个进程同时访问共享资源时,很容易出现并发问题。为了避免这些问题,我们可以使用分布式锁来保证共享资源的独占性。Redis 是一款非常流行的分布式缓存,它也提供了分布式锁的功能…

Ai+若依(页面调整--去除若依的各种痕迹,采用自己的):【07篇】

页面调整 如果使用若依框架项目做为脚手架,那么我们肯定需要在页面显示中,符合自己公司或者项目的标识才行,需要更换的地方很多,我们依次来解决它 浏览器标签页logo标识、标题 系统页面中的logo标识、标题 去除源码地址 & 文档地址 主题风格和菜单图标 登录名称及背景…