Skip to content

Commit

Permalink
Test update
Browse files Browse the repository at this point in the history
  • Loading branch information
winton committed Oct 19, 2010
1 parent 2f4fb6a commit 959e9bd
Show file tree
Hide file tree
Showing 5 changed files with 95 additions and 13 deletions.
16 changes: 16 additions & 0 deletions lib/a_b_front_end/controller/api.rb
Expand Up @@ -61,6 +61,22 @@
).to_json ).to_json
end end


put '/tests.json' do
ABPlugin::API.update_test(
:include => params[:include] || {
:variants => {
:methods => :for_dashboard
}
},
:id => params[:id],
:name => params[:name],
:old_variants => params[:old_variants],
:only => params[:only],
:token => current_user.single_access_token,
:variants => params[:variants]
).to_json
end

delete '/tests.json' do delete '/tests.json' do
ABPlugin::API.delete_test( ABPlugin::API.delete_test(
:id => params[:id], :id => params[:id],
Expand Down
7 changes: 5 additions & 2 deletions lib/a_b_front_end/view/dashboard.haml
Expand Up @@ -31,7 +31,10 @@
.span-2 .span-2
%label{ :for => 'test_name' } Name %label{ :for => 'test_name' } Name
.span-5 .span-5
<input class='variants' name='variants[]' type='text' value='<%= (typeof(name) != "undefined") ? name : "" %>' /> <% if (typeof(test) != "undefined") { %>
<input name='id' type='hidden' value='<%= test.id %>' />
<% } %>
<input id='test_name' name='name' type='text' value='<%= (typeof(test) != "undefined") ? test.name : "" %>' />
.clear .clear
.submit .submit
%input{ :type => 'submit', :value => 'Submit' } %input{ :type => 'submit', :value => 'Submit' }
Expand All @@ -46,7 +49,7 @@
Variant Variant
<% } %> <% } %>
.span-5 .span-5
<input class='variants' name='variants[]' type='text' value='<%= (typeof(name) != "undefined") ? name : "" %>' /> <input class='variants' name='<%= (typeof(id) != "undefined") ? "old_variants[" + id + "]" : "variants[]" %>' type='text' value='<%= (typeof(name) != "undefined") ? name : "" %>' />


%textarea.hide#test_template %textarea.hide#test_template
%table{ :id => 'test_<%= test.id %>' } %table{ :id => 'test_<%= test.id %>' }
Expand Down
17 changes: 10 additions & 7 deletions lib/a_b_front_end/view/layout.haml
Expand Up @@ -17,20 +17,23 @@
- if current_user - if current_user
.span-12.last .span-12.last
.span-4.nav.align-left .span-4.nav.align-left
%a{ :href => '/get_started' } Get Started /%a{ :href => '/get_started' } Get Started
&nbsp;
.span-4.nav .span-4.nav
%a{ :href => '/account' } Account /%a{ :href => '/account' } Account
&nbsp;
.span-4.nav.last .span-4.nav.last
%a{ :href => '/sessions/destroy' } Log out %a{ :href => '/sessions/destroy' } Log out
- else - else
.span-12.last .span-12.last
.span-3.nav .span-4.nav
%a.sign_up Sign up %a.sign_up Sign up
.span-3.nav .span-4.nav
%a{ :href => 'http://github.com/winton/a_b_plugin' } Github %a{ :href => 'http://github.com/winton/a_b_plugin' } Github
.span-3.nav /
%a{ :href => '/help' } Help .span-3.nav
.span-3.nav.last %a{ :href => '/help' } Help
.span-4.nav.last
%a.log_in Log in %a.log_in Log in
.clear .clear
.dialog.sign_up.hide .dialog.sign_up.hide
Expand Down
57 changes: 53 additions & 4 deletions public/js/dashboard.js
Expand Up @@ -243,19 +243,67 @@ window.Dashboard = function(sites) {
var table = $(this).closest('table'); var table = $(this).closest('table');
var id = table.attr('id').match(/\d+/)[0]; var id = table.attr('id').match(/\d+/)[0];
var test = byId(currentState().category.tests, id); var test = byId(currentState().category.tests, id);
var dialog = $('#tests_form_template').tmpl({ name: test.name }); var dialog = $('#tests_form_template').tmpl({ test: test });
var submit = $('.submit', dialog);
var variant_template = $('#tests_form_variant_template');


table.replaceWith(dialog); table.replaceWith(dialog);
$('input:first', dialog)[0].select(); $('input:first', dialog)[0].select();


$.each(test.variants, function(i, item) { $.each(test.variants, function(i, item) {
$('.submit', dialog).before( submit.before(
$('#tests_form_variant_template').tmpl({ variant_template.tmpl({
control: (i == 0), control: (i == 0),
id: item.id,
name: item.name name: item.name
}) })
); );
}); });

submit.before(
variant_template.tmpl({
control: (test.variants.length == 0)
})
);

$('.cancel', dialog).click(function() {
dialog.remove();
$('#categories .selected').click().click();
return false;
});

$('form', dialog).submit(function() {
var form = $(this);
var submits = $('.submit input', form);

$(submits[0]).attr({
'disabled': true,
'value': 'One moment...'
});
$(submits[1]).remove();

var data = currentState();
var category = data.category;
var site = data.site;

queue.queue(function() {
$.post(
'/tests.json',
form.serialize() + '&_method=PUT',
function(response) {
category.tests = category.tests || [];
category.tests = $.map(category.tests, function(item) {
return (item.id == id) ? response : item;
});
queue.dequeue();
$('#categories .selected').click().click();
},
'json'
);
});

return false;
});
} }


function testRemove() { function testRemove() {
Expand All @@ -264,9 +312,10 @@ window.Dashboard = function(sites) {


var test = $(this).closest('table'); var test = $(this).closest('table');
var id = test.attr('id').match(/\d+/)[0]; var id = test.attr('id').match(/\d+/)[0];
var category = currentState().category;


test.remove(); test.remove();
category.tests = $.grep(currentState().category.tests, function(item) { category.tests = $.grep(category.tests, function(item) {
return (item.id != id); return (item.id != id);
}); });


Expand Down
11 changes: 11 additions & 0 deletions vendor/a_b_plugin/lib/a_b_plugin/api.rb
Expand Up @@ -105,6 +105,17 @@ def self.sites(attributes={})
)) ))
end end


def self.update_test(attributes={})
return unless Config.token && Config.url
base_uri Config.url
put('/tests.json', :query => compress(
:include => attributes.delete(:include),
:only => attributes.delete(:only),
:token => attributes.delete(:token) || Config.token,
:test => attributes
))
end

private private


def self.compress(hash) def self.compress(hash)
Expand Down

0 comments on commit 959e9bd

Please sign in to comment.