{{ $t('list.name') }} | \n{{ $t('list.next_expected_match') }} | \n
---|---|
{{ bill.attributes.name }}\n (~ {{\n Intl.NumberFormat(locale, {style: 'currency', currency: bill.attributes.currency_code}).format((parseFloat(bill.attributes.amount_min) +\n parseFloat(bill.attributes.amount_max)) / -2)\n }})\n \n \n {{ bill.attributes.object_group_title }}\n \n | \n \n \n \n \n \n {{ new Intl.DateTimeFormat(locale, {year: 'numeric', month: 'long', day: 'numeric'}).format(new Date(payDate)) }}\n \n \n | \n
{{ $t('firefly.budget') }} | \n{{ $t('firefly.spent') }} | \n{{ $t('firefly.left') }} | \n
---|
{{ $t('firefly.category') }} | \n{{ $t('firefly.spent') }} | \n
---|---|
{{ entry.name }} | \n\n 0\" class=\"progress\">\n \n {{ Intl.NumberFormat(locale, {style: 'currency', currency: entry.currency_code}).format(entry.difference_float) }}\n \n \n \n | \n
{{ $t('firefly.category') }} | \n{{ $t('firefly.spent') }} | \n
---|---|
{{ entry.name }} | \n\n 0\" class=\"progress\">\n \n {{ Intl.NumberFormat(locale, {style: 'currency', currency: entry.currency_code}).format(entry.difference_float) }}\n \n \n \n | \n
{{ $t('list.piggy_bank') }} | \n{{ $t('list.percentage') }} / {{ $t('list.amount') }} | \n
---|---|
\n {{ piggy.attributes.name }}\n \n \n {{ piggy.attributes.object_group_title }}\n \n | \n \n \n \n \n {{\n Intl.NumberFormat(locale, {style: 'currency', currency: piggy.attributes.currency_code}).format(piggy.attributes.current_amount)\n }}\n \n of\n {{\n Intl.NumberFormat(locale, {\n style: 'currency',\n currency: piggy.attributes.currency_code\n }).format(piggy.attributes.target_amount)\n }}\n \n \n \n \n | \n
{{ $t('firefly.description') }} | \n{{ $t('firefly.opposing_account') }} | \n{{ $t('firefly.amount') }} | \n{{ $t('firefly.category') }} | \n{{ $t('firefly.budget') }} | \n
---|---|---|---|---|
\n \n 1\">{{ transaction.attributes.group_title }}\n {{ transaction.attributes.transactions[0].description }}\n \n | \n\n \n {{ tr.destination_name }}\n {{ tr.source_name }}\n {{ tr.destination_name }}\n {{ tr.source_name }}\n \n \n | \n \n \n \n {{ Intl.NumberFormat(locale, {style: 'currency', currency: tr.currency_code}).format(tr.amount * -1) }} \n \n \n {{ Intl.NumberFormat(locale, {style: 'currency', currency: tr.currency_code}).format(tr.amount) }} \n \n \n {{ Intl.NumberFormat(locale, {style: 'currency', currency: tr.currency_code}).format(tr.amount * -1) }} \n \n \n {{ Intl.NumberFormat(locale, {style: 'currency', currency: tr.currency_code}).format(tr.amount) }} \n \n \n | \n \n \n {{ tr.category_name }} \n \n | \n \n \n {{ tr.budget_name }} \n \n | \n
{{ $t('firefly.description') }} | \n{{ $t('firefly.opposing_account') }} | \n{{ $t('firefly.amount') }} | \n
---|---|---|
\n \n 1\">{{ transaction.attributes.group_title }}\n {{ transaction.attributes.transactions[0].description }}\n \n | \n\n \n {{ tr.destination_name }}\n {{ tr.source_name }}\n {{ tr.destination_name }}\n {{ tr.source_name }}\n \n \n | \n \n \n \n {{ Intl.NumberFormat(locale, {style: 'currency', currency: tr.currency_code}).format(tr.amount * -1) }} \n \n \n {{ Intl.NumberFormat(locale, {style: 'currency', currency: tr.currency_code}).format(tr.amount) }} \n \n \n {{ Intl.NumberFormat(locale, {style: 'currency', currency: tr.currency_code}).format(tr.amount * -1) }} \n \n \n {{ Intl.NumberFormat(locale, {style: 'currency', currency: tr.currency_code}).format(tr.amount) }} \n \n \n | \n
{{ $t('firefly.description') }} | \n{{ $t('firefly.amount') }} | \n
---|---|
\n \n 1\">{{ transaction.attributes.group_title }}\n {{ transaction.attributes.transactions[0].description }}\n \n | \n\n \n \n {{ Intl.NumberFormat(locale, {style: 'currency', currency: tr.currency_code}).format(tr.amount * -1) }} \n \n \n {{ Intl.NumberFormat(locale, {style: 'currency', currency: tr.currency_code}).format(tr.amount) }} \n \n \n {{ Intl.NumberFormat(locale, {style: 'currency', currency: tr.currency_code}).format(tr.amount * -1) }} \n \n \n {{ Intl.NumberFormat(locale, {style: 'currency', currency: tr.currency_code}).format(tr.amount) }} \n \n \n | \n
{{ $t('firefly.category') }} | \n{{ $t('firefly.spent') }} | \n
---|---|
\n {{ category.name }}\n | \n\n \n 0\" class=\"progress\">\n \n {{ Intl.NumberFormat(locale, {style: 'currency', currency: category.currency_code}).format(category.spent) }}\n \n\n \n\n \n \n 0\" class=\"progress justify-content-end\" title=\"hello2\">\n \n {{ Intl.NumberFormat(locale, {style: 'currency', currency: category.currency_code}).format(category.earned) }}\n \n \n \n\n | \n
{{ $t('list.name') }} | \n{{ $t('list.next_expected_match') }} | \n
---|---|
{{ bill.attributes.name }}\n (~ {{\n Intl.NumberFormat(locale, {style: 'currency', currency: bill.attributes.currency_code}).format((parseFloat(bill.attributes.amount_min) +\n parseFloat(bill.attributes.amount_max)) / -2)\n }})\n \n \n {{ bill.attributes.object_group_title }}\n \n | \n \n \n \n \n \n {{ new Intl.DateTimeFormat(locale, {year: 'numeric', month: 'long', day: 'numeric'}).format(new Date(payDate)) }}\n \n \n | \n
{{ $t('firefly.budget') }} | \n{{ $t('firefly.spent') }} | \n{{ $t('firefly.left') }} | \n
---|
{{ $t('firefly.category') }} | \n{{ $t('firefly.spent') }} | \n
---|---|
{{ entry.name }} | \n\n 0\" class=\"progress\">\n \n {{ Intl.NumberFormat(locale, {style: 'currency', currency: entry.currency_code}).format(entry.difference_float) }}\n \n \n \n | \n
{{ $t('firefly.category') }} | \n{{ $t('firefly.spent') }} | \n
---|---|
{{ entry.name }} | \n\n 0\" class=\"progress\">\n \n {{ Intl.NumberFormat(locale, {style: 'currency', currency: entry.currency_code}).format(entry.difference_float) }}\n \n \n \n | \n
{{ $t('list.piggy_bank') }} | \n{{ $t('list.percentage') }} / {{ $t('list.amount') }} | \n
---|---|
\n {{ piggy.attributes.name }}\n \n \n {{ piggy.attributes.object_group_title }}\n \n | \n \n \n \n \n {{\n Intl.NumberFormat(locale, {style: 'currency', currency: piggy.attributes.currency_code}).format(piggy.attributes.current_amount)\n }}\n \n of\n {{\n Intl.NumberFormat(locale, {\n style: 'currency',\n currency: piggy.attributes.currency_code\n }).format(piggy.attributes.target_amount)\n }}\n \n \n \n \n | \n
{{ $t('firefly.description') }} | \n{{ $t('firefly.opposing_account') }} | \n{{ $t('firefly.amount') }} | \n{{ $t('firefly.category') }} | \n{{ $t('firefly.budget') }} | \n
---|---|---|---|---|
\n \n 1\">{{ transaction.attributes.group_title }}\n {{ transaction.attributes.transactions[0].description }}\n \n | \n\n \n {{ tr.destination_name }}\n {{ tr.source_name }}\n {{ tr.destination_name }}\n {{ tr.source_name }}\n \n \n | \n \n \n \n {{ Intl.NumberFormat(locale, {style: 'currency', currency: tr.currency_code}).format(tr.amount * -1) }} \n \n \n {{ Intl.NumberFormat(locale, {style: 'currency', currency: tr.currency_code}).format(tr.amount) }} \n \n \n {{ Intl.NumberFormat(locale, {style: 'currency', currency: tr.currency_code}).format(tr.amount * -1) }} \n \n \n {{ Intl.NumberFormat(locale, {style: 'currency', currency: tr.currency_code}).format(tr.amount) }} \n \n \n | \n \n \n {{ tr.category_name }} \n \n | \n \n \n {{ tr.budget_name }} \n \n | \n
{{ $t('firefly.description') }} | \n{{ $t('firefly.opposing_account') }} | \n{{ $t('firefly.amount') }} | \n
---|---|---|
\n \n 1\">{{ transaction.attributes.group_title }}\n {{ transaction.attributes.transactions[0].description }}\n \n | \n\n \n {{ tr.destination_name }}\n {{ tr.source_name }}\n {{ tr.destination_name }}\n {{ tr.source_name }}\n \n \n | \n \n \n \n {{ Intl.NumberFormat(locale, {style: 'currency', currency: tr.currency_code}).format(tr.amount * -1) }} \n \n \n {{ Intl.NumberFormat(locale, {style: 'currency', currency: tr.currency_code}).format(tr.amount) }} \n \n \n {{ Intl.NumberFormat(locale, {style: 'currency', currency: tr.currency_code}).format(tr.amount * -1) }} \n \n \n {{ Intl.NumberFormat(locale, {style: 'currency', currency: tr.currency_code}).format(tr.amount) }} \n \n \n | \n
{{ $t('firefly.description') }} | \n{{ $t('firefly.amount') }} | \n
---|---|
\n \n 1\">{{ transaction.attributes.group_title }}\n {{ transaction.attributes.transactions[0].description }}\n \n | \n\n \n \n {{ Intl.NumberFormat(locale, {style: 'currency', currency: tr.currency_code}).format(tr.amount * -1) }} \n \n \n {{ Intl.NumberFormat(locale, {style: 'currency', currency: tr.currency_code}).format(tr.amount) }} \n \n \n {{ Intl.NumberFormat(locale, {style: 'currency', currency: tr.currency_code}).format(tr.amount * -1) }} \n \n \n {{ Intl.NumberFormat(locale, {style: 'currency', currency: tr.currency_code}).format(tr.amount) }} \n \n \n | \n
{{ $t('firefly.category') }} | \n{{ $t('firefly.spent') }} | \n
---|---|
\n {{ category.name }}\n | \n\n \n 0\" class=\"progress\">\n \n {{ Intl.NumberFormat(locale, {style: 'currency', currency: category.currency_code}).format(category.spent) }}\n \n\n \n\n \n \n 0\" class=\"progress justify-content-end\" title=\"hello2\">\n \n {{ Intl.NumberFormat(locale, {style: 'currency', currency: category.currency_code}).format(category.earned) }}\n \n \n \n\n | \n
\n \n
\n\n
\n \n
\n\n
\n \n
\n\n
\n \n
\n\n
0&&t.stroke()}}function Wt(t,e,n){return n=n||.5,t&&t.x>e.left-n&&t.x m||f s&&o>s;return{count:r,start:l,loop:e.loop,ilen:c0}_computeGridLineItems(t){const e=this,n=e.axis,r=e.chart,i=e.options,{grid:o,position:a}=i,s=o.offset,l=e.isHorizontal(),c=e.ticks.length+(s?1:0),u=br(o),d=[],h=o.setContext(e.getContext(0)),p=h.drawBorder?h.borderWidth:0,g=p/2,m=function(t){return Rt(r,t,p)};let v,y,b,_,A,x,w,C,k,S,T,E;if("top"===a)v=m(e.bottom),x=e.bottom-u,C=v-g,S=m(t.top)+g,E=t.bottom;else if("bottom"===a)v=m(e.top),S=t.top,E=m(t.bottom)-g,x=v+g,C=e.top+u;else if("left"===a)v=m(e.right),A=e.right-u,w=v-g,k=m(t.left)+g,T=t.right;else if("right"===a)v=m(e.left),k=t.left,T=m(t.right)-g,A=v+g,w=e.left+u;else if("x"===n){if("center"===a)v=m((t.top+t.bottom)/2+.5);else if(f(a)){const t=Object.keys(a)[0],n=a[t];v=m(e.chart.scales[t].getPixelForValue(n))}S=t.top,E=t.bottom,x=v+g,C=x+u}else if("y"===n){if("center"===a)v=m((t.left+t.right)/2);else if(f(a)){const t=Object.keys(a)[0],n=a[t];v=m(e.chart.scales[t].getPixelForValue(n))}A=v-g,w=A-u,k=t.left,T=t.right}for(y=0;y{const r=e.getDatasetMeta(t);if(!r)throw new Error("No dataset found at index "+t);return{datasetIndex:t,element:r.data[n],index:n}}));!y(r,n)&&(e._active=r,e._updateHoverStyles(r,n))}notifyPlugins(t,e,n){return this._plugins.notify(this,t,e,n)}_updateHoverStyles(t,e,n){const r=this,i=r.options.hover,o=(t,e)=>t.filter((t=>!e.some((e=>t.datasetIndex===e.datasetIndex&&t.index===e.index)))),a=o(e,t),s=n?t:o(t,e);a.length&&r.updateHoverStyle(a,i.mode,!1),s.length&&i.mode&&r.updateHoverStyle(s,i.mode,!0)}_eventHandler(t,e){const n=this,r={event:t,replay:e,cancelable:!0},i=e=>(e.options.events||this.options.events).includes(t.type);if(!1===n.notifyPlugins("beforeEvent",r,i))return;const o=n._handleEvent(t,e);return r.cancelable=!1,n.notifyPlugins("afterEvent",r,i),(o||r.changed)&&n.render(),n}_handleEvent(t,e){const n=this,{_active:r=[],options:i}=n,o=i.hover,a=e;let s=[],l=!1,c=null;return"mouseout"!==t.type&&(s=n.getElementsAtEventForMode(t,o.mode,o,a),c="click"===t.type?n._lastEvent:t),n._lastEvent=null,Wt(t,n.chartArea,n._minPadding)&&(m(i.onHover,[t,s,n],n),"mouseup"!==t.type&&"click"!==t.type&&"contextmenu"!==t.type||m(i.onClick,[t,s,n],n)),l=!y(s,r),(l||e)&&(n._active=s,n._updateHoverStyles(s,r,e)),n._lastEvent=c,l}}const qr=()=>v(Zr.instances,(t=>t._plugins.invalidate())),Qr=!0;function Gr(t,e){const{startAngle:n,endAngle:r,pixelMargin:i,x:o,y:a,outerRadius:s,innerRadius:l}=e;let c=i/s;t.beginPath(),t.arc(o,a,s,n-c,r+c),l>i?(c=i/l,t.arc(o,a,l,r+c,n-c,!0)):t.arc(o,a,i,r+B,n-B),t.closePath(),t.clip()}function Xr(t,e,n,r){return{x:n+t*Math.cos(e),y:r+t*Math.sin(e)}}function Kr(t,e){const{x:n,y:r,startAngle:i,endAngle:o,pixelMargin:a}=e,s=Math.max(e.outerRadius-a,0),l=e.innerRadius+a,{outerStart:c,outerEnd:u,innerStart:f,innerEnd:d}=function(t,e,n,r){const i=Jt(t.options.borderRadius,["outerStart","outerEnd","innerStart","innerEnd"]),o=(n-e)/2,a=Math.min(o,r*e/2),s=t=>{const e=(n-Math.min(o,t))*r/2;return G(t,0,Math.min(o,e))};return{outerStart:s(i.outerStart),outerEnd:s(i.outerEnd),innerStart:G(i.innerStart,0,a),innerEnd:G(i.innerEnd,0,a)}}(e,l,s,o-i),h=s-c,p=s-u,g=i+c/h,m=o-u/p,v=l+f,y=l+d,b=i+f/v,_=o-d/y;if(t.beginPath(),t.arc(n,r,s,g,m),u>0){const e=Xr(p,m,n,r);t.arc(e.x,e.y,u,m,o+B)}const A=Xr(y,o,n,r);if(t.lineTo(A.x,A.y),d>0){const e=Xr(y,_,n,r);t.arc(e.x,e.y,d,o+B,_+Math.PI)}if(t.arc(n,r,l,o-d/l,i+f/l,!0),f>0){const e=Xr(v,b,n,r);t.arc(e.x,e.y,f,b+Math.PI,i-B)}const x=Xr(h,i,n,r);if(t.lineTo(x.x,x.y),c>0){const e=Xr(h,g,n,r);t.arc(e.x,e.y,c,i-B,g)}t.closePath()}Object.defineProperties(Zr,{defaults:{enumerable:Qr,value:Nt},instances:{enumerable:Qr,value:Yr},overrides:{enumerable:Qr,value:jt},registry:{enumerable:Qr,value:Cr},version:{enumerable:Qr,value:"3.1.1"},getChart:{enumerable:Qr,value:Ur},register:{enumerable:Qr,value:(...t)=>{Cr.add(...t),qr()}},unregister:{enumerable:Qr,value:(...t)=>{Cr.remove(...t),qr()}}});class Jr extends dr{constructor(t){super(),this.options=void 0,this.circumference=void 0,this.startAngle=void 0,this.endAngle=void 0,this.innerRadius=void 0,this.outerRadius=void 0,this.pixelMargin=0,this.fullCircles=0,t&&Object.assign(this,t)}inRange(t,e,n){const r=this.getProps(["x","y"],n),{angle:i,distance:o}=function(t,e){const n=e.x-t.x,r=e.y-t.y,i=Math.sqrt(n*n+r*r);let o=Math.atan2(r,n);return o<-.5*D&&(o+=P),{angle:o,distance:i}}(r,{x:t,y:e}),{startAngle:a,endAngle:s,innerRadius:l,outerRadius:c,circumference:u}=this.getProps(["startAngle","endAngle","innerRadius","outerRadius","circumference"],n);return(u>=P||Q(i,a,s))&&o>=l&&o<=c}getCenterPoint(t){const{x:e,y:n,startAngle:r,endAngle:i,innerRadius:o,outerRadius:a}=this.getProps(["x","y","startAngle","endAngle","innerRadius","outerRadius"],t),s=(r+i)/2,l=(o+a)/2;return{x:e+Math.cos(s)*l,y:n+Math.sin(s)*l}}tooltipPosition(t){return this.getCenterPoint(t)}draw(t){const e=this,n=e.options,r=n.offset||0;if(e.pixelMargin="inner"===n.borderAlign?.33:0,e.fullCircles=Math.floor(e.circumference/P),!(0===e.circumference||e.innerRadius<0||e.outerRadius<0)){if(t.save(),r&&e.circumference