一、表格自定义字段
- label
配置前端展示的表格中每列的名字
- row
表示在资源的json文件中的哪里去找到这个列属性的值,当kind被设置为 externalLink 的时候,这里通过row找到的列属性的值为一个外部链接
- kind
用来表示该列是什么样的格式,支持几种不同的配置
- 不配置
不配置就默认以字符的形式展示
- internalLink
表示该列是个项目内的链接,点击之后会跳转到项目中的另一个页面
- externalLink
表示该列是一个外部链接,点击之后会打开一个新的页面
- terminal
表示该列展示的是一个可点击的终端图标,点击之后会跳转到一个终端连接的页面
- action
表示该列展示支持的一系列操作,默认会有删除和更新操作
- tag
表示该列是以标签的形式展示,标签的内容从row字段中获取
- link
link一般与internalLink搭配使用,表示要跳转到另一个页面的名字(需要对vue中的路由配置name属性)
- 直接指定一个组件的名字
表示直接表示要跳转的页面在路由配置中的名字
- 以@字符开头,后面接该对象的某一个属性的全路径xxx.yyy.zzz的形式
表示需要通过@后面的信息解析出要跳转的页面在路由配置中的名字
- tag
tag一般与internalLink搭配使用,表示跳转到某一个页面之后之后所携带的筛选条件,一般是该对象json文件中的某个字段的全路径xxx.yyy.zzz,其中的.需要换成#,也即xxx#yyy#zzz的形式,目前只支持一个属性的填写。该条件对应的值为row所定义并解析出来的值,这时row可以有两种写法,分别是带有@的和没有@的,区别是带有@的在该列会统一显示label所定义的内容,不带@的会在该列的每行显示@后的某个属性的具体值。
{
"apiVersion": "doslab.io/v1",
"kind": "FrontendTable",
"metadata": {
"name": "table-pod",
"namespace": "default"
},
"spec": [{
"kind": "internalLink",
"label": "Pod名",
"link": "podInfo",
"row": "metadata.name",
"type": "input"
},
{
"kind": "internalLink",
"label": "命名空间",
"link": "Namespace",
"row": "metadata.namespace",
"tag": "metadata#name"
},
{
"label": "IP地址ַ",
"row": "status.podIP"
},
{
"kind": "internalLink",
"label": "父类资源",
"link": "@metadata.ownerReferences[0].apiVersion+metadata.ownerReferences[0].kind",
"row": "metadata.ownerReferences[0].kind"
},
{
"kind": "internalLink",
"label": "父类资源名",
"link": "@metadata.ownerReferences[0].apiVersion+metadata.ownerReferences[0].kind",
"row": "metadata.ownerReferences[0].name",
"tag": "metadata#name"
},
{
"label": "运行状态",
"row": "status.phase"
},
{
"label": "所在主机",
"kind": "internalLink",
"link": "Node",
"tag": "metadata#name",
"row": "spec.nodeName"
},
{
"label": "创建时间",
"row": "metadata.creationTimestamp"
},
{
"kind": "terminal",
"label": "远程连接",
"link": "http://39.106.40.190:31052?pod={1}&namespace={2}",
"row": "metadata.name,metadata.namespace"
},
{
"kind": "action",
"label": "更多操作"
}
]
}
二、示例说明
2.1 简单展示所需信息
{
"label": "name",
"row": "metadata.name"
}
其显示效果如下:
2.2 内部显示条件跳转
当前显示spec.nodeName内容,条件{key: metadata##name,value: spec.nodeName},跳转到Node。
{
"label": "所在主机",
"kind": "internalLink",
"link": "Node",
"row": "spec.nodeName",
"tag": "metadata##name"
}
如,显示spec.nodeName内容ubuntu,跳转到物理机列表,只返回一台ubuntu的物理机(尽管该集群存在多个物理机)。<br />

2.3 内部隐式条件跳转
与显示条件跳转不同的是row最前面加了@号。其效果是,不显示metadata.name内容,而是显示条件{key: spec##nodeName,value: metadata.name}跳转到Pod的个数,并实施跳转。
{
"kind": "internalLink",
"label": "关联实例",
"link": "Pod",
"row": "@metadata.name",
"tag": "spec##nodeName"
},
如,关联实例未显示metadata.name,而是4,是通过{key: spec##nodeName,value: metadata.name}跳转到Pod查询出来的,运行在metadata.name物理机上的Pod个数。<br /><br />
2.4 根据字段进行外链
当前显示为metadata.name,跳转到spec.url,其中@是关键字,表示从spec.url进行验证
{
"kind": "externalLink",
"label": "软件仓库",
"link": "@spec.url",
"row": "metadata.name"
},
如metadata.name是operator-hub,其跳转到新的页面operatorhub.io。<br /><br />
- terminal的用法
{ "kind": "terminal", "label": "远程连接", "link": "http://39.106.40.190:31052?pod={1}&namespace={2}", "row": "metadata.name,metadata.namespace" },
