X-Git-Url: https://git.ktnx.net/?a=blobdiff_plain;ds=sidebyside;f=public%2Fjavascripts%2Flsl.js;h=f7efa52f72236622f57796a2b84a501f4ec95e6e;hb=0753df8cb1a2c3d9bd1a3b36c7d1b71ca529bdd3;hp=a21cb3ba1b53514ec4b635a8c70b08cb5b37e73f;hpb=f1ab8554042dbe7c02a7e53b2a3391378b887308;p=lsl.git
diff --git a/public/javascripts/lsl.js b/public/javascripts/lsl.js
index a21cb3b..f7efa52 100644
--- a/public/javascripts/lsl.js
+++ b/public/javascripts/lsl.js
@@ -1,33 +1,59 @@
"use strict";
(function(){
+var uri_base, environment, devel_env; // filled on page load from an HTML attribute
+var start_time = Date.now();
+
var ui_icon_class_re = new RegExp('\\bui-icon-\\S+\\b');
-var uri_base; // filled on page load from an HTML attribute
+var uri_id_re = new RegExp('/(\\d+)$');
var lists_version = -1;
var lists = [];
var selected_list;
+function debug(...args) {
+ if (devel_env)
+ console.debug.apply(console, args);
+}
+
+function uri_id(uri) {
+ var m = uri.match(uri_id_re);
+ 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-description': data.description,
+ 'lsl-done': data.done});
var cb = $('');
if (data.done) cb.prop('checked', true);
item.append(cb);
item.append($('').text(data.description || ''));
item.append($('').text('â¦'));
- $('#list-items').append(item).addClass('have-list-items');
+ $('#list-items').append(item);
+ $('#list-contents').addClass('have-list-items');
}
function got_lists_version(new_version) {
if (new_version != lists_version)
window.setTimeout(load_lists);
}
+function got_list_version(new_version) {
+ if (new_version != selected_list.data('lsl-version'))
+ window.setTimeout(
+ () => load_list_items(selected_list.data('lsl-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');
+ target.data('lsl-items', item_data.items);
+ target.data('lsl-version', item_data.version);
- var item_list = $('#list-items').empty().removeClass('have-list-items');
+ // TODO: merge new items into existing ones
+ // keep track of the last existing item, and append new one
+ // after it, prepending if there is no last existing item
+ // the newly prepended/inserted item becomes the last existing
+ $('#list-contents').removeClass('have-list-items');
+ var item_list = $('#list-items').empty();
$.each(item_data.items, (i,item) => {
add_list_item(item);
@@ -37,55 +63,192 @@ function load_list_items(uri, target) {
});
}
function select_list(new_selected_list) {
- if (new_selected_list == selected_list)
+ if (new_selected_list && selected_list
+ && new_selected_list.length && selected_list.length
+ && new_selected_list.get(0) == selected_list.get(0)
+ )
return;
- var id_data = new_selected_list.data('id');
+ if (new_selected_list && !new_selected_list.length)
+ new_selected_list = null;
+
+ $('#page').toggleClass('have-lists', !!new_selected_list);
+
+ if (selected_list)
+ selected_list.removeClass('selected');
+
+ if (new_selected_list) {
+ load_list_items(new_selected_list.data('lsl-uri'), new_selected_list);
+ new_selected_list.addClass('selected');
+ $('#selected-list-name').text(new_selected_list.data('lsl-name'));
+ }
- load_list_items(id_data.uri, new_selected_list);
selected_list = new_selected_list;
- selected_list.addClass('selected');
- $('#selected-list-name').text(id_data.name);
+}
+function edit_list() {
+ var d = $('