DataSet_wev8.js
2.65 KB
define(["mUtil","Component","mApi/other"],function(mUtil,Component){var comp=function(options){Component.super(this,options),this.type="DataSet";var vm=this.viewModel={},valueObj={},_ds={},logObj={};this.mounted=function(){var r=this,e=r.$el,i=e.attr("data-initialized");if(e.attr("data-initialized",!0),require(["lazyImgHelper"]),vm.apiConfig){var n=$.Deferred();return require(["apiHelper"],function(e){e.callApi(vm.apiConfig,{},function(e){n.resolve();var t=vm.apiConfig.response.formats,a=t.DATAS?mUtil.getKeyValue(t.DATAS,e):e;vm.name&&(valueObj[vm.name]=a),i&&r.refreshDataSetVars()},function(e){n.resolve()})}),n}var t=mUtil.getActionUrl(this.type,{action:"parseData",mec_id:this.id},this.pageid);return mUtil.getJSON(t,function(e){valueObj=e.data.value,(logObj=e.data.log)&&mUtil.log(logObj.logNode,logObj.content,logObj.status),i&&r.refreshDataSetVars()})},this.replace=function(text,original){if(!valueObj)return text;for(var name in valueObj){var regExp=new RegExp("{("+name+"(\\.(\\w+(\\[\\d+\\])?))+)((\\[id\\])|(\\[text\\]))?}","g"),regmatchStrs=text.match(regExp);if(regmatchStrs){regmatchStrs.map(function(e){-1<e.indexOf("[id]")&&(text=text.replace(e,e.replace("[id]","_original"))),-1<e.indexOf("[text]")&&(text=text.replace(e,e.replace("[text]","")))});var data=valueObj[name];if(mUtil.isArray(data)&&(data=data[0]||{}),vm.apiConfig){var matchArr,matchDeep=50,count=0,dataObj={};dataObj[name]=data;try{for(;matchArr=regExp.exec(text);){var exprValue=eval("dataObj."+matchArr[1]);if((mUtil.isObject(exprValue)||mUtil.isArray(exprValue))&&(exprValue=JSON.stringify(exprValue)),!mUtil.isEmpty(exprValue)&&(text=text.replace(matchArr[0],exprValue)),++count>matchDeep)break}}catch(e){mUtil.console.error(e)}}else for(var k in data){var datak=original&&data[k+"_original"]||data[k];!mUtil.isEmpty(datak)&&(text=text.replace(new RegExp("{"+name+"\\."+k+"}","gi"),mUtil.replaceAttachUrl(datak)))}text=text.replace(regExp,"")}}return text},this.refreshDataSetVars=function(){var r=this,i=!1,e=r.$container;$("wev-dataset[data-key^='"+vm.name+".']",e).each(function(){var e=$(this),t=r.replace("{"+e.attr("data-key")+"}");t!=e.html()&&e.html(t)}),$("wev-dataset[data-key*='{"+vm.name+"__ds__']",e).each(function(){var e=$(this).attr("data-key").replace(/__ds__/g,".").replace(/'/g,'"'),t=mUtil.replaceValAndVarParser("$"+r.replace(e)+";");$(this).html(t),i=!0}),$("wev-dataset[data-key='html']",e).each(function(){var e=$(this),t=e.attr("data-html").replace(/__ds__/g,".").replace(/'/g,'"'),a=r.replace(t);-1!=a.indexOf("$m.")&&(a=mUtil.replaceValAndVarParser(a),i=!0),a!=e.html()&&e.html(a)}),mUtil.renderVarParser(i)},this.getData=function(){return valueObj[vm.name]}};return Component.init(comp)});