๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
RECORDS/Projects๐ŸŒด

์–ธ์–ด ํ† ๊ธ€์‹œ ์ฐจํŠธ ์—…๋ฐ์ดํŠธ ๊ธฐ๋Šฅ ๊ตฌํ˜„(algoview)

by _wavy 2023. 6. 2.

๋‚ด์ผ ํšŒ์˜ ์•ˆ๊ฑด

  • ๋งˆํฌ์—…: ๋Ž์Šค ์ถ”๊ฐ€ํ• ์ง€? section→section→article→canvas
    • ๊ฐ ์ฐจํŠธ๋ณ„ ์ œ๋ชฉ ํƒœ๊ทธ ํ•„์š”
  • json ํŒŒ์ผ ํ•˜๋‚˜๋กœ ํ†ตํ•ฉ(์ƒ์ˆ˜์ธ url ๊ด€๋ฆฌ์™€ ์„œ๋ฒ„ ์š”์ฒญ ์ตœ์†Œํ™”๋ฅผ ์œ„ํ•จ)
  • issue: chartPage ์–ธ์–ด ํ† ๊ธ€์‹œ ์ฐจํŠธ ์—…๋ฐ์ดํŠธ
  • ํ˜„์žฌ ๋™์ž‘ ๋ฐฉ๋ฒ•: ๋งˆํฌ์—…์˜ canvas ํƒœ๊ทธ๋ฅผ ๊ฐ€์ ธ์™€์„œ ๊ทธ ์•ˆ์— chart ํด๋ž˜์Šค๋ฅผ ์ƒ์„ฑํ•จ
  • ๋ฌธ์ œ:
    1. chart๋ฅผ ์—…๋ฐ์ดํŠธํ•˜๋ ค๋ฉด
      → ๊ธฐ์กด ์ฐจํŠธ ๋‚ด๋ถ€์˜ ๋ฐฐ์—ด์—์„œ label, data๋ฅผ ์ผ์ผ์ด popํ•ด์•ผ ํ•จ
      → ๊ทธ ๋‹ค์Œ ์•„๋ž˜ ํ•จ์ˆ˜๋กœ chart, label, data๋ฅผ ์ผ์ผ์ด pushํ•ด์•ผ ํ•จ
      function addData(chart, label, data) {
      // ํ”„๋กœํผํ‹ฐ ๊ฐ’ ๋ณ€๊ฒฝ chart.data.labels = label;
      chart.data.datasets.data = data;
      // ์ฐจํŠธ ์—…๋ฐ์ดํŠธ
      chart.update(); }
    2. ํ˜น์€ chart๊ฐ€ ๋‹ด๊ธด canvas๋ฅผ ์‚ญ์ œํ•˜๊ณ  ์žฌ์ƒ์„ฑํ•ด์•ผ ํ•จ. ์ด ๋•Œ ๊ฐ ํŒŒํŠธ ๋ถ„๋“ค์ด canvas dom ์š”์†Œ๋ฅผ ์ƒ์„ฑํ•˜๊ณ  id๋ฅผ ๋‹ฌ๊ณ  article์— append ํ•ด์ฃผ์…”์•ผ ํ•จ
    3. ๋งˆํฌ์—…์„ ์ง€์šฐ๊ณ  ๊ฐ์ž๊ฐ€ js๋กœ dom ์š”์†Œ๋ฅผ ์ƒ์„ฑํ•˜๋Š” ๋ฐฉ๋ฒ•์ด ์žˆ์Œ. ์ด ๋• append ์ˆœ์„œ๋กœ ๋Œ€ํ˜ผ๋ž€์ด ์˜ฌ ๋“ฏํ•จ
    4. ์ตœ์ข…์ ์œผ๋กœ ์„ ํƒํ•œ ๋ฐฉ๋ฒ•์€ chart.destroy() ๋ฉ”์„œ๋“œ๋ฅผ ์“ฐ๋Š” ๊ฒƒ. ๋‹ค์ˆ˜์˜ ์ค‘๋ณต ์ž‘์—…์„ ๋ง‰๊ณ ์ž ํ–ˆ์ง€๋งŒ chart๋ผ๋Š” ๊ฐ์ฒด๊ฐ€ ์ง€์ •๋˜์–ด์•ผ ํ•˜๋ฏ€๋กœ ์ด๊ฒƒ๋งŒ์€ ์–ด์ฉ” ์ˆ˜ ์—†์ด ์ผ์ผ์ด ํ•ด์ฃผ์…”์•ผ ํ•จ
      • ํ•จ์ˆ˜๋ฅผ ์“ธ ์ˆ˜ ์žˆ๋Š”์ง€๋Š” ์ฐจํŠธ ์ฝ”๋“œ ์ง์ ‘ ํ™•์ธ ํ•„์š”
      • ํ…Œ์ŠคํŠธ์‹œ problemTypeChart, companyChart๋Š” ์ •์ƒ ๋™์ž‘ํ•˜์ง€๋งŒ ๊ฐ™์€ ์นดํ…Œ๊ณ ๋ฆฌ ๋‚ด์— ์–ธ์–ด์— ๋”ฐ๋ผ์„œ ์‚ฌ์šฉ ์•ˆ ๋˜๋Š” canvas๊ฐ€ ์žˆ์„ ์‹œ ๋ ˆ์ด์•„์›ƒ์ด ๊นจ์งˆ ์ˆ˜ ์žˆ์Œ. css ์ž‘์—… ํ•„์ˆ˜
  • issue: js ๋ชจ๋“ˆํ™”(์ค‘๋ณต ์ฝ”๋“œ๋ฅผ ์ค„์ด๊ณ  ๊ฐ€๋…์„ฑ๊ณผ ์œ ์ง€ ๋ณด์ˆ˜๋ฅผ ์œ„ํ•ด ํ•จ์ˆ˜ํ˜• ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์ ์šฉ)
    • ๋น„๋ชจ๋“ˆํ™”: ์ฝ”๋“œ๋Š” ๊ธธ๊ณ  ๋ชป์ƒ๊ฒผ์ง€๋งŒ ๋‹จ์ˆœํ•ด์„œ ์ฒ˜์Œ ์ž‘์„ฑํ•  ๋•Œ ํŽธํ•จ. ์—ฌ๋Ÿฌ ์‚ฌ๋žŒ์ด ํ•œ ํŒŒ์ผ์—์„œ ์ž‘์—…ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ๋ฌธ์ œ๊ฐ€ ์ƒ๊ธฐ๊ธฐ ์‰ฝ๊ณ , ์—๋Ÿฌ๋‚˜๋„ ๋ฌธ์ œ๊ฐ€ ๋˜๋Š” ๋ถ€๋ถ„์ด๋‚˜ ๋กœ์ง ํŒŒ์•…์ด ์–ด๋ ค์›€
    • ๋ชจ๋“ˆํ™”: ํ•จ์ˆ˜ํ˜•์œผ๋กœ ์งœ๋‘์–ด์„œ ์ž‘์„ฑ์ด ์–ด๋ ค์›Œ๋ณด์ผ ์ˆ˜ ์žˆ์œผ๋‚˜ ์ฝ๋Š” ์ž…์žฅ์—์„œ๋Š” ๊ฐ€๋…์„ฑ ์ข‹๋„๋ก ๊ตฌ์„ฑํ•˜์˜€์Œ. ๊ฐ ์ฐจํŠธ๋ฅผ ์นดํ…Œ๊ณ ๋ฆฌ๋ณ„๋กœ ํ•œ js ํŒŒ์ผ์— ๋„ฃ์„์ง€ ๋Ž์Šค๋ฅผ ๋” ์ค„์ง€ ๊ณ ๋ฏผ ์ค‘. ์ตœ์ข…์ ์œผ๋กœ chartpage ๋‚ด์— 6๊ฐœ์˜ ํ•จ์ˆ˜๊ฐ€ import ๋จ
  • js๋กœ canvas ๋” ์š”์†Œ ์ƒ์„ฑ(HTML์˜ ์ˆ˜์ •์ด ๋นˆ๋ฒˆํ•˜์—ฌ ํ˜‘์—…์‹œ ํ˜ผ๋ž€ ๋ฐœ์ƒ์˜ ์—ฌ์ง€๊ฐ€ ์žˆ์Œ)
  • ์ฐจํŠธ ์ž‘์„ฑ๊ณผ CSS ์ž‘์—… ํˆฌ ํŠธ๋ž™

 

