X-Git-Url: https://git.ktnx.net/?a=blobdiff_plain;ds=inline;f=public%2Fjavascripts%2Flsl.js;h=c0125ded653f2be3802a6c4b2d4ee85243e754ec;hb=4af316b9339d4cd09a290549ae223affe61b0d90;hp=260a282fc57e3802912a2970521388f6a67ee9fc;hpb=c82a41b13e0dc704bd51b8a52d9caa4e49e903f6;p=lsl.git diff --git a/public/javascripts/lsl.js b/public/javascripts/lsl.js index 260a282..c0125de 100644 --- a/public/javascripts/lsl.js +++ b/public/javascripts/lsl.js @@ -19,7 +19,10 @@ function uri_id(uri) { return m ? m[1] : null; } function add_list_item(data) { - var item = $('
  • ').addClass('list-item-row').data('item', data); + var item = $('
  • ').addClass('list-item-row').data({ + 'lsl-uri': data.uri, + 'lsl-version': data.version, + 'lsl-done': data.done}); var cb = $(''); if (data.done) cb.prop('checked', true); item.append(cb); @@ -41,7 +44,8 @@ function got_list_version(new_version) { function load_list_items(uri, target) { $.get(uri) .done(item_data => { - target.data('items', item_data); + target.data('lsl-items', item_data.items); + target.data('lsl-version', item_data.version); // TODO: merge new items into existing ones // keep track of the last existing item, and append new one @@ -233,17 +237,16 @@ function handle_new_list_submission(){ } function new_list_item_submission_done(data) { got_lists_version(data.lists_version); + selected_list.data('lsl-version', selected_list.data('lsl-version') + 1 ); got_list_version(data.list_version); - var item_data = selected_list.data('items'); - var new_item = { description: $('#new-list-item input[type="text"]').val().trim(), done: $('#new-list-item input[type="checkbox"]').prop('checked'), version: 1, + uri: data.uri, }; - item_data.items.push(new_item); - item_data.version = data.version; + selected_list.data('lsl-items').push(new_item); add_list_item(new_item); $('#new-list-item input').val(''); @@ -263,18 +266,18 @@ function handle_new_list_item_submission(){ function handle_list_item_state_changed(ev) { var item = $(ev.target).closest('li'); var cb = item.find('input[type="checkbox"]'); - var item_data = item.data('item'); - $.ajax(item_data.uri, + $.ajax(item.data('lsl-uri'), { type: 'PUT', data: JSON.stringify({ - version: item_data.version, + version: item.data('lsl-version'), done: cb.prop('checked')}) } ) .done(function(resp){ - item_data.version = resp.version; + item.data('lsl-version', resp.version); got_lists_version(resp.lists_version); + selected_list.data('lsl-version', selected_list.data('lsl-version')+1); got_list_version(resp.list_version); }); }