From 5a8d72d4ed685155c704701093512340aeb05afd Mon Sep 17 00:00:00 2001 From: Aiko Mastboom Date: Wed, 15 May 2013 00:37:03 +0200 Subject: [PATCH] move items in project around --- public/index.html | 130 +++++++++++++++++++++++++++++----------------- 1 file changed, 82 insertions(+), 48 deletions(-) diff --git a/public/index.html b/public/index.html index 22bf49a..2c1fb40 100644 --- a/public/index.html +++ b/public/index.html @@ -188,7 +188,7 @@
+ data-bind="sortable: { data:_selectedProject().docs(), afterMove:$root._moveContent(_selectedProject())}">
- + +
+ +
@@ -260,9 +260,11 @@ + + @@ -685,45 +687,45 @@ function traverse(current, field, property, depth, pos) { return 0; } +function ensurePath(doc, path, lastIsList, callback) { + var ops = []; + var sub_doc = doc.snapshot; + var current = {}; + for (var x = 0; x < path.length; x++) { + var check = sub_doc[path[x]]; + if (check) { + sub_doc = check; + current = check; + } else { + if (((x + 1) == path.length) && lastIsList) { + ops.push({ + p: path.slice(0, x + 1), + oi: [] + }); + current = []; + } else { + ops.push({ + p: path.slice(0, x + 1), + oi: {} + }); + sub_doc = {}; + current = null; + } + } + } + return callback(null, ops, current); +} + function user_functions(app, vmName) { var cursorPositions = {}; return { - ensurePath: function (doc, path, lastIsList, callback) { - var ops = []; - var sub_doc = doc.snapshot; - var current = {}; - for (var x = 0; x < path.length; x++) { - var check = sub_doc[path[x]]; - if (check) { - sub_doc = check; - current = check; - } else { - if (((x + 1) == path.length) && lastIsList) { - ops.push({ - p: path.slice(0, x + 1), - oi: [] - }); - current = []; - } else { - ops.push({ - p: path.slice(0, x + 1), - oi: {} - }); - sub_doc = {}; - current = null; - } - } - } - return callback(null, ops, current); - }, - storeCurrentPosition: function (name, position) { cursorPositions[name] = position; var user_doc = getDoc(app, 'user'); var path = ['positions', name]; - this.ensurePath(user_doc, path, false, function (err, ops, current) { + ensurePath(user_doc, path, false, function (err, ops, current) { ops.push({ p: path, od: current, @@ -753,7 +755,7 @@ function user_functions(app, vmName) { addActiveAttribute: function (attribute, callback) { var path = ['active']; var user_doc = getDoc(app, 'user'); - this.ensurePath(user_doc, path, true, function (err, ops, current) { + ensurePath(user_doc, path, true, function (err, ops, current) { if (err) { console.error('addActiveAttribute.ensurePath', err); return callback && callback(err); @@ -787,7 +789,7 @@ function user_functions(app, vmName) { removeActiveAttribute: function (attribute, callback) { var path = ['active']; var user_doc = getDoc(app, 'user'); - this.ensurePath(user_doc, path, true, function (err, ops, current) { + ensurePath(user_doc, path, true, function (err, ops, current) { if (err) { console.error('removeActiveAttribute.ensurePath', err); return callback && callback(err); @@ -982,6 +984,20 @@ function initViewModel_projects(app, vmName) { }) }); + viewModel._moveContent = function(project) { + return function(arg) { + var i, found=false, index = -1; + for (i=0; !found && i < viewModel.projects().length; i+=1){ + if( viewModel.projects()[i].title() === project.title()) { + index = i; + found = true; + } + } + if (found && index >= 0) { + callFunction(app,'projects').moveContent(index, arg); + } + } + } viewModel._loadAttributes = function (index, loc) { return function (data, event) { var docId = keyFromLocation(loc); @@ -1023,6 +1039,24 @@ function initViewModel_projects(app, vmName) { return viewModel; } +function projects_functions(app, vmName) { + return { + moveContent: function (index, args) { + var doc = getDoc(app, 'projects'); + var path = ['projects',index,'docs',args.sourceIndex]; + var ops = []; + ops.push({ + p: path, + lm: args.targetIndex + }); + app.debug && console.log('moveContent ops', ops); + doc.submitOp(ops, function (err) { + app.debug && console.log('moved content', err); + }); + } + }; +} + function initViewModel_navigation(app, vmName) { app.debug && console.log('initViewModel_navigation'); var vm_config = getViewModelConfig(app, vmName);