Files
2026-07-23 16:15:57 +09:00

1 line
13 KiB
JavaScript

"use strict";function safeGrad(t,a,e){var r=arguments.length>3&&void 0!==arguments[3]&&arguments[3];if(!a||void 0===a.left||void 0===a.right)return e[0].color;var i=a.left,n=a.right,o=a.top,l=a.bottom,s=r?t.createLinearGradient(0,o,0,l):t.createLinearGradient(i,0,n,0);return e.forEach(function(t){return s.addColorStop(t.stop,t.color)}),s}var hideNullPointsPlugin={id:"hideNullPoints",beforeDatasetsDraw:function(t){t.data.datasets.forEach(function(t){if("line"===t.type){var a=t.data;Array.isArray(a)&&(Array.isArray(t.pointRadius)||(t.pointRadius=a.map(function(){return t.pointRadius||6})),Array.isArray(t.pointHoverRadius)||(t.pointHoverRadius=a.map(function(){return t.pointHoverRadius||8})),t.pointRadius=a.map(function(a,e){return null===a?0:t.pointRadius[e]}),t.pointHoverRadius=a.map(function(a,e){return null===a?0:t.pointHoverRadius[e]}))}})}},highlightXFactory=function(t){var a=arguments.length>1&&void 0!==arguments[1]?arguments[1]:cssVar("--bg-chart-highlight");return{id:"highlightX_".concat(t),beforeDatasetsDraw:function(e){if(e.chartArea){var r=e.ctx,i=e.chartArea,n=e.scales.x,o=e.data.labels.indexOf(t);if(-1!==o){var l=n.getPixelForValue(o+1)-n.getPixelForValue(o);isNaN(l)&&o>0&&(l=n.getPixelForValue(o)-n.getPixelForValue(o-1)),r.save(),r.fillStyle=a,r.fillRect(n.getPixelForValue(o)-l/2,i.top,l,i.bottom-i.top),r.restore()}}}}};function createMixedValuePlugin(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:10;return{id:"mixedValuePlugin",afterDatasetsDraw:function(a){var e=a.ctx,r=[],i=[],n=[];a.data.datasets.forEach(function(t,e){var r=a.getDatasetMeta(e);"line"===t.type&&r&&r.data&&r.data.forEach(function(a,e){var r,i,o=t.data[e];if(null!=o){var l=Array.isArray(t.pointRadius)?null!==(r=t.pointRadius[e])&&void 0!==r?r:3:null!==(i=t.pointRadius)&&void 0!==i?i:3;n.push({x:a.x,y:a.y,radius:l})}})}),a.data.datasets.forEach(function(n,o){var l=a.getDatasetMeta(o);l&&l.data&&l.data.forEach(function(a,l){var s=n.data[l];if(null!=s){var d=String(s);e.font="bold 1.2rem Noto Sans KR, sans-serif";var f,u=e.measureText(d).width;"bar"===n.type?f=a.y:"line"===n.type&&(f=a.y-t);var c={datasetIndex:o,elementIndex:l,element:a,value:s,type:n.type,x:a.x,y:f,originalY:f,textWidth:u,textHeight:20};"bar"===n.type?r.push(c):"line"===n.type&&i.push(c)}})});var o=function(t,a){var e=Math.abs(t.x-a.x)<10,r=Math.abs(t.y-a.y)<25;return e&&r};r.forEach(function(t){n.forEach(function(a){(function(t,a){if(!(Math.abs(t.x-a.x)<10))return!1;var e=t.textWidth/2,r=(t.y,t.y,a.radius+3),i=Math.abs(t.x-a.x),n=Math.abs(t.y-a.y);return i<e+r&&n<r+10})(t,a)&&(t.y=a.y-a.radius-5)})}),i.forEach(function(t){r.forEach(function(a){o(t,a)&&(t.y=a.y-20)})});for(var l=0;l<i.length;l++)for(var s=l+1;s<i.length;s++)o(i[l],i[s])&&(i[s].y=i[l].y-20);for(var d=0;d<r.length;d++)for(var f=d+1;f<r.length;f++)o(r[d],r[f])&&(r[f].y=r[d].y-20);[].concat(r,i).forEach(function(t){var r=a.data.datasets[t.datasetIndex];e.save(),e.font="bold 1.2rem Noto Sans KR, sans-serif",e.textAlign="center",e.textBaseline="bottom";var i=String(t.value);if("bar"===r.type)e.strokeStyle="white",e.lineWidth=3,e.fillStyle=cssVar("--chart-mixbar"),e.strokeText(i,t.x,t.y),e.fillText(i,t.x,t.y);else if("line"===r.type){var n=e.measureText(i).width,o=t.x-n/2-4,l=t.y-12-4,s=n+8;e.fillStyle="rgba(233, 192, 192, 0.5)",e.beginPath(),e.roundRect(o,l,s,20,4),e.fill(),e.strokeStyle="white",e.lineWidth=3,e.fillStyle=cssVar("--chart-mixline"),e.strokeText(i,t.x,t.y),e.fillText(i,t.x,t.y)}e.restore()})}}}function createMixedPointGradientPlugin(t){return{id:"mixedPointGradient",afterDatasetsDraw:function(a){var e=a.ctx;a.data.datasets.forEach(function(r,i){var n=a.getDatasetMeta(i);"line"===r.type&&n&&n.data&&n.data.forEach(function(a,i){var n,o,l=a.x,s=a.y,d=Array.isArray(r.pointRadius)?null!==(n=r.pointRadius[i])&&void 0!==n?n:3:null!==(o=r.pointRadius)&&void 0!==o?o:3;if(0!==d){var f=l-d+2*d*.3333,u=s-d+2*d*.3333,c=.7862*d,h=e.createRadialGradient(f,u,0,f,u,c);(t||[{stop:1,color:cssVar("--bg-chart-mixbullet")}]).forEach(function(t){return h.addColorStop(t.stop,t.color)}),e.save(),e.beginPath(),e.arc(l,s,d,0,2*Math.PI),e.fillStyle=h,e.fill(),e.shadowColor="rgba(0,0,0,0.4)",e.shadowBlur=4,e.shadowOffsetX=0,e.shadowOffsetY=0,e.strokeStyle="rgba(255,255,255)",e.lineWidth=2,e.stroke(),e.restore()}})})}}}function createPointGradientPluginWithBorder(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};return{id:"pointGradientWithBorder",afterDatasetsDraw:function(a){var e=a.ctx,r=[];a.data.datasets.forEach(function(i,n){var o=a.getDatasetMeta(n);o&&"line"===o.type&&!o.hidden&&o.data.forEach(function(a,o){var l,s;if(void 0!==a&&null!==i.data[o]){var d=a.x,f=a.y,u=i.data[o],c=Array.isArray(i.pointRadius)?null!==(l=i.pointRadius[o])&&void 0!==l?l:3:null!==(s=i.pointRadius)&&void 0!==s?s:3;if(0!==c){var h=d-c+2*c*.3333,v=f-c+2*c*.3333,x=.7862*c,g=e.createRadialGradient(h,v,0,h,v,x),y=t[i.label];if(y&&Array.isArray(y)?y.forEach(function(t){return g.addColorStop(t.stop,t.color)}):0===n?g.addColorStop(1,cssVar("--bg-chart-linearea01")):1===n&&g.addColorStop(1,cssVar("--bg-chart-linearea02")),e.save(),e.beginPath(),e.arc(d,f,c,0,2*Math.PI),e.fillStyle=g,e.fill(),e.shadowColor="rgba(0,0,0,0.4)",e.shadowBlur=4,e.shadowOffsetX=0,e.shadowOffsetY=0,e.strokeStyle="rgba(255,255,255)",e.lineWidth=2,e.stroke(),e.restore(),null!=u){e.font="bold 1.6rem Noto Sans KR";var b=String(u),p=e.measureText(b).width;r.push({x:d,y:f-c-10,originalY:f-c-10,value:b,datasetIndex:n,textWidth:p,radius:c})}}}})});for(var i=function(t,a){var e=Math.abs(t.x-a.x)<10,r=Math.abs(t.y-a.y)<25;return e&&r},n=0;n<r.length;n++)for(var o=0;o<n;o++)i(r[n],r[o])&&(r[n].y=r[o].y-20);r.forEach(function(t){e.save(),e.font="bold 1.6rem Noto Sans KR",e.textAlign="center",e.textBaseline="bottom",0===t.datasetIndex?e.fillStyle=cssVar("--bg-chart-linearea01")||"#2b8f10":1===t.datasetIndex?e.fillStyle=cssVar("--bg-chart-linearea02")||"#7c108f":e.fillStyle="#000",e.strokeStyle="white",e.lineWidth=3,e.strokeText(t.value,t.x,t.y),e.fillText(t.value,t.x,t.y),e.restore()})}}}var totalCenterPluginFactory=function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"총";return{id:"totalCenter_".concat(t),afterDatasetsDraw:function(a){var e=a.ctx,r=a.chartArea;if(r){var i=(r.left+r.right)/2,n=(r.top+r.bottom)/2;e.save();var o=a.getDatasetMeta(0);if(o&&o.data&&o.data.length>0){var l=o.data[0].innerRadius;if(o.data.length>0){var s=o.data[0].innerRadius;e.beginPath(),e.arc(i,n,s,0,2*Math.PI),e.shadowOffsetX=0,e.shadowOffsetY=0,e.shadowBlur=20,e.shadowColor="rgba(0, 0, 0, 0.4)",e.fillStyle="#F7F7F7",e.fill(),e.shadowBlur=0,e.shadowColor="transparent"}if(l>5&&(e.beginPath(),e.arc(i,n,l-5,0,2*Math.PI),e.fillStyle="#F5F5F0",e.fill()),e.font="500 18px Noto Sans KR, sans-serif",e.fillStyle="#121212",e.textAlign="center",e.textBaseline="middle",e.measureText(t).width>1.6*(l-5)&&t.length>1){var d=Math.ceil(t.length/2),f=t.substring(0,d),u=t.substring(d);e.fillText(f,i,n-13),e.fillText(u,i,n+13)}else e.fillText(t,i,n)}e.restore()}}}},externalLabelPlugin={id:"externalLabel",afterDatasetsDraw:function(t){var a=t.ctx,e=t.data.datasets[0],r=t.getDatasetMeta(0);if(r&&r.data){var i=e.data.reduce(function(t,a){return t+a},0),n=t.data.labels,o=r.data.map(function(t,a){var r=e.data[a],n=Math.round(r/i*100),o=t.startAngle,l=t.endAngle,s=t.innerRadius,d=t.outerRadius,f=(o+l)/2,u=r/i<.05,c=f>Math.PI/2&&f<1.5*Math.PI,h=d+15,v=t.x+Math.cos(f)*h,x=t.y+Math.sin(f)*h;return{index:a,value:r,percentage:n,midAngle:f,innerRadius:s,outerRadius:d,arcX:t.x,arcY:t.y,isSmall:u,isLeft:c,baseX:v,baseY:x,finalX:v,finalY:x,needsLine:!1}}),l=[];o.forEach(function(t){if(t.isSmall){for(var e=t.baseY,r=t.baseX,i=0,o=0,s=l;o<s.length;o++){var d=s[o],f=Math.abs(e-d.y),u=Math.abs(r-d.x),c=t.isSmall?17.6:22;u<100&&f<c&&(i+=8.8,!0)}i>0&&(e=t.baseY+i,t.needsLine=!0);var h="".concat(n[t.index]," ").concat(t.value," (").concat(t.percentage,"%)");a.font="bold 1.8rem Noto Sans KR, sans-serif";var v=a.measureText(h).width,x=((t.isLeft?r-v:r)+(t.isLeft?r:r+v))/2;if(Math.sqrt(Math.pow(x-t.arcX,2)+Math.pow(e-t.arcY,2))<t.outerRadius+10){var g=t.isLeft?-50:50;r=t.baseX+g,t.needsLine=!0}t.finalX=r,t.finalY=e,l.push({x:t.finalX,y:t.finalY,height:22})}else l.push({x:t.baseX,y:t.baseY,height:22})}),o.forEach(function(t){var r=t.index,i=t.value,o=t.percentage,l=t.midAngle,s=t.innerRadius,d=t.outerRadius,f=t.arcX,u=t.arcY,c=t.isLeft,h=t.baseX,v=(t.baseY,t.finalX),x=t.finalY,g=t.needsLine,y=e.backgroundColor[r];if(a.save(),g){var b=(s+d)/2,p=f+Math.cos(l)*b,m=u+Math.sin(l)*b,S=d+5,P=f+Math.cos(l)*S,M=u+Math.sin(l)*S;a.beginPath(),a.arc(p,m,3,0,2*Math.PI),a.strokeStyle="#fff",a.lineWidth=2,a.stroke(),a.fillStyle="#333",a.fill(),a.strokeStyle="#333",a.lineWidth=1.5,a.setLineDash([4,4]),a.beginPath(),a.moveTo(p,m),a.lineTo(P,M),Math.abs(h-v)>5?a.lineTo(v,x):a.lineTo(P,x),a.stroke()}if(a.textBaseline="middle",a.fillStyle=y,c){var w=v;a.textAlign="right",a.font="500 1.4rem Noto Sans KR, sans-serif",a.fillText("(".concat(o,"%)"),w,x),w-=a.measureText("(".concat(o,"%)")).width,a.font="bold 1.8rem Noto Sans KR, sans-serif";var T=a.measureText(" ").width;w-=T,a.fillText(i.toString(),w,x),w-=a.measureText(i.toString()).width,w-=T,a.fillText(n[r],w,x)}else{var R=v;a.textAlign="left",a.font="bold 1.8rem Noto Sans KR, sans-serif",a.fillText(n[r],R,x),R+=a.measureText(n[r]).width;var D=a.measureText(" ").width;R+=D,a.fillText(i.toString(),R,x),R+=a.measureText(i.toString()).width,R+=D,a.font="500 1.4rem Noto Sans KR, sans-serif",a.fillText("(".concat(o,"%)"),R,x)}a.restore()})}}},gaugeValuePlugin={id:"gaugeValuePlugin",afterDatasetsDraw:function(t){var a=t.ctx,e=t.data.datasets[0],r=t.getDatasetMeta(0),i=e.data.slice(0,5).reduce(function(t,a){return t+a},0);if(a.save(),r&&r.data&&r.data.length>0){var n=r.data[0],o=n.x,l=n.y,s=n.outerRadius,d=l,f=o-s-12,u=o+s+12;a.strokeStyle="rgba(0, 0, 0, 0.40)",a.lineWidth=1,a.beginPath(),a.moveTo(f,d),a.lineTo(u,d),a.stroke()}r.data.forEach(function(t,r){if(!(r>=5)){var n=e.data[r];if(n&&0!==n){var o=t.startAngle,l=t.endAngle,s=t.innerRadius,d=t.outerRadius,f=(o+l)/2;if(n/i<.08){var u=(s+d)/1.75,c=t.x+Math.cos(f)*u,h=t.y+Math.sin(f)*u;a.beginPath(),a.arc(c,h,3,0,2*Math.PI),a.strokeStyle="#fff",a.lineWidth=2,a.stroke(),a.fillStyle="#333",a.fill();var v=d+20,x=t.x+Math.cos(f)*v,g=t.y+Math.sin(f)*v,y=d+30,b=t.x+Math.cos(f)*y,p=t.y+Math.sin(f)*y;a.strokeStyle="#333",a.lineWidth=1.5,a.setLineDash([4,4]),a.beginPath(),a.moveTo(c,h),a.lineTo(x,g),a.stroke(),a.setLineDash([]),a.font="bold 2rem Noto Sans KR, sans-serif",a.textAlign="center",a.textBaseline="middle",a.shadowOffsetX=0,a.shadowOffsetY=0,a.shadowBlur=0,a.strokeStyle="#000",a.lineWidth=3,a.strokeText(n,b,p),a.fillStyle="#fff",a.fillText(n,b,p)}else{a.font="bold 2rem Noto Sans KR, sans-serif",a.textAlign="center",a.textBaseline="middle";var m=(s+d)/2,S=t.x+Math.cos(f)*m,P=t.y+Math.sin(f)*m;a.shadowOffsetX=0,a.shadowOffsetY=0,a.shadowBlur=0,a.strokeStyle="#000",a.lineWidth=3,a.strokeText(n,S,P),a.fillStyle="#fff",a.fillText(n,S,P)}}}}),a.restore()}},htmlLegendPlugin={id:"htmlLegend",afterUpdate:function(t,a,e){var r=document.getElementById(e.containerID);if(r){r.innerHTML="";var i=document.createElement("ul");i.className="chart-legend";var n=t.data.labels||[],o=t.data.datasets[0].backgroundColor||[],l=e.activeWeek||null;n.forEach(function(t,a){if("남은 목표"!==t){var e=document.createElement("li"),r=parseInt(t.replace("주차",""));l&&r===l&&(e.className="active");var n=document.createElement("span");n.className="legend-dot",n.style.backgroundColor=o[a];var s=document.createTextNode(" ".concat(t));e.appendChild(n),e.appendChild(s),i.appendChild(e)}}),r.appendChild(i);var s=t.getDatasetMeta(0);if(s&&s.data&&s.data.length>0){var d=s.data[0],f=(t.canvas.getBoundingClientRect(),d.y);r.style.position="absolute",r.style.top="".concat(f+44,"px"),r.style.left="50%",r.style.transform="translateX(-50%)"}}}},customPointPlugin={id:"customPointPlugin",afterDatasetsDraw:function(t,a,e){var r=t.ctx;t.data.datasets.forEach(function(a,i){t.getDatasetMeta(i).data.forEach(function(t,n){var o,l,s,d=a.data[n];if(null!=d){var f=t.x,u=t.y,c=null!==(o=e.offsetY)&&void 0!==o?o:10;r.save(),r.beginPath(),r.fillStyle=null!==(l=null===(s=e.bulletColor)||void 0===s?void 0:s[i])&&void 0!==l?l:"#000",r.strokeStyle="#fff",r.lineWidth=2,r.arc(f,u-c,6,0,2*Math.PI),r.fill(),r.stroke(),r.restore()}})})}};function createCustomLabelPlugin(t){return{afterDatasetsDraw:function(a){var e=a.ctx,r=a.getDatasetMeta(0),i=a.data.datasets[0],n=i.data.reduce(function(t,a){return t+a},0);r.data.forEach(function(a,r){var o=i.data[r],l=Math.round(o/n*100),s=a.x+5,d=a.y;e.font="bold 16px sans-serif",e.fillStyle=t[r],e.textAlign="left",e.textBaseline="middle";var f=e.measureText(o).width;e.fillText(o,s,d),e.font="normal 12px sans-serif",e.fillText(" ("+l+"%)",s+f,d)})}}}function createDashedGridPlugin(){return{afterDraw:function(t){var a=t.ctx,e=t.scales.x,r=t.scales.y,i=e.max,n=i/2,o=[n/2,n+(i-n)/2];a.save(),a.strokeStyle="#e0e0e0",a.lineWidth=1,a.setLineDash([5,5]),o.forEach(function(t){var i=e.getPixelForValue(t);a.beginPath(),a.moveTo(i,r.top),a.lineTo(i,r.bottom),a.stroke()}),a.restore()}}}function createCustomGridPlugin(){return{beforeDatasetsDraw:function(t){var a=t.ctx,e=t.scales.x,r=t.scales.y,i=e.max,n=i/2,o=n/2,l=n+(i-n)/2;a.save(),a.strokeStyle="#e0e0e0",a.lineWidth=1,a.setLineDash([]),[0,n,i].forEach(function(t){var i=e.getPixelForValue(t);a.beginPath(),a.moveTo(i,r.top),a.lineTo(i,r.bottom),a.stroke()}),a.setLineDash([5,5]),[o,l].forEach(function(t){var i=e.getPixelForValue(t);a.beginPath(),a.moveTo(i,r.top),a.lineTo(i,r.bottom),a.stroke()}),a.restore()}}}