1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

JavaScript製汎用テーブル(第2回:表データ定義)

Posted at

JavaScript勉強の目的で、小規模のアプリをコーディングしています。
今回はその1つ「汎用テーブル」を制作したので紹介します。
第1回 https://qiita.com/suwanishi77/items/02e2ddeb26f55928ee54

資材は
https://github.com/nnnmu24/generaltable
よりDLしてください。

表データの定義

定義するデータは表データと表オプションが存在します。

サンプルの表データは以下の通りです。

const tableDataSource = [
["SAMPLE01","映像作品リスト"],
["タイトル","ジャンル","鑑賞方法","鑑賞日","評価"],
["text","text","text","date.YYYY年MM月DD日","num"],
["","option01","","","option02"],
["アメリカのヒーローが大集合","アクション","","",""],
["余命少ない恋人と過ごす","恋愛","テレビ","2017年03月05日","3"],
["銀河を支配する帝国を打倒する","SF","DVD購入","2018年01月15日","5"],
["剣と魔法で闘う勇者","ファンタジー","動画配信サイト","2018年09月16日","1"],
["伝説の龍を育てる","ファンタジー","レンタルDVD","2019年02月05日","3"],
["王子様系の転校生に恋をする","恋愛","テレビ","2019年08月21日","2"],
["ドタバタ家族の海外ドラマ","コメディ","動画配信サイト","2019年05月05日","5"],
["とある王朝の栄枯","歴史","DVD購入","2018年11月03日","5"],
["続・とある王朝の栄枯","歴史","DVD購入","2019年08月21日","4"],
["学校一の不良を決める喧嘩祭","アクション","レンタルDVD","2017年07月11日","3"],
["豪華客船での恋物語","恋愛","映画館","2017年08月01日","5"],
["天下無双の剣豪","アクション","映画館","2020年01月04日","1"],
["伝説の傭兵が立ち上がる","アクション","映画館","2019年12月09日","4"],
["銀河を支配する帝国を打倒する・前日譚","SF","","",""],
["美大生全員が片想い","恋愛","映画館","2017年10月20日","5"],
];

サンプルの表オプションは以下の通りです。

const tableColumnOption = {
    option01: ["<div style='color:red'>", "</div>"],
    option02: ["★"],
};

表データの定義内容を説明します。
1行目から4行目は表の定義で、5行目以降が表の実データになります。

  • 1行目、1要素目:表コード
     表を識別するコード値を記述します。任意の文字を指定可能です。
     設定を保存する際のキーに使用します。
  • 1行目、2要素目:表名
     表の名前を記述します。任意の文字を指定可能です。
     表のタイトルとして表示します。
  • 2行目:列名
     各列の名称を記述します。任意の文字を指定可能です。
     表のヘッダとして表示します。
  • 3行目:列の型
     各列がどの値であるかを示す型を記述します。文字列、数値、日付のいずれかとします。
     型名はそれぞれ「text」「num」「date」です。
     dateは"."を付与し日時書式を追記します(例「date.YYYY/MM/DD」)日時書式は後述のいずれかとしてください。
     列の型は検索、ソート処理に影響します。
     配列要素は列名と同数としてください。要素超過分は無視されます。
     数値型、日付型を1つ以上定義した場合、表示変更エリアに数値絞込、日付絞込が表示されます。
  • 4行目:列オプション
     特定列の表データを装飾したい場合に、表オプションで定義したオプション名を記述します。装飾しない場合は空文字。
     オプション名を記述した場合、該当列の表データの前後に表オプションの文字列を付与します。この文字列はHTMLとして解釈されます。
     配列要素は列名と同数としてください。要素超過分は無視されます。
     サンプルの場合、2列目にoption1が、5列目にoption2が適用されます。
     これにより2列目は文字色が赤色に、5列目は先頭に"★"が追加されます。
  • 5行目以降:表データ
     表データの実値を記述します。
     行の要素数に上限はありません。
     値は任意ですが、数値型、日付型を指定した列はその定義に従った値にしてください。空文字は可能です。
     列の要素数は列名と同数としてください。要素超過分は無視されます。

表の解析、異常ケース

初回表示時に表データの定義値が正当かをチェックし、不備があった場合その内容をダイアログで表示します。
チェック内容と、不正時のデフォルト値は以下の通りです。

  • 表コード:未定義または空文字→デフォルト値「T0001」
  • 表名:未定義または空文字→デフォルト値「デフォルト表」
  • カラム名:空文字→デフォルト値「カラム1」「カラム2」・・・
  • カラム型
     カラム型不正→デフォルト値「text」
     日付書式不正→デフォルト値「text」
  • カラムオプション:不正なキー→デフォルト値 オプションなし
  • 表レコード
     カラム数に足りない→デフォルト値 空文字
     数値型、日付型で不正→デフォルト値 空文字

列の型「日付型」の日時書式について

列の型に日付型を指定した場合、型名「date」の後に"."を付与し日時書式を追記します。
日時書式は以下に示す「日付要素」「時刻要素」または「日付要素 時刻要素」のいずれかとしてください。

例.

  • date.YYYY/MM/DD

  • date.HH:mm :ss

  • date.YYYY年MM月DD日 HH時mm分ss秒
    "."以降を省略した場合はデフォルトで「YYYY/MM/DD HH:mm :ss」が適用されます。

  • 日付要素

    • YYYYMMDD
    • YYYY/MM/DD
    • YYYY-MM-DD
    • YYYY年MM月DD日
    • MMDD
    • MM/DD
    • MM-DD
    • MM月DD日
  • 時刻要素

    • HHmmss
    • HH:mm :ss(記載時はmm後の空白なしで)
    • HH時mm分ss秒
    • HHmm
    • HH:mm
    • HH時mm分
1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?