Browse Source

允许修改备份描述/导入导出同步title/chart图无数据展示调整等

zhuth 8 years ago
parent
commit
0a807c243d

+ 69 - 31
kanban-console/src/main/webapp/resources/app/view/boardmodel/modelbackupgrid.js

@@ -20,8 +20,74 @@ Ext.define('erp.view.boardmodel.modelbackupgrid',{
 	}, {
 		header: '备份描述',
 		dataIndex: 'description',
-		flex: 1
+		flex: 1,
+		editor: 'texttrigger'
+	}, {
+		xtype: 'actioncolumn',
+		header: '操作',
+		align: 'center',
+		width: 80,
+		items: [{
+            iconCls: 'save',
+            tooltip: '保存修改',
+            handler: function(th, rowIndex, colIndex) {
+            	var grid =this.up('grid');
+				var selectedData = grid.getStore().getAt(rowIndex).data;
+				var json = {
+					code: selectedData.code,
+					description: selectedData.description
+				}
+            	grid.getEl().mask('loading...');
+				Ext.Ajax.request({
+					url:'kanbanHistory/updatePart',
+					method:'POST',
+					params:{
+                        json:Ext.encode(json)
+                    },
+					callback:function(options,success,response){
+						grid.getEl().unmask();
+						var record = JSON.parse(response.responseText);
+						if(success) {
+							grid.loadGridData();
+						}else {
+							showErrorMsg('失败', record.message);
+						}
+					}
+				});
+            }
+		}, '-', {
+			iconCls: 'delete',
+			tooltip: '删除',
+			handler: function(th, rowIndex, colIndex) {
+				var grid =this.up('grid');
+				var selectData = grid.getStore().getAt(rowIndex).data;
+				
+				Ext.Msg.confirm('确认', '确定删除该备份 ?', function(btn) {
+	                if(btn == 'yes') {
+	                	grid.getEl().mask('loading...');
+						Ext.Ajax.request({
+							url:'kanbanHistory/delete/' + selectData.code,
+							method:'POST',
+							callback:function(options,success,response){
+								grid.getEl().unmask();
+								var record = JSON.parse(response.responseText);
+								if(success) {
+									grid.loadGridData();
+								}else {
+									showErrorMsg('失败', record.message);
+								}
+							}
+						});
+	                }
+	            });
+			}
+		}]
 	}],
+	plugins: [
+        Ext.create('Ext.grid.plugin.CellEditing', {
+            clicksToEdit: 2
+        })
+    ],
 	tbar: [{
 		xtype: 'button',
 		text: '还原',
@@ -64,42 +130,13 @@ Ext.define('erp.view.boardmodel.modelbackupgrid',{
 									}
 								});
 							}else {
-								showErrorMsg('失败', res.message);
+								showErrorMsg('失败', record.message);
 							}
 						}
 					});
                 }
 			});
 		}
