索引
HT for Web
提供了属性面板组件,该组件增强了ht.widget.PropertyView
组件的展示及操作功能,提供了可视化的切换排序、过滤和分组的界面功能。
使用属性面板组件需要在引入ht.js
核心库之后,再引入一个ht-propertypane.js
的属性面板插件库。
ht.widget.PropertyPane
为属性面板类,其构造函数可传入ht.DataModel
对象,其主要可配置属性和函数如下:
getPropertyView
获取ht.widget.PropertyView
对象getToolbarHeight
和setToolbarHeight
获取和设置工具条高度getHeaderHeight
和setHeaderHeight
获取和设置表头高度getHeaderLabels
和setHeaderLabels
获取和设置表头文字内容,例如setHeaderLabels(['属性', '值'])
getHeaderLabelColor
和setHeaderLabelColor
获取和设置表头文字颜色getHeaderLabelFont
和setHeaderLabelFont
获取和设置表头文字字体getHeaderLabelAlign
和setHeaderLabelAlign
获取和设置表头文字水平对齐方式,默认为center
setCaseSensitive
和isCaseSensitive
获取和设置过滤是否考虑大小写,默认为false
getIndent
和setIndent
获取和设置工具条图片缩进getSelectBackground
和setSelectBackground
获取和设置工具条按钮选中背景色getCategoryIcon
和setCategoryIcon
获取和设置工具条分组按钮图标getSortIcon
和setSortIcon
获取和设置工具条排序按钮图标getSortFunc
和setSortFunc
获取和设置工具条排序逻辑规矩addProperties
可批量增加属性信息,该函数是对PropertyView#addProperties
的包装 <!DOCTYPE html>
<html>
<head>
<title>PropertyPane</title>
<meta charset="UTF-8">
<style>
html, body {
padding: 0px;
margin: 0px;
}
.main {
margin: 0px;
padding: 0px;
position: absolute;
top: 0px;
bottom: 0px;
left: 0px;
right: 0px;
}
</style>
<script src="../../../../lib/core/ht.js"></script>
<script src="../../../../lib/plugin/ht-propertypane.js"></script>
<script>
function init(){
dataModel = new ht.DataModel();
tablePane = new ht.widget.TablePane(dataModel);
propertyPane = new ht.widget.PropertyPane(dataModel);
splitView = new ht.widget.SplitView(tablePane, propertyPane, 'h', 0.6);
view = splitView.getView();
view.className = 'main';
document.body.appendChild(view);
window.addEventListener('resize', function (e) {
splitView.invalidate();
}, false);
var attributes = [
{
name: 'id',
displayName: 'Id'
},
{
name: 'superClass',
displayName: 'Super Class',
categoryName: 'Class',
getValue: function(data){
var superClass = data.getClass().superClass;
return superClass.getClassName ? superClass.getClassName() : 'Object';
}
},
{
name: 'className',
displayName: 'Class',
categoryName: 'Class'
},
{
name: '_image',
displayName: 'Image',
categoryName: 'Image',
accessType: 'field',
width: 110
},
{
name: 'icon',
displayName: 'icon',
categoryName: 'Image',
width: 120,
enum: {
values: ['node_icon', 'edge_icon', 'group_icon', 'shape_icon', 'subGraph_icon', 'grid_icon'],
icons: ['node_icon', 'edge_icon', 'group_icon', 'shape_icon', 'subGraph_icon', 'grid_icon']
}
}
];
tablePane.addColumns(attributes);
propertyPane.addProperties(attributes);
[ht.Data, ht.Node, ht.Edge, ht.Group, ht.Grid, ht.Shape, ht.SubGraph, ht.Grid].forEach(function(clazz){
data = new clazz();
dataModel.add(data);
});
dataModel.sm().ss(data);
}
</script>
</head>
<body onload="init();">
</body>
</html>