大数据可视化——在组件中使用翻牌器

本文涉及的产品
云原生大数据计算服务 MaxCompute,5000CU*H 100GB 3个月
云原生大数据计算服务MaxCompute,500CU*H 100GB 3个月
简介: 在组件中使用翻牌器

这一节主要说一下如何复用翻牌器

效果如下:

6b01477a90cc492dabd4abe9f19eeab7.gif

$parent

this.$parent 可以访问到父组件 上所有的 data(){ 里的数据信息和生命周期方法,methods里的方法 }!

setTimeout(() => {
        this.$parent.timedRefresh(this.userData, "user");
      }, 1000);

在Home.vue页面

// 设置文字滚动
    setNumberTransform(item) {
      const numberItems = document.querySelectorAll(`.${item.id}  i`);
      // const numberItems = this.$refs[`${item.id}`]
      const numberArr = item.valueArr.filter((item) => !isNaN(item));
      numberItems.forEach((t) => {
        t.style.transition = "transform 0s ease-in-out";
        t.style.transform = `translateY(-0%)`;
      });
      setTimeout(() => {
        numberItems.forEach((ls, index) => {
          ls.style.transition = "transform 0.8s ease-in-out";
          ls.style.transform = `translateY(-${numberArr[index] * 10}%)`;
        });
      }, 15);
    },
    // 定时
    initInterval (targetList, time) {
      const { setNumberTransform } = this
      return setInterval((function fn(){
        targetList.forEach(t => {
          setTimeout(() => {
            setNumberTransform(t)
          }, 50)
        })
        return fn
      })(), time)
    },
    // 刷新数字翻牌器
    timedRefresh(targetList, type) {
      let cityTimer;
      let userTimer;
      let deviceTimer;
      if (type === "city") {
        console.log('======')
        console.log(targetList)
        cityTimer = this.initInterval(targetList, 1000);
      } else if (type === 'user') { 
      console.log('======')
        console.log(targetList)
        userTimer = this.initInterval(targetList, 5000)
      } 
       if (type === 'device') {
         console.log('------------------');
         console.log(targetList);
        deviceTimer = this.initInterval(targetList, 8000)
      }
      this.$once("hook:beforeDestroy", () => {
        clearInterval(cityTimer);
        clearInterval(userTimer);
        clearInterval(deviceTimer);
        userTimer = null;
        cityTimer = null;
        deviceTimer = null;
      });
    },

下面进行测试

首先是做两个翻牌器,所以对其布局

<div class="equipment-top-title">
        <ul>
          <li v-for="item in doors" :key="item.id" :class="[{'d-online': item.id === 'd-online'}, {'d-off': item.id === 'd-off'}]">
              <div class="number-scroll">
               <span
               :class="[{'flop-figure': !isNaN(ls)}, {'flop-comma': isNaN(ls)}]"
                  v-for="(ls, index) in item.valueArr"
                  :key="item.id + index"
                >
                  <i v-if="!isNaN(ls)">0123456789</i>
                  <span v-else>{{ ls }}</span>
                </span>
              </div>
              <div>{{item.name}}</div>
            </li>
        </ul>
      </div>

css部分如下:这里用的less

.equipment-top-title {
    width: 100%;
    height: 40px;
    overflow: hidden;
/* 样式这里就是把ul长度缩小到一个行字符的高度,多出的部分用overflow隐藏就行了 */
     ul {
       width: 368px;
       background-color: #1674d6;
      margin: 0;
      display: flex;
      justify-content:space-around;
      text-align: center;
      li {
        background-color: #5ad8a6;
        list-style: none;
        color: rgba(255, 255, 255,0.7);
        font-size: 14px;
        .number-scroll{
          position: relative;
          color :#4a90e2;
          font-size: 36px;
          height :40px;
          display: inline-flex;
          align-items: center;
          justify-content: center;
        }
        >p:first-child{
          color: red;
          font-size: 33px;
        }
      }
      .d-off .number-scroll span{
        color: red; 
      }
      > li:first-child > p:first-child{
         color: #4a90e2
      }   
      .d-online{
        margin: 0;
        padding: 0;
      }
      .d-off{
        margin: 0;
        padding: 0;
      }
    }
  }

e783e58d398e4f99822892ce4b44658d.png

c390745dc7a04eae8b7805a7404ffa70.png

然后把值派发给父组件

this.$parent.timedRefresh(this.doors, 'device')

在父组件中通过if判断类型进行翻牌效果

39bf89fb4538414689966457a5c74132.png

这时就可以获得两个遍历后的数字

ed3af39ce0fd4f5fae0b5af5fed3d6b7.png

 4fe6e43d6555408e877d042d7604e529.png

总结:其主要思想就是将获取到的一个数据分割开来切割成一个一个数字,用0~9绑定对应的数字,从上往下依次滚动即可达到翻牌器的效果

7f0720d30454410a8675e2f5f592045f.png

设置文字滚动方式可以参考之前的文章Echarts前言——数字翻牌器在父组件中如何使用,这里就不一一演示了

最后看下效果

6b01477a90cc492dabd4abe9f19eeab7.gif


