日韩成人免费在线_国产成人一二_精品国产免费人成电影在线观..._日本一区二区三区久久久久久久久不

當前位置:首頁 > 科技  > 軟件

從零開發可視化大屏制作平臺

來源: 責編: 時間:2023-09-28 10:09:14 449觀看
導讀幾年前開源的H5頁面制作平臺H5-Dooring 收到了很多熱心的反饋和交流, 順著筆者之前的規劃, 又做了一款可視化大屏編輯器V6.Dooring. 接下來筆者就來帶大家一起看看我們的方案設計和技術實現.你將收獲可視化大屏產品設

幾年前開源的H5頁面制作平臺H5-Dooring 收到了很多熱心的反饋和交流, 順著筆者之前的規劃, 又做了一款可視化大屏編輯器V6.Dooring. 接下來筆者就來帶大家一起看看我們的方案設計和技術實現.Id728資訊網——每日最新資訊28at.com

你將收獲

  • 可視化大屏產品設計思路
  • 主流可視化圖表庫技術選型
  • 大屏編輯器設計思路
  • 大屏可視化編輯器Schema設計
  • 用戶數據自治探索

在介紹之前, 我們先看看實現的效果展示.Id728資訊網——每日最新資訊28at.com

效果預覽

圖片圖片Id728資訊網——每日最新資訊28at.com

圖片圖片Id728資訊網——每日最新資訊28at.com

方案實現

可視化大屏產品設計思路

目前很多企業或多或少的面臨“信息孤島”問題,各個系統平臺之間的數據無法實現互通共享,難以實現一體化的數據分析和實時呈現。Id728資訊網——每日最新資訊28at.com

相比于傳統手工定制的圖表與數據儀表盤,可視化大屏制作平臺的出現,可以打破抵消的定制開發, 數據分散的問題,通過數據采集、清洗、分析到直觀實時的數據可視化展現,能夠多方位、多角度、全景展現各項指標,實時監控,動態一目了然。Id728資訊網——每日最新資訊28at.com

針對以上需求, 我們設計了一套可視化大屏解決方案, 具體包含如下幾點:Id728資訊網——每日最新資訊28at.com

圖片圖片Id728資訊網——每日最新資訊28at.com

上圖是筆者4個月前設計的基本草圖, 后期會持續更新. 通過以上的設計分解, 我們基本可以搭建一個可自己定制的數據大屏.Id728資訊網——每日最新資訊28at.com

主流可視化圖表庫技術選型

目前筆者調研的已知主流可視化庫有:Id728資訊網——每日最新資訊28at.com

  • echart 一個基于 JavaScript 的老牌開源可視化圖表庫
  • D3.js 一個數據驅動的可視化庫, 可以不需要其他任何框架獨立運行在現代瀏覽器中,它結合強大的可視化組件來驅動 DOM 操作
  • antv 包含一套完整的可視化組件體系
  • Chart.js 基于 HTML5 的 簡單易用的 JavaScript 圖表庫
  • metrics-graphics 建立在D3之上的可視化庫, 針對可視化和布置時間序列數據進行了優化
  • C3.js 通過包裝構造整個圖表所需的代碼,使生成基于D3的圖表變得容易

我們使用以上任何一個庫都可以實現我們的可視化大屏搭建的需求, 各位可以根據喜好來選擇.Id728資訊網——每日最新資訊28at.com

大屏編輯器設計思路

在上面的分析中我們知道一個大屏編輯器需要有個編輯器核心, 主要包含以下部分:Id728資訊網——每日最新資訊28at.com

  • 組件庫
  • 拖拽(自由拖拽, 參考線, 自動提示)
  • 畫布渲染器
  • 屬性編輯器

組件庫我們可以用任何組件封裝方式(react/vue等), 這里沿用H5-Dooring的可視化組件設計方式, 對組件模型進行優化和設計.Id728資訊網——每日最新資訊28at.com

類似的代碼如下:Id728資訊網——每日最新資訊28at.com

