iBizModel 日历部件(PSSYSCALENDAR)模型体系详解

iBizModel 日历部件(PSSYSCALENDAR)模型体系详解

引言

iBizModel 系统日历部件模型体系是 iBizModel 架构中专门用于处理时间相关数据可视化与交互的核心组成部分。该体系基于 PSSYSCALENDAR 模型构建,提供了完整的日历功能实现框架,支持从简单的日程显示到复杂的时间轴项目管理等多种应用场景。系统日历部件不仅具备丰富的数据展示能力,还集成了强大的交互逻辑和扩展机制,是企业级应用中时间管理功能的重要基础。

🌐 在线体验

点击访问iBizAppHUB示例系统查看日历部件更多场景

⚡ 提示:点击右侧调试工具栏,可直接查看指定视图在iBizModeling工具的配置。

模型体系架构

核心模型关系图

PSSYSCALENDAR PSSYSCALENDARITEM PSSYSCALENDARLOGIC PSSYSCALENDARITEMRV PSDATAENTITY PSDETOOLBAR PSCTRLLOGICGROUP PSSYSCSS PSDEDATASET PSDEFIELD PSDEVIEWBASE PSDELOGIC PSDEUIACTION d

模型层级结构详解

1. PSSYSCALENDAR(日历部件模型)

作为日历部件体系的根模型,PSSYSCALENDAR 定义了日历的整体框架和基础配置。其核心属性包括:

  • calendarstyle:日历样式枚举,支持天(DAY)、周(WEEK)、月(MONTH)、时间轴(TIMELINE)等多种显示模式
  • navviewpos:导航视图位置控制,支持右侧、下方等多种布局方式
  • groupmode:数据分组模式,支持自动分组、代码表分组等高级功能
  • psdeid:关联的实体模型

PSSYSCALENDAR 通过引用 PSDATAENTITY 建立数据基础,通过 PSDETOOLBAR 集成操作工具,通过 PSCTRLLOGICGROUP 附加控制逻辑,形成了完整的日历功能框架。

2. PSSYSCALENDARITEM(日历部件项模型)

作为日历数据展示的核心,PSSYSCALENDARITEM 定义了具体的数据项配置:

  • beginpsdefidendpsdefid:时间范围定义,支持精确的时间区间控制
  • itemtype:项类型标识,支持多数据源混合显示
  • psdeid:数据集所在实体
  • psdedsid:数据集引用,确保数据查询的灵活性
  • viewactions:操作控制集合,支持建立、编辑、删除等完整CRUD操作

每个日历项可以独立配置样式、颜色、图标等视觉属性,并支持拖拽编辑、上下文菜单等交互功能。

3. PSSYSCALENDARITEMRV(日历项引用视图模型)

该模型提供了日历项与详细视图的关联机制:

  • psdeviewbaseid:关联的实体视图,支持点击日历项跳转到详细页面
  • name:引用模式定义,控制视图打开方式
  • viewparams:视图参数传递,支持上下文数据传递

通过引用视图机制,日历部件实现了从概览到详情的无缝导航体验。

4. PSSYSCALENDARLOGIC(日历部件逻辑模型)

逻辑模型为日历部件提供了动态行为控制:

  • triggertype:触发类型,支持定时器、视图事件、部件事件等多种触发方式
  • dstlogictype:目标逻辑类型,支持实体界面逻辑、系统预置逻辑、前端插件等处理目标
  • timer:定时器间隔,支持周期性逻辑执行

逻辑模型使得日历部件可以根据业务规则动态调整显示内容、控制用户操作权限、实现复杂的交互流程。

关键技术特性

多数据源集成能力

PSSYSCALENDAR 支持通过多个 PSSYSCALENDARITEM 集成不同实体的数据,在同一个日历界面中显示来自多个业务模块的时间相关数据。例如,在项目管理系统可以同时显示任务计划、会议安排和资源预约。

灵活的视图配置

通过 calendarstyle 枚举,日历部件支持六种内置视图样式和用户自定义样式。每种样式都针对特定的使用场景优化:

  • 天视图:适合精细的日程安排
  • 周视图:平衡细节和概览
  • 月视图:提供长期规划视角
  • 时间轴:适合项目进度跟踪
  • 复合时间轴:结合时间轴和传统日历优势

强大的交互控制

通过 PSSYSCALENDARLOGIC 和 PSSYSCALENDARITEM 的协同,日历部件支持丰富的交互功能:

  • 拖拽调整时间:直接通过拖拽修改事件时间
  • 上下文菜单:右键快捷操作
  • 实时数据更新:定时器驱动的数据刷新
  • 条件显示控制:基于业务规则的动态显示

扩展性设计

模型体系通过插件机制(pssyspfpluginid)支持功能扩展,前端样式通过 PSSYSCSS 引用支持主题定制,确保了系统的可维护性和可扩展性。

DSL 代码实现示例

基于工具返回的模型信息,以下是完整的系统日历部件 DSL 实现示例:

groovy 复制代码
//iBizModelDSL建模指令,目标:构建企业级项目管理系统日历部件
def de_project = "ProjectManagement.PROJECT"
def de_task = "ProjectManagement.TASK" 
def de_meeting = "ProjectManagement.MEETING"
def mod_pm = "ProjectManagement"

