提交 70451b7a 编写于 作者: 蔡祥熠

Merge branch 'fix/Process.dict_check_valid' into 'develop'

Merge of fix/[流程管理]增加数据字典编辑器方式的校验 to develop

See merge request o2oa/o2oa!1241
......@@ -5,6 +5,7 @@ MWF.CMSDD = MWF.xApplication.cms.DictionaryDesigner;
MWF.require("MWF.widget.Common", null, false);
MWF.xDesktop.requireApp("cms.DictionaryDesigner", "lp."+MWF.language, null, false);
MWF.xDesktop.requireApp("Selector", "package", null, false);
MWF.require("MWF.widget.JavascriptEditor", null, false);
MWF.xApplication.cms.DictionaryDesigner.Dictionary = new Class({
Extends: MWF.widget.Common,
Implements: [Options, Events],
......@@ -68,19 +69,13 @@ MWF.xApplication.cms.DictionaryDesigner.Dictionary = new Class({
this.scriptPage = this.designTab.addTab(this.designTabScriptAreaNode, "JSON");
this.designPage.showTabIm = function(callback){
if( _self.scriptEditor && _self.isChanged){
try{
var value = _self.scriptEditor.getValue();
var v = JSON.parse(value);
if( _self.getEditorValidData() !== false ){
if (!this.isShow){
this.tab.pages.each(function(page){
if (page.isShow) page.hideIm();
});
this.showIm(callback);
}
}catch (e) {
_self.designer.notice( _self.designer.lp.notice.jsonParseError, "error", _self.node, {"x": "left", "y": "bottom"});
}
}else{
if (!this.isShow){
......@@ -106,18 +101,53 @@ MWF.xApplication.cms.DictionaryDesigner.Dictionary = new Class({
}.bind(this));
this.designPage.addEvent("postShow", function(){
if( this.scriptEditor && this.isChanged){
try{
var value = this.scriptEditor.getValue();
this.data.data = JSON.parse(value);
var data = this.getEditorValidData();
if( data !== false ){
this.data.data = data;
this.reload();
this.isChanged = false;
}catch (e) {
this.designer.notice( this.designer.lp.notice.jsonParseError, "error", this.node, {"x": "left", "y": "bottom"});
}
}
this.fireEvent("resize");
}.bind(this));
},
getEditorValidData : function( silence ){
if( !this.scriptEditor.validated() ){
if(!silence)this.designer.notice( this.designer.lp.notice.editorNotValidated, "error", this.node, {"x": "left", "y": "bottom"});
return false;
}
try{
var value = this.scriptEditor.getValue();
var v = JSON.parse(value);
if( !this.checkValid(v, silence) ){
return false;
}
return v;
}catch (e) {
if(!silence)this.designer.notice( this.designer.lp.notice.jsonParseError, "error", this.node, {"x": "left", "y": "bottom"});
return false;
}
},
checkValid( obj, silence ){
if( typeOf(obj) !== "object" ){
return true;
}
for (var key in obj) {
if( !key || key.trim() === "" ){
if(!silence)this.designer.notice(this.designer.lp.notice.emptyObjectKey, "error", this.node, {"x": "left", "y": "bottom"});
return false;
}
if (!isNaN(parseFloat(key))){
if(!silence)this.designer.notice(this.designer.lp.notice.numberObjectKey, "error", this.node, {"x": "left", "y": "bottom"});
return false;
}
if( typeOf(obj[key]) === "object" ){
if( !this.checkValid( obj[key] ) )return false;
}
}
return true;
},
loadScriptEditor:function(){
var value = JSON.stringify(this.data.data, null, "\t");
this.scriptEditor = new MWF.widget.JavascriptEditor(this.scriptNode, {"option": {"value": value, "mode" : "json" }});
......@@ -242,10 +272,11 @@ MWF.xApplication.cms.DictionaryDesigner.Dictionary = new Class({
if( this.scriptPage.isShow ){
if( this.scriptEditor ){
try{
var value = this.scriptEditor.getValue();
this.data.data = JSON.parse(value);
}catch (e) {
var data = this.getEditorValidData( true );
if( data !== false ){
this.data.data = data;
}else{
return false;
}
}
......@@ -283,11 +314,10 @@ MWF.xApplication.cms.DictionaryDesigner.Dictionary = new Class({
if( this.scriptPage.isShow ){
if( this.scriptEditor ){
try{
var value = this.scriptEditor.getValue();
this.data.data = JSON.parse(value);
}catch (e) {
this.designer.notice( this.designer.lp.notice.jsonParseError, "error", this.node, {"x": "left", "y": "bottom"});
var data = this.getEditorValidData();
if( data !== false ){
this.data.data = data;
}else{
return false;
}
}
......
......@@ -34,6 +34,11 @@ MWF.xApplication.cms.DictionaryDesigner.LP = {
"emptyKey": "项目名称不能为空,请重新输入",
"numberKey": "项目名称不能为数字,请重新输入",
"sameObjectKey": "项目名称重复",
"emptyObjectKey": "项目名称不能为空",
"numberObjectKey": "项目名称不能为数字",
"editorNotValidated" : "请先修正编辑器报的错",
"inputName": "请输入数据字典名称",
"noModifyName": "不能修改名称或者别名",
"jsonParseError" : "json格式错误,请先修正"
......
......@@ -67,20 +67,15 @@ MWF.xApplication.process.DictionaryDesigner.Dictionary = new Class({
this.designPage = this.designTab.addTab(this.designTabPageAreaNode, this.designer.lp.design);
this.scriptPage = this.designTab.addTab(this.designTabScriptAreaNode, "JSON");
this.designPage.showTabIm = function(callback){
debugger;
if( _self.scriptEditor && _self.isChanged){
try{
var value = _self.scriptEditor.getValue();
var v = JSON.parse(value);
if( _self.getEditorValidData() !== false ){
if (!this.isShow){
this.tab.pages.each(function(page){
if (page.isShow) page.hideIm();
});
this.showIm(callback);
}
}catch (e) {
_self.designer.notice( _self.designer.lp.notice.jsonParseError, "error", _self.node, {"x": "left", "y": "bottom"});
}
}else{
if (!this.isShow){
......@@ -106,18 +101,53 @@ MWF.xApplication.process.DictionaryDesigner.Dictionary = new Class({
}.bind(this));
this.designPage.addEvent("postShow", function(){
if( this.scriptEditor && this.isChanged){
try{
var value = this.scriptEditor.getValue();
this.data.data = JSON.parse(value);
var data = this.getEditorValidData();
if( data !== false ){
this.data.data = data;
this.reload();
this.isChanged = false;
}catch (e) {
this.designer.notice( this.designer.lp.notice.jsonParseError, "error", this.node, {"x": "left", "y": "bottom"});
}
}
this.fireEvent("resize");
}.bind(this));
},
getEditorValidData : function( silence ){
if( !this.scriptEditor.validated() ){
if(!silence)this.designer.notice( this.designer.lp.notice.editorNotValidated, "error", this.node, {"x": "left", "y": "bottom"});
return false;
}
try{
var value = this.scriptEditor.getValue();
var v = JSON.parse(value);
if( !this.checkValid(v, silence) ){
return false;
}
return v;
}catch (e) {
if(!silence)this.designer.notice( this.designer.lp.notice.jsonParseError, "error", this.node, {"x": "left", "y": "bottom"});
return false;
}
},
checkValid( obj, silence ){
if( typeOf(obj) !== "object" ){
return true;
}
for (var key in obj) {
if( !key || key.trim() === "" ){
if(!silence)this.designer.notice(this.designer.lp.notice.emptyObjectKey, "error", this.node, {"x": "left", "y": "bottom"});
return false;
}
if (!isNaN(parseFloat(key))){
if(!silence)this.designer.notice(this.designer.lp.notice.numberObjectKey, "error", this.node, {"x": "left", "y": "bottom"});
return false;
}
if( typeOf(obj[key]) === "object" ){
if( !this.checkValid( obj[key] ) )return false;
}
}
return true;
},
loadScriptEditor:function(){
var value = JSON.stringify(this.data.data, null, "\t");
this.scriptEditor = new MWF.widget.JavascriptEditor(this.scriptNode, {"option": {"value": value, "mode" : "json" }});
......@@ -241,10 +271,11 @@ MWF.xApplication.process.DictionaryDesigner.Dictionary = new Class({
if( this.scriptPage.isShow ){
if( this.scriptEditor ){
try{
var value = this.scriptEditor.getValue();
this.data.data = JSON.parse(value);
}catch (e) {
var data = this.getEditorValidData( true );
if( data !== false ){
this.data.data = data;
}else{
return false;
}
}
......@@ -282,11 +313,10 @@ MWF.xApplication.process.DictionaryDesigner.Dictionary = new Class({
if( this.scriptPage.isShow ){
if( this.scriptEditor ){
try{
var value = this.scriptEditor.getValue();
this.data.data = JSON.parse(value);
}catch (e) {
this.designer.notice( this.designer.lp.notice.jsonParseError, "error", this.node, {"x": "left", "y": "bottom"});
var data = this.getEditorValidData();
if( data !== false ){
this.data.data = data;
}else{
return false;
}
}
......
......@@ -34,6 +34,11 @@ MWF.xApplication.process.DictionaryDesigner.LP = {
"emptyKey": "项目名称不能为空,请重新输入",
"numberKey": "项目名称不能为数字,请重新输入",
"sameObjectKey": "项目名称重复",
"emptyObjectKey": "项目名称不能为空",
"numberObjectKey": "项目名称不能为数字",
"editorNotValidated" : "请先修正编辑器报的错",
"inputName": "请输入数据字典名称和别名",
"noModifyName": "不能修改名称或者别名",
"jsonParseError" : "json格式错误,请先修正"
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册