all-forms1.js 103 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114111511161117111811191120112111221123112411251126112711281129113011311132113311341135113611371138113911401141114211431144114511461147114811491150115111521153115411551156115711581159116011611162116311641165116611671168116911701171117211731174117511761177117811791180118111821183118411851186118711881189119011911192119311941195119611971198119912001201120212031204120512061207120812091210121112121213121412151216121712181219122012211222122312241225122612271228122912301231123212331234123512361237123812391240124112421243124412451246124712481249125012511252125312541255125612571258125912601261126212631264126512661267126812691270127112721273127412751276127712781279128012811282128312841285128612871288128912901291129212931294129512961297129812991300130113021303130413051306130713081309131013111312131313141315131613171318131913201321132213231324132513261327132813291330133113321333133413351336133713381339134013411342134313441345134613471348134913501351135213531354135513561357135813591360136113621363136413651366136713681369137013711372137313741375137613771378137913801381138213831384138513861387138813891390139113921393139413951396139713981399140014011402140314041405140614071408140914101411141214131414141514161417141814191420142114221423142414251426142714281429143014311432143314341435143614371438143914401441144214431444144514461447144814491450145114521453145414551456145714581459146014611462146314641465146614671468146914701471147214731474147514761477147814791480148114821483148414851486148714881489149014911492149314941495149614971498149915001501150215031504150515061507150815091510151115121513151415151516151715181519152015211522152315241525152615271528152915301531153215331534153515361537153815391540154115421543154415451546154715481549155015511552155315541555155615571558155915601561156215631564156515661567156815691570157115721573157415751576157715781579158015811582158315841585158615871588158915901591159215931594159515961597159815991600160116021603160416051606160716081609161016111612161316141615161616171618161916201621162216231624162516261627162816291630163116321633163416351636163716381639164016411642164316441645164616471648164916501651165216531654165516561657165816591660166116621663166416651666166716681669167016711672167316741675167616771678167916801681168216831684168516861687168816891690169116921693169416951696169716981699170017011702170317041705170617071708170917101711171217131714171517161717171817191720172117221723172417251726172717281729173017311732173317341735173617371738173917401741174217431744174517461747174817491750175117521753175417551756175717581759176017611762176317641765176617671768176917701771177217731774177517761777177817791780178117821783178417851786178717881789179017911792179317941795179617971798179918001801180218031804180518061807180818091810181118121813181418151816181718181819182018211822182318241825182618271828182918301831183218331834183518361837183818391840184118421843184418451846184718481849185018511852185318541855185618571858185918601861186218631864186518661867186818691870187118721873187418751876187718781879188018811882188318841885188618871888188918901891189218931894189518961897189818991900190119021903190419051906190719081909191019111912191319141915191619171918191919201921192219231924192519261927192819291930193119321933193419351936193719381939194019411942194319441945194619471948194919501951195219531954195519561957195819591960196119621963196419651966196719681969197019711972197319741975197619771978197919801981198219831984198519861987198819891990199119921993199419951996199719981999200020012002200320042005200620072008200920102011201220132014201520162017201820192020202120222023202420252026202720282029203020312032203320342035203620372038203920402041204220432044204520462047204820492050205120522053205420552056205720582059206020612062206320642065206620672068206920702071207220732074207520762077207820792080208120822083208420852086208720882089209020912092209320942095209620972098209921002101210221032104210521062107210821092110211121122113211421152116211721182119212021212122212321242125212621272128212921302131213221332134213521362137213821392140214121422143214421452146214721482149215021512152215321542155215621572158215921602161216221632164216521662167216821692170217121722173217421752176217721782179218021812182218321842185218621872188218921902191219221932194219521962197219821992200220122022203220422052206220722082209221022112212221322142215221622172218221922202221222222232224222522262227222822292230223122322233223422352236223722382239224022412242224322442245224622472248224922502251225222532254225522562257225822592260226122622263226422652266226722682269227022712272227322742275227622772278227922802281228222832284228522862287228822892290229122922293229422952296229722982299230023012302230323042305230623072308230923102311231223132314231523162317231823192320232123222323232423252326232723282329233023312332233323342335233623372338233923402341234223432344234523462347234823492350235123522353235423552356235723582359236023612362236323642365236623672368236923702371237223732374237523762377237823792380238123822383238423852386238723882389239023912392239323942395239623972398239924002401240224032404240524062407240824092410241124122413241424152416241724182419242024212422242324242425242624272428242924302431243224332434243524362437243824392440244124422443244424452446244724482449245024512452245324542455245624572458245924602461246224632464246524662467246824692470247124722473247424752476247724782479248024812482248324842485248624872488248924902491249224932494249524962497249824992500250125022503250425052506250725082509251025112512251325142515251625172518251925202521252225232524252525262527252825292530253125322533253425352536253725382539254025412542254325442545254625472548254925502551255225532554255525562557255825592560256125622563256425652566256725682569257025712572257325742575257625772578257925802581258225832584258525862587258825892590259125922593259425952596259725982599260026012602260326042605260626072608260926102611261226132614261526162617261826192620262126222623262426252626262726282629263026312632263326342635263626372638263926402641264226432644264526462647264826492650265126522653265426552656265726582659266026612662266326642665266626672668266926702671267226732674267526762677267826792680268126822683268426852686268726882689269026912692269326942695269626972698269927002701270227032704270527062707270827092710271127122713271427152716271727182719272027212722272327242725272627272728272927302731273227332734273527362737273827392740274127422743274427452746274727482749275027512752275327542755275627572758275927602761276227632764276527662767276827692770277127722773277427752776277727782779278027812782278327842785278627872788278927902791279227932794279527962797279827992800280128022803280428052806280728082809281028112812281328142815281628172818281928202821282228232824282528262827282828292830283128322833283428352836283728382839284028412842284328442845284628472848284928502851285228532854285528562857285828592860286128622863286428652866286728682869287028712872287328742875287628772878287928802881288228832884288528862887288828892890289128922893289428952896289728982899290029012902290329042905290629072908290929102911291229132914291529162917291829192920292129222923292429252926292729282929293029312932293329342935293629372938293929402941294229432944294529462947294829492950295129522953295429552956295729582959296029612962296329642965296629672968296929702971297229732974297529762977297829792980298129822983298429852986298729882989299029912992299329942995299629972998299930003001300230033004300530063007
  1. Ext.ns('App.form');
  2. /**会签 人工**/
  3. App.form.AbstractForm = Ext.extend(Object, {
  4. eventNames: [
  5. ['start', '开始'],
  6. ['end', '结束']
  7. ],
  8. clearItem: function(p) {
  9. if (typeof p.items != 'undefined') {
  10. var item = null;
  11. while ((item = p.items.last())) {
  12. p.remove(item, true);
  13. }
  14. }
  15. },
  16. getParticipantData: function(model) {
  17. var data = [];
  18. var elements = model.dom.getElementsByTagName('participant');
  19. Gef.each(elements, function(elem) {
  20. data.push({
  21. name: elem.getAttribute('name'),
  22. type: elem.getAttribute('type')
  23. });
  24. });
  25. alert(data+"data");
  26. return data;
  27. },
  28. resetParticipant: function(tabPanel, model) {
  29. alert(tabPanel);
  30. alert(model);
  31. var data = this.getParticipantData(model);
  32. alert(data);
  33. var Record = Ext.data.Record.create(['name', 'type']);
  34. alert(Record);
  35. var store = new Ext.data.JsonStore({
  36. fields: Record,
  37. data: data,
  38. listeners: {
  39. add: function(store, records, index) {
  40. var record = records[0];
  41. var participantName = record.get('name');
  42. var participantType = record.get('type');
  43. if ((!participantName) || participantName == '' || (!participantType) || participantType == '') {
  44. return;
  45. }
  46. var onDom = new Gef.model.Dom('participant');
  47. onDom.setAttribute('name', participantName);
  48. onDom.setAttribute('type', participantType);
  49. model.dom.addElement(onDom);
  50. },
  51. remove: function(store, record, index) {
  52. var candidateElements = model.dom.getElementsByTagName('participant');
  53. var elements = candidateElements;
  54. var element = elements[index];
  55. model.dom.elements.remove(element);
  56. },
  57. update: function(store, record, operation) {
  58. var participantName = record.get('name');
  59. var participantType = record.get('type');
  60. if ((!participantName) || participantName == '' || (!participantType) || participantType == '') {
  61. return;
  62. }
  63. var index = store.indexOf(record);
  64. var candidateElements = model.dom.getElementsByTagName('participant');
  65. var elements = candidateElements;
  66. var element = elements[index];
  67. if (!element) {
  68. var onDom = new Gef.model.Dom('participant');
  69. onDom.setAttribute('name', participantName);
  70. onDom.setAttribute('type', participantType);
  71. model.dom.addElement(onDom);
  72. } else {
  73. element.setAttribute('name', participantName);
  74. element.setAttribute('type', participantType);
  75. }
  76. this.commitChanges();
  77. }
  78. }
  79. });
  80. var grid = new Ext.grid.EditorGridPanel({
  81. title: '参与者配置',
  82. store: store,
  83. viewConfig: {
  84. forceFit: true
  85. },
  86. columns: [{
  87. header: '名称',
  88. dataIndex: 'name',
  89. editor: new Ext.grid.GridEditor(new Ext.form.TextField())
  90. }, {
  91. header: '类型',
  92. dataIndex: 'type',
  93. editor: new Ext.grid.GridEditor(new Ext.form.TextField())
  94. }],
  95. tbar: [{
  96. text: '添加',
  97. iconCls: 'tb-add',
  98. handler: function() {
  99. var p = new Record({
  100. name: '',
  101. type: ''
  102. });
  103. this.addRecord(grid, p);
  104. },
  105. scope: this
  106. }, {
  107. text: '删除',
  108. iconCls: 'tb-delete',
  109. handler: function() {
  110. this.removeRecord(grid);
  111. },
  112. scope: this
  113. }]
  114. });
  115. tabPanel.add(grid);
  116. },
  117. getEventData: function(model) {
  118. var data = [];
  119. var elements = model.dom.getElementsByTagName('on');
  120. Gef.each(elements, function(elem) {
  121. var timerElem = elem.getElementByTagName('timer');
  122. if (timerElem) {
  123. return true;
  124. }
  125. data.push({
  126. name: elem.getAttribute('event'),
  127. classname: elem.getElementAttribute('event-listener', 'class')
  128. });
  129. });
  130. return data;
  131. },
  132. resetEvent: function(tabPanel, model) {
  133. var data = this.getEventData(model);
  134. var Record = Ext.data.Record.create(['name', 'classname']);
  135. var store = new Ext.data.JsonStore({
  136. fields: Record,
  137. data: data,
  138. listeners: {
  139. add: function(store, records, index) {
  140. var record = records[0];
  141. var eventName = record.get('name');
  142. var eventClassName = record.get('classname');
  143. if ((!eventName) || eventName == '' || (!eventClassName) || eventClassName == '') {
  144. return;
  145. }
  146. var onDom = new Gef.model.Dom('on');
  147. onDom.setAttribute('event', eventName);
  148. onDom.setElementAttribute('event-listener', 'class', eventClassName);
  149. model.dom.addElement(onDom);
  150. },
  151. remove: function(store, record, index) {
  152. var candidateElements = model.dom.getElementsByTagName('on');
  153. var elements = [];
  154. Gef.each(candidateElements, function(elem) {
  155. var timerElem = elem.getElementByTagName('timer');
  156. if (!timerElem) {
  157. elements.push(elem);
  158. }
  159. });
  160. var element = elements[index];
  161. model.dom.elements.remove(element);
  162. },
  163. update: function(store, record, operation) {
  164. var eventName = record.get('name');
  165. var eventClassName = record.get('classname');
  166. if ((!eventName) || eventName == '' || (!eventClassName) || eventClassName == '') {
  167. return;
  168. }
  169. var index = store.indexOf(record);
  170. var candidateElements = model.dom.getElementsByTagName('on');
  171. var elements = [];
  172. Gef.each(candidateElements, function(elem) {
  173. var timerElem = elem.getElementByTagName('timer');
  174. if (!timerElem) {
  175. elements.push(elem);
  176. }
  177. });
  178. var element = elements[index];
  179. if (!element) {
  180. var onDom = new Gef.model.Dom('on');
  181. onDom.setAttribute('event', eventName);
  182. onDom.setElementAttribute('event-listener', 'class', eventClassName);
  183. model.dom.addElement(onDom);
  184. } else {
  185. element.setAttribute('event', eventName);
  186. element.setElementAttribute('event-listener', 'class', eventClassName);
  187. }
  188. this.commitChanges();
  189. }
  190. }
  191. });
  192. var eventNameMap = {};
  193. Gef.each(this.eventNames, function(item) {
  194. eventNameMap[item[0]] = item[1];
  195. });
  196. var grid = new Ext.grid.EditorGridPanel({
  197. title: '事件配置',
  198. store: store,
  199. viewConfig: {
  200. forceFit: true
  201. },
  202. columns: [{
  203. header: '事件类型',
  204. dataIndex: 'name',
  205. editor: new Ext.grid.GridEditor(new Ext.ux.TwoCombo({
  206. data: this.eventNames
  207. })),
  208. renderer: function(v) {
  209. return eventNameMap[v];
  210. }
  211. }, {
  212. header: '类名',
  213. dataIndex: 'classname',
  214. editor: new Ext.grid.GridEditor(new Ext.form.TextField())
  215. }],
  216. tbar: [{
  217. text: '添加',
  218. iconCls: 'tb-add',
  219. handler: function() {
  220. var p = new Record({
  221. name: this.eventNames[0][0],
  222. classname: ''
  223. });
  224. this.addRecord(grid, p);
  225. },
  226. scope: this
  227. }, {
  228. text: '删除',
  229. iconCls: 'tb-delete',
  230. handler: function() {
  231. this.removeRecord(grid);
  232. },
  233. scope: this
  234. }]
  235. });
  236. tabPanel.add(grid);
  237. },
  238. getSwimlaneData: function(model) {
  239. var data = [];
  240. var elements = model.dom.getElementsByTagName('swimlane');
  241. Gef.each(elements, function(item) {
  242. data.push({
  243. name: item.getAttribute('name'),
  244. assignee: item.getAttribute('assignee'),
  245. candidateUsers: item.getAttribute('candidate-users'),
  246. candidateGroups: item.getAttribute('candidate-groups'),
  247. description: item.getElementContent('description')
  248. });
  249. });
  250. return data;
  251. },
  252. resetSwimlane: function(tabPanel, model) {
  253. var data = this.getSwimlaneData(model);
  254. var Record = Ext.data.Record.create([
  255. 'name',
  256. 'assignee',
  257. 'candidateUsers',
  258. 'candidateGroups',
  259. 'description'
  260. ]);
  261. var store = new Ext.data.JsonStore({
  262. fields: Record,
  263. data: data,
  264. listeners: {
  265. add: function(store, records, index) {
  266. var record = records[0];
  267. var swimlaneDom = new Gef.model.Dom('swimlane');
  268. swimlaneDom.setAttribute('name', record.get('name'));
  269. swimlaneDom.setAttribute('assignee', record.get('assignee'));
  270. swimlaneDom.setAttribute('candidate-users', record.get('candidateUsers'));
  271. swimlaneDom.setAttribute('candidate-groups', record.get('candidateGroups'));
  272. swimlaneDom.setElementContent('description', record.get('description'));
  273. model.dom.addElement(swimlaneDom);
  274. },
  275. remove: function(store, record, index) {
  276. var elements = model.dom.getElementsByTagName('swimlane');
  277. var element = elements[index];
  278. model.dom.elements.remove(element);
  279. },
  280. update: function(store, record, operation) {
  281. var index = store.indexOf(record);
  282. var elements = model.dom.getElementsByTagName('swimlane');
  283. var element = elements[index];
  284. element.setAttribute('name', record.get('name'));
  285. element.setAttribute('assignee', record.get('assignee'));
  286. element.setAttribute('candidate-users', record.get('candidateUsers'));
  287. element.setAttribute('candidate-groups', record.get('candidateGroups'));
  288. element.setElementContent('description', record.get('description'));
  289. this.commitChanges();
  290. }
  291. }
  292. });
  293. var grid = new Ext.grid.EditorGridPanel({
  294. title: '泳道配置',
  295. store: store,
  296. viewConfig: {
  297. forceFit: true
  298. },
  299. columns: [{
  300. header: '泳道名',
  301. dataIndex: 'name',
  302. editor: new Ext.grid.GridEditor(new Ext.form.TextField())
  303. }, {
  304. header: '分配人',
  305. dataIndex: 'assignee',
  306. editor: new Ext.grid.GridEditor(new Ext.form.TextField())
  307. }, {
  308. header: '候选人',
  309. dataIndex: 'candidateUsers',
  310. editor: new Ext.grid.GridEditor(new Ext.form.TextField())
  311. }, {
  312. header: '候选群组',
  313. dataIndex: 'candidateGroups',
  314. editor: new Ext.grid.GridEditor(new Ext.form.TextField())
  315. }, {
  316. header: '备注',
  317. dataIndex: 'description',
  318. editor: new Ext.grid.GridEditor(new Ext.form.TextField())
  319. }],
  320. tbar: [{
  321. text: '添加',
  322. iconCls: 'tb-add',
  323. handler: function() {
  324. var p = new Record({
  325. name: '',
  326. assignee: '',
  327. candidateUsers: '',
  328. candidateGroups: '',
  329. description: ''
  330. });
  331. this.addRecord(grid, p);
  332. },
  333. scope: this
  334. }, {
  335. text: '删除',
  336. iconCls: 'tb-delete',
  337. handler: function() {
  338. this.removeRecord(grid);
  339. },
  340. scope: this
  341. }]
  342. });
  343. tabPanel.add(grid);
  344. },
  345. getTimerData: function(model) {
  346. var data = [];
  347. var elements = model.dom.getElementsByTagName('on');
  348. Gef.each(elements, function(elem) {
  349. var timerElem = elem.getElementByTagName('timer');
  350. if (!timerElem) {
  351. return true;
  352. }
  353. data.push({
  354. name: elem.getAttribute('event'),
  355. duedate: timerElem.getAttribute('duedate'),
  356. repeat: timerElem.getAttribute('repeat'),
  357. //duedatetime: timerElem.getAttribute('duedatetime'),
  358. classname: elem.getElementAttribute('event-listener', 'class')
  359. });
  360. });
  361. return data;
  362. },
  363. resetTimer: function(tabPanel, model) {
  364. var data = this.getTimerData(model);
  365. var Record = Ext.data.Record.create([
  366. 'name',
  367. 'duedate',
  368. 'repeat',
  369. //'duedatetime',
  370. 'classname'
  371. ]);
  372. var store = new Ext.data.JsonStore({
  373. fields: Record,
  374. data: data,
  375. listeners: {
  376. add: function(store, records, index) {
  377. var record = records[0];
  378. var onDom = new Gef.model.Dom('on');
  379. onDom.setAttribute('event', record.get('name'));
  380. var timerDom = new Gef.model.Dom('timer');
  381. timerDom.setAttribute('duedate', record.get('duedate'));
  382. timerDom.setAttribute('repeat', record.get('repeat'));
  383. //timerDom.setAttribute('duedatetime', record.get('duedatetime'));
  384. onDom.addElement(timerDom);
  385. onDom.setElementAttribute('event-listener', 'class', record.get('classname'));
  386. model.dom.addElement(onDom);
  387. },
  388. remove: function(store, record, index) {
  389. var candidateElements = model.dom.getElementsByTagName('on');
  390. var elements = [];
  391. Gef.each(candidateElements, function(elem) {
  392. var timerElem = elem.getElementByTagName('timer');
  393. if (!timerElem) {
  394. return true;
  395. } else {
  396. elements.push(elem);
  397. }
  398. });
  399. var element = elements[index];
  400. model.dom.elements.remove(element);
  401. },
  402. update: function(store, record, operation) {
  403. var index = store.indexOf(record);
  404. var candidateElements = model.dom.getElementsByTagName('on');
  405. var elements = [];
  406. Gef.each(candidateElements, function(elem) {
  407. var timerElem = elem.getElementByTagName('timer');
  408. if (!timerElem) {
  409. return true;
  410. } else {
  411. elements.push(elem);
  412. }
  413. });
  414. var element = elements[index];
  415. element.setAttribute('event', record.get('name'));
  416. var timerElem = element.getElementByTagName('timer');
  417. timerElem.setAttribute('duedate', record.get('duedate'));
  418. timerElem.setAttribute('repeat', record.get('repeat'));
  419. //element.setAttribute('duedatetime', record.get('duedatetime'));
  420. element.setElementAttribute('event-listener', 'class', record.get('classname'));
  421. element.setElementContent('description', record.get('description'));
  422. this.commitChanges();
  423. }
  424. }
  425. });
  426. var grid = new Ext.grid.EditorGridPanel({
  427. title: '定时器配置',
  428. xtype: 'editorgrid',
  429. store: store,
  430. viewConfig: {
  431. forceFit: true
  432. },
  433. columns: [{
  434. header: '名称',
  435. dataIndex: 'name',
  436. editor: new Ext.grid.GridEditor(new Ext.form.TextField())
  437. }, {
  438. header: '持续日期',
  439. dataIndex: 'duedate',
  440. editor: new Ext.grid.GridEditor(new Ext.form.TextField())
  441. }, {
  442. header: '重复次数',
  443. dataIndex: 'repeat',
  444. editor: new Ext.grid.GridEditor(new Ext.form.TextField())
  445. }, /*{
  446. header: '持续时间',
  447. dataIndex: 'duedatetime',
  448. editor: new Ext.grid.GridEditor(new Ext.form.TextField())
  449. }, */{
  450. header: '监听器类名',
  451. dataIndex: 'classname',
  452. editor: new Ext.grid.GridEditor(new Ext.form.TextField())
  453. }],
  454. tbar: [{
  455. text: '添加',
  456. iconCls: 'tb-add',
  457. handler: function() {
  458. var p = new Record({
  459. name: '',
  460. duedate: '',
  461. repeat: '',
  462. //duedatetime: '',
  463. classname: ''
  464. });
  465. this.addRecord(grid, p);
  466. },
  467. scope: this
  468. }, {
  469. text: '删除',
  470. iconCls: 'tb-delete',
  471. handler: function() {
  472. this.removeRecord(grid);
  473. },
  474. scope: this
  475. }]
  476. });
  477. tabPanel.add(grid);
  478. },
  479. getVariableData: function(model) {
  480. var data = [];
  481. var elements = model.dom.getElementsByTagName('variable');
  482. Gef.each(elements, function(item) {
  483. data.push({
  484. name: item.getAttribute('name'),
  485. type: item.getAttribute('type'),
  486. history: item.getAttribute('history'),
  487. init: item.getAttribute('init')
  488. });
  489. });
  490. return data;
  491. },
  492. resetVariable: function(tabPanel, model) {
  493. var data = this.getVariableData(model);
  494. var Record = Ext.data.Record.create([
  495. 'name',
  496. 'type',
  497. 'history',
  498. 'init'
  499. ]);
  500. var store = new Ext.data.JsonStore({
  501. fields: Record,
  502. data: data,
  503. listeners: {
  504. add: function(store, records, index) {
  505. var record = records[0];
  506. var variableDom = new Gef.model.Dom('variable');
  507. variableDom.setAttribute('name', record.get('duedate'));
  508. variableDom.setAttribute('type', record.get('type'));
  509. variableDom.setAttribute('history', record.get('history'));
  510. variableDom.setAttribute('init', record.get('init'));
  511. model.dom.addElement(variableDom);
  512. },
  513. remove: function(store, record, index) {
  514. var elements = model.dom.getElementsByTagName('variable');
  515. var element = elements[index];
  516. model.dom.elements.remove(element);
  517. },
  518. update: function(store, record, operation) {
  519. var index = store.indexOf(record);
  520. var elements = model.dom.getElementsByTagName('variable');
  521. var element = elements[index];
  522. element.setAttribute('name', record.get('name'));
  523. element.setAttribute('type', record.get('type'));
  524. element.setAttribute('init', record.get('history'));
  525. element.setAttribute('history', record.get('init'));
  526. this.commitChanges();
  527. }
  528. }
  529. });
  530. var grid = new Ext.grid.EditorGridPanel({
  531. title: '变量设置',
  532. store: store,
  533. viewConfig: {
  534. forceFit: true
  535. },
  536. columns: [{
  537. header: '变量名',
  538. dataIndex: 'name',
  539. editor: new Ext.grid.GridEditor(new Ext.form.TextField())
  540. }, {
  541. header: '变量类型',
  542. dataIndex: 'type',
  543. editor: new Ext.grid.GridEditor(new Ext.form.TextField())
  544. }, {
  545. header: '是否保存历史',
  546. dataIndex: 'history',
  547. editor: new Ext.grid.GridEditor(new Ext.ux.OneCombo({
  548. data: ['true', 'false']
  549. }))
  550. }, {
  551. header: '初始值',
  552. dataIndex: 'init',
  553. editor: new Ext.grid.GridEditor(new Ext.form.TextField())
  554. }],
  555. tbar: [{
  556. text: '添加',
  557. iconCls: 'tb-add',
  558. handler: function() {
  559. var p = new Record({
  560. name: '',
  561. type: ''
  562. });
  563. grid.stopEditing();
  564. grid.getStore().insert(0, p);
  565. grid.startEditing(0, 0);
  566. }
  567. }, {
  568. text: '删除',
  569. iconCls: 'tb-delete',
  570. handler: function() {
  571. Ext.Msg.confirm('信息', '确定删除?', function(btn){
  572. if (btn == 'yes') {
  573. var sm = grid.getSelectionModel();
  574. var cell = sm.getSelectedCell();
  575. var record = grid.getStore().getAt(cell[0]);
  576. grid.getStore().remove(record);
  577. }
  578. });
  579. }
  580. }]
  581. });
  582. tabPanel.add(grid);
  583. },
  584. addRecord: function(grid, record) {
  585. grid.stopEditing();
  586. var index = grid.getStore().getCount();
  587. grid.getStore().insert(index, record);
  588. grid.startEditing(index, 0);
  589. },
  590. removeRecord: function(grid) {
  591. Ext.Msg.confirm('信息', '确定删除?', function(btn) {
  592. if (btn != 'yes') {
  593. return;
  594. }
  595. var sm = grid.getSelectionModel();
  596. var cell = sm.getSelectedCell();
  597. var record = grid.getStore().getAt(cell[0]);
  598. grid.getStore().remove(record);
  599. });
  600. }
  601. });
  602. Ext.ns('App.form');
  603. App.form.AutoForm = Ext.extend(App.form.AbstractForm, {
  604. decorate: function(tabPanel, model) {
  605. this.clearItem(tabPanel);
  606. this.resetBasic(tabPanel, model);
  607. this.resetEvent(tabPanel, model);
  608. },
  609. resetBasic: function(tabPanel, model) {
  610. var p = new Ext.form.FormPanel({
  611. title: '基本配置',
  612. labelWidth: 70,
  613. labelAlign: 'right',
  614. border: false,
  615. defaultType: 'textfield',
  616. defaults: {
  617. anchor: '90%'
  618. },
  619. bodyStyle: {
  620. padding: '6px 0 0'
  621. },
  622. items: [{
  623. name: 'name',
  624. fieldLabel: '名称',
  625. value: model.text ? model.text : '',
  626. listeners: {
  627. 'blur': function(field) {
  628. var newValue = field.getValue();
  629. // FIXME: use command
  630. model.text = newValue;
  631. model.editPart.figure.updateAndShowText(newValue);
  632. }
  633. }
  634. }, {
  635. name: 'classname',
  636. fieldLabel: '类名',
  637. value: model.dom.getAttribute('class'),
  638. listeners: {
  639. 'blur': function(field) {
  640. var newValue = field.getValue();
  641. model.dom.setAttribute('class', newValue);
  642. }
  643. }
  644. }, {
  645. name: 'method',
  646. fieldLabel: '方法',
  647. value: model.dom.getAttribute('method'),
  648. listeners: {
  649. 'blur': function(field) {
  650. var newValue = field.getValue();
  651. model.dom.setAttribute('method', newValue);
  652. }
  653. }
  654. }, {
  655. name: 'description',
  656. fieldLabel: '备注',
  657. xtype: 'textarea',
  658. value: model.dom.getElementContent('description'),
  659. listeners: {
  660. 'blur': function(field) {
  661. var newValue = field.getValue();
  662. model.dom.setElementContent('description', newValue);
  663. }
  664. }
  665. }]
  666. });
  667. tabPanel.add(p);
  668. tabPanel.activate(p);
  669. }
  670. });
  671. Ext.ns('App.form');
  672. App.form.CancelForm = Ext.extend(App.form.AbstractForm, {
  673. decorate: function(tabPanel, model) {
  674. this.clearItem(tabPanel);
  675. this.resetBasic(tabPanel, model);
  676. this.resetEvent(tabPanel, model);
  677. },
  678. resetBasic: function(tabPanel, model) {
  679. var p = new Ext.form.FormPanel({
  680. title: '基本配置',
  681. labelWidth: 70,
  682. labelAlign: 'right',
  683. border: false,
  684. defaultType: 'textfield',
  685. defaults: {
  686. anchor: '90%'
  687. },
  688. bodyStyle: {
  689. padding: '6px 0 0'
  690. },
  691. items: [{
  692. name: 'name',
  693. fieldLabel: '名称',
  694. value: model.text ? model.text : '',
  695. listeners: {
  696. 'blur': function(field) {
  697. var newValue = field.getValue();
  698. model.text = newValue;
  699. }
  700. }
  701. }, {
  702. name: 'ends',
  703. fieldLabel: '结束方式',
  704. xtype: 'onecombo',
  705. data: ['processinstance', 'execution'],
  706. value: model.dom.getAttribute('ends'),
  707. listeners: {
  708. 'blur': function(field) {
  709. var newValue = field.getValue();
  710. model.dom.setAttribute('ends', newValue);
  711. }
  712. }
  713. }, {
  714. name: 'description',
  715. fieldLabel: '备注',
  716. xtype: 'textarea',
  717. value: model.dom.getElementContent('description'),
  718. listeners: {
  719. 'blur': function(field) {
  720. var newValue = field.getValue();
  721. model.dom.setElementContent('description', newValue);
  722. }
  723. }
  724. }]
  725. });
  726. tabPanel.add(p);
  727. tabPanel.activate(p);
  728. }
  729. });
  730. Ext.ns('App.form');
  731. App.form.CounterSignForm = Ext.extend(App.form.AbstractForm, {
  732. decorate: function(tabPanel, model) {
  733. this.clearItem(tabPanel);
  734. this.resetBasic(tabPanel, model);
  735. this.resetParticipant(tabPanel, model);
  736. this.resetEvent(tabPanel, model);
  737. },
  738. resetBasic: function(tabPanel, model) {
  739. var p = new Ext.form.FormPanel({
  740. title: '基本配置',
  741. labelWidth: 70,
  742. labelAlign: 'right',
  743. border: false,
  744. defaultType: 'textfield',
  745. defaults: {
  746. anchor: '90%'
  747. },
  748. bodyStyle: {
  749. padding: '6px 0 0'
  750. },
  751. items: [{
  752. name: 'name',
  753. fieldLabel: '名称',
  754. value: model.text ? model.text : '',
  755. listeners: {
  756. 'blur': function(field) {
  757. var newValue = field.getValue();
  758. // FIXME: use command
  759. model.text = newValue;
  760. model.editPart.figure.updateAndShowText(newValue);
  761. //model.dom.setProperty('name', newValue, 'string');
  762. }
  763. }
  764. }, {
  765. name: 'counterSignType',
  766. fieldLabel: '会签方式',
  767. xtype: 'twocombo',
  768. data: [['all', '一票否决'], ['rate', '百分比']],
  769. //value: model.dom.getProperty('form', 'string'),
  770. value: model.dom.getAttribute('counter-sign-type'),
  771. listeners: {
  772. 'select': function(field) {
  773. var newValue = field.getValue();
  774. //model.dom.setProperty('form', newValue, 'string');
  775. model.dom.setAttribute('counter-sign-type', newValue);
  776. if (newValue == 'rate') {
  777. var field = p.getForm().findField('counterSignValue');
  778. field.el.dom.parentNode.parentNode.style.display = '';
  779. } else {
  780. var field = p.getForm().findField('counterSignValue');
  781. field.setValue('');
  782. field.el.dom.parentNode.parentNode.style.display = 'none';
  783. model.dom.removeProperty('counter-sign-value');
  784. }
  785. }
  786. }
  787. }, {
  788. name: 'counterSignValue',
  789. fieldLabel: '会签通过百分比',
  790. //value: model.dom.getProperty('form', 'string'),
  791. value: model.dom.getAttribute('counter-sign-value'),
  792. xtype: 'numberfield',
  793. listeners: {
  794. 'blur': function(field) {
  795. var newValue = field.getValue();
  796. //model.dom.setProperty('form', newValue, 'string');
  797. model.dom.setAttribute('counter-sign-value', newValue);
  798. }
  799. }
  800. }, {
  801. name: 'form',
  802. fieldLabel: '表单',
  803. //value: model.dom.getProperty('form', 'string'),
  804. value: model.dom.getAttribute('form'),
  805. listeners: {
  806. 'blur': function(field) {
  807. var newValue = field.getValue();
  808. //model.dom.setProperty('form', newValue, 'string');
  809. model.dom.setAttribute('form', newValue);
  810. }
  811. }
  812. }, {
  813. name: 'description',
  814. fieldLabel: '备注',
  815. xtype: 'textarea',
  816. value: model.dom.getElementContent('description'),
  817. listeners: {
  818. 'blur': function(field) {
  819. var newValue = field.getValue();
  820. model.dom.setElementContent('description', newValue);
  821. }
  822. }
  823. }]
  824. });
  825. if (model.dom.getAttribute('counter-sign-type') != 'rate') {
  826. var fn = function() {
  827. var field = p.getForm().findField('counterSignValue');
  828. field.el.dom.parentNode.parentNode.style.display = 'none';
  829. p.un('afterlayout', fn);
  830. };
  831. p.on('afterlayout', fn);
  832. }
  833. tabPanel.add(p);
  834. tabPanel.activate(p);
  835. }
  836. });
  837. Ext.ns('App.form');
  838. App.form.CustomForm = Ext.extend(App.form.AbstractForm, {
  839. decorate: function(tabPanel, model) {
  840. this.clearItem(tabPanel);
  841. this.resetBasic(tabPanel, model);
  842. this.resetEvent(tabPanel, model);
  843. },
  844. resetBasic: function(tabPanel, model) {
  845. var p = new Ext.form.FormPanel({
  846. title: '基本配置',
  847. labelWidth: 70,
  848. labelAlign: 'right',
  849. border: false,
  850. defaultType: 'textfield',
  851. defaults: {
  852. anchor: '90%'
  853. },
  854. bodyStyle: {
  855. padding: '6px 0 0'
  856. },
  857. items: [{
  858. name: 'name',
  859. fieldLabel: '名称',
  860. value: model.text ? model.text : '',
  861. listeners: {
  862. 'blur': function(field) {
  863. var newValue = field.getValue();
  864. // FIXME: use command
  865. model.text = newValue;
  866. model.editPart.figure.updateAndShowText(newValue);
  867. }
  868. }
  869. }, {
  870. name: 'classname',
  871. fieldLabel: '类名',
  872. value: model.dom.getAttribute('class'),
  873. listeners: {
  874. 'blur': function(field) {
  875. var newValue = field.getValue();
  876. model.dom.setAttribute('class', newValue);
  877. }
  878. }
  879. }, {
  880. name: 'description',
  881. fieldLabel: '备注',
  882. xtype: 'textarea',
  883. value: model.dom.getElementContent('description'),
  884. listeners: {
  885. 'blur': function(field) {
  886. var newValue = field.getValue();
  887. model.dom.setElementContent('description', newValue);
  888. }
  889. }
  890. }]
  891. });
  892. tabPanel.add(p);
  893. tabPanel.activate(p);
  894. }
  895. });
  896. Ext.ns('App.form');
  897. App.form.DecisionForm = Ext.extend(App.form.AbstractForm, {
  898. decorate: function(tabPanel, model) {
  899. this.clearItem(tabPanel);
  900. this.resetBasic(tabPanel, model);
  901. this.resetEvent(tabPanel, model);
  902. },
  903. resetBasic: function(tabPanel, model) {
  904. var p = new Ext.form.FormPanel({
  905. title: '基本配置',
  906. labelWidth: 70,
  907. labelAlign: 'right',
  908. border: false,
  909. defaultType: 'textfield',
  910. defaults: {
  911. anchor: '90%'
  912. },
  913. bodyStyle: {
  914. padding: '6px 0 0'
  915. },
  916. items: [{
  917. name: 'name',
  918. fieldLabel: '名称',
  919. value: model.text ? model.text : '',
  920. listeners: {
  921. 'blur': function(field) {
  922. var newValue = field.getValue();
  923. model.text = newValue;
  924. }
  925. }
  926. }, {
  927. name: 'expr',
  928. fieldLabel: '表达式',
  929. value: model.dom.getAttribute('expr'),
  930. listeners: {
  931. 'blur': function(field) {
  932. var newValue = field.getValue();
  933. model.dom.setAttribute('expr', newValue);
  934. }
  935. }
  936. }, {
  937. name: 'handler',
  938. fieldLabel: '决策处理器',
  939. value: model.dom.getElementAttribute('handler', 'class'),
  940. listeners: {
  941. 'blur': function(field) {
  942. var newValue = field.getValue();
  943. model.dom.setElementAttribute('handler', 'class', newValue);
  944. }
  945. }
  946. }, {
  947. name: 'description',
  948. fieldLabel: '备注',
  949. xtype: 'textarea',
  950. value: model.dom.getElementContent('description'),
  951. listeners: {
  952. 'blur': function(field) {
  953. var newValue = field.getValue();
  954. model.dom.setElementContent('description', newValue);
  955. }
  956. }
  957. }]
  958. });
  959. tabPanel.add(p);
  960. tabPanel.activate(p);
  961. }
  962. });
  963. Ext.ns('App.form');
  964. App.form.EndForm = Ext.extend(App.form.AbstractForm, {
  965. decorate: function(tabPanel, model) {
  966. this.clearItem(tabPanel);
  967. this.resetBasic(tabPanel, model);
  968. this.resetEvent(tabPanel, model);
  969. },
  970. /**
  971. * 结束*/
  972. resetBasic: function(tabPanel, model) {
  973. var p = new Ext.form.FormPanel({
  974. title: '基本配置',
  975. labelWidth: 70,
  976. labelAlign: 'right',
  977. border: false,
  978. defaultType: 'textfield',
  979. defaults: {
  980. anchor: '90%'
  981. },
  982. bodyStyle: {
  983. padding: '6px 0 0'
  984. },
  985. items: [{
  986. name: 'name',
  987. fieldLabel: '名称',
  988. value: model.text ? model.text : '',
  989. listeners: {
  990. 'blur': function(field) {
  991. var newValue = field.getValue();
  992. model.text = newValue;
  993. }
  994. }
  995. }, {
  996. name: 'ends',
  997. fieldLabel: '结束方式',
  998. xtype: 'onecombo',
  999. data: ['processinstance', 'execution'],
  1000. value: model.dom.getAttribute('ends'),
  1001. listeners: {
  1002. 'blur': function(field) {
  1003. var newValue = field.getValue();
  1004. model.dom.setAttribute('ends', newValue);
  1005. }
  1006. }
  1007. }, {
  1008. name: 'state',
  1009. fieldLabel: '结束状态',
  1010. value: model.dom.getAttribute('state'),
  1011. listeners: {
  1012. 'blur': function(field) {
  1013. var newValue = field.getValue();
  1014. model.dom.setAttribute('state', newValue);
  1015. }
  1016. }
  1017. }, {
  1018. name: 'description',
  1019. fieldLabel: '备注',
  1020. xtype: 'textarea',
  1021. value: model.dom.getElementContent('description'),
  1022. listeners: {
  1023. 'blur': function(field) {
  1024. var newValue = field.getValue();
  1025. model.dom.setElementContent('description', newValue);
  1026. }
  1027. }
  1028. }]
  1029. });
  1030. tabPanel.add(p);
  1031. tabPanel.activate(p);
  1032. }
  1033. });
  1034. Ext.ns('App.form');
  1035. App.form.ErrorForm = Ext.extend(App.form.AbstractForm, {
  1036. decorate: function(tabPanel, model) {
  1037. this.clearItem(tabPanel);
  1038. this.resetBasic(tabPanel, model);
  1039. this.resetEvent(tabPanel, model);
  1040. },
  1041. resetBasic: function(tabPanel, model) {
  1042. var p = new Ext.form.FormPanel({
  1043. title: '基本配置',
  1044. labelWidth: 70,
  1045. labelAlign: 'right',
  1046. border: false,
  1047. defaultType: 'textfield',
  1048. defaults: {
  1049. anchor: '90%'
  1050. },
  1051. bodyStyle: {
  1052. padding: '6px 0 0'
  1053. },
  1054. items: [{
  1055. name: 'name',
  1056. fieldLabel: '名称',
  1057. value: model.text ? model.text : '',
  1058. listeners: {
  1059. 'blur': function(field) {
  1060. var newValue = field.getValue();
  1061. model.text = newValue;
  1062. }
  1063. }
  1064. }, {
  1065. name: 'ends',
  1066. fieldLabel: '结束方式',
  1067. xtype: 'onecombo',
  1068. data: ['processinstance', 'execution'],
  1069. value: model.dom.getAttribute('ends'),
  1070. listeners: {
  1071. 'blur': function(field) {
  1072. var newValue = field.getValue();
  1073. model.dom.setAttribute('ends', newValue);
  1074. }
  1075. }
  1076. }, {
  1077. name: 'description',
  1078. fieldLabel: '备注',
  1079. xtype: 'textarea',
  1080. value: model.dom.getElementContent('description'),
  1081. listeners: {
  1082. 'blur': function(field) {
  1083. var newValue = field.getValue();
  1084. model.dom.setElementContent('description', newValue);
  1085. }
  1086. }
  1087. }]
  1088. });
  1089. tabPanel.add(p);
  1090. tabPanel.activate(p);
  1091. }
  1092. });
  1093. Ext.ns('App.form');
  1094. App.form.ForeachForm = Ext.extend(App.form.AbstractForm, {
  1095. decorate: function(tabPanel, model) {
  1096. this.clearItem(tabPanel);
  1097. this.resetBasic(tabPanel, model);
  1098. this.resetEvent(tabPanel, model);
  1099. },
  1100. resetBasic: function(tabPanel, model) {
  1101. var p = new Ext.form.FormPanel({
  1102. title: '基本配置',
  1103. labelWidth: 70,
  1104. labelAlign: 'right',
  1105. border: false,
  1106. defaultType: 'textfield',
  1107. defaults: {
  1108. anchor: '90%'
  1109. },
  1110. bodyStyle: {
  1111. padding: '6px 0 0'
  1112. },
  1113. items: [{
  1114. name: 'name',
  1115. fieldLabel: '名称',
  1116. value: model.text ? model.text : '',
  1117. listeners: {
  1118. 'blur': function(field) {
  1119. var newValue = field.getValue();
  1120. model.text = newValue;
  1121. }
  1122. }
  1123. }, {
  1124. name: 'var',
  1125. fieldLabel: '变量',
  1126. value: model.dom.getAttribute('var'),
  1127. listeners: {
  1128. 'blur': function(field) {
  1129. var newValue = field.getValue();
  1130. model.dom.setAttribute('var', newValue);
  1131. }
  1132. }
  1133. }, {
  1134. name: 'in',
  1135. fieldLabel: '集合',
  1136. value: model.dom.getAttribute('in'),
  1137. listeners: {
  1138. 'blur': function(field) {
  1139. var newValue = field.getValue();
  1140. model.dom.setAttribute('in', newValue);
  1141. }
  1142. }
  1143. }, {
  1144. name: 'description',
  1145. fieldLabel: '备注',
  1146. xtype: 'textarea',
  1147. value: model.dom.getElementContent('description'),
  1148. listeners: {
  1149. 'blur': function(field) {
  1150. var newValue = field.getValue();
  1151. model.dom.setElementContent('description', newValue);
  1152. }
  1153. }
  1154. }]
  1155. });
  1156. tabPanel.add(p);
  1157. tabPanel.activate(p);
  1158. }
  1159. });
  1160. Ext.ns('App.form');
  1161. App.form.ForkForm = Ext.extend(App.form.AbstractForm, {
  1162. decorate: function(tabPanel, model) {
  1163. this.clearItem(tabPanel);
  1164. this.resetBasic(tabPanel, model);
  1165. this.resetEvent(tabPanel, model);
  1166. },
  1167. resetBasic: function(tabPanel, model) {
  1168. var p = new Ext.form.FormPanel({
  1169. title: '基本配置',
  1170. labelWidth: 70,
  1171. labelAlign: 'right',
  1172. border: false,
  1173. defaultType: 'textfield',
  1174. defaults: {
  1175. anchor: '90%'
  1176. },
  1177. bodyStyle: {
  1178. padding: '6px 0 0'
  1179. },
  1180. items: [{
  1181. name: 'name',
  1182. fieldLabel: '名称',
  1183. value: model.text ? model.text : '',
  1184. listeners: {
  1185. 'blur': function(field) {
  1186. var newValue = field.getValue();
  1187. model.text = newValue;
  1188. }
  1189. }
  1190. }/**, {
  1191. name: 'description',
  1192. fieldLabel: '备注',
  1193. xtype: 'textarea',
  1194. value: model.dom.getElementContent('description'),
  1195. listeners: {
  1196. 'blur': function(field) {
  1197. var newValue = field.getValue();
  1198. model.dom.setElementContent('description', newValue);
  1199. }
  1200. }
  1201. }**/]
  1202. });
  1203. tabPanel.add(p);
  1204. tabPanel.activate(p);
  1205. }
  1206. });
  1207. Ext.ns('App.form');
  1208. App.form.HqlForm = Ext.extend(App.form.AbstractForm, {
  1209. decorate: function(tabPanel, model) {
  1210. this.clearItem(tabPanel);
  1211. this.resetBasic(tabPanel, model);
  1212. this.resetEvent(tabPanel, model);
  1213. },
  1214. resetBasic: function(tabPanel, model) {
  1215. var p = new Ext.form.FormPanel({
  1216. title: '基本配置',
  1217. labelWidth: 70,
  1218. labelAlign: 'right',
  1219. border: false,
  1220. defaultType: 'textfield',
  1221. defaults: {
  1222. anchor: '90%'
  1223. },
  1224. bodyStyle: {
  1225. padding: '6px 0 0'
  1226. },
  1227. items: [{
  1228. name: 'name',
  1229. fieldLabel: '名称',
  1230. value: model.text ? model.text : '',
  1231. listeners: {
  1232. 'blur': function(field) {
  1233. var newValue = field.getValue();
  1234. // FIXME: use command
  1235. model.text = newValue;
  1236. model.editPart.figure.updateAndShowText(newValue);
  1237. }
  1238. }
  1239. }, {
  1240. name: 'var',
  1241. fieldLabel: '变量',
  1242. value: model.dom.getAttribute('var'),
  1243. listeners: {
  1244. 'blur': function(field) {
  1245. var newValue = field.getValue();
  1246. model.dom.setAttribute('var', newValue);
  1247. }
  1248. }
  1249. }, {
  1250. name: 'unique',
  1251. fieldLabel: '是否唯一',
  1252. value: model.dom.getAttribute('unique'),
  1253. listeners: {
  1254. 'blur': function(field) {
  1255. var newValue = field.getValue();
  1256. model.dom.setAttribute('unique', newValue);
  1257. }
  1258. }
  1259. }, {
  1260. name: 'query',
  1261. fieldLabel: '查询语句',
  1262. value: model.dom.setElementContent('query'),
  1263. listeners: {
  1264. 'blur': function(field) {
  1265. var newValue = field.getValue();
  1266. model.dom.setElementContent('query', newValue);
  1267. }
  1268. }
  1269. }, {
  1270. name: 'description',
  1271. fieldLabel: '备注',
  1272. xtype: 'textarea',
  1273. value: model.dom.getElementContent('description'),
  1274. listeners: {
  1275. 'blur': function(field) {
  1276. var newValue = field.getValue();
  1277. model.dom.setElementContent('description', newValue);
  1278. }
  1279. }
  1280. }]
  1281. });
  1282. tabPanel.add(p);
  1283. tabPanel.activate(p);
  1284. }
  1285. });
  1286. Ext.ns('App.form');
  1287. App.form.HumanForm = Ext.extend(App.form.AbstractForm, {
  1288. assigneeXtype: 'orgfield',
  1289. decorate: function(tabPanel, model) {
  1290. alert("decorate...");
  1291. alert(tabPanel);
  1292. this.clearItem(tabPanel);
  1293. this.resetBasic(tabPanel, model);
  1294. this.resetParticipant(tabPanel, model);
  1295. this.resetEvent(tabPanel, model);
  1296. },
  1297. resetBasic: function(tabPanel, model) {
  1298. alert("resetBasic.....");
  1299. var p = new Ext.form.FormPanel({
  1300. title: '基本配置',
  1301. labelWidth: 70,
  1302. labelAlign: 'right',
  1303. border: false,
  1304. defaultType: 'textfield',
  1305. defaults: {
  1306. anchor: '90%'
  1307. },
  1308. bodyStyle: {
  1309. padding: '6px 0 0'
  1310. },
  1311. items: [{
  1312. name: 'name',
  1313. fieldLabel: '名称',
  1314. value: model.text ? model.text : '',
  1315. listeners: {
  1316. 'blur': function(field) {
  1317. var newValue = field.getValue();
  1318. // FIXME: use command
  1319. model.text = newValue;
  1320. model.editPart.figure.updateAndShowText(newValue);
  1321. }
  1322. }
  1323. }, {
  1324. name: 'form',
  1325. fieldLabel: '表单',
  1326. value: model.dom.getAttribute('form'),
  1327. listeners: {
  1328. 'blur': function(field) {
  1329. var newValue = field.getValue();
  1330. model.dom.setAttribute('form', newValue);
  1331. }
  1332. }
  1333. }, {
  1334. name: 'assignee',
  1335. xtype: this.assigneeXtype,
  1336. fieldLabel: '分配人',
  1337. value: model.dom.getAttribute('assignee'),
  1338. listeners: {
  1339. 'select': function(field) {
  1340. var newValue = field.getValue();
  1341. model.dom.setAttribute('assignee', newValue);
  1342. }
  1343. }
  1344. }, {
  1345. name: 'duedate',
  1346. fieldLabel: '任务时限',
  1347. value: model.dom.getAttribute('duedate'),
  1348. listeners: {
  1349. 'blur': function(field) {
  1350. var newValue = field.getValue();
  1351. model.dom.setAttribute('duedate', newValue);
  1352. }
  1353. }
  1354. }, {
  1355. name: 'timeoutType',
  1356. fieldLabel: '超时处理方式',
  1357. value: model.dom.getAttribute('timeout-type'),
  1358. xtype: 'onecombo',
  1359. data: ['message', 'continue', 'end'],
  1360. listeners: {
  1361. 'blur': function(field) {
  1362. var newValue = field.getValue();
  1363. model.dom.setAttribute('timeout-type', newValue);
  1364. }
  1365. }
  1366. },/* {
  1367. name: 'swimlaneName',
  1368. fieldLabel: '泳道',
  1369. value: model.dom.getProperty('swimlaneName', 'string'),
  1370. listeners: {
  1371. 'blur': function(field) {
  1372. var newValue = field.getValue();
  1373. model.dom.setProperty('swimlaneName', newValue, 'string');
  1374. }
  1375. }
  1376. },*/ {
  1377. name: 'description',
  1378. fieldLabel: '备注',
  1379. xtype: 'textarea',
  1380. value: model.dom.getElementContent('description'),
  1381. listeners: {
  1382. 'blur': function(field) {
  1383. var newValue = field.getValue();
  1384. model.dom.setElementContent('description', newValue);
  1385. }
  1386. }
  1387. }]
  1388. });
  1389. tabPanel.add(p);
  1390. tabPanel.activate(p);
  1391. }
  1392. });
  1393. Ext.ns('App.form');
  1394. App.form.JavaForm = Ext.extend(App.form.AbstractForm, {
  1395. decorate: function(tabPanel, model) {
  1396. this.clearItem(tabPanel);
  1397. this.resetBasic(tabPanel, model);
  1398. this.resetEvent(tabPanel, model);
  1399. },
  1400. resetBasic: function(tabPanel, model) {
  1401. var p = new Ext.form.FormPanel({
  1402. title: '基本配置',
  1403. labelWidth: 70,
  1404. labelAlign: 'right',
  1405. border: false,
  1406. defaultType: 'textfield',
  1407. defaults: {
  1408. anchor: '90%'
  1409. },
  1410. bodyStyle: {
  1411. padding: '6px 0 0'
  1412. },
  1413. items: [{
  1414. name: 'name',
  1415. fieldLabel: '名称',
  1416. value: model.text ? model.text : '',
  1417. listeners: {
  1418. 'blur': function(field) {
  1419. var newValue = field.getValue();
  1420. // FIXME: use command
  1421. model.text = newValue;
  1422. model.editPart.figure.updateAndShowText(newValue);
  1423. }
  1424. }
  1425. }, {
  1426. name: 'classname',
  1427. fieldLabel: '类名',
  1428. value: model.dom.getAttribute('class'),
  1429. listeners: {
  1430. 'blur': function(field) {
  1431. var newValue = field.getValue();
  1432. model.dom.setAttribute('class', newValue);
  1433. }
  1434. }
  1435. }, {
  1436. name: 'method',
  1437. fieldLabel: '方法',
  1438. value: model.dom.getAttribute('method'),
  1439. listeners: {
  1440. 'blur': function(field) {
  1441. var newValue = field.getValue();
  1442. model.dom.setAttribute('method', newValue);
  1443. }
  1444. }
  1445. }, {
  1446. name: 'description',
  1447. fieldLabel: '备注',
  1448. xtype: 'textarea',
  1449. value: model.dom.getElementContent('description'),
  1450. listeners: {
  1451. 'blur': function(field) {
  1452. var newValue = field.getValue();
  1453. model.dom.setElementContent('description', newValue);
  1454. }
  1455. }
  1456. }]
  1457. });
  1458. tabPanel.add(p);
  1459. tabPanel.activate(p);
  1460. }
  1461. });
  1462. Ext.ns('App.form');
  1463. App.form.JmsForm = Ext.extend(App.form.AbstractForm, {
  1464. decorate: function(tabPanel, model) {
  1465. this.clearItem(tabPanel);
  1466. this.resetBasic(tabPanel, model);
  1467. this.resetEvent(tabPanel, model);
  1468. },
  1469. resetBasic: function(tabPanel, model) {
  1470. var p = new Ext.form.FormPanel({
  1471. title: '基本配置',
  1472. labelWidth: 70,
  1473. labelAlign: 'right',
  1474. border: false,
  1475. defaultType: 'textfield',
  1476. defaults: {
  1477. anchor: '90%'
  1478. },
  1479. bodyStyle: {
  1480. padding: '6px 0 0'
  1481. },
  1482. items: [{
  1483. name: 'name',
  1484. fieldLabel: '名称',
  1485. value: model.text ? model.text : '',
  1486. listeners: {
  1487. 'blur': function(field) {
  1488. var newValue = field.getValue();
  1489. // FIXME: use command
  1490. model.text = newValue;
  1491. model.editPart.figure.updateAndShowText(newValue);
  1492. }
  1493. }
  1494. }, {
  1495. name: 'connectionFactory',
  1496. fieldLabel: '连接工厂',
  1497. value: model.dom.getAttribute('connection-factory'),
  1498. listeners: {
  1499. 'blur': function(field) {
  1500. var newValue = field.getValue();
  1501. model.dom.setAttribute('connection-factory', newValue);
  1502. }
  1503. }
  1504. }, {
  1505. name: 'destination',
  1506. fieldLabel: '消息目标',
  1507. value: model.dom.getAttribute('destination'),
  1508. listeners: {
  1509. 'blur': function(field) {
  1510. var newValue = field.getValue();
  1511. model.dom.setAttribute('destination', newValue);
  1512. }
  1513. }
  1514. }, {
  1515. name: 'transacted',
  1516. fieldLabel: '事务性',
  1517. xtype: 'onecombo',
  1518. data: ['true', 'false'],
  1519. value: model.dom.getAttribute('transacted'),
  1520. listeners: {
  1521. 'blur': function(field) {
  1522. var newValue = field.getValue();
  1523. model.dom.setAttribute('transacted', newValue);
  1524. }
  1525. }
  1526. }, {
  1527. name: 'acknowledge',
  1528. fieldLabel: '提醒方式',
  1529. xtype: 'onecombo',
  1530. data: ['auto', 'client', 'dups-ok'],
  1531. value: model.dom.getAttribute('acknowledge'),
  1532. listeners: {
  1533. 'blur': function(field) {
  1534. var newValue = field.getValue();
  1535. model.dom.setAttribute('acknowledge', newValue);
  1536. }
  1537. }
  1538. }, {
  1539. name: 'textObject',
  1540. fieldLabel: '内容',
  1541. xtype: 'textarea',
  1542. value: model.dom.getElementContent('text'),
  1543. listeners: {
  1544. 'blur': function(field) {
  1545. var newValue = field.getValue();
  1546. model.dom.setElementContent('text', newValue);
  1547. }
  1548. }
  1549. }, {
  1550. name: 'description',
  1551. fieldLabel: '备注',
  1552. xtype: 'textarea',
  1553. value: model.dom.getElementContent('description'),
  1554. listeners: {
  1555. 'blur': function(field) {
  1556. var newValue = field.getValue();
  1557. model.dom.setElementContent('description', newValue);
  1558. }
  1559. }
  1560. }]
  1561. });
  1562. tabPanel.add(p);
  1563. tabPanel.activate(p);
  1564. }
  1565. });
  1566. Ext.ns('App.form');
  1567. App.form.JoinForm = Ext.extend(App.form.AbstractForm, {
  1568. decorate: function(tabPanel, model) {
  1569. this.clearItem(tabPanel);
  1570. this.resetBasic(tabPanel, model);
  1571. this.resetEvent(tabPanel, model);
  1572. },
  1573. resetBasic: function(tabPanel, model) {
  1574. var p = new Ext.form.FormPanel({
  1575. title: '基本配置',
  1576. labelWidth: 70,
  1577. labelAlign: 'right',
  1578. border: false,
  1579. defaultType: 'textfield',
  1580. defaults: {
  1581. anchor: '90%'
  1582. },
  1583. bodyStyle: {
  1584. padding: '6px 0 0'
  1585. },
  1586. items: [{
  1587. name: 'name',
  1588. fieldLabel: '名称',
  1589. value: model.text ? model.text : '',
  1590. listeners: {
  1591. 'blur': function(field) {
  1592. var newValue = field.getValue();
  1593. model.text = newValue;
  1594. }
  1595. }
  1596. }, {
  1597. name: 'multiplicity',
  1598. fieldLabel: '汇聚数目',
  1599. value: model.dom.getAttribute('multiplicity'),
  1600. xtype: 'numberfield',
  1601. listeners: {
  1602. 'blur': function(field) {
  1603. var newValue = field.getValue();
  1604. model.dom.setAttribute('multiplicity', newValue);
  1605. }
  1606. }
  1607. }, {
  1608. name: 'lockmode',
  1609. fieldLabel: '锁定模式',
  1610. xtype: 'onecombo',
  1611. data: ['none', 'read', 'upgrade', 'upgrade_nowait', 'write'],
  1612. value: model.dom.getAttribute('lockmode'),
  1613. listeners: {
  1614. 'blur': function(field) {
  1615. var newValue = field.getValue();
  1616. model.dom.setAttribute('lockmode', newValue);
  1617. }
  1618. }
  1619. }, {
  1620. name: 'description',
  1621. fieldLabel: '备注',
  1622. xtype: 'textarea',
  1623. value: model.dom.getElementContent('description'),
  1624. listeners: {
  1625. 'blur': function(field) {
  1626. var newValue = field.getValue();
  1627. model.dom.setElementContent('description', newValue);
  1628. }
  1629. }
  1630. }]
  1631. });
  1632. tabPanel.add(p);
  1633. tabPanel.activate(p);
  1634. }
  1635. });
  1636. Ext.ns('App.form');
  1637. App.form.MailForm = Ext.extend(App.form.AbstractForm, {
  1638. decorate: function(tabPanel, model) {
  1639. this.clearItem(tabPanel);
  1640. this.resetBasic(tabPanel, model);
  1641. this.resetEvent(tabPanel, model);
  1642. },
  1643. resetBasic: function(tabPanel, model) {
  1644. var p = new Ext.form.FormPanel({
  1645. title: '基本配置',
  1646. labelWidth: 70,
  1647. labelAlign: 'right',
  1648. border: false,
  1649. defaultType: 'textfield',
  1650. defaults: {
  1651. anchor: '90%'
  1652. },
  1653. bodyStyle: {
  1654. padding: '6px 0 0'
  1655. },
  1656. items: [{
  1657. name: 'name',
  1658. fieldLabel: '名称',
  1659. value: model.text ? model.text : '',
  1660. listeners: {
  1661. 'blur': function(field) {
  1662. var newValue = field.getValue();
  1663. // FIXME: use command
  1664. model.text = newValue;
  1665. model.editPart.figure.updateAndShowText(newValue);
  1666. }
  1667. }
  1668. }, {
  1669. name: 'template',
  1670. fieldLabel: '模板',
  1671. value: model.dom.getAttribute('template'),
  1672. listeners: {
  1673. 'blur': function(field) {
  1674. var newValue = field.getValue();
  1675. model.dom.setAttribute('template', newValue);
  1676. }
  1677. }
  1678. }, {
  1679. name: 'from',
  1680. fieldLabel: '发信人',
  1681. value: model.dom.getElementContent('from'),
  1682. listeners: {
  1683. 'blur': function(field) {
  1684. var newValue = field.getValue();
  1685. model.dom.setElementContent('from', newValue);
  1686. }
  1687. }
  1688. }, {
  1689. name: 'to',
  1690. fieldLabel: '收信人',
  1691. value: model.dom.getElementContent('to'),
  1692. listeners: {
  1693. 'blur': function(field) {
  1694. var newValue = field.getValue();
  1695. model.dom.setElementContent('to', newValue);
  1696. }
  1697. }
  1698. }, {
  1699. name: 'subject',
  1700. fieldLabel: '标题',
  1701. value: model.dom.getElementContent('subject'),
  1702. listeners: {
  1703. 'blur': function(field) {
  1704. var newValue = field.getValue();
  1705. model.dom.setElementContent('subject', newValue);
  1706. }
  1707. }
  1708. }, {
  1709. name: 'content',
  1710. fieldLabel: '内容',
  1711. value: model.dom.getElementContent('html'),
  1712. xtype: 'htmleditor',
  1713. listeners: {
  1714. 'sync': function(field, newValue) {
  1715. model.dom.setElementContent('html', newValue);
  1716. }
  1717. }
  1718. }, {
  1719. name: 'description',
  1720. fieldLabel: '备注',
  1721. value: model.dom.getElementContent('description'),
  1722. listeners: {
  1723. 'blur': function(field) {
  1724. var newValue = field.getValue();
  1725. model.dom.setElementContent('description', newValue);
  1726. }
  1727. }
  1728. }]
  1729. });
  1730. tabPanel.add(p);
  1731. tabPanel.activate(p);
  1732. }
  1733. });
  1734. App.form.ProcessForm = Ext.extend(App.form.AbstractForm, {
  1735. decorate: function(tabPanel, model) {
  1736. this.clearItem(tabPanel);
  1737. this.resetBasic(tabPanel, model);
  1738. this.resetEvent(tabPanel, model);
  1739. this.resetSwimlane(tabPanel, model);
  1740. this.resetTimer(tabPanel, model);
  1741. },
  1742. resetBasic: function(tabPanel, model) {
  1743. var p = new Ext.form.FormPanel({
  1744. title: '基本配置',
  1745. labelWidth: 70,
  1746. labelAlign: 'right',
  1747. border: false,
  1748. defaultType: 'textfield',
  1749. defaults: {
  1750. anchor: '90%'
  1751. },
  1752. bodyStyle: {
  1753. padding: '6px 0 0'
  1754. },
  1755. items: [{
  1756. name: 'procCatId',
  1757. fieldLabel: '业务目录',
  1758. value: model.procCatName ? model.procCatName : '',
  1759. allowBlank: false,
  1760. xtype: 'treefield',
  1761. treeConfig: {
  1762. title: '业务目录',
  1763. dataTag: '../console/proccat!getEditTree.do',
  1764. hiddenId: 'processCatalogId',
  1765. hiddenName: 'procCatId',
  1766. handler: function(picker, node) {
  1767. var form = p.getForm();
  1768. var field = form.findField("procCatId");
  1769. field.setValue(node.attributes.dbid);
  1770. field.setRawValue(node.text);
  1771. this.procCatId = node.attributes.dbid;
  1772. model.procCatId = this.procCatId;
  1773. model.procCatName = node.text;
  1774. },
  1775. scope: this
  1776. }
  1777. }, {
  1778. name: 'procDefName',
  1779. fieldLabel: '流程名称',
  1780. value: model.procDefName ? model.procDefName : '',
  1781. xtype: 'combo',
  1782. displayField: 'name',
  1783. valueField: 'name',
  1784. triggerAction: 'all',
  1785. store: new Ext.data.Store({
  1786. url: '../console/procver!getProcDefByProcCat.do',
  1787. reader: new Ext.data.JsonReader({
  1788. root: ''
  1789. }, ['id', 'name', 'code']),
  1790. listeners: {
  1791. beforeload: function() {
  1792. var form = p.getForm();
  1793. var field = form.findField("procDefName");
  1794. field.store.baseParams.procCatId = this.procCatId;
  1795. },
  1796. scope: this
  1797. }
  1798. }),
  1799. listeners: {
  1800. select: function(combo, record) {
  1801. var form = p.getForm();
  1802. this.procDefId = record.get('id');
  1803. form.findField('procDefCode').setValue(record.get('code'));
  1804. model.procDefId = record.get('id');
  1805. model.procDefCode = record.get('code');
  1806. },
  1807. scope: this
  1808. }
  1809. }, {
  1810. name: 'pr_caller',
  1811. fieldLabel: '关联表单(caller)',
  1812. value: model.procDefCode ? model.procDefCode : '',
  1813. listeners: {
  1814. 'blur': function(field) {
  1815. var newValue = field.getValue();
  1816. model.procDefCode = newValue;
  1817. }
  1818. }
  1819. }, {
  1820. name: 'procVerName',
  1821. fieldLabel: '版本号',
  1822. value: model.procVerName ? model.procVerName : '',
  1823. xtype: 'combo',
  1824. displayField: 'name',
  1825. valueField: 'name',
  1826. triggerAction: 'all',
  1827. store: new Ext.data.Store({
  1828. url: '../console/procver!getProcVerByProcDef.do',
  1829. reader: new Ext.data.JsonReader({
  1830. root: ''
  1831. }, ['name']),
  1832. listeners: {
  1833. beforeload: function() {
  1834. var form = p.getForm();
  1835. var field = form.findField("procVerName");
  1836. field.store.baseParams.procDefId = this.procDefId;
  1837. },
  1838. scope: this
  1839. }
  1840. }),
  1841. listeners: {
  1842. 'blur': function(field) {
  1843. var newValue = field.getValue();
  1844. model.procVerName = newValue;
  1845. }
  1846. }
  1847. }, {
  1848. name: 'descn',
  1849. fieldLabel: '备注',
  1850. xtype: 'textarea',
  1851. value: model.dom.getElementContent('description'),
  1852. listeners: {
  1853. 'blur': function(field) {
  1854. var newValue = field.getValue();
  1855. model.dom.setElementContent('description', newValue);
  1856. }
  1857. }
  1858. }]
  1859. });
  1860. tabPanel.add(p);
  1861. tabPanel.activate(p);
  1862. }
  1863. });
  1864. Ext.ns('App.form');
  1865. App.form.RuleDecisionForm = Ext.extend(App.form.AbstractForm, {
  1866. decorate: function(tabPanel, model) {
  1867. this.clearItem(tabPanel);
  1868. this.resetBasic(tabPanel, model);
  1869. this.resetEvent(tabPanel, model);
  1870. },
  1871. resetBasic: function(tabPanel, model) {
  1872. var p = new Ext.form.FormPanel({
  1873. title: '基本配置',
  1874. labelWidth: 70,
  1875. labelAlign: 'right',
  1876. border: false,
  1877. defaultType: 'textfield',
  1878. defaults: {
  1879. anchor: '90%'
  1880. },
  1881. bodyStyle: {
  1882. padding: '6px 0 0'
  1883. },
  1884. items: [{
  1885. name: 'name',
  1886. fieldLabel: '名称',
  1887. value: model.text ? model.text : '',
  1888. listeners: {
  1889. 'blur': function(field) {
  1890. var newValue = field.getValue();
  1891. model.text = newValue;
  1892. }
  1893. }
  1894. }, {
  1895. name: 'description',
  1896. fieldLabel: '备注',
  1897. xtype: 'textarea',
  1898. value: model.dom.getElementContent('description'),
  1899. listeners: {
  1900. 'blur': function(field) {
  1901. var newValue = field.getValue();
  1902. model.dom.setElementContent('description', newValue);
  1903. }
  1904. }
  1905. }]
  1906. });
  1907. tabPanel.add(p);
  1908. tabPanel.activate(p);
  1909. }
  1910. });
  1911. Ext.ns('App.form');
  1912. App.form.RulesForm = Ext.extend(App.form.AbstractForm, {
  1913. decorate: function(tabPanel, model) {
  1914. this.clearItem(tabPanel);
  1915. this.resetBasic(tabPanel, model);
  1916. this.resetEvent(tabPanel, model);
  1917. },
  1918. resetBasic: function(tabPanel, model) {
  1919. var p = new Ext.form.FormPanel({
  1920. title: '基本配置',
  1921. labelWidth: 70,
  1922. labelAlign: 'right',
  1923. border: false,
  1924. defaultType: 'textfield',
  1925. defaults: {
  1926. anchor: '90%'
  1927. },
  1928. bodyStyle: {
  1929. padding: '6px 0 0'
  1930. },
  1931. items: [{
  1932. name: 'name',
  1933. fieldLabel: '名称',
  1934. value: model.text ? model.text : '',
  1935. listeners: {
  1936. 'blur': function(field) {
  1937. var newValue = field.getValue();
  1938. // FIXME: use command
  1939. model.text = newValue;
  1940. model.editPart.figure.updateAndShowText(newValue);
  1941. }
  1942. }
  1943. }, {
  1944. name: 'factVar',
  1945. fieldLabel: '变量',
  1946. value: model.dom.getElementAttribute('fact', 'var'),
  1947. listeners: {
  1948. 'blur': function(field) {
  1949. var newValue = field.getValue();
  1950. model.dom.setElementAttribute('fact', 'var', newValue);
  1951. }
  1952. }
  1953. }, {
  1954. name: 'factExpr',
  1955. fieldLabel: '表达式',
  1956. value: model.dom.getElementAttribute('fact', 'expr'),
  1957. listeners: {
  1958. 'blur': function(field) {
  1959. var newValue = field.getValue();
  1960. model.dom.setElementAttribute('fact', 'expr', newValue);
  1961. }
  1962. }
  1963. }, {
  1964. name: 'description',
  1965. fieldLabel: '备注',
  1966. xtype: 'textarea',
  1967. value: model.dom.getElementContent('description'),
  1968. listeners: {
  1969. 'blur': function(field) {
  1970. var newValue = field.getValue();
  1971. model.dom.setElementContent('description', newValue);
  1972. }
  1973. }
  1974. }]
  1975. });
  1976. tabPanel.add(p);
  1977. tabPanel.activate(p);
  1978. }
  1979. });
  1980. Ext.ns('App.form');
  1981. App.form.ScriptForm = Ext.extend(App.form.AbstractForm, {
  1982. decorate: function(tabPanel, model) {
  1983. this.clearItem(tabPanel);
  1984. this.resetBasic(tabPanel, model);
  1985. this.resetEvent(tabPanel, model);
  1986. },
  1987. resetBasic: function(tabPanel, model) {
  1988. var p = new Ext.form.FormPanel({
  1989. title: '基本配置',
  1990. labelWidth: 70,
  1991. labelAlign: 'right',
  1992. border: false,
  1993. defaultType: 'textfield',
  1994. defaults: {
  1995. anchor: '90%'
  1996. },
  1997. bodyStyle: {
  1998. padding: '6px 0 0'
  1999. },
  2000. items: [{
  2001. name: 'name',
  2002. fieldLabel: '名称',
  2003. value: model.text ? model.text : '',
  2004. listeners: {
  2005. 'blur': function(field) {
  2006. var newValue = field.getValue();
  2007. // FIXME: use command
  2008. model.text = newValue;
  2009. model.editPart.figure.updateAndShowText(newValue);
  2010. }
  2011. }
  2012. }, {
  2013. name: 'expr',
  2014. fieldLabel: '表达式',
  2015. value: model.dom.getAttribute('expr'),
  2016. listeners: {
  2017. 'blur': function(field) {
  2018. var newValue = field.getValue();
  2019. model.dom.setAttribute('expr', newValue);
  2020. }
  2021. }
  2022. }, {
  2023. name: 'lang',
  2024. fieldLabel: '脚本语言',
  2025. value: model.dom.getAttribute('lang'),
  2026. listeners: {
  2027. 'blur': function(field) {
  2028. var newValue = field.getValue();
  2029. model.dom.setAttribute('lang', newValue);
  2030. }
  2031. }
  2032. }, {
  2033. name: 'description',
  2034. fieldLabel: '备注',
  2035. xtype: 'textarea',
  2036. value: model.dom.getElementContent('description'),
  2037. listeners: {
  2038. 'blur': function(field) {
  2039. var newValue = field.getValue();
  2040. model.dom.setElementContent('description', newValue);
  2041. }
  2042. }
  2043. }]
  2044. });
  2045. tabPanel.add(p);
  2046. tabPanel.activate(p);
  2047. }
  2048. });
  2049. Ext.ns('App.form');
  2050. App.form.SqlForm = Ext.extend(App.form.AbstractForm, {
  2051. decorate: function(tabPanel, model) {
  2052. this.clearItem(tabPanel);
  2053. this.resetBasic(tabPanel, model);
  2054. this.resetEvent(tabPanel, model);
  2055. },
  2056. resetBasic: function(tabPanel, model) {
  2057. var p = new Ext.form.FormPanel({
  2058. title: '基本配置',
  2059. labelWidth: 70,
  2060. labelAlign: 'right',
  2061. border: false,
  2062. defaultType: 'textfield',
  2063. defaults: {
  2064. anchor: '90%'
  2065. },
  2066. bodyStyle: {
  2067. padding: '6px 0 0'
  2068. },
  2069. items: [{
  2070. name: 'name',
  2071. fieldLabel: '名称',
  2072. value: model.text ? model.text : '',
  2073. listeners: {
  2074. 'blur': function(field) {
  2075. var newValue = field.getValue();
  2076. // FIXME: use command
  2077. model.text = newValue;
  2078. model.editPart.figure.updateAndShowText(newValue);
  2079. }
  2080. }
  2081. }, {
  2082. name: 'var',
  2083. fieldLabel: '变量',
  2084. value: model.dom.getAttribute('var'),
  2085. listeners: {
  2086. 'blur': function(field) {
  2087. var newValue = field.getValue();
  2088. model.dom.setAttribute('var', newValue);
  2089. }
  2090. }
  2091. }, {
  2092. name: 'unique',
  2093. fieldLabel: '是否唯一',
  2094. value: model.dom.getAttribute('unique'),
  2095. listeners: {
  2096. 'blur': function(field) {
  2097. var newValue = field.getValue();
  2098. model.dom.setAttribute('unique', newValue);
  2099. }
  2100. }
  2101. }, {
  2102. name: 'query',
  2103. fieldLabel: '查询语句',
  2104. value: model.dom.getElementContent('query'),
  2105. listeners: {
  2106. 'blur': function(field) {
  2107. var newValue = field.getValue();
  2108. model.dom.setElementContent('query', newValue);
  2109. }
  2110. }
  2111. }, {
  2112. name: 'description',
  2113. fieldLabel: '备注',
  2114. xtype: 'textarea',
  2115. value: model.dom.getElementContent('description'),
  2116. listeners: {
  2117. 'blur': function(field) {
  2118. var newValue = field.getValue();
  2119. model.dom.setElementContent('description', newValue);
  2120. }
  2121. }
  2122. }]
  2123. });
  2124. tabPanel.add(p);
  2125. tabPanel.activate(p);
  2126. }
  2127. });
  2128. Ext.ns('App.form');
  2129. App.form.StartForm = Ext.extend(App.form.AbstractForm, {
  2130. decorate: function(tabPanel, model) {
  2131. this.clearItem(tabPanel);
  2132. this.resetBasic(tabPanel, model);
  2133. this.resetEvent(tabPanel, model);
  2134. },
  2135. resetBasic: function(tabPanel, model) {
  2136. var p = new Ext.form.FormPanel({
  2137. title: '基本配置',
  2138. labelWidth: 70,
  2139. labelAlign: 'right',
  2140. border: false,
  2141. defaultType: 'textfield',
  2142. defaults: {
  2143. anchor: '90%'
  2144. },
  2145. bodyStyle: {
  2146. padding: '6px 0 0'
  2147. },
  2148. items: [{
  2149. name: 'name',
  2150. fieldLabel: '名称',
  2151. value: model.text ? model.text : '',
  2152. listeners: {
  2153. 'blur': function(field) {
  2154. var newValue = field.getValue();
  2155. model.text = newValue;
  2156. }
  2157. }
  2158. }, {
  2159. name: 'form',
  2160. fieldLabel: '表单',
  2161. value: model.dom.getAttribute('form'),
  2162. listeners: {
  2163. 'blur': function(field) {
  2164. var newValue = field.getValue();
  2165. model.dom.setAttribute('form', newValue);
  2166. }
  2167. }
  2168. }, {
  2169. name: 'description',
  2170. fieldLabel: '备注',
  2171. xtype: 'textarea',
  2172. value: model.dom.getElementContent('description'),
  2173. listeners: {
  2174. 'blur': function(field) {
  2175. var newValue = field.getValue();
  2176. model.dom.setElementContent('description', newValue);
  2177. }
  2178. }
  2179. }]
  2180. });
  2181. tabPanel.add(p);
  2182. tabPanel.activate(p);
  2183. }
  2184. });
  2185. Ext.ns('App.form');
  2186. App.form.StateForm = Ext.extend(App.form.AbstractForm, {
  2187. decorate: function(tabPanel, model) {
  2188. this.clearItem(tabPanel);
  2189. this.resetBasic(tabPanel, model);
  2190. this.resetEvent(tabPanel, model);
  2191. },
  2192. resetBasic: function(tabPanel, model) {
  2193. var p = new Ext.form.FormPanel({
  2194. title: '基本配置',
  2195. labelWidth: 70,
  2196. labelAlign: 'right',
  2197. border: false,
  2198. defaultType: 'textfield',
  2199. defaults: {
  2200. anchor: '90%'
  2201. },
  2202. bodyStyle: {
  2203. padding: '6px 0 0'
  2204. },
  2205. items: [{
  2206. name: 'name',
  2207. fieldLabel: '名称',
  2208. value: model.text ? model.text : '',
  2209. listeners: {
  2210. 'blur': function(field) {
  2211. var newValue = field.getValue();
  2212. // FIXME: use command
  2213. model.text = newValue;
  2214. model.editPart.figure.updateAndShowText(newValue);
  2215. }
  2216. }
  2217. }, {
  2218. name: 'description',
  2219. fieldLabel: '备注',
  2220. xtype: 'textarea',
  2221. value: model.dom.getElementContent('description'),
  2222. listeners: {
  2223. 'blur': function(field) {
  2224. var newValue = field.getValue();
  2225. model.dom.setElementContent('description', newValue);
  2226. }
  2227. }
  2228. }]
  2229. });
  2230. tabPanel.add(p);
  2231. tabPanel.activate(p);
  2232. }
  2233. });
  2234. Ext.ns('App.form');
  2235. App.form.SubProcessForm = Ext.extend(App.form.AbstractForm, {
  2236. decorate: function(tabPanel, model) {
  2237. this.clearItem(tabPanel);
  2238. this.resetBasic(tabPanel, model);
  2239. this.resetAdvance(tabPanel, model);
  2240. this.resetEvent(tabPanel, model);
  2241. },
  2242. resetBasic: function(tabPanel, model) {
  2243. var p = new Ext.form.FormPanel({
  2244. title: '基本配置',
  2245. labelWidth: 70,
  2246. labelAlign: 'right',
  2247. border: false,
  2248. defaultType: 'textfield',
  2249. defaults: {
  2250. anchor: '90%'
  2251. },
  2252. bodyStyle: {
  2253. padding: '6px 0 0'
  2254. },
  2255. items: [{
  2256. name: 'name',
  2257. fieldLabel: '名称',
  2258. value: model.text ? model.text : '',
  2259. listeners: {
  2260. 'blur': function(field) {
  2261. var newValue = field.getValue();
  2262. // FIXME: use command
  2263. model.text = newValue;
  2264. model.editPart.figure.updateAndShowText(newValue);
  2265. }
  2266. }
  2267. }, {
  2268. name: 'subProcessId',
  2269. fieldLabel: '子流程ID',
  2270. value: model.dom.getAttribute('sub-process-id'),
  2271. listeners: {
  2272. 'blur': function(field) {
  2273. var newValue = field.getValue();
  2274. model.dom.setAttribute('sub-process-id', newValue);
  2275. }
  2276. }
  2277. }, {
  2278. name: 'subProcessKey',
  2279. fieldLabel: '子流程KEY',
  2280. value: model.dom.getAttribute('sub-process-key'),
  2281. listeners: {
  2282. 'blur': function(field) {
  2283. var newValue = field.getValue();
  2284. model.dom.setAttribute('sub-process-key', newValue);
  2285. }
  2286. }
  2287. }, {
  2288. name: 'outcome',
  2289. fieldLabel: '外出转移',
  2290. value: model.dom.getAttribute('outcome'),
  2291. listeners: {
  2292. 'blur': function(field) {
  2293. var newValue = field.getValue();
  2294. model.dom.setAttribute('outcome', newValue);
  2295. }
  2296. }
  2297. }, {
  2298. name: 'description',
  2299. fieldLabel: '备注',
  2300. xtype: 'textarea',
  2301. value: model.dom.getElementContent('description'),
  2302. listeners: {
  2303. 'blur': function(field) {
  2304. var newValue = field.getValue();
  2305. model.dom.setElementContent('description', newValue);
  2306. }
  2307. }
  2308. }]
  2309. });
  2310. tabPanel.add(p);
  2311. tabPanel.activate(p);
  2312. },
  2313. getParameterInData: function(model) {
  2314. var data = [];
  2315. var elements = model.dom.getElementsByTagName('parameter-in');
  2316. Gef.each(elements, function(item) {
  2317. data.push({
  2318. 'var': item.getAttribute('var'),
  2319. subvar: item.getAttribute('subvar')
  2320. });
  2321. });
  2322. return data;
  2323. },
  2324. getParameterOutData: function(model) {
  2325. var data = [];
  2326. var elements = model.dom.getElementsByTagName('parameter-out');
  2327. Gef.each(elements, function(item) {
  2328. data.push({
  2329. 'var': item.getAttribute('var'),
  2330. subvar: item.getAttribute('subvar')
  2331. });
  2332. });
  2333. return data;
  2334. },
  2335. resetAdvance: function(tabPanel, model) {
  2336. var Record = Ext.data.Record.create(['var', 'subvar']);
  2337. var inData = this.getParameterInData(model);
  2338. var inStore = new Ext.data.JsonStore({
  2339. fields: Record,
  2340. data: inData,
  2341. listeners: {
  2342. add: function(store, records, index) {
  2343. var record = records[0];
  2344. var onDom = new Gef.model.Dom('parameter-in');
  2345. onDom.setAttribute('var', record.get('var'));
  2346. onDom.setAttribute('subvar', record.get('subvar'));
  2347. model.dom.addElement(onDom);
  2348. },
  2349. remove: function(store, record, index) {
  2350. var elements = model.dom.getElementsByTagName('parameter-in');
  2351. var element = elements[index];
  2352. model.dom.elements.remove(element);
  2353. },
  2354. update: function(store, record, operation) {
  2355. var index = store.indexOf(record);
  2356. var elements = model.dom.getElementsByTagName('parameter-in');
  2357. var element = elements[index];
  2358. element.setAttribute('var', record.get('var'));
  2359. element.setAttribute('subvar', record.get('subvar'));
  2360. this.commitChanges();
  2361. }
  2362. }
  2363. });
  2364. var gridIn = new Ext.grid.EditorGridPanel({
  2365. title: '输入变量',
  2366. store: inStore,
  2367. viewConfig: {
  2368. forceFit: true
  2369. },
  2370. columns: [{
  2371. header: '变量名',
  2372. dataIndex: 'var',
  2373. editor: new Ext.grid.GridEditor(new Ext.form.TextField())
  2374. }, {
  2375. header: '子流程变量',
  2376. dataIndex: 'subvar',
  2377. editor: new Ext.grid.GridEditor(new Ext.form.TextField())
  2378. }],
  2379. tbar: [{
  2380. text: '添加',
  2381. iconCls: 'tb-add',
  2382. handler: function() {
  2383. var p = new Record({
  2384. 'var': '',
  2385. subvar: ''
  2386. });
  2387. gridIn.stopEditing();
  2388. var index = gridIn.getStore().getCount();
  2389. gridIn.getStore().insert(index, p);
  2390. gridIn.startEditing(index, 0);
  2391. }
  2392. }, {
  2393. text: '删除',
  2394. iconCls: 'tb-delete',
  2395. handler: function() {
  2396. Ext.Msg.confirm('信息', '确定删除?', function(btn){
  2397. if (btn == 'yes') {
  2398. var sm = gridIn.getSelectionModel();
  2399. var cell = sm.getSelectedCell();
  2400. var record = gridIn.getStore().getAt(cell[0]);
  2401. gridIn.getStore().remove(record);
  2402. }
  2403. });
  2404. }
  2405. }]
  2406. });
  2407. var outData = this.getParameterOutData(model);
  2408. var outStore = new Ext.data.JsonStore({
  2409. fields: Record,
  2410. data: outData,
  2411. listeners: {
  2412. add: function(store, records, index) {
  2413. var record = records[0];
  2414. var onDom = new Gef.model.Dom('parameter-out');
  2415. onDom.setAttribute('var', record.get('var'));
  2416. onDom.setAttribute('subvar', record.get('subvar'));
  2417. model.dom.addElement(onDom);
  2418. },
  2419. remove: function(store, record, index) {
  2420. var elements = model.dom.getElementsByTagName('parameter-out');
  2421. var element = elements[index];
  2422. model.dom.elements.remove(element);
  2423. },
  2424. update: function(store, record, operation) {
  2425. var index = store.indexOf(record);
  2426. var elements = model.dom.getElementsByTagName('parameter-out');
  2427. var element = elements[index];
  2428. element.setAttribute('var', record.get('var'));
  2429. element.setAttribute('subvar', record.get('subvar'));
  2430. this.commitChanges();
  2431. }
  2432. }
  2433. });
  2434. var gridOut = new Ext.grid.EditorGridPanel({
  2435. title: '输出变量',
  2436. store: outStore,
  2437. viewConfig: {
  2438. forceFit: true
  2439. },
  2440. columns: [{
  2441. header: '子流程变量',
  2442. dataIndex: 'subvar',
  2443. editor: new Ext.grid.GridEditor(new Ext.form.TextField())
  2444. }, {
  2445. header: '变量名',
  2446. dataIndex: 'var',
  2447. editor: new Ext.grid.GridEditor(new Ext.form.TextField())
  2448. }],
  2449. tbar: [{
  2450. text: '添加',
  2451. iconCls: 'tb-add',
  2452. handler: function() {
  2453. var p = new Record({
  2454. 'var': '',
  2455. subvar: ''
  2456. });
  2457. gridOut.stopEditing();
  2458. var index = gridOut.getStore().getCount();
  2459. gridOut.getStore().insert(index, p);
  2460. gridOut.startEditing(index, 0);
  2461. }
  2462. }, {
  2463. text: '删除',
  2464. iconCls: 'tb-delete',
  2465. handler: function() {
  2466. Ext.Msg.confirm('信息', '确定删除?', function(btn){
  2467. if (btn == 'yes') {
  2468. var sm = gridOut.getSelectionModel();
  2469. var cell = sm.getSelectedCell();
  2470. var record = gridOut.getStore().getAt(cell[0]);
  2471. gridOut.getStore().remove(record);
  2472. }
  2473. });
  2474. }
  2475. }]
  2476. });
  2477. var p = new Ext.TabPanel({
  2478. title: ' 变量映射',
  2479. activeItem: 0,
  2480. items: [gridIn, gridOut]
  2481. });
  2482. tabPanel.add(p);
  2483. this.gridIn = gridIn;
  2484. this.gridOut = gridOut;
  2485. }
  2486. });
  2487. Ext.ns('App.form');
  2488. App.form.TaskForm = Ext.extend(App.form.AbstractForm, {
  2489. eventNames: [
  2490. ['start', '开始'],
  2491. ['end', '结束'],
  2492. ['assign', '任务分配']
  2493. ],
  2494. decorate: function(tabPanel, model) {
  2495. this.clearItem(tabPanel);
  2496. this.resetBasic(tabPanel, model);
  2497. this.resetAdvance(tabPanel, model);
  2498. this.resetEvent(tabPanel, model);
  2499. },
  2500. resetBasic: function(tabPanel, model) {
  2501. var p = new Ext.form.FormPanel({
  2502. title: '基本配置',
  2503. labelWidth: 70,
  2504. labelAlign: 'right',
  2505. border: false,
  2506. defaultType: 'textfield',
  2507. defaults: {
  2508. anchor: '90%'
  2509. },
  2510. bodyStyle: {
  2511. padding: '6px 0 0'
  2512. },
  2513. items: [{
  2514. name: 'name',
  2515. fieldLabel: '名称',
  2516. value: model.text ? model.text : '',
  2517. listeners: {
  2518. 'blur': function(field) {
  2519. var newValue = field.getValue();
  2520. // FIXME: use command
  2521. model.text = newValue;
  2522. model.editPart.figure.updateAndShowText(newValue);
  2523. }
  2524. }
  2525. }, {
  2526. name: 'assignee',
  2527. fieldLabel: '分配人',
  2528. value: model.dom.getAttribute('assignee'),
  2529. listeners: {
  2530. 'blur': function(field) {
  2531. var newValue = field.getValue();
  2532. model.dom.setAttribute('assignee', newValue);
  2533. }
  2534. }
  2535. }, {
  2536. name: 'candidateUsers',
  2537. fieldLabel: '候选人',
  2538. value: model.dom.getAttribute('candidate-users'),
  2539. listeners: {
  2540. 'blur': function(field) {
  2541. var newValue = field.getValue();
  2542. model.dom.setAttribute('candidate-users', newValue);
  2543. }
  2544. }
  2545. }, {
  2546. name: 'candidateGroups',
  2547. fieldLabel: '候选群组',
  2548. value: model.dom.getAttribute('candidate-groups'),
  2549. listeners: {
  2550. 'blur': function(field) {
  2551. var newValue = field.getValue();
  2552. model.dom.setAttribute('candidate-groups', newValue);
  2553. }
  2554. }
  2555. }, {
  2556. name: 'description',
  2557. fieldLabel: '备注',
  2558. xtype: 'textarea',
  2559. value: model.dom.getElementContent('description'),
  2560. listeners: {
  2561. 'blur': function(field) {
  2562. var newValue = field.getValue();
  2563. model.dom.setElementContent('description', newValue);
  2564. }
  2565. }
  2566. }]
  2567. });
  2568. tabPanel.add(p);
  2569. tabPanel.activate(p);
  2570. },
  2571. resetAdvance: function(tabPanel, model) {
  2572. var p = new Ext.form.FormPanel({
  2573. title: '高级配置',
  2574. labelWidth: 70,
  2575. labelAlign: 'right',
  2576. border: false,
  2577. defaultType: 'textfield',
  2578. defaults: {
  2579. anchor: '90%'
  2580. },
  2581. bodyStyle: {
  2582. padding: '6px 0 0'
  2583. },
  2584. items: [{
  2585. name: 'swimlane',
  2586. fieldLabel: '泳道',
  2587. value: model.dom.getAttribute('swimlane'),
  2588. listeners: {
  2589. 'blur': function(field) {
  2590. var newValue = field.getValue();
  2591. model.dom.setAttribute('swimlane', newValue);
  2592. }
  2593. }
  2594. }, {
  2595. name: 'form',
  2596. fieldLabel: '表单',
  2597. value: model.dom.getAttribute('form'),
  2598. listeners: {
  2599. 'blur': function(field) {
  2600. var newValue = field.getValue();
  2601. model.dom.setAttribute('form', newValue);
  2602. }
  2603. }
  2604. }, /*{
  2605. name: 'duedate',
  2606. fieldLabel: '持续时间',
  2607. value: model.duedate ? model.duedate : ''
  2608. }, {
  2609. name: 'onTransition',
  2610. fieldLabel: '转移',
  2611. value: model.onTransition ? model.onTransition : ''
  2612. }, {
  2613. name: 'completion',
  2614. fieldLabel: '完成',
  2615. value: model.completion ? model.completion : ''
  2616. },*/ {
  2617. name: 'notification',
  2618. fieldLabel: '邮件提示',
  2619. value: model.dom.getElementAttribute('notification', 'template'),
  2620. listeners: {
  2621. 'blur': function(field) {
  2622. var newValue = field.getValue();
  2623. model.dom.setElementAttribute('notification', 'template', newValue);
  2624. }
  2625. }
  2626. }, {
  2627. name: 'reminder',
  2628. fieldLabel: '邮件提醒',
  2629. value: model.dom.getElementAttribute('reminder', 'template'),
  2630. listeners: {
  2631. 'blur': function(field) {
  2632. var newValue = field.getValue();
  2633. model.dom.setElementAttribute('reminder', 'template', newValue);
  2634. }
  2635. }
  2636. }]
  2637. });
  2638. tabPanel.add(p);
  2639. }
  2640. });
  2641. Ext.ns('App.form');
  2642. App.form.TransitionForm = Ext.extend(App.form.AbstractForm, {
  2643. eventNames: [
  2644. ['take', '进入']
  2645. ],
  2646. decorate: function(tabPanel, model) {
  2647. this.clearItem(tabPanel);
  2648. this.resetBasic(tabPanel, model);
  2649. this.resetEvent(tabPanel, model);
  2650. this.resetTimer(tabPanel, model);
  2651. },
  2652. resetBasic: function(tabPanel, model) {
  2653. var condition = model.dom.getElementAttribute('condition', 'expr');
  2654. if (condition != '') {
  2655. condition = condition.replace(/&lt;/g, '<')
  2656. .replace(/&amp;/g, '&');
  2657. }
  2658. var items = [];
  2659. items.push({
  2660. name: 'name',
  2661. fieldLabel: '名称',
  2662. value: model.text ? model.text : '',
  2663. listeners: {
  2664. 'blur': function(field) {
  2665. var newValue = field.getValue();
  2666. // FIXME: use command
  2667. model.text = newValue;
  2668. model.editPart.figure.updateAndShowText(newValue);
  2669. }
  2670. }
  2671. });
  2672. if (model.getSource().type == 'decision') {
  2673. items.push({
  2674. name: 'condition',
  2675. fieldLabel: '条件',
  2676. // <condition expr="#{ACCOUNT&gt;=10000}"/>
  2677. value: condition,
  2678. listeners: {
  2679. 'blur': function(field) {
  2680. var newValue = field.getValue();
  2681. if (newValue != '') {
  2682. model.dom.setElementAttribute('condition', 'expr', newValue);
  2683. } else if (model.dom.elements.length > 0) {
  2684. model.dom.removeElement(model.dom.elements[0]);
  2685. }
  2686. }
  2687. }
  2688. });
  2689. }
  2690. items.push({
  2691. name: 'description',
  2692. fieldLabel: '备注',
  2693. xtype: 'textarea',
  2694. value: model.dom.getElementContent('description'),
  2695. listeners: {
  2696. 'blur': function(field) {
  2697. var newValue = field.getValue();
  2698. model.dom.setElementContent('description', newValue);
  2699. }
  2700. }
  2701. });
  2702. var p = new Ext.form.FormPanel({
  2703. title: '基本配置',
  2704. labelWidth: 70,
  2705. labelAlign: 'right',
  2706. border: false,
  2707. defaultType: 'textfield',
  2708. defaults: {
  2709. anchor: '90%'
  2710. },
  2711. bodyStyle: {
  2712. padding: '6px 0 0'
  2713. },
  2714. items: items
  2715. });
  2716. tabPanel.add(p);
  2717. tabPanel.activate(p);
  2718. },
  2719. getTimerData: function(model) {
  2720. var data = [];
  2721. var elements = model.dom.getElementsByTagName('timer');
  2722. Gef.each(elements, function(elem) {
  2723. data.push({
  2724. duedate: timerElem.getAttribute('duedate')
  2725. });
  2726. });
  2727. return data;
  2728. },
  2729. resetTimer: function(tabPanel, model) {
  2730. var data = this.getTimerData(model);
  2731. var Record = Ext.data.Record.create([
  2732. 'duedate'
  2733. ]);
  2734. var store = new Ext.data.JsonStore({
  2735. fields: Record,
  2736. data: data,
  2737. listeners: {
  2738. add: function(store, records, index) {
  2739. var record = records[0];
  2740. var timerDom = new Gef.model.Dom('timer');
  2741. timerDom.setAttribute('duedate', record.get('duedate'));
  2742. model.dom.addElement(timerDom);
  2743. },
  2744. remove: function(store, record, index) {
  2745. var element = model.dom.getElementByTagName('timer');
  2746. model.dom.elements.remove(element);
  2747. },
  2748. update: function(store, record, operation) {
  2749. var index = store.indexOf(record);
  2750. var element = model.dom.getElementByTagName('timer');
  2751. element.setAttribute('duedate', record.get('duedate'));
  2752. this.commitChanges();
  2753. }
  2754. }
  2755. });
  2756. var grid = new Ext.grid.EditorGridPanel({
  2757. title: '定时器配置',
  2758. xtype: 'editorgrid',
  2759. store: store,
  2760. viewConfig: {
  2761. forceFit: true
  2762. },
  2763. columns: [{
  2764. header: '持续日期',
  2765. dataIndex: 'duedate',
  2766. editor: new Ext.grid.GridEditor(new Ext.form.TextField())
  2767. }/*, {
  2768. header: '持续时间',
  2769. dataIndex: 'duedatetime',
  2770. editor: new Ext.grid.GridEditor(new Ext.form.TextField())
  2771. }*/],
  2772. tbar: [{
  2773. text: '添加',
  2774. iconCls: 'tb-add',
  2775. handler: function() {
  2776. var count = grid.getStore().getCount();
  2777. if (count > 0) {
  2778. Ext.Msg.alert('info', '连线上只能设置一个定时器');
  2779. return;
  2780. }
  2781. var p = new Record({
  2782. name: '',
  2783. duedate: '',
  2784. repeat: '',
  2785. //duedatetime: '',
  2786. classname: ''
  2787. });
  2788. grid.stopEditing();
  2789. var index = grid.getStore().getCount();
  2790. grid.getStore().insert(index, p);
  2791. grid.startEditing(index, 0);
  2792. }
  2793. }, {
  2794. text: '删除',
  2795. iconCls: 'tb-delete',
  2796. handler: function() {
  2797. Ext.Msg.confirm('信息', '确定删除?', function(btn){
  2798. if (btn == 'yes') {
  2799. var sm = grid.getSelectionModel();
  2800. var cell = sm.getSelectedCell();
  2801. var record = grid.getStore().getAt(cell[0]);
  2802. grid.getStore().remove(record);
  2803. }
  2804. });
  2805. }
  2806. }]
  2807. });
  2808. tabPanel.add(grid);
  2809. }
  2810. });