微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

BI前端二次开发工具(作品1)

1.这是二次开发工具

2.不同的配置将产生不同的布局,每个布局完成一项工作内容

3.使用一个协调者消息控制器,布局管理器,请求管理器完成所有业务操作

4.消息控制器负责低耦合的消息分发,通知面板(消息管理器的子集)去做相应行为,面板接受到消息后根据面板自己所配置的功能类型发送消息给请求管理器,请求管理器负责ajax到后台获取业务数据,异步展现在相应面板。



消息机制




场景(应用,业务场景)




布局配置(一个JSON数据,配置一个工作内容)




每个面板是一个jQuery插件,组合成一个布局



配置出一个九宫格布局



劝诱功能的布局



消息管理器代码(当时用的VS,js代码格式化较差)




配置参数数据



消息管理器代码

//消息管理器 var MM = {     msgQueue: new Diablo.Queue(),    //消息入队     enMsgQueue: function (message) {         this.msgQueue.EnQueue(message);         if (config.IsImdtExcMsg) {             this.excuteMsgHead(true,false);         }     },    //执行消息     excuteMsgHead: function (isDequeue,isPrintQHead) {         var thisMsg = this.msgQueue.GetHead();         if (isDequeue) {             this.msgQueue.DeQueue();         }         try {             if (config.LogConfig.level >= 1 && config.LogConfig.isLogInfo) {                 var msgNeedPrint = Diablo.cloneJSON(thisMsg);                 if (!config.LogConfig.isLogContent) {                     var delParamjson = msgNeedPrint.paramjson;                     msgNeedPrint.paramjson = { '提示': '设置未显示' };                     Diablo.printLog('消息',false,'CM',JSON.stringify(msgNeedPrint));                 }                 else {                     var delParamjson = msgNeedPrint.paramjson;                     msgNeedPrint.paramjson = { '提示': '在Post数据中显示' };                     Diablo.printLog('消息',JSON.stringify(msgNeedPrint),'Post数据',JSON.stringify(delParamjson));                 }             }         }         catch (err) {             if (config.LogConfig.level >= 4 && config.LogConfig.isLogInfo) {                 Diablo.printLog('语言级别',true,'转换JSON到字符串','失败');             }         }         var zrw = '';         if (thisMsg.cmd) {             if (thisMsg.dst === 'LM') {                 LM.getMessage(thisMsg);             }             else if (thisMsg.dst === 'RM') {                 RM.getMessage(thisMsg);             }             else {                 var zrw = '';                 $('.' + thisMsg.cmd).each(function (e) {                     var $this = $(this);                     switch ($this.attr('data-swing-type')) {                         case 'swingGrid':                             $this.swingGrid('getMessage',thisMsg);                             break;                         case 'swingInputs':                             $this.swingInputs('getMessage',thisMsg);                             break;                         case 'swingDivMenu':                             var zrw = '';                             $this.swingDivMenu('getMessage',thisMsg);                             break;                         case 'swingLogin':                             var zrw = '';                             $this.swingLogin('getMessage',thisMsg);                             break;                         case 'swingScrollSelector':                             var zrw = '';                             $this.swingScrollSelector('getMessage',thisMsg);                             break;                         case 'swingBlockSelector':                             var zrw = '';                             $this.swingBlockSelector('getMessage',thisMsg);                             break;                         case 'swingAdviceEnticeMenu':                             var zrw = '';                             $this.swingAdviceEnticeMenu('getMessage',thisMsg);                             break;                         case 'swingAdviceEnticeContentA':                             var zrw = '';                             $this.swingAdviceEnticeContentA('getMessage',thisMsg);                             break;                         case 'swingDataSetManager':                             var zrw = '';                             $this.swingDataSetManager('getMessage',thisMsg);                             break;                         case 'swingDefaultFooter':                             var zrw = '';                             $this.swingDefaultFooter('getMessage',thisMsg);                             break;                         case 'swingDefaultHeader':                             var zrw = '';                             $this.swingDefaultHeader('getMessage',thisMsg);                             break;                         case 'swingTitleMenu':                             var zrw = '';                             $this.swingTitleMenu('getMessage',thisMsg);                             break;                         case 'swingConfiger':                             var zrw = '';                             $this.swingConfiger('getMessage',thisMsg);                             break;                         default:                             break;                     }                 })             }         }     },    //发送命令     sendMsg: function (e,msg) {         $this = $(this);         if (msg) {             MM.enMsgQueue(msg);         }         else {             if (config.LogConfig.level >= 1 && config.LogConfig.isLogErr) {                 var msgObjDetail = Diablo.testObj(msg);                 Diablo.printLog('消息','发送命令','错误','错误详情','命令为' + msgObjDetail);             }         }     } }

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