diff --git a/CHANGELOG.md b/CHANGELOG.md index 788fd16f2997fcee413122da45a3142ad9e4b5da..cf2ec33045bf226dd414b081e701ce407cecd8aa 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -10,6 +10,7 @@ ### Added - 默认登录页识别 orgid 当面板数据中有 orgid 时,username 传递值为 username@orgid +- 补充甘特图视图引擎和甘特图部件 ## [0.4.7] - 2023-12-07 diff --git a/src/control/gantt/gantt.provider.ts b/src/control/gantt/gantt.provider.ts new file mode 100644 index 0000000000000000000000000000000000000000..d4c086b0e8e49e3c3282e092ef65ad5ed0751ca4 --- /dev/null +++ b/src/control/gantt/gantt.provider.ts @@ -0,0 +1,14 @@ +import { IControlProvider } from '@ibiz-template/runtime'; + +/** + * 甘特图适配器 + * + * @author zhanghengfeng + * @date 2023-12-08 15:12:11 + * @export + * @class GanttProvider + * @implements {IControlProvider} + */ +export class GanttProvider implements IControlProvider { + component: string = 'IBizGanttControl'; +} diff --git a/src/control/gantt/gantt.tsx b/src/control/gantt/gantt.tsx new file mode 100644 index 0000000000000000000000000000000000000000..b7b98626afa04c7474492f033e5f860a665980aa --- /dev/null +++ b/src/control/gantt/gantt.tsx @@ -0,0 +1,31 @@ +import { useControlController, useNamespace } from '@ibiz-template/vue3-util'; +import { defineComponent, PropType } from 'vue'; +import { IDEGantt } from '@ibiz/model-core'; +import { IControlProvider, GanttController } from '@ibiz-template/runtime'; + +export const GanttControl = defineComponent({ + name: 'IBizGanttControl', + props: { + modelData: { type: Object as PropType, required: true }, + context: { type: Object as PropType, required: true }, + params: { type: Object as PropType, default: () => ({}) }, + provider: { type: Object as PropType }, + loadDefault: { type: Boolean, default: true }, + }, + setup() { + const c = useControlController((...args) => new GanttController(...args)); + const ns = useNamespace(`control-${c.model.controlType!.toLowerCase()}`); + + return { + c, + ns, + }; + }, + render() { + return ( + + 甘特图 + + ); + }, +}); diff --git a/src/control/gantt/index.ts b/src/control/gantt/index.ts new file mode 100644 index 0000000000000000000000000000000000000000..957985f922659fa044524262a7257597d66d1116 --- /dev/null +++ b/src/control/gantt/index.ts @@ -0,0 +1,12 @@ +import { registerControlProvider, ControlType } from '@ibiz-template/runtime'; +import { withInstall } from '@ibiz-template/vue3-util'; +import { App } from 'vue'; +import { GanttControl } from './gantt'; +import { GanttProvider } from './gantt.provider'; + +export const IBizGanttControl = withInstall(GanttControl, function (v: App) { + v.component(GanttControl.name, GanttControl); + registerControlProvider(ControlType.GANTT, () => new GanttProvider()); +}); + +export default IBizGanttControl; diff --git a/src/control/index.ts b/src/control/index.ts index 4bb09c1a91d470d21882ca3890fa25a3272036c3..e418589d39a0f3bf029c3149180d34ac5016dd1b 100644 --- a/src/control/index.ts +++ b/src/control/index.ts @@ -23,3 +23,4 @@ export * from './tree-grid'; export * from './medit-view-panel'; export * from './map'; export * from './report-panel'; +export * from './gantt'; diff --git a/src/index.ts b/src/index.ts index 506772a8302ac7a5f906ca650742e8e25bb81a47..5e519589c91a7b8dc0cd1f0c9f9c5db2f1bdef47 100644 --- a/src/index.ts +++ b/src/index.ts @@ -41,6 +41,7 @@ import { IBizChartExpBarControl, IBizMapControl, IBizReportPanelControl, + IBizGanttControl, } from './control'; import IBizEditor from './editor'; import { IBizWFStepTraceView } from './view'; @@ -104,6 +105,7 @@ export default { v.use(IBizChartExpBarControl); v.use(IBizMapControl); v.use(IBizReportPanelControl); + v.use(IBizGanttControl); // 编辑器 v.use(IBizEditor); }, diff --git a/src/view-engine/gantt-view.engine.ts b/src/view-engine/gantt-view.engine.ts new file mode 100644 index 0000000000000000000000000000000000000000..02f72ce37451ad4959fec2e2580aeb9483248428 --- /dev/null +++ b/src/view-engine/gantt-view.engine.ts @@ -0,0 +1,20 @@ +import { + MDViewEngine, + ViewController, + IGanttViewState, + IGanttViewEvent, + IGanttController, +} from '@ibiz-template/runtime'; +import { IAppDEGanttView } from '@ibiz/model-core'; + +export class GanttViewEngine extends MDViewEngine { + protected declare view: ViewController< + IAppDEGanttView, + IGanttViewState, + IGanttViewEvent + >; + + get gantt(): IGanttController { + return this.view.getController('gantt') as IGanttController; + } +} diff --git a/src/view-engine/index.ts b/src/view-engine/index.ts index b13571e5914981d8f20185075e8549fee343cfbe..d31346ffe8b5f48386a51c1e6f4dc0e4d52b66c3 100644 --- a/src/view-engine/index.ts +++ b/src/view-engine/index.ts @@ -41,6 +41,7 @@ import { MEditView9Engine } from './medit-view9.engine'; import { ChartExpViewEngine } from './chart-exp-view.engine'; import { MapViewEngine } from './map-view.engine'; import { ReportViewEngine } from './report-view.engine'; +import { GanttViewEngine } from './gantt-view.engine'; export * from './grid-view.engine'; export * from './index-view.engine'; @@ -223,6 +224,10 @@ export const IBizViewEngine = { 'VIEW_DECHARTEXPVIEW', (c: IViewController) => new ChartExpViewEngine(c), ); + ibiz.engine.register( + 'VIEW_DEGANTTVIEW', + (c: IViewController) => new GanttViewEngine(c), + ); // 注册部件视图 ibiz.engine.register(