//没找到model从哪里来的***************不知道如何调用form /** * 各种活动对应的属性面板 */ Ext.ns('App.form'); /** 面向抽象编程***/ App.form.AbstractForm = Ext.extend(Object, { eventNames: [ ['start', '开始'], ['end', '结束'] ], classNames:[['com.uas.erp.service.scm.impl.ScmBeforeEventListener','SCM-Before'], ['com.uas.erp.service.scm.impl.ScmAfterEventListener','SCM-After'], ['com.uas.erp.service.pm.impl.PmBeforeEventListener','PM-Before'], ['com.uas.erp.service.pm.impl.PmAfterEventListener','PM-After'], ['com.uas.erp.service.pm.impl.HrBeforeEventListener','HR-Before'], ['com.uas.erp.service.pm.impl.HrAfterEventListener','HR-After'], ['com.uas.erp.service.pm.impl.OaBeforeEventListener','OA-Before'], ['com.uas.erp.service.pm.impl.OaAfterEventListener','OA-After'], ['com.uas.erp.service.pm.impl.CrmBeforeEventListener','CRM-Before'], ['com.uas.erp.service.pm.impl.CrmAfterEventListener','CRM-After'], ['com.uas.erp.service.pm.impl.FaBeforeEventListener','FA-Before'], ['com.uas.erp.service.pm.impl.FaAfterEventListener','FA-After'], ['com.uas.erp.service.pm.impl.DrpBeforeEventListener','DRP-Before'], ['com.uas.erp.service.pm.impl.DrpAfterEventListener','DRP-After'] ], clearItem: function(p) { if (typeof p.items != 'undefined') { var item = null; while ((item = p.items.last())) { p.remove(item, true); } } }, getParticipantData: function(model) { var data = []; var elements = model.dom.getElementsByTagName('participant'); Gef.each(elements, function(elem) { data.push({ name: elem.getAttribute('name'), type: elem.getAttribute('type') }); }); return data; }, resetParticipant: function(tabPanel, model) { var data = this.getParticipantData(model); var Record = Ext.data.Record.create(['name', 'type']); var store = new Ext.data.JsonStore({ fields: Record, data: data, listeners: { add: function(store, records, index) { var record = records[0]; var participantName = record.get('name'); var participantType = record.get('type'); if ((!participantName) || participantName == '' || (!participantType) || participantType == '') { return; } var onDom = new Gef.model.Dom('participant'); onDom.setAttribute('name', participantName); onDom.setAttribute('type', participantType); model.dom.addElement(onDom); }, remove: function(store, record, index) { var candidateElements = model.dom.getElementsByTagName('participant'); var elements = candidateElements; var element = elements[index]; model.dom.elements.remove(element); }, update: function(store, record, operation) { var participantName = record.get('name'); var participantType = record.get('type'); if ((!participantName) || participantName == '' || (!participantType) || participantType == '') { return; } var index = store.indexOf(record); var candidateElements = model.dom.getElementsByTagName('participant'); var elements = candidateElements; var element = elements[index]; if (!element) { var onDom = new Gef.model.Dom('participant'); onDom.setAttribute('name', participantName); onDom.setAttribute('type', participantType); model.dom.addElement(onDom); } else { element.setAttribute('name', participantName); element.setAttribute('type', participantType); } this.commitChanges(); } } }); var grid = new Ext.grid.EditorGridPanel({ title: '参与者配置', store: store, viewConfig: { forceFit: true }, columns: [{ header: '名称', dataIndex: 'name', editor: new Ext.grid.GridEditor(new Ext.form.TextField()) }, { header: '类型', dataIndex: 'type', editor: new Ext.grid.GridEditor(new Ext.form.TextField()) }], tbar: [{ text: '添加', iconCls: 'tb-add', handler: function() { var p = new Record({ name: '', type: '' }); this.addRecord(grid, p); }, scope: this }, { text: '删除', iconCls: 'tb-delete', handler: function() { this.removeRecord(grid); }, scope: this }] }); tabPanel.add(grid); }, getEventData: function(model) { var data = []; var elements = model.dom.getElementsByTagName('on'); Gef.each(elements, function(elem) { var timerElem = elem.getElementByTagName('timer'); if (timerElem) { return true; } data.push({ name: elem.getAttribute('event'), classname: elem.getElementAttribute('event-listener', 'class') }); }); return data; }, resetEvent: function(tabPanel, model) { var data = this.getEventData(model); var Record = Ext.data.Record.create(['name', 'classname']); var store = new Ext.data.JsonStore({ fields: Record, data: data, listeners: { add: function(store, records, index) { var record = records[0]; var eventName = record.get('name'); var eventClassName = record.get('classname'); if ((!eventName) || eventName == '' || (!eventClassName) || eventClassName == '') { return; } var onDom = new Gef.model.Dom('on'); // 这才是 创建一个 新元素的正确方法! onDom.setAttribute('event', eventName); onDom.setElementAttribute('event-listener', 'class', eventClassName); model.dom.addElement(onDom); }, remove: function(store, record, index) { var candidateElements = model.dom.getElementsByTagName('on'); var elements = []; Gef.each(candidateElements, function(elem) { var timerElem = elem.getElementByTagName('timer'); if (!timerElem) { elements.push(elem); } }); var element = elements[index]; model.dom.elements.remove(element); }, update: function(store, record, operation) { var eventName = record.get('name'); var eventClassName = record.get('classname'); if ((!eventName) || eventName == '' || (!eventClassName) || eventClassName == '') { return; } var index = store.indexOf(record); var candidateElements = model.dom.getElementsByTagName('on'); var elements = []; Gef.each(candidateElements, function(elem) { var timerElem = elem.getElementByTagName('timer'); if (!timerElem) { elements.push(elem); } }); var element = elements[index]; if (!element) { var onDom = new Gef.model.Dom('on'); onDom.setAttribute('event', eventName); onDom.setElementAttribute('event-listener', 'class', eventClassName); model.dom.addElement(onDom); } else { element.setAttribute('event', eventName); element.setElementAttribute('event-listener', 'class', eventClassName); } this.commitChanges(); } } }); var eventNameMap = {}; Gef.each(this.eventNames, function(item) { eventNameMap[item[0]] = item[1]; }); var classNameMap = {}; Gef.each(this.classNames, function(item) { classNameMap[item[0]] = item[1]; }); var grid = new Ext.grid.EditorGridPanel({ title: '事件配置', store: store, viewConfig: { forceFit: true }, columns: [{ header: '事件类型', dataIndex: 'name', editor: new Ext.grid.GridEditor(new Ext.ux.TwoCombo({ data: this.eventNames })), /* width:'15%',*/ renderer: function(v) { return eventNameMap[v]; } }, { header: '类名', dataIndex: 'classname', /* editor: new Ext.grid.GridEditor(new Ext.form.TextField())*/ editor: new Ext.grid.GridEditor(new Ext.ux.TwoCombo({ data: this.classNames })), renderer: function(v) { return classNameMap[v]; } }], tbar: [{ text: '添加', iconCls: 'tb-add', handler: function() { var p = new Record({ name: this.eventNames[0][0], classname: '' }); this.addRecord(grid, p); }, scope: this }, { text: '删除', iconCls: 'tb-delete', handler: function() { this.removeRecord(grid); }, scope: this }] }); /*tabPanel.add(grid);*/ }, getSwimlaneData: function(model) { var data = []; var elements = model.dom.getElementsByTagName('swimlane'); Gef.each(elements, function(item) { data.push({ name: item.getAttribute('name'), assignee: item.getAttribute('assignee'), candidateUsers: item.getAttribute('candidate-users'), candidateGroups: item.getAttribute('candidate-groups'), description: item.getElementContent('description') }); }); return data; }, resetSwimlane: function(tabPanel, model) { var data = this.getSwimlaneData(model); var Record = Ext.data.Record.create([ 'name', 'assignee', 'candidateUsers', 'candidateGroups', 'description' ]); var store = new Ext.data.JsonStore({ fields: Record, data: data, listeners: { add: function(store, records, index) { var record = records[0]; var swimlaneDom = new Gef.model.Dom('swimlane'); swimlaneDom.setAttribute('name', record.get('name')); swimlaneDom.setAttribute('assignee', record.get('assignee')); swimlaneDom.setAttribute('candidate-users', record.get('candidateUsers')); swimlaneDom.setAttribute('candidate-groups', record.get('candidateGroups')); swimlaneDom.setElementContent('description', record.get('description')); model.dom.addElement(swimlaneDom); }, remove: function(store, record, index) { var elements = model.dom.getElementsByTagName('swimlane'); var element = elements[index]; model.dom.elements.remove(element); }, update: function(store, record, operation) { var index = store.indexOf(record); var elements = model.dom.getElementsByTagName('swimlane'); var element = elements[index]; element.setAttribute('name', record.get('name')); element.setAttribute('assignee', record.get('assignee')); element.setAttribute('candidate-users', record.get('candidateUsers')); element.setAttribute('candidate-groups', record.get('candidateGroups')); element.setElementContent('description', record.get('description')); this.commitChanges(); } } }); var grid = new Ext.grid.EditorGridPanel({ title: '泳道配置', store: store, viewConfig: { forceFit: true }, columns: [{ header: '泳道名', dataIndex: 'name', editor: new Ext.grid.GridEditor(new Ext.form.TextField()) }, { header: '分配人', dataIndex: 'assignee', editor: new Ext.grid.GridEditor(new Ext.form.TextField()) }, { header: '候选人', dataIndex: 'candidateUsers', editor: new Ext.grid.GridEditor(new Ext.form.TextField()) }, { header: '候选群组', dataIndex: 'candidateGroups', editor: new Ext.grid.GridEditor(new Ext.form.TextField()) }, { header: '备注', dataIndex: 'description', editor: new Ext.grid.GridEditor(new Ext.form.TextField()) }], tbar: [{ text: '添加', iconCls: 'tb-add', handler: function() { var p = new Record({ name: '', assignee: '', candidateUsers: '', candidateGroups: '', description: '' }); this.addRecord(grid, p); }, scope: this }, { text: '删除', iconCls: 'tb-delete', handler: function() { this.removeRecord(grid); }, scope: this }] }); tabPanel.add(grid); }, getTimerData: function(model) { var data = []; var elements = model.dom.getElementsByTagName('on'); Gef.each(elements, function(elem) { var timerElem = elem.getElementByTagName('timer'); if (!timerElem) { return true; } data.push({ name: elem.getAttribute('event'), duedate: timerElem.getAttribute('duedate'), repeat: timerElem.getAttribute('repeat'), //duedatetime: timerElem.getAttribute('duedatetime'), classname: elem.getElementAttribute('event-listener', 'class') }); }); return data; }, resetTimer: function(tabPanel, model) { var data = this.getTimerData(model); var Record = Ext.data.Record.create([ 'name', 'duedate', 'repeat', //'duedatetime', 'classname' ]); var store = new Ext.data.JsonStore({ fields: Record, data: data, listeners: { add: function(store, records, index) { var record = records[0]; var onDom = new Gef.model.Dom('on'); onDom.setAttribute('event', record.get('name')); var timerDom = new Gef.model.Dom('timer'); timerDom.setAttribute('duedate', record.get('duedate')); timerDom.setAttribute('repeat', record.get('repeat')); //timerDom.setAttribute('duedatetime', record.get('duedatetime')); onDom.addElement(timerDom); onDom.setElementAttribute('event-listener', 'class', record.get('classname')); model.dom.addElement(onDom); }, remove: function(store, record, index) { var candidateElements = model.dom.getElementsByTagName('on'); var elements = []; Gef.each(candidateElements, function(elem) { var timerElem = elem.getElementByTagName('timer'); if (!timerElem) { return true; } else { elements.push(elem); } }); var element = elements[index]; model.dom.elements.remove(element); }, update: function(store, record, operation) { var index = store.indexOf(record); var candidateElements = model.dom.getElementsByTagName('on'); var elements = []; Gef.each(candidateElements, function(elem) { var timerElem = elem.getElementByTagName('timer'); if (!timerElem) { return true; } else { elements.push(elem); } }); var element = elements[index]; element.setAttribute('event', record.get('name')); var timerElem = element.getElementByTagName('timer'); timerElem.setAttribute('duedate', record.get('duedate')); timerElem.setAttribute('repeat', record.get('repeat')); //element.setAttribute('duedatetime', record.get('duedatetime')); element.setElementAttribute('event-listener', 'class', record.get('classname')); element.setElementContent('description', record.get('description')); this.commitChanges(); } } }); var grid = new Ext.grid.EditorGridPanel({ title: '定时器配置', xtype: 'editorgrid', store: store, viewConfig: { forceFit: true }, columns: [{ header: '名称', dataIndex: 'name', editor: new Ext.grid.GridEditor(new Ext.form.TextField()) }, { header: '持续日期', dataIndex: 'duedate', editor: new Ext.grid.GridEditor(new Ext.form.TextField()) }, { header: '重复次数', dataIndex: 'repeat', editor: new Ext.grid.GridEditor(new Ext.form.TextField()) }, /*{ header: '持续时间', dataIndex: 'duedatetime', editor: new Ext.grid.GridEditor(new Ext.form.TextField()) }, */{ header: '监听器类名', dataIndex: 'classname', editor: new Ext.grid.GridEditor(new Ext.form.TextField()) }], tbar: [{ text: '添加', iconCls: 'tb-add', handler: function() { var p = new Record({ name: '', duedate: '', repeat: '', //duedatetime: '', classname: '' }); this.addRecord(grid, p); }, scope: this }, { text: '删除', iconCls: 'tb-delete', handler: function() { this.removeRecord(grid); }, scope: this }] }); tabPanel.add(grid); }, getVariableData: function(model) { var data = []; var elements = model.dom.getElementsByTagName('variable'); Gef.each(elements, function(item) { data.push({ name: item.getAttribute('name'), type: item.getAttribute('type'), history: item.getAttribute('history'), init: item.getAttribute('init') }); }); return data; }, resetVariable: function(tabPanel, model) { var data = this.getVariableData(model); var Record = Ext.data.Record.create([ 'name', 'type', 'history', 'init' ]); var store = new Ext.data.JsonStore({ fields: Record, data: data, listeners: { add: function(store, records, index) { var record = records[0]; var variableDom = new Gef.model.Dom('variable'); variableDom.setAttribute('name', record.get('duedate')); variableDom.setAttribute('type', record.get('type')); variableDom.setAttribute('history', record.get('history')); variableDom.setAttribute('init', record.get('init')); model.dom.addElement(variableDom); }, remove: function(store, record, index) { var elements = model.dom.getElementsByTagName('variable'); var element = elements[index]; model.dom.elements.remove(element); }, update: function(store, record, operation) { var index = store.indexOf(record); var elements = model.dom.getElementsByTagName('variable'); var element = elements[index]; element.setAttribute('name', record.get('name')); element.setAttribute('type', record.get('type')); element.setAttribute('init', record.get('history')); element.setAttribute('history', record.get('init')); this.commitChanges(); } } }); var grid = new Ext.grid.EditorGridPanel({ title: '变量设置', store: store, viewConfig: { forceFit: true }, columns: [{ header: '变量名', dataIndex: 'name', editor: new Ext.grid.GridEditor(new Ext.form.TextField()) }, { header: '变量类型', dataIndex: 'type', editor: new Ext.grid.GridEditor(new Ext.form.TextField()) }, { header: '是否保存历史', dataIndex: 'history', editor: new Ext.grid.GridEditor(new Ext.ux.OneCombo({ data: ['true', 'false'] })) }, { header: '初始值', dataIndex: 'init', editor: new Ext.grid.GridEditor(new Ext.form.TextField()) }], tbar: [{ text: '添加', iconCls: 'tb-add', handler: function() { var p = new Record({ name: '', type: '' }); grid.stopEditing(); grid.getStore().insert(0, p); grid.startEditing(0, 0); } }, { text: '删除', iconCls: 'tb-delete', handler: function() { Ext.Msg.confirm('信息', '确定删除?', function(btn){ if (btn == 'yes') { var sm = grid.getSelectionModel(); var cell = sm.getSelectedCell(); var record = grid.getStore().getAt(cell[0]); grid.getStore().remove(record); } }); } }] }); tabPanel.add(grid); }, addRecord: function(grid, record) { grid.stopEditing(); var index = grid.getStore().getCount(); grid.getStore().insert(index, record); grid.startEditing(index, 0); }, removeRecord: function(grid) { Ext.Msg.confirm('信息', '确定删除?', function(btn) { if (btn != 'yes') { return; } var sm = grid.getSelectionModel(); var cell = sm.getSelectedCell(); var record = grid.getStore().getAt(cell[0]); grid.getStore().remove(record); }); } }); Ext.ns('App.form'); App.form.AutoForm = Ext.extend(App.form.AbstractForm, { decorate: function(tabPanel, model) { this.clearItem(tabPanel); this.resetBasic(tabPanel, model); this.resetEvent(tabPanel, model); }, resetBasic: function(tabPanel, model) { var p = new Ext.form.FormPanel({ title: '基本配置', labelWidth: 70, labelAlign: 'right', border: false, defaultType: 'textfield', defaults: { anchor: '90%' }, bodyStyle: { padding: '6px 0 0' }, items: [{ name: 'name', fieldLabel: '名称', value: model.text ? model.text : '', listeners: { 'blur': function(field) { var newValue = field.getValue(); // FIXME: use command model.text = newValue; model.editPart.figure.updateAndShowText(newValue); } } }, { name: 'classname', fieldLabel: '类名', value: model.dom.getAttribute('class'), listeners: { 'blur': function(field) { var newValue = field.getValue(); model.dom.setAttribute('class', newValue); } } }, { name: 'method', fieldLabel: '方法', value: model.dom.getAttribute('method'), listeners: { 'blur': function(field) { var newValue = field.getValue(); model.dom.setAttribute('method', newValue); } } }, { name: 'description', fieldLabel: '备注', xtype: 'textarea', value: model.dom.getElementContent('description'), listeners: { 'blur': function(field) { var newValue = field.getValue(); model.dom.setElementContent('description', newValue); } } }] }); tabPanel.add(p); tabPanel.activate(p); } }); Ext.ns('App.form'); App.form.CancelForm = Ext.extend(App.form.AbstractForm, { decorate: function(tabPanel, model) { this.clearItem(tabPanel); this.resetBasic(tabPanel, model); this.resetEvent(tabPanel, model); }, resetBasic: function(tabPanel, model) { var p = new Ext.form.FormPanel({ title: '基本配置', labelWidth: 70, labelAlign: 'right', border: false, defaultType: 'textfield', defaults: { anchor: '90%' }, bodyStyle: { padding: '6px 0 0' }, items: [{ name: 'name', fieldLabel: '名称', value: model.text ? model.text : '', listeners: { 'blur': function(field) { var newValue = field.getValue(); model.text = newValue; } } }, { name: 'ends', fieldLabel: '结束方式', xtype: 'onecombo', data: ['processinstance', 'execution'], value: model.dom.getAttribute('ends'), listeners: { 'blur': function(field) { var newValue = field.getValue(); model.dom.setAttribute('ends', newValue); } } }, { name: 'description', fieldLabel: '备注', xtype: 'textarea', value: model.dom.getElementContent('description'), listeners: { 'blur': function(field) { var newValue = field.getValue(); model.dom.setElementContent('description', newValue); } } }] }); tabPanel.add(p); tabPanel.activate(p); } }); Ext.ns('App.form'); App.form.CounterSignForm = Ext.extend(App.form.AbstractForm, { decorate: function(tabPanel, model) { this.clearItem(tabPanel); this.resetBasic(tabPanel, model); this.resetParticipant(tabPanel, model); this.resetEvent(tabPanel, model); }, resetBasic: function(tabPanel, model) { var p = new Ext.form.FormPanel({ title: '基本配置', labelWidth: 70, labelAlign: 'right', border: false, defaultType: 'textfield', defaults: { anchor: '90%' }, bodyStyle: { padding: '6px 0 0' }, items: [{ name: 'name', fieldLabel: '名称', value: model.text ? model.text : '', listeners: { 'blur': function(field) { var newValue = field.getValue(); // FIXME: use command model.text = newValue; model.editPart.figure.updateAndShowText(newValue); //model.dom.setProperty('name', newValue, 'string'); } } }, { name: 'counterSignType', fieldLabel: '会签方式', xtype: 'twocombo', data: [['all', '一票否决'], ['rate', '百分比']], //value: model.dom.getProperty('form', 'string'), value: model.dom.getAttribute('counter-sign-type'), listeners: { 'select': function(field) { var newValue = field.getValue(); //model.dom.setProperty('form', newValue, 'string'); model.dom.setAttribute('counter-sign-type', newValue); if (newValue == 'rate') { var field = p.getForm().findField('counterSignValue'); field.el.dom.parentNode.parentNode.style.display = ''; } else { var field = p.getForm().findField('counterSignValue'); field.setValue(''); field.el.dom.parentNode.parentNode.style.display = 'none'; model.dom.removeProperty('counter-sign-value'); } } } }, { name: 'counterSignValue', fieldLabel: '会签通过百分比', //value: model.dom.getProperty('form', 'string'), value: model.dom.getAttribute('counter-sign-value'), xtype: 'numberfield', listeners: { 'blur': function(field) { var newValue = field.getValue(); //model.dom.setProperty('form', newValue, 'string'); model.dom.setAttribute('counter-sign-value', newValue); } } }, { name: 'form', fieldLabel: '表单', //value: model.dom.getProperty('form', 'string'), value: model.dom.getAttribute('form'), listeners: { 'blur': function(field) { var newValue = field.getValue(); //model.dom.setProperty('form', newValue, 'string'); model.dom.setAttribute('form', newValue); } } }, { name: 'description', fieldLabel: '备注', xtype: 'textarea', value: model.dom.getElementContent('description'), listeners: { 'blur': function(field) { var newValue = field.getValue(); model.dom.setElementContent('description', newValue); } } }] }); if (model.dom.getAttribute('counter-sign-type') != 'rate') { var fn = function() { var field = p.getForm().findField('counterSignValue'); field.el.dom.parentNode.parentNode.style.display = 'none'; p.un('afterlayout', fn); }; p.on('afterlayout', fn); } tabPanel.add(p); tabPanel.activate(p); } }); Ext.ns('App.form'); App.form.CustomForm = Ext.extend(App.form.AbstractForm, { decorate: function(tabPanel, model) { this.clearItem(tabPanel); this.resetBasic(tabPanel, model); this.resetEvent(tabPanel, model); }, resetBasic: function(tabPanel, model) { var p = new Ext.form.FormPanel({ title: '基本配置', labelWidth: 70, labelAlign: 'right', border: false, defaultType: 'textfield', defaults: { anchor: '90%' }, bodyStyle: { padding: '6px 0 0' }, items: [{ name: 'name', fieldLabel: '名称', value: model.text ? model.text : '', listeners: { 'blur': function(field) { var newValue = field.getValue(); // FIXME: use command model.text = newValue; model.editPart.figure.updateAndShowText(newValue); } } }, { name: 'classname', fieldLabel: '类名', value: model.dom.getAttribute('class'), listeners: { 'blur': function(field) { var newValue = field.getValue(); model.dom.setAttribute('class', newValue); } } }, { name: 'description', fieldLabel: '备注', xtype: 'textarea', value: model.dom.getElementContent('description'), listeners: { 'blur': function(field) { var newValue = field.getValue(); model.dom.setElementContent('description', newValue); } } }] }); tabPanel.add(p); tabPanel.activate(p); } }); Ext.ns('App.form'); App.form.DecisionForm = Ext.extend(App.form.AbstractForm, { decorate: function(tabPanel, model) { this.clearItem(tabPanel); this.resetBasic(tabPanel, model); this.resetEvent(tabPanel, model); }, resetBasic: function(tabPanel, model) { var p = new Ext.form.FormPanel({ title: '基本配置', labelWidth: 70, labelAlign: 'right', border: false, defaultType: 'textfield', defaults: { anchor: '90%' }, bodyStyle: { padding: '6px 0 0' }, items: [{ name: 'name', fieldLabel: '名称', value: model.text ? model.text : '', listeners: { 'blur': function(field) { var newValue = field.getValue(); model.text = newValue; } } },{ name: 'flowtype', fieldLabel: '类型', value: 'judge', readOnly:true }] }); tabPanel.add(p); tabPanel.activate(p); } }); Ext.ns('App.form'); App.form.EndForm = Ext.extend(App.form.AbstractForm, { decorate: function(tabPanel, model) { this.clearItem(tabPanel); this.resetBasic(tabPanel, model); this.resetEvent(tabPanel, model); }, /** * 结束*/ resetBasic: function(tabPanel, model) { var p = new Ext.form.FormPanel({ title: '基本配置', labelWidth: 70, labelAlign: 'right', border: false, defaultType: 'textfield', defaults: { anchor: '90%' }, bodyStyle: { padding: '6px 0 0' }, items: [{ name: 'name', fieldLabel: '名称', value: 'END', readOnly:true, listeners: { beforerender:function(){ model.text = 'END'; } } }] }); tabPanel.add(p); tabPanel.activate(p); } }); Ext.ns('App.form'); App.form.ErrorForm = Ext.extend(App.form.AbstractForm, { decorate: function(tabPanel, model) { this.clearItem(tabPanel); this.resetBasic(tabPanel, model); this.resetEvent(tabPanel, model); }, resetBasic: function(tabPanel, model) { var p = new Ext.form.FormPanel({ title: '基本配置', labelWidth: 70, labelAlign: 'right', border: false, defaultType: 'textfield', defaults: { anchor: '90%' }, bodyStyle: { padding: '6px 0 0' }, items: [{ name: 'name', fieldLabel: '名称', value: model.text ? model.text : '', listeners: { 'blur': function(field) { var newValue = field.getValue(); model.text = newValue; } } }, { name: 'ends', fieldLabel: '结束方式', xtype: 'onecombo', data: ['processinstance', 'execution'], value: model.dom.getAttribute('ends'), listeners: { 'blur': function(field) { var newValue = field.getValue(); model.dom.setAttribute('ends', newValue); } } }, { name: 'description', fieldLabel: '备注', xtype: 'textarea', value: model.dom.getElementContent('description'), listeners: { 'blur': function(field) { var newValue = field.getValue(); model.dom.setElementContent('description', newValue); } } }] }); tabPanel.add(p); tabPanel.activate(p); } }); Ext.ns('App.form'); App.form.ForeachForm = Ext.extend(App.form.AbstractForm, { decorate: function(tabPanel, model) { this.clearItem(tabPanel); this.resetBasic(tabPanel, model); this.resetEvent(tabPanel, model); }, resetBasic: function(tabPanel, model) { var p = new Ext.form.FormPanel({ title: '基本配置', labelWidth: 70, labelAlign: 'right', border: false, defaultType: 'textfield', defaults: { anchor: '90%' }, bodyStyle: { padding: '6px 0 0' }, items: [{ name: 'name', fieldLabel: '名称', value: model.text ? model.text : '', listeners: { 'blur': function(field) { var newValue = field.getValue(); model.text = newValue; } } }, { name: 'var', fieldLabel: '变量', value: model.dom.getAttribute('var'), listeners: { 'blur': function(field) { var newValue = field.getValue(); model.dom.setAttribute('var', newValue); } } }, { name: 'in', fieldLabel: '集合', value: model.dom.getAttribute('in'), listeners: { 'blur': function(field) { var newValue = field.getValue(); model.dom.setAttribute('in', newValue); } } }, { name: 'description', fieldLabel: '备注', xtype: 'textarea', value: model.dom.getElementContent('description'), listeners: { 'blur': function(field) { var newValue = field.getValue(); model.dom.setElementContent('description', newValue); } } }] }); tabPanel.add(p); tabPanel.activate(p); } }); Ext.ns('App.form'); App.form.ForkForm = Ext.extend(App.form.AbstractForm, { decorate: function(tabPanel, model) { this.clearItem(tabPanel); this.resetBasic(tabPanel, model); this.resetEvent(tabPanel, model); }, resetBasic: function(tabPanel, model) { var p = new Ext.form.FormPanel({ title: '基本配置', labelWidth: 70, labelAlign: 'right', border: false, defaultType: 'textfield', defaults: { anchor: '90%' }, bodyStyle: { padding: '6px 0 0' }, items: [{ name: 'name', fieldLabel: '名称', value: model.text ? model.text : '', listeners: { 'blur': function(field) { var newValue = field.getValue(); model.text = newValue; } } }, { name: 'description', fieldLabel: '备注', xtype: 'textarea', value: model.dom.getElementContent('description'), /**获取dom的值**/ listeners: { 'blur': function(field) { var newValue = field.getValue(); model.dom.setElementContent('description', newValue); } } }] }); tabPanel.add(p); tabPanel.activate(p); } }); Ext.ns('App.form'); App.form.HqlForm = Ext.extend(App.form.AbstractForm, { decorate: function(tabPanel, model) { this.clearItem(tabPanel); this.resetBasic(tabPanel, model); this.resetEvent(tabPanel, model); }, resetBasic: function(tabPanel, model) { var p = new Ext.form.FormPanel({ title: '基本配置', labelWidth: 70, labelAlign: 'right', border: false, defaultType: 'textfield', defaults: { anchor: '90%' }, bodyStyle: { padding: '6px 0 0' }, items: [{ name: 'name', fieldLabel: '名称', value: model.text ? model.text : '', listeners: { 'blur': function(field) { var newValue = field.getValue(); // FIXME: use command model.text = newValue; model.editPart.figure.updateAndShowText(newValue); } } }, { name: 'var', fieldLabel: '变量', value: model.dom.getAttribute('var'), listeners: { 'blur': function(field) { var newValue = field.getValue(); model.dom.setAttribute('var', newValue); } } }, { name: 'unique', fieldLabel: '是否唯一', value: model.dom.getAttribute('unique'), listeners: { 'blur': function(field) { var newValue = field.getValue(); model.dom.setAttribute('unique', newValue); } } }, { name: 'query', fieldLabel: '查询语句', value: model.dom.setElementContent('query'), listeners: { 'blur': function(field) { var newValue = field.getValue(); model.dom.setElementContent('query', newValue); } } }, { name: 'description', fieldLabel: '备注', xtype: 'textarea', value: model.dom.getElementContent('description'), listeners: { 'blur': function(field) { var newValue = field.getValue(); model.dom.setElementContent('description', newValue); } } }] }); tabPanel.add(p); tabPanel.activate(p); } }); /**Ext.ns('App.form'); App.form.HumanForm = Ext.extend(App.form.AbstractForm, { assigneeXtype: 'orgfield', decorate: function(tabPanel, model) { this.clearItem(tabPanel); this.resetBasic(tabPanel, model); this.resetParticipant(tabPanel, model); this.resetEvent(tabPanel, model); }, resetBasic: function(tabPanel, model) { var p = new Ext.form.FormPanel({ title: '基本配置', labelWidth: 70, labelAlign: 'right', border: false, defaultType: 'textfield', defaults: { anchor: '90%' }, bodyStyle: { padding: '6px 0 0' }, items: [{ name: 'name', fieldLabel: '名称', value: model.text ? model.text : '', listeners: { 'blur': function(field) { var newValue = field.getValue(); // FIXME: use command model.text = newValue; model.editPart.figure.updateAndShowText(newValue); } } }, { name: 'form', fieldLabel: '表单', value: model.dom.getAttribute('form'), listeners: { 'blur': function(field) { var newValue = field.getValue(); model.dom.setAttribute('form', newValue); } } }, { name: 'assignee', xtype: this.assigneeXtype, fieldLabel: '分配人', value: model.dom.getAttribute('assignee'), listeners: { 'select': function(field) { var newValue = field.getValue(); model.dom.setAttribute('assignee', newValue); } } }, { name: 'duedate', fieldLabel: '任务时限', value: model.dom.getAttribute('duedate'), listeners: { 'blur': function(field) { var newValue = field.getValue(); model.dom.setAttribute('duedate', newValue); } } }, { name: 'timeoutType', fieldLabel: '超时处理方式', value: model.dom.getAttribute('timeout-type'), xtype: 'onecombo', data: ['message', 'continue', 'end'], listeners: { 'blur': function(field) { var newValue = field.getValue(); model.dom.setAttribute('timeout-type', newValue); } } }, { name: 'swimlaneName', fieldLabel: '泳道', value: model.dom.getProperty('swimlaneName', 'string'), listeners: { 'blur': function(field) { var newValue = field.getValue(); model.dom.setProperty('swimlaneName', newValue, 'string'); } } }, { name: 'description', fieldLabel: '备注', xtype: 'textarea', value: model.dom.getElementContent('description'), listeners: { 'blur': function(field) { var newValue = field.getValue(); model.dom.setElementContent('description', newValue); } } }] }); tabPanel.add(p); tabPanel.activate(p); } }); **/ Ext.ns('App.form'); App.form.JavaForm = Ext.extend(App.form.AbstractForm, { decorate: function(tabPanel, model) { this.clearItem(tabPanel); this.resetBasic(tabPanel, model); this.resetEvent(tabPanel, model); }, resetBasic: function(tabPanel, model) { var p = new Ext.form.FormPanel({ title: '基本配置', labelWidth: 70, labelAlign: 'right', border: false, defaultType: 'textfield', defaults: { anchor: '90%' }, bodyStyle: { padding: '6px 0 0' }, items: [{ name: 'name', fieldLabel: '名称', value: model.text ? model.text : '', listeners: { 'blur': function(field) { var newValue = field.getValue(); // FIXME: use command model.text = newValue; model.editPart.figure.updateAndShowText(newValue); } } }, { name: 'classname', fieldLabel: '类名', value: model.dom.getAttribute('class'), listeners: { 'blur': function(field) { var newValue = field.getValue(); model.dom.setAttribute('class', newValue); } } }, { name: 'method', fieldLabel: '方法', value: model.dom.getAttribute('method'), listeners: { 'blur': function(field) { var newValue = field.getValue(); model.dom.setAttribute('method', newValue); } } }, { name: 'description', fieldLabel: '备注', xtype: 'textarea', value: model.dom.getElementContent('description'), listeners: { 'blur': function(field) { var newValue = field.getValue(); model.dom.setElementContent('description', newValue); } } }] }); tabPanel.add(p); tabPanel.activate(p); } }); Ext.ns('App.form'); App.form.JmsForm = Ext.extend(App.form.AbstractForm, { decorate: function(tabPanel, model) { this.clearItem(tabPanel); this.resetBasic(tabPanel, model); this.resetEvent(tabPanel, model); }, resetBasic: function(tabPanel, model) { var p = new Ext.form.FormPanel({ title: '基本配置', labelWidth: 70, labelAlign: 'right', border: false, defaultType: 'textfield', defaults: { anchor: '90%' }, bodyStyle: { padding: '6px 0 0' }, items: [{ name: 'name', fieldLabel: '名称', value: model.text ? model.text : '', listeners: { 'blur': function(field) { var newValue = field.getValue(); // FIXME: use command model.text = newValue; model.editPart.figure.updateAndShowText(newValue); } } }, { name: 'connectionFactory', fieldLabel: '连接工厂', value: model.dom.getAttribute('connection-factory'), listeners: { 'blur': function(field) { var newValue = field.getValue(); model.dom.setAttribute('connection-factory', newValue); } } }, { name: 'destination', fieldLabel: '消息目标', value: model.dom.getAttribute('destination'), listeners: { 'blur': function(field) { var newValue = field.getValue(); model.dom.setAttribute('destination', newValue); } } }, { name: 'transacted', fieldLabel: '事务性', xtype: 'onecombo', data: ['true', 'false'], value: model.dom.getAttribute('transacted'), listeners: { 'blur': function(field) { var newValue = field.getValue(); model.dom.setAttribute('transacted', newValue); } } }, { name: 'acknowledge', fieldLabel: '提醒方式', xtype: 'onecombo', data: ['auto', 'client', 'dups-ok'], value: model.dom.getAttribute('acknowledge'), listeners: { 'blur': function(field) { var newValue = field.getValue(); model.dom.setAttribute('acknowledge', newValue); } } }, { name: 'textObject', fieldLabel: '内容', xtype: 'textarea', value: model.dom.getElementContent('text'), listeners: { 'blur': function(field) { var newValue = field.getValue(); model.dom.setElementContent('text', newValue); } } }, { name: 'description', fieldLabel: '备注', xtype: 'textarea', value: model.dom.getElementContent('description'), listeners: { 'blur': function(field) { var newValue = field.getValue(); model.dom.setElementContent('description', newValue); } } }] }); tabPanel.add(p); tabPanel.activate(p); } }); Ext.ns('App.form'); App.form.JoinForm = Ext.extend(App.form.AbstractForm, { decorate: function(tabPanel, model) { this.clearItem(tabPanel); this.resetBasic(tabPanel, model); this.resetEvent(tabPanel, model); }, resetBasic: function(tabPanel, model) { var p = new Ext.form.FormPanel({ title: '基本配置', labelWidth: 70, labelAlign: 'right', border: false, defaultType: 'textfield', defaults: { anchor: '90%' }, bodyStyle: { padding: '6px 0 0' }, items: [{ name: 'name', fieldLabel: '名称', value: model.text ? model.text : '', listeners: { 'blur': function(field) { var newValue = field.getValue(); model.text = newValue; } } }, { name: 'multiplicity', fieldLabel: '汇聚数目', value: model.dom.getAttribute('multiplicity'), xtype: 'numberfield', listeners: { 'blur': function(field) { var newValue = field.getValue(); model.dom.setAttribute('multiplicity', newValue); } } }/*, { name: 'lockmode', fieldLabel: '锁定模式', xtype: 'onecombo', data: ['none', 'read', 'upgrade', 'upgrade_nowait', 'write'], value: model.dom.getAttribute('lockmode'), listeners: { 'blur': function(field) { var newValue = field.getValue(); model.dom.setAttribute('lockmode', newValue); } } }*/, { name: 'description', fieldLabel: '备注', xtype: 'textarea', value: model.dom.getElementContent('description'), listeners: { 'blur': function(field) { var newValue = field.getValue(); model.dom.setElementContent('description', newValue); } } }] }); tabPanel.add(p); tabPanel.activate(p); } }); Ext.ns('App.form'); App.form.MailForm = Ext.extend(App.form.AbstractForm, { decorate: function(tabPanel, model) { this.clearItem(tabPanel); this.resetBasic(tabPanel, model); this.resetEvent(tabPanel, model); }, resetBasic: function(tabPanel, model) { var p = new Ext.form.FormPanel({ title: '基本配置', labelWidth: 70, labelAlign: 'right', border: false, defaultType: 'textfield', defaults: { anchor: '90%' }, bodyStyle: { padding: '6px 0 0' }, items: [{ name: 'name', fieldLabel: '名称', value: model.text ? model.text : '', listeners: { 'blur': function(field) { var newValue = field.getValue(); // FIXME: use command model.text = newValue; model.editPart.figure.updateAndShowText(newValue); } } }, { name: 'template', fieldLabel: '模板', value: model.dom.getAttribute('template'), listeners: { 'blur': function(field) { var newValue = field.getValue(); model.dom.setAttribute('template', newValue); } } }, { name: 'from', fieldLabel: '发信人', value: model.dom.getElementContent('from'), listeners: { 'blur': function(field) { var newValue = field.getValue(); model.dom.setElementContent('from', newValue); } } }, { name: 'to', fieldLabel: '收信人', value: model.dom.getElementContent('to'), listeners: { 'blur': function(field) { var newValue = field.getValue(); model.dom.setElementContent('to', newValue); } } }, { name: 'subject', fieldLabel: '标题', value: model.dom.getElementContent('subject'), listeners: { 'blur': function(field) { var newValue = field.getValue(); model.dom.setElementContent('subject', newValue); } } }, { name: 'content', fieldLabel: '内容', value: model.dom.getElementContent('html'), xtype: 'htmleditor', listeners: { 'sync': function(field, newValue) { model.dom.setElementContent('html', newValue); } } }, { name: 'description', fieldLabel: '备注', value: model.dom.getElementContent('description'), listeners: { 'blur': function(field) { var newValue = field.getValue(); model.dom.setElementContent('description', newValue); } } }] }); tabPanel.add(p); tabPanel.activate(p); } }); App.form.ProcessForm = Ext.extend(App.form.AbstractForm, { decorate: function(tabPanel, model) { this.clearItem(tabPanel); this.resetBasic(tabPanel, model); }, resetBasic: function(tabPanel, model) { var k=model.dom.getAttribute("data"); var flowName = k.flowName; var flowCaller = k.flowCaller; var flowRemark = k.flowRemark; var cstore = new Ext.data.SimpleStore({ fields : ["value"], data : [["是"],["否"]] }); var combo = new Ext.form.ComboBox({ name:'pr_enabled', fieldLabel:'启用', editable:false, allowBlanmodel: false, store:cstore, hidden:true, hideLabel:true, /*style:'background:#D3D3D3',*/ value:model.pr_enabled?model.pr_enabled:'否', valueField : "value", displayField : "value", mode : "local", triggerAction : "all", /*value:model.pr_id?model.pr_id:'',*/ listeners:{ 'beforerender':function(field){ var newValue = field.getValue(); model.pr_enabled = newValue; } } }); var p = new Ext.form.FormPanel({ id:'FirstForm', title: '基本配置', labelWidth: 70, labelAlign: 'right', border: false, defaultType: 'textfield', defaults: { anchor: '90%' }, bodyStyle: { padding: '6px 0 0' }, items: [{ name: 'pr_defname', fieldLabel: '流程名称', allowBlanmodel: false, readOnly:true, value: flowName, listeners: { beforerender: function(field){ if(getUrlParam('shortName')){ model.pr_defname = getUrlParam('shortName'); } } } },{ name: 'pr_caller', fieldLabel: '关联表单(caller)', readOnly:true, allowBlanmodel: false, value: flowCaller, listeners: { 'beforerender':function(field){ var newValue = field.getValue(); model.pr_caller = newValue; /*var condition=getUrlParam('formCondition'); if(condition){ field.setValue(condition.split("IS")[1]); }*/ } } },combo,{ xtype:'combo', name:'pr_ressubmit', fieldLabel:'限制反提交', editable:false, allowBlanmodel: false, store:cstore, hidden:true, hideLabel:true, value:model.pr_ressubmit?model.pr_ressubmit:'', valueField : "value", displayField : "value", mode : "local", triggerAction : "all", listeners:{ 'beforerender':function(field){ var newValue = field.getValue(); model.pr_ressubmit = newValue; } } },{ name: 'pr_descn', fieldLabel: '备注', xtype: 'textarea', height:300, readOnly:true, value:flowRemark, listeners: { 'beforerender':function(field){ var newValue = field.getValue(); model.pr_descn = newValue; model.dom.setElementContent('description', newValue); } } }] }); tabPanel.add(p); tabPanel.activate(p); } }); Ext.ns('App.form'); App.form.RuleDecisionForm = Ext.extend(App.form.AbstractForm, { decorate: function(tabPanel, model) { this.clearItem(tabPanel); this.resetBasic(tabPanel, model); this.resetEvent(tabPanel, model); }, resetBasic: function(tabPanel, model) { var p = new Ext.form.FormPanel({ title: '基本配置', labelWidth: 70, labelAlign: 'right', border: false, defaultType: 'textfield', defaults: { anchor: '90%' }, bodyStyle: { padding: '6px 0 0' }, items: [{ name: 'name', fieldLabel: '名称', value: model.text ? model.text : '', listeners: { 'blur': function(field) { var newValue = field.getValue(); model.text = newValue; } } }, { name: 'description', fieldLabel: '备注', xtype: 'textarea', value: model.dom.getElementContent('description'), listeners: { 'blur': function(field) { var newValue = field.getValue(); model.dom.setElementContent('description', newValue); } } }] }); tabPanel.add(p); tabPanel.activate(p); } }); Ext.ns('App.form'); App.form.RulesForm = Ext.extend(App.form.AbstractForm, { decorate: function(tabPanel, model) { this.clearItem(tabPanel); this.resetBasic(tabPanel, model); this.resetEvent(tabPanel, model); }, resetBasic: function(tabPanel, model) { var p = new Ext.form.FormPanel({ title: '基本配置', labelWidth: 70, labelAlign: 'right', border: false, defaultType: 'textfield', defaults: { anchor: '90%' }, bodyStyle: { padding: '6px 0 0' }, items: [{ name: 'name', fieldLabel: '名称', value: model.text ? model.text : '', listeners: { 'blur': function(field) { var newValue = field.getValue(); // FIXME: use command model.text = newValue; model.editPart.figure.updateAndShowText(newValue); } } }, { name: 'factVar', fieldLabel: '变量', value: model.dom.getElementAttribute('fact', 'var'), listeners: { 'blur': function(field) { var newValue = field.getValue(); model.dom.setElementAttribute('fact', 'var', newValue); } } }, { name: 'factExpr', fieldLabel: '表达式', value: model.dom.getElementAttribute('fact', 'expr'), listeners: { 'blur': function(field) { var newValue = field.getValue(); model.dom.setElementAttribute('fact', 'expr', newValue); } } }, { name: 'description', fieldLabel: '备注', xtype: 'textarea', value: model.dom.getElementContent('description'), listeners: { 'blur': function(field) { var newValue = field.getValue(); model.dom.setElementContent('description', newValue); } } }] }); tabPanel.add(p); tabPanel.activate(p); } }); Ext.ns('App.form'); App.form.ScriptForm = Ext.extend(App.form.AbstractForm, { decorate: function(tabPanel, model) { this.clearItem(tabPanel); this.resetBasic(tabPanel, model); this.resetEvent(tabPanel, model); }, resetBasic: function(tabPanel, model) { var p = new Ext.form.FormPanel({ title: '基本配置', labelWidth: 70, labelAlign: 'right', border: false, defaultType: 'textfield', defaults: { anchor: '90%' }, bodyStyle: { padding: '6px 0 0' }, items: [{ name: 'name', fieldLabel: '名称', value: model.text ? model.text : '', listeners: { 'blur': function(field) { var newValue = field.getValue(); // FIXME: use command model.text = newValue; model.editPart.figure.updateAndShowText(newValue); } } }, { name: 'expr', fieldLabel: '表达式', value: model.dom.getAttribute('expr'), listeners: { 'blur': function(field) { var newValue = field.getValue(); model.dom.setAttribute('expr', newValue); } } }, { name: 'lang', fieldLabel: '脚本语言', value: model.dom.getAttribute('lang'), listeners: { 'blur': function(field) { var newValue = field.getValue(); model.dom.setAttribute('lang', newValue); } } }, { name: 'description', fieldLabel: '备注', xtype: 'textarea', value: model.dom.getElementContent('description'), listeners: { 'blur': function(field) { var newValue = field.getValue(); model.dom.setElementContent('description', newValue); } } }] }); tabPanel.add(p); tabPanel.activate(p); } }); Ext.ns('App.form'); App.form.SqlForm = Ext.extend(App.form.AbstractForm, { decorate: function(tabPanel, model) { this.clearItem(tabPanel); this.resetBasic(tabPanel, model); this.resetEvent(tabPanel, model); }, resetBasic: function(tabPanel, model) { // 对象型参数 var objFS = new Ext.form.FieldSet({ title: '对象型参数设置', collapsible: true, autoHeight : true, checkboxToggle : true, id:'objFS', checkboxName :'', defaults: { anchor: '90%' }, /*layout:'column',*/ /*defaultType: 'textfield',*/ items :[new Ext.form.TextField({ fieldLabel: '名称', name: 'field1', disabled:true, listeners: { 'blur': function(field) { var para = model.dom.getElementByTagName('parameters'); var newValue = field.getValue(); console.log(model); var el = para.getElementByTagName('object'); if(!el){ var obj = new Gef.model.Dom('object'); obj.setAttribute('name',newValue); para.addElement(obj); }else{ el.setAttribute('name',newValue); } }, 'beforerender':function(field){ var para = model.dom.getElementByTagName('parameters'); if(para){ var el = para.getElementByTagName('object'); if(el){ var v = para.getElementByTagName('object').getAttribute('name'); field.setValue(v); } }else{ return; } } } }), new Ext.form.TextField({ fieldLabel: '表达式', name: 'field2', disabled:true, listeners: { 'blur': function(field) { var para = model.dom.getElementByTagName('parameters'); var newValue = field.getValue(); var el = para.getElementByTagName('object'); if(!el){ var obj = new Gef.model.Dom('object'); obj.setAttribute('expr',newValue); para.addElement(obj); }else{ el.setAttribute('expr',newValue); } }, 'beforerender':function(field){ var para = model.dom.getElementByTagName('parameters'); if(para){ var el = para.getElementByTagName('object'); if(el){ var v = para.getElementByTagName('object').getAttribute('expr'); field.setValue(v); } }else{ return; } } } })] }); var stringFS = new Ext.form.FieldSet({ title: '字符串型参数设置', collapsible: true, id:'stringFS', autoHeight : true, checkboxToggle : true, checkboxName :'', defaults: { anchor: '90%' }, /*layout:'column',*/ /*defaultType: 'textfield',*/ items :[new Ext.form.TextField({ fieldLabel: '名称', name: 'field3', disabled:true, /*value: 0, */ /*model.dom.getElementByTagName('reminder').getAttribute('duedate'),*/ listeners: { 'blur': function(field) { var para = model.dom.getElementByTagName('parameters'); var newValue = field.getValue(); console.log(model); var el = para.getElementByTagName('string'); if(!el){ var str = new Gef.model.Dom('string'); str.setAttribute('name',newValue); para.addElement(str); }else{ el.setAttribute('name',newValue); } }, 'beforerender':function(field){ var para = model.dom.getElementByTagName('parameters'); if(para){ var el = para.getElementByTagName('string'); if(el){ var v = para.getElementByTagName('string').getAttribute('name'); field.setValue(v); } }else{ return; } } } }), new Ext.form.TextField({ fieldLabel: '值', name: 'field4', disabled:true, listeners: { 'blur': function(field) { var para = model.dom.getElementByTagName('parameters'); var newValue = field.getValue(); console.log(model); var el = para.getElementByTagName('string'); if(!el){ var str = new Gef.model.Dom('string'); str.setAttribute('value',newValue); para.addElement(str); }else{ el.setAttribute('value',newValue); } }, 'beforerender':function(field){ var para = model.dom.getElementByTagName('parameters'); if(para){ var el = para.getElementByTagName('string'); if(el){ var v = para.getElementByTagName('string').getAttribute('value'); field.setValue(v); } }else{ return; } } } })] }); var p1 = new Ext.form.Checkbox({ id:'p1', fieldLabel :'参数设置', boxLabel:'对象型', name:'parameter', listeners: { 'beforerender':function(){ }, 'check':function(p1,b){ if(b){ var para = model.dom.getElementByTagName('parameters'); if(!para){ para = new Gef.model.Dom('parameters'); model.dom.addElement(para); var items= Ext.getCmp('objFS').items.items; Ext.each(items,function(item){ if(item.disable){ item.enable(); } }); }else{ var items = Ext.getCmp('objFS').items.items; Ext.each(items,function(item){ /*item.enable();*/ if(item.disable){ item.enable(); } }); } } } } }); var p2 = new Ext.form.Checkbox({ id:'p2', fieldLabel :'', boxLabel:'字符串型', name:'parameter', listeners: { 'beforerender':function(){ }, 'check':function(p2,b){ if(b){ var para = model.dom.getElementByTagName('parameters'); if(!para){ para = new Gef.model.Dom('parameters'); model.dom.addElement(para); var items = Ext.getCmp('stringFS').items.items; Ext.each(items,function(item){ /*item.enable();*/ if(item.disable){ item.enable(); } }); }else{ var items = Ext.getCmp('stringFS').items.items; Ext.each(items,function(item){ /*item.enable();*/ if(item.disable){ item.enable(); } }); } } } } }); var p = new Ext.form.FormPanel({ title: '基本配置', labelWidth: 70, labelAlign: 'right', border: false, defaultType: 'textfield', defaults: { anchor: '90%' }, bodyStyle: { padding: '6px 0 0' }, items: [{ name: 'name', fieldLabel: '名称', value: model.text ? model.text : '', listeners: { 'blur': function(field) { var newValue = field.getValue(); // FIXME: use command model.text = newValue; model.editPart.figure.updateAndShowText(newValue); } } }, { name: 'var', fieldLabel: '变量', value: model.dom.getAttribute('var'), listeners: { 'blur': function(field) { var newValue = field.getValue(); model.dom.setAttribute('var', newValue); } } }, { name: 'unique', fieldLabel: '是否唯一', value: model.dom.getAttribute('unique'), // hidden:true, //hideLabel:true, listeners: { 'blur': function(field) { var newValue = field.getValue(); model.dom.setAttribute('unique', newValue); } } }, { name: 'query', fieldLabel: '查询语句', xtype: 'textarea', value: model.dom.getElementContent('query'), listeners: { 'blur': function(field) { var newValue = field.getValue(); model.dom.setElementContent('query', newValue); } } }/*, { name:'parameters', fieldLabel: '参数表达式', value: model.dom.getElementContent('parameters'), xtype: 'textarea', validate:function(value){ if(value==null||value==''){ return true; }else if(value.indexOf("<")==0&&value.lastIndexOf(">")==value.length-1){ return true; } return false; }*/,p1,p2,objFS,stringFS,{ name:'parameters', fieldLabel: '参数表达式', value: model.dom.getElementContent('parameters'), xtype: 'textarea', validate:function(value){ if(value==null||value==''){ return true; }else if(value.indexOf("<")==0&&value.lastIndexOf(">")==value.length-1){ return true; } return false; }, listeners: { 'blur': function(field) { var newValue = field.getValue(); /*if(!this.validate(newValue)){ alert("请填写正确的参数表达式!"); field.focus(); return; }*/ model.dom.setElementContent('parameters',newValue); /* model.dom.setElementAttribute('object', 'expr', newValue);*/ /*model.dom.setElementAttribute('parameters', 'object', newValue);*/ /* console.log(model.dom);*/ /* var o = model.dom.getElementByTagName('object').getElementContent(); console.log(o);*/ /* var p = model.dom.getElementByTagName('parameters'); console.log(p);*/ /* var items =[]; items.push({ name: 'condition', fieldLabel: '条件', // value: condition, listeners: { 'blur': function(field) { var newValue = field.getValue(); if (newValue != '') { model.dom.setElementAttribute('condition', 'expr', newValue); } else if (model.dom.elements.length > 0) { model.dom.removeElement(model.dom.elements[0]); } } } });*/ } } }/*,{ name:'parameters', fieldLabel: '参数', value: model.dom.getElementContent('parameters'), listeners: { 'blur': function(field) { var newValue = field.getValue(); model.dom.setElementContent('parameters', newValue); } } }*/,{ name: 'description', fieldLabel: '备注', xtype: 'textarea', value: model.dom.getElementContent('description'), listeners: { 'blur': function(field) { var newValue = field.getValue(); model.dom.setElementContent('description', newValue); } } }] }); tabPanel.add(p); tabPanel.activate(p); } }); Ext.ns('App.form'); App.form.StartForm = Ext.extend(App.form.AbstractForm, { decorate: function(tabPanel, model) { this.clearItem(tabPanel); this.resetBasic(tabPanel, model); this.resetEvent(tabPanel, model); }, resetBasic: function(tabPanel, model) { var p = new Ext.form.FormPanel({ title: '基本配置', labelWidth: 70, labelAlign: 'right', border: false, defaultType: 'textfield', defaults: { anchor: '90%' }, bodyStyle: { padding: '6px 0 0' }, items: [{ name: 'name', fieldLabel: '名称', value: 'START', readOnly:true, listeners: { beforerender:function(){ model.text = 'START'; } } }] }); tabPanel.add(p); tabPanel.activate(p); } }); Ext.ns('App.form'); App.form.StateForm = Ext.extend(App.form.AbstractForm, { decorate: function(tabPanel, model) { this.clearItem(tabPanel); this.resetBasic(tabPanel, model); this.resetEvent(tabPanel, model); }, resetBasic: function(tabPanel, model) { var p = new Ext.form.FormPanel({ title: '基本配置', labelWidth: 70, labelAlign: 'right', border: false, defaultType: 'textfield', defaults: { anchor: '90%' }, bodyStyle: { padding: '6px 0 0' }, items: [{ name: 'name', fieldLabel: '名称', value: model.text ? model.text : '', listeners: { 'blur': function(field) { var newValue = field.getValue(); // FIXME: use command model.text = newValue; model.editPart.figure.updateAndShowText(newValue); } } }, { name: 'description', fieldLabel: '备注', xtype: 'textarea', value: model.dom.getElementContent('description'), listeners: { 'blur': function(field) { var newValue = field.getValue(); model.dom.setElementContent('description', newValue); } } }] }); tabPanel.add(p); tabPanel.activate(p); } }); Ext.ns('App.form'); App.form.SubProcessForm = Ext.extend(App.form.AbstractForm, { decorate: function(tabPanel, model) { this.clearItem(tabPanel); this.resetBasic(tabPanel, model); this.resetAdvance(tabPanel, model); this.resetEvent(tabPanel, model); }, resetBasic: function(tabPanel, model) { var p = new Ext.form.FormPanel({ title: '基本配置', labelWidth: 70, labelAlign: 'right', border: false, defaultType: 'textfield', defaults: { anchor: '90%' }, bodyStyle: { padding: '6px 0 0' }, items: [{ name: 'name', fieldLabel: '名称', value: model.text ? model.text : '', listeners: { 'blur': function(field) { var newValue = field.getValue(); // FIXME: use command model.text = newValue; model.editPart.figure.updateAndShowText(newValue); } } }, { name: 'subProcessId', fieldLabel: '子流程ID', value: model.dom.getAttribute('sub-process-id'), listeners: { 'blur': function(field) { var newValue = field.getValue(); model.dom.setAttribute('sub-process-id', newValue); } } }, { name: 'subProcessKey', fieldLabel: '子流程KEY', value: model.dom.getAttribute('sub-process-key'), listeners: { 'blur': function(field) { var newValue = field.getValue(); model.dom.setAttribute('sub-process-key', newValue); } } }, { name: 'outcome', fieldLabel: '外出转移', value: model.dom.getAttribute('outcome'), listeners: { 'blur': function(field) { var newValue = field.getValue(); model.dom.setAttribute('outcome', newValue); } } }, { name: 'description', fieldLabel: '备注', xtype: 'textarea', value: model.dom.getElementContent('description'), listeners: { 'blur': function(field) { var newValue = field.getValue(); model.dom.setElementContent('description', newValue); } } }] }); tabPanel.add(p); tabPanel.activate(p); }, getParameterInData: function(model) { var data = []; var elements = model.dom.getElementsByTagName('parameter-in'); Gef.each(elements, function(item) { data.push({ 'var': item.getAttribute('var'), subvar: item.getAttribute('subvar') }); }); return data; }, getParameterOutData: function(model) { var data = []; var elements = model.dom.getElementsByTagName('parameter-out'); Gef.each(elements, function(item) { data.push({ 'var': item.getAttribute('var'), subvar: item.getAttribute('subvar') }); }); return data; }, resetAdvance: function(tabPanel, model) { var Record = Ext.data.Record.create(['var', 'subvar']); var inData = this.getParameterInData(model); var inStore = new Ext.data.JsonStore({ fields: Record, data: inData, listeners: { add: function(store, records, index) { var record = records[0]; var onDom = new Gef.model.Dom('parameter-in'); onDom.setAttribute('var', record.get('var')); onDom.setAttribute('subvar', record.get('subvar')); model.dom.addElement(onDom); }, remove: function(store, record, index) { var elements = model.dom.getElementsByTagName('parameter-in'); var element = elements[index]; model.dom.elements.remove(element); }, update: function(store, record, operation) { var index = store.indexOf(record); var elements = model.dom.getElementsByTagName('parameter-in'); var element = elements[index]; element.setAttribute('var', record.get('var')); element.setAttribute('subvar', record.get('subvar')); this.commitChanges(); } } }); var gridIn = new Ext.grid.EditorGridPanel({ title: '输入变量', store: inStore, viewConfig: { forceFit: true }, columns: [{ header: '变量名', dataIndex: 'var', editor: new Ext.grid.GridEditor(new Ext.form.TextField()) }, { header: '子流程变量', dataIndex: 'subvar', editor: new Ext.grid.GridEditor(new Ext.form.TextField()) }], tbar: [{ text: '添加', iconCls: 'tb-add', handler: function() { var p = new Record({ 'var': '', subvar: '' }); gridIn.stopEditing(); var index = gridIn.getStore().getCount(); gridIn.getStore().insert(index, p); gridIn.startEditing(index, 0); } }, { text: '删除', iconCls: 'tb-delete', handler: function() { Ext.Msg.confirm('信息', '确定删除?', function(btn){ if (btn == 'yes') { var sm = gridIn.getSelectionModel(); var cell = sm.getSelectedCell(); var record = gridIn.getStore().getAt(cell[0]); gridIn.getStore().remove(record); } }); } }] }); var outData = this.getParameterOutData(model); var outStore = new Ext.data.JsonStore({ fields: Record, data: outData, listeners: { add: function(store, records, index) { var record = records[0]; var onDom = new Gef.model.Dom('parameter-out'); onDom.setAttribute('var', record.get('var')); onDom.setAttribute('subvar', record.get('subvar')); model.dom.addElement(onDom); }, remove: function(store, record, index) { var elements = model.dom.getElementsByTagName('parameter-out'); var element = elements[index]; model.dom.elements.remove(element); }, update: function(store, record, operation) { var index = store.indexOf(record); var elements = model.dom.getElementsByTagName('parameter-out'); var element = elements[index]; element.setAttribute('var', record.get('var')); element.setAttribute('subvar', record.get('subvar')); this.commitChanges(); } } }); var gridOut = new Ext.grid.EditorGridPanel({ title: '输出变量', store: outStore, viewConfig: { forceFit: true }, columns: [{ header: '子流程变量', dataIndex: 'subvar', editor: new Ext.grid.GridEditor(new Ext.form.TextField()) }, { header: '变量名', dataIndex: 'var', editor: new Ext.grid.GridEditor(new Ext.form.TextField()) }], tbar: [{ text: '添加', iconCls: 'tb-add', handler: function() { var p = new Record({ 'var': '', subvar: '' }); gridOut.stopEditing(); var index = gridOut.getStore().getCount(); gridOut.getStore().insert(index, p); gridOut.startEditing(index, 0); } }, { text: '删除', iconCls: 'tb-delete', handler: function() { Ext.Msg.confirm('信息', '确定删除?', function(btn){ if (btn == 'yes') { var sm = gridOut.getSelectionModel(); var cell = sm.getSelectedCell(); var record = gridOut.getStore().getAt(cell[0]); gridOut.getStore().remove(record); } }); } }] }); var p = new Ext.TabPanel({ title: ' 变量映射', activeItem: 0, items: [gridIn, gridOut] }); tabPanel.add(p); this.gridIn = gridIn; this.gridOut = gridOut; } }); Ext.ns('App.form'); App.form.TaskForm = Ext.extend(App.form.AbstractForm, { assigneeXtype: 'orgfield', assigneeXtype2: 'orgTrigger', eventNames: [ ['start', '开始'], ['end', '结束'] ], classNames:[ ['com.uas.erp.service.scm.impl.ScmBeforeEventListener','SCM-Before'], ['com.uas.erp.service.scm.impl.ScmAfterEventListener','SCM-After'], ['com.uas.erp.service.pm.impl.PmBeforeEventListener','PM-Before'], ['com.uas.erp.service.pm.impl.PmAfterEventListener','PM-After'], ['com.uas.erp.service.pm.impl.HrBeforeEventListener','HR-Before'], ['com.uas.erp.service.pm.impl.HrAfterEventListener','HR-After'], ['com.uas.erp.service.pm.impl.OaBeforeEventListener','OA-Before'], ['com.uas.erp.service.pm.impl.OaAfterEventListener','OA-After'], ['com.uas.erp.service.pm.impl.CrmBeforeEventListener','CRM-Before'], ['com.uas.erp.service.pm.impl.CrmAfterEventListener','CRM-After'], ['com.uas.erp.service.pm.impl.FaBeforeEventListener','FA-Before'], ['com.uas.erp.service.pm.impl.FaAfterEventListener','FA-After'], ['com.uas.erp.service.pm.impl.DrpBeforeEventListener','DRP-Before'], ['com.uas.erp.service.pm.impl.DrpAfterEventListener','DRP-After'] ], decorate: function(tabPanel, model) { this.clearItem(tabPanel); this.resetBasic(tabPanel, model); /*this.resetAdvance(tabPanel, model);*/ this.resetEvent(tabPanel, model); }, resetBasic: function(tabPanel, model) { /**任务基本配置 --------*/ var p = new Ext.form.FormPanel({ title: '基本配置', labelWidth: 70, labelAlign: 'right', border: false, defaultType: 'textfield', defaults: { anchor: '90%' }, bodyStyle: { padding: '1px 0 0' }, buttonAlign :'left', collapsible :true, buttons :[], items: [{ name: 'name', fieldLabel: '名称', value: model.text ? model.text : '', listeners: { 'blur': function(field) { var newValue = field.getValue(); // FIXME: use command model.text = newValue; model.editPart.figure.updateAndShowText(newValue); } } },{ name: 'flowtype', fieldLabel: '类型', value: '', readOnly:true, listeners: { 'beforerender':function(field){ //初始化类型 field.setValue(model.dom.getAttribute('flowtype')); //根据类型分辨 if(model.id.indexOf('derive')>=0){//派生流程 model.dom.setAttribute('flowtype', 'derive'); field.setValue('derive'); } if(model.id.indexOf('mission')>=0){//派生任务 model.dom.setAttribute('flowtype', 'mission'); field.setValue('mission'); } if(model.id.indexOf('idea')>=0){//派生意见 model.dom.setAttribute('flowtype', 'idea'); field.setValue('idea'); } if(model.id.indexOf('task')>=0){//普通任务节点 model.dom.setAttribute('flowtype', 'task'); field.setValue('task'); } }, 'blur': function(field) { var newValue = field.getValue(); model.dom.setAttribute('flowtype', newValue); } } }] }); tabPanel.add(p); tabPanel.activate(p); } }); Ext.ns('App.form'); App.form.TransitionForm = Ext.extend(App.form.AbstractForm, { id:'transitionform', eventNames: [ ['take', '进入'] ], decorate: function(tabPanel, model) { this.clearItem(tabPanel); this.resetBasic(tabPanel, model); this.resetEvent(tabPanel, model); this.resetTimer(tabPanel, model); }, resetBasic: function(tabPanel, model) { var condition = model.dom.getElementAttribute('condition', 'expr'); if (condition != '') { condition = condition.replace(/</g, '<') .replace(/&/g, '&'); } var items = []; items.push({ id:'lineName', name: 'name', fieldLabel: '名称', value: model.text ? model.text : '', listeners: { 'change': function(field) { var newValue = field.getValue(); // FIXME: use command if(model.getSource().type == 'task'){ } model.text = newValue; model.editPart.figure.updateAndShowText(newValue); } } }); var cstore = new Ext.data.SimpleStore({ fields : ["display", "value"], data : [["普通操作",'Turn'],["提交操作",'Commit'],["派生流程操作",'Flow'],["派生意见操作",'Update'], ["派生任务操作",'Task'],["决策操作",'Judge']] }); items.push({ name: 'linetype', fieldLabel: '类型', xtype:'combo', editable:false, allowBlanmodel: false, store:cstore, value:model.pr_ressubmit?model.pr_ressubmit:'', valueField : "value", displayField : "display", mode : "local", triggerAction : "all", listeners:{ 'beforerender':function(field){ //初始化类型 field.setValue(model.dom.getAttribute('linetype')); model.linetype=model.dom.getAttribute('linetype'); }, 'blur': function(field) { var newValue = field.getValue(); model.dom.setAttribute('linetype', newValue); model.linetype=newValue; if(newValue=='Commit'){ Ext.getCmp('lineName').setValue('提交'); model.text = '提交'; model.editPart.figure.updateAndShowText('提交'); } } } }); if (model.getSource().type == 'decision') { items.push({ hidden:true, hideLabel:true, name: 'condition', fieldLabel: '条件', // value: 'default', listeners: { 'beforerender': function(field) { var newValue = field.getValue(); model.dom.setElementAttribute('condition', 'expr', newValue); } } }); } /* items.push({ name: 'description', fieldLabel: '备注', xtype: 'textarea', value: model.dom.getElementContent('description'), listeners: { 'blur': function(field) { var newValue = field.getValue(); model.dom.setElementContent('description', newValue); } } });*/ /*transition 的备注域注释掉 */ var p = new Ext.form.FormPanel({ title: '基本配置', labelWidth: 70, labelAlign: 'right', border: false, defaultType: 'textfield', defaults: { anchor: '90%' }, bodyStyle: { padding: '6px 0 0' }, items: items }); tabPanel.add(p); tabPanel.activate(p); }, getTimerData: function(model) { var data = []; var elements = model.dom.getElementsByTagName('timer'); Gef.each(elements, function(elem) { data.push({ duedate: timerElem.getAttribute('duedate') }); }); return data; }, resetTimer: function(tabPanel, model) { var data = this.getTimerData(model); var Record = Ext.data.Record.create([ 'duedate' ]); var store = new Ext.data.JsonStore({ fields: Record, data: data, listeners: { add: function(store, records, index) { var record = records[0]; var timerDom = new Gef.model.Dom('timer'); timerDom.setAttribute('duedate', record.get('duedate')); model.dom.addElement(timerDom); }, remove: function(store, record, index) { var element = model.dom.getElementByTagName('timer'); model.dom.elements.remove(element); }, update: function(store, record, operation) { var index = store.indexOf(record); var element = model.dom.getElementByTagName('timer'); element.setAttribute('duedate', record.get('duedate')); this.commitChanges(); } } }); var grid = new Ext.grid.EditorGridPanel({ title: '定时器配置', xtype: 'editorgrid', store: store, viewConfig: { forceFit: true }, columns: [{ header: '持续日期', dataIndex: 'duedate', editor: new Ext.grid.GridEditor(new Ext.form.TextField()) }/*, { header: '持续时间', dataIndex: 'duedatetime', editor: new Ext.grid.GridEditor(new Ext.form.TextField()) }*/], tbar: [{ text: '添加', iconCls: 'tb-add', handler: function() { var count = grid.getStore().getCount(); if (count > 0) { Ext.Msg.alert('info', '连线上只能设置一个定时器'); return; } var p = new Record({ name: '', duedate: '', repeat: '', //duedatetime: '', classname: '' }); grid.stopEditing(); var index = grid.getStore().getCount(); grid.getStore().insert(index, p); grid.startEditing(index, 0); } }, { text: '删除', iconCls: 'tb-delete', handler: function() { Ext.Msg.confirm('信息', '确定删除?', function(btn){ if (btn == 'yes') { var sm = grid.getSelectionModel(); var cell = sm.getSelectedCell(); var record = grid.getStore().getAt(cell[0]); grid.getStore().remove(record); } }); } }] }); /*tabPanel.add(grid);*/ } });