From 18c9d8baa5d5a64f5a2d86638d035f8bcfc13c0b Mon Sep 17 00:00:00 2001 From: Mark D'Arensbourg Date: Mon, 17 Feb 2014 17:05:46 -0600 Subject: [PATCH] Add viewmodel boilerplate --- model.js | 40 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 40 insertions(+) create mode 100644 model.js diff --git a/model.js b/model.js new file mode 100644 index 0000000..aabca94 --- /dev/null +++ b/model.js @@ -0,0 +1,40 @@ +var +data = getGraphData(), +nodes = data.nodes, +links = data.links; + +$.each(nodes, function(index, node) { + node.index = index; +}); + +function getNodeById(id) { + return _.find(nodes, { id : id }); +} + +function getNodeByIndex(index) { + return nodes[index]; +} + +function getDependents(node, links) { + return $.map(_.where(links, { target: node.index }), function(item){ + return getNodeByIndex(item.source); + + }); +} + +var modules = $.map(nodes, function(node){ + return { + 'id': node.id, + 'dependentCount': getDependents(node,links).length, + 'dependents': getDependents(node,links), + 'isOpen': ko.observable(false) + }; +}); + +modules = _.sortBy(modules, 'dependentCount').reverse(); + +var vm = {}; + +vm.modules = ko.observableArray(modules); + +ko.applyBindings(vm); \ No newline at end of file