Pleasanter Tips:スクリプトを書きながらチャートを表示するサイト

# はじめに
最近チャート表示するプログラムを作成していますが、いろいろ試す必要があり、前の情報を残しながら簡単にチャート表示できないかと思い作成してみました。
チャートはApache EChartsを使いました。

# 実行サンプル
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/63349/b8316ea2-8eee-8391-e94e-17cb4d1e1bb1.png)

# サイトを作成する

## 手順1 テーブルの作成
新規作成からテーブルを作成してください。サンプルでは記録テーブルで作成しています。

## 手順2 項目の作成
エディタで項目設定します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/63349/9f004546-3ca3-5899-8abe-5a4c7c982a09.png)
### 見出しの追加
その他から見出しを追加します。見出しは２つ使用します。一つ目は コンテンツ で二つ目は チャートです。表示名に決まりは有りませんが、順番は前記の通りにしてください。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/63349/346f3fc6-f888-9787-0e6d-5ba1c1431e3b.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/63349/ff2da03d-a91a-3ec6-3624-291a723eb834.png)
### 説明の追加
説明を２つ追加します。一つ目はスクリプト記述用で、二つ目はグラフ表示エリア確保用です。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/63349/68f0cd7a-fc24-5f3e-154a-116b57f49641.png)
表示名の設定しました。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/63349/c7f6a1d9-b2ce-f926-fbbb-201bbd581a92.png)
非表示にチェックを入れます。
説明Bの拡張HTMLを変更します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/63349/d0c3bc1d-cc4d-56dd-ad74-58133a4fe4aa.png)
フィールドの前に下記を記述します。
```
<script src="https://cdn.jsdelivr.net/npm/echarts@5.4.3/dist/echarts.min.js"></script>
```
フィールドの後に下記を記述します。
```
<div id="ChartArea" style="display:inline-flex"></div>
```
## 手順3 スタイルの追加
チャート部を右に表示する為のスタイルを記述します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/63349/4875d735-ebbd-6e14-1717-967749e30db0.png)
```
#SectionFields1Container,
#SectionFields2Container,
#SectionFields3Container {
    float: left;
    width: 50%;
}
```
## 手順4 スクリプトの追加
グラフ表示部のスクリプトを記述します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/63349/d42f89e1-7226-ccda-d88d-8794637647d1.png)
```
$p.events.on_editor_load = function (args) {
  drawChart(args);
}
$p.events.after_set = function (args) {
  drawChart(args);
}
function drawChart(args) {
  $('#Results_DescriptionA')[0].value
  $p.getControl('DescriptionA')[0].id
  var src=$('#'+$p.getControl('DescriptionA')[0].id)[0].value;
  try {
    eval(src);
  } catch(e) {
    $p.setMessage('#Message', JSON.stringify({
      Css: 'alert-error',
      Text: e.message 
    }));
  }
}
```

# コンテンツを作成する
実際のコンテンツを作成します。スクリプトに下記コードを入力します。タイトル他は適当に。
```
if( $('#ChartAreaInner')[0]===undefined ) {
  $('#ChartArea').append('<div id="ChartAreaInner" style="background-color:white;width:800px;height:400px;"></div>');
}
var myChart = echarts.init(document.getElementById('ChartAreaInner'));
var option = {
  title: {text: 'ECharts Getting Started Example'},
  tooltip: {},
  legend: {
    data: ['sales']
  },
  xAxis: {
    data: ['Shirts', 'Cardigans', 'Chiffons', 'Pants', 'Heels', 'Socks']
  },
  yAxis: {},
  series: [
    {
      name: 'sales',
      type: 'bar',
      data: [5, 20, 36, 10, 10, 20]
    }
  ]
};
myChart.setOption(option);
```
上部にあるifはChartArea内にChartAreaInnerを追加します。チャートエリアのサイズを変える必要があるのでここで追記するようにしました。
EChartsでが表示エリアを変えるコマンドもあるのでそちらを使用しても良いです。
作成または更新するとチャートが描画されます。

# 最後に
今回のデータは固定にしましたが、WebAPIを使用して他サイトからデータを取得する事も可能です。