DataSet_wev8.js
2.48 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={};this.mounted=function(){var r=this,a=r.$el,i=a.attr("data-initialized");if(a.attr("data-initialized",!0),vm.apiConfig){var n=$.Deferred();return require(["apiHelper"],function(a){a.callApi(vm.apiConfig,{},function(a){n.resolve();var e=vm.apiConfig.response.formats,t=e.DATAS?mUtil.getKeyValue(e.DATAS,a):a;vm.name&&(valueObj[vm.name]=t),i&&r.refreshDataSetVars()},function(a){n.resolve()})}),n}var e=mUtil.getActionUrl(this.type,{action:"parseData",mec_id:this.id},this.pageid);return mUtil.getJSON(e,function(a){valueObj=a.data.value;var e=a.data.log;e&&mUtil.log(e.logNode,e.content,e.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\\])?}","g"),regmatchStrs=text.match(regExp);if(regmatchStrs){regmatchStrs.map(function(a){-1<a.indexOf("[id]")&&(text=text.replace(a,a.replace("[id]","_original")))});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)),exprValue&&(text=text.replace(matchArr[0],exprValue)),++count>matchDeep)break}}catch(a){mUtil.console.error(a)}}else for(var k in data){var datak=original&&data[k+"_original"]||data[k];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,a=r.$container;$("wev-dataset[data-key^='"+vm.name+".']",a).each(function(){var a=$(this),e=r.replace("{"+a.attr("data-key")+"}");e!=a.html()&&a.html(e)}),$("wev-dataset[data-key*='{"+vm.name+"__ds__']",a).each(function(){var a=$(this).attr("data-key").replace(/__ds__/g,".").replace(/'/g,'"'),e=mUtil.replaceValAndVarParser("$"+r.replace(a)+";");$(this).html(e),i=!0}),$("wev-dataset[data-key='html']",a).each(function(){var a=$(this),e=a.attr("data-html").replace(/__ds__/g,".").replace(/'/g,'"'),t=r.replace(e);-1!=t.indexOf("$m.")&&(t=mUtil.replaceValAndVarParser(t),i=!0),t!=a.html()&&a.html(t)}),mUtil.renderVarParser(i)},this.getData=function(){return valueObj[vm.name]}};return Component.init(comp)});