echarts 睡眠时间段+日期

news/2025/3/10 15:56:37/文章来源:https://www.cnblogs.com/dreammiao/p/18517312
效果图:

关键方法代码:

const initChartDataTwo = (scollectT, dataL) => {
//给一个测试的数据

scollectT = [
"2024-10-29",
"2024-10-25",
"2024-10-24",
"2024-10-22",
"2024-10-18",
"2024-10-16",
"2024-09-18"
]

dataL= 

[
{
"sleepTime": "2024-10-28 21:00:00",
"weekupTime": "2024-10-29 15:00:00",
"sleepDuration": "18.0",
},
{
"sleepTime": "2024-10-25 13:20:00",
"weekupTime": "2024-10-25 15:35:00",
"sleepDuration": "2.25",
},
{
"sleepTime": "2024-10-24 13:00:00",
"weekupTime": "2024-10-24 15:00:00",
"sleepDuration": "2.0",
},
{
"sleepTime": "2024-10-22 01:00:00",
"weekupTime": "2024-10-22 08:00:00",
"sleepDuration": "7.0",
},
{
"sleepTime": "2024-10-17 20:00:00",
"weekupTime": "2024-10-18 06:00:00",
"sleepDuration": "10.0",
},
{
"sleepTime": "2024-10-15 20:00:00",
"weekupTime": "2024-10-15 23:00:00",
"sleepDuration": "3.0",
},
{
"sleepTime": "2024-09-17 20:00:00",
"weekupTime": "2024-09-18 06:00:00",
"sleepDuration": "10.0",
}
]

  let timeData = dataL.map((item) => {
    return item.endTime
  })
  let timeDuration = dataL.map((item) => {
    return Number(item.sleepDuration)
  })
  let chartMain = document.getElementById('chartMain')
  myChart = echarts.getInstanceByDom(chartMain)
  if (!myChart) {
    myChart = echarts.init(chartMain)
  }
  // 修改echarts 图表 option
  const option = {
    tooltip: {
      trigger: 'axis',
      axisPointer: {
        type: 'shadow'
      },
      formatter: function (params) {
        let sleepTime = dataL[params[0].dataIndex].Hours
        let sleepDuration = dataL[params[0].dataIndex].sleepDuration
        return (
          '入睡时间:' + sleepTime + '<br/>' + '睡眠时长:' + ' : ' + Number(sleepDuration) + '小时'
        )
      }
    },
    grid: {
      left: '3%',
      right: '4%',
      bottom: 55,
      containLabel: true
    },
    xAxis: {
      type: 'category',
      data: scollectT
    },
    dataZoom: [
      {
        show: true,
        height: 35,
        xAxisIndex: [0],
        bottom: 15,
        startValue: timeData.length - 9,
        endValue: timeData.length,
        handleIcon:
          'path://M306.1,413c0,2.2-1.8,4-4,4h-59.8c-2.2,0-4-1.8-4-4V200.8c0-2.2,1.8-4,4-4h59.8c2.2,0,4,1.8,4,4V413z',
        handleSize: '110%',
        handleStyle: {
          color: '#d3dee5'
        },
        textStyle: {
          color: '#fff'
        },
        borderColor: '#90979c'
      },
      {
        type: 'inside',
        show: true,
        height: 15
      }
    ],
    yAxis: {
      type: 'value',
      min: 0,
      max: 24,
      interval: 4,
      axisLabel: {
        show: true,
        formatter: function (value) {
          if (value - 18 < 0) {
            if (Math.abs(value - 18) < 10) {
              return '0' + Math.abs(value - 18) + ':00'
            } else {
              return Math.abs(value - 18) + ':00'
            }
          } else {
            if (Math.abs(42 - value) < 10) {
              return '0' + Math.abs(42 - value) + ':00'
            } else {
              return Math.abs(42 - value) + ':00'
            }
          }
        }
      }
    },
    series: [
      {
        name: 'Placeholder',
        type: 'bar',
        stack: 'Total',
        silent: true,
        itemStyle: {
          borderColor: 'transparent',
          color: 'transparent'
        },
        barWidth: '20',
        emphasis: {
          itemStyle: {
            borderColor: 'transparent',
            color: 'transparent'
          }
        },
        data: timeData
      },
      {
        name: 'Income',
        type: 'bar',
        stack: 'Total',
        barWidth: '20',
        label: {
          show: false,
          position: 'top'
        },
        data: timeDuration
      }
    ]
  }
  myChart.setOption(option)
}

 //给两个时间的方法

const formatDateTime = (timeStamp, returnType) => {
  const date = new Date(timeStamp)
  //   date.setTime(timeStamp * 1000)
  const y = date.getFullYear()
  let m = date.getMonth() + 1
  m = m < 10 ? '0' + m : m
  let d = date.getDate()
  d = d < 10 ? '0' + d : d
  let h = date.getHours()
  h = h < 10 ? '0' + h : h
  let minute = date.getMinutes()
  let second = date.getSeconds()
  minute = minute < 10 ? '0' + minute : minute
  second = second < 10 ? '0' + second : second
  let dateTime = ''
  if (returnType == 'hours') {
    dateTime = Number(date.getHours())
  } else if (returnType == 'date') {
    dateTime = y + '-' + m + '-' + d
  } else if (returnType == 'hoursStr') {
    dateTime = h + ':' + minute
  } else if (returnType == 'check-Y-D') {
    dateTime = m + '/' + d
  } else if (returnType == 'year') {
    dateTime = y
  }
  return dateTime
}
const formatDateTimeTwo = (timeStamp, timeStampTwo, returnType) => {
  let date = new Date(new Date(timeStampTwo).getTime() - new Date(timeStamp).getTime())
  const y = date.getFullYear()
  let m = date.getMonth() + 1
  m = m < 10 ? '0' + m : m
  let d = date.getDate()
  d = d < 10 ? '0' + d : d
  let h = date.getHours()
  h = h < 10 ? '0' + h : h
  let minute = date.getMinutes()
  let second = date.getSeconds()
  minute = minute < 10 ? '0' + minute : minute
  second = second < 10 ? '0' + second : second
  let dateTime = ''
  if (returnType == 'hours') {
    dateTime = Number(date.getHours()) - 12
  }
  //   else if (returnType == 'date') {
  //     dateTime = y + '-' + m + '-' + d
  //   }
  return dateTime
}

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

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

