whoops don't forget standard format
This commit is contained in:
parent
de62a08307
commit
ca5928113d
4 changed files with 480 additions and 489 deletions
|
@ -4,10 +4,10 @@
|
||||||
* Dependencies: none!
|
* Dependencies: none!
|
||||||
*/
|
*/
|
||||||
|
|
||||||
Metamaps.Debug = function() {
|
Metamaps.Debug = function () {
|
||||||
console.debug(Metamaps)
|
console.debug(Metamaps)
|
||||||
console.debug(`Metamaps Version: ${Metamaps.VERSION}`)
|
console.debug(`Metamaps Version: ${Metamaps.VERSION}`)
|
||||||
}
|
}
|
||||||
Metamaps.debug = function() {
|
Metamaps.debug = function () {
|
||||||
Metamaps.Debug()
|
Metamaps.Debug()
|
||||||
}
|
}
|
||||||
|
|
|
@ -229,7 +229,7 @@ Metamaps.Import = {
|
||||||
importSynapses: function (parsedSynapses) {
|
importSynapses: function (parsedSynapses) {
|
||||||
var self = Metamaps.Import
|
var self = Metamaps.Import
|
||||||
|
|
||||||
parsedSynapses.forEach(function(synapse) {
|
parsedSynapses.forEach(function (synapse) {
|
||||||
// only createSynapseWithParameters once both topics are persisted
|
// only createSynapseWithParameters once both topics are persisted
|
||||||
var topic1 = Metamaps.Topics.get(self.cidMappings[synapse.topic1])
|
var topic1 = Metamaps.Topics.get(self.cidMappings[synapse.topic1])
|
||||||
var topic2 = Metamaps.Topics.get(self.cidMappings[synapse.topic2])
|
var topic2 = Metamaps.Topics.get(self.cidMappings[synapse.topic2])
|
||||||
|
|
|
@ -18,152 +18,152 @@
|
||||||
*/
|
*/
|
||||||
|
|
||||||
Metamaps.Synapse = {
|
Metamaps.Synapse = {
|
||||||
// this function is to retrieve a synapse JSON object from the database
|
// this function is to retrieve a synapse JSON object from the database
|
||||||
// @param id = the id of the synapse to retrieve
|
// @param id = the id of the synapse to retrieve
|
||||||
get: function (id, callback) {
|
get: function (id, callback) {
|
||||||
// if the desired topic is not yet in the local topic repository, fetch it
|
// if the desired topic is not yet in the local topic repository, fetch it
|
||||||
if (Metamaps.Synapses.get(id) == undefined) {
|
if (Metamaps.Synapses.get(id) == undefined) {
|
||||||
if (!callback) {
|
if (!callback) {
|
||||||
var e = $.ajax({
|
var e = $.ajax({
|
||||||
url: "/synapses/" + id + ".json",
|
url: '/synapses/' + id + '.json',
|
||||||
async: false
|
async: false
|
||||||
});
|
})
|
||||||
Metamaps.Synapses.add($.parseJSON(e.responseText));
|
Metamaps.Synapses.add($.parseJSON(e.responseText))
|
||||||
return Metamaps.Synapses.get(id);
|
return Metamaps.Synapses.get(id)
|
||||||
} else {
|
} else {
|
||||||
return $.ajax({
|
return $.ajax({
|
||||||
url: "/synapses/" + id + ".json",
|
url: '/synapses/' + id + '.json',
|
||||||
success: function (data) {
|
success: function (data) {
|
||||||
Metamaps.Synapses.add(data);
|
Metamaps.Synapses.add(data)
|
||||||
callback(Metamaps.Synapses.get(id));
|
callback(Metamaps.Synapses.get(id))
|
||||||
}
|
}
|
||||||
});
|
})
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
if (!callback) {
|
if (!callback) {
|
||||||
return Metamaps.Synapses.get(id);
|
return Metamaps.Synapses.get(id)
|
||||||
} else {
|
} else {
|
||||||
return callback(Metamaps.Synapses.get(id));
|
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);
|
|
||||||
}
|
}
|
||||||
|
},
|
||||||
|
/*
|
||||||
|
*
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
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
|
}; // end Metamaps.Synapse
|
||||||
|
|
|
@ -28,344 +28,335 @@
|
||||||
*/
|
*/
|
||||||
|
|
||||||
Metamaps.Topic = {
|
Metamaps.Topic = {
|
||||||
// this function is to retrieve a topic JSON object from the database
|
// this function is to retrieve a topic JSON object from the database
|
||||||
// @param id = the id of the topic to retrieve
|
// @param id = the id of the topic to retrieve
|
||||||
get: function (id, callback) {
|
get: function (id, callback) {
|
||||||
// if the desired topic is not yet in the local topic repository, fetch it
|
// if the desired topic is not yet in the local topic repository, fetch it
|
||||||
if (Metamaps.Topics.get(id) == undefined) {
|
if (Metamaps.Topics.get(id) == undefined) {
|
||||||
//console.log("Ajax call!");
|
// console.log("Ajax call!")
|
||||||
if (!callback) {
|
if (!callback) {
|
||||||
var e = $.ajax({
|
var e = $.ajax({
|
||||||
url: "/topics/" + id + ".json",
|
url: '/topics/' + id + '.json',
|
||||||
async: false
|
async: false
|
||||||
});
|
})
|
||||||
Metamaps.Topics.add($.parseJSON(e.responseText));
|
Metamaps.Topics.add($.parseJSON(e.responseText))
|
||||||
return Metamaps.Topics.get(id);
|
return Metamaps.Topics.get(id)
|
||||||
} else {
|
} else {
|
||||||
return $.ajax({
|
return $.ajax({
|
||||||
url: "/topics/" + id + ".json",
|
url: '/topics/' + id + '.json',
|
||||||
success: function (data) {
|
success: function (data) {
|
||||||
Metamaps.Topics.add(data);
|
Metamaps.Topics.add(data)
|
||||||
callback(Metamaps.Topics.get(id));
|
callback(Metamaps.Topics.get(id))
|
||||||
}
|
}
|
||||||
});
|
})
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
if (!callback) {
|
if (!callback) {
|
||||||
return Metamaps.Topics.get(id);
|
return Metamaps.Topics.get(id)
|
||||||
} else {
|
} else {
|
||||||
return callback(Metamaps.Topics.get(id));
|
return callback(Metamaps.Topics.get(id))
|
||||||
}
|
}
|
||||||
}
|
|
||||||
},
|
|
||||||
launch: function (id) {
|
|
||||||
var bb = Metamaps.Backbone;
|
|
||||||
var start = function (data) {
|
|
||||||
Metamaps.Active.Topic = new bb.Topic(data.topic);
|
|
||||||
Metamaps.Creators = new bb.MapperCollection(data.creators);
|
|
||||||
Metamaps.Topics = new bb.TopicCollection([data.topic].concat(data.relatives));
|
|
||||||
Metamaps.Synapses = new bb.SynapseCollection(data.synapses);
|
|
||||||
Metamaps.Backbone.attachCollectionEvents();
|
|
||||||
|
|
||||||
// set filter mapper H3 text
|
|
||||||
$('#filter_by_mapper h3').html('CREATORS');
|
|
||||||
|
|
||||||
// build and render the visualization
|
|
||||||
Metamaps.Visualize.type = "RGraph";
|
|
||||||
Metamaps.JIT.prepareVizData();
|
|
||||||
|
|
||||||
// update filters
|
|
||||||
Metamaps.Filter.reset();
|
|
||||||
|
|
||||||
// reset selected arrays
|
|
||||||
Metamaps.Selected.reset();
|
|
||||||
|
|
||||||
// these three update the actual filter box with the right list items
|
|
||||||
Metamaps.Filter.checkMetacodes();
|
|
||||||
Metamaps.Filter.checkSynapses();
|
|
||||||
Metamaps.Filter.checkMappers();
|
|
||||||
}
|
|
||||||
|
|
||||||
$.ajax({
|
|
||||||
url: "/topics/" + id + "/network.json",
|
|
||||||
success: start
|
|
||||||
});
|
|
||||||
},
|
|
||||||
end: function () {
|
|
||||||
if (Metamaps.Active.Topic) {
|
|
||||||
$('.rightclickmenu').remove();
|
|
||||||
Metamaps.TopicCard.hideCard();
|
|
||||||
Metamaps.SynapseCard.hideCard();
|
|
||||||
Metamaps.Filter.close();
|
|
||||||
}
|
|
||||||
},
|
|
||||||
centerOn: function (nodeid) {
|
|
||||||
if (!Metamaps.Visualize.mGraph.busy) {
|
|
||||||
Metamaps.Visualize.mGraph.onClick(nodeid, {
|
|
||||||
hideLabels: false,
|
|
||||||
duration: 1000,
|
|
||||||
onComplete: function () {
|
|
||||||
|
|
||||||
}
|
|
||||||
});
|
|
||||||
}
|
|
||||||
},
|
|
||||||
fetchRelatives: function(node, metacode_id) {
|
|
||||||
|
|
||||||
var topics = Metamaps.Topics.map(function(t){ return t.id });
|
|
||||||
var topics_string = topics.join();
|
|
||||||
|
|
||||||
var creators = Metamaps.Creators.map(function(t){ return t.id });
|
|
||||||
var creators_string = creators.join();
|
|
||||||
|
|
||||||
var topic = node.getData('topic');
|
|
||||||
|
|
||||||
var successCallback = function(data) {
|
|
||||||
if (data.creators.length > 0) Metamaps.Creators.add(data.creators);
|
|
||||||
if (data.topics.length > 0) Metamaps.Topics.add(data.topics);
|
|
||||||
if (data.synapses.length > 0) Metamaps.Synapses.add(data.synapses);
|
|
||||||
|
|
||||||
var topicColl = new Metamaps.Backbone.TopicCollection(data.topics);
|
|
||||||
topicColl.add(topic);
|
|
||||||
var synapseColl = new Metamaps.Backbone.SynapseCollection(data.synapses);
|
|
||||||
|
|
||||||
var graph = Metamaps.JIT.convertModelsToJIT(topicColl, synapseColl)[0];
|
|
||||||
Metamaps.Visualize.mGraph.op.sum(graph, {
|
|
||||||
type: 'fade',
|
|
||||||
duration: 500,
|
|
||||||
hideLabels: false
|
|
||||||
});
|
|
||||||
|
|
||||||
var i, l, t, s;
|
|
||||||
|
|
||||||
Metamaps.Visualize.mGraph.graph.eachNode(function (n) {
|
|
||||||
t = Metamaps.Topics.get(n.id);
|
|
||||||
t.set({ node: n }, { silent: true });
|
|
||||||
t.updateNode();
|
|
||||||
|
|
||||||
n.eachAdjacency(function (edge) {
|
|
||||||
if(!edge.getData('init')) {
|
|
||||||
edge.setData('init', true);
|
|
||||||
|
|
||||||
l = edge.getData('synapseIDs').length;
|
|
||||||
for (i = 0; i < l; i++) {
|
|
||||||
s = Metamaps.Synapses.get(edge.getData('synapseIDs')[i]);
|
|
||||||
s.set({ edge: edge }, { silent: true });
|
|
||||||
s.updateEdge();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
});
|
|
||||||
});
|
|
||||||
};
|
|
||||||
|
|
||||||
var paramsString = metacode_id ? "metacode=" + metacode_id + "&" : "";
|
|
||||||
paramsString += "network=" + topics_string + "&creators=" + creators_string;
|
|
||||||
|
|
||||||
$.ajax({
|
|
||||||
type: "Get",
|
|
||||||
url: "/topics/" + topic.id + "/relatives.json?" + paramsString,
|
|
||||||
success: successCallback,
|
|
||||||
error: function () {
|
|
||||||
|
|
||||||
}
|
|
||||||
});
|
|
||||||
},
|
|
||||||
/*
|
|
||||||
*
|
|
||||||
*
|
|
||||||
*/
|
|
||||||
renderTopic: function (mapping, topic, createNewInDB, permitCreateSynapseAfter) {
|
|
||||||
var self = Metamaps.Topic;
|
|
||||||
|
|
||||||
var nodeOnViz, tempPos;
|
|
||||||
|
|
||||||
var newnode = topic.createNode();
|
|
||||||
|
|
||||||
var midpoint = {}, pixelPos;
|
|
||||||
|
|
||||||
if (!$.isEmptyObject(Metamaps.Visualize.mGraph.graph.nodes)) {
|
|
||||||
Metamaps.Visualize.mGraph.graph.addNode(newnode);
|
|
||||||
nodeOnViz = Metamaps.Visualize.mGraph.graph.getNode(newnode.id);
|
|
||||||
topic.set('node', nodeOnViz, {silent: true});
|
|
||||||
topic.updateNode(); // links the topic and the mapping to the node
|
|
||||||
|
|
||||||
nodeOnViz.setData("dim", 1, "start");
|
|
||||||
nodeOnViz.setData("dim", 25, "end");
|
|
||||||
if (Metamaps.Visualize.type === "RGraph") {
|
|
||||||
tempPos = new $jit.Complex(mapping.get('xloc'), mapping.get('yloc'));
|
|
||||||
tempPos = tempPos.toPolar();
|
|
||||||
nodeOnViz.setPos(tempPos, "current");
|
|
||||||
nodeOnViz.setPos(tempPos, "start");
|
|
||||||
nodeOnViz.setPos(tempPos, "end");
|
|
||||||
} else if (Metamaps.Visualize.type === "ForceDirected") {
|
|
||||||
nodeOnViz.setPos(new $jit.Complex(mapping.get('xloc'), mapping.get('yloc')), "current");
|
|
||||||
nodeOnViz.setPos(new $jit.Complex(mapping.get('xloc'), mapping.get('yloc')), "start");
|
|
||||||
nodeOnViz.setPos(new $jit.Complex(mapping.get('xloc'), mapping.get('yloc')), "end");
|
|
||||||
}
|
|
||||||
if (Metamaps.Create.newTopic.addSynapse && permitCreateSynapseAfter) {
|
|
||||||
Metamaps.Create.newSynapse.topic1id = Metamaps.tempNode.getData('topic').id;
|
|
||||||
|
|
||||||
// position the form
|
|
||||||
midpoint.x = Metamaps.tempNode.pos.getc().x + (nodeOnViz.pos.getc().x - Metamaps.tempNode.pos.getc().x) / 2;
|
|
||||||
midpoint.y = Metamaps.tempNode.pos.getc().y + (nodeOnViz.pos.getc().y - Metamaps.tempNode.pos.getc().y) / 2;
|
|
||||||
pixelPos = Metamaps.Util.coordsToPixels(midpoint);
|
|
||||||
$('#new_synapse').css('left', pixelPos.x + "px");
|
|
||||||
$('#new_synapse').css('top', pixelPos.y + "px");
|
|
||||||
// show the form
|
|
||||||
Metamaps.Create.newSynapse.open();
|
|
||||||
Metamaps.Visualize.mGraph.fx.animate({
|
|
||||||
modes: ["node-property:dim"],
|
|
||||||
duration: 500,
|
|
||||||
onComplete: function () {
|
|
||||||
Metamaps.tempNode = null;
|
|
||||||
Metamaps.tempNode2 = null;
|
|
||||||
Metamaps.tempInit = false;
|
|
||||||
}
|
|
||||||
});
|
|
||||||
} else {
|
|
||||||
Metamaps.Visualize.mGraph.fx.plotNode(nodeOnViz, Metamaps.Visualize.mGraph.canvas);
|
|
||||||
Metamaps.Visualize.mGraph.fx.animate({
|
|
||||||
modes: ["node-property:dim"],
|
|
||||||
duration: 500,
|
|
||||||
onComplete: function () {
|
|
||||||
|
|
||||||
}
|
|
||||||
});
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
Metamaps.Visualize.mGraph.loadJSON(newnode);
|
|
||||||
nodeOnViz = Metamaps.Visualize.mGraph.graph.getNode(newnode.id);
|
|
||||||
topic.set('node', nodeOnViz, {silent: true});
|
|
||||||
topic.updateNode(); // links the topic and the mapping to the node
|
|
||||||
|
|
||||||
nodeOnViz.setData("dim", 1, "start");
|
|
||||||
nodeOnViz.setData("dim", 25, "end");
|
|
||||||
nodeOnViz.setPos(new $jit.Complex(mapping.get('xloc'), mapping.get('yloc')), "current");
|
|
||||||
nodeOnViz.setPos(new $jit.Complex(mapping.get('xloc'), mapping.get('yloc')), "start");
|
|
||||||
nodeOnViz.setPos(new $jit.Complex(mapping.get('xloc'), mapping.get('yloc')), "end");
|
|
||||||
Metamaps.Visualize.mGraph.fx.plotNode(nodeOnViz, Metamaps.Visualize.mGraph.canvas);
|
|
||||||
Metamaps.Visualize.mGraph.fx.animate({
|
|
||||||
modes: ["node-property:dim"],
|
|
||||||
duration: 500,
|
|
||||||
onComplete: function () {
|
|
||||||
|
|
||||||
}
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
var mappingSuccessCallback = function (mappingModel, response) {
|
|
||||||
var newTopicData = {
|
|
||||||
mappingid: mappingModel.id,
|
|
||||||
mappableid: mappingModel.get('mappable_id')
|
|
||||||
};
|
|
||||||
|
|
||||||
$(document).trigger(Metamaps.JIT.events.newTopic, [newTopicData]);
|
|
||||||
};
|
|
||||||
var topicSuccessCallback = function (topicModel, response) {
|
|
||||||
if (Metamaps.Active.Map) {
|
|
||||||
mapping.save({ mappable_id: topicModel.id }, {
|
|
||||||
success: mappingSuccessCallback,
|
|
||||||
error: function (model, response) {
|
|
||||||
console.log('error saving mapping to database');
|
|
||||||
}
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
if (Metamaps.Create.newTopic.addSynapse) {
|
|
||||||
Metamaps.Create.newSynapse.topic2id = topicModel.id;
|
|
||||||
}
|
|
||||||
};
|
|
||||||
|
|
||||||
if (!Metamaps.Settings.sandbox && createNewInDB) {
|
|
||||||
if (topic.isNew()) {
|
|
||||||
topic.save(null, {
|
|
||||||
success: topicSuccessCallback,
|
|
||||||
error: function (model, response) {
|
|
||||||
console.log('error saving topic to database');
|
|
||||||
}
|
|
||||||
});
|
|
||||||
} else if (!topic.isNew() && Metamaps.Active.Map) {
|
|
||||||
mapping.save(null, {
|
|
||||||
success: mappingSuccessCallback
|
|
||||||
});
|
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
createTopicLocally: function () {
|
|
||||||
var self = Metamaps.Topic;
|
|
||||||
|
|
||||||
if (Metamaps.Create.newTopic.name === "") {
|
|
||||||
Metamaps.GlobalUI.notifyUser("Please enter a topic title...");
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
// hide the 'double-click to add a topic' message
|
|
||||||
Metamaps.Famous.viz.hideInstructions();
|
|
||||||
|
|
||||||
$(document).trigger(Metamaps.Map.events.editedByActiveMapper);
|
|
||||||
|
|
||||||
var metacode = Metamaps.Metacodes.get(Metamaps.Create.newTopic.metacode);
|
|
||||||
|
|
||||||
var topic = new Metamaps.Backbone.Topic({
|
|
||||||
name: Metamaps.Create.newTopic.name,
|
|
||||||
metacode_id: metacode.id
|
|
||||||
});
|
|
||||||
Metamaps.Topics.add(topic);
|
|
||||||
|
|
||||||
var mapping = new Metamaps.Backbone.Mapping({
|
|
||||||
xloc: Metamaps.Create.newTopic.x,
|
|
||||||
yloc: Metamaps.Create.newTopic.y,
|
|
||||||
mappable_id: topic.cid,
|
|
||||||
mappable_type: "Topic",
|
|
||||||
});
|
|
||||||
Metamaps.Mappings.add(mapping);
|
|
||||||
|
|
||||||
//these can't happen until the value is retrieved, which happens in the line above
|
|
||||||
Metamaps.Create.newTopic.hide();
|
|
||||||
|
|
||||||
self.renderTopic(mapping, topic, true, true); // this function also includes the creation of the topic in the database
|
|
||||||
},
|
|
||||||
getTopicFromAutocomplete: function (id) {
|
|
||||||
var self = Metamaps.Topic;
|
|
||||||
|
|
||||||
$(document).trigger(Metamaps.Map.events.editedByActiveMapper);
|
|
||||||
|
|
||||||
Metamaps.Create.newTopic.hide();
|
|
||||||
|
|
||||||
var topic = self.get(id);
|
|
||||||
|
|
||||||
var mapping = new Metamaps.Backbone.Mapping({
|
|
||||||
xloc: Metamaps.Create.newTopic.x,
|
|
||||||
yloc: Metamaps.Create.newTopic.y,
|
|
||||||
mappable_type: "Topic",
|
|
||||||
mappable_id: topic.id,
|
|
||||||
});
|
|
||||||
Metamaps.Mappings.add(mapping);
|
|
||||||
|
|
||||||
self.renderTopic(mapping, topic, true, true);
|
|
||||||
},
|
|
||||||
getTopicFromSearch: function (event, id) {
|
|
||||||
var self = Metamaps.Topic;
|
|
||||||
|
|
||||||
$(document).trigger(Metamaps.Map.events.editedByActiveMapper);
|
|
||||||
|
|
||||||
var topic = self.get(id);
|
|
||||||
|
|
||||||
var nextCoords = Metamaps.Map.getNextCoord();
|
|
||||||
var mapping = new Metamaps.Backbone.Mapping({
|
|
||||||
xloc: nextCoords.x,
|
|
||||||
yloc: nextCoords.y,
|
|
||||||
mappable_type: "Topic",
|
|
||||||
mappable_id: topic.id,
|
|
||||||
});
|
|
||||||
Metamaps.Mappings.add(mapping);
|
|
||||||
|
|
||||||
self.renderTopic(mapping, topic, true, true);
|
|
||||||
|
|
||||||
Metamaps.GlobalUI.notifyUser('Topic was added to your map!');
|
|
||||||
|
|
||||||
event.stopPropagation();
|
|
||||||
event.preventDefault();
|
|
||||||
return false;
|
|
||||||
}
|
}
|
||||||
|
},
|
||||||
|
launch: function (id) {
|
||||||
|
var bb = Metamaps.Backbone
|
||||||
|
var start = function (data) {
|
||||||
|
Metamaps.Active.Topic = new bb.Topic(data.topic)
|
||||||
|
Metamaps.Creators = new bb.MapperCollection(data.creators)
|
||||||
|
Metamaps.Topics = new bb.TopicCollection([data.topic].concat(data.relatives))
|
||||||
|
Metamaps.Synapses = new bb.SynapseCollection(data.synapses)
|
||||||
|
Metamaps.Backbone.attachCollectionEvents()
|
||||||
|
|
||||||
|
// set filter mapper H3 text
|
||||||
|
$('#filter_by_mapper h3').html('CREATORS')
|
||||||
|
|
||||||
|
// build and render the visualization
|
||||||
|
Metamaps.Visualize.type = 'RGraph'
|
||||||
|
Metamaps.JIT.prepareVizData()
|
||||||
|
|
||||||
|
// update filters
|
||||||
|
Metamaps.Filter.reset()
|
||||||
|
|
||||||
|
// reset selected arrays
|
||||||
|
Metamaps.Selected.reset()
|
||||||
|
|
||||||
|
// these three update the actual filter box with the right list items
|
||||||
|
Metamaps.Filter.checkMetacodes()
|
||||||
|
Metamaps.Filter.checkSynapses()
|
||||||
|
Metamaps.Filter.checkMappers()
|
||||||
|
}
|
||||||
|
|
||||||
|
$.ajax({
|
||||||
|
url: '/topics/' + id + '/network.json',
|
||||||
|
success: start
|
||||||
|
})
|
||||||
|
},
|
||||||
|
end: function () {
|
||||||
|
if (Metamaps.Active.Topic) {
|
||||||
|
$('.rightclickmenu').remove()
|
||||||
|
Metamaps.TopicCard.hideCard()
|
||||||
|
Metamaps.SynapseCard.hideCard()
|
||||||
|
Metamaps.Filter.close()
|
||||||
|
}
|
||||||
|
},
|
||||||
|
centerOn: function (nodeid) {
|
||||||
|
if (!Metamaps.Visualize.mGraph.busy) {
|
||||||
|
Metamaps.Visualize.mGraph.onClick(nodeid, {
|
||||||
|
hideLabels: false,
|
||||||
|
duration: 1000,
|
||||||
|
onComplete: function () {}
|
||||||
|
})
|
||||||
|
}
|
||||||
|
},
|
||||||
|
fetchRelatives: function (node, metacode_id) {
|
||||||
|
var topics = Metamaps.Topics.map(function (t) { return t.id })
|
||||||
|
var topics_string = topics.join()
|
||||||
|
|
||||||
|
var creators = Metamaps.Creators.map(function (t) { return t.id })
|
||||||
|
var creators_string = creators.join()
|
||||||
|
|
||||||
|
var topic = node.getData('topic')
|
||||||
|
|
||||||
|
var successCallback = function (data) {
|
||||||
|
if (data.creators.length > 0) Metamaps.Creators.add(data.creators)
|
||||||
|
if (data.topics.length > 0) Metamaps.Topics.add(data.topics)
|
||||||
|
if (data.synapses.length > 0) Metamaps.Synapses.add(data.synapses)
|
||||||
|
|
||||||
|
var topicColl = new Metamaps.Backbone.TopicCollection(data.topics)
|
||||||
|
topicColl.add(topic)
|
||||||
|
var synapseColl = new Metamaps.Backbone.SynapseCollection(data.synapses)
|
||||||
|
|
||||||
|
var graph = Metamaps.JIT.convertModelsToJIT(topicColl, synapseColl)[0]
|
||||||
|
Metamaps.Visualize.mGraph.op.sum(graph, {
|
||||||
|
type: 'fade',
|
||||||
|
duration: 500,
|
||||||
|
hideLabels: false
|
||||||
|
})
|
||||||
|
|
||||||
|
var i, l, t, s
|
||||||
|
|
||||||
|
Metamaps.Visualize.mGraph.graph.eachNode(function (n) {
|
||||||
|
t = Metamaps.Topics.get(n.id)
|
||||||
|
t.set({ node: n }, { silent: true })
|
||||||
|
t.updateNode()
|
||||||
|
|
||||||
|
n.eachAdjacency(function (edge) {
|
||||||
|
if (!edge.getData('init')) {
|
||||||
|
edge.setData('init', true)
|
||||||
|
|
||||||
|
l = edge.getData('synapseIDs').length
|
||||||
|
for (i = 0; i < l; i++) {
|
||||||
|
s = Metamaps.Synapses.get(edge.getData('synapseIDs')[i])
|
||||||
|
s.set({ edge: edge }, { silent: true })
|
||||||
|
s.updateEdge()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
})
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
var paramsString = metacode_id ? 'metacode=' + metacode_id + '&' : ''
|
||||||
|
paramsString += 'network=' + topics_string + '&creators=' + creators_string
|
||||||
|
|
||||||
|
$.ajax({
|
||||||
|
type: 'Get',
|
||||||
|
url: '/topics/' + topic.id + '/relatives.json?' + paramsString,
|
||||||
|
success: successCallback,
|
||||||
|
error: function () {}
|
||||||
|
})
|
||||||
|
},
|
||||||
|
/*
|
||||||
|
*
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
renderTopic: function (mapping, topic, createNewInDB, permitCreateSynapseAfter) {
|
||||||
|
var self = Metamaps.Topic
|
||||||
|
|
||||||
|
var nodeOnViz, tempPos
|
||||||
|
|
||||||
|
var newnode = topic.createNode()
|
||||||
|
|
||||||
|
var midpoint = {}, pixelPos
|
||||||
|
|
||||||
|
if (!$.isEmptyObject(Metamaps.Visualize.mGraph.graph.nodes)) {
|
||||||
|
Metamaps.Visualize.mGraph.graph.addNode(newnode)
|
||||||
|
nodeOnViz = Metamaps.Visualize.mGraph.graph.getNode(newnode.id)
|
||||||
|
topic.set('node', nodeOnViz, {silent: true})
|
||||||
|
topic.updateNode() // links the topic and the mapping to the node
|
||||||
|
|
||||||
|
nodeOnViz.setData('dim', 1, 'start')
|
||||||
|
nodeOnViz.setData('dim', 25, 'end')
|
||||||
|
if (Metamaps.Visualize.type === 'RGraph') {
|
||||||
|
tempPos = new $jit.Complex(mapping.get('xloc'), mapping.get('yloc'))
|
||||||
|
tempPos = tempPos.toPolar()
|
||||||
|
nodeOnViz.setPos(tempPos, 'current')
|
||||||
|
nodeOnViz.setPos(tempPos, 'start')
|
||||||
|
nodeOnViz.setPos(tempPos, 'end')
|
||||||
|
} else if (Metamaps.Visualize.type === 'ForceDirected') {
|
||||||
|
nodeOnViz.setPos(new $jit.Complex(mapping.get('xloc'), mapping.get('yloc')), 'current')
|
||||||
|
nodeOnViz.setPos(new $jit.Complex(mapping.get('xloc'), mapping.get('yloc')), 'start')
|
||||||
|
nodeOnViz.setPos(new $jit.Complex(mapping.get('xloc'), mapping.get('yloc')), 'end')
|
||||||
|
}
|
||||||
|
if (Metamaps.Create.newTopic.addSynapse && permitCreateSynapseAfter) {
|
||||||
|
Metamaps.Create.newSynapse.topic1id = Metamaps.tempNode.getData('topic').id
|
||||||
|
|
||||||
|
// position the form
|
||||||
|
midpoint.x = Metamaps.tempNode.pos.getc().x + (nodeOnViz.pos.getc().x - Metamaps.tempNode.pos.getc().x) / 2
|
||||||
|
midpoint.y = Metamaps.tempNode.pos.getc().y + (nodeOnViz.pos.getc().y - Metamaps.tempNode.pos.getc().y) / 2
|
||||||
|
pixelPos = Metamaps.Util.coordsToPixels(midpoint)
|
||||||
|
$('#new_synapse').css('left', pixelPos.x + 'px')
|
||||||
|
$('#new_synapse').css('top', pixelPos.y + 'px')
|
||||||
|
// show the form
|
||||||
|
Metamaps.Create.newSynapse.open()
|
||||||
|
Metamaps.Visualize.mGraph.fx.animate({
|
||||||
|
modes: ['node-property:dim'],
|
||||||
|
duration: 500,
|
||||||
|
onComplete: function () {
|
||||||
|
Metamaps.tempNode = null
|
||||||
|
Metamaps.tempNode2 = null
|
||||||
|
Metamaps.tempInit = false
|
||||||
|
}
|
||||||
|
})
|
||||||
|
} else {
|
||||||
|
Metamaps.Visualize.mGraph.fx.plotNode(nodeOnViz, Metamaps.Visualize.mGraph.canvas)
|
||||||
|
Metamaps.Visualize.mGraph.fx.animate({
|
||||||
|
modes: ['node-property:dim'],
|
||||||
|
duration: 500,
|
||||||
|
onComplete: function () {}
|
||||||
|
})
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
Metamaps.Visualize.mGraph.loadJSON(newnode)
|
||||||
|
nodeOnViz = Metamaps.Visualize.mGraph.graph.getNode(newnode.id)
|
||||||
|
topic.set('node', nodeOnViz, {silent: true})
|
||||||
|
topic.updateNode() // links the topic and the mapping to the node
|
||||||
|
|
||||||
|
nodeOnViz.setData('dim', 1, 'start')
|
||||||
|
nodeOnViz.setData('dim', 25, 'end')
|
||||||
|
nodeOnViz.setPos(new $jit.Complex(mapping.get('xloc'), mapping.get('yloc')), 'current')
|
||||||
|
nodeOnViz.setPos(new $jit.Complex(mapping.get('xloc'), mapping.get('yloc')), 'start')
|
||||||
|
nodeOnViz.setPos(new $jit.Complex(mapping.get('xloc'), mapping.get('yloc')), 'end')
|
||||||
|
Metamaps.Visualize.mGraph.fx.plotNode(nodeOnViz, Metamaps.Visualize.mGraph.canvas)
|
||||||
|
Metamaps.Visualize.mGraph.fx.animate({
|
||||||
|
modes: ['node-property:dim'],
|
||||||
|
duration: 500,
|
||||||
|
onComplete: function () {}
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
var mappingSuccessCallback = function (mappingModel, response) {
|
||||||
|
var newTopicData = {
|
||||||
|
mappingid: mappingModel.id,
|
||||||
|
mappableid: mappingModel.get('mappable_id')
|
||||||
|
}
|
||||||
|
|
||||||
|
$(document).trigger(Metamaps.JIT.events.newTopic, [newTopicData])
|
||||||
|
}
|
||||||
|
var topicSuccessCallback = function (topicModel, response) {
|
||||||
|
if (Metamaps.Active.Map) {
|
||||||
|
mapping.save({ mappable_id: topicModel.id }, {
|
||||||
|
success: mappingSuccessCallback,
|
||||||
|
error: function (model, response) {
|
||||||
|
console.log('error saving mapping to database')
|
||||||
|
}
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
if (Metamaps.Create.newTopic.addSynapse) {
|
||||||
|
Metamaps.Create.newSynapse.topic2id = topicModel.id
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!Metamaps.Settings.sandbox && createNewInDB) {
|
||||||
|
if (topic.isNew()) {
|
||||||
|
topic.save(null, {
|
||||||
|
success: topicSuccessCallback,
|
||||||
|
error: function (model, response) {
|
||||||
|
console.log('error saving topic to database')
|
||||||
|
}
|
||||||
|
})
|
||||||
|
} else if (!topic.isNew() && Metamaps.Active.Map) {
|
||||||
|
mapping.save(null, {
|
||||||
|
success: mappingSuccessCallback
|
||||||
|
})
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
createTopicLocally: function () {
|
||||||
|
var self = Metamaps.Topic
|
||||||
|
|
||||||
|
if (Metamaps.Create.newTopic.name === '') {
|
||||||
|
Metamaps.GlobalUI.notifyUser('Please enter a topic title...')
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
// hide the 'double-click to add a topic' message
|
||||||
|
Metamaps.Famous.viz.hideInstructions()
|
||||||
|
|
||||||
|
$(document).trigger(Metamaps.Map.events.editedByActiveMapper)
|
||||||
|
|
||||||
|
var metacode = Metamaps.Metacodes.get(Metamaps.Create.newTopic.metacode)
|
||||||
|
|
||||||
|
var topic = new Metamaps.Backbone.Topic({
|
||||||
|
name: Metamaps.Create.newTopic.name,
|
||||||
|
metacode_id: metacode.id
|
||||||
|
})
|
||||||
|
Metamaps.Topics.add(topic)
|
||||||
|
|
||||||
|
var mapping = new Metamaps.Backbone.Mapping({
|
||||||
|
xloc: Metamaps.Create.newTopic.x,
|
||||||
|
yloc: Metamaps.Create.newTopic.y,
|
||||||
|
mappable_id: topic.cid,
|
||||||
|
mappable_type: 'Topic',
|
||||||
|
})
|
||||||
|
Metamaps.Mappings.add(mapping)
|
||||||
|
|
||||||
|
// these can't happen until the value is retrieved, which happens in the line above
|
||||||
|
Metamaps.Create.newTopic.hide()
|
||||||
|
|
||||||
|
self.renderTopic(mapping, topic, true, true) // this function also includes the creation of the topic in the database
|
||||||
|
},
|
||||||
|
getTopicFromAutocomplete: function (id) {
|
||||||
|
var self = Metamaps.Topic
|
||||||
|
|
||||||
|
$(document).trigger(Metamaps.Map.events.editedByActiveMapper)
|
||||||
|
|
||||||
|
Metamaps.Create.newTopic.hide()
|
||||||
|
|
||||||
|
var topic = self.get(id)
|
||||||
|
|
||||||
|
var mapping = new Metamaps.Backbone.Mapping({
|
||||||
|
xloc: Metamaps.Create.newTopic.x,
|
||||||
|
yloc: Metamaps.Create.newTopic.y,
|
||||||
|
mappable_type: 'Topic',
|
||||||
|
mappable_id: topic.id,
|
||||||
|
})
|
||||||
|
Metamaps.Mappings.add(mapping)
|
||||||
|
|
||||||
|
self.renderTopic(mapping, topic, true, true)
|
||||||
|
},
|
||||||
|
getTopicFromSearch: function (event, id) {
|
||||||
|
var self = Metamaps.Topic
|
||||||
|
|
||||||
|
$(document).trigger(Metamaps.Map.events.editedByActiveMapper)
|
||||||
|
|
||||||
|
var topic = self.get(id)
|
||||||
|
|
||||||
|
var nextCoords = Metamaps.Map.getNextCoord()
|
||||||
|
var mapping = new Metamaps.Backbone.Mapping({
|
||||||
|
xloc: nextCoords.x,
|
||||||
|
yloc: nextCoords.y,
|
||||||
|
mappable_type: 'Topic',
|
||||||
|
mappable_id: topic.id,
|
||||||
|
})
|
||||||
|
Metamaps.Mappings.add(mapping)
|
||||||
|
|
||||||
|
self.renderTopic(mapping, topic, true, true)
|
||||||
|
|
||||||
|
Metamaps.GlobalUI.notifyUser('Topic was added to your map!')
|
||||||
|
|
||||||
|
event.stopPropagation()
|
||||||
|
event.preventDefault()
|
||||||
|
return false
|
||||||
|
}
|
||||||
}; // end Metamaps.Topic
|
}; // end Metamaps.Topic
|
||||||
|
|
Loading…
Reference in a new issue