From 522476a2a65faca53dd1b07e2e700775cd168530 Mon Sep 17 00:00:00 2001 From: ansuz Date: Mon, 24 Jul 2017 14:30:43 +0200 Subject: [PATCH] initialize data model and provide basic methods --- www/todo/todo.js | 70 ++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 70 insertions(+) create mode 100644 www/todo/todo.js diff --git a/www/todo/todo.js b/www/todo/todo.js new file mode 100644 index 000000000..8d1cac86f --- /dev/null +++ b/www/todo/todo.js @@ -0,0 +1,70 @@ +define([ + +], function () { + var Todo = {}; + var Cryptpad; + +/* data model +{ + "order": [ + "123456789abcdef0", + "23456789abcdef01", + "0123456789abcedf" + ], + "data": { + "0123456789abcedf": { + "state": 0, // used to sort completed elements + "task": "pewpewpew", + "ctime": +new Date(), // used to display chronologically + "mtime": +new Date(), // used to display recent actions + // "deadline": +new Date() + 1000 * 60 * 60 * 24 * 7 + }, + "123456789abcdef0": {}, + "23456789abcdef01": {} + } +} +*/ + + var initialize = function (proxy) { + // run migration + if (typeof(proxy.data) !== 'object') { proxy.data = {}; } + if (Array.isArray(proxy.order)) { proxy.order = []; } + if (typeof(proxy.type) !== 'string') { proxy.type = 'todo'; } + }; + + /* add (id, obj) push id to order, add object to data */ + var add = function (proxy, id, obj) { + if (!Array.isArray(proxy.order)) { + throw new Error('expected an array'); + } + proxy.order.push(id); + proxy.data[id] = obj; + }; + + /* delete (id) remove id from order, delete id from data */ + var remove = function (proxy, id) { + if (Array.isArray(proxy.order)) { + var i = proxy.order.indexOf(id); + proxy.order.splice(i, 1); + } + if (proxy.data[id]) { delete proxy.data[id]; } + }; + + Todo.init = function (proxy, common) { + Cryptpad = common; + + var api = {}; + initialize(proxy); + + api.add = function (id, obj) { + return add(proxy, id, obj); + }; + api.remove = function (id) { + return remove(proxy, id); + }; + + return api; + }; + + return Todo; +});