成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

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

開發 前端
目前很多企業或多或少的面臨“信息孤島”問題,各個系統平臺之間的數據無法實現互通共享,難以實現一體化的數據分析和實時呈現。針對以上需求, 我們設計了一套可視化大屏解決方案。

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

你將收獲

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

在介紹之前,我們先看看實現的效果展示。

效果預覽

方案實現

可視化大屏產品設計思路

目前很多企業或多或少的面臨“信息孤島”問題,各個系統平臺之間的數據無法實現互通共享,難以實現一體化的數據分析和實時呈現。

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

針對以上需求, 我們設計了一套可視化大屏解決方案, 具體包含如下幾點;

上圖是筆者4個月前設計的基本草圖, 后期會持續更新. 通過以上的設計分解,我們基本可以搭建一個可自己定制的數據大屏。

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

目前筆者調研的已知主流可視化庫有:

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

我們使用以上任何一個庫都可以實現我們的可視化大屏搭建的需求,各位可以根據喜好來選擇。

大屏編輯器設計思路

在上面的分析中我們知道一個大屏編輯器需要有個編輯器核心, 主要包含以下部分;

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

如下圖所示

組件庫我們可以用任何組件封裝方式(react/vue等),這里沿用H5-Dooring的可視化組件設計方式,對組件模型進行優化和設計。

類似的代碼如下

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)等。

組件拖拽可以采用市面已有的Dragable等插件,也可以采用H5-Dooring的智能網格拖拽,這里筆者選擇自由拖拽來實現,已有的有

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

等等,具體拖拽呈現流程如下

具體拖拽流程就是:

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

組件的schema參考Dooring DSL設計

可視化大屏數據自治探索

目前我們實現的搭建平臺可以靜態的設計數據源,也可以注入第三方接口,如下:

我們可以調用內部接口來實時獲取數據,這塊在可視化監控平臺用的場景比較多,方式如下:

參數(params)編輯區可以自定義接口參數,代碼編輯器筆者這里推薦兩款,大家可以選用:

  • react-monaco-editor
  • react-codemirror2

使用以上之一可以實現mini版vscode,大家也可以嘗試一下。

輔助功能

可視化大屏一鍵截圖 一鍵截圖功能還是沿用H5-Dooring 的快捷截圖方案, 主要用于對大屏的分享,海報制作等需求, 我們可以使用以下任何一個組件實現:

  • dom-to-image
  • html2canvas

撤銷重做

撤銷重做功能我們可以使用已有的庫比如react-undo,也可以自己實現, 實現原理:

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

標尺參考線 標尺和參考線這里我們自己實現,通過動態dom渲染來實現參考線在縮放后的動態收縮,實現方案核心如下:

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,
)})`;
}
});


責任編輯:武曉燕 來源: 趣談前端
相關推薦

2021-03-09 08:32:50

開發視化大屏H5-Dooring

2023-09-26 08:01:16

2024-03-11 08:32:02

2021-07-12 17:23:47

零設計可視化引擎

2023-12-27 10:47:45

Flask數據可視化開發

2021-12-30 12:02:52

Python可視化代碼

2022-08-26 10:26:16

前端開發

2023-10-12 08:02:36

2021-09-26 16:20:04

Sentry Dashboards 數據可視化

2023-03-19 22:51:11

可視化項目可視化圖表

2021-09-11 21:03:09

可視化搭建框架

2021-04-14 16:20:39

可視化大數據工具

2022-09-08 11:19:53

Vue可視化插件

2024-01-23 10:42:58

2017-12-26 14:05:21

潤乾大屏可視化

2020-03-11 14:39:26

數據可視化地圖可視化地理信息

2021-10-28 08:42:31

Dooring表單設計器數據可視化

2022-06-29 08:28:58

數據可視化數據可視化平臺

2022-08-17 09:01:16

數據可視化大數據

2018-05-31 08:25:13

誤區工具可視化
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 欧美日韩大陆 | 91在线观看网址 | 日韩高清中文字幕 | 亚洲第一av | 欧美色综合 | 一级毛片高清 | 精品国产伦一区二区三区观看说明 | 亚洲大片一区 | 一区二区三区精品在线视频 | 一区二区三 | 欧美日韩一本 | 人人爽日日躁夜夜躁尤物 | 日韩免费 | 欧美一二精品 | 一区二区高清 | 欧美日韩一区二区三区不卡视频 | 91精品国产91久久久久青草 | 欧美日韩在线观看视频网站 | 成人免费视频观看视频 | 综合精品久久久 | 伊人在线 | 国产精品毛片无码 | 一级免费看 | 欧美一区二区三区四区五区无卡码 | 亚洲日本乱码在线观看 | 国产成人精品免高潮在线观看 | 天天看片天天干 | 91中文字幕在线观看 | 日操操夜操操 | 99草免费视频 | 亚洲精品久久久久久国产精华液 | 久久久久香蕉视频 | 国产日韩欧美在线观看 | 精品久久久999| 日韩成人免费av | 精品国产一区二区三区免费 | 中文字幕不卡在线观看 | 中文一区 | 天堂av资源| 国产一区 在线视频 | 91精品国产欧美一区二区成人 |