์บ๋ฆฐ๋ ํ์ด์ง๊ฐ ๋ก๋๋ ํ ์๋ฐ์คํฌ๋ฆฝํธ๋ฅผ ์คํํ๋ ๋ฐฉ๋ฒ์ ๋ฌด์์ธ๊ฐ์?
์์ : ์ ์ํฉ์ ์ค๋ช
๋๋ฆฌ๊ฒ ์ต๋๋ค.
๋ค์๊ณผ ๊ฐ์ ๋ค์ ์ด๋ฒคํธ๊ฐ ํ์ํ๋ค๋ ์์ฒญ์ ๋ฐ์์ต๋๋ค:
ํ๋ฌ๊ทธ์ธ์ ํฌํฌ๋ฅผ ๋ง๋ค๊ณ ์ถ์ง ์์์, ๋ค์ ์ฝ๋๋ฅผ ์ฌ์ฉํ์ฌ ์ผ๋ถ ๊ตฌํํ์ต๋๋ค.
์์์ ์ด๋ฒคํธ ํ๊ทธ์ ๊ด๋ จ๋์ด ์์ผ๋ฉฐ ๊ธฐ๋ณธ ์นดํ
๊ณ ๋ฆฌ ์์์ ๋์ฒดํฉ๋๋ค.
์ด๋ฒคํธ HTML์ ํ๊ทธ ๋ชฉ๋ก์ ๋ค์๊ณผ ๊ฐ์ด ์ถ๊ฐํ์ต๋๋ค: data-tags="{{event.topic.tags}}"
<script type="text/x-handlebars" data-template-name="javascripts/components/events-calendar-event">
<div class="{{event.classes}}" data-tags="{{event.topic.tags}}" {{action 'selectEvent' event.topic.url}} style="{{event.listStyle}}">
{{#unless event.allDay}}
<span style='{{event.dotStyle}}'>{{d-icon 'circle'}}</span>
{{/unless}}
{{#if event.time}}
<span class="time">{{event.time}}</span>
{{/if}}
{{#if event.title}}
<span class="title" style="{{event.titleStyle}}">{{replace-emoji event.title}}</span>
{{/if}}
</div>
{{#if showEventCard}}
{{events-calendar-card topic=event.topic selectEvent="selectEvent"}}
{{/if}}
</script>
์คํธ๋ผ์ดํ ํจํด์ ์์ฑํฉ๋๋ค:
<script type="text/discourse-plugin" version="0.8.23">
api.onPageChange((url, title) => {
// tags colors
let colors = {muni: "#91D0B5", road: "#8ABBE2", freestyle: "#CFB3D3"};
let events = document.getElementsByClassName("event");
for (var i = 0; i < events.length; i++) {
let event = events[i];
let gradient = "";
let tags = event.getAttribute("data-tags").split(",");
for (j = 1; j <= tags.length; j++) {
gradient +=
", " +
colors[tags[j - 1]] +
" " +
j * 8 +
"px, " +
colors[tags[j - 1]] +
" " +
(j * 8 + 8) +
"px";
}
event.style.background = "repeating-linear-gradient(-45deg" + gradient + ")";
}
});
</script>
๊ทธ๋ฆฌ๊ณ CSS๋ฅผ ์กฐ๊ธ ์ถ๊ฐํ์ต๋๋ค.
๊ฒฐ๊ณผ:
ํ๊ทธ 2๊ฐ์ธ ์ด๋ฒคํธ:
ํ๊ทธ 3๊ฐ์ธ ์ด๋ฒคํธ:
์ ๊ฐ ๊ฒช๋ ๋ฌธ์ ๋ ์ ์๋ฐ์คํฌ๋ฆฝํธ๊ฐ ํ์ด์ง ๋ณ๊ฒฝ ์ ์คํ๋๋๋ฐ, ์บ๋ฆฐ๋๊ฐ ๋์ ์ผ๋ก ์ฝํ ์ธ ๋ฅผ ๋ก๋ํ๊ธฐ ๋๋ฌธ์ ์ด์ /๋ค์ ๋ฌ์ ์ด๋ฒคํธ์๋ ์คํธ๋ผ์ดํ ์์์ด ์ ์ฉ๋์ง ์๋๋ค๋ ๊ฒ์ ๋๋ค.
10์์ ์์ผ๋ฉด์ "๋ค์"์ ๋ ๋ฒ ํด๋ฆญํ์ฌ 12์๋ก ์ด๋ํ๋ฉด ๋ค์๊ณผ ๊ฐ์ด ํ์๋ฉ๋๋ค:
์ด ๋๋ฌธ์ ์บ๋ฆฐ๋ ์ฝํ ์ธ ๊ฐ ๋ก๋๋์์ ๋ ์ JS๊ฐ ์คํ๋๊ธฐ๋ฅผ ์ํฉ๋๋ค.



