Metamaps.Synapse
This commit is contained in:
parent
11a87582c7
commit
4833dd8da6
3 changed files with 170 additions and 157 deletions
|
@ -25,6 +25,7 @@
|
||||||
//= require ./src/views/room
|
//= require ./src/views/room
|
||||||
//= require ./src/JIT
|
//= require ./src/JIT
|
||||||
//= require ./src/Metamaps
|
//= require ./src/Metamaps
|
||||||
|
//= require ./src/Metamaps.Synapse
|
||||||
//= require ./src/Metamaps.Map
|
//= require ./src/Metamaps.Map
|
||||||
//= require ./src/Metamaps.Account
|
//= require ./src/Metamaps.Account
|
||||||
//= require ./src/Metamaps.Mapper
|
//= require ./src/Metamaps.Mapper
|
||||||
|
|
169
app/assets/javascripts/src/Metamaps.Synapse.js.erb
Normal file
169
app/assets/javascripts/src/Metamaps.Synapse.js.erb
Normal file
|
@ -0,0 +1,169 @@
|
||||||
|
/* global Metamaps, $ */
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Metamaps.Synapse.js.erb
|
||||||
|
*
|
||||||
|
* Dependencies:
|
||||||
|
* - Metamaps.Backbone
|
||||||
|
* - Metamaps.Control
|
||||||
|
* - Metamaps.Create
|
||||||
|
* - Metamaps.JIT
|
||||||
|
* - Metamaps.Map
|
||||||
|
* - Metamaps.Mappings
|
||||||
|
* - Metamaps.Selected
|
||||||
|
* - Metamaps.Settings
|
||||||
|
* - Metamaps.Synapses
|
||||||
|
* - Metamaps.Topics
|
||||||
|
* - Metamaps.Visualize
|
||||||
|
*/
|
||||||
|
|
||||||
|
Metamaps.Synapse = {
|
||||||
|
// this function is to retrieve a synapse JSON object from the database
|
||||||
|
// @param id = the id of the synapse to retrieve
|
||||||
|
get: function (id, callback) {
|
||||||
|
// if the desired topic is not yet in the local topic repository, fetch it
|
||||||
|
if (Metamaps.Synapses.get(id) == undefined) {
|
||||||
|
if (!callback) {
|
||||||
|
var e = $.ajax({
|
||||||
|
url: "/synapses/" + id + ".json",
|
||||||
|
async: false
|
||||||
|
});
|
||||||
|
Metamaps.Synapses.add($.parseJSON(e.responseText));
|
||||||
|
return Metamaps.Synapses.get(id);
|
||||||
|
} else {
|
||||||
|
return $.ajax({
|
||||||
|
url: "/synapses/" + id + ".json",
|
||||||
|
success: function (data) {
|
||||||
|
Metamaps.Synapses.add(data);
|
||||||
|
callback(Metamaps.Synapses.get(id));
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
if (!callback) {
|
||||||
|
return Metamaps.Synapses.get(id);
|
||||||
|
} else {
|
||||||
|
return callback(Metamaps.Synapses.get(id));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
/*
|
||||||
|
*
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
renderSynapse: function (mapping, synapse, node1, node2, createNewInDB) {
|
||||||
|
var self = Metamaps.Synapse;
|
||||||
|
|
||||||
|
var edgeOnViz;
|
||||||
|
|
||||||
|
var newedge = synapse.createEdge(mapping);
|
||||||
|
|
||||||
|
Metamaps.Visualize.mGraph.graph.addAdjacence(node1, node2, newedge.data);
|
||||||
|
edgeOnViz = Metamaps.Visualize.mGraph.graph.getAdjacence(node1.id, node2.id);
|
||||||
|
synapse.set('edge', edgeOnViz);
|
||||||
|
synapse.updateEdge(); // links the synapse and the mapping to the edge
|
||||||
|
|
||||||
|
Metamaps.Control.selectEdge(edgeOnViz);
|
||||||
|
|
||||||
|
var mappingSuccessCallback = function (mappingModel, response) {
|
||||||
|
var newSynapseData = {
|
||||||
|
mappingid: mappingModel.id,
|
||||||
|
mappableid: mappingModel.get('mappable_id')
|
||||||
|
};
|
||||||
|
|
||||||
|
$(document).trigger(Metamaps.JIT.events.newSynapse, [newSynapseData]);
|
||||||
|
};
|
||||||
|
var synapseSuccessCallback = function (synapseModel, response) {
|
||||||
|
if (Metamaps.Active.Map) {
|
||||||
|
mapping.save({ mappable_id: synapseModel.id }, {
|
||||||
|
success: mappingSuccessCallback
|
||||||
|
});
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
if (!Metamaps.Settings.sandbox && createNewInDB) {
|
||||||
|
if (synapse.isNew()) {
|
||||||
|
synapse.save(null, {
|
||||||
|
success: synapseSuccessCallback,
|
||||||
|
error: function (model, response) {
|
||||||
|
console.log('error saving synapse to database');
|
||||||
|
}
|
||||||
|
});
|
||||||
|
} else if (!synapse.isNew() && Metamaps.Active.Map) {
|
||||||
|
mapping.save(null, {
|
||||||
|
success: mappingSuccessCallback
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
createSynapseLocally: function () {
|
||||||
|
var self = Metamaps.Synapse,
|
||||||
|
topic1,
|
||||||
|
topic2,
|
||||||
|
node1,
|
||||||
|
node2,
|
||||||
|
synapse,
|
||||||
|
mapping;
|
||||||
|
|
||||||
|
$(document).trigger(Metamaps.Map.events.editedByActiveMapper);
|
||||||
|
|
||||||
|
//for each node in this array we will create a synapse going to the position2 node.
|
||||||
|
var synapsesToCreate = [];
|
||||||
|
|
||||||
|
topic2 = Metamaps.Topics.get(Metamaps.Create.newSynapse.topic2id);
|
||||||
|
node2 = topic2.get('node');
|
||||||
|
|
||||||
|
var len = Metamaps.Selected.Nodes.length;
|
||||||
|
if (len == 0) {
|
||||||
|
topic1 = Metamaps.Topics.get(Metamaps.Create.newSynapse.topic1id);
|
||||||
|
synapsesToCreate[0] = topic1.get('node');
|
||||||
|
} else if (len > 0) {
|
||||||
|
synapsesToCreate = Metamaps.Selected.Nodes;
|
||||||
|
}
|
||||||
|
|
||||||
|
for (var i = 0; i < synapsesToCreate.length; i++) {
|
||||||
|
node1 = synapsesToCreate[i];
|
||||||
|
topic1 = node1.getData('topic');
|
||||||
|
synapse = new Metamaps.Backbone.Synapse({
|
||||||
|
desc: Metamaps.Create.newSynapse.description,
|
||||||
|
node1_id: topic1.isNew() ? topic1.cid : topic1.id,
|
||||||
|
node2_id: topic2.isNew() ? topic2.cid : topic2.id,
|
||||||
|
});
|
||||||
|
Metamaps.Synapses.add(synapse);
|
||||||
|
|
||||||
|
mapping = new Metamaps.Backbone.Mapping({
|
||||||
|
mappable_type: "Synapse",
|
||||||
|
mappable_id: synapse.cid,
|
||||||
|
});
|
||||||
|
Metamaps.Mappings.add(mapping);
|
||||||
|
|
||||||
|
// this function also includes the creation of the synapse in the database
|
||||||
|
self.renderSynapse(mapping, synapse, node1, node2, true);
|
||||||
|
} // for each in synapsesToCreate
|
||||||
|
|
||||||
|
Metamaps.Create.newSynapse.hide();
|
||||||
|
},
|
||||||
|
getSynapseFromAutocomplete: function (id) {
|
||||||
|
var self = Metamaps.Synapse,
|
||||||
|
topic1,
|
||||||
|
topic2,
|
||||||
|
node1,
|
||||||
|
node2;
|
||||||
|
|
||||||
|
var synapse = self.get(id);
|
||||||
|
|
||||||
|
var mapping = new Metamaps.Backbone.Mapping({
|
||||||
|
mappable_type: "Synapse",
|
||||||
|
mappable_id: synapse.id,
|
||||||
|
});
|
||||||
|
Metamaps.Mappings.add(mapping);
|
||||||
|
|
||||||
|
topic1 = Metamaps.Topics.get(Metamaps.Create.newSynapse.topic1id);
|
||||||
|
node1 = topic1.get('node');
|
||||||
|
topic2 = Metamaps.Topics.get(Metamaps.Create.newSynapse.topic2id);
|
||||||
|
node2 = topic2.get('node');
|
||||||
|
Metamaps.Create.newSynapse.hide();
|
||||||
|
|
||||||
|
self.renderSynapse(mapping, synapse, node1, node2, true);
|
||||||
|
}
|
||||||
|
}; // end Metamaps.Synapse
|
|
@ -4572,160 +4572,3 @@ Metamaps.Topic = {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
}; // end Metamaps.Topic
|
}; // end Metamaps.Topic
|
||||||
|
|
||||||
|
|
||||||
/*
|
|
||||||
*
|
|
||||||
* SYNAPSE
|
|
||||||
*
|
|
||||||
*/
|
|
||||||
Metamaps.Synapse = {
|
|
||||||
// this function is to retrieve a synapse JSON object from the database
|
|
||||||
// @param id = the id of the synapse to retrieve
|
|
||||||
get: function (id, callback) {
|
|
||||||
// if the desired topic is not yet in the local topic repository, fetch it
|
|
||||||
if (Metamaps.Synapses.get(id) == undefined) {
|
|
||||||
if (!callback) {
|
|
||||||
var e = $.ajax({
|
|
||||||
url: "/synapses/" + id + ".json",
|
|
||||||
async: false
|
|
||||||
});
|
|
||||||
Metamaps.Synapses.add($.parseJSON(e.responseText));
|
|
||||||
return Metamaps.Synapses.get(id);
|
|
||||||
} else {
|
|
||||||
return $.ajax({
|
|
||||||
url: "/synapses/" + id + ".json",
|
|
||||||
success: function (data) {
|
|
||||||
Metamaps.Synapses.add(data);
|
|
||||||
callback(Metamaps.Synapses.get(id));
|
|
||||||
}
|
|
||||||
});
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
if (!callback) {
|
|
||||||
return Metamaps.Synapses.get(id);
|
|
||||||
} else {
|
|
||||||
return callback(Metamaps.Synapses.get(id));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
/*
|
|
||||||
*
|
|
||||||
*
|
|
||||||
*/
|
|
||||||
renderSynapse: function (mapping, synapse, node1, node2, createNewInDB) {
|
|
||||||
var self = Metamaps.Synapse;
|
|
||||||
|
|
||||||
var edgeOnViz;
|
|
||||||
|
|
||||||
var newedge = synapse.createEdge(mapping);
|
|
||||||
|
|
||||||
Metamaps.Visualize.mGraph.graph.addAdjacence(node1, node2, newedge.data);
|
|
||||||
edgeOnViz = Metamaps.Visualize.mGraph.graph.getAdjacence(node1.id, node2.id);
|
|
||||||
synapse.set('edge', edgeOnViz);
|
|
||||||
synapse.updateEdge(); // links the synapse and the mapping to the edge
|
|
||||||
|
|
||||||
Metamaps.Control.selectEdge(edgeOnViz);
|
|
||||||
|
|
||||||
var mappingSuccessCallback = function (mappingModel, response) {
|
|
||||||
var newSynapseData = {
|
|
||||||
mappingid: mappingModel.id,
|
|
||||||
mappableid: mappingModel.get('mappable_id')
|
|
||||||
};
|
|
||||||
|
|
||||||
$(document).trigger(Metamaps.JIT.events.newSynapse, [newSynapseData]);
|
|
||||||
};
|
|
||||||
var synapseSuccessCallback = function (synapseModel, response) {
|
|
||||||
if (Metamaps.Active.Map) {
|
|
||||||
mapping.save({ mappable_id: synapseModel.id }, {
|
|
||||||
success: mappingSuccessCallback
|
|
||||||
});
|
|
||||||
}
|
|
||||||
};
|
|
||||||
|
|
||||||
if (!Metamaps.Settings.sandbox && createNewInDB) {
|
|
||||||
if (synapse.isNew()) {
|
|
||||||
synapse.save(null, {
|
|
||||||
success: synapseSuccessCallback,
|
|
||||||
error: function (model, response) {
|
|
||||||
console.log('error saving synapse to database');
|
|
||||||
}
|
|
||||||
});
|
|
||||||
} else if (!synapse.isNew() && Metamaps.Active.Map) {
|
|
||||||
mapping.save(null, {
|
|
||||||
success: mappingSuccessCallback
|
|
||||||
});
|
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
createSynapseLocally: function () {
|
|
||||||
var self = Metamaps.Synapse,
|
|
||||||
topic1,
|
|
||||||
topic2,
|
|
||||||
node1,
|
|
||||||
node2,
|
|
||||||
synapse,
|
|
||||||
mapping;
|
|
||||||
|
|
||||||
$(document).trigger(Metamaps.Map.events.editedByActiveMapper);
|
|
||||||
|
|
||||||
//for each node in this array we will create a synapse going to the position2 node.
|
|
||||||
var synapsesToCreate = [];
|
|
||||||
|
|
||||||
topic2 = Metamaps.Topics.get(Metamaps.Create.newSynapse.topic2id);
|
|
||||||
node2 = topic2.get('node');
|
|
||||||
|
|
||||||
var len = Metamaps.Selected.Nodes.length;
|
|
||||||
if (len == 0) {
|
|
||||||
topic1 = Metamaps.Topics.get(Metamaps.Create.newSynapse.topic1id);
|
|
||||||
synapsesToCreate[0] = topic1.get('node');
|
|
||||||
} else if (len > 0) {
|
|
||||||
synapsesToCreate = Metamaps.Selected.Nodes;
|
|
||||||
}
|
|
||||||
|
|
||||||
for (var i = 0; i < synapsesToCreate.length; i++) {
|
|
||||||
node1 = synapsesToCreate[i];
|
|
||||||
topic1 = node1.getData('topic');
|
|
||||||
synapse = new Metamaps.Backbone.Synapse({
|
|
||||||
desc: Metamaps.Create.newSynapse.description,
|
|
||||||
node1_id: topic1.isNew() ? topic1.cid : topic1.id,
|
|
||||||
node2_id: topic2.isNew() ? topic2.cid : topic2.id,
|
|
||||||
});
|
|
||||||
Metamaps.Synapses.add(synapse);
|
|
||||||
|
|
||||||
mapping = new Metamaps.Backbone.Mapping({
|
|
||||||
mappable_type: "Synapse",
|
|
||||||
mappable_id: synapse.cid,
|
|
||||||
});
|
|
||||||
Metamaps.Mappings.add(mapping);
|
|
||||||
|
|
||||||
// this function also includes the creation of the synapse in the database
|
|
||||||
self.renderSynapse(mapping, synapse, node1, node2, true);
|
|
||||||
} // for each in synapsesToCreate
|
|
||||||
|
|
||||||
Metamaps.Create.newSynapse.hide();
|
|
||||||
},
|
|
||||||
getSynapseFromAutocomplete: function (id) {
|
|
||||||
var self = Metamaps.Synapse,
|
|
||||||
topic1,
|
|
||||||
topic2,
|
|
||||||
node1,
|
|
||||||
node2;
|
|
||||||
|
|
||||||
var synapse = self.get(id);
|
|
||||||
|
|
||||||
var mapping = new Metamaps.Backbone.Mapping({
|
|
||||||
mappable_type: "Synapse",
|
|
||||||
mappable_id: synapse.id,
|
|
||||||
});
|
|
||||||
Metamaps.Mappings.add(mapping);
|
|
||||||
|
|
||||||
topic1 = Metamaps.Topics.get(Metamaps.Create.newSynapse.topic1id);
|
|
||||||
node1 = topic1.get('node');
|
|
||||||
topic2 = Metamaps.Topics.get(Metamaps.Create.newSynapse.topic2id);
|
|
||||||
node2 = topic2.get('node');
|
|
||||||
Metamaps.Create.newSynapse.hide();
|
|
||||||
|
|
||||||
self.renderSynapse(mapping, synapse, node1, node2, true);
|
|
||||||
}
|
|
||||||
}; // end Metamaps.Synapse
|
|
||||||
|
|
Loading…
Reference in a new issue