- 浏览: 166796 次
- 性别:
- 来自: 上海
文章分类
最新评论
-
qq_21380041:
954414957@qq.com
HTML5数据可视化第二弹:打造最美3D机房 -
qq_21380041:
楼主,求代码
HTML5数据可视化第二弹:打造最美3D机房 -
luoaz:
楼主能不能传个源码的附件上来, 分享学习下呢?
HTML5+WebGL 3D机房开发实例 -
xiaosi1278:
你好能不能把你讲的源代码发一下!!做参考403541110@q ...
TWaver 3D 编辑器的使用(一)----设计3D场景以及数据绑定 -
TWaverGeek:
BigBird2012 写道您好,您能把您使用TWaver导入 ...
TWaver导入导出AutoCAD DXF图纸
出于效率和保持js库最小化的考虑,TWaver HTML5的Tree组件默认的交互方式比较单调,目前只有选中改变文字背景;但是这不代表TWaver功能不够强大,相反,TWaver预留了很多可以重载的方法方便我们扩展,本文中我们就利用这些方法实现鼠标滑过改变背景色的效果。
先来张gif图片看看效果:
实现方式再简单不过,只有短短几十行代码,先列一下我们用到的方法:
- onDataRendered(div, data, row, selected)
- adjustRowSize()
- getSelectColor()
- onDataRendered 从字面上很好理解,每当Tree要渲染行数据的时候就会调用此方法
- div 行数据的显示容器,每行都有一个div容器,我们可以通过改变div背景色来实现变色效果
- data 行数据,我们监听鼠标move事件,记录鼠标所在行的数据,然后在onDataRendered里判断当前行是否在鼠标下,如果在就改变div的背景色
- row 行数
- selected 当前行是否被选中,如果被选中将div设置为深色背景
this.onDataRendered = function (div, data, row, selected) { DemoTree.superClass.onDataRendered(div, data, row, selected); if (selected) { //如果当前行被选中,设置div为深色背景和边框 div.style.background = "rgb(216,233,252)"; div.style.border = "1px solid rgb(125,162,206)"; } else if (data == self.newdata) { //如果当前行是鼠标所在的行,设置div为浅色背景和边框 div.style.background = "rgb(246,249,253)"; div.style.border = "1px solid rgb(184, 214, 251)"; }else{ //设置其它行的padding div.style.padding="1px"; } }
- adjustRowSize 这个方法紧接着onDataRendered执行,用来设置行宽和行高。我们在onDataRendered为div设置了边框或padding,会造成Tree上出现横向滚动条,所以需要重写这个方法:
this.adjustRowSize = function () { var id, div; var hpx = self.getRowHeight() - self.getRowLineWidth() + 'px'; //每行div的宽度都减去2像素,避免出现横向滚动条 var wpx = Math.floor((self.getView().scrollLeft + self.getView().clientWidth) / self.getZoom()-2) + 'px'; for (id in self._renderMap) { div = self._renderMap[id]; div.style.height = hpx; div.style.width = wpx; } };
- getSelectColor 这个方法用来返回Tree上被选中行的文字的背景色,因为我们已经通过div给整行设置了背景色,文字背景就显得多余了,所以我们重写这个方法返回一个透明色:
this.getSelectColor = function () { return "rgba(0,0,0,0)"; };
除了这三个方法,还有两个监听器
首先,鼠标移动的时候需要保存鼠标下的data
var self=this; this._view.addEventListener("mouseover", function (e) { self.newdata = self.getDataAt(e); if (self.olddata != self.newdata) { if (self.olddata) { //调用invalidateData通知Tree数据发生了变化,TWaver稍后会调用onDataRendered self.invalidateData(self.olddata); } if (self.newdata) { self.invalidateData(self.newdata); } self.olddata = self.newdata; } });
其次:当鼠标移除Tree时,清空滑过时设置的背景色:
this._view.addEventListener("mouseout", function (e) { if (self.newdata) { self.invalidateData(self.newdata); self.newdata = null; } });
最后附上完整的代码:
var DemoTree = function (dataBox) { DemoTree.superClass.constructor.apply(this, arguments); var self = this; this.newdata = null; var olddata = null; this._view.addEventListener("mouseover", function (e) { self.newdata = self.getDataAt(e); if (self.olddata != self.newdata) { if (self.olddata) { self.invalidateData(self.olddata); } if (self.newdata) { self.invalidateData(self.newdata); } self.olddata = self.newdata; } }); this.onDataRendered = function (div, data, row, selected) { DemoTree.superClass.onDataRendered(div, data, row, selected); if (selected) { div.style.background = "rgb(216,233,252)"; div.style.border = "1px solid rgb(125,162,206)"; } else if (data == self.newdata) { div.style.background = "rgb(246,249,253)"; div.style.border = "1px solid rgb(184, 214, 251)"; }else{ div.style.padding="1px"; } } this.adjustRowSize = function () { var id, div; var hpx = self.getRowHeight() - self.getRowLineWidth() + 'px'; var wpx = Math.floor((self.getView().scrollLeft + self.getView().clientWidth) / self.getZoom()-2) + 'px'; for (id in self._renderMap) { div = self._renderMap[id]; div.style.height = hpx; div.style.width = wpx; } }; this.getSelectColor = function () { return "rgba(0,0,0,0)"; }; this._view.addEventListener("mouseout", function (e) { if (self.newdata) { self.invalidateData(self.newdata); self.newdata = null; } }); }; twaver.Util.ext(DemoTree, twaver.controls.Tree, {});
发表评论
-
HTML5数据可视化第四弹:交互式地铁线路图
2016-12-13 15:25 988前言 最近特别忙, ... -
HTML5数据可视化第三弹:萌萌哒拓扑图分组
2016-12-02 09:55 2494前言 最近忙着给客户折腾一个复杂的多层嵌套关系。客 ... -
看HTML5如何化解大型复杂网络拓扑图的分组嵌套效果
2015-06-25 14:12 3632忙完3D,最近又开始用HTML5给客户开发网管界面。这次客 ... -
HTML5数据可视化第二弹:打造最美3D机房
2015-06-01 14:25 12792最近项目开发任务告一段落,刚好有时间整理这大半年的一些成果 ... -
HTML5数据可视化第一弹:彩虹爆炸图
2015-05-19 15:23 8034前言 25年过去了,Brooks博士著名的“没有银 ... -
HTML5组织结构图之名片式网元布局
2015-05-07 11:43 2476组织结构图(Organization chart)是企业的 ... -
HTML5流程图之矢量可伸展workflow
2015-05-06 17:17 11464互联网购物成了当今非 ... -
HTML5流程图之复杂关系网
2015-05-06 17:10 2240关系网图的呈现方式多种多样,今天我们给大家分享的是和弦式的 ... -
TWaver GIS制作穹顶之下的雾霾地图
2015-03-18 14:31 763“我不满意,我不想等待,我也不再推诿,我要站出来做一点什么。 ... -
TWaver HTML5之树形布局
2015-03-11 10:53 1437转眼间春节假期已经过完,作为一个职业的程序猿,不知道大家有没 ... -
TWaver 3D应用于大型数据中心(续)
2015-02-04 12:00 965在2014年11月份,我们当时发了一篇有关TWaver HT ... -
TWaver动画之雷达扫描效果
2015-01-26 14:03 1597UI和功能是好的产品的两个重要因素,很多产品往往只注重功能上 ... -
HTML5 实现Link跳线效果
2015-01-15 14:01 1018之前我们推出过Flex版 ... -
在TWaver的Tree节点上画线
2015-01-13 10:27 956论坛上有同学提出如何在tree上画引导线,之前我们Flex已 ... -
22万个木箱!TWaver 3D极限压榨
2014-12-29 11:31 901打开个门户网站都千呼万唤,我们还能期待网页上的3D技术会有 ... -
如何创建TWaver 3D的轮廓选中效果
2014-11-03 10:44 917在一般的游戏中,物体的选中效果会是这样: TWaver 3 ... -
如何创建环型、树型双层布局
2014-09-19 10:58 831TWaver的Demo中有常用的环型布局和树型布局,但是当网 ... -
服务器各项指标的图形化显示
2014-09-11 11:49 695在机房的监控时,经常需要去查看某个机柜中的某一台服务器的各项 ... -
HTML5定制全选列头
2014-09-10 14:57 720随着HTML5产品分支的不断深入使用,HTML5的需求也是越 ... -
TWaver MONO模板库新鲜出炉 精彩纷呈
2014-08-05 11:39 937MONO Design在线3D建模平台网站, www.mon ...
相关推荐
TWaver是一个专业级的图表和数据可视化工具,它提供了HTML5版本的3D图形组件,允许开发者在Web应用中创建交互式的三维图形。 【描述解读】 描述中提到的“TWaver HTML5 3D 制作的demo提供一个3d图形展示的基本代码...
《TWaver HTML5 开发指南代码》是一份专为开发者准备的参考资料,它主要聚焦于如何利用TWaver库在HTML5环境下构建拓扑工具和机房展示应用。TWaver是一个强大的可视化框架,其核心特性是支持复杂的图形和网络图表的...
TWaver HTML5 Developer Guide是关于TWaver HTML5组件套件的官方开发文档,由Serva Software发布。TWaver HTML5是一套基于HTML5的图形组件库,它提供了一整套用于构建网络拓扑图、树形结构、表格和图表等功能丰富的...
标题中的"twaver-html5-5.9.0-api_html5_-5.9.0-api_twaver_"似乎是指一个基于HTML5的Twaver版本5.9.0的应用程序接口(API)文档。Twaver是一个强大的数据可视化和网络建模工具,广泛应用于网络拓扑、流程图、组织...
Twaver学习案例的例子
TWaver的图形组件库中提供了拓扑组件、地图组件、设备图组件,以及表格、树图、属性表、图表等丰富的通用图形界面组件,为电信运营支撑系统(OSS)的开发提供“一站式”的组件产品和解决方案,是快速设计、开发和...
TWaver组件家族包括TWaver Java、TWaver Web、TWaver Flex、TWaver .NET、TWaver HTML5和TWaver GIS,覆盖了多种开发环境。本文主要讨论的是在Flex环境下的TWaver组件——TWaver Flex。 在配置TWaver Flex的开发...
TWaver HTML5(以下简称TWaver)使用HTML5技术和javascript语言,可在支持HTML5的浏览器上进行绘图。 使用TWaver前,需熟悉几个基本概念:图元(Element)、容器(DataBox)和画布(Network)。 图元:图形中的...
【标题】"TWaver-Java 电信组件"是基于Java平台开发的一款专业级的电信行业图形组件库。这个组件库专为电信领域的数据可视化和业务流程管理设计,它提供了丰富的图表类型和强大的交互功能,帮助开发者高效地构建复杂...
【TWaver-Java 电信组件】是专门为电信行业设计的一款强大的可视化组件库,它提供了丰富的图形化工具,用于构建复杂的网络拓扑、设备状态监控、业务流程展示等应用。这个单机Demo是开发者和系统集成商了解和评估...
- **通用特性**:支持HTML标签、半透明效果、节点对象的使用等,增加图形的视觉效果。 ### 结论 《TWaver Java 3.7 Developer Guide》不仅是一份技术手册,更是开发者理解和掌握TWaver Java库的钥匙。它详细介绍了...
TWAVER是一款强大的JAVA图形设计组件,专为电信级别的应用设计,它提供了丰富的功能来满足开发者在图形化展示、操作和地理信息系统(GIS)等方面的需求。这款组件的强大之处在于其高度定制性和灵活性,使得开发人员...
TWaver的图形组件库中提供了拓扑组件、地图组件、设备图组件,以及表格、树图、属性表、图表等丰富的通用图形界面组件,为电信运营支撑系统(OSS)的开发提供“一站式”的组件产品和解决方案,是快速设计、开发和...
TWaver for Flex 是一款由 Serva Software 开发的高级图形组件库,它为 Flex 应用程序提供了一系列丰富的图形控件和服务。这些控件允许开发者在 Flex 应用程序中轻松实现复杂的网络拓扑图、表格、树形结构等图形界面...
- **视图组件**:TWaver Flex的视图组件主要包括Network、Table和Tree组件。 - **Network组件**:是构建网络拓扑图的核心,它展示了网络的层次结构,并提供了添加背景、过滤器使用、样式规则函数和界面交互等功能...
TWaver允许用户为图形组件设置右键菜单,以便用户可以执行更多操作。 #### 添加鼠标和键盘动作 TWaver支持添加自定义的鼠标和键盘事件处理器,以实现更复杂的交互逻辑。 #### 处理数据选择 TWaver提供了强大的数据...
### Twaver Web SVG 开发说明文档 #### 一、前言 Twaver Web SVG 开发说明文档是一份针对电信...通过对该文档的学习,可以深入了解 Twaver Web SVG 的各个组成部分及其实现原理,为后续的实际应用奠定坚实的基础。
- TWaver的各个版本都非常轻量级,例如**Java**版本的大小仅为1.8MB,而**HTML5**版本则只有0.6MB。 - 这意味着TWaver不仅加载速度快,而且对系统的资源消耗也很小,能够在各种设备上流畅运行。 #### 易扩展 - ...
【描述】该开发包的亮点在于其强大的可视化能力,通过TWaver,开发者可以轻松地构建出各种炫酷的图形,如流程图、网络拓扑图、时间线、地图等,为应用程序增添专业且美观的视觉效果。TWaver的API设计友好,使得即使...