Skip to content

道場を非表示にする仕組みの追加 #340

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

Merged
merged 3 commits into from
Jun 5, 2018
Merged

道場を非表示にする仕組みの追加 #340

merged 3 commits into from
Jun 5, 2018

Conversation

naopontan
Copy link
Contributor

@naopontan naopontan commented Jun 1, 2018

close #310,#314,#333

やりたいこと

休止や廃止などの道場に対応して道場一覧などからは非表示にしたい。

  • 休止の場合は復活があるので、復活できる状態にしたい
  • イベント履歴としては実績なのでそのまま残す(休止中/廃止中のいづれの場合でも)

今回のアプローチ

dojos テーブルに状態管理のフィールドを追加することで対応する。

zen.coderdojo.com では非アクティブな情報を持っているため、API 連携ができると手動で対応する必要がなくなるが (#330)、実装に時間がかかりそうだった。

また、既にいくつかの休止依頼 (#333 ) がきていることもあり、今回はワークアラウンドで対応する。

TODO

  • 仕様確認
    • 道場一覧から非アクティブは除外する
    • 集計値にて「道場数」に非アクティブは含めない(ただし、統計情報は過去の実績とみなし、含める)
  • 実装
  • 道場が非表示になる事の確認(トップ画面統計情報画面)
  • 非表示な道場のイベント履歴が集計対象になっている事の確認
  • dojos.yaml でアクティブ/非アクティブ情報が正しく取り込まれる事の確認

関連情報

cf. #310
cf. #314
cf. #330
cf. #333

@naopontan naopontan self-assigned this Jun 1, 2018
@naopontan
Copy link
Contributor Author

@yasulab

#314 (comment) にて軽く仕様を確認したのですが、もう1点確認です。

https://coderdojo.jp/stats では、3つのグラフとその下に「推移テーブル」があります。

  • 道場数
  • 開催回数
  • 参加者数

です。こちらも、道場数のみ -1 し、残り2つはそのまま。の認識でいいですか?


あと、1つ気づいたのですが
「推移グラフ」と「推移テーブル」ですが、 道場数だけ微妙にズレ ています。
グラフでは 5, 7, 16, 21, 63, 117 ですが、
テーブルは 5, 5, 14, 18, 48, 78
となっています 🤔 ...ソースを見て確認してみます。

@naopontan
Copy link
Contributor Author

@yasulab
https://coderdojo.jp/stats ページの道場数だけ微妙にズレている件、なんか不具合な感じがします... 💭

道場数だけはグラフとテーブルでコールしているメソッドが別々になっていて、推移テーブルの方が 2013年が無い!?
推移テーブルは以下の前者の方です( Dojo.aggregatable_annual_count)

[11] pry(main)> Dojo.aggregatable_annual_count period
=> {"2012"=>5, "2014"=>9, "2015"=>4, "2016"=>30, "2017"=>30} # <= 2013 年が無い

[12] pry(main)> Dojo.annual_count period
=> {"2012"=>5, "2013"=>2, "2014"=>9, "2015"=>5, "2016"=>42, "2017"=>54}

こちら、先程のミーティングにもあったとおり、 issue 立てますね。


推移テーブルの道場数だけ「合計数」が表示されていないのは仕様と理解していますが、もしかしたら単に表示忘れ?何か関係しているのかな 🤔

@nalabjp
Copy link
Member

nalabjp commented Jun 4, 2018

@naopontan

https://coderdojo.jp/stats ページの道場数だけ微妙にズレている件、なんか不具合な感じがします... 💭

推移テーブルは「*集計対象のみ」という注釈が入っています。
この推移テーブルの表に含まれている開催回数や参加者数は週次で最新情報を自動取得していて集計されています。
その自動取得をする際の対象となる道場が推移テーブルの表に含まれている道場数、ということになるので推移グラフとは数値が異なるものとなっています。

@nalabjp
Copy link
Member

nalabjp commented Jun 4, 2018

推移テーブルは「*集計対象のみ」という注釈が入っています。

ここ多分、直感的に分かりづらいんでしょうねぇ。
私も初見で瞬時に理解できなかったので実装時にちょっと迷った記憶があります。
わかりやすい文言に変えられると良いかもしれませんねぇ🤔

@naopontan
Copy link
Contributor Author

@nalabjp
なるほど、数値が異なるのは折り込み済みなのですね。ありがとうございます

すみません、まだちゃんと理解していない 😅 のですがグラフ、テーブル、ともに去年までの 過去データ となっています。過去の記録なのでいつ集計しても数値は変わらない。の認識で良いでしょうか? もちろん、過去分のデータがいじられると変化はしますが。。

@nalabjp
Copy link
Member

nalabjp commented Jun 4, 2018

@naopontan

過去の記録なのでいつ集計しても数値は変わらない。の認識で良いでしょうか?
もちろん、過去分のデータがいじられると変化はしますが。。

はい、ご認識のとおりで大丈夫です。
「実は集計可能なdojoだったけど見落としていた」みたいなケースがあれば、再集計するようなこともあるかもしれませんし、その際は数値が変わることになりますね。

@naopontan
Copy link
Contributor Author

なるほど! 😸
再集計 の可能性は現状の様子をみてると十分にあり得そうですね。ありがとうございました

@yasulab
Copy link
Member

yasulab commented Jun 4, 2018

道場数のみ -1 し、残り2つはそのまま。の認識でいいですか?

統計情報への反映はさせなくて大丈夫です! 👌 なので coderdojo.jp のトップページで表示/非表示を toggle する boolean 値のカラムを Dojo モデルに追加し、それ dojos.yaml から更新できるようにしていただければ大丈夫です 🙆‍♂️ yaml を通してカラムの内容を更新し、カラムの内容に応じて View 側の表示/非表示が切り替えられたらと考えています🤔💭

@naopontan
Copy link
Contributor Author

ci がfailed になるのはDBフィールドを追加したから?.. 🤔 💭
とりあえず無視して続けよう...

@naopontan
Copy link
Contributor Author

@yasulab

道場数のみ -1 し、残り2つはそのまま。の認識でいいですか?

統計情報への反映はさせなくて大丈夫です! 👌

こちら、統計情報に表示される数値部分への反映はしなくても良い。という事ですか?

coderdojo.jp のトップページで表示/非表示を toggle する boolean 値のカラムを Dojo モデルに追加し、それ dojos.yaml から更新できるようにしていただければ大丈夫です 🙆‍♂️ yaml を通してカラムの内容を更新し、カラムの内容に応じて View 側の表示/非表示が切り替えられたらと考えています🤔💭

一応、カラムを追加して View 側の表示/非表示が切り替わる部分は作成しました。

@yasulab
Copy link
Member

yasulab commented Jun 4, 2018

Stats ページには反映させなくて大丈夫です🙆‍♀️

一方、トップページの冒頭で表示している Dojo 数については反映してもらえると嬉しいです😆✨

@yasulab
Copy link
Member

yasulab commented Jun 4, 2018

Description 書き直しておきました!😆

@naopontan naopontan force-pushed the hide_dojo branch 2 times, most recently from 41ade72 to 0c657df Compare June 5, 2018 04:40
@naopontan
Copy link
Contributor Author

ふむふむ。そうなのですね。勉強になります! 📝 👀

@naopontan naopontan requested review from yasulab and nalabjp June 5, 2018 04:45
@yasulab
Copy link
Member

yasulab commented Jun 5, 2018

[WIP] 道場を非表示にする仕組みの追加 #340

🤔.oO( WIP ということはまだ実装途中かな...?)

@naopontan naopontan changed the title [WIP] 道場を非表示にする仕組みの追加 道場を非表示にする仕組みの追加 Jun 5, 2018
@naopontan
Copy link
Contributor Author

すみません、外し忘れでした 💦

@yasulab
Copy link
Member

yasulab commented Jun 5, 2018

非アクティブ化の例を一つ含めてもよさそうですね! 😸 試しに小手指の Dojo をこの仕組みで非アクティブにするコミットを積んで見てはどうでしょうか? 🤔

@naopontan
Copy link
Contributor Author

なるほど、このPRに含めちゃうのですね。
やってみます。

@yasulab
Copy link
Member

yasulab commented Jun 5, 2018

TODO

仕様確認
設計
実装
道場が非表示になる事の確認
非表示な道場のイベント履歴が集計対象になっている事の確認

別件ですが TODO の前半 (仕様確認〜実装) の粒度が荒いですね 👀 後半と同じぐらいの粒度まで具体化したほうがよさそうです 📝 🔍

cf. #287

@yasulab
Copy link
Member

yasulab commented Jun 5, 2018

なるほど、このPRに含めちゃうのですね。

仕組みの実装と実例の追加は意味として異なるので、コミットは別々にしておいたほうがわかりやすいと思います 👍

@naopontan
Copy link
Contributor Author

うぅ 😓 早速バグ発見。とりあえずタイトルに WIP 入れます.. 🙏

@naopontan naopontan changed the title 道場を非表示にする仕組みの追加 [WIP] 道場を非表示にする仕組みの追加 Jun 5, 2018
@yasulab
Copy link
Member

yasulab commented Jun 5, 2018

了解です! 全然大丈夫です 😸 👌

@naopontan
Copy link
Contributor Author

@yasulab バグフィックスし、 PR の Description も更新してみました。

@naopontan naopontan changed the title [WIP] 道場を非表示にする仕組みの追加 道場を非表示にする仕組みの追加 Jun 5, 2018
@naopontan naopontan requested a review from yasulab June 5, 2018 05:53
@yasulab
Copy link
Member

yasulab commented Jun 5, 2018

良さそう! 😸

@nalabjp さんも軽くレビューしていただけると嬉しいです! Description にも書いていただいておりますが、今回はワークアラウンドな対応を目指しています 🔧 💨

@yasulab yasulab requested a review from nalabjp June 5, 2018 05:56
@yasulab yasulab added the 急ぎじゃないよ Make something better but not rushed. label Jun 5, 2018
@@ -32,7 +32,12 @@ def dump_attributes_to_yaml(attributes)
end

def group_by_region
eager_load(:prefecture).default_order.group_by { |dojo| dojo.prefecture.region }
relation = block_given? ? yield : all
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

ブロックの結果にAR::Relationを期待していて、実質引数としているのがメソッドとして分かりづらいなと思いました。
def group_by_region(relation = all)としている方が多少は明示的かなぁと思ったのですが、
その前に呼び出し元を以下のように書けそうな気がしました。(手元に確認できる環境が今無いので未確認ですが😅)

def group_by_region_on_active
  active.group_by_region
end

activeからのチェーンで期待どおりになるならgroup_by_regionの修正は不要そうに思えますがどうでしょうか?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

def group_by_region(relation = all)としている方が多少は明示的かなぁと思ったのですが、

確かにこっちがシンプルですね。変にブロックを使ってややこしくしてしまいました。

active.group_by_region

あ、動きました。...という事で、こっちの方がよさそうですね。直します 📝
勉強になります。ありがとうございます

@@ -38,6 +38,7 @@ namespace :dojos do
d.created_at = d.new_record? ? Time.zone.now : dojo['created_at'] || d.created_at
d.updated_at = Time.zone.now
d.prefecture_id = dojo['prefecture_id']
d.is_active = dojo['is_active'].nil? ? true : dojo['is_active']
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

https://github.com/rails/rails/blob/375a4143cf5caeb6159b338be824903edfd62836/activemodel/lib/active_model/type/boolean.rb#L17

'false'をtypoしたらtrueが入りそうですけど、RubyのtruthyとTypeCastの仕様だし仕方ないですかね。

Copy link
Member

@yasulab yasulab Jun 5, 2018

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

こういう gem あったら使えたりするのかなぁ🤔💭

cf. https://twitter.com/darkdimius/status/1002049138366730240

It's public now: @stripe is building a typechecker for #Ruby with emphasis on scalability and user-friendliness. Currently presenting it at #RubyKaigi with @nelhage and @ptarjan. Try it: https://sorbet.run/ . See it at Tachibana room at #RubyKaigi2018

@naopontan
Copy link
Contributor Author

@yasulab
西成と野田を休止扱いにして push してみました。Description も close するように書き直しました。
確認の程、よろしくお願いします。

Copy link
Member

@yasulab yasulab left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Refactoring と書かれたコミットは不要なので rebase お願いします(>人<;)

naopontan added 3 commits June 5, 2018 17:55
dojo モデルに is_active フィールドを追加しました。
具体的には非表示にしたい道場は db/dojos.yaml にて `is_active: false` を追加するとよいです。
@naopontan
Copy link
Contributor Author

@yasulab rebase しました(squash 少し慣れてきました)

少し話が変わりますがドキュメント類まで考慮した方が良いですかね?
今把握している関係しそうなドキュメントは以下です。

@yasulab yasulab closed this Jun 5, 2018
@yasulab yasulab reopened this Jun 5, 2018
@yasulab
Copy link
Member

yasulab commented Jun 5, 2018

コメントするつもりが close してしまった... orz

@yasulab
Copy link
Member

yasulab commented Jun 5, 2018

ドキュメント類まで考慮した方が良いですかね?
今把握している関係しそうなドキュメントは以下です。

https://coderdojo.jp/docs/how-to-suspend-your-dojo
coderdojo.jp に連絡を入れる旨の記載をする? 🤔

こちらナイスな指摘ですね! 僕の方で上記ドキュメントに追記しておきました 📝 💨
26a2c4e

Copy link
Member

@yasulab yasulab left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

良さそう! 😆
@nalabjp さんの意見も伺いところ 🤔💭

Copy link
Member

@nalabjp nalabjp left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTMです👍

@yasulab
Copy link
Member

yasulab commented Jun 5, 2018

マージします! PRの作成と実装、お疲れ様でした! 😸 ♨️

@yasulab yasulab merged commit 832dcca into master Jun 5, 2018
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
急ぎじゃないよ Make something better but not rushed.
Projects
None yet
Development

Successfully merging this pull request may close these issues.

非アクティブな Dojo を非表示にする仕組みが欲しい (例: CoderDojo 小手指)
3 participants