-	}, {
-		xtype: 'button',
-		text: '删除',
-		handler: function() {
-			var grid = Ext.getCmp('modelbackupgrid');
-			if(grid.getSelectionModel().getSelection().length == 0) {
-				return;
-			}
-			var selectData = grid.getSelectionModel().getSelection()[0].data;
-			
-			Ext.Msg.confirm('确认', '确定删除该备份 ?', function(btn) {
-                if(btn == 'yes') {
-                	grid.getEl().mask('loading...');
-					Ext.Ajax.request({
-						url:'kanbanHistory/delete/' + selectData.code,
-						method:'POST',
-						callback:function(options,success,response){
-							grid.getEl().unmask();
-							var record = JSON.parse(response.responseText);
-							if(success) {
-								grid.loadGridData();
-							}else {
-								showErrorMsg('失败', res.message);
-							}
-						}
-					});
-                }
-            });
-		}
 	}],
 	listeners: {
 		afterrender: function() {
@@ -116,6 +153,7 @@ Ext.define('erp.view.boardmodel.modelbackupgrid',{
 				var res = JSON.parse(response.responseText);
 				if(success) {
 					res = res instanceof Array ? res : [res];
+					res.sort(function(a,b) {return b.createTime-a.createTime})
 					grid.getStore().loadData(res);
 				}else {
 					showErrorMsg('失败', res.message);

+ 57 - 24
kanban-console/src/main/webapp/resources/app/view/boardmodel/modeleditpanel.js

@@ -62,7 +62,7 @@ Ext.define('erp.view.boardmodel.modeleditpanel',{
 						if(btn == 'cancel') {
 							return;
 						}
-						me.saveAsXml(null, function() {
+						me.saveAsXml(function() {
 							me.el.mask('loading...');
 							Ext.Ajax.request({
 								url:'kanbanHistory/backup/byKanban/' + modelCode,
@@ -83,7 +83,7 @@ Ext.define('erp.view.boardmodel.modeleditpanel',{
 							});
 						
 						});
-					});
+					},this,true,'备份' + Ext.Date.format(new Date(), 'YmdHis'));
 				}
 			}, {
 				xtype: 'button',
@@ -145,16 +145,36 @@ Ext.define('erp.view.boardmodel.modeleditpanel',{
 			if(!xml){
 				showErrorMsg('提示','请先输入内容');
 			}else{
-				var bol = me.validateXmlFormat(xml);
-				if(!bol){
+				var xmldom = me.validateXmlFormat(xml);
+				if(!xmldom){
 					return;
 				}
-				record.set('content',xml);
+				
+				var titleStr = me.XML2String(xmldom.getElementsByTagName('title')[0]);
+				titleStr = titleStr.substring(7,titleStr.length-1-7);
+				while(titleStr.startsWith('\n') || titleStr.startsWith(' ')) {
+					titleStr = titleStr.substring(1);
+				}
+				while(titleStr.endsWith('\n') || titleStr.endsWith(' ')) {
+					titleStr = titleStr.substring(0,titleStr.length-1);
+				}
+				record.set('title', titleStr);
+				record.set('content',me.XML2String(xmldom.getElementsByTagName('content')[0]));
 				modelbuilderpanel.fireEvent('repaintcomponent',modelbuilderpanel,record);		
 				Ext.getCmp('importWin').close();
 			}
 		}		
 	},
+	XML2String: function(xmlObject) {
+	    // for IE
+	    if (window.ActiveXObject) {       
+	    	return xmlobject.xml;
+	    }
+	    // for other browsers
+	    else {        
+	    	return (new XMLSerializer()).serializeToString(xmlObject);
+	    }
+    },
 	validateXmlFormat:function(xml){
 		if(DOMParser){
 	        var parser = new DOMParser(),
@@ -166,21 +186,24 @@ Ext.define('erp.view.boardmodel.modeleditpanel',{
 	            if (errors.length > 0){
 	                throw new Error("XML Parsing Error:" + (new XMLSerializer()).serializeToString(xmldom, "text/xml"));
 	            }
-	            return true;
+	            return xmldom;
 	        } catch (ex) {
 	        	showErrorMsg('提示','XML格式有误:'+ex.message);
 	        	return false;
 	        }        					
 		}else{
-			return true;
+			return false;
 		}
 	},
 	exportXml:function(){
 		var me = this;
 		var builderPanel = Ext.getCmp('modelbuilderpanel');
 		var items = builderPanel.items.items;
+		var title = builderPanel.modelRecord.get('title') || '';
 		var content = me.getComponentXml(items,builderPanel);
-		var xml = me.formatXml(content);
+		
+		var xmlStr = '<model><title>'+title+'</title>'+content+'</model>';
+		var xml = me.formatXml(xmlStr);
 		Ext.create('Ext.window.Window',{
 			title:'导出',
 			width:500,
@@ -217,14 +240,11 @@ Ext.define('erp.view.boardmodel.modeleditpanel',{
 				closeAction:'hide',
 				items:[{
 					xtype:'form',
-					layout:'column',
+					layout:'fit',
 					id:'tplSetForm',
-					defaults:{
-						margin:'5 5 5 5'
-					},
 					items:[{
 						xtype:'textarea',
-						fieldLabel:'标题',
+						grow: true,
 						columnWidth:1,
 						height:200,
 						name:'title',
@@ -241,8 +261,15 @@ Ext.define('erp.view.boardmodel.modeleditpanel',{
 						text:'确定',
 						handler:function(btn){
 							var form = Ext.getCmp('tplSetForm');
-							var values = form.getForm().getValues();
-							me.saveAsXml(values);
+							var title = form.getForm().getValues().title;
+							var titleParams = me.getParams(title);
+							if(!me.checkParams(titleParams, 'title')) {
+								return;
+							}
+							var modelbuilderpanel = Ext.getCmp('modelbuilderpanel');
+							modelbuilderpanel.modelRecord.set('title', title);
+							var win = Ext.getCmp('tplSet');
+							win.close();
 						}
 					},{
 						text:'取消',
@@ -255,9 +282,10 @@ Ext.define('erp.view.boardmodel.modeleditpanel',{
 			});
 			record.win = win;
 		}
+		win.down('form').getForm().getFields('title').items[0].setValue(record.get('title'));
 		win.show();
 	},
-	saveAsXml:function(extraParams, callBackFunction){
+	saveAsXml:function(callBackFunction){
 		var me = this;
 		var builderPanel = Ext.getCmp('modelbuilderpanel');
 		var items = builderPanel.items.items;
@@ -266,13 +294,15 @@ Ext.define('erp.view.boardmodel.modeleditpanel',{
 		if(!me.checkParams(contentParams, 'content')) {
 			return;
 		}
-		if(extraParams) {
-			var titleParams = me.getParams(extraParams.title);
+		var title = builderPanel.modelRecord.get('title');
+		builderPanel.modelRecord.set('content', content);
+		if(title) {
+			var titleParams = me.getParams(title);
 			if(!me.checkParams(titleParams, 'title')) {
 				return;
 			}
 		}
-		me.save(content,extraParams, callBackFunction);
+		me.save(callBackFunction);
 	},
 	getParams: function(content) {
 		var reg = /\$P{([^\}]{0,})\}/g
@@ -311,12 +341,15 @@ Ext.define('erp.view.boardmodel.modeleditpanel',{
 		content += '</content>';	
 		return content;
 	},
-	save:function(content,extraParams,callBackFunction){
+	save:function(callBackFunction){
 		var me = this;
 		var modelbuilderpanel = Ext.getCmp('modelbuilderpanel');
 		var record = modelbuilderpanel.modelRecord;
-		var modelCode = record.get('code');
+		var modelCode = record.get('code'),
+			content = record.get('content'),
+			title = record.get('title');
 		var json = {
+			title: title,
         	content:content
 		};
 		if(modelCode){
@@ -325,9 +358,6 @@ Ext.define('erp.view.boardmodel.modeleditpanel',{
 		}else{
 			type = 'savePart';
 		}
-		if(extraParams){
-			Ext.apply(json,extraParams);
-		}
 		me.el.mask('loading...');
 		Ext.Ajax.request({
         	url:'kanban/'+type,
@@ -363,6 +393,9 @@ Ext.define('erp.view.boardmodel.modeleditpanel',{
 	},
 	clear:function(){
 		var builderPanel = Ext.getCmp('modelbuilderpanel');
+		builderPanel.modelRecord.set('title', '');
+		builderPanel.modelRecord.set('content', '');
+		
 		builderPanel.removeAll();
 		Ext.getCmp('elementdetailgrid').getStore().removeAll();
 		Ext.getCmp('detailpropertiesgrid').getStore().removeAll();

+ 1 - 2
kanban-console/src/main/webapp/resources/app/view/core/trigger/FormRenderTrigger.js

@@ -31,10 +31,9 @@ Ext.define('erp.view.core.trigger.FormRenderTrigger', {
                 region: 'north',
                 layout: 'fit',
                 height: '40%',
-                bodyPadding: 10,
-                autoScroll: true,
                 items: [{
                     xtype: 'textarea',
+                    grow: true,
                     labelAlign: 'top',
                     fieldLabel:'参数为(field, value)',
                     name: 'functionbody',

+ 1 - 2
kanban-console/src/main/webapp/resources/app/view/core/trigger/GridRenderTrigger.js

@@ -31,10 +31,9 @@ Ext.define('erp.view.core.trigger.GridRenderTrigger', {
                 region: 'north',
                 layout: 'fit',
                 height: '40%',
-                bodyPadding: 10,
-                autoScroll: true,
                 items: [{
                     xtype: 'textarea',
+                    grow: true,
                     labelAlign: 'top',
                     fieldLabel:'参数为(value, record, index)',
                     name: 'functionbody',

+ 6 - 0
kanban-console/src/main/webapp/resources/css/boardmodel.css

@@ -24,4 +24,10 @@
 }
 .render-trigger-icon-grid {
     background-image: url(../images/icons/render.png) !important;
+}
+.save {
+    background-image: url(../images/icons/save16x16.png) !important;
+}
+.delete {
+	background-image: url(../images/icons/delete16x16.png) !important;
 }

File diff suppressed because it is too large
+ 0 - 0
kanban-console/src/main/webapp/resources/js/boardshow/main.bundle.js


File diff suppressed because it is too large
+ 0 - 0
kanban-console/src/main/webapp/resources/lib/boardshow/vendor.js


Some files were not shown because too many files changed in this diff