1 |
- "use strict";app.controller("cmdbViewCtrl",["$rootScope","$scope","$state","$timeout","$interval","$aside","SweetAlert","toaster","Restangular","api_bpm_domain","api_configure_data","api_cmdb","api_configure_form",function(e,t,n,a,r,l,i,s,o,d,c,p,u){function f(e,t){for(var n={},a=null,r=null,l=0;l<e.length;l++){var i=e[l];i.children=[],n[i.id]=i,"undefined"==typeof i.parent||null==i.parent?(a=i,t[i.id]=a):(r=n[i.parent.id],delete i.parent,r.children.push(i))}return a}function y(e){var t={},n=[];return f(e,t),angular.forEach(t,function(e){n.push(e)}),n}function v(e){t.hideLink=e}function h(e){t.hideFeed=e}function g(e){q.length=0,J.length=0;for(var t=e.data,n=0;n<t.node.length;n++)q.push(t.node[n]);x()}function m(){c.fetchDataList("ciedgetype",{idx:0,sum:100}).then(function(e){e&&e.list?(z=e.list,d3.select("#linkName").selectAll("option").data(z).enter().append("option").attr("value",function(e){return e.type}).html(function(e){return e.label})):i.swal({title:"提示!",text:"服务器请求异常!",type:"error"})})}function k(){re=null,le=null,ae=null}function b(){Z.selectAll("path").attr("d",function(e){var t=e.target.x-e.source.x,n=e.target.y-e.source.y,a=Math.sqrt(t*t+n*n),r=t/a,l=n/a,i=e.left?27:22,s=e.right?27:22,o=e.source.x+i*r,d=e.source.y+i*l,c=e.target.x-s*r,p=e.target.y-s*l;return"M"+o+","+d+"L"+c+","+p}),ee.attr("transform",function(e){return"translate("+e.x+","+e.y+")"})}function x(){Z.datum(J),Z=Z.data(J,function(e){return e.id});var e=Z.enter().append("svg:g");Z.selectAll("path").classed("selected",function(e){return e===ne}).style("marker-start",function(e){return e.left?"url(#start-arrow)":""}).style("marker-end",function(e){return e.right?"url(#end-arrow)":""}),e.append("svg:path").attr("class","link").attr("id",function(e){return"path_"+e.id}).classed("selected",function(e){return e===ne}).style("marker-start",function(e){return e.left?"url(#start-arrow)":""}).style("marker-end",function(e){return e.right?"url(#end-arrow)":""}).on("mousedown",function(e){if(!d3.event.ctrlKey){for(var n=0;n<J.length;n++)J[n].id==-1&&e.id!=-1&&J.splice(n,1);ae=e,ae===ne?(ne=t.selected_link=null,te=t.selected_node=null,v(!0)):(ne=t.selected_link=ae,te=t.selected_node=null,se(ne,z)),te=t.selected_node=null,x()}}),e.append("svg:text").attr("x",30).attr("y",20).attr("class","fontM").append("textPath").attr("xlink:xlink:href",function(e,t){return"#path_"+e.id}).html(function(e){for(var t=0;t<z.length;t++)if(z[t].type==e.name)return z[t].label}),Z.exit().remove(),ee.datum(q),ee=ee.data(q,function(e){return e.id}),ee.selectAll("circle").style("fill",function(e){return e===te?d3.rgb(B(e.label)).brighter().toString():B(e.label)}).style("fill-opacity",.75).classed("reflexive",function(e){return e.reflexive});var n=ee.enter().append("svg:g");n.append("svg:circle").attr("r",24).style("fill",function(e){return e===te?"rgb(153,153,153)":"rgb(255,255,255)"}).style("stroke",function(e){return d3.rgb(B(e.label)).darker().toString()}).style("stroke-width","2"),n.append("svg:circle").attr("class","node").attr("r",18).style("fill",function(e){return e===te?d3.rgb(B(e.label)).brighter().toString():B(e.label)}).style("stroke",function(e){return d3.rgb(B(e.label)).darker().toString()}).style("fill-opacity",.25).style("stroke-opacity",.5).classed("reflexive",function(e){return e.reflexive}),n.on("mouseover",function(e){re&&e!==re&&d3.select(this).attr("transform","scale(1.1)")}).on("mouseout",function(e){re&&e!==re&&d3.select(this).attr("transform","")}).on("mousedown",function(e){if(!d3.event.ctrlKey){v(!0);for(var n=0;n<J.length;n++)J[n].id==-1&&J.splice(n,1);re=e,re===te?(te=t.selected_node=null,h(!0)):(te=t.selected_node=re,ne=t.selected_link=null,p.findRefById(te.id).then(function(e){for(var t=e.data,n=t.node,a=t.edge,r=[],l=[],i=0;i<n.length;i++){for(var s=0,o=0;o<q.length;o++)if(n[i].id==q[o].id){s++;break}0==s&&r.push(n[i])}for(var i=0;i<a.length;i++){for(var s=0,o=0;o<J.length;o++)if(a[i].id==J[o].id){s++;break}0==s&&l.push(a[i])}for(var i=0;i<r.length;i++)q.push(r[i]);for(var i=0;i<l.length;i++)J.push(l[i]);for(var i=0;i<J.length;i++)for(var o=0;o<q.length;o++)J[i].source==q[o].id&&(J[i].source=q[o]),J[i].target==q[o].id&&(J[i].target=q[o]);x()})),Q.style("marker-end","url(#end-arrow)").classed("hidden",!1).attr("d","M"+re.x+","+re.y+"L"+re.x+","+re.y),x()}}).on("mouseup",function(e){if(re){if(Q.classed("hidden",!0).style("marker-end",""),le=e,le===re)return void k();d3.select(this).attr("transform","");var n,a,r;re.id<le.id?(n=re,a=le,r="right"):(n=le,a=re,r="left");var l;if(l=J.filter(function(e){return e.source===n&&e.target===a})[0]){l[r]=!0,ne=l;var i=ne;i.id;p.createRef({id:i.id,name:i.name,source:i.source.id,target:i.target.id,left:i.left,right:i.right}).then(function(e){response&&200==response.status&&(ne.name=linkName,J.push(ne),x())})}else E(),l={id:-1,source:n,target:a,name:"",left:!1,right:!1},l[r]=!0,ne=l,J.push(l),se(l,z);ne=t.selected_link=l,te=t.selected_node=null,x()}}),n.append("svg:text").attr("x",0).attr("y",34).attr("class","id").text(function(e){return e.name}),n.append("svg:foreignObject").attr("width",32).attr("height",32).attr("x","-16px").attr("y","-11px").html(function(e){for(var t=0;t<H.length;t++)if(e.label==H[t].sign)return'<i class="icon iconfont">'+H[t].iconname+"</i>"}),ee.exit().remove(),W.start()}function w(){Y.classed("active",!0),re&&T(re),d3.event.ctrlKey||re||ae||x()}function T(e){t.selected_node.name+"-["+t.selected_node.uuid+"]";t.selected_node.props.state?t.selected_node.props.state&&("1"==t.selected_node.props.state?t.selected_node.props.state="未审核":"2"==t.selected_node.props.state?t.selected_node.props.state="已审核":"3"==t.selected_node.props.state?t.selected_node.props.state="不匹配":"4"==t.selected_node.props.state&&(t.selected_node.props.state="丢失")):t.selected_node.props.state="空",t.selected_node.name||(t.selected_node.name="空"),t.selected_node.status||(t.selected_node.statu="空"),t.selected_node.props.useradmin||(t.selected_node.props.useradmin="空"),s.pop({body:"<br/><p>搜索代码:"+t.selected_node.uuid+"</p><p>资产标题:"+t.selected_node.name+"</p><p>状态:"+t.selected_node.status+"</p><p>审核状态:"+t.selected_node.props.state+"</p><p>维护人员:"+t.selected_node.props.useradmin+"</p>",bodyOutputType:"trustedHtml",timeout:3e3})}function _(){re&&(Q.attr("d","M"+re.x+","+re.y+"L"+d3.mouse(this)[0]+","+d3.mouse(this)[1]),x())}function j(){re&&Q.classed("hidden",!0).style("marker-end",""),Y.classed("active",!1),k()}function A(){if(ie===-1&&(ie=d3.event.keyCode,17===d3.event.keyCode&&(ee.call(W.drag),Y.classed("ctrl",!0)),te||ne))switch(d3.event.keyCode){case 8:case 66:ne&&(ne.left=!0,ne.right=!0),x();break;case 76:ne&&(ne.left=!0,ne.right=!1),x();break;case 82:te?te.reflexive=!te.reflexive:ne&&(ne.left=!1,ne.right=!0),x()}}function N(){ie=-1,17===d3.event.keyCode&&(ee.on("mousedown.drag",null).on("touchstart.drag",null),Y.classed("ctrl",!1))}function B(e){for(var t=0;t<H.length;t++){var n=H[t];if(e==n.sign)return n.color;if(t==H.length-1&&e!=n.sign)return"#ffeeee"}}function L(){var e=d3.select("#nodeAssetNo").property("value"),t=d3.select("#nodeName").property("value"),n=d3.select("#nodeType").property("value"),a=d3.select("#nodeLabel").property("value"),r=d3.select("#nodeStatus").property("value");$.ajax({type:"POST",contentType:"application/json; charset=UTF-8",url:window.basePath+"/api/cmdb/ci",data:JSON.stringify({name:t,status:r,type:n,label:a,assetNo:e,props:te.props}),dataType:"json",success:function(e){if(200==e.status){var t=e.data.node[0];t.x=634,t.y=265.5625,q.push(t),te=t,x(),h(!0)}},error:function(e){jAlert("服务器请求异常","提示")}})}function C(){d3.select("#nodeAssetNo").property("value",void 0==te.assetNo?"":te.assetNo),d3.select("#nodeName").property("value",void 0==te.name?"":te.name),d3.select("#nodeType").property("value",void 0==te.type?"":te.type),d3.select("#nodeLabel").property("value",void 0==te.label?"":te.label);for(var e=0;e<G.length;e++)if(te.label==G[e].sign){d3.select("#citySel").property("value",G[e].label);break}if(d3.select("#nodeStatus").property("value",void 0==te.status?"":te.status),d3.select("#nodeTab").selectAll("tr").remove("tr"),te.label);}function P(){var e=t.linkName=void 0==ne.name?"":ne.name;t.linkCost=void 0==ne.cost?"":ne.cost,d3.select("#linkTab").selectAll("tr").remove("tr");for(var n,a=0;a<z.length;a++)e==z[a].type&&(n=z[a].id);var r=ne.props,l=[];for(var i in r)l.push(i);l=[];for(var i in ne.props)l.push(i);l&&d3.select("#linkTab").selectAll("tr").data(l).enter().append("tr").attr("id",function(e){return"trLink"+e}).html(function(e){var t="";if(""==e){var a="";return a='<input type="text" id="inputLink'+e+'" value="'+r[e]+'" disabled/>',t+='<td style="padding-left: 0px;width:145px;"><span id="spanLink'+e+'" style="width:50px;text-align:right;">未定义:</span><input type="hidden" id="selectLink'+e+'" style="width: 90px;margin-left: 52px;"/></td><td style="padding-left: 21px;">'+a+'</td><td><input id="edtBtnLink'+e+'" type="button" name="edtBtn" style="background-image:url(css/img/tup/xiug.jpg);width:22px;height:22px;" onclick="edtBtnLinkClk(\'text\',\''+e+'\',\'未定义\',\'0\')" /> <input type="button" value="" style="background-image:url(css/img/tup/del.jpg);width:22px;height:22px;" onclick=\'delBtnLinkClk("'+e+"\")'/></td>"}for(var l=0;l<params.length;l++){var i=params[l];if(2==i.sourceType&&e==i.key&&i.sourceId==n){var a="";if(a="date"==i.valueType?'<input id="inputLink'+e+'" placeholder="请输入日期" style="width: 151px;" class="laydate-icon" onClick="laydate({istime: true, format: \'YYYY-MM-DD hh:mm:ss\'})" value="'+r[e]+'" disabled>':'<input type="text" id="inputLink'+e+'" value="'+r[e]+'" disabled/>',1==i.fix){t+='<td style="width:145px;"><span id="spanLink'+e+'">'+i.descName+':</span></td><td style="padding-left: 21px;">'+a+'</td><td><input id="edtBtnLink'+e+'" type="button" name="edtBtn" style="background-image:url(css/img/tup/xiug.jpg);width:22px;height:22px;" onclick="edtBtnLinkClk(\''+i.valueType+"','"+e+"','"+i.descName+"','"+i.fix+"')\" /> </td>";break}t+='<td style="width:145px;"><span id="spanLink'+e+'">'+i.descName+':</span><input type="hidden" id="selectLink'+e+'" style="width: 90px;margin-left: 52px;"/></td><td style="padding-left: 21px;">'+a+'</td><td><input id="edtBtnLink'+e+'" type="button" name="edtBtn" style="background-image:url(css/img/tup/xiug.jpg);width:22px;height:22px;" onclick="edtBtnLinkClk(\''+i.valueType+"','"+e+"','"+i.descName+"','"+i.fix+'\')" /> <input type="button" value="" style="background-image:url(css/img/tup/del.jpg);width:22px;height:22px;" onclick=\'delBtnLinkClk("'+e+"\")'/></td>";break}}return t}),v(!1)}function S(){te||ne?jConfirm("确定删除?","提示",function(e){if(e){if(te){var t=te.id,n=te.name,a=te.type,r=te.label,l=te.assetNo,i=te.props,s=CMConstants.DISCARDE;$.ajax({type:"PUT",contentType:"application/json; charset=UTF-8",url:window.basePath+"/api/cmdb/ci/"+t,data:JSON.stringify({id:t,name:n,status:s,type:a,label:r,assetNo:l,props:i}),dataType:"json",success:function(e){200==e.status&&(jAlert("删除成功!","提示"),te.type=a,te.status=s,te.label=r,te.assetNo=l,te.props=i,te.name=n,x(),query(r,""))},error:function(e){jAlert("服务器请求异常","提示")}})}}else jAlert("请求异常","提示")}):jAlert("请先选择删除项!","提示")}function D(e){if(te){var t=null;d3.xhr(window.basePath+"/api/cm/findLabel?sign="+e).send("GET",function(e,n){e||(t=JSON.parse(n.responseText).id,$.ajax({type:"GET",url:window.basePath+"/api/cm/findByPro",data:{sourceType:1,sourceId:t},dataType:"json",success:function(e){for(var t=[],n=0;n<e.length;n++){var a=e[n];if(1==a.fix){var r=a.key;t.push(r),te.props[r]=""}}d3.select("#nodeTab").selectAll("tr").remove("tr"),d3.select("#nodeTab").selectAll("tr").data(t).enter().append("tr").attr("id",function(e){return"tr"+e}).html(function(t){for(var n="",a="",r=0;r<e.length;r++){var l=e[r];if(1==l.fix&&l.key==t){a="date"==l.valueType?'<input id="input'+t+'" placeholder="请输入日期" style="width: 151px;" class="laydate-icon" onClick="laydate({istime: true, format: \'YYYY-MM-DD hh:mm:ss\'})" value="" disabled>':'<input type="text"\t id="input'+t+'" value="" disabled/>',n+='<td style="padding-left: 0px;width:145px;"><span id="span'+t+'">'+l.descName+':</span></td><td style="padding-left: 21px;">'+a+'</td><td><input id="edtBtn'+t+'" name="edtBtn" type="button" style="background-image:url(css/img/tup/xiug.jpg);width:22px;height:22px;" onclick="edtBtnClk(\''+l.valueType+"','"+t+"','"+l.descName+"','"+l.fix+"')\" /> </td>";break}}return n})},error:function(e){jAlert("服务器访问异常!","提示")}}))})}else if(ne){for(var n=null,a=0;a<z.length;a++)e==z[a].type&&(n=z[a].id);null!=n&&$.ajax({type:"GET",url:window.basePath+"/api/cm/findByPro",data:{sourceType:2,sourceId:n},dataType:"json",success:function(e){for(var t=[],n=0;n<e.length;n++){var a=e[n];if(1==a.fix){var r=a.key;t.push(r),ne.props[r]=""}}d3.select("#linkTab").selectAll("tr").remove("tr"),d3.select("#linkTab").selectAll("tr").data(t).enter().append("tr").attr("id",function(e){return"tr"+e}).html(function(t){for(var n="",a="",r=0;r<e.length;r++){var l=e[r];if(1==l.fix&&l.key==t){a="date"==l.valueType?'<input id="inputLink'+t+'" placeholder="请输入日期" style="width: 151px;" class="laydate-icon" onClick="laydate({istime: true, format: \'YYYY-MM-DD hh:mm:ss\'})" value="" disabled>':'<input type="text" id="inputLink'+t+'" value="" disabled/>',n+='<td style="padding-left: 0px;width:145px;"><span id="spanLink'+t+'">'+l.descName+':</span></td><td style="padding-left: 21px;">'+a+'</td><td><input id="edtBtnLink'+t+'" type="button" name="edtBtn" style="background-image:url(css/img/tup/xiug.jpg);width:22px;height:22px;" onclick="edtBtnLinkClk(\''+l.valueType+"','"+t+"','"+l.descName+"','"+l.fix+"')\" /> </td>";break}}return n})},error:function(e){jAlert("服务器访问异常!","提示")}})}}function O(){te.props?te.props[""]="未定义":te.props={"":"未定义"},M(),C()}function M(){te?(te.assetNo=d3.select("#nodeAssetNo").property("value"),te.name=d3.select("#nodeName").property("value"),te.type=d3.select("#nodeType").property("value"),te.label=d3.select("#nodeLabel").property("value"),te.status=d3.select("#nodeStatus").property("value")):ne&&(ne.name=d3.select("#linkName").property("value"),ne.cost=d3.select("#linkCost").property("value"))}function U(){ne&&(ne.props?ne.props[""]="未定义":ne.props={"":"未定义"},M(),P())}function E(){for(var e=0;e<J.length;e++)if(J[e].id==-1){J.splice(e,1);break}}var F,I=t.width=650,R=t.height=400;t.my_tree_handler=function(e){var n=t.classify=e.prefix.toLowerCase()+e.sign;p.query({sign:n}).then(function(e){var t=o.stripRestangular(e);if(t.data&&200==t.status){t.data;g(t)}})},t.my_data=[],t.my_tree=F={},t.try_async_load=function(){t.my_data=[],t.select_treedata=[],t.doing_async=!0,c.fetchDataList("ciclassify",{idx:0,sum:100}).then(function(e){t.select_treedata=t.my_data=y(e.list),t.doing_async=!1,F.expand_all()})},t.select_treedata=[],t.propTypeOptions=[],t.try_async_load(),t.onFilterCallback=function(e){if(angular.isDefined(e.children)&&e.children.length>=1);else{var n=e.prefix.toLowerCase()+e.sign;t.cifilter_classic=n,u.renderTabForm(n).then(function(e){var n=o.stripRestangular(e);t.propTypeOptions=n})}},t.onPropTypeChange=function(e){t.propOptions=e.fields},t.onPropChange=function(e){t.cifilter_prop=e},t.searchCI=function(e,n,a){var r={};angular.isUndefined(n)&&(n=t.cifilter_prop),angular.isUndefined(a)&&(a=t.cifilter_classic),r.sign=a,angular.isDefined(n)&&(r[n.key]=e),p.query(r).then(function(e){for(var t=o.stripRestangular(e),n=t.data.node,a=[],r=0;r<n.length;r++){for(var l=0,i=0;i<q.length;i++)if(n[r].uuid==q[i].uuid){l++;break}0==l&&a.push(n[r])}for(var r=0;r<a.length;r++)q.push(a[r]);x()})},t.refresh=function(){q.length=0,J.length=0,x()},t.remove=function(){if(null==t.selected_link)i.swal({title:"错误的操作!",text:"没有资产关系被选中!",type:"error"});else if(null!=t.selected_node)i.swal({title:"错误的操作!",text:"资产不能在此处删除!",type:"error"});else if(t.selected_link.id==-1)i.swal({title:"错误的操作!",text:"资产关系尚未提交,不能删除!",type:"error"});else if(null!=t.selected_link){for(var e=t.selected_link.id,n=t.selected_link.name,a=0;a<z.length;a++)z[a].type==t.selected_link.name&&(n=z[a].label);i.swal({title:"确认删除资产关系-"+n+"?",text:"删除资产关系-"+n+"以后,你将不能恢复该数据!",type:"warning",cancelButtonText:"取消",showCancelButton:!0,confirmButtonColor:"#DD6B55",confirmButtonText:"确认删除!"},function(n){n&&p.removeRef(e).then(function(e){e&&200==e.status?(J.splice(J.indexOf(t.selected_link),1),x()):i.swal({title:"系统错误!",text:"系统错误,请稍候重试或者联系管理员!",type:"error"})})})}},t.traversal=function(){if(null==t.selected_node)i.swal({title:"错误的操作!",text:"没有资产被选中!",type:"error"});else{var e=t.selected_node.uuid;p.traversal(e).then(function(e){for(var t=e.data,n=t.node,a=t.edge,r=[],l=[],i=0;i<n.length;i++){for(var s=0,o=0;o<q.length;o++)if(n[i].id==q[o].id){s++;break}0==s&&r.push(n[i])}for(var i=0;i<a.length;i++){for(var s=0,o=0;o<J.length;o++)if(a[i].id==J[o].id){s++;break}0==s&&l.push(a[i])}for(var i=0;i<r.length;i++)q.push(r[i]);for(var i=0;i<l.length;i++)J.push(l[i]);for(var i=0;i<J.length;i++)for(var o=0;o<q.length;o++)J[i].source==q[o].id&&(J[i].source=q[o]),J[i].target==q[o].id&&(J[i].target=q[o]);x()})}};var Y=d3.select("#cmdbSVG").append("svg").attr("width",I).attr("height",R),q=[],J=[],G=[],H=[];t.query=function(){K("","")};var K=function(e,t){var n={sign:e,q:t};p.query(n).then(function(e){if(e&&200==e.status){for(var t=e.data,n=0;n<t.node.length;n++)q.push(t.node[n]);x()}else i.swal({title:"提示!",text:"访问服务器出错!",type:"error"})})},X=[];c.fetchDataList("cistatus",{idx:0,sum:100}).then(function(e){e&&200==e.status?d3.select("#nodeStatus").selectAll("option").data(X).enter().append("option").attr("value",function(e){return e.code}).html(function(e){return e.desc}):i.swal({title:"提示!",text:"服务器请求异常!",type:"error"})});var z=[];m();var V=[{id:1,key:"string",value:"文本类型"},{id:2,key:"date",value:"日期类型"},{id:3,key:"int",value:"数字类型"},{id:4,key:"float",value:"浮点类型"}],W=d3.layout.force().nodes(q).links(J).size([I,R]).gravity(.05).linkDistance(150).linkStrength(2).charge(-500).on("tick",b);Y.append("svg:defs").append("svg:marker").attr("id","end-arrow").attr("viewBox","0 -5 10 10").attr("refX",6).attr("markerWidth",3).attr("markerHeight",3).attr("orient","auto").append("svg:path").attr("d","M0,-5L10,0L0,5").attr("fill","#000"),Y.append("svg:defs").append("svg:marker").attr("id","start-arrow").attr("viewBox","0 -5 10 10").attr("refX",4).attr("markerWidth",3).attr("markerHeight",3).attr("orient","auto").append("svg:path").attr("d","M10,-5L0,0L10,5").attr("fill","#000");var Q=Y.append("svg:path").attr("class","link dragline hidden").attr("d","M0,0L0,0"),Z=Y.append("svg:g").selectAll("g"),ee=Y.append("svg:g").selectAll("g"),te=null,ne=null,ae=null,re=null,le=null,ie=-1;Y.on("mousedown",w).on("mousemove",_).on("mouseup",j),d3.select(window).on("keydown",A).on("keyup",N);var se=function(e,t){var n=l.open({templateUrl:"assets/views/system/tpl/asideContent.html",placement:"right",size:"sm",backdrop:!0,controller:function(e,t,n,a){e.modelData=n,e.linktypeOptions=a,""!=e.modelData.name&&angular.forEach(e.linktypeOptions,function(t){t.type==e.modelData.name&&(e.modelData.linkName=t)}),e.ok=function(n){t.close(e.modelData)},e.cancel=function(e){t.dismiss()}},resolve:{ModelData:function(){return e},optionLinkTypes:function(){return t}}});n.result.then(function(t){t.id==-1?p.createRef({id:t.id,name:t.linkName.type,source:t.source.id,target:t.target.id,left:t.left,right:t.right}).then(function(e){if(e&&200==e.status){for(var t=e.data.edge[0],n=0;n<q.length;n++)t.source==q[n].id&&(t.source=q[n]),t.target==q[n].id&&(t.target=q[n]);J.push(t),x()}}):p.putRef({id:t.id,name:t.linkName.type,source:t.source.id,target:t.target.id,left:t.left,right:t.right},t.id).then(function(t){t&&200==t.status&&(angular.forEach(J,function(n,a){if(n.name==e.name){J[a]=t.data.edge[0];for(var r=0;r<q.length;r++)J[a].source==q[r].id&&(J[a].source=q[r]),J[a].target==q[r].id&&(J[a].target=q[r])}}),x())})},function(){})},oe={};oe.add=L,window.CI=oe,d3.select("#traversal").selectAll("a").data([{name:"遍历",id:"traversalBtn"}]).enter().append("a").html(function(e){return e.name}).on("click",function(e){"traversalBtn"==e.id&&(null==te||$.ajax({type:"GET",url:window.basePath+"/api/cmdb/traversal/"+te.assetNo,dataType:"json",success:function(e){for(var t=e.data,n=t.node,a=t.edge,r=[],l=[],i=0;i<n.length;i++){for(var s=0,o=0;o<q.length;o++)if(n[i].id==q[o].id){s++;break}0==s&&r.push(n[i])}for(var i=0;i<a.length;i++){for(var s=0,o=0;o<J.length;o++)if(a[i].id==J[o].id){s++;break}0==s&&l.push(a[i])}for(var i=0;i<r.length;i++)q.push(r[i]);for(var i=0;i<l.length;i++)J.push(l[i]);for(var i=0;i<J.length;i++)for(var o=0;o<q.length;o++)J[i].source==q[o].id&&(J[i].source=q[o]),J[i].target==q[o].id&&(J[i].target=q[o]);x()},error:function(){}}))}),d3.select("#layout").selectAll("a").data([{name:"布局",id:"layoutBtn"}]).enter().append("a").html(function(e){return e.name}).on("click",function(e){if("layoutBtn"==e.id){var t=Math.sqrt(q.length/(I*R));W.charge(-10/t*1.5),W.gravity(100*t),W.resume()}}),d3.select("#addsss").selectAll("a").data([{name:"添加",id:"addBtn"}]).enter().append("a").html(function(e){return e.name}).on("click",function(e){if("addBtn"==e.id)return te={id:-1},d3.select("#nodeAssetNo").property("value",""),d3.select("#nodeName").property("value",""),d3.select("#nodeType").property("value",""),d3.select("#nodeLabel").property("value",""),d3.select("#nodeStatus").property("value",""),d3.select("#nodeTab").selectAll("tr").remove(),show("feedbox"),!1}),d3.select("#delsss").selectAll("a").data([{name:"删除",id:"delBtn"}]).enter().append("a").html(function(e){return e.name}).on("click",function(e){"delBtn"==e.id&&S()}),d3.select("#uppsss").selectAll("a").data([{name:"修改",id:"edtBtn"}]).enter().append("a").html(function(e){return e.name}).on("click",function(e){if("edtBtn"==e.id){if(null!=te)return show("feedbox"),!1;jAlert("请选择设备","提示")}}),d3.select("#subBtn").on("click",function(e){var t=d3.select("#nodeAssetNo").property("value"),n=d3.select("#nodeLabel").property("value"),a=te.props;for(var r in a)if(""==r)return void jAlert("您有未定义属性,请删除或编辑!","提示");if(""==t)return void jAlert("请输入资产编号!","提示");if(null==n||""==n)return void jAlert("请选择资产类型!","提示");if(te.id==-1)L();else{var l=te.id,i=d3.select("#nodeName").property("value"),s=d3.select("#nodeType").property("value"),o=d3.select("#nodeStatus").property("value");$.ajax({type:"PUT",contentType:"application/json; charset=UTF-8",url:window.basePath+"/api/cmdb/ci/"+l,data:JSON.stringify({id:l,name:i,status:o,type:s,label:n,assetNo:t,props:te.props}),dataType:"json",success:function(e){200==e.status&&(jAlert("更新成功!","提示"),te.assetNo=t,te.name=i,te.type=s,te.label=n,te.status=o,x())},error:function(e){jAlert("服务器请求异常","提示")}})}}),d3.select("#subBtn1").on("click",function(e){var t=d3.select("#linkName").property("value"),n=d3.select("#linkCost").property("value"),a=ne.id,r=ne.props;for(var l in r)if(""==l)return void jAlert("您有未定义属性,请删除或编辑!","提示");if(a==-1){ne.name=t,ne.cost=n;var i=ne;$.ajax({type:"POST",contentType:"application/json; charset=UTF-8",url:window.basePath+"/api/cmdb/edge",data:JSON.stringify({id:i.id,name:i.name,status:i.status,cost:i.cost,left:i.left,right:i.right,source:i.source.id,target:i.target.id,props:i.props}),dataType:"json",success:function(e){if(200==e.status){var t=e.data.edge[0];jAlert("添加成功!","提示"),ne.id=t.id,x(),v(!0)}},error:function(e){jAlert("服务器请求异常","提示")}})}else $.ajax({type:"PUT",contentType:"application/json; charset=UTF-8",url:window.basePath+"/api/cmdb/edge/"+a,data:JSON.stringify({id:a,name:t,cost:n,props:ne.props}),dataType:"json",success:function(e){200==e.status&&(jAlert("更新成功!","提示"),ne.name=t,ne.cost=n,x(),P())},error:function(e){jAlert("服务器请求异常","提示")}})});var de="";d3.select("#linkName").on("change",function(){var e=0;for(var t in ne.props){e++;break}var n=this;e>0?jConfirm("更换名称选项,动态属性将会被删除,是否继续?","提示",function(e){return e?(ne.name=n.value,ne.props={},P(),ne.props={},D(n.value),void 0):void(n.value=ne.name)}):(ne.name=n.value,ne.props={},D(n.value))}),d3.select("#addBtn").on("click",function(){var e=d3.select("#nodeLabel").property("value");""!=e?O():jAlert("请先选择资产类型!","提示")}),d3.select("#proType").selectAll("option").data(V).enter().append("option").attr("value",function(e){return e.key}).html(function(e){return e.value}),d3.select("#addSubBtn").on("click",function(){if(te){for(var e=d3.select("#proType").property("value"),t=d3.select("#proNo").property("value"),n=d3.select("#select"+de).property("value"),a=d3.select("#nodeLabel").property("value"),r="",l=0;l<H.length;l++)if(H[l].sign==a){r=H[l].id;break}$.ajax({type:"GET",url:window.basePath+"/api/cm/findByPros",data:{sourceType:1,sourceId:r,keyname:t},dataType:"text",success:function(a){0==a?$.ajax({type:"POST",contentType:"application/json; charset=UTF-8",url:window.basePath+"/api/cm/dynparam",data:JSON.stringify({descName:n,key:t,sourceId:r,sourceType:1,valueType:e,fix:0}),dataType:"json",success:function(e){var a=te.props;for(var r in a)if(r==de)return delete a[r],a[t]=n,d3.select("#overlay").style("display","none"),d3.select("#win").style("display","none"),initParams(),void x()},error:function(e){jAlert("服务器请求异常","提示")}}):jAlert("此属性编号已存在,请重新输入编号!","提示")},error:function(e){jAlert("服务器访问异常!","提示")}})}else if(ne){for(var i,e=d3.select("#proType").property("value"),t=d3.select("#proNo").property("value"),n=d3.select("#selectLink"+de).property("value"),s=d3.select("#linkName").property("value"),l=0;l<z.length;l++)s==z[l].type&&(i=z[l].id);$.ajax({type:"GET",url:window.basePath+"/api/cm/findByPros",data:{sourceType:2,sourceId:i,keyname:t},dataType:"text",success:function(a){0==a?$.ajax({type:"POST",contentType:"application/json; charset=UTF-8",url:window.basePath+"/api/cm/dynparam",data:JSON.stringify({descName:n,key:t,sourceId:i,sourceType:2,valueType:e,fix:0}),dataType:"json",success:function(e){var a=ne.props;for(var r in a)if(r==de)return delete a[r],a[t]=n,d3.select("#overlay").style("display","none"),d3.select("#win").style("display","none"),void initParams()},error:function(e){jAlert("服务器请求异常","提示")}}):jAlert("此属性编号已存在,请重新输入编号!","提示")},error:function(e){jAlert("服务器访问异常!","提示")}})}}),d3.select("#addResBtn").on("click",function(){d3.select("#overlay").style("display","none"),d3.select("#win").style("display","none")}),d3.select("#close").on("click",function(){d3.select("#overlay").style("display","none"),d3.select("#win").style("display","none")}),d3.select("#addBtn1").on("click",function(){U()}),d3.select("#addResBtn1").on("click",function(){d3.select("#overlay1").style("display","none"),d3.select("#win1").style("display","none")}),d3.select("#importData").on("click",function(){d3.select("#overlay1").style("display","block"),d3.select("#win1").style("display","block")}),d3.select("#importBtn").on("click",function(){var e=d3.select("#importFile").property("value"),t=e.substring(e.lastIndexOf(".")+1,e.length);if("xls"!=t&&"xlsx"!=t)return void jAlert("请选择EXCEL文件!","提示");var n=$("#myform")[0];n.method="POST",n.action=window.basePath+"/api/cm/importFile",n.submit(),jAlert("上传成功!","提示"),d3.select("#overlay1").style("display","none"),d3.select("#win1").style("display","none")})}]);
|