首页 > 其他分享 >SolidJS-每日小知识(9/16)

SolidJS-每日小知识(9/16)

时间:2024-09-17 12:50:44浏览次数:8  
标签:src const assets 16 知识 dataset json SolidJS points

知识介绍

  1. 使用select组件选择不同数据集,并将数据集渲染到页面上
  2. 对视图内所有元素进行指定距离的移动(by button)

代码分析

1 使用select组件选择不同数据集,并将数据集渲染到页面上

  1. 定义信号量和options
    const [selectedFile,setSelectedFile] = createSignal("数据集1"); // 存储选择的文件名

        const options = {
        数据集1: './src/assets/dataset/matched_points_info_1.json',
        数据集2: './src/assets/dataset/matched_points_info_2.json',
        数据集3: './src/assets/dataset/matched_points_info_3.json',
        数据集4: './src/assets/dataset/matched_points_info_4.json',
        数据集5: './src/assets/dataset/matched_points_info_5.json',
        数据集6: './src/assets/dataset/matched_points_info_6.json',
        数据集7: './src/assets/dataset/matched_points_info_7.json',
        数据集8: './src/assets/dataset/matched_points_info_8.json',
        数据集9: './src/assets/dataset/matched_points_info_9.json',
        数据集10: './src/assets/dataset/matched_points_info_10.json',
        总数据集: './src/assets/dataset/merged_data.json'
    }
  1. 创建加载数据函数,并在件挂载时执行数据加载
    请注意:在每次渲染新的数据集前,删除之前渲染的结果
    const loadData = async (fileName: string) => {
        d3.select(svgMainRef).selectAll("*").remove();  // 清空主SVG内容
        d3.select(svgLenRef).selectAll("*").remove();   // 清空辅助SVG内容


        try {
            const response = await fetch(options[fileName]);
            if (!response.ok) {
                throw new Error(`HTTP 错误!状态码:${response.status}`); // 若响应不OK则抛出错误
            }
            const jsonData: MatchData = await response.json(); // 解析JSON数据
            setData(jsonData); // 设置状态信号中存储的数据
            setXpoints(jsonData.X_points); // 设置X坐标点
            setYpoints(jsonData.Y_transformed_points); // 设置Y坐标点
            setConnections(jsonData.connections); // 设置连接信息
            
            drawMainSVG(); // 调用绘制主SVG的函数
            drawLenSVG(); // 调用绘制辅助SVG的函数

        } catch (error) {
            console.error("加载数据时出错:", error); // 捕获并输出错误信息
        }
    };

    // 组件挂载时执行的数据加载
    onMount(() => {
        loadData(selectedFile()); // 默认加载第一次选择的文件的数据
    });
  1. 创建事件,处理select变化
    // 处理选择变化事件
    const handleFileChange = (e: Event) => {
        const value = (e.target as HTMLSelectElement).value;
        setSelectedFile(value); // 更新选中的文件名
        loadData(value); // 根据选中的文件名加载数据
    };
  1. 在return中,增加select组件,并绑定事件
                <select value={selectedFile()} onInput={handleFileChange}>
                    <For each={Object.keys(options)}>
                        {file => <option value={file}>{file}</option>}
                    </For>
                </select>

2 对视图内所有元素进行指定距离的移动

  1. 设置偏移量的信号量
    const [transform, setTransform] = createSignal(d3.zoomIdentity);
  2. 设置偏移值和函数(by button)
  const panX = 20;
  const panY = 20;

  // 定义移动视点的函数
  const panView = (dx, dy) => {
    const newTransform = transform().translate(dx, dy);
    setTransform(newTransform);
    
    // 更新 mainSVG 和 lenSVG 的视图
    d3.select(svgMainRef).select('g').attr('transform', newTransform);
    updateLenSVG(newTransform);
  };
  1. 设置button
          <div>
            <button onClick={() => panView(-panX, 0)}>左移</button>
            <button onClick={() => panView(panX, 0)}>右移</button>
            <button onClick={() => panView(0, -panY)}>上移</button>
            <button onClick={() => panView(0, panY)}>下移</button>
          </div>

