mirror of
https://github.com/maybe-finance/maybe.git
synced 2025-07-18 20:59:39 +02:00
* Enhance cash flow dashboard with new cash flow period handling and improved Sankey diagram rendering. Update D3 and related dependencies for better performance and features. * Fix Rubocop offenses * Refactor Sankey chart controller to use Number.parseFloat for value formatting and improve code readability by restructuring conditional logic for node shapes.
4 lines
8.9 KiB
JavaScript
4 lines
8.9 KiB
JavaScript
// d3-force@3.0.0 downloaded from https://ga.jspm.io/npm:d3-force@3.0.0/src/index.js
|
|
|
|
import{quadtree as n}from"d3-quadtree";import{dispatch as t}from"d3-dispatch";import{timer as e}from"d3-timer";function center(n,t){var e,i=1;null==n&&(n=0);null==t&&(t=0);function force(){var r,o,f=e.length,c=0,a=0;for(r=0;r<f;++r)o=e[r],c+=o.x,a+=o.y;for(c=(c/f-n)*i,a=(a/f-t)*i,r=0;r<f;++r)o=e[r],o.x-=c,o.y-=a}force.initialize=function(n){e=n};force.x=function(t){return arguments.length?(n=+t,force):n};force.y=function(n){return arguments.length?(t=+n,force):t};force.strength=function(n){return arguments.length?(i=+n,force):i};return force}function constant(n){return function(){return n}}function jiggle(n){return 1e-6*(n()-.5)}function x$2(n){return n.x+n.vx}function y$2(n){return n.y+n.vy}function collide(t){var e,i,r,o=1,f=1;"function"!==typeof t&&(t=constant(null==t?1:+t));function force(){var t,c,a,u,l,s,g,h=e.length;for(var v=0;v<f;++v){c=n(e,x$2,y$2).visitAfter(prepare);for(t=0;t<h;++t){a=e[t];s=i[a.index],g=s*s;u=a.x+a.vx;l=a.y+a.vy;c.visit(apply)}}function apply(n,t,e,i,f){var c=n.data,h=n.r,v=s+h;if(!c)return t>u+v||i<u-v||e>l+v||f<l-v;if(c.index>a.index){var d=u-c.x-c.vx,p=l-c.y-c.vy,z=d*d+p*p;if(z<v*v){0===d&&(d=jiggle(r),z+=d*d);0===p&&(p=jiggle(r),z+=p*p);z=(v-(z=Math.sqrt(z)))/z*o;a.vx+=(d*=z)*(v=(h*=h)/(g+h));a.vy+=(p*=z)*v;c.vx-=d*(v=1-v);c.vy-=p*v}}}}function prepare(n){if(n.data)return n.r=i[n.data.index];for(var t=n.r=0;t<4;++t)n[t]&&n[t].r>n.r&&(n.r=n[t].r)}function initialize(){if(e){var n,r,o=e.length;i=new Array(o);for(n=0;n<o;++n)r=e[n],i[r.index]=+t(r,n,e)}}force.initialize=function(n,t){e=n;r=t;initialize()};force.iterations=function(n){return arguments.length?(f=+n,force):f};force.strength=function(n){return arguments.length?(o=+n,force):o};force.radius=function(n){return arguments.length?(t="function"===typeof n?n:constant(+n),initialize(),force):t};return force}function index(n){return n.index}function find(n,t){var e=n.get(t);if(!e)throw new Error("node not found: "+t);return e}function link(n){var t,e,i,r,o,f,c=index,a=defaultStrength,u=constant(30),l=1;null==n&&(n=[]);function defaultStrength(n){return 1/Math.min(r[n.source.index],r[n.target.index])}function force(i){for(var r=0,c=n.length;r<l;++r)for(var a,u,s,g,h,v,d,p=0;p<c;++p){a=n[p],u=a.source,s=a.target;g=s.x+s.vx-u.x-u.vx||jiggle(f);h=s.y+s.vy-u.y-u.vy||jiggle(f);v=Math.sqrt(g*g+h*h);v=(v-e[p])/v*i*t[p];g*=v,h*=v;s.vx-=g*(d=o[p]);s.vy-=h*d;u.vx+=g*(d=1-d);u.vy+=h*d}}function initialize(){if(i){var f,a,u=i.length,l=n.length,s=new Map(i.map(((n,t)=>[c(n,t,i),n])));for(f=0,r=new Array(u);f<l;++f){a=n[f],a.index=f;"object"!==typeof a.source&&(a.source=find(s,a.source));"object"!==typeof a.target&&(a.target=find(s,a.target));r[a.source.index]=(r[a.source.index]||0)+1;r[a.target.index]=(r[a.target.index]||0)+1}for(f=0,o=new Array(l);f<l;++f)a=n[f],o[f]=r[a.source.index]/(r[a.source.index]+r[a.target.index]);t=new Array(l),initializeStrength();e=new Array(l),initializeDistance()}}function initializeStrength(){if(i)for(var e=0,r=n.length;e<r;++e)t[e]=+a(n[e],e,n)}function initializeDistance(){if(i)for(var t=0,r=n.length;t<r;++t)e[t]=+u(n[t],t,n)}force.initialize=function(n,t){i=n;f=t;initialize()};force.links=function(t){return arguments.length?(n=t,initialize(),force):n};force.id=function(n){return arguments.length?(c=n,force):c};force.iterations=function(n){return arguments.length?(l=+n,force):l};force.strength=function(n){return arguments.length?(a="function"===typeof n?n:constant(+n),initializeStrength(),force):a};force.distance=function(n){return arguments.length?(u="function"===typeof n?n:constant(+n),initializeDistance(),force):u};return force}const i=1664525;const r=1013904223;const o=4294967296;function lcg(){let n=1;return()=>(n=(i*n+r)%o)/o}function x$1(n){return n.x}function y$1(n){return n.y}var f=10,c=Math.PI*(3-Math.sqrt(5));function simulation(n){var i,r=1,o=.001,a=1-Math.pow(o,1/300),u=0,l=.6,s=new Map,g=e(step),h=t("tick","end"),v=lcg();null==n&&(n=[]);function step(){tick();h.call("tick",i);if(r<o){g.stop();h.call("end",i)}}function tick(t){var e,o,f=n.length;void 0===t&&(t=1);for(var c=0;c<t;++c){r+=(u-r)*a;s.forEach((function(n){n(r)}));for(e=0;e<f;++e){o=n[e];null==o.fx?o.x+=o.vx*=l:(o.x=o.fx,o.vx=0);null==o.fy?o.y+=o.vy*=l:(o.y=o.fy,o.vy=0)}}return i}function initializeNodes(){for(var t,e=0,i=n.length;e<i;++e){t=n[e],t.index=e;null!=t.fx&&(t.x=t.fx);null!=t.fy&&(t.y=t.fy);if(isNaN(t.x)||isNaN(t.y)){var r=f*Math.sqrt(.5+e),o=e*c;t.x=r*Math.cos(o);t.y=r*Math.sin(o)}(isNaN(t.vx)||isNaN(t.vy))&&(t.vx=t.vy=0)}}function initializeForce(t){t.initialize&&t.initialize(n,v);return t}initializeNodes();return i={tick:tick,restart:function(){return g.restart(step),i},stop:function(){return g.stop(),i},nodes:function(t){return arguments.length?(n=t,initializeNodes(),s.forEach(initializeForce),i):n},alpha:function(n){return arguments.length?(r=+n,i):r},alphaMin:function(n){return arguments.length?(o=+n,i):o},alphaDecay:function(n){return arguments.length?(a=+n,i):+a},alphaTarget:function(n){return arguments.length?(u=+n,i):u},velocityDecay:function(n){return arguments.length?(l=1-n,i):1-l},randomSource:function(n){return arguments.length?(v=n,s.forEach(initializeForce),i):v},force:function(n,t){return arguments.length>1?(null==t?s.delete(n):s.set(n,initializeForce(t)),i):s.get(n)},find:function(t,e,i){var r,o,f,c,a,u=0,l=n.length;null==i?i=Infinity:i*=i;for(u=0;u<l;++u){c=n[u];r=t-c.x;o=e-c.y;f=r*r+o*o;f<i&&(a=c,i=f)}return a},on:function(n,t){return arguments.length>1?(h.on(n,t),i):h.on(n)}}}function manyBody(){var t,e,i,r,o,f=constant(-30),c=1,a=Infinity,u=.81;function force(i){var o,f=t.length,c=n(t,x$1,y$1).visitAfter(accumulate);for(r=i,o=0;o<f;++o)e=t[o],c.visit(apply)}function initialize(){if(t){var n,e,i=t.length;o=new Array(i);for(n=0;n<i;++n)e=t[n],o[e.index]=+f(e,n,t)}}function accumulate(n){var t,e,i,r,f,c=0,a=0;if(n.length){for(i=r=f=0;f<4;++f)(t=n[f])&&(e=Math.abs(t.value))&&(c+=t.value,a+=e,i+=e*t.x,r+=e*t.y);n.x=i/a;n.y=r/a}else{t=n;t.x=t.data.x;t.y=t.data.y;do{c+=o[t.data.index]}while(t=t.next)}n.value=c}function apply(n,t,f,l){if(!n.value)return true;var s=n.x-e.x,g=n.y-e.y,h=l-t,v=s*s+g*g;if(h*h/u<v){if(v<a){0===s&&(s=jiggle(i),v+=s*s);0===g&&(g=jiggle(i),v+=g*g);v<c&&(v=Math.sqrt(c*v));e.vx+=s*n.value*r/v;e.vy+=g*n.value*r/v}return true}if(!(n.length||v>=a)){if(n.data!==e||n.next){0===s&&(s=jiggle(i),v+=s*s);0===g&&(g=jiggle(i),v+=g*g);v<c&&(v=Math.sqrt(c*v))}do{if(n.data!==e){h=o[n.data.index]*r/v;e.vx+=s*h;e.vy+=g*h}}while(n=n.next)}}force.initialize=function(n,e){t=n;i=e;initialize()};force.strength=function(n){return arguments.length?(f="function"===typeof n?n:constant(+n),initialize(),force):f};force.distanceMin=function(n){return arguments.length?(c=n*n,force):Math.sqrt(c)};force.distanceMax=function(n){return arguments.length?(a=n*n,force):Math.sqrt(a)};force.theta=function(n){return arguments.length?(u=n*n,force):Math.sqrt(u)};return force}function radial(n,t,e){var i,r,o,f=constant(.1);"function"!==typeof n&&(n=constant(+n));null==t&&(t=0);null==e&&(e=0);function force(n){for(var f=0,c=i.length;f<c;++f){var a=i[f],u=a.x-t||1e-6,l=a.y-e||1e-6,s=Math.sqrt(u*u+l*l),g=(o[f]-s)*r[f]*n/s;a.vx+=u*g;a.vy+=l*g}}function initialize(){if(i){var t,e=i.length;r=new Array(e);o=new Array(e);for(t=0;t<e;++t){o[t]=+n(i[t],t,i);r[t]=isNaN(o[t])?0:+f(i[t],t,i)}}}force.initialize=function(n){i=n,initialize()};force.strength=function(n){return arguments.length?(f="function"===typeof n?n:constant(+n),initialize(),force):f};force.radius=function(t){return arguments.length?(n="function"===typeof t?t:constant(+t),initialize(),force):n};force.x=function(n){return arguments.length?(t=+n,force):t};force.y=function(n){return arguments.length?(e=+n,force):e};return force}function x(n){var t,e,i,r=constant(.1);"function"!==typeof n&&(n=constant(null==n?0:+n));function force(n){for(var r,o=0,f=t.length;o<f;++o)r=t[o],r.vx+=(i[o]-r.x)*e[o]*n}function initialize(){if(t){var o,f=t.length;e=new Array(f);i=new Array(f);for(o=0;o<f;++o)e[o]=isNaN(i[o]=+n(t[o],o,t))?0:+r(t[o],o,t)}}force.initialize=function(n){t=n;initialize()};force.strength=function(n){return arguments.length?(r="function"===typeof n?n:constant(+n),initialize(),force):r};force.x=function(t){return arguments.length?(n="function"===typeof t?t:constant(+t),initialize(),force):n};return force}function y(n){var t,e,i,r=constant(.1);"function"!==typeof n&&(n=constant(null==n?0:+n));function force(n){for(var r,o=0,f=t.length;o<f;++o)r=t[o],r.vy+=(i[o]-r.y)*e[o]*n}function initialize(){if(t){var o,f=t.length;e=new Array(f);i=new Array(f);for(o=0;o<f;++o)e[o]=isNaN(i[o]=+n(t[o],o,t))?0:+r(t[o],o,t)}}force.initialize=function(n){t=n;initialize()};force.strength=function(n){return arguments.length?(r="function"===typeof n?n:constant(+n),initialize(),force):r};force.y=function(t){return arguments.length?(n="function"===typeof t?t:constant(+t),initialize(),force):n};return force}export{center as forceCenter,collide as forceCollide,link as forceLink,manyBody as forceManyBody,radial as forceRadial,simulation as forceSimulation,x as forceX,y as forceY};
|
|
|