UNPKG

quoslibero

Version:

FusionCharts JavaScript charting framework

1 lines 27.6 kB
import{ComponentInterface}from'../../../../../fc-core/src/component-interface';import DragNodeLabels from'../../dragnode/dragablelabels';import{toRaphaelColor,preDefStr,COMMASTRING,getFirstValue,pluck,BLANKSTRING,fcEach,hashify,HASHSTRING,pluckNumber,componentDispose,extend2,componentFactory,parseColor,getValidColor}from'../../../../../fc-core/src/lib';let UNDEF,CLEAR_TIME_1000=1e3,shapesInfo={circle:'circ',rectangle:'rect',polygon:'poly'},INPUT=preDefStr.INPUT,BLANKSPACE=preDefStr.BLANKSPACE,BLANK=preDefStr.BLANK,COLOR_FFFFFF='ffffff',PX=preDefStr.PX,COLOR_000000='000000',OPTIONSTR='<option>',OPTIONCLOSESTR='</option>',LABEL=preDefStr.LABEL,DATASET=preDefStr.DATASET,COMMA=preDefStr.COMMA,DATASETSTATE='appearing',defined=function(a){return a!==UNDEF&&null!==a},makeShapeSpecificModifications=function(a,b){switch(a.shape){case preDefStr.CIRCLE:a.radius=b.radius;break;case preDefStr.POLYGON:a.radius=b.radius,a.sides=b.numsides;break;default:a.width=b.width,a.height=b.height;}},_showNodeUpdateUI=function(){var a=function(){for(var a,b=this.getGraphicalElement('cacheUpdateUI'),c=b.fields,d=c.shape,e=['rectWidth','rectHeight','circPolyRadius','polySides'],f=e.length;f--;)a=e[f],/rect|poly|circ/ig.test(a)&&(b.labels[a].hide(),b.fields[a].hide()),new RegExp(pluck(d.val(),'rect'),'ig').test(a)&&(b.labels[a].show(),b.fields[a].show())},b=function(){var a=this.getGraphicalElement('cacheUpdateUI'),b=a.fields,c=getValidColor(b.color.val());c&&b.colorOut.css({background:parseColor(c)})},c=function(a){var b,c,d,e=this,f=e.getGraphicalElement('cacheUpdateUI'),g=e.getFromEnv('animationManager'),h=f.fields,j=h.image,k=e.getFromEnv('chartConfig').height,l=j.val(),m=['imgWidth','imgHeight','imgAlign','imgUrl'];for(b=l?250:215,a&&(f.ok.hide(),f.cancel.hide(),f.removeItem.hide(),f.error.hide()),c=m.length;!l&&c--;)d=m[c],f.labels[d].hide(),f.fields[d].hide();a&&g.setAnimationState('uichange'),g.setAnimation({el:f.dialog,state:'updating',attr:{top:(k-b)/2,height:b},component:e,label:'uidialog',callback:function(){for(c=m.length;c--&&l;)d=m[c],f.labels[d].show(),f.fields[d].show();f.ok.attr({y:b-23-5}).show(),f.cancel.attr({y:b-23-5}).show(),f.removeItem.attr({y:b-23-5}),f.error.attr({y:b-23-5+4}).show(),f.edit?f.removeItem.show():f.removeItem.hide()}})};return function(d,e){var f,g,h=this,i=h.getGraphicalElement('cacheUpdateUI'),j=h.getFromEnv('style').inCanvasStyle||{},k=h.getFromEnv('paper'),l={width:80+PX,border:'1px solid #cccccc',fontSize:10+PX,lineHeight:15+PX,padding:2+PX,fontFamily:j.fontFamily},m={textAlign:'right'},n=i&&i.fields,o=i&&i.labels,p=function(a){a.stopPropagation();var b,c,d,e,f,g=i&&i.fields,j=i.edit,k=g.shape.val();if(b=h.getFromEnv('xAxis').getLimit().min,c=h.getFromEnv('yAxis').getLimit().min,g){switch(f={x:getFirstValue(g.x.val(),b),y:getFirstValue(g.y.val(),c),id:e=g.id.val(),datasetId:g.dataset.val(),name:g.label.val(),tooltext:g.tooltip.val(),color:g.color.val(),alpha:g.alpha.val(),labelalign:g.labelalign.val(),allowdrag:g.draggable.val(),imagenode:g.image.val(),imagewidth:g.imgWidth.val(),imageheight:g.imgHeight.val(),imagealign:g.imgAlign.val(),imageurl:g.imgUrl.val(),link:g.link.val()},k){case'circ':f.shape=preDefStr.CIRCLE,f.radius=g.circPolyRadius.val();break;case'poly':f.shape=preDefStr.POLYGON,f.radius=g.circPolyRadius.val(),f.numsides=g.polySides.val();break;default:f.shape=preDefStr.RECTANGLE,f.width=g.rectWidth.val(),f.height=g.rectHeight.val();}if(h.getNode(f.id)&&(d=!0),!d||j!==UNDEF)return e=f.datasetId,void((e!==BLANKSTRING||j)&&(e=+e,j?h.updateNode(f):h.addNode(f),i.hide(),i.visible=!1));i.error.attr({text:'ID already exist.'}),g.label.focus()}i.enableFields()},q=function(a){a.stopPropagation(),i.hide(),i.visible=!1,i.enableFields(),i.error.attr({text:BLANK}),i.visible=!1},r=function(a){a.stopPropagation(),h.deleteNode(i.fields.id.val()),i.hide(),i.visible=!1};h.getFromEnv('animationManager').setAnimationState('uichange'),i||(f=!0),i=h.addGraphicalElement('cacheUpdateUI',h.createHtmlDialog(350,215,p,q,r,i)),f&&(g=i.dialog,o=i.labels={},n=i.fields={}),i.config=d,i.edit=e,i.error||(i.error=k.html('span',{color:'ff0000',x:30,y:228},UNDEF,g)),i.enableFields||(i.enableFields=function(){for(var a in d)d[a]&&d[a].disabled&&n[a]&&n[a].element.removeAttribute('disabled')}),i.clearFields||(i.clearFields=function(){var a,b=i.fields;for(a in b)b[a].element.disabled||(b[a].element.value=BLANKSTRING)}),fcEach(this.nodeUpdateUIDefinition,function(e){var f,j,p,q=e.key,r={},s=d[q]||{};o[q]||(o[q]=k.html(LABEL,{x:e.x,y:e.y,width:e.labelWidth||45,text:e.text},m,g));e.noInput||(f=n[q],!f&&(l.border='checkbox'==e.type?BLANK:'1px solid #cccccc',f=n[q]=k.html(e.inputType||'input',{x:e.labelWidth&&e.labelWidth+5||50,y:-2+(e.inputPaddingTop||0),width:e.inputWidth||50,name:q||BLANKSTRING},l),'select'!==e.inputType&&f.attr({type:e.type||'text'}).on('keyup',i.handleKeyPress),f.add(o[q])),defined(j=getFirstValue(s.innerHTML,e.innerHTML))&&(r.innerHTML=j),s.disabled?r.disabled='disabled':f.element&&(f.element.disabled=!1),f.attr(r),defined(p=getFirstValue(s.value,e.value))&&f.val(p),'shape'===q&&f.on('change',function(){a.call(h)}),'image'===q&&f.on('click',function(){c.call(h,!0)}),'color'===q&&f.on('keyup',function(){b.call(h)}))}),b.call(this),c.call(this),a.call(this),i.visible=!0,i.fields[e?LABEL:'id'].focus()}}();class DragNodeGroup extends ComponentInterface{constructor(){super();var a=this;a.setState('visible',!0),a.connectorUpdateUIDefinition=[{key:'fromid',text:'Connect From',inputType:'select',x:10,y:15,labelWidth:80,inputWidth:100},{key:'toid',text:'Connect To',inputType:'select',x:10,y:40,labelWidth:80,inputWidth:100},{key:'arratstart',text:'Arrow At Start',x:200,y:15,type:'checkbox',inputPaddingTop:3,labelWidth:80,inputWidth:15},{key:'arratend',text:'Arrow At End',x:200,y:40,type:'checkbox',inputPaddingTop:3,labelWidth:80,inputWidth:15},{key:LABEL,text:'Label',x:10,y:75,labelWidth:40,inputWidth:120},{key:'id',text:'Node ID',x:190,y:75,inputWidth:55},{key:'color',text:'Color',x:10,y:100,labelWidth:40,inputWidth:35},{key:'alpha',text:'Alpha',x:110,y:100,inputWidth:25,labelWidth:35},{key:'strength',text:'Strength',x:190,y:100,inputWidth:55,val:'0.1'},{key:'url',text:'Link',x:10,y:125,labelWidth:40,inputWidth:120},{key:'tooltext',text:'Tooltip',x:190,y:125,labelWidth:40,inputWidth:60},{key:'dashed',text:'Dashed',x:10,y:150,type:'checkbox',inputPaddingTop:3,inputWidth:15,labelWidth:40},{key:'dashgap',text:'Dash Gap',x:85,y:150,labelWidth:60,inputWidth:25},{key:'dashlen',text:'Dash Length',x:190,y:150,labelWidth:70,inputWidth:30}],a.nodeUpdateUIDefinition=[{key:'id',text:'Id',inputWidth:60,x:10,y:15},{key:DATASET,text:DATASET,inputType:'select',inputWidth:110,innerHTML:UNDEF,x:170,y:15},{key:'x',text:'Value',x:10,y:40,inputWidth:21},{key:'y',text:COMMA,x:88,y:40,inputWidth:21,labelWidth:5},{text:'(x, y)',x:125,y:40,labelWidth:33,noInput:!0},{key:'tooltip',text:'Tooltip',inputWidth:105,x:170,y:40},{key:LABEL,text:'Label',inputWidth:92,x:10,y:65},{key:'labelalign',text:'Align',labelWidth:70,inputWidth:110,inputType:'select',innerHTML:'<option></option><option value="top">Top</option><option value="middle">Middle</option><option value="bottom">Bottom</option>',x:145,y:63},{key:'color',text:'Color',x:10,y:90,inputWidth:60},{key:'colorOut',innerHTML:'&nbsp;',x:85,y:90,inputWidth:15,inputType:'span'},{key:'alpha',text:'Alpha',x:170,y:90,inputWidth:20},{key:'draggable',text:'Allow Drag',value:!0,inputWidth:20,x:250,y:90,labelWidth:58,inputPaddingTop:3,type:'checkbox'},{key:'shape',text:'Shape',inputType:'select',inputWidth:97,innerHTML:'<option value="rect">Rectangle</option><option value="circ">Circle</option><option value="poly">Polygon</option>',x:10,y:115},{key:'rectHeight',text:'Height',x:170,y:115,inputWidth:20},{key:'rectWidth',text:'Width',x:255,y:115,inputWidth:20},{key:'circPolyRadius',text:'Radius',x:170,y:115,inputWidth:20},{key:'polySides',text:'Sides',x:255,y:115,inputWidth:20},{key:'link',text:'Link',x:10,y:140,inputWidth:92},{key:'image',text:'Image',type:'checkbox',inputPaddingTop:4,inputWidth:20,x:10,y:170},{key:'imgUrl',text:'URL',inputWidth:105,x:170,y:170},{key:'imgWidth',text:'Width',inputWidth:20,x:10,y:195},{key:'imgHeight',text:'Height',inputWidth:20,x:82,y:195},{key:'imgAlign',text:'Align',inputType:'select',inputWidth:75,innerHTML:'<option value="top">Top</option><option value="middle">Middle</option><option value="bottom">Bottom</option>',x:170,y:195}],a.labelUpdateUIDefinition=[{key:LABEL,text:'Label*',x:10,y:15,inputWidth:235},{key:'size',text:'Size',x:10,y:40},{key:'padding',text:'Padding',x:10,y:65},{key:'x',text:'Position',x:120,y:65,labelWidth:70,inputWidth:25},{key:'y',text:COMMA,x:225,y:65,labelWidth:10,inputWidth:25},{key:'xy',text:'(x, y)',x:260,y:65,noInput:!0},{key:'allowdrag',text:'Allow Drag',x:120,y:40,inputType:'checkbox',inputPaddingTop:3,inputWidth:15,labelWidth:70,val:1},{key:'color',text:'Color',x:10,y:90},{key:'alpha',text:'Alpha',x:145,y:90,inputWidth:30,val:preDefStr.HUNDREDSTRING},{key:'bordercolor',text:'Border Color',x:10,y:125,labelWidth:100},{key:'bgcolor',text:'Background Color',x:10,y:150,labelWidth:100}]}configure(){this.setState('configured',!0)}getType(){return'group'}getName(){return'dragNodeGroup'}showLabelUpdateUI(a={}){var b,c,d,e,f=this,g=f.getFromEnv('paper'),h=f.getFromEnv('style').inCanvasStyle||{},i=f.getGraphicalElement('cacheLabelUpdateUI'),j={border:'1px solid #cccccc',fontSize:10+PX,lineHeight:15+PX,fontFamily:h.fontFamily,padding:2+PX},k={textAlign:'right'},l=i&&i.fields,m=i&&i.labels;f.getFromEnv('animationManager').setAnimationState('uichange'),i||(b=!0),i=f.addGraphicalElement('cacheLabelUpdateUI',f.createHtmlDialog(315,205,function(){var a,b=i&&i.fields;b&&(a={text:b.label.val(),x:b.x.val(),y:b.y.val(),color:b.color.val(),alpha:b.alpha.val(),bgcolor:b.bgcolor.val(),bordercolor:b.bordercolor.val(),fontsize:b.size.val(),allowdrag:b.allowdrag.val(),padding:b.padding.val()},a.text?(f.addLabel&&f.addLabel(a),i.hide()):(i.error.attr({text:'Label cannot be blank.'}),b.label.focus()))},function(){i.error.attr({text:BLANKSTRING}),i.hide()},UNDEF,i)),b&&(e=i.dialog,m=i.labels={},l=i.fields={}),fcEach(f.labelUpdateUIDefinition,function(b){var f=b.key;m[f]||(m[f]=g.html(LABEL,{x:b.x,y:b.y,width:b.labelWidth||45,text:b.text},k,e));b.noInput||(!(c=l[f])&&(c=l[f]=g.html(INPUT,{y:-2+(b.inputPaddingTop||0),x:b.labelWidth&&b.labelWidth+5||50,width:b.inputWidth||50,type:b.inputType||'text',name:f||BLANKSTRING},j,m[f]).on('keyup',i.handleKeyPress)),defined(d=getFirstValue(a[f],b.val))&&c.val(d))}),i.error||(i.error=g.html('span',{color:'ff0000',x:10,y:180},UNDEF,e)),i.fields.label.focus()}restoreData(){var a,b,c,d,e,f,g,h=this,j=h.getChildren('dataset'),k=h.getFromEnv('chart'),l=h.getFromEnv('legend'),m=pluckNumber(k.config.showlegend,0),n=h.getChildren('connector'),o=k.getFromEnv('dataSource'),p=o.dataset,q=o.connectors,r=o.labels,s=h.getChildren('labels'),t=function(a){var b,c;for(b=0;b<(a&&a.length);b++)if(d=a[b],delete d.removed,d.config.add){for(c in e=a[b].graphics,e)e[c].remove();a.splice(b,1),b--}},u=function(a,d,e){b=d[a],c=b.components.data,t(c),b.drawn=!1,b.configure(e[a])};for(a=0,g=j&&j.length;a<g;a++)u(a,j,p);for(a=0,g=n&&n.length;a<g;a++)u(a,n,q);s&&s.length&&(f=s[0],c=f.components.data,c&&t(c),f.configure(r)),k.fireChartInstanceEvent('dataRestored'),h.asyncDraw(),m&&l.asyncDraw()}addLabel(a){var b,c,d,e=this,f=e.getChildren('labels'),g=e.getFromEnv('chart');a.add=!0,f?f=f[0]:(componentFactory(e,DragNodeLabels,'labels',1,[{}]),f=e.getChildren('labels')[0]),b=f.components.data||(f.components.data=[]),d=b.length,f._setConfigure(d,a),c={text:a.text,x:a.x,y:a.y,allowdrag:a.allowdrag,sourceType:'labelnode',link:a.link},g.fireChartInstanceEvent('chartupdated',extend2({sourceEvent:'labeladded'},c)),g.fireChartInstanceEvent('labeladded',c),f.asyncDraw()}showNodeAddUI(){var a,b,c,d,e=this,f=e.getChildren('dataset'),g=BLANKSTRING;for(d=0;d<f.length;d++)b=f[d]||{},a=b.config,c=b.getName(),'dragNode'===c&&(g+='<option value="'+b.config.datasetIndex+'">'+(a.name!==BLANK&&a.name!==UNDEF&&a.name+COMMASTRING+BLANKSPACE||BLANK)+b.config.datasetIndex+'</option>');e.showNodeUpdateUI({dataset:{innerHTML:g}})}showConnectorAddUI(){var a,b,c,d,e=this,f=e.getNode(),g=BLANKSTRING;for(b in f)d=f[b],c=d.config,a=c.id,g+='<option value="'+a+'">'+a+'</option>';e.showConnectorUpdateUI({fromid:{innerHTML:g},toid:{innerHTML:g}})}showConnectorUpdateUI(a,b){var c,d,e,f,g,h=this,i=h.getFromEnv('paper'),j=h.getFromEnv('style').inCanvasStyle||{},k=`cacheConnectorUpdateUI${b?'edit':'new'}`,l=h.getGraphicalElement(k),m={border:'1px solid #cccccc',fontSize:10+PX,lineHeight:15+PX,fontFamily:j.fontFamily,padding:2+PX},n={textAlign:'right'},o=l&&l.fields,p=l&&l.labels,q=function(){var a=l&&l.fields,b={from:a.fromid.val(),to:a.toid.val(),id:a.id.val()};h.deleteConnector(b),l.hide()};h.getFromEnv('animationManager').setAnimationState('uichange'),l||(c=!0),l=h.addGraphicalElement(k,h.createHtmlDialog(315,215,function(){var a,c=l&&l.fields;c&&(a={from:c.fromid.val(),to:c.toid.val(),id:c.id.val(),label:c.label.val(),color:c.color.val(),alpha:c.alpha.val(),link:c.url.val(),tooltext:c.tooltext.val(),strength:c.strength.val(),arrowatstart:c.arratstart.val(),arrowatend:c.arratend.val(),dashed:c.dashed.val(),dashlen:c.dashlen.val(),dashgap:c.dashgap.val()},a.from?a.to?a.from==a.to?(l.error.attr({text:'Connector cannot start and end at the same node!'}),c.fromid.focus()):(b?h.editConnector(a):h.addConnector(a),l.enableFields(),l.hide(),l.clearFields()):(l.error.attr({text:'Please select a valid connector end.'}),c.toid.focus()):(l.error.attr({text:'Please select a valid connector start.'}),c.fromid.focus()))},function(){l.error.attr({text:BLANKSTRING}),l.enableFields(),l.hide()},q,l)),c&&(g=l.dialog,p=l.labels={},o=l.fields={}),l.config=a,l.enableFields||(l.enableFields=function(){for(var b in a)a[b]&&a[b].disabled&&o[b]&&o[b].element.removeAttribute('disabled')}),l.clearFields||(l.clearFields=function(){var a,b=l.fields;for(a in b)b[a].element.disabled||(b[a].element.value=BLANKSTRING)}),fcEach(h.connectorUpdateUIDefinition,function(b){var c=b.key,h=a[c]||{};p[c]||(p[c]=i.html(LABEL,{x:b.x,y:b.y,width:b.labelWidth||45,text:b.text},n,g));b.noInput||(!(e=o[c])&&(e=o[c]=i.html(b.inputType||INPUT,{y:-2+(b.inputPaddingTop||0),x:b.labelWidth&&b.labelWidth+5||50,width:b.inputWidth||50,name:c||BLANKSTRING},m),'select'!==b.inputType&&e.attr({type:b.type||'text'}).on('keyup',l.handleKeyPress),e.add(p[c])),(d=pluck(h.innerHTML,b.innerHTML))&&e.attr({innerHTML:d}),(f=pluck(h.val,b.val))!==UNDEF&&e.val(f),h.disabled?e.attr({disabled:'disabled'}):e.element&&(e.element.disabled=!1))}),l.checkDash=function(){var a=o.dashed&&o.dashed.val(),b=a?'show':'hide';p.dashgap&&p.dashgap[b](),o.dashgap&&o.dashgap[b](),p.dashlen&&p.dashlen[b](),o.dashlen&&o.dashlen[b]()},l.checkDash(),o.dashed.on('click',l.checkDash),l.error||(l.error=i.html('span',{color:'ff0000',x:10,y:170},UNDEF,g)),l.removeItem[b?'show':'hide']()}showNodeUpdateUI(){return _showNodeUpdateUI.apply(this,arguments)}addNode(a){var b,c,d,e,f,g,h,j=this,k=j.getChildren('dataset'),l=a.datasetId,m=k.length,n=j.getFromEnv('chart');for(f=0;f<m;f++)if(b=k[f]||{},e=b.config.datasetIndex,e!==UNDEF&&(e=e.toString()),e===l){d=!0;break}b&&d&&(h=b.components.data,a.add=!0,c=h.length,g={index:c,dataIndex:c,link:a.link,y:a.y,x:a.x,shape:a.shape,label:a.name,toolText:a.tooltext,id:a.id,datasetIndex:b.config.datasetIndex,datasetName:b.config.seriesname,sourceType:'dataplot'},makeShapeSpecificModifications(g,a),b._setConfigure(c,a),b.parsePlotAttributes(c),b._drawNode(c),b.setState('dirty',!0),n.fireChartInstanceEvent('chartupdated',extend2({sourceEvent:'nodeAdded'},g)),n.fireChartInstanceEvent('nodeAdded',g),b._setupKdTree())}updateNode(a){var b,c,d,e,f,g,h,k,l=this,m=l.getChildren('dataset'),n=m.length,o=l.getFromEnv('chart');for(a.update=!0,f=0;f<n;f++)for(d=m[f],g=d.components.data||[],b=g.length,k=0;k<b;k++)if(e=g[k],e.config.id===a.id){c=!0;break}d&&c&&(h={index:k,dataIndex:k,link:a.link,y:a.y,x:a.x,shape:a.shape,label:a.name,toolText:a.tooltext,id:a.id,datasetIndex:d.config.datasetIndex,datasetName:d.config.seriesname,sourceType:'dataplot'},makeShapeSpecificModifications(h,a),d._setConfigure(k,a),d.parsePlotAttributes(k),d._drawNode(k),d.setState('dirty',!0),o.fireChartInstanceEvent('chartupdated',extend2({sourceEvent:'nodeupdated'},h)),o.fireChartInstanceEvent('nodeupdated',h),d._setupKdTree())}deleteNode(a){var b,c,d,e,f,g,h,j,k,l,m,n,o,p=this,q=p.getNode(a),r=p.getFromEnv('chart'),s=function(a){for(var b in a)a[b].remove()};if(q){for(b=q.dataset,c=b.components.data,d=q.config.startConnectors,e=q.config.endConnectors,l=c.length,f=0;f<l;f++)if(j=c[f],j.config.id===a){o=!0;break}if(!0===o){for(k in g=j.graphics,s(g),d)h=d[k]||{},g=h.graphics,s(g),delete h.graphics,h.removed=!0;for(k in e)h=e[k]||{},g=h.graphics,s(g),delete h.graphics,h.removed=!0;j.removed=!0,n=j.config||{},m={index:f,dataIndex:f,link:n.link,y:n.y,x:n.x,shape:n.shape,label:n.displayValue,toolText:n.toolText,id:n.id,datasetIndex:b.config.datasetIndex,datasetName:b.config.seriesname,sourceType:'dataplot'},makeShapeSpecificModifications(m,{width:n.width,height:n.height,radius:n.radius,numsides:n.numSides}),r.fireChartInstanceEvent('chartupdated',extend2({sourceEvent:'nodedeleted'},m)),r.fireChartInstanceEvent('nodedeleted',m),b._setupKdTree()}}}addConnector(a){var b,c=this,d=c.getChildren('connector')[0],e=d.components.data,f=c.getFromEnv('chart'),g=e.length;a.add=!0,d._setConfigure(g,a),b={arrowAtEnd:!!a.arrowatend,arrowAtStart:!!a.arrowatstart,fromNodeId:a.from,id:a.id,label:a.label,link:a.connectorLink,sourceType:'connector',toNodeId:a.to},f.fireChartInstanceEvent('chartupdated',extend2({sourceEvent:'connectoradded'},b)),f.fireChartInstanceEvent('connectoradded',b),d.asyncDraw()}editConnector(a){var b,c,d,e,f,g,h,k,l,m,n,o=this,p=a.from,q=a.to,r=o.getChildren('connector'),s=o.getFromEnv('chart'),t=r.length;for(b=0;b<t;b++)for(l=r[b],d=l&&l.components.data||[],c=d.length,h=0;h<c;h++)if(e=d[h],m=e.config,f=m.from,g=m.to,f===p&&g===q){k=!0;break}a.update=!0,k&&(l._setConfigure(h,a),n={arrowAtEnd:!!a.arrowatend,arrowAtStart:!!a.arrowatstart,fromNodeId:a.from,id:a.id,label:a.label,link:a.link,sourceType:'connector',toNodeId:a.to},s.fireChartInstanceEvent('chartupdated',extend2({sourceEvent:'connectorupdated'},n)),s.fireChartInstanceEvent('connectorupdated',n),l.asyncDraw())}deleteConnector(a){var b,c,d,e,f,g,h,k,l=this,m=a.from,n=a.to,o=l.getChildren('connector'),p=!1,q=o.length,r=l.getFromEnv('chart');for(b=0;b<q;b++)for(g=o[b],e=g.components.data,f=e.length,c=0;c<f;c++)if(d=e[c],d.config.from===m&&d.config.to===n){p=!0;break}p&&(k=d.config||{},h={arrowAtEnd:k.arrowAtEnd,arrowAtStart:k.arrowAtStart,fromNodeId:k.from,id:k.id,label:k.label,link:k.connectorLink,sourceType:'connector',toNodeId:k.to},function(a){for(var b in a)a[b].remove()}(d.graphics),delete d.graphics,d.removed=!0,r.fireChartInstanceEvent('chartupdated',extend2({sourceEvent:'connectordeleted'},h)),r.fireChartInstanceEvent('connectordeleted',h))}createHtmlDialog(a,b,c,d,e,f){var g,h,i,j,k,l,m,n,o=this,p=o.getFromEnv('chartConfig'),q=o.getFromEnv('chart-container'),r=o.getFromEnv('style').inCanvasStyle||{},s=+p.width,t=+p.height,u=o.getFromEnv('animationManager'),v={color:hashify(r.color),textAlign:'center',paddingTop:1+PX,border:'1px solid #cccccc',borderRadius:4+PX,cursor:preDefStr.POINTER,_cursor:'hand',backgroundColor:HASHSTRING+COLOR_FFFFFF,zIndex:21,"-webkit-border-radius":4+PX},w=f;return n={width:s,height:t},f||(n.fill='transparent',n.type='div'),w=u.setAnimation({el:f||'html',attr:n,component:o,label:'ui',state:DATASETSTATE,css:{fontSize:10+PX,lineHeight:15+PX,fontFamily:r.fontFamily,display:'block'},container:!f&&q}),n={width:s,height:t,opacity:.3},w.veil||(n.fill=COLOR_000000,n.type='div'),w.veil=u.setAnimation({el:w.veil||'html',attr:n,component:o,state:DATASETSTATE,label:'uiveil',container:!w.veil&&w}),j={x:(s-a)/2,y:(t-b)/2,width:a,height:b},w.dialog||(j.fill='efefef',j.strokeWidth=1,j.stroke=COLOR_000000,j.type='div'),w.dialog=u.setAnimation({el:w.dialog||'html',attr:j,component:o,state:DATASETSTATE,label:'uidialog',container:!w.dialog&&w,css:{borderRadius:5+PX,boxShadow:'1px 1px 3px #000000',"-webkit-border-radius":5+PX,"-webkit-box-shadow":'1px 1px 3px #000000',filter:'progid:DXImageTransform.Microsoft.Shadow(Strength=4, Direction=135, Color="#000000")'}}),k={x:a-70-5,y:b-23-5,width:65,height:17},w.ok||(k.text='Submit',k.tabIndex=1,k.type='div'),g=u.setAnimation({el:w.ok||'html',state:DATASETSTATE,attr:k,component:o,label:'uiok',css:v,container:!w.ok&&w.dialog}),!w.ok&&(w.ok=g)&&g.on('mousedown',c),l={x:a-140-5,y:b-23-5,width:65,height:17},w.cancel||(l.text='Cancel',l.tabIndex=2,l.type='div'),h=u.setAnimation({el:w.cancel||'html',state:DATASETSTATE,attr:l,component:o,label:'uicancel',css:v,container:!w.cancel&&w.dialog}),!w.cancel&&(w.cancel=h)&&h.on('mousedown',d),m={x:a-210-5,y:b-23-5,width:65,height:17},w.removeItem||(m.text='Delete',m.tabIndex=3,m.type='div'),i=u.setAnimation({el:w.removeItem||'html',state:DATASETSTATE,attr:m,component:o,label:'uiremove',css:v,container:!w.removeItem&&w.dialog}),!w.removeItem&&(w.removeItem=i)&&i.on('mousedown',e),w.handleKeyPress||(w.handleKeyPress=function(a){13===a.keyCode?w.ok.element&&w.ok.element.onmousedown&&w.ok.element.onmousedown(a):27===a.keyCode&&w.cancel.element&&w.cancel.element.onmousedown&&w.cancel.element.onmousedown(a)}),w}getNode(a){var b,c=this,d={},e=c.getChildren('dataset');for(let c=0,f=e.length;c<f;c++)if(!a)Object.assign(d,e[c].getNode());else if(b=e[c].getNode(a))return b;return!a&&d}createContainer(){let a=this,b=a.getFromEnv('animationManager'),c=a.getLinkedParent(),d=c.getChildContainer();['connectorGroup','defaultVcanvasGroup','vcanvasLabelGroup','cloneGroup'].forEach(function(c){a.getChildContainer(c)||a.addChildContainer(c,b.setAnimation({el:'group',attr:{name:'manager-'+c},component:a,container:d[c]||d.defaultVcanvasGroup}))}),a.getContainer('waitContainer')||a.addContainer('waitContainer',b.setAnimation({el:'group',attr:{name:'manager-waitContainer'},container:d.defaultVcanvasGroup,component:a}))}draw(){var a,b,c=this,d={cacheUpdateUI:[350,215],cacheLabelDeleteUI:[250,100],cacheLabelUpdateUI:[350,205],cacheConnectorUpdateUIedit:[315,215],cacheConnectorUpdateUInew:[315,215]};if(!c.getState('configured')){for(a in DATASETSTATE='update',d)if((b=c.getGraphicalElement(a))&&b.isVisible()){if('cacheUpdateUI'===a){let c=b.fields,e=c.image,f=e.val();d[a][1]=f?250:215}c.createHtmlDialog(d[a][0],d[a][1],UNDEF,UNDEF,UNDEF,b)}DATASETSTATE='appearing'}c.setState('configured',!1),c.createContainer()}getDataLimits(){var a,b,c=Math.min,d=Math.max,e=this,f=e.getChildren('dataset'),g=+Infinity,h=-Infinity,j=-Infinity,k=+Infinity;for(a=0;a<f.length;a++)b=f[a].config,h=d(h,b.yMax),g=c(g,b.yMin),j=d(j,b.xMax),k=c(k,b.xMin);return{max:h,min:g,xMax:j,xMin:k}}isVisible(){return!this.isNotVisible}childChanged(){return this}hideWaitElem(){this.getGraphicalElement('waitElement')&&this.getGraphicalElement('waitElement').hide()}clearLongPress(){var a=this;clearTimeout(a.config._longpressactive),delete a.config._longpressactive}triggerLabelUI(a,b){var c=this;c.config._longpressactive=setTimeout(function(){a.data('fire_click_event',0),a.data('viewMode')||c.showLabelDeleteUI(b)},CLEAR_TIME_1000)}triggerConnectorUI(a){var b=this,c=a.data('dataset'),d=c.config,e=a.data(preDefStr.configStr),f=e||{};b.config._longpressactive=setTimeout(function(){a.data('fire_click_event',0),a.data('viewMode')||b.showConnectorUpdateUI({fromid:{val:f.from,innerHTML:OPTIONSTR+f.from+OPTIONCLOSESTR,disabled:!0},toid:{val:f.to,innerHTML:OPTIONSTR+f.to+OPTIONCLOSESTR,disabled:!0},datasetIndex:c.config.datasetIndex,index:e.index,arratstart:{val:!!pluckNumber(f.arrowatstart,1)},arratend:{val:!!pluckNumber(f.arrowatend,1)},dashed:{val:pluckNumber(f.dashed)},dashgap:{val:f.dashgap},dashlen:{val:f.dashlen},label:{val:f.label},tooltext:{val:f.tooltext},id:{val:d.id,disabled:!0},strength:{val:f.conStrength},alpha:{val:f.alpha},color:{val:f.color.FCcolor.color}},!0)},CLEAR_TIME_1000)}deleteLabel(a){var b,c,d,e=this,f=e.getChildren('labels')[0],g=pluckNumber(a,f.config.lastTappedLabelIndex),h=f.components.data,i=h[g],j=e.getFromEnv('chart');b=i.graphics.element,c=i.graphics.trackerElement,b&&(d=b.data('eventArgs'),b.remove(),c&&c.remove(),delete i.graphics),j.fireChartInstanceEvent('chartupdated',extend2({sourceEvent:'labeldeleted'},d)),j.fireChartInstanceEvent('labeldeleted',d),i.removed=!0}showLabelDeleteUI(a){var b=this,c=b.getChildren('labels')[0],d=b.getFromEnv('paper'),e=b.getGraphicalElement('cacheLabelDeleteUI');c.config.lastTappedLabelIndex=a.config.index,e?e.show():(e=b.addGraphicalElement('cacheLabelDeleteUI',b.createHtmlDialog(250,100,UNDEF,function(){e.hide()},function(){b.deleteLabel(),e.hide()})),e.message=d.html('span',{x:10,y:10,width:230,height:80}).add(e.dialog),e.ok.hide(),e.removeItem.translate(175).show()),e.message.attr({text:'Would you really like to delete the label: "'+a.config.text+'"?'})}drawWaitingRing(a,b){var c=this,d=c.config,e=c.getFromEnv('animationManager'),f=c.getContainer('waitContainer'),g=a.config,h=c.getChildren('dataset')[b].config,i=c.getGraphicalElement('waitElement');c.clearLongPress(),i=e.setAnimation({el:i||'ringpath',attr:{ringpath:[g._xPos,g._yPos,8,11,0,0],fill:toRaphaelColor({alpha:'100,100',angle:120,color:'CCCCCC,FFFFFF',ratio:'30,50'}),"stroke-width":0},container:f,component:c}),c.getGraphicalElement('waitElement')||c.addGraphicalElement('waitElement',i),i.show().animate({ringpath:[g._xPos,g._yPos,8,11,0,6.28]},CLEAR_TIME_1000),d._longpressactive=setTimeout(function(){var a=h.name!==BLANK&&h.name!==UNDEF?h.name+preDefStr.BLANKSPACE:BLANK,d=h.id===UNDEF?BLANK:(a?COMMASTRING:a)+h.id;i&&i.hide(),c.showNodeUpdateUI({x:{value:g.x},y:{value:g.y},draggable:{value:getFirstValue(g.allowdrag,1)},color:{value:g.color},alpha:{value:g.alpha},label:{value:getFirstValue(g.label,g.name)},tooltip:{value:g.toolText},shape:{value:shapesInfo[g.shape]},rectWidth:{value:g.width},rectHeight:{value:g.height},circPolyRadius:{value:g.radius},polySides:{value:g.numsides},image:{value:g.imageNode},imgWidth:{value:g.imageWidth},imgHeight:{value:g.imageHeight},imgAlign:{value:g.imageAlign},imgUrl:{value:g.imageURL},id:{value:g.id,disabled:!0},link:{value:g.link},dataset:{innerHTML:'<option value="'+d+'">'+a+d+'</option>',disabled:!0},datasetIndex:b},!0)},CLEAR_TIME_1000)}drawNodeConnectors(a){var b,c,d,e,f,g,h=this,j=h.getChildren('connector');if(a)for(b in a)e=a[b],e&&(c=e.config.datasetIndex,f=e.config.fromPointObj,g=e.config.toPointObj,d=j[c],d&&(d&&d.parsePlotAttributes(e,f,g),d&&d.drawConnector(e,f,g)))}_clearConnectors(){var a,b,c,d,e,f,g=this,h=g.getNode();for(a in h)if(f=h[a],f){for(e in b=f.config.startConnectors||{},c=f.config.endConnectors||{},b)d={graphics:b[e].graphics||{}},componentDispose.call(d);for(e in c)d={graphics:c[e].graphics||{}},componentDispose.call(d)}}getJSONData(){var a,b,c,d=this,e=d.getChildren(),f=e.dataset,g=e.connector,h=e.labels,j={};for(j.dataset=[],j.connectors=[],j.labels=[],(a=0,b=f&&f.length);a<b;a++)c=f[a],j.dataset[a]||(j.dataset[a]=extend2({},c.JSONData)),j.dataset[a].data=c.getJSONData();for(a=0,b=g&&g.length;a<b;a++)c=g[a],j.connectors[a]||(j.connectors[a]=extend2({},c.JSONData)),j.connectors[a].connector=c.getJSONData();for(a=0,b=h&&h.length;a<b;a++)c=h[a],j.labels[a]||(j.labels[a]={label:[]}),j.labels[a].label=c.getJSONData();return j}}export default DragNodeGroup;