[BACK]Return to index.html CVS log [TXT][DIR] Up to [local] / todotxt / Text-Todo-REST-API / example / htdocs

Diff for /todotxt/Text-Todo-REST-API/example/htdocs/index.html between version 1.10 and 1.11

version 1.10, 2010/02/17 02:16:28 version 1.11, 2010/02/18 05:35:04
Line 1 
Line 1 
 <html><head>  <html><head>
         <!-- $AFresh1: index.html,v 1.9 2010/02/16 03:45:17 andrew Exp $ -->          <!-- $AFresh1: index.html,v 1.10 2010/02/17 02:16:28 andrew Exp $ -->
         <title>todo.txt - ajax client</title>          <title>todo.txt - ajax client</title>
         <link rel="stylesheet" href="todo.css">          <link rel="stylesheet" href="todo.css">
   
Line 9 
Line 9 
   
 var TODO = function () {  var TODO = function () {
     var base_url = '/~andrew/user-bin/todo.cgi',      var base_url = '/~andrew/user-bin/todo.cgi',
         editors = {},          editors  = {},
   
     makeEntryEditor  = function(id, list_url) {      makeEntryEditor  = function(list, entry) {
        var url = list_url + '/entry/' + id;          var url = base_url + '/' + list + '/entry/' + entry.line,
               id  = entry.id;
   
        if (!editors[id]) {         if (editors[id]) {
         editors[id] = {              editors[id].editor.dispose();
             list_url: list_url,              delete editors[id];
             editor: new Ajax.InPlaceEditor(         }
                     id, url + '.json', {  
                         cols: 80,         editors[id] = {
                         rows: 1,             list: list,
                         onComplete: updateEntry,             editor: new Ajax.InPlaceEditor(
                   id, url + '.json', {
                       cols: 80,
                       rows: 1,
                       callback: function(form, value) {
                           entry.oldText = entry.text;
                           entry.text = value;
                           return entry;
                       },
                       onComplete: function (transport, element) {
                           if (transport && transport.responseJSON) {
                               updateEntry(transport.responseJSON, element);
                           }
                     }                      }
                 ),                  }
             };             ),
         }         };
     },      },
   
     updateEntry = function(transport, element) {      updateEntry = function(entry, element) {
         var list_url = editors[element.id].list_url,          var list = editors[element.id].list;
             entry;  
   
         if (transport && transport.responseJSON) {          element.update(entry.text);
             entry = transport.responseJSON;  
   
             element.update(entry.text);          if (parseInt(entry.line) !== element.value) {
               for (k in editors) {
             if (element.id !== entry.md5) {                  if (editors.hasOwnProperty(k)) {
                 if (editors[element.id]) {                      editors[k].editor.dispose();
                     editors[element.id].editor.dispose();                      delete editors[k];
                     delete editors[element.id];  
                 }                  }
   
                 element.id = entry.md5;  
   
                 makeEntryEditor(element.id, list_url);  
             }              }
               return getList(list);
         }          }
     },      },
   
     updateList = function (list_url, transport) {      updateList = function (list, transport) {
         var i,          var i,
           todo = transport.responseJSON,            todo = transport.responseJSON,
           url  = '';            element = new Element('ol');
   
         $("list").update();          $("list").update( element );
   
         for (i=0; i <= todo.length; i++) {          for (i=0; i <= todo.length; i++) {
             $('list').insert({              todo[i].id = 'entry_' + todo[i].line;
                 bottom: new Element('div',  
                         { id: todo[i].md5 }              element.insert( new Element('li', {
                         ).update(todo[i].text)                      id: 'entry_' + todo[i].line,
                 }                      value: todo[i].line
                   }).update(todo[i].text)
             );              );
   
             makeEntryEditor(todo[i].md5, list_url);              makeEntryEditor(list, todo[i]);
         }          }
     };      },
   
     return {      getFiles = function () {
         getFiles: function () {          $('files').update("Getting Files . . .");
             $('files').update("Getting Files . . .");  
   
             new Ajax.Updater('files', base_url, {          new Ajax.Updater('files', base_url, {
                 method: 'get',              method: 'get',
             });          });
         },      },
   
         getTags: function (list) {      getTags = function (list) {
              var url = base_url + '/' + list + '/tags';              $('tags').update("Getting Tags. . .");
              $('tags').update("Getting Tags. . .");  
   
              new Ajax.Request(url + '.json', {              var url = base_url + '/' + list + '/tags';
                 method: 'get',  
                 onSuccess: function (transport) {              new Ajax.Request(url + '.json', {
                     var data = transport.responseJSON,              method: 'get',
                     k,              onSuccess: function (transport) {
                     html = '';                  var k,
                     for (k in data) {                      data = transport.responseJSON,
                         if (data.hasOwnProperty(k)) {                      element = new Element('ul');
                             html += k + ": " + data[k] + "<br/>\n";  
                   $("tags").update(element);
                   for (k in data) {
                       if (data.hasOwnProperty(k)) {
                       element.insert(
                           new Element('li', {
                               id: 'tag_' + k,
                               }).update( k + ": " + data[k]  )
                       );
                       getTag(list, k);
                       }
                   }
               },
           });
       },
   
       getTag = function( list, tag ) {
           new Ajax.Request(base_url + '/' + list + '/tags/' + tag + '.json', {
               method: 'get',
               onSuccess: function (transport) {
                   if (transport && transport.responseJSON) {
                       var i,
                           myTags = transport.responseJSON,
                           element = new Element('ul');
   
                       if (myTags.length) {
                           $('tag_' + tag).insert(element);
   
                           for (i=0; i<myTags.length; i++) {
                               element.insert( new Element('li').
                                   update( myTags[i] ));
                         }                          }
                     }                      }
                     $("tags").innerHTML = html;                  }
                 },              }
             });          });
         },      },
   
         getList: function (list) {      getList = function (list) {
             var url = base_url + '/' + list;          $('list').update("Getting List . . .");
             $('list').update("Getting List . . .");  
   
             new Ajax.Request(url + '.json', {          new Ajax.Request(base_url + '/' + list + '.json', {
                 method:    'get',              method:    'get',
                 onSuccess: function (transport) { updateList(url, transport) },              onSuccess: function (transport) { updateList(list, transport) },
             });          });
   
         },  
     };      };
   
       return {
           getList:  getList,
           getFiles: getFiles,
           getTags:  getTags,
       };
 }();  }();
   
 </script>  </script>
Line 116 
Line 156 
   
 <body onLoad="TODO.getList('todo');TODO.getTags('todo');TODO.getFiles()">  <body onLoad="TODO.getList('todo');TODO.getTags('todo');TODO.getFiles()">
     <h1>Files:</h1><div id='files'></div>      <h1>Files:</h1><div id='files'></div>
     <h1>Tags:</h1> <div id='tags'></div>  
     <h1>List:</h1> <div id='list'></div>      <h1>List:</h1> <div id='list'></div>
       <h1>Tags:</h1> <div id='tags'></div>
 </body></html>  </body></html>

Legend:
Removed from v.1.10  
changed lines
  Added in v.1.11

FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>