嵌入式 BI 实战(二):DIV 集成与 SDK 深度定制
📅 2026/7/28 3:48:32
👁️ 次浏览
前言当基础的 iframe 嵌入无法满足无缝感要求时我们需要从简单的集成迈向深度的融合。本文聚焦两类问题视觉深度定制与品牌完全自有通过 DIV 集成 样式/SDK 定制解决账号无缝对接留到第三篇用 SSO 解决赋能业务 DIY客户自助设计图表属于设计器集成文末给出入口、后续单独展开。一、场景升级消除第三方软件的违和感在企业级产品交付中客户常提出更高的要求视觉深度定制 “配色必须跟我们官网完全一致不能有任何插件感。”账号无缝对接 “用户登录了我们的 SaaS点击报表绝不能再弹出一个登录框。”品牌完全自有 “我们要把分析能力作为核心卖点界面上不能出现任何第三方 Logo。”赋能业务 DIY “能不能让客户自己在我们的系统里拖拽设计图表”针对这些苛刻要求我们需要从简单的嵌入迈向深度的融合。二、DIV 集成消灭 iframe 的外壳感iframe 虽然快但存在样式隔离和交互受限的天然弊端。Wyn 提供的 DIV 集成方案将看板直接渲染到父页面的div容器中使其成为页面一部分。实战步骤引入 SDKbashnpm install grapecity-software/wyn-integration编写渲染代码import { WynIntegration } from grapecity-software/wyn-integration; let viewer:any null; const createViewer (baseURL, token, dashboardId) { if (viewer){ viewer.destroy(); } WynIntegration.createDashboardViewer({ baseUrl: baseURL, //http://example.com:51980, token: token, defaults: { dashboardId: dashboardId, //仪表板文档ID //dp: {仪表板参数名称: [仪表板参数值]}, //例如只展示华东数据dp:{ Region:[华东] } , }, features: { actionbarItems: [focus], } }, #wyn-root).then(instance { viewer instance; }); }与第一篇衔接这里的dp和第一篇 URL 里的dp参数完全等价只是写法从拼在 URL 后面变成了放进defaults.dp。同样的{Region:[华东]}就能让不同用户看到不同数据。关键优势DIV 集成 vs iframe 集成三、样式深度定制让你的 BI 看板长在系统里DIV 集成让看板成为父页面 DOM 的一部分但默认的 Wyn 主题配色、字体、圆角等往往和你的产品风格不一致。最干净、最可维护的做法不是去逐个覆盖 CSS 类名而是直接换主题——在 Wyn 中按企业 VI 定制一套主题集成时指定使用它看板就能和宿主系统视觉统一。通过 SDK 指定主题在createViewerLite的defaults中通过theme传入主题名称即可WynIntegration.createViewerLite({ baseUrl: baseURL, token: token, defaults: { dashboardId: dashboardId, theme: your-theme-id // 在 Wyn 后台「主题管理」中创建的自定义主题 ID } }, #wyn-root);这样无需写一行 CSS看板的配色、字体、图表风格就会跟随你定义的企业主题与官网 / 业务系统保持一致。主题从哪来主题在 Wyn的「系统管理系统设置系统外观」的自定义主题进行创建和维护支持基于默认主题微调主色、辅助色、背景、字体等保存后得到一个主题 ID。后续品牌升级只要改主题所有嵌入看板自动生效比逐个改 CSS 省心得多。补充如果主题仍满足不了个别细节例如要彻底隐藏工具栏、定制某个组件再配合features开关或宿主 CSS 做精细微调即可二者叠加使用。四、SDK 深度定制从嵌入到可控拿到 viewer 实例后我们不再只是被动展示而是可以用代码主动控制看板实现与业务系统的双向联动。这正是标题中SDK 深度定制的核心含义。1. 参数联动让业务系统驱动看板第一篇讲过的千人千面在 DIV 模式下同样适用。除了初始化时通过defaults.dp传入运行时还可以用setParameterValue动态改变参数WynIntegration.createViewerLite({ baseUrl: baseURL, token: token, dashboardId: dashboardId, theme: your-theme-id // 在 Wyn 后台「主题管理」中创建的自定义主题 ID dp:{ 参数名称: [参数值]} //需要查看对应的文档的参数名称 }, #wyn-root);这样点击业务系统的区域下拉框看板就会跟着过滤无需重新创建 viewer 实例。2. 生命周期与事件回调SDK 通过回调选项暴露关键事件方便与业务系统衔接WynIntegration.createViewerLite({ baseUrl: baseURL, token: token, defaults: { dashboardId: dashboardId }, onLoaded: (docName) { console.log(看板加载完成, docName); // 可在此隐藏业务系统的 loading 状态 }, onError: (errorInfo) { console.error(看板渲染出错, errorInfo); } }, #wyn-root);3. 编程式指令viewer 实例还提供一系列方法用于更深度的交互executeCommand(option)执行下钻、切换页面、显示 / 隐藏场景等操作requestFullScreen()请求全屏getDatasets()获取当前看板使用的数据集列表destroy()销毁实例释放资源切换文档前务必先调用。注意以上为 Wyn 集成 SDK 的常用能力具体方法名与参数以你所用版本的官方文档为准。4. 进阶让客户自己设计图表赋能业务 DIY如果第一篇提到的让客户在系统里拖拽设计图表是刚需可进一步引入设计器DesignerWynIntegration.createDashboardDesigner({ backendServer: { url: baseURL, token: token }, defaults: { datasetId: 数据集ID } }, #wyn-root);设计器同样基于同一套 SDK能力更强适合自助分析平台类场景我们将在后续文章单独展开。五、结语DIV 集成是迈向深度融合的第一步。它消除了 iframe 的物理边界让 BI 看板真正成为你系统的一部分配合 SDK 的样式覆盖与编程式控制看板还能在视觉与交互上完全长在你的产品里。但这还不够——如果每个用户访问看板时还要输入一次 Wyn 的账号密码体验直接打回解放前。此外如果想让客户在自己系统里自助设计图表赋能业务 DIY还需要引入设计器Designer集成。下一篇第三篇我们将彻底解决账号问题SSO 单点登录与行级数据权限再之后第四篇会单独讲解设计器集成与自助分析赋能业务 DIY。
1. 项目概述:高校医疗健康服务的数字化升级高校医疗健康管理系统是面向校园场景的一站式健康服务平台,它整合了传统校医院业务与互联网医疗技术。这个基于SpringBoot的系统实现了从挂号问诊到健康管理的全流程数字化,解决了高校医疗资源分散、…
📅 2026/7/28 3:48:32
如何用一个程序管理所有云端文件?AList的魔法世界探索 【免费下载链接】alist 🗂️A file list/WebDAV program that supports multiple storages, powered by Gin and Solidjs. / 一个支持多存储的文件列表/WebDAV程序,使用 Gin 和 Solidjs。…
📅 2026/7/28 3:48:32
智能家居控制中心终极指南:打造专业级Home Assistant仪表板 【免费下载链接】hass-config ✨ A different take on designing a Lovelace UI (Dashboard) 项目地址: https://gitcode.com/gh_mirrors/ha/hass-config
想要为你的智能家居创建一个既美观又实用的…
📅 2026/7/28 3:48:32
1. 项目缘起:为什么选择ESP32-C3做桌面天气时钟?如果你和我一样,是个喜欢在桌面上摆弄点小玩意儿的创客,或者单纯想给枯燥的办公桌增添一点科技感和实用性,那么一个能显示时间、天气,甚至还能有点小动画的“…
📅 2026/7/28 4:43:49
1. 项目概述:为什么我们需要一个“多协议”红外库?如果你玩过Arduino和红外遥控,大概率用过IRremote这个库。它几乎是Arduino生态里红外接收和发送的“标准答案”,让点亮一个LED或者控制一个舵机变得像按一下电视遥控器那么简单。…
📅 2026/7/28 4:43:49
1. 项目背景与核心价值Infoseek数字公关AI中台是当前企业舆情管理领域的一次重要技术突破。这个系统最吸引我的地方在于它巧妙融合了Deepseek的语义理解能力和NLP技术栈,构建了一套从舆情感知到智能处置的完整闭环。在实际公关工作中,我们经常面临信息过…
📅 2026/7/28 4:43:49
1. 项目缘起:一个看似简单却暗藏玄机的需求最近在折腾一块行空板,想在上面做个横屏显示的仪表盘,其中有个小功能需要在屏幕顶部显示一行状态文字。需求很简单,但有个小“怪癖”:因为屏幕是横着放的,而且安装…
📅 2026/7/28 4:43:49
1. 项目概述:企业级医疗挂号管理系统的技术架构与核心价值医疗行业的数字化转型正在加速推进,挂号管理系统作为医院与患者接触的第一道窗口,其稳定性和易用性直接影响就医体验。这套基于SpringBootVueMyBatisMySQL的技术方案,正是…
📅 2026/7/28 4:43:49
1. 项目概述:从芯片到系统,TPIC7710EVM如何成为电子驻车制动开发的利器在汽车电子,特别是车身控制与底盘电子的开发中,工程师们常常面临一个挑战:如何快速、准确地将一颗功能复杂的专用集成电路(ASIC&#…
📅 2026/7/28 4:42:48
告别臃肿!3步让你的暗影精灵笔记本重获新生 【免费下载链接】OmenSuperHub Control Omen laptop performance, fan speeds, and keyboard lighting, and unlock power limits. 项目地址: https://gitcode.com/gh_mirrors/om/OmenSuperHub
你是否也曾为官方Om…
📅 2026/7/28 0:00:45
做 RAG 的人应该都踩过这个致命的坑:把几百页的财报、法规、技术手册扔给向量库,问一个具体问题,搜出来的全是沾边但没用的内容 —— 关键信息要么被硬切块拆碎了,要么藏在几十条结果的最下面。语义相似≠真正相关,这个…
📅 2026/7/28 0:00:46
2026年做短视频运营,从抖音上扒文案早就不是偷偷抄笔记的事了。我刚开始做内容的时候,每天刷半小时抖音,手动把爆款视频的口播敲进备忘录,一条2分钟的视频得花十来分钟,碰到语速快的还要反复回听。后来试了一圈工具&am…
📅 2026/7/28 0:00:46
更多请点击:
https://codechina.net
第一章:AI帮助理解数学概念 人工智能正以前所未有的方式重塑数学学习的路径。通过自然语言处理与符号计算的深度融合,AI不仅能解析抽象定义,还能将定理、证明和几何直觉转化为可交互、可验证的…
📅 2026/7/28 1:13:29
1. 项目背景与核心价值去年参与的一个短剧项目让我深刻体会到传统创作流程的痛点:编剧团队花了三周打磨剧本,角色设计反复修改了七版,最后成片时又因为演员档期问题不得不临时调整分镜。这种低效的创作模式在快节奏的内容行业越来越难以为继。…
📅 2026/7/28 1:13:29
remix-i18next TypeScript类型安全实践:确保翻译键与类型定义同步 【免费下载链接】remix-i18next The easiest way to translate your React Router framework mode apps 项目地址: https://gitcode.com/gh_mirrors/re/remix-i18next
在开发多语言应用时&am…
📅 2026/7/28 1:13:29
目录
第一步:选对模板,省心一半
第二步:打开扫码点餐功能
开启功能按钮
桌台管理与桌码生成
第三步:个性化设计,打造品牌感
调整点餐页面
设置点餐规则 你还在让顾客站着排队点餐吗?2025年ÿ…
📅 2026/7/27 7:11:38
在业务中快速构建一个能理解私有文档、准确回答专业问题的智能助手,是很多开发团队面临的共同挑战。传统方案往往需要从零开始搭建复杂的 RAG(检索增强生成)系统,涉及文档解析、向量化、检索、大模型调用等多个环节,整…
📅 2026/7/27 17:12:43
FAE放射组学分析工具:医学影像特征探索的完整解决方案 【免费下载链接】FAE FeAture Explorer 项目地址: https://gitcode.com/gh_mirrors/fae/FAE
你是否曾经面对海量医学影像数据感到无从下手?想要从CT、MRI等影像中提取有价值的定量特征&#…
📅 2026/7/27 5:11:32