Module: CompletionKit::ApplicationHelper
- Defined in:
- app/helpers/completion_kit/application_helper.rb
Instance Method Summary collapse
- #ck_badge_classes(kind) ⇒ Object
- #ck_button_classes(tone = :dark, variant: :solid) ⇒ Object
- #ck_grouped_models(models, selected = nil) ⇒ Object
- #ck_model_options_html(scope) ⇒ Object
- #ck_provider_label(provider) ⇒ Object
- #ck_run_dot(run) ⇒ Object
- #ck_run_status_label(run) ⇒ Object
- #ck_score_kind(score) ⇒ Object
- #ck_word_diff_new(old_text, new_text) ⇒ Object
- #ck_word_diff_old(old_text, new_text) ⇒ Object
Instance Method Details
#ck_badge_classes(kind) ⇒ Object
26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 |
# File 'app/helpers/completion_kit/application_helper.rb', line 26 def ck_badge_classes(kind) case kind.to_s when "high" "ck-badge ck-badge--high" when "medium" "ck-badge ck-badge--medium" when "low" "ck-badge ck-badge--low" when "pending" "ck-badge ck-badge--pending" when "running" "ck-badge ck-badge--running" when "generating", "judging" "ck-badge ck-badge--running" when "completed" "ck-badge ck-badge--high" when "failed" "ck-badge ck-badge--low" else "ck-badge ck-badge--pending" end end |
#ck_button_classes(tone = :dark, variant: :solid) ⇒ Object
3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 |
# File 'app/helpers/completion_kit/application_helper.rb', line 3 def (tone = :dark, variant: :solid) base = "ck-button" styles = case [tone, variant] when [:dark, :solid] "ck-button--primary" when [:light, :outline] "ck-button--secondary" when [:green, :solid] "ck-button--success" when [:red, :outline] "ck-button--danger" when [:amber, :outline] "ck-button--warning" when [:blue, :outline] "ck-button--info" else "ck-button--primary" end "#{base} #{styles}" end |
#ck_grouped_models(models, selected = nil) ⇒ Object
83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 |
# File 'app/helpers/completion_kit/application_helper.rb', line 83 def ck_grouped_models(models, selected = nil) if selected.present? && models.none? { |m| m[:id] == selected } retired = CompletionKit::Model.find_by(model_id: selected) if retired models = models + [{ id: retired.model_id, name: "#{retired.display_name || retired.model_id} (retired)", provider: retired.provider }] end end groups = models.group_by do |m| if m[:provider] == "openrouter" upstream = m[:id].to_s.split("/", 2).first "OpenRouter — #{upstream}" else ck_provider_label(m[:provider]) end end ordered_keys = groups.keys.sort_by { |label| [label.start_with?("OpenRouter") ? 1 : 0, label] } grouped = ordered_keys.map { |label| [label, groups[label].map { |m| [m[:name], m[:id]] }] } (grouped, selected) end |
#ck_model_options_html(scope) ⇒ Object
105 106 107 108 109 |
# File 'app/helpers/completion_kit/application_helper.rb', line 105 def (scope) models = CompletionKit::ApiConfig.available_models(scope: scope) return "" if models.empty? ck_grouped_models(models) end |
#ck_provider_label(provider) ⇒ Object
79 80 81 |
# File 'app/helpers/completion_kit/application_helper.rb', line 79 def ck_provider_label(provider) CompletionKit::ProviderCredential::PROVIDER_LABELS[provider.to_s] || provider.to_s.titleize end |
#ck_run_dot(run) ⇒ Object
49 50 51 52 53 54 55 56 |
# File 'app/helpers/completion_kit/application_helper.rb', line 49 def ck_run_dot(run) case run.status when "generating", "judging" then "ck-dot ck-dot--running" when "failed" then "ck-dot ck-dot--failed" when "completed" then "ck-dot ck-dot--completed" else "ck-dot ck-dot--pending" end end |
#ck_run_status_label(run) ⇒ Object
58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 |
# File 'app/helpers/completion_kit/application_helper.rb', line 58 def ck_run_status_label(run) case run.status when "pending" then "Ready to run" when "generating" if run.progress_total.to_i > 0 "Generating responses (#{run.progress_current}/#{run.progress_total})" else "Generating responses…" end when "judging" if run.progress_total.to_i > 0 "Judging (#{run.progress_current}/#{run.progress_total} evaluations)" else "Judging…" end when "completed" then "Completed" when "failed" then "Failed" else run.status.capitalize end end |
#ck_score_kind(score) ⇒ Object
111 112 113 114 115 116 117 |
# File 'app/helpers/completion_kit/application_helper.rb', line 111 def ck_score_kind(score) return :pending if score.nil? return :high if score >= CompletionKit.config.high_quality_threshold return :medium if score >= CompletionKit.config.medium_quality_threshold :low end |
#ck_word_diff_new(old_text, new_text) ⇒ Object
123 124 125 |
# File 'app/helpers/completion_kit/application_helper.rb', line 123 def ck_word_diff_new(old_text, new_text) diff_tokens(old_text, new_text, :new) end |
#ck_word_diff_old(old_text, new_text) ⇒ Object
119 120 121 |
# File 'app/helpers/completion_kit/application_helper.rb', line 119 def ck_word_diff_old(old_text, new_text) diff_tokens(old_text, new_text, :old) end |