やってみる

アウトプットすべく己を導くためのブログ。その試行錯誤すらたれ流す。

ElementPlusのTableを使ってみた

 複数キーでソートできなかった。

成果物

コード

<div id="app">
<el-table ref="singleTable" :data="tableData" style="width: 100%" highlight-current-row @current-change="onCurrentChange" :default-sort="{prop:'date', order:'descending'}">
  <el-table-column prop="date" label="Date" width="180" sortable :formatter="onFormatterDate" 
    :filters="[{text: '2016-05-01', value: new Date('2016-05-01')}, {text: '2016-05-02', value: new Date('2016-05-02')}, {text: '2016-05-03', value: new Date('2016-05-03')}, {text: '2016-05-04', value: new Date('2016-05-04')}]"
    :filter-method="onFilterDate"></el-table-column>
  <el-table-column prop="age" label="Age" width="180" sortable ></el-table-column>
  <el-table-column prop="name" label="Name" width="180" sortable ></el-table-column>
  <el-table-column prop="address" label="Address" sortable ></el-table-column>
</el-table>
window.addEventListener('load', (event) => {
    const App = {
      setup() {
        return {
          tableData: [{
            date: new Date('2016-05-03'),
            name: 'Tom',
            age: 99,
            address: 'No. 189, Grove St, Los Angeles'
          }, {
            date: new Date('2016-05-02'),
            name: 'Tom',
            age: 100,
            address: 'No. 189, Grove St, Los Angeles'
          }, {
            date: new Date('2016-05-04'),
            name: 'Tom',
            age: 20,
            address: 'No. 189, Grove St, Los Angeles'
          }, {
            date: new Date('2016-05-01'),
            name: 'Tom',
            age: 33,
            address: 'No. 189, Grove St, Los Angeles'
          }]
        }
      },
        methods: {
          setCurrent(row) {
            this.$refs.singleTable.setCurrentRow(row);
          },
          onCurrentChange(val) {
            this.currentRow = val;
            console.log(this.currentRow);
          },
          onFormatterDate(row, column) {
              return row.date.toLocaleString();
          },

          onFilterDate(value, row, column) {
            const property = column['property'];
            console.log(value, row[property], row, column);
            return row[property].getTime() === value.getTime();
          }
        }
    };
    const app = Vue.createApp(App);
    app.use(ElementPlus);
    app.mount("#app");
});

特徴

残念

  • 複数キーでソートできない
  • フィルタリングUIがうまく表示されなかった。チェックが反映されない
    • 公式サイトの例は正常に反映されるが、クリックするたび表示まで8秒かかった

対象環境

$ uname -a
Linux raspberrypi 5.4.83-v7l+ #1379 SMP Mon Dec 14 13:11:54 GMT 2020 armv7l GNU/Linux