# pacakge.json
package.json文件包含两部分信息:
- 扩展的基本信息,包含扩展名称、描述文字、作者、组件的npm依赖等。npm配置参考npm package.json (opens new window)。
 - 组件扩展点的配置,包括组件的类名、分组、模板等。
 
组件扩展点中包含通用扩展点配置的所有属性,并额外增加了下面的属性。
{
	"contributes": {
		"dataVisualization": [{
			"name": "<component type>",
			"main": "<main ts file>",
			"visualClassName": "...",
			"supportTypes": ["..."],
			"category": "...",
			"subCategory": "...",
			"subTypes": "...",
			"themeCategory": "...",
			"group": "...",
			"focusable": true|false,
			"accessableProperties": [{...}],
			"accessableMethods": [{...}],
			"conditionStyleTypes": ["..."],
			"effectStyleTypes": ["..."],
			"templates": [{...}]
		}]
	}
}
当创建一个组件扩展时,必须指定的配置包括:
{
	"name": "<visual component name>",
	"supportTypes": ["..."],
	"group": "...",
	"visualClassName": "..."
}
# 组件扩展点配置选项
下面是dataVisualization扩展点的配置选项。
# name
组件扩展点的名称,也是组件的类型名称,用于唯一标识一个组件类型,全局唯一,如barChart。
# main
组件依赖的主代码文件,不指定时,使用main.ts。
# visualClassName
组件的类名,对应main.ts中的一个js类,该类继承自IVisualComponent接口,SuccBI在初始化组件时会根据这里的配置对组件进行实例化。
# supportTypes
扩展支持的模块类型。一个组件扩展可以同时支持多个模块,默认支持所有模块。如扩展一个输入框,可以在报表和SuperPage中使用,可配置为["rpt", "spg"]。
在属性栏配置中,通过$global.objectType可以获取到当前模块类型,可在属性栏属性配置的visibleCondition中控制在指定模块显示。
组件扩展中支持配置的模块包括:
dash,仪表板rpt,报表spg,SuperPagewebform,web表单excelform,excel表单
# category
组件分类。一个模块中同一类别的组件可以相互转换。如果未指定则使用name,即一个组件一个分类。
组件分类并不代表组件在设计器组件面板中的位置。如文本组件在SuperPage中属于常用分组,而它的category是text。使用group指定组件在设计器组件面板中的位置。
系统中默认的分类包括:
visual,可视化组件container,容器组件input,输入组件- TODO
 
# subCategory
当组件是子组件时,设置子组件的分类,父组件通过这个分类查找子组件并显示在添加子项的列表中。子组件不显示在组件大纲中。
例如spg列表的列配置如下:
{
	"name": "customcolumn",
	"subCategory": "list.column",
	"capabilities": "columnCapabilities.json",
	...
}
spg列表在初始化时会查找当前已经注册的组件扩展中所有类型为list.column的组件,并显示在列表子项面板的添加菜单中。
# themeCategory
主题的分类,同一个主题分类的组件公用一套组件风格,相同themeCategory的组件在风格选择面板中会显示相同的列表。
如果未指定则使用category,category也没指定则使用name。通常,只有非常相似的组件,如柱形图、折线图等,才指定相同的themeCategory,其它情况则无需指定。
# group
组件分组。用于控制组件在设计器组件面板中显示的位置。
支持配置字符串或json,配置json,会按照不同模块指定的分组控制显示位置。组件显示在仪表板中时需要配置以"@"分隔的二级分组。
{
	"group": "chart@6_kpi", //显示在图形分组的kpi子分组下。
}
或
{
	"group": { "dash": "chart@@6_kpi", "spg": "other" }, //仪表板模块显示在chart分组的kpi子分组下,SuperPage显示在other分组。
}
TODO 截图
# focusable
组件是否可以被聚焦,默认为false。通常只有输入类组件才配置为true,如输入框。在对话框中打开时自动聚焦到focusable为true的组件。
# accessableProperties
设置组件属性交互可以访问的属性名称。系统核心组件库的组件支持的组件属性参考设置组件属性。
此配置项的类型是一个json数组。数组中的一项代表一个组件属性的配置,组件属性支持以下配置项:
name:属性的名称,必选。desc:属性的详细描述,可选,如果没有配置则取国际化配置,国际化配置key为ana.setComponentProperty.组件名.属性名。
文本输入控件组件属性配置如下:
{
	"name": "input",
	"accessableProperties":[
		{
			"name":"value",
			"desc":"输入组件的值" //如果缺省,取值为message("ana.setComponentProperty.input.value")
		},
		...
	],
 	...
}
# accessableMethods
调用组件方法交互可以访问的方法名称及相应的参数配置。系统核心组件库的组件支持的组件属性参考调用组件方法。
此配置项的类型是一个json数组。数组中的一项代表一个组件方法的配置,组件方法支持以下配置项:
name:方法名,可选。desc:方法描述,可选。如果没有配置则取国际化配置,国际化配置key为ana.invokeComponentMethod.组件名.方法名。params:方法参数,可选,类型是json数组。数组中的一项代表一个参数的配置,支持以下属性:name:参数名称,必选。desc:参数描述,可选。如果没有配置则取国际化配置,国际化配置key为ana.invokeComponentMethod.组件名.params.参数名。items:可选的枚举值数组,可选。如果一个参数只能在一些枚举项中取值则需要配置。数组中每一项支持的配置项如下:value:枚举项的值,必选。desc:枚举项描述,可选。如果没有配置则取国际化配置,国际化配置key为ana.invokeComponentMethod.组件名.params.参数名.枚举值。
multiple:是否可以多选,可选,类型为boolean。默认为false,一般配置了items项才需要配置是否可以多选。defaultValue:默认值,可选。optional:此参数是否可选,默认值为true。
funtion,组件方法的函数名,可选,指定后会尝试在组件配置的main文件中查找该函数并调用,用于解决组件不显示就需要调用的逻辑。TODO:
嵌入报表组件方法属性配置如下:
{
    name:"embedreport",
    "accessableMethods":[
        {
            "name":"print"
        },
        {
            "name":"export",
            "params":[
                {
                    "name":"fileName"
                },
                {
                    "name":"sheet",
                    "defaultValue":"current",
                    "multiple":false,
                    "items":[
                    	{
                            "value":"current"
                        },
                        {
                            "value":"all"
                        }
                    ]
                },
                *...*
            ]
        },
        ...
    ],
    ...
}
# conditionStyleTypes
组件允许添加的条件样式类型。
条件样式类型包括:
highlight,突出显示topn,最前/最后。仅在报表和excel表单中可用。dataBar,数据条iconBar,图标条colorGradation,色阶colorPalette,色板iconSet,图标集
# effectStyleTypes
组件允许添加的状态样式类型。
状态样式类型包括:
hover,悬停active,鼠标按下selected,选中disabled,禁用busy,忙碌focus,焦点
# templates
组件模板。一个组件类型可以配置多个组件模板,多个模板都会在组件列表中显示。
组件模板支持的配置:
# name
模板名称,默认是组件的name。
# displayName
模板显示的名称。
# icon
模板图标。
# group
模板分组,仪表板中需要配置以"@"分隔的二级分组。
# after
当配置了group后,可以配置在分组中哪一个组件后面。
# defaultContent
默认元数据。拖入组件时生成的元数据以该配置为基础。
# deviceContents
组件在不同设备下的默认元数据。