最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

DataGear開發(fā)基于three.js的3D數(shù)據(jù)可視化看板的詳細(xì)代碼

 更新時(shí)間:2024年02月27日 09:58:41   作者:DataGear  
DataGear?支持采用原生的HTML、JavaScript、CSS制作數(shù)據(jù)可視化看板,也支持導(dǎo)入由npm、vite等前端工具構(gòu)建的前端程序包,這篇文章主要介紹了DataGear制作基于three.js的3D數(shù)據(jù)可視化看板,需要的朋友可以參考下

DataGear專業(yè)版 1.0.0 已發(fā)布,歡迎試用! http://datagear.tech/pro/

DataGear 支持采用原生的HTML、JavaScript、CSS制作數(shù)據(jù)可視化看板,也支持導(dǎo)入由npmvite等前端工具構(gòu)建的前端程序包。得益于這一特性,可以很容易制作基于three.js的3D數(shù)據(jù)可視化看板。

首先,參考three.js的官方教程 https://threejs.org/docs/index.html#manual/en/introduction/Installation 編寫3D前端源碼包。

源碼包中包含兩個(gè)文件:index.html、main.js,如下所示:

index.html

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
</head>
<body>
<script type="module" src="/main.js"></script>
<script type="module">
import { ThreeRenderer } from "/main.js";
window.ThreeRenderer = ThreeRenderer;
</script>
<div style="padding:1rem;">
  <button onclick="threeRender()">渲染</button>
  <button onclick="threeUpdate()">更新</button>
  <p></p>
  <div id="threeChart" style="width:300px;height:300px;"></div>
</div>
<script>
var renderer;
function threeRender(){
  renderer = new ThreeRenderer(document.getElementById("threeChart"));
  renderer.render();
}
function threeUpdate(){
  renderer.update(0xff0000);
}
</script>
</body>
</html>

index.html是下述main.js中定義3D組件的調(diào)試頁面,點(diǎn)擊【渲染】、【更新】按鈕可調(diào)試3D組件效果。

main.js

import * as THREE from 'three';
export function ThreeRenderer(dom)
{
  this.dom = dom;
  this.render = function()
  {
    const scene = new THREE.Scene();
    const camera = new THREE.PerspectiveCamera( 75, this.dom.clientWidth / this.dom.clientHeight, 0.1, 1000 );
    const renderer = new THREE.WebGLRenderer();
    renderer.setSize( this.dom.clientWidth, this.dom.clientHeight );
    this.dom.appendChild( renderer.domElement );
    const geometry = new THREE.BoxGeometry( 1, 1, 1 );
    const material = new THREE.MeshBasicMaterial( { color: 0x00ff00 } );
    const cube = new THREE.Mesh( geometry, material );
    scene.add( cube );
    camera.position.z = 5;
    function animate() {
      requestAnimationFrame( animate );
      cube.rotation.x += 0.01;
      cube.rotation.y += 0.01;
      renderer.render( scene, camera );
    }
    animate();
    this.cube = cube;
  };
  this.update = function(hexColor)
  {
    const cube = this.cube;
    const material = cube.material;
    const color = material.color;
    color.setHex(hexColor);
  };
}

main.js定義了一個(gè)ThreeRenderer3D組件類,大部分代碼由three.js官方教程拷貝,它的render函數(shù)繪制一個(gè)簡單的3D立方體, update函數(shù)可以更新這個(gè)3D立方體的顏色。

調(diào)試:

npm install --save three
npm install --save-dev vite
npx vite

執(zhí)行npx vite build將它們構(gòu)建為前端程序包:

index.html
assets/index-*.js

先將上述前端程序包壓縮為ZIP包后導(dǎo)入為DataGear看板,然后將index.html中的

<script type="module" crossorigin src="/assets/index-*.js"></script>

修改為采用相對(duì)路徑引入方式:

<script type="module" crossorigin src="assets/index-*.js"></script>

