「ランキング選択」投票は円グラフでは正しく機能しません

:information_source: 概要

円グラフタイプとランキング選択投票を併用すると、誤った結果が生成されます。ユーザーが実際に選択した順位に関係なく、各選択肢に1票が与えられます。この動作により、グラフは誤解を招き、ランキング選択のロジックと互換性がなくなります。

:walking_woman: 再現手順

  1. コンポーザーで投票を作成をクリックします。
  2. 詳細オプション(歯車アイコン)を開きます。
  3. 投票フィールドを入力します(任意)。ただし、グラフタイプは「棒グラフ」ではなく**「円グラフ」**を選択します。
  4. 上部に戻り、投票タイプとしてランキング選択を選択します。
  5. 投票を保存して公開します。

この時点で、投票は円グラフタイプを使用しますが、これはランキング選択投票に対応するように設計されていません。

:white_check_mark: 期待される結果

システムは次のいずれかを行う必要があります。

  • 「ランキング選択」が選択されたときに、自動的に棒グラフに切り替える。
  • ランキング選択投票で円グラフを選択できないようにする。

:x: 観測された結果

投票は円グラフを使用し、ユーザーが1つまたは数個の選択肢しかランク付けしなかった場合でも、選択肢ごとに1票をカウントします。グラフはすべての選択肢を均等に表示するため、結果は無意味になります。

:books: 追加コンテキスト

一時的な回避策が適用されました。

poll = Poll.find_by(id: 123)
poll.chart_type = 'bar'
poll.save

コンソールで投票のグラフタイプを pie から bar に手動で更新すると、問題が解決し、正確な結果が復元されます。

「いいね!」 3

FYI 興味深いエッジケースです @merefield

「いいね!」 1

これは有効なエッジケースではありません。

現在、コアにはRanked Choice(順位選択制)に対応したグラフ表示がサポートされていません。これは意図的な選択です。

Ranked Choiceを円グラフで可視化することを意図したものではありません。Ranked Choiceはラウンド制であり、これを単一の円グラフで表現することはできません。

もしバグがあるとしたら、おそらくインターフェースが選択を阻止すべき状況で、誰かがグラフを選択できてしまったことでしょう。設定コードを変更してそれを許可したのでしょうか?とは言え、あなたは常に「ウィザード」実行後に初期マークダウンを「ハック」して属性を変更することができました(推奨されません)。

以前、適切なグラフとしてサンキー図(Sankey diagram)を提案しましたが、動作はしていましたが、Discourseはそれをマージしませんでした。なぜなら、それは(広くサポートされ人気のある)依存ライブラリを追加することになるからです。納得できます。

もしCDCKがサンキー図の採用に関する立場を変更するなら、そのコードを最新のコードベースに更新し、PR(プルリクエスト)を準備するために資金を提供してくれる人がいれば喜んで対応します。

私のフォークしたプラグインでは、Ranked Choiceに対してサンキー図を表示しています。メンテナンス資金がないため、おそらくかなり古く、メンテナンスが必要なものとなっています:

サンキー図に関連する代表的な変更点は以下の通りです:

ご自由にお使いください。

私自身言うのも何ですが、かなりクールです。

間違いなく円グラフよりも良いです!!:sweat_smile:

これは Contribute > Feature に移動し、機能リクエストは以下の内容とするのが良いでしょう:

  • Ranked Choiceに対する適切な可視化を追加する。
「いいね!」 1