Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

フィルタのUI #165

Open
3 tasks
elcih17 opened this issue Dec 11, 2017 · 16 comments
Open
3 tasks

フィルタのUI #165

elcih17 opened this issue Dec 11, 2017 · 16 comments

Comments

@elcih17
Copy link

elcih17 commented Dec 11, 2017

modeはダッシュボード(view)の右側部分にこんな感じのUIが置かれている

_2017-12-11 15 19 07

  • 選択 / 選択解除
  • 検索
  • 適用

あたりは必要か

@elcih17
Copy link
Author

elcih17 commented Dec 22, 2017

<easy-dc-dataset
  dataset="a"
  filter-dimension="foo"
></easy-dc-dataset>

形としてはに渡すpropsでいく

名前どうしよう filter-keys? filter-dimension? filters?

@elcih17
Copy link
Author

elcih17 commented Dec 22, 2017

値でフィルタかけたいとのこと

group by keyしたfilter用のdatasetを持っておけばいいか

@elcih17
Copy link
Author

elcih17 commented Dec 22, 2017

1/16 (ハッピーターン) までに入れる

@elcih17
Copy link
Author

elcih17 commented Dec 22, 2017

@otolab
こちら意見いただけると助かります!

@elcih17 elcih17 self-assigned this Dec 22, 2017
@elcih17
Copy link
Author

elcih17 commented Dec 22, 2017

このフィルタUIの表示のさせ方によって、ダッシュボード全体のレイアウト計算に影響を与えるので、そこらへんも考慮する必要がある

@otolab
Copy link
Collaborator

otolab commented Dec 22, 2017

UIについては @kojimakazuto にアイデアをもらうのが一番だと思う。
内部的にはvue-multiselect系をベースに使うのが楽そうではある。近い形のものはありそうな気もする。

実装はまかせた。

すごく関係ないけど、縦長レイアウトにも対応したいね。
某経営資料系のレポートも縦長。

@elcih17
Copy link
Author

elcih17 commented Dec 22, 2017

  • dataset, dimension(= keys)を受け取る
  • filter用のdatasetを作る
    • this.manager.registerDataset()
  • computedで
    • キーの絞り込み条件を指定されてない時 -> dimension.group().map(data => data.key) みたいな
    • キーの絞り込み条件を指定された時 -> 指定された値を考慮した結果を返す関数
  • viewの前に対象のキーに対してlabelsの変換をかます

このcomputedの値が返らなければフィルタUIは出さない
これでいいか

@elcih17
Copy link
Author

elcih17 commented Dec 22, 2017

@otolab
確かに、multi-selectいれるべきかもですね

縦型レイアウト

DOMOのやつですよね!
タイトル + 数字 (number-display) + チャート みたいな形だと縦型の方が見やすくなりそうですよね。

@elcih17
Copy link
Author

elcih17 commented Dec 22, 2017

  • オーバーレイ
  • チャート全画面表示時は隠す
  • 表示 / 非表示の切り替え (ボタンか何か)

になる予定

@elcih17
Copy link
Author

elcih17 commented Dec 22, 2017

labelsがチャート固有の辞書をサポートしているので、filterも同じ構造にしといた方がいいか

そうなると全てのkeyに対してlabelを適用した状態のデータセットでgroup byか

@elcih17
Copy link
Author

elcih17 commented Dec 26, 2017

細かくやると複雑になるし、多分そこまで高機能なものは求められてないと思うので、common dimensionのみサポートする

(dashboardの中で共通のフィルタと考えると、むしろcommon dimensionのみが正かもしれない)

@elcih17
Copy link
Author

elcih17 commented Dec 27, 2017

easydc

@elcih17
Copy link
Author

elcih17 commented Dec 27, 2017

選択状態になっていない部分をグレーアウトではなく、完全に消すとなると、FakeGroupsのアプローチしかない。

https://github.com/dc-js/dc.js/wiki/FAQ#how-do-i-filter-the-data-before-its-charted
Filter out bins by a predicate function on the values

function filter_bins(source_group, f) {
    return {
        all:function () {
            return source_group.all().filter(function(d) {
                return f(d.value);
            });
        }
    };
}

FakeGroupsのアプローチはそこそこ大きい変更になってしまうので、UIをつめてから実装する

@elcih17
Copy link
Author

elcih17 commented Jan 11, 2018

https://dc-js.github.io/dc.js/docs/html/dc.selectMenu.html

とりあえず、dc.jsのselectMenuを使うのがシンプルな気がしてきたのでそれで実装してみる

@elcih17
Copy link
Author

elcih17 commented Jan 11, 2018

selectMenuに今のBaseをextendsすると動かない(カードレイアウト、テーマを当ててる部分)
なので、一通りsnapshotのみのテストを用意して、レイアウト部分を分離するのを先にやる

@kojimakazuto
Copy link
Contributor

@elcih17
デザインになります。
明確な期日は決まってはいないですが、可能なら2月初旬には反映したい気持ちです!

ちなみに、このフィルターを使うレポートはこちら:
https://modeanalytics.com/editor/plaidev/reports/c5d5ccceb4e8

segmentfilter

@elcih17 elcih17 removed their assignment Sep 28, 2018
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

3 participants