此時(shí),點(diǎn)擊【保存并展示】看板后,打開展示頁面,點(diǎn)擊【渲染】、【更新】按鈕,將可以看到3D效果,如下所示:

下面,我們將上述3D組件制作為DataGear自定義圖表,可以根據(jù)數(shù)據(jù)集返回的數(shù)值,更新其顏色。

首先,新建SQL數(shù)據(jù)集:

名稱:最新指標(biāo)值

SQL:

SELECT
	D_VALUE AS VALUE
FROM
	t_date_value
ORDER BY
	d_date DESC
LIMIT 0, 1

上述SQL從t_date_value表中查詢最新日期的指標(biāo)值

然后,新建一個(gè)關(guān)聯(lián)上述數(shù)據(jù)集的自定義類型的圖表;

名稱:最新指標(biāo)值

圖表類型:自定義

數(shù)據(jù)集:最新指標(biāo)值

更新間隔:2000毫秒

上述圖表每隔2秒更新一次數(shù)據(jù)

最后,修改剛才導(dǎo)入看板的index.html,添加自定義圖表渲染器,當(dāng)t_date_value表中最新指標(biāo)值大于等于80時(shí),將3D模型渲染為紅色,否則,渲染為綠色。

修改后的index.html如下所示:

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<script src="assets/index-*.js"></script>
<script>
//自定義圖表渲染器
var chartRenderer =
{
  render: function(chart)
  {
    var internal = new ThreeRenderer(chart.element());
    internal.render();
    chart.internal(internal);
  },
  update: function(chart, results)
  {
    var chartDataSet = chart.chartDataSetMain();
    var result = chart.resultOf(results, chartDataSet);
    var value = chart.resultCell(result, "VALUE", 0);
    var color = (value >= 80 ? 0xff0000 : 0x00ff00);
    var internal = chart.internal();
    internal.update(color);
  }
};
</script>
</head>
<body>
<div style="padding:1rem;text-align:center;">
 <h1>DataGear制作3D圖表</h1>
 <h5>http://www.datagear.tech</h5>
  <div style="display:inline-block;width:300px;height:300px;margin:1rem;"
    dg-chart-renderer="chartRenderer" dg-chart-widget="【圖表ID】"></div>
  <div style="display:inline-block;width:300px;height:300px;margin:1rem;"
    dg-chart-renderer="chartRenderer" dg-chart-widget="【圖表ID】"></div>
</div>
</body>
</html>

上述assets/index-*.js應(yīng)替換為實(shí)際的JS文件名,【圖表ID】應(yīng)替換為實(shí)際的最新指標(biāo)值圖表的ID

點(diǎn)擊【保存并展示】,即可看到3D圖表效果,如下圖所示:

官網(wǎng)地址:http://www.datagear.tech

源碼地址:

Gitee:https://gitee.com/datagear/datagear

Github:https://github.com/datageartech/datagear