ํ˜ผ์ž ํ•˜๋Š” ํ”„๋กœ์ ํŠธ๊ฐ€ ์•„๋‹Œ์ง€๋ผ ๊ฐ€๋…์„ฑ๊ณผ ์ฝ”๋“œ ๋‚œ์ด๋„, ์ค‘๋ณต ์ž‘์—… ์ตœ์†Œํ™” ์‚ฌ์ด์—์„œ ๊ท ํ˜•์„ ์žก๋Š๋ผ ์ƒ๊ฐ๋ณด๋‹ค ๊ณ ๋ฏผ์„ ๋งŽ์ด ํ–ˆ๋‹ค. ๋‹จ์ˆœํ•˜๊ฒŒ ์งฐ๋‹ค๊ฐ€ ๊ฐœ์ธ์ ์ธ ์š•์‹ฌ์œผ๋กœ ๋ชจ๋“ˆํ™”๋ฅผ ํฌ๊ธฐํ•  ์ˆ˜๊ฐ€ ์—†์–ด์„œ ์ถ”๊ฐ€๋กœ ๋ฆฌํŒฉํ† ๋ง. ๋‚ด์ผ ์ž˜ ์„ค๋ช…์„ ๋“œ๋ ค์•ผ ํ• ํ…๋ฐ ์ž์‹ ์ด ์—†๊ตฐ...

๋Œ“๊ธ€