标签:src,const,assets,16,知识,dataset,json,SolidJS,points
From: https://www.cnblogs.com/Frey-Li/p/18417084

相关文章

  • 游戏引擎开发所需要的数学与图形学知识
    缩写解释bg:background你需要的背景知识光栅化(Rasterization)将3D模型中的几何数据(如多边形或顶点)转换为2D图像的像素表示通常是图形渲染管线的一部分,特别是在实时渲染(如游戏和互动应用)中被广泛使用步骤1.顶点处理3D模型中的顶点经过几何变换(模型矩阵、视图矩阵和投影矩阵......
  • JAVA 基础知识点(一)
    摘要:本文所介绍知识点去粗取精,有助记忆。1.1 关键词定义:关键词是指被Java语言赋予特殊含义的单词。关键词特点:(1)关键词的字母全部小写;           (2) 代码编辑器对关键词都有高亮显示;如public,class,static。packagecom.itheima.test;importj......
  • DFT理论知识 scan insertion详解
    ###DFT理论知识:SCANInsertion详解####一、SCANInsertion概述**1.定义**SCANInsertion是设计可测试性(DesignForTestability,DFT)中的一种技术,通过在芯片设计中插入扫描链(ScanChain),使得原本难以测试的组合逻辑电路变得可测试。扫描链通过将触发器(Flip-Flop)转换为......
  • 历年CSP-J初赛真题解析 | 2019年CSP-J初赛阅读程序(16-33)
    学习C++从娃娃抓起!记录下CSP-J备考学习过程中的题目,记录每一个瞬间。附上汇总贴:历年CSP-J初赛真题解析|汇总_热爱编程的通信人的博客-CSDN博客#include<cstdio>#include<cstring>usingnamespacestd;charst[100];intmain(){scanf("%s",st);intn......
  • ChatGPT中Java相关问答(包括Java基础知识和一些面试题)
    分享一个自己学习Java时的记录ChatGPT中的对话:ChatGPT链接包括如下问题HowtolearnJavainordertobecomeasoftwaredevelopmentengineer,pleasegivedetailsofthestudyprogramaswellasthereferencestudymaterials.详细解释java中的this引用解释一下类、......
  • mybatis知识复习
    配置文件方式--快速入门这里插入几个学习时的错误:mybatis-config.xml找不到Mapper:我的原因是把Mapper放到了Java下的SRC路径,但IDEA并不会寻找到,所以要么是在pom.xml中加上。。。(没看),我用的是:在resource下建立一个同名的包:com/。/xxx如果不想建立一个新包(但一般都会吧?),参考这个......
  • 洛谷P1016
    题目传送门:传送门p1016题目描述一个旅行家想驾驶汽车以最少的费用从一个城市到另一个城市(假设出发时油箱是空的)。给定两个城市之间的距离 D1D1​、汽车油箱的容量 CC(以升为单位)、每升汽油能行驶的距离 D2D2​、出发点每升汽油价格PP和沿途油站数 NN(NN 可以为零),油站 ii......
  • day04 必备基础知识
    day04必备基础知识今日概要进制单位编码1.进制1.1烽火狼烟古代打仗用烽火狼烟来进行传递信号生活中灯泡的亮与暗用来指示信息(用电来抓耗子,灯亮表示抓到了)用亮灯用1表示,则上述的情景为:110010010100100001计算机本质上都有由晶体管和二极管组成(类比为灯......
  • day03 基础知识
    day03基础知识今日概要switchcase语句,条件判断。for循环语句,循环。goto语法,不太建议使用。字符串格式化,“拼接”数据。运算符1.switch语句packagemainfuncmain(){ //表达式 /* switch1+1{ case1: fmt.Println("等于1") case2: fmt.Println......
  • 0916
    高数第二型曲线积分计算类对称(看微元方向)一投二代三计算格林公式曲线封闭无奇点曲线封闭有奇点非封闭曲线,二维旋度为0,换路径非封闭曲线,旋度不为0,添线使之封闭(加线减线)积分与路径无关的六个等价命题两类曲线积分关系(二型与一型)Pdx+Qdy+Rdz=(P,Q,R)*(cosα,cosβ,cosγ)d......