到此這篇關(guān)于DataGear開發(fā)基于three.js的3D數(shù)據(jù)可視化看板的詳細(xì)代碼的文章就介紹到這了,更多相關(guān)DataGear數(shù)據(jù)可視化看板內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • layui給下拉框、按鈕狀態(tài)、時(shí)間賦初始值的方法

    layui給下拉框、按鈕狀態(tài)、時(shí)間賦初始值的方法

    今天小編就為大家分享一篇layui給下拉框、按鈕狀態(tài)、時(shí)間賦初始值的方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    2019-09-09
  • JavaScript實(shí)現(xiàn)將阿拉伯?dāng)?shù)字轉(zhuǎn)換成中文大寫

    JavaScript實(shí)現(xiàn)將阿拉伯?dāng)?shù)字轉(zhuǎn)換成中文大寫

    現(xiàn)在有需求將億元之內(nèi)的阿拉伯?dāng)?shù)字轉(zhuǎn)換成中文,例如:1234轉(zhuǎn)換后變?yōu)橐磺Ф偃脑俎D(zhuǎn)換成壹仟貳佰叁拾肆,所以本文給大家介紹了用JavaScript實(shí)現(xiàn)將阿拉伯?dāng)?shù)字轉(zhuǎn)換成中文大寫,感興趣的小伙伴跟著小編一起來看看吧
    2024-05-05
  • JavaScript閉包實(shí)例詳解

    JavaScript閉包實(shí)例詳解

    這篇文章主要介紹JavaScript閉包知識(shí),包括閉包的基本概念,閉包的用途等相關(guān)知識(shí),介紹的非常詳細(xì),具有參考借鑒價(jià)值,感興趣的朋友一起看看吧
    2016-06-06
  • 整理的比較全的event對(duì)像在ie與firefox瀏覽器中的區(qū)別

    整理的比較全的event對(duì)像在ie與firefox瀏覽器中的區(qū)別

    event對(duì)像在IE與FF中的區(qū)別,本文整理了很多,個(gè)人感覺還是比較全面的,需要的朋友可以收藏下
    2013-11-11
  • 純js實(shí)現(xiàn)手風(fēng)琴效果代碼

    純js實(shí)現(xiàn)手風(fēng)琴效果代碼

    這篇文章主要為大家詳細(xì)介紹了純js實(shí)現(xiàn)手風(fēng)琴效果代碼,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2016-10-10
  • 詳談構(gòu)造函數(shù)加括號(hào)與不加括號(hào)的區(qū)別

    詳談構(gòu)造函數(shù)加括號(hào)與不加括號(hào)的區(qū)別

    下面小編就為大家?guī)硪黄斦剺?gòu)造函數(shù)加括號(hào)與不加括號(hào)的區(qū)別。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2017-10-10
  • 一句話JavaScript表單驗(yàn)證代碼

    一句話JavaScript表單驗(yàn)證代碼

    純屬技術(shù)交流,在實(shí)際應(yīng)用中不建議那么做。建議js加載比較好。
    2009-08-08
  • 微信小程序?qū)崿F(xiàn)購物車選擇規(guī)格顏色效果

    微信小程序?qū)崿F(xiàn)購物車選擇規(guī)格顏色效果

    這篇文章主要為大家詳細(xì)介紹了微信小程序?qū)崿F(xiàn)購物車選擇規(guī)格顏色選中效果,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-01-01
  • 原生js編寫2048小游戲

    原生js編寫2048小游戲

    本文主要介紹了用原生js編寫2048小游戲的示例代碼,具有很好的參考價(jià)值,下面跟著小編一起來看下吧
    2017-03-03
  • javascript設(shè)計(jì)簡單的秒表計(jì)時(shí)器

    javascript設(shè)計(jì)簡單的秒表計(jì)時(shí)器

    這篇文章主要介紹了javascript設(shè)計(jì)簡單的秒表計(jì)時(shí)器,該秒表將包括兩個(gè)按鈕和一個(gè)用于顯示時(shí)間的文本框,當(dāng)單擊開始按鈕時(shí)開始計(jì)時(shí),最小單位為0.01秒,此時(shí)再次單擊按鈕則停止計(jì)時(shí),文本框顯示經(jīng)過的時(shí)間,需要的朋友可以參考下
    2015-11-11

最新評(píng)論

油尖旺区| 通江县| 清流县| 朝阳县| 乐平市| 潞西市| 剑河县| 崇文区| 西宁市| 周口市| 新乡市| 石台县| 江华| 清河县| 南投市| 疏附县| 本溪市| 班玛县| 仁化县| 山西省| 阿坝县| 巨鹿县| 永善县| 海林市| 泾阳县| 隆回县| 黑龙江省| 久治县| 房山区| 沛县| 大邑县| 肃南| 宝兴县| 湘西| 邯郸市| 靖江市| 平遥县| 安吉县| 彰武县| 策勒县| 惠水县|