import { Chart } from '@antv/f2';import React, { memo, useEffect, useRef } from 'react';import styles from './index.less';import { IChartConfig } from './schema';const XChart = (props:IChartConfig) => {  const { data, color, size, paddingTop, title } = props;  const chartRef = useRef(null);  useEffect(() => {      const chart = new Chart({        el: chartRef.current || undefined,        pixelRatio: window.devicePixelRatio, // 指定分辨率      });      // step 2: 處理數據      const dataX = data.map(item => ({ ...item, value: Number(item.value) }));      // Step 2: 載入數據源      chart.source(dataX);      // Step 3:創建圖形語法,繪制柱狀圖,由 genre 和 sold 兩個屬性決定圖形位置,genre 映射至 x 軸,sold 映射至 y 軸      chart        .interval()        .position('name*value')        .color('name');      // Step 4: 渲染圖表      chart.render();  }, [data]);  return (    <div className={styles.chartWrap}>      <div className={styles.chartTitle} style={{ color, fontSize: size, paddingTop }}>        {title}      </div>      <canvas ref={chartRef}></canvas>    </div>  );};export default memo(XChart);

以上只是一個簡單的例子, 更具業務需求的復雜度我們往往會做更多的控制, 比如動畫(animation), 事件(event), 數據獲取(data inject)等.Id728資訊網——每日最新資訊28at.com

組件拖拽可以采用市面已有的Dragable等插件, 也可以采用H5-Dooring的智能網格拖拽. 這里筆者選擇自由拖拽來實現. 已有的有:Id728資訊網——每日最新資訊28at.com

  • rc-drag
  • sortablejs
  • react-dnd
  • react-dragable
  • vue-dragable

等等. 具體拖拽呈現流程如下:Id728資訊網——每日最新資訊28at.com

圖片圖片Id728資訊網——每日最新資訊28at.com

具體拖拽流程就是:Id728資訊網——每日最新資訊28at.com

  1. 使用H5 dragable API拖拽左側組件(component data)進入目標容器(targetBox)
  2. 監聽拖拽結束事件拿到拖拽事件傳遞的data來渲染真實的可視化組件
  3. 可視化組件掛載, schema注入編輯面板, 編輯面板渲染組件屬性編輯器
  4. 拖拽, 屬性修改, 更新
  5. 預覽, 發布

組件的schema參考Dooring DSL設計Id728資訊網——每日最新資訊28at.com

可視化大屏數據自治探索

目前我們實現的搭建平臺可以靜態的設計數據源, 也可以注入第三方接口, 如下:Id728資訊網——每日最新資訊28at.com

圖片圖片Id728資訊網——每日最新資訊28at.com

我們可以調用內部接口來實時獲取數據, 這塊在可視化監控平臺用的場景比較多, 方式如下:Id728資訊網——每日最新資訊28at.com

參數(params)編輯區可以自定義接口參數. 代碼編輯器筆者這里推薦兩款, 大家可以選用:Id728資訊網——每日最新資訊28at.com

  • react-monaco-editor
  • react-codemirror2

使用以上之一可以實現mini版vscode, 大家也可以嘗試一下.Id728資訊網——每日最新資訊28at.com

輔助功能

可視化大屏一鍵截圖 一鍵截圖功能還是沿用H5-Dooring 的快捷截圖方案, 主要用于對大屏的分享, 海報制作等需求, 我們可以使用以下任何一個組件實現:Id728資訊網——每日最新資訊28at.com

  • dom-to-image
  • html2canvas

撤銷重做

撤銷重做功能我們可以使用已有的庫比如react-undo, 也可以自己實現, 實現原理:Id728資訊網——每日最新資訊28at.com

圖片圖片Id728資訊網——每日最新資訊28at.com

有點鏈表的意思, 我們將每一個狀態存儲到數組中, 通過指針來實現撤銷重做的功能, 如果要想更健壯一點, 我們可以設計一套“狀態淘汰機制”, 設置可保留的最大狀態數, 之前的自動淘汰(刪除, 更高大上一點的叫出棧). 這樣可以避免復雜操作中的大量狀態存儲, 節約瀏覽器內存.Id728資訊網——每日最新資訊28at.com

標尺參考線 標尺和參考線這里我們自己實現, 通過動態dom渲染來實現參考線在縮放后的動態收縮, 實現方案核心如下:Id728資訊網——每日最新資訊28at.com

arr.forEach(el => {  let dom = [...Array.from(el.querySelectorAll('.calibrationNumber'))][0] as HTMLElement;  if (dom) {    dom.style.transform = `translate3d(-4px, -8px, 0px) scale(${(multiple + 0.1).toFixed(      1,    )})`;  }});

詳細源碼可參考: H5-Dooring | 參考線設計源碼Id728資訊網——每日最新資訊28at.com

后期規劃

最近我們的主要方向是H5-Dooring編輯器2.0的開發和可視化大屏搭建平臺的升級和優化, 后面會出線上版demo, 歡迎大家把玩。Id728資訊網——每日最新資訊28at.com

本文鏈接:http://m.www897cc.com/showinfo-26-11889-0.html從零開發可視化大屏制作平臺

聲明:本網頁內容旨在傳播知識,若有侵權等問題請及時與本網聯系,我們將在第一時間刪除處理。郵件:2376512515@qq.com

上一篇: 深入理解 RocketMQ 廣播消費

下一篇: C#.Net里面的.CCtor和Ctor是什么呢?

標簽:
  • 熱門焦點
Top 日韩成人免费在线_国产成人一二_精品国产免费人成电影在线观..._日本一区二区三区久久久久久久久不
久久艳片www.17c.com| 正在播放日韩| 国产亚洲精品久| 激情文学综合丁香| 亚洲狠狠丁香婷婷综合久久久| 亚洲激情在线观看视频免费| 99视频日韩| 性xx色xx综合久久久xx| 久久欧美中文字幕| 欧美理论电影网| 国产精品视频大全| 伊人久久大香线| 一本大道av伊人久久综合| 亚洲欧美日韩区| 老鸭窝91久久精品色噜噜导演| 欧美日本二区| 国产欧美视频一区二区| 亚洲国产精品成人精品| 亚洲午夜一区| 久久中文字幕一区| 欧美三级韩国三级日本三斤| 国产一区二区精品| 亚洲美女少妇无套啪啪呻吟| 羞羞答答国产精品www一本 | 亚洲欧洲日韩在线| 亚洲欧美韩国| 男同欧美伦乱| 国产农村妇女精品一区二区| 亚洲人成人一区二区在线观看| 亚洲男人的天堂在线观看| 女人香蕉久久**毛片精品| 国产精品久久久久久久浪潮网站| 尤物九九久久国产精品的特点| 国产精品99久久不卡二区 | 国产精品swag| 亚洲福利视频网| 亚洲欧美综合一区| 欧美成人日本| 国产亚洲欧美一区二区三区| 日韩天堂在线观看| 久久人人爽人人爽| 国产精品亚洲第一区在线暖暖韩国| 亚洲国产天堂久久综合网| 欧美一级精品大片| 欧美日韩一区二区视频在线观看 | 亚洲高清精品中出| 午夜精品三级视频福利| 欧美人妖另类| 在线精品国产欧美| 欧美一区国产在线| 国产精品成人国产乱一区| 91久久视频| 久久久91精品国产一区二区三区 | 久久精品成人| 国产精品视频男人的天堂| 亚洲精品欧美精品| 久久综合九色综合网站| 国产欧美精品在线| 亚洲夜晚福利在线观看| 欧美日韩精品免费观看视一区二区 | 亚洲人成绝费网站色www| 久久久久99| 国产农村妇女毛片精品久久莱园子| 99国产精品视频免费观看| 美女在线一区二区| 国内自拍一区| 久久国产精品久久久久久| 国产精品色在线| 亚洲视频在线观看视频| 欧美日韩国语| 亚洲三级电影在线观看 | 欧美成人视屏| 亚洲国产成人在线| 另类av一区二区| 国产日韩欧美成人| 亚洲一区免费| 国产精品久久久久毛片软件| 中日韩男男gay无套| 欧美日韩国产欧| 亚洲精品日韩综合观看成人91| 蜜臀久久99精品久久久久久9 | 伊人狠狠色丁香综合尤物| 久久视频在线视频| 伊人成人开心激情综合网| 欧美一区二区三区四区高清| 国产女精品视频网站免费| 欧美一区二区三区免费观看| 国产日韩视频| 久久精品中文| 在线日本欧美| 欧美激情综合五月色丁香小说| 91久久夜色精品国产网站| 欧美福利一区| 日韩一级精品视频在线观看| 欧美日韩亚洲另类| 亚洲一区二区三区四区在线观看| 国产精品区免费视频| 欧美一区二区精品久久911| 狠狠色噜噜狠狠色综合久| 蜜臀a∨国产成人精品| 亚洲精品久久视频| 欧美午夜精品理论片a级按摩| 亚洲一级片在线观看| 国产美女精品视频免费观看| 久久精品欧洲| 亚洲国产精品精华液网站| 欧美日韩国产天堂| 亚洲一区尤物| 国产午夜精品麻豆| 久久亚洲综合色| 亚洲人成网站精品片在线观看| 欧美日韩高清不卡| 亚洲一区二区三区四区五区午夜| 国产精品另类一区| 久久成人人人人精品欧| 亚洲电影专区| 欧美午夜精品久久久久久人妖| 欧美亚洲一区二区在线观看| 黄色另类av| 欧美精品九九| 午夜精品久久久久久久久久久久久 | 欧美怡红院视频| 亚洲高清色综合| 欧美视频中文一区二区三区在线观看 | 日韩视频专区| 国产精品一区免费在线观看| 久久综合九色综合欧美就去吻| 亚洲精品一区二区三区婷婷月 | 国产色爱av资源综合区| 欧美成人首页| 亚洲女同精品视频| 伊人久久大香线蕉综合热线| 欧美日韩国产精品一区二区亚洲| 欧美亚洲综合久久| 亚洲韩国精品一区| 国产精品sss| 麻豆91精品91久久久的内涵| 亚洲久久视频| 国产自产v一区二区三区c| 欧美日韩福利视频| 久久亚洲综合色| 亚洲欧美精品suv| 最新精品在线| 国产视频欧美视频| 欧美日韩国产精品| 久久综合电影一区| 亚洲欧美一区二区原创| 亚洲人成毛片在线播放| 国产永久精品大片wwwapp| 欧美日韩国产三级| 久久久美女艺术照精彩视频福利播放 | 欧美视频一区二区在线观看 | 欧美伦理a级免费电影| 久久xxxx精品视频| 一本色道久久综合亚洲精品不| 国产在线精品二区| 欧美午夜精品电影| 狼狼综合久久久久综合网| 亚洲资源av| 亚洲精品美女在线| 激情综合亚洲| 国产精品丝袜久久久久久app| 欧美激情片在线观看| 久久精品盗摄| 亚洲综合电影| 日韩午夜一区| 在线看无码的免费网站| 国产欧美二区| 欧美性大战久久久久久久蜜臀 | 国产精品视频网站| 欧美三级电影一区| 欧美福利电影网| 狼狼综合久久久久综合网| 新狼窝色av性久久久久久| 一区二区黄色| 亚洲人成绝费网站色www| 韩日精品视频一区| 国产欧美综合在线| 国产精品黄色在线观看| 欧美精品色综合| 美女视频网站黄色亚洲| 久久精品夜色噜噜亚洲a∨| 亚洲欧美另类久久久精品2019| 99国产欧美久久久精品| 最新69国产成人精品视频免费| 黄色av一区| 国产自产精品| 国产在线精品一区二区夜色| 国产日韩欧美成人| 国产麻豆综合| 国产精品亚洲美女av网站| 国产精品久久久久国产精品日日 | 欧美一进一出视频| 亚洲影院一区| 中文精品视频一区二区在线观看| 亚洲精品一二区| 亚洲精品日韩一| 亚洲免费成人| 日韩视频欧美视频| 亚洲免费激情| 一本色道久久88综合亚洲精品ⅰ| 亚洲全部视频| 亚洲精品在线二区| 日韩写真在线|