相关文章

威联通NAS开机报错数据恢复

针对威联通NAS开机报错的数据恢复问题,以下是一些建议的解决步骤和恢复方法: 一、初步检查与诊断 检查硬件状态: 确保NAS设备的电源正常连接,并检查所有硬盘是否都正常工作。 如果可能,尝试重新插拔硬盘或更换故障硬盘。 2.查看错误代码和日志: 登录NAS管理界面(如果还能…

服务器漏洞修复和php一键安装包环境 nginx 安装拓展模块

服务器漏洞修复header头缺失问题https://blog.51cto.com/u_16213703/10249280add_header X-XSS-Protection 1; mode=block;add_header X-Frame-Options SAMEORIGIN;add_header X-Content-Type-Options nosniff;add_header X-Download-Options: noopen;add_header Set-Cookie &q…

为什么要有PDM数据管理系统

企业需要有PDM数据管理系统,是因为它具备如下功能:一、优化数据组织与存储;二、提升团队协作效率;三、确保数据安全与可追溯性;四、加快产品开发周期;五、支持智能决策和数据分析。优化数据组织与存储可以减少重复工作,并确保数据的一致性和可靠性。一、优化数据组织与存…

单据表头录入控件长度调整

单据表头的控件长度,如果单个控件改变长度,就会出现错位的情况,所以只有所有控件长度统一调整才行,方法如下 1、修改安装目录S3\Program目录下Web.Config中的相关配置2、记事本打开web.config找到DefaultSkin,把这个DefaultSkin改成owner 。改成: defaultSkinName="…

Vue组件化–知识补充

全局CSS和局部CSS 当我们需要CSS只在当前的.vue文件中生效可以在style后面添加scoped创建vue项目的方式 1.Vue Cli:vue create 基于--->webpack 2.npm init vue@latest 基于-->vite1.安装一个本地工具:create-vue2.使用create-vue创建一个Vue项目

jmeter压测接口报出现503解决办法

jmeter界面还有503报错2024/10/30 17:53:54 [error] 6522#0: *60199372 limiting connections by zone "perip", client: 116.25.118.145, server: rider-mall.test3.fnjkj.cn, request: "POST /rider/order/userBrowse/userOrderQuery HTTP/1.1", host: &…

快消行业 | 超高效拜访路线规划, 抓住“每一片”利润

高效拜访,关键在于科学规划。如何避免漏访、无效拜访或拜访不及时?拜访路线规划是破局之策,它直击终端拜访的核心痛点,助力实现最佳拜访效果,进而提升终端门店销售业绩。 传统拜访模式下,业务人员往往因无提前规划而效率低下,问题频发。科学的拜访路线规划,能精准缩减行…

Java爬虫:在1688上“夺宝奇兵”获取店铺详情

想象一下,你是一名勇敢的探险家,手持藏宝图,在数字世界的海洋中寻找那传说中的宝藏——1688店铺详情。 今天,我们将一起化身为代码界的“夺宝奇兵”,使用Java爬虫技术,揭开1688店铺详情的神秘面纱。准备好 你的帽子和鞭子,我们即将启程!背景介绍 你是否曾在浏览1688时,…

推荐一个 ASP.NET Core 的轻量级插件框架

前言 本文将介绍一个专为ASP.NET Core设计的轻量级插件框架——PluginCore,该框架不仅能够简化插件的开发与集成,还能大幅提高开发效率。 另外,还将简要介绍相关的前端技术和SDK支持,帮助我们快速上手。 项目介绍 PluginCore是一个轻量级插件框架,通过最小化的配置简化插件…

NocoBase 本周更新汇总:提升表格区块渲染性能等

NocoBase 本周更新汇总 2024-10-31汇总一周产品更新日志,最新发布可以前往我们的博客查看。 NocoBase 目前更新包括两个分支:main 和 next 。 main :截止目前最稳定的版本,推荐安装此版本。 next:内测版,包含一些未发布的新特性,这个版本可能还不完全稳定,适用于开发者…

数智驱动,纷享销客助力万东医疗实现精细化管理

数字化浪潮正在席卷整个医疗影像行业,数字化工具对疾病诊疗效率和诊疗质量的提升也有目共睹。北京万东医疗科技股份有限公司(以下简称“万东医疗”,股票代码 600055)成立于1955年,1997 年在上海证交所上市,是美的集团旗下企业,经过60多年的发展,万东医疗从低端普放到终…

低代码平台库存管理新策,定制化方案轻松构建

经销商利用ZohoCreator低代码开发系统实现库存管理系统现代化,提高运营效率,支持全渠道整合、仓库优化等,快速响应需求,实现数字化转型,系统安全可扩展,助力企业应对市场挑战。一、业务挑战与需求 这家经销商在全球范围内采购关键部件,涵盖中国、美国、印度等多个国家和…