相关实践学习
基于MaxCompute的热门话题分析
本实验围绕社交用户发布的文章做了详尽的分析,通过分析能得到用户群体年龄分布,性别分布,地理位置分布,以及热门话题的热度。
SaaS 模式云数据仓库必修课
本课程由阿里云开发者社区和阿里云大数据团队共同出品,是SaaS模式云原生数据仓库领导者MaxCompute核心课程。本课程由阿里云资深产品和技术专家们从概念到方法,从场景到实践,体系化的将阿里巴巴飞天大数据平台10多年的经过验证的方法与实践深入浅出的讲给开发者们。帮助大数据开发者快速了解并掌握SaaS模式的云原生的数据仓库,助力开发者学习了解先进的技术栈,并能在实际业务中敏捷的进行大数据分析,赋能企业业务。 通过本课程可以了解SaaS模式云原生数据仓库领导者MaxCompute核心功能及典型适用场景,可应用MaxCompute实现数仓搭建,快速进行大数据分析。适合大数据工程师、大数据分析师 大量数据需要处理、存储和管理,需要搭建数据仓库?学它! 没有足够人员和经验来运维大数据平台,不想自建IDC买机器,需要免运维的大数据平台?会SQL就等于会大数据?学它! 想知道大数据用得对不对,想用更少的钱得到持续演进的数仓能力?获得极致弹性的计算资源和更好的性能,以及持续保护数据安全的生产环境?学它! 想要获得灵活的分析能力,快速洞察数据规律特征?想要兼得数据湖的灵活性与数据仓库的成长性?学它! 出品人:阿里云大数据产品及研发团队专家 产品 MaxCompute 官网 https://www.aliyun.com/product/odps&nbsp;
相关文章
|
3月前
|
消息中间件 监控 数据可视化
大数据-79 Kafka 集群模式 集群监控方案 JavaAPI获取集群指标 可视化监控集群方案: jconsole、Kafka Eagle
大数据-79 Kafka 集群模式 集群监控方案 JavaAPI获取集群指标 可视化监控集群方案: jconsole、Kafka Eagle
165 2
|
3月前
|
存储 分布式计算 API
大数据-107 Flink 基本概述 适用场景 框架特点 核心组成 生态发展 处理模型 组件架构
大数据-107 Flink 基本概述 适用场景 框架特点 核心组成 生态发展 处理模型 组件架构
151 0
|
2月前
|
SQL 数据采集 分布式计算
【赵渝强老师】基于大数据组件的平台架构
本文介绍了大数据平台的总体架构及各层的功能。大数据平台架构分为五层:数据源层、数据采集层、大数据平台层、数据仓库层和应用层。其中,大数据平台层为核心,负责数据的存储和计算,支持离线和实时数据处理。数据仓库层则基于大数据平台构建数据模型,应用层则利用这些模型实现具体的应用场景。文中还提供了Lambda和Kappa架构的视频讲解。
310 3
【赵渝强老师】基于大数据组件的平台架构
|
7月前
|
分布式计算 数据可视化 大数据
于SpringBoot+大数据城市景观画像可视化设计和实现
于SpringBoot+大数据城市景观画像可视化设计和实现
|
3月前
|
SQL 存储 分布式计算
大数据-157 Apache Kylin 背景 历程 特点 场景 架构 组件 详解
大数据-157 Apache Kylin 背景 历程 特点 场景 架构 组件 详解
56 9
|
2月前
|
SQL 分布式计算 大数据
【赵渝强老师】大数据生态圈中的组件
本文介绍了大数据体系架构中的主要组件,包括Hadoop、Spark和Flink生态圈中的数据存储、计算和分析组件。数据存储组件包括HDFS、HBase、Hive和Kafka;计算组件包括MapReduce、Spark Core、Flink DataSet、Spark Streaming和Flink DataStream;分析组件包括Hive、Spark SQL和Flink SQL。文中还提供了相关组件的详细介绍和视频讲解。
|
3月前
|
存储 分布式计算 资源调度
大数据-04-Hadoop集群 集群群起 NameNode/DataNode启动 3台公网云 ResourceManager Yarn HDFS 集群启动 UI可视化查看 YarnUI(一)
大数据-04-Hadoop集群 集群群起 NameNode/DataNode启动 3台公网云 ResourceManager Yarn HDFS 集群启动 UI可视化查看 YarnUI(一)
105 5
|
3月前
|
资源调度 数据可视化 大数据
大数据-04-Hadoop集群 集群群起 NameNode/DataNode启动 3台公网云 ResourceManager Yarn HDFS 集群启动 UI可视化查看 YarnUI(二)
大数据-04-Hadoop集群 集群群起 NameNode/DataNode启动 3台公网云 ResourceManager Yarn HDFS 集群启动 UI可视化查看 YarnUI(二)
45 4
|
3月前
|
消息中间件 监控 Java
大数据-109 Flink 体系结构 运行架构 ResourceManager JobManager 组件关系与原理剖析
大数据-109 Flink 体系结构 运行架构 ResourceManager JobManager 组件关系与原理剖析
96 1
|
4月前
|
存储 分布式计算 资源调度
两万字长文向你解密大数据组件 Hadoop
两万字长文向你解密大数据组件 Hadoop
173 11