1.新建数据表
数据表必须字段
- id ( varchar 36) 主键
- modified_time (datetime) 修改时间
- modified_id (varchar 36)
- created_time (datetime) 创建时间
- created_id (varchar 36)
2.添加表配置
打开 eam\client\launchpad\resource\Metadata.js.gz(默认gz,修改调试后为min)
添加Metadata表json
CalemMetadata[表名]=[
"table_name":表名,
"module":模块名/modCalemXXX ,
"cache_type": 缓存类型(database/dropdown/memory),
"primary_key": 表主键,
"lookup_mapping": {
"field": 主键名,
"primary": 外键名,
},
"order_by": {
"field": 字段名,
"order": ("DESC"/"ASC")
},
"fields": {
表字段名:{
"type":字段类型(主键外键为guid)
"length":长度,可省略
"lookup":关联外键表名
}
}
]
打开 eam\server\metadata\table 目录 , 新建一个 数据库名(列表名).php 文件
- order_by根据定义的字段进行排序
<?php
if (!defined('_CALEM_DIR_')) die("Access denied at ".__FILE__);
$_CALEM_table=array(
'table_name'=>'pro_line',
'module'=>'modCalemProLine',
'cache_type'=>'database',
'order_by'=>array('field'=>'modified_time', 'order'=>'DESC'),
'primary_key'=>array('id'),
'fields'=>array(
'id'=>array(
'type'=>'guid'
),
....此处编辑其他字段名
'字段名'=>array(
'type'=>'varchar',
'length'=>76
),
....
'modified_time'=>array(
'type'=>'datetime'
),
'modified_id'=>array(
'type'=>'guid',
'lookup'=>'users'
),
'created_time'=>array(
'type'=>'datetime'
),
'created_id'=>array(
'type'=>'guid',
'lookup'=>'users'
)
) //End of fields list
)
?>
3.打开两个文件
文件一 eam\custom\group\CALEM_OOB.view.js.min
文件二 eam\client\launchpad\resource\Calem.js.gz(默认gz,修改调试后为min)
4.创建左侧菜单
CALEM_OOB.view.js.min 中找到 CalemConf[“registry_module”] ,加入新模块
CalemConf["registry_module"]={
loader: 'loadModules',
names: [...,'modCalem模块名'] };
在Calem.js.gz中加入
- defaultMenu 默认显示列表
//主页面模块
CalemModuleDef["modCalem模块"]= {
CalemModuleInfo: {
id:"modCalem模块",
icon:"icon名称",
defaultMenu: 'Calem模块名FormList',
toolBar: {
CalemToolBarInfo: {
type: 'CalemToolBar',
layout: ['Calem模块名FormList'],
list: [
{CalemMenuItemInfo: {id: 'Calem模块名FormList'}},
]
}
}
}
};
5.编写模块
List / 列表页面模块
CALEM_OOB.view.js.min 中添加
- tbLayout 头部工具栏 CalemTbNew新建… sep间隔符号
- viewLayout 页面栏目 lb_caption标题 、toolbar工具栏 、grid 列表栏
- gridLayout 列表栏
- 编辑好,在线压缩后添加
CalemViewCustomDef['模块名ViewList_CALEM_OOB'] = {
CalemViewCustomInfo: {
id: '模块名ViewList',
acl: {CalemViewAclInfo: {tbAcl: {},viewAcl: {}}},
layout: {
CalemViewLayoutInfo: {
tbLayout: ['CalemTbNew', 'CalemTbOpen', 'CalemTbDelete', 'sep', 'CalemTbDataRefresh', 'sep2', 'CalemTbSearch', 'CalemTbSearchClear', 'sep3', 'CalemTbCustomize'],
viewLayout: [{
CalemTrInfo: {
height: -2,
cols: ['lb_caption']
}
}, {
CalemTrInfo: {
height: -2,
cols: ['toolbar']
}
}, {
CalemTrInfo: {
height: -2,
cols: ['grid']
}
}],
gridLayout: {
CalemListInfo: {
noMaximize: true,
colList: [{
CalemCol: {
id: 字段名,
width: 100
}
...此处省略多个CalemCol(删除)
}]
}
}
}
}
}
};
Calem.js.gz添加 New模块
- title关联CalemMsg.js.gz的文本转义
- 把中文替换成对应名称
- 先统一模块名/列表名
//定义List新Form层
CalemMenuDef['Calem模块名FormList'] = {
id: 'Calem模块名FormList',
title: '列表名',
icon: '',
disIcon: null,
tooltip: null,
enabled: true,
onSelect: {CalemMenuSelect: {listener: 'OpenFormListener'}}
};
function Calem模块名FormList(parent, formId, data) {
if (arguments.length==0) return;
CalemFormList.call(this, parent, formId, data);
}
Calem模块名FormList.prototype = new CalemFormList;
Calem模块名FormList.prototype.constructor = Calem模块名FormList;
Calem模块名FormList.prototype.toString = function() { return "Calem模块名FormList";}
/**
* Business APIs
*/
Calem模块名FormList.prototype._getFormNewId =
function(evt) {
return 'Calem模块名FormNew';
}
Calem模块名FormList.prototype._getFormReadId =
function(evt) {
return 'Calem模块名FormRead';
}
新模块List的form层
//新模块List的form层
CalemItemDef['Calem模块名FormList']={
CalemFormInfo: {
id: 'Calem模块名FormList',
title: '列表名',
icon: 'CalemSched',
controller: 'Calem模块名FormList',
model: '列表名',
view: {CalemViewRefInfo: {id: 'Calem模块名ViewList'}},
replaceType: CalemItemDef.REPLACE_BY_ID,
searchFormId: 'Calem模块名FormSearch'
}
}
新模块List的view层
//新模块List的view层
CalemViewDef['Calem模块名ViewList']={
CalemViewInfo: {
id: 'Calem模块名ViewList',
type: 'CalemView',
layout: {
CalemLayoutInfo: {
tableLayout: {CalemTableLayoutInfo: {width: '100%'}},
colLayout: {CalemColLayoutInfo: {colCount: 1}}, //Potentially col width definition.
rows: [
{CalemTrInfo: {cols: ['lb_caption']}},
{CalemTrInfo: {height: -2, cols: ['toolbar']}},
{CalemTrInfo: {height: -1, cols: ['grid']}}
]
}
},
itemMap : {
CalemItemMap: {
'lb_caption': {
CalemLabelInfo: {id: '列表名', className: 'CalemEditCaption'}
},
toolbar: {
CalemToolBarInfo: {
layout: ['CalemTbNew', 'CalemTbOpen', 'CalemTbDelete', 'sep', 'CalemTbDataRefresh', 'sep2', 'CalemTbCustomize'],
list: [
//New
{ CalemButtonInfo: {id: 'CalemTbNew'}},
{ CalemButtonInfo: {
id: 'CalemTbOpen',
customInfo: {
CalemMenuCustomInfo: {
enabled: false,
events: [
{CalemEventInfo: {id: CalemEvent.SINGLE_SELECTION, func: '_enableIt'}},
{CalemEventInfo: {id: CalemEvent.MULTI_SELECTION, func: '_disableIt'}},
{CalemEventInfo: {id: CalemEvent.NO_SELECTION, func: '_disableIt'}},
{CalemEventInfo: {id: CalemEvent.DBL_CLICK_SELECTION, func: '_clickIt'}}
]
}
}
}
},
{ CalemButtonInfo: {
id: 'CalemTbDelete',
customInfo: {
CalemMenuCustomInfo: {
enabled: false,
events: [
{CalemEventInfo: {id: CalemEvent.SINGLE_SELECTION, func: '_enableIt'}},
{CalemEventInfo: {id: CalemEvent.MULTI_SELECTION, func: '_enableIt'}},
{CalemEventInfo: {id: CalemEvent.NO_SELECTION, func: '_disableIt'}}
]
}
}
}
},
{CalemSeparator: {id: 'sep', className: 'CalemToolBarSeparator'}},
{CalemButtonInfo: { id: 'CalemTbDataRefresh'}},
{CalemSeparator: {id: 'sep2', className: 'CalemToolBarSeparator'}},
{ CalemButtonInfo: { id: 'CalemTbSearch' }},
{ CalemButtonInfo: {
id: 'CalemTbSearchClear',
customInfo: {
CalemMenuCustomInfo: {
enabled: false,
events: [
{CalemEventInfo: {id: CalemEvent.SEARCH_APPLIED, func: '_enableIt'}},
{CalemEventInfo: {id: CalemEvent.SEARCH_REMOVED, func: '_disableIt'}}
]
}
}
}
},
{CalemSeparator: {id: 'sep3', className: 'CalemToolBarSeparator'}},
{CalemButtonInfo: { id: 'CalemTbCustomize'}}
]
} },
grid: {CalemDataGridInfo: {listInfo: {}}}
}
} //ItemMap
}
};
New / 新建页面模块
CALEM_OOB.view.js.min 中添加
- viewAcl 写入系统会自动生成的字段,默认这几个
CalemViewCustomDef['Calem模块名ViewNew_CALEM_OOB'] = {
CalemViewCustomInfo: {
id: 'Calem模块名ViewNew',
acl: {
CalemViewAclInfo: {
tbAcl: {},
viewAcl: {
flb_id: 1,
id: 1,
flb_modified_time: 1,
modified_time: 1,
flb_modified_id: 1,
modified_id: 1,
flb_created_time: 1,
created_time: 1,
flb_created_id: 1,
created_id: 1
}
}
},
layout: {
CalemViewLayoutInfo: {
tbLayout: ['CalemTbSave', 'CalemTbCancel', 'sep', 'CalemTbCustomize'],
viewLayout: [{
CalemTrInfo: {
height: -2,
cols: ['lb_caption', 'CalemColDesign', 'CalemColDesign', 'CalemColDesign']
}
}, {
CalemTrInfo: {
height: -2,
cols: ['toolbar']
}
}, {
CalemTrInfo: {
height: -2,
cols: ['err']
}
},
...以下开始写表字段(删除)
{
CalemTrInfo: {
height: -2,
cols: ['flb_字段名', '字段名']
}
}
]
}
}
}
};
Calem.js.gz 中添加
/**
* FormNew
*/
function Calem模块名FormNew(parent, formId, data) {
if (arguments.length==0) return;
CalemFormNew.call(this, parent, formId, data);
}
Calem模块名FormNew.prototype = new CalemFormNew;
Calem模块名FormNew.prototype.constructor = Calem模块名FormNew;
Calem模块名FormNew.prototype.toString = function() { return "Calem模块名FormNew";}
新模块New的Form层
CalemItemDef['Calem模块名FormNew']={
CalemFormInfo: {
id: 'Calem模块名FormNew',
title: '列表名',
icon: 'CalemSched',
controller: 'Calem模块名FormNew',
model: '列表名',
view: {CalemViewRefInfo: {id: 'Calem模块名ViewNew'}},
replaceType: CalemItemDef.REPLACE_BY_ID
}
}
新模块New的View层
CalemViewDef['Calem模块名ViewNew']={
CalemViewInfo: {
id: 'Calem模块名ViewNew',
type: 'CalemView',
layout: {
CalemLayoutInfo: {
tableLayout: {CalemTableLayoutInfo: {}},
colLayout: {CalemColLayoutInfo: {colCount: 4}}, //Potentially col width definition.
rows: [
{CalemTrInfo: {cols: ['lb_caption']}},
{CalemTrInfo: {cols: ['toolbar']}},
{CalemTrInfo: {cols: ['err']}}
]
}
},
itemMap : {
CalemItemMap: {
toolbar: {
CalemToolBarInfo: {
type: 'CalemToolBar',
layout: ['CalemTbSave', 'CalemTbCancel', 'sep', 'CalemTbCustomize'],
list: [
{ CalemButtonInfo: {
id: 'CalemTbSave',
customInfo: {
CalemMenuCustomInfo: {
enabled: false,
events: [
{CalemEventInfo: {id: CalemEvent.DATA_VALID, func: '_enableIt'}},
{CalemEventInfo: {id: CalemEvent.DATA_INVALID, func: '_disableIt'}}
]
}
}
}
},
{ CalemButtonInfo: {id: 'CalemTbCancel'}},
//Add a separator
{CalemSeparator: {id: 'sep', className: 'CalemToolBarSeparator'}},
{ CalemButtonInfo: {id: 'CalemTbCustomize'}}
]
} },
'lb_caption': {
CalemLabelInfo: {id: '列表名', className: 'CalemEditCaption'}
},
'err': {
CalemFormErrorInfo: {id: 'form_error'}
}
}
} //ItemMap
}
};
Read/详情页面模块
CALEM_OOB.js.gz 添加Read模块
CalemViewCustomDef['Calem模块名ViewRead_CALEM_OOB'] = {
CalemViewCustomInfo: {
id: 'Calem模块名ViewRead',
acl: {
CalemViewAclInfo: {
tbAcl: {},
viewAcl: {
flb_id: 1,
id: 1
}
}
},
layout: {
CalemViewLayoutInfo: {
tbLayout: ['CalemTbEdit', 'CalemTbDelete', 'CalemTbPrev', 'CalemTbNext', 'sep', 'CalemTbCancel', 'sep2', 'CalemTbCustomize'],
viewLayout: [{
CalemTrInfo: {
height: -2,
cols: ['lb_caption', 'CalemColDesign', 'CalemColDesign', 'CalemColDesign']
}
}, {
CalemTrInfo: {
height: -2,
cols: ['toolbar']
}
}, {
CalemTrInfo: {
height: -2,
cols: ['err']
}
}, {
//编辑表字段
CalemTrInfo: {
height: -2,
cols: ['flb_note', 'note', ]
}
}]
}
}
}
};
Calem.js.gz 添加 Read模块
/**
* Calem模块名FormRead
*/
function Calem模块名FormRead(parent, formId, data) {
if (arguments.length==0) return;
CalemFormRead.call(this, parent, formId, data);
}
Calem模块名FormRead.prototype = new CalemFormRead;
Calem模块名FormRead.prototype.constructor = Calem模块名FormRead;
Calem模块名FormRead.prototype.toString = function() { return "Calem模块名FormRead";}
/**
* Business APIs
*/
Calem模块名FormRead.prototype._getFormNewId =
function() {
return 'Calem模块名FormNew';
}
Calem模块名FormRead.prototype._getFormEditId =
function() {
return 'Calem模块名FormEdit';
}
新模块Read的form层
CalemItemDef['Calem模块名FormRead']={
CalemFormInfo: {
id: 'Calem模块名FormRead',
title: '列表名',
icon: 'CalemSched',
controller: 'Calem模块名FormRead',
model: '列表名',
view: {CalemViewRefInfo: {id: 'Calem模块名ViewRead'}},
replaceType: CalemItemDef.REPLACE_BY_ID
}
}
新模块Read的View层
CalemViewDef['Calem模块名ViewRead']={
CalemViewInfo: {
id: 'Calem模块名ViewRead',
type: 'CalemView',
layout: {
CalemLayoutInfo: {
tableLayout: {CalemTableLayoutInfo: {}},
colLayout: {CalemColLayoutInfo: {colCount: 4}}, //Potentially col width definition.
rows: [
{CalemTrInfo: {cols: ['lb_caption']}},
{CalemTrInfo: {cols: ['toolbar']}},
{CalemTrInfo: {cols: ['err']}}
]
}
},
itemMap : {
CalemItemMap: {
toolbar: {
CalemToolBarInfo: {
type: 'CalemToolBar',
layout: ['CalemTbNew', 'CalemTbEdit', 'CalemTbDelete', 'CalemTbPrev', 'CalemTbNext', 'sep', 'CalemTbCancel', 'sep2', 'CalemTbCustomize'],
list: [
{ CalemButtonInfo: { id: 'CalemTbNew' } },
{CalemButtonInfo: { id: 'CalemTbDataRefresh'}},
{ CalemButtonInfo: {
id: 'CalemTbEdit',
customInfo: {
CalemMenuCustomInfo: {
events: [
{CalemEventInfo: {id: CalemEvent.RECORD_POS_VALID, func: '_enableIt'}},
{CalemEventInfo: {id: CalemEvent.RECORD_POS_INVALID, func: '_disableIt'}}
]
}
}
}
},
{ CalemButtonInfo: {
id: 'CalemTbDelete',
customInfo: {
CalemMenuCustomInfo: {
enabled: false,
events: [
{CalemEventInfo: {id: CalemEvent.RECORD_POS_VALID, func: '_enableIt'}},
{CalemEventInfo: {id: CalemEvent.RECORD_POS_INVALID, func: '_disableIt'}}
]
}
}
}
},
{CalemSeparator: {id: 'sep', className: 'CalemToolBarSeparator'}},
{ CalemButtonInfo: {
id: 'CalemTbPrev',
customInfo: {
CalemMenuCustomInfo: {
events: [
{CalemEventInfo: {id: CalemEvent.RECORD_POS_LAST, func: '_enableIt'}},
{CalemEventInfo: {id: CalemEvent.RECORD_POS_MID, func: '_enableIt'}},
{CalemEventInfo: {id: CalemEvent.RECORD_POS_FIRST_LAST, func: '_disableIt'}},
{CalemEventInfo: {id: CalemEvent.RECORD_POS_FIRST, func: '_disableIt'}},
{CalemEventInfo: {id: CalemEvent.RECORD_POS_INVALID, func: '_disableIt'}}
]
}
}
}
},
{ CalemButtonInfo: {
id: 'CalemTbNext',
customInfo: {
CalemMenuCustomInfo: {
events: [
{CalemEventInfo: {id: CalemEvent.RECORD_POS_FIRST, func: '_enableIt'}},
{CalemEventInfo: {id: CalemEvent.RECORD_POS_MID, func: '_enableIt'}},
{CalemEventInfo: {id: CalemEvent.RECORD_POS_LAST, func: '_disableIt'}},
{CalemEventInfo: {id: CalemEvent.RECORD_POS_FIRST_LAST, func: '_disableIt'}},
{CalemEventInfo: {id: CalemEvent.RECORD_POS_INVALID, func: '_disableIt'}}
]
}
}
}
},
{CalemSeparator: {id: 'sep2', className: 'CalemToolBarSeparator'}},
{ CalemButtonInfo: {
id: 'CalemTbCancel'
}
},
{ CalemButtonInfo: {id: 'CalemTbCustomize'}}
]
} },
'lb_caption': {
CalemLabelInfo: {id: '列表名', className: 'CalemEditCaption'}
},
'err': {
CalemFormErrorInfo: {id: 'form_error'}
}
}
} //ItemMap
}
};
Edit / 编辑页面模块
CALEM_OOB 中添加 Edit模块
CalemViewCustomDef['Cale模块名ViewEdit_CALEM_OOB'] = {
CalemViewCustomInfo: {
id: 'Calem模块名ViewEdit',
acl: {
CalemViewAclInfo: {
tbAcl: {},
viewAcl: {
flb_id: 1,
id: 1,
flb_modified_time: 1,
modified_time: 1,
flb_modified_id: 1,
modified_id: 1,
flb_created_time: 1,
created_time: 1,
flb_created_id: 1,
created_id: 1
}
}
},
layout: {
CalemViewLayoutInfo: {
tbLayout: ['CalemTbSave', 'CalemTbCancel', 'sep', 'CalemTbCustomize'],
viewLayout: [{
CalemTrInfo: {
height: -2,
cols: ['lb_caption', 'CalemColDesign', 'CalemColDesign', 'CalemColDesign']
}
}, {
CalemTrInfo: {
height: -2,
cols: ['toolbar']
}
}, {
CalemTrInfo: {
height: -2,
cols: ['err']
}
}, {
CalemTrInfo: {
height: -2,
cols: ['flb_note', 'note']
}
}]
}
}
}
};
Calem中添加Edit模块
/**
* Calem模块名FormEdit
*/
function Calem模块名FormEdit(parent, formId, data) {
if (arguments.length==0) return;
CalemFormEdit.call(this, parent, formId, data);
}
Calem模块名FormEdit.prototype = new CalemFormEdit;
Calem模块名FormEdit.prototype.constructor = Calem模块名FormEdit;
Calem模块名FormEdit.prototype.toString = function() { return "Calem模块名FormEdit";}
Edit的Form层
CalemItemDef['Calem模块名FormEdit']={
CalemFormInfo: {
id: 'Calem模块名FormEdit',
title: 'sched_user',
icon: 'CalemSched',
controller: 'Calem模块名FormEdit',
model: 'sched_user',
view: {CalemViewRefInfo: {id: 'Calem模块名ViewEdit'}},
replaceType: CalemItemDef.REPLACE_BY_ID
}
}
Edit的view层
CalemViewDef['Calem模块名ViewEdit']={
CalemViewInfo: {
id: 'Calem模块名ViewEdit',
type: 'CalemView',
layout: {
CalemLayoutInfo: {
tableLayout: {CalemTableLayoutInfo: {}},
colLayout: {CalemColLayoutInfo: {colCount: 4}}, //Potentially col width definition.
rows: [
{CalemTrInfo: {cols: ['lb_caption']}},
{CalemTrInfo: {cols: ['toolbar']}},
{CalemTrInfo: {cols: ['err']}}
]
}
},
itemMap : {
CalemItemMap: {
toolbar: {
CalemToolBarInfo: {
type: 'CalemToolBar',
layout: ['CalemTbSave', 'CalemTbCancel', 'sep', 'CalemTbCustomize'],
list: [
{ CalemButtonInfo: {
id: 'CalemTbSave',
customInfo: {
CalemMenuCustomInfo: {
enabled: false,
events: [
{CalemEventInfo: {id: CalemEvent.EDIT_CHANGED, func: '_enableIt'}},
{CalemEventInfo: {id: CalemEvent.EDIT_NO_CHANGE, func: '_disableIt'}}
]
}
}
}
},
{ CalemButtonInfo: { id: 'CalemTbCancel'}},
{CalemSeparator: {id: 'sep', className: 'CalemToolBarSeparator'}},
{ CalemButtonInfo: { id: 'CalemTbCustomize'}}
]
} },
'lb_caption': {
CalemLabelInfo: {id: '列表名', className: 'CalemEditCaption'}
},
'err': {
CalemFormErrorInfo: {id: 'form_error'}
}
}
} //ItemMap
}
};
Search / 搜索页面模块
CALEM_OOB.view.js 添加 Search模块
CalemViewCustomDef['Calem模块名ViewSearch_CALEM_OOB'] = {
CalemViewCustomInfo: {
id: 'Calem模块名ViewSearch',
acl: {
CalemViewAclInfo: {
tbAcl: {},
viewAcl: {
flb_id: 1,
id: 1
}
}
},
layout: {
CalemViewLayoutInfo: {
tbLayout: ['CalemTbApplySave', 'sep2', 'CalemTbApply', 'CalemTbSave', 'CalemTbCancel', 'sep', 'CalemTbCustomize'],
viewLayout: [{
CalemTrInfo: {
height: -2,
cols: ['lb_caption', 'CalemColDesign', 'CalemColDesign', 'CalemColDesign']
}
}, {
CalemTrInfo: {
height: -2,
cols: ['toolbar']
}
}, {
CalemTrInfo: {
height: -2,
cols: ['err']
}
}, {
CalemTrInfo: {
height: -2,
cols: ['lb_save_search', '_save_search']
}
}, {
CalemTrInfo: {
height: -2,
cols: ['flb_note', 'note']
}
}]
}
}
}
};
Calem中添加 Search模块 - 直接Form层
CalemItemDef['Calem模块名FormSearch']={
CalemFormInfo: {
id: 'Calem模块名FormSearch',
title: 'sched_user',
icon: 'CalemSched',
controller: 'CalemFormSearchEdit',
model: 'sched_user',
view: {CalemViewRefInfo: {id: 'Calem模块名ViewSearch'}},
replaceType: CalemItemDef.REPLACE_BY_ID
}
}
Search的View层
CalemViewDef['Calem模块名ViewSearch']={
CalemViewInfo: {
id: 'Calem模块名ViewSearch',
type: 'CalemView',
layout: {
CalemLayoutInfo: {
tableLayout: {CalemTableLayoutInfo: {}},
colLayout: {CalemColLayoutInfo: {colCount: 4}}, //Potentially col width definition.
rows: [
{CalemTrInfo: {cols: ['lb_caption']}},
{CalemTrInfo: {cols: ['toolbar']}},
{CalemTrInfo: {cols: ['err']}},
{CalemTrInfo: {cols: ['lb_save_search', '_save_search']}},
]
}
},
itemMap : {
CalemItemMap: {
toolbar: {
CalemToolBarInfo: {
type: 'CalemToolBar',
layout: ['CalemTbApplySave', 'sep2', 'CalemTbApply', 'CalemTbSave', 'CalemTbCancel', 'sep', 'CalemTbCustomize'],
list: [
{ CalemButtonInfo: {
id: 'CalemTbApplySave',
customInfo: {
CalemMenuCustomInfo: {
enabled: false,
events: [
{CalemEventInfo: {id: CalemEvent.SEARCH_VALID_ALL, func: '_enableIt'}},
{CalemEventInfo: {id: CalemEvent.SEARCH_NOT_VALID, func: '_disableIt'}},
{CalemEventInfo: {id: CalemEvent.SEARCH_NAME_NOT_VALID, func: '_disableIt'}}
]
}
}
}
},
{ CalemButtonInfo: {
id: 'CalemTbApply',
customInfo: {
CalemMenuCustomInfo: {
enabled: false,
events: [
{CalemEventInfo: {id: CalemEvent.SEARCH_VALID, func: '_enableIt'}},
{CalemEventInfo: {id: CalemEvent.SEARCH_NOT_VALID, func: '_disableIt'}}
]
}
}
}
},
{ CalemButtonInfo: {
id: 'CalemTbSave',
customInfo: {
CalemMenuCustomInfo: {
enabled: false,
events: [
{CalemEventInfo: {id: CalemEvent.SEARCH_VALID_ALL, func: '_enableIt'}},
{CalemEventInfo: {id: CalemEvent.SEARCH_NOT_VALID, func: '_disableIt'}},
{CalemEventInfo: {id: CalemEvent.SEARCH_NAME_NOT_VALID, func: '_disableIt'}}
]
}
}
}
},
{CalemSeparator: {id: 'sep', className: 'CalemToolBarSeparator'}},
{ CalemButtonInfo: { id: 'CalemTbCancel'}},
{CalemSeparator: {id: 'sep2', className: 'CalemToolBarSeparator'}},
{ CalemButtonInfo: { id: 'CalemTbCustomize'}}
]
} },
'lb_caption': {
CalemLabelInfo: {id: '列表名', className: 'CalemEditCaption'}
},
'err': {
CalemFormErrorInfo: {id: 'form_error'}
},
'lb_save_search': {
CalemLabelInfo: {id: 'save_search', className: 'CalemEditSection'}
},
'_save_search': {
CalemSearchSaveInfo: {size: 30}
}
}
} //ItemMap
}
};
lookup / 其他列表关联选择页面
CALEM_OOB中添加 lookup模块
CalemViewCustomDef['Calem模块名ViewLookup_CALEM_OOB'] = {
CalemViewCustomInfo: {
id: 'Calem模块名ViewLookup',
acl: {
CalemViewAclInfo: {
tbAcl: {
CalemTbNew: 1,
CalemTbOpen: 1,
CalemTbPrint: 1
},
viewAcl: {}
}
},
layout: {
CalemViewLayoutInfo: {
tbLayout: ['CalemTbSelect', 'CalemTbCancel', 'CalemTbDataRefresh', 'sep', 'CalemTbSearch', 'CalemTbSearchClear', 'sep3', 'CalemTbCustomize'],
viewLayout: [{
CalemTrInfo: {
height: -2,
cols: ['lb_caption']
}
}, {
CalemTrInfo: {
height: -2,
cols: ['toolbar']
}
}, {
CalemTrInfo: {
height: -2,
cols: ['grid']
}
}],
gridLayout: {
CalemListInfo: {
noMaximize: true,
colList: [{
CalemCol: {
id: 'note',
width: 453
}
}]
}
}
}
}
}
};
Calem中添加LookUp模块
//定义被关联名
CalemFormDef['列表名'] = {
lookup: 'Calem模块名FormLookup'
}
/**
* Calem模块名FormLookup
*/
function Calem模块名FormLookup(parent, formId, data) {
if (arguments.length==0) return;
CalemFormLookup.call(this, parent, formId, data);
}
Calem模块名FormLookup.prototype = new CalemFormLookup;
Calem模块名FormLookup.prototype.constructor = Calem模块名FormLookup;
Calem模块名FormLookup.prototype.toString = function() { return "Calem模块名FormLookup";}
/**
* Business APIs
*/
Calem模块名FormLookup.prototype._getFormNewId =
function() {
return 'Calem模块名FormNew';
}
/**
* Open a master detailed view with recordlist and current record position.
*/
Calem模块名FormLookup.prototype._getFormReadId =
function(evt) {
return 'Calem模块名FormRead';
}
Lookup的Form层
CalemItemDef['Calem模块名FormLookup']={
CalemFormInfo: {
id: 'Calem模块名FormLookup',
title: '列表名',
icon: 'CalemSched',
controller: 'Calem模块名FormLookup',
model: '列表名',
view: {CalemViewRefInfo: {id: 'Calem模块名ViewLookup'}},
replaceType: CalemItemDef.REPLACE_BY_ID,
searchFormId: 'Calem模块名FormSearch'
}
}
Lookup的view层
CalemViewDef['Calem模块名ViewLookup']={
CalemViewInfo: {
id: 'Calem模块名ViewLookup',
type: 'CalemView',
layout: {
CalemLayoutInfo: {
tableLayout: {CalemTableLayoutInfo: {width: '100%'}},
colLayout: {CalemColLayoutInfo: {colCount: 1}}, //Potentially col width definition.
rows: [
{CalemTrInfo: {cols: ['lb_caption']}},
{CalemTrInfo: {height: -2, cols: ['toolbar']}},
{CalemTrInfo: {height: -1, cols: ['grid']}}
]
}
},
itemMap : {
CalemItemMap: {
'lb_caption': {
CalemLabelInfo: {id: '列表名', className: 'CalemEditCaption'}
},
toolbar: {
CalemToolBarInfo: {
layout: ['CalemTbSelect', 'CalemTbCancel', 'sep', 'CalemTbSearch', 'CalemTbSearchClear', 'sep3', 'CalemTbCustomize'],
list: [
//New
{ CalemButtonInfo: {id: 'CalemTbNew'}},
{ CalemButtonInfo: {
id: 'CalemTbOpen',
customInfo: {
CalemMenuCustomInfo: {
enabled: false,
events: [
{CalemEventInfo: {id: CalemEvent.SINGLE_SELECTION, func: '_enableIt'}},
{CalemEventInfo: {id: CalemEvent.MULTI_SELECTION, func: '_disableIt'}},
{CalemEventInfo: {id: CalemEvent.NO_SELECTION, func: '_disableIt'}},
{CalemEventInfo: {id: CalemEvent.DBL_CLICK_SELECTION, func: '_clickIt'}}
]
}
}
}
},
{CalemSeparator: {id: 'sep', className: 'CalemToolBarSeparator'}},
{CalemButtonInfo: { id: 'CalemTbDataRefresh'}},
{CalemSeparator: {id: 'sep2', className: 'CalemToolBarSeparator'}},
{ CalemButtonInfo: { id: 'CalemTbSearch' }},
{ CalemButtonInfo: {
id: 'CalemTbSearchClear',
customInfo: {
CalemMenuCustomInfo: {
enabled: false,
events: [
{CalemEventInfo: {id: CalemEvent.SEARCH_APPLIED, func: '_enableIt'}},
{CalemEventInfo: {id: CalemEvent.SEARCH_REMOVED, func: '_disableIt'}}
]
}
}
}
},
{CalemSeparator: {id: 'sep3', className: 'CalemToolBarSeparator'}},
{CalemButtonInfo: { id: 'CalemTbCustomize'}},
{ CalemButtonInfo: {
id: 'CalemTbSelect',
customInfo: {
CalemMenuCustomInfo: {
enabled: false,
events: [
{CalemEventInfo: {id: CalemEvent.SINGLE_SELECTION, func: '_enableIt'}},
{CalemEventInfo: {id: CalemEvent.MULTI_SELECTION, func: '_disableIt'}},
{CalemEventInfo: {id: CalemEvent.NO_SELECTION, func: '_disableIt'}},
{CalemEventInfo: {id: CalemEvent.DBL_CLICK_SELECTION, func: '_clickIt'}}
]
}
}
}
},
{ CalemButtonInfo: { id: 'CalemTbCancel'}}
]
} },
grid: {
CalemDataGridInfo: {
listInfo: {
CalemListInfo: {
noMaximize: true,
colList: [
{CalemCol: {id: 'user_id', width: 130}}
]
}
}
}
}
}
} //ItemMap
}
};