// 主项目日历 - 月视图,支持多数据源
pssyscalendar(
    psmoduleid: mod_pm,
    codename: "ProjectMainCalendar",
    name: "项目主日历",
    psdeid: de_project,
    calendarstyle: "MONTH",
    navviewpos: "RIGHT",
    navviewheight: 400.0,
    navviewshowmode: 0,
    enableedit: 1,
    busyindicator: 1,
    emptytext: "暂无日程安排",
    pssyscssid: "System.CalendarTheme",
    quickpsdetoolbarid: "ProjectManagement.QuickToolbar",
    batpsdetoolbarid: "ProjectManagement.BatchToolbar"
){
    // 项目任务项
    pssyscalendaritem(
        itemtype: "project_task",
        name: "项目任务",
        psdeid: de_task,
        psdedsid: de_task + ".ActiveTasks",
        beginpsdefid: de_task + ".PLAN_START_DATE",
        endpsdefid: de_task + ".PLAN_END_DATE",
        textpsdefid: de_task + ".TASK_NAME",
        colorpsdefid: de_task + ".PRIORITY_COLOR",
        bkcolorpsdefid: de_task + ".STATUS_BGCOLOR",
        iconpsdefid: de_task + ".TASK_ICON",
        enableviewactions: 1,
        viewactions: 31, // 支持建立、编辑、查看、删除、拷贝
        editmode: 1,
        maxsize: 1000,
        psdetoolbarid: "ProjectManagement.TaskContextMenu",
        psdeviewbaseid: de_task + ".TaskDetailView"
    ){
        pssyscalendaritemrv(
            name: "edit",
            psdeviewbaseid: de_task + ".TaskEditView"
        )
        pssyscalendaritemrv(
            name: "view", 
            psdeviewbaseid: de_task + ".TaskDetailView"
        )
    }
  
    // 会议安排项
    pssyscalendaritem(
        itemtype: "meeting",
        name: "会议安排", 
        psdeid: de_meeting,
        psdedsid: de_meeting + ".UpcomingMeetings",
        beginpsdefid: de_meeting + ".MEETING_START_TIME",
        endpsdefid: de_meeting + ".MEETING_END_TIME",
        textpsdefid: de_meeting + ".MEETING_TITLE",
        contentpsdefid: de_meeting + ".MEETING_AGENDA",
        color: "#2E7D32",
        bkcolor: "#E8F5E8",
        enableviewactions: 1,
        viewactions: 7, // 支持建立、编辑、查看
        editmode: 0,
        psdeviewbaseid: de_meeting + ".MeetingDetailView"
    )
}

// 项目时间轴日历 - 用于项目进度跟踪
pssyscalendar(
    psmoduleid: mod_pm,
    codename: "ProjectTimeline",
    name: "项目时间轴",
    psdeid: de_project, 
    calendarstyle: "TIMELINE",
    groupmode: "AUTO",
    grouppsdefid: de_project + ".PROJECT_PHASE",
    navviewpos: "BOTTOM",
    navviewheight: 300.0,
    enableedit: 1
){
    pssyscalendaritem(
        itemtype: "timeline_task",
        name: "时间轴任务",
        psdeid: de_task,
        psdedsid: de_task + ".TimelineTasks",
        beginpsdefid: de_task + ".ACTUAL_START_DATE",
        endpsdefid: de_task + ".ACTUAL_END_DATE",
        textpsdefid: de_task + ".TASK_NAME",
        progresspsdefid: de_task + ".PROGRESS_PERCENT",
        levelpsdefid: de_task + ".TASK_LEVEL",
        enableviewactions: 1,
        viewactions: 15
    )
}

// 个人工作台日历 - 天视图,支持快速操作
pssyscalendar(
    psmoduleid: mod_pm,
    codename: "PersonalWorkbench",
    name: "个人工作台",
    psdeid: de_task,
    calendarstyle: "DAY",
    navviewpos: "NONE",
    enableedit: 1,
    quickpsdetoolbarid: "ProjectManagement.PersonalQuickToolbar"
){
    pssyscalendaritem(
        itemtype: "personal_tasks",
        name: "个人任务",
        psdeid: de_task,
        psdedsid: de_task + ".PersonalTasks",
        beginpsdefid: de_task + ".PLAN_START_DATE",
        endpsdefid: de_task + ".PLAN_END_DATE", 
        textpsdefid: de_task + ".TASK_NAME",
        colorpsdefid: de_task + ".URGENCY_COLOR",
        enableviewactions: 1,
        viewactions: 31,
        editmode: 1
    )
}

模型体系优势总结

iBizModel 系统日历部件模型体系通过层次化的模型设计和丰富的配置选项,为企业级应用提供了强大的时间数据管理能力。

相关推荐
iBizModel16 小时前
iBizModel 实体图表(PSDECHART)模型详解
ibizmodeling
iBizModel5 天前
iBizModel 全文检索体系(PSSYSSEARCHSCHEME)模型详解
全文检索·ibizmodeling
iBizModel9 天前
iBizModel 工具栏(PSDETOOLBAR)与应用菜单(PSAPPMENU)模型详解
ibizmodeling
iBizModel11 天前
iBizModel 树视图(PSDETREEVIEW)模型体系详解
ibizmodeling
iBizModel12 天前
iBizModel 应用程序(PSSYSAPP)模型体系详解
ibizmodeling
iBizModel13 天前
iBizAppHUB前端框架示例(1)-多应用融合
ibizmodeling