今天我們要來實作一個即時投票系統,前端的圖表呈現部分,我們要依賴Chart.js
這個JS函式庫,所以今天就先來帶大家瞭解一下Chart.js
大概的使用方法。
首先創立一個新專案
|
|
Signal套件該裝的弄好,忘記的回去看Day3
安裝Chart.js
CDN引入
|
|
或NPM安裝
|
|
使用Chart.js
由於Chart.js是使用Canvas
元素來畫報表的,所以先建立一個Canvas
|
|
開始繪製圖表
Chart.js
的繪圖,只要照官方給定的格式,丟進Chart物件中,Chart.js就會幫我們畫出來,然後我們把官方給的範例套進去,物件格式大概像下面這樣
|
|
大概介紹一下功能
- type:圖表的種類
- dataset:圖表資料,是一個array
- labels:圖表的標籤
- data:資料數值,資料是一個array
- backgroundColor:背景色,array對應上面的data
- borderColor:線條顏色,array也是對應上面的data
- borderWidth:線條寬度
- options:圖表設定
然後我們照官方範例做一遍,只要呼叫出Chart.js
物件,把Canvas和資料塞進去就行。
|
|
註:記得
new Chart
要放在chartData
下面
這時候執行應該就能看到圖表了,但是大小卻是充滿整個瀏覽器,所以我們要再Canvas外面包一個<div>
元素,再給他長寬限制
|
|
註:我發現限制height沒有作用,所以限制width就好
使用Chart.js API
接下來我們要讓圖表重新繪製,修改資料的方式有2種,一種是把資料放在一個變數裡修改,或是直接呼叫Chart.js物件,進到物件變數裡修改,之後再使用API的.update()
重繪,圖表這時就會整個重新繪製。
首先我們要做一些投票的按鈕,投票和反對票分開2種按鈕
|
|
JS載入DOM元素
|
|
再來建立投票事件,只要將數值+1,再把update()
就行了,反對票則是倒過來。
|
|
這樣大概就完成了,下一篇就是SignalR的連接了。
DEMO
其實Chart.js
大部分的教學都是一次畫出,所以這篇我也是花了點時間做了點小測試,結果跟我想的一樣是可行的,可以邊改資料邊重繪圖表,那麼下一篇就開始與Signal做連線吧!!