summaryrefslogtreecommitdiff
path: root/src/client/view/graph_view.js
diff options
context:
space:
mode:
authorAlon Levy <alon@pobox.com>2015-07-06 19:15:56 +0300
committerAlon Levy <alon@pobox.com>2015-07-06 19:15:56 +0300
commit1d36fbdecd416f15bd112e6e5df4931c2befcff8 (patch)
tree1deffcb48462e30fba16c68bcbf0ca34ebcd73ed /src/client/view/graph_view.js
parent8f351652c865161798d7bae53ae3e7ddf7fb8292 (diff)
client: split view/filter.js from view/graph_view
Diffstat (limited to 'src/client/view/graph_view.js')
-rw-r--r--src/client/view/graph_view.js86
1 files changed, 9 insertions, 77 deletions
diff --git a/src/client/view/graph_view.js b/src/client/view/graph_view.js
index 5f451f73..3c4d46f4 100644
--- a/src/client/view/graph_view.js
+++ b/src/client/view/graph_view.js
@@ -43,8 +43,8 @@
* which resulted in overly complex (read: undefined/buggy) code.
*/
-define(['d3', 'Bacon', 'consts', 'util', 'view/selection', 'model/diff', 'view/item_info', 'view/bubble', 'model/types', 'view/layouts'],
-function(d3 , Bacon, consts, util , selection , model_diff , item_info, view_bubble, model_types, view_layouts) {
+define(['d3', 'Bacon', 'consts', 'util', 'view/selection', 'model/diff', 'view/item_info', 'view/bubble', 'model/types', 'view/layouts', 'view/filter'],
+function(d3 , Bacon, consts, util , selection , model_diff , item_info, view_bubble, model_types, view_layouts, view_filter) {
"use strict"
@@ -80,75 +80,6 @@ function translate(x, y) {
return "translate(" + x + "," + y + ")";
}
-function init_checkboxes(graph, update_view) {
- var // FIXME take filter names from index.html or both from graph db
- filter_states = _.object(_.map(model_types.nodetypes, function (type) { return [type, null]; }));
-
- function create_checkboxes() {
- var root = $('#menu__type-filter');
-
- _.each(model_types.nodetypes, function (type) {
- var input = $('<input type="checkbox" checked="checked">'),
- div = $('<div class="menu__type-filter_item"></div>');
-
- input.attr("name", type);
- div.append(input);
- div.append(util.capitalize(model_types.node_titles[type]));
- root.append(div);
- });
- }
-
- function read_checkboxes() {
- var name,
- value,
- // jquery map does flattens, and we don't want that
- checkboxes = _.map($('#menu__type-filter input'),
- function (checkbox) {
- return [checkbox.name, checkbox.checked];
- }
- );
- for (var i in checkboxes) {
- name = checkboxes[i][0];
- value = checkboxes[i][1];
- if (undefined === filter_states[name]) {
- continue;
- }
- filter_states[name] = value;
- }
- return filter_states;
- }
-
- create_checkboxes();
- read_checkboxes();
- function filtered_states() {
- var o = read_checkboxes(),
- ret = {};
-
- _.each(_.keys(o), function(type) {
- if (!o[type]) {
- ret[type] = 1;
- }
- });
- return ret;
- }
- //$('.menu__type-filter_item,.menu__type-filter_item input')
- $('#menu__type-filter')
- .asEventStream('click')
- .onValue(function (e) {
- var inp = $(e.target).find('input')[0];
-
- if (inp && inp.checked !== undefined) {
- inp.checked = !inp.checked;
- e.preventDefault();
- }
- e.stopPropagation();
- graph.node__set_filtered_types(filtered_states());
- update_view(true);
- })
-
- return filter_states;
-}
-
// "CSS" for SVG elements. Reused for editing elements.
var node_text_dx = 5,
node_text_dy = '.30em';
@@ -225,6 +156,13 @@ function GraphView(spec) {
$(window).asEventStream('resize').map(update_window_size).onValue(function () { update_view(false); });
update_window_size();
+ // read updated filter states from filters view
+ view_filter.filter_states_bus.onValue(function (new_states) {
+ filter_states = new_states;
+ graph.node__set_filtered_types(filter_states);
+ update_view(true);
+ });
+
function node__pass_filter(d) {
var state = filter_states && filter_states[d.type];
@@ -235,12 +173,6 @@ function GraphView(spec) {
return node__pass_filter(d.__src) && node__pass_filter(d.__dst);
}
-
- // Filter. FIXME: move away from here. separate element, connected via bacon property
- if (!temporary) {
- filter_states = init_checkboxes(graph, update_view);
- }
-
function range(start, end, number) {
var ret = [],
i,