Sha256: 49beb87a8a39a816eac87b0a6a1e9e9e5bd879b628db23ed31d4e505fddc0719

Contents?: true

Size: 1.66 KB

Versions: 6

Compression:

Stored size: 1.66 KB

Contents

require 'sinatra/base'
require 'laboratory'
require 'laboratory/ui/helpers'

module Laboratory
  class UI < Sinatra::Base
    dir = File.dirname(File.expand_path(__FILE__))

    set :views, "#{dir}/ui/views"
    set :public_folder, "#{dir}/ui/public"
    set :static, true
    set :method_override, true

    helpers Laboratory::UIHelpers

    get '/' do
      @experiments = Laboratory::Experiment.all
      erb :index
    end

    get '/experiments/:id/edit' do
      @experiment = Laboratory::Experiment.find(CGI.unescape(params[:id]))
      erb :edit
    end

    # params = {variants: { control => 40, variant_a => 60 }}
    post '/experiments/:id/update_percentages' do
      experiment = Laboratory::Experiment.find(CGI.unescape(params[:id]))

      params[:variants].each do |variant_id, percentage|
        variant = experiment.variants.find { |v| v.id == variant_id }
        variant.percentage = percentage.to_i
      end

      experiment.save
      redirect experiment_url(experiment)
    end

    # params = {variant_id: 'control', user_ids: []}
    post '/experiments/:id/assign_users' do
      experiment = Laboratory::Experiment.find(CGI.unescape(params[:id]))
      variant = experiment.variants.find { |v| v.id == params[:variant_id] }
      user_ids = params[:user_ids].split("\r\n")

      user_ids.each do |user_id|
        user = Laboratory::User.new(id: user_id)
        experiment.assign_to_variant(variant.id, user: user)
      end

      redirect experiment_url(experiment)
    end

    post '/experiments/:id/reset' do
      experiment = Laboratory::Experiment.find(CGI.unescape(params[:id]))
      experiment.reset
      redirect experiment_url(experiment)
    end
  end
end

Version data entries

6 entries across 6 versions & 1 rubygems

Version Path
laboratory-0.1.7 lib/laboratory/ui.rb
laboratory-0.1.6 lib/laboratory/ui.rb
laboratory-0.1.5 lib/laboratory/ui.rb
laboratory-0.1.4 lib/laboratory/ui.rb
laboratory-0.1.3 lib/laboratory/ui.rb
laboratory-0.1.2 lib/laboratory/ui.rb