]> git.ktnx.net Git - lsl.git/blobdiff - public/javascripts/lsl.js
whitespace
[lsl.git] / public / javascripts / lsl.js
index a21cb3ba1b53514ec4b635a8c70b08cb5b37e73f..7d0c4e03e630921a2743fad380d5f9d0d905ce8b 100644 (file)
@@ -20,12 +20,15 @@ function got_lists_version(new_version) {
     if (new_version != lists_version)
         window.setTimeout(load_lists);
 }
+function got_list_version(new_version) {
+    var id_data = selected_list.data('id');
+    if (new_version != id_data.version)
+        window.setTimeout(() => load_list_items(id_data.uri, selected_list));
+}
 function load_list_items(uri, target) {
     $.get(uri)
     .done(item_data => {
         target.data('items', item_data);
-        if (selected_list)
-            selected_list.removeClass('selected');
 
         var item_list = $('#list-items').empty().removeClass('have-list-items');
 
@@ -42,6 +45,8 @@ function select_list(new_selected_list) {
 
     var id_data = new_selected_list.data('id');
 
+    if (selected_list)
+        selected_list.removeClass('selected');
     load_list_items(id_data.uri, new_selected_list);
     selected_list = new_selected_list;
     selected_list.addClass('selected');
@@ -99,26 +104,19 @@ function handle_new_list_submission(){
     return false;
 }
 function new_list_item_submission_done(data) {
-    if (data.lists_version != lists_version) {
-        load_lists();
-        return;
-    }
+    got_lists_version(data.lists_version);
+    got_list_version(data.list_version);
 
     var item_data = selected_list.data('items');
 
-    if (data.list_version != item_data.version + 1) {
-        load_list_items(current_list);
-    }
-    else {
-        var new_item = {
-            description: $('#new-list-item input[type="text"]').val().trim(),
-            done: $('#new-list-item input[type="checkbox"]').prop('checked'),
-            version: 1,
-        };
-        item_data.items.push(new_item);
-        item_data.version = data.list_version;
-        add_list_item(new_item);
-    }
+    var new_item = {
+        description: $('#new-list-item input[type="text"]').val().trim(),
+        done: $('#new-list-item input[type="checkbox"]').prop('checked'),
+        version: 1,
+    };
+    item_data.items.push(new_item);
+    item_data.version = data.version;
+    add_list_item(new_item);
 
     $('#new-list-item input').val('');
 }
@@ -146,7 +144,12 @@ function handle_list_item_state_changed(ev) {
                 version: item_data.version,
                 done: cb.prop('checked')})
         }
-    );
+    )
+    .done(function(resp){
+        item_data.version = resp.version;
+        got_lists_version(resp.lists_version);
+        got_list_version(resp.list_version);
+    });
 }
 $(function(){
     uri_base = $('#page').attr('lsl-uri-base');