window.addEvent('domready', function domreadyFunctions(){ /////////////////////////////////////////////////////////////////////////////// //error class var error = new Error({ text: 'Klaida, lyudu atjaunoi lopu' }); //loading class var l = new Loading({ elLoading: 'loading', savingText: 'Saglobojam...', loadingText: 'Luodejam...' }); /////////////////////////////////////////////////////////////////////////////// var tips = new Tips('.tooltip',{ className: 'tooltip-box' }); var sortPositionRequest = new Request.JSON({ url: 'http://todo.termi.lv/ajax/do/reorder/' , link: 'chain' , onRequest: function(){ l.showSaving(); } , onComplete: function(data){ l.hide(); if(data.error){ error.show(data.text); return; } else if(data.action=='reorder'){ //d('reorder'); } else { error.show(); } //d(data); }.bind(this) }); /////////////////////////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////////////////////////// var newSortPosition = function(el){ el.removeClass('sorting'); if(el.prevId==undefined){ return; } var updateData = {}; var previous = el.getPrevious('div.task'); var next = el.getNext('div.task'); if(previous){ updateData.prevId = previous.get('id').split('-').getLast(); } else { updateData.prevId = 0; } if(el.prevId==updateData.prevId){ return; } el.prevId = updateData.prevId; if(next){ updateData.nextId = next.get('id').split('-').getLast(); } else { updateData.nextId = 0; } updateData.id = el.get('id').split('-').getLast(); sortPositionRequest.send({data: updateData}); }; var sort = new Sortables.SortableModified('task-list', { //'clone': true, //'opacity': 0.5, 'snap': 5, //revert: { duration: 500, transition: 'elastic:out' }, constrain: true, //handle: 'span.icon-task', onStart: function(el){ el.addClass('sorting'); var previous = el.getPrevious('div.task'); if(previous){ el.prevId = previous.get('id').split('-').getLast(); } else { el.prevId = 0; } }, onSort: function(el){ }, onComplete: newSortPosition }); /////////////////////////////////////////////////////////////////////////////// //new record adding new InlineEditor({ el: '#task-new span.task-text', idRead: '#task-new', url: 'http://todo.termi.lv/ajax/do/create/' ,same: true ,saveOnblur: false ,updateAfterSave: false ,loading: l ,errorShow: error ,onComplete: function(data){ var newTask = t('task', { 'id':data.id ,'added':data.added ,'name':data.name }).inject($('task-list'), 'top'); updateTask('#task-'+data.id+' span.task-text', l, error); updateTaskStatus('#task-'+data.id+' span.status-bar input', l, error); deleteTask('#task-'+data.id+' span.status-bar span.delete', l, error); sort.addItems(newTask); } }); //update previous records updateTask('div.task span.task-text', l, error); updateTaskStatus('div.task span.status-bar input', l, error); deleteTask('div.task span.status-bar span.delete', l, error); //new AutoSize({el: 'textarea'}); /////////////////////////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////////////////////////// }); function updateTask(elements, l, error){ new InlineEditor({ el: elements, idRead: 'div.task', url: 'http://todo.termi.lv/ajax/do/update/' ,same: false ,updateAfterSave: true ,loading: l ,errorShow: error ,onComplete: function(data){ } }); } //////////////////////////////////////// function updateTaskStatus(elements, l, error){ new UpdateStatus({ url: 'http://todo.termi.lv/ajax/do/update-status/' ,el: elements ,statusClass: 'status-' ,idRead: 'div.task' ,loading: l ,errorShow: error }); } //////////////////////////////////////// function deleteTask(elements, l, error){ new UpdateStatus({ url: 'http://todo.termi.lv/ajax/do/delete/' ,el: elements ,checkbox: false ,statusClass: 'status-' ,idRead: 'div.task' ,loading: l ,errorShow: error ,onComplete: function(data, task){ task.dispose(); } }); } //////////////////////////////////////// /////////////////////////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////////////////////////// function d(v){ if(Browser.Engine.gecko){ console.log(v); } } /////////////////////////////////////////////////////////////////////////////// //templates function t(p, pr){ switch(p){ case 'task': return new Element('div',{ 'id': 'task-'+pr.id ,'class': 'task status-1' ,'title': 'Davīnuots:'+pr.added ,'html': '