Merge branch 'master' into devel
BIN
app/assets/images/argument.png
Normal file
After Width: | Height: | Size: 12 KiB |
Before Width: | Height: | Size: 4.1 KiB |
BIN
app/assets/images/con_icon.png
Normal file
After Width: | Height: | Size: 12 KiB |
BIN
app/assets/images/decision.png
Normal file
After Width: | Height: | Size: 12 KiB |
BIN
app/assets/images/example.png
Normal file
After Width: | Height: | Size: 13 KiB |
Before Width: | Height: | Size: 8.6 KiB After Width: | Height: | Size: 13 KiB |
BIN
app/assets/images/foresight.png
Normal file
After Width: | Height: | Size: 13 KiB |
BIN
app/assets/images/goodpractice.png
Normal file
After Width: | Height: | Size: 14 KiB |
Before Width: | Height: | Size: 12 KiB |
Before Width: | Height: | Size: 8.6 KiB After Width: | Height: | Size: 13 KiB |
BIN
app/assets/images/list.png
Normal file
After Width: | Height: | Size: 12 KiB |
BIN
app/assets/images/map.png
Normal file
After Width: | Height: | Size: 13 KiB |
BIN
app/assets/images/moviemap.png
Normal file
After Width: | Height: | Size: 13 KiB |
BIN
app/assets/images/note.png
Normal file
After Width: | Height: | Size: 13 KiB |
Before Width: | Height: | Size: 8.4 KiB |
Before Width: | Height: | Size: 8.6 KiB |
Before Width: | Height: | Size: 8.9 KiB |
Before Width: | Height: | Size: 11 KiB |
Before Width: | Height: | Size: 8.3 KiB |
Before Width: | Height: | Size: 8.5 KiB |
Before Width: | Height: | Size: 8.4 KiB After Width: | Height: | Size: 12 KiB |
BIN
app/assets/images/pro.png
Normal file
After Width: | Height: | Size: 12 KiB |
Before Width: | Height: | Size: 8.4 KiB After Width: | Height: | Size: 12 KiB |
Before Width: | Height: | Size: 8.5 KiB After Width: | Height: | Size: 12 KiB |
BIN
app/assets/images/research.png
Normal file
After Width: | Height: | Size: 13 KiB |
BIN
app/assets/images/spinner.gif
Normal file
After Width: | Height: | Size: 3.6 KiB |
Before Width: | Height: | Size: 8.2 KiB After Width: | Height: | Size: 12 KiB |
BIN
app/assets/images/wildcard.png
Normal file
After Width: | Height: | Size: 12 KiB |
|
@ -128,57 +128,44 @@ function onCanvasSearch(name,mapID,mapperID) {
|
|||
|
||||
Mconsole.graph.eachNode( function (n) {
|
||||
if (name != null) {
|
||||
if (n.name.indexOf(name) !== -1) {
|
||||
n.setData('alpha', 1, 'end');
|
||||
n.eachAdjacency(function(adj) {
|
||||
adj.setData('alpha', 0.4, 'end');
|
||||
});
|
||||
if (n.name.indexOf(name) !== -1 && name != "") {
|
||||
n.setData('onCanvas', true);
|
||||
//$('.name.item_' + n.id).css('display','block');
|
||||
}
|
||||
else {
|
||||
n.setData('alpha', 0.4, 'end');
|
||||
n.eachAdjacency(function(adj) {
|
||||
adj.setData('alpha', 0.4, 'end');
|
||||
});
|
||||
n.setData('onCanvas', false);
|
||||
//$('.name.item_' + n.id).css('display','none');
|
||||
}
|
||||
}
|
||||
else if (mapID != null) {
|
||||
if (n.getData('inmaps').indexOf(parseInt(mapID)) !== -1) {
|
||||
n.setData('alpha', 1, 'end');
|
||||
n.eachAdjacency(function(adj) {
|
||||
adj.setData('alpha', 0.4, 'end');
|
||||
});
|
||||
n.setData('onCanvas', true);
|
||||
//$('.name.item_' + n.id).css('display','block');
|
||||
}
|
||||
else {
|
||||
n.setData('alpha', 0.4, 'end');
|
||||
n.eachAdjacency(function(adj) {
|
||||
adj.setData('alpha', 0.4, 'end');
|
||||
});
|
||||
n.setData('onCanvas', false);
|
||||
//$('.name.item_' + n.id).css('display','none');
|
||||
}
|
||||
}
|
||||
else if (mapperID != null) {
|
||||
if (n.getData('userid').toString() == mapperID) {
|
||||
n.setData('alpha', 1, 'end');
|
||||
n.eachAdjacency(function(adj) {
|
||||
adj.setData('alpha', 0.4, 'end');
|
||||
});
|
||||
n.setData('onCanvas', true);
|
||||
//$('.name.item_' + n.id).css('display','block');
|
||||
}
|
||||
else {
|
||||
n.setData('alpha', 0.4, 'end');
|
||||
n.eachAdjacency(function(adj) {
|
||||
adj.setData('alpha', 0.4, 'end');
|
||||
});
|
||||
n.setData('onCanvas', false);
|
||||
//$('.name.item_' + n.id).css('display','none');
|
||||
}
|
||||
}
|
||||
Mconsole.plot();
|
||||
});
|
||||
Mconsole.fx.animate({
|
||||
modes: ['node-property:alpha',
|
||||
'edge-property:alpha'],
|
||||
duration: 500
|
||||
});
|
||||
}
|
||||
|
||||
|
||||
|
||||
function clearCanvas() {
|
||||
Mconsole.graph.eachNode( function(n) { Mconsole.graph.removeNode(n.id); $('#'+n.id).remove(); });
|
||||
Mconsole.plot();
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
@ -205,7 +192,9 @@ $(document).ready(function() {
|
|||
// this sets up the closing of the find box, and the toggling between open and closed.
|
||||
$('#closeFind').click(function(){
|
||||
Mconsole.graph.eachNode( function (n) {
|
||||
n.setData('isNew', false);
|
||||
n.setData('inCommons', false);
|
||||
n.setData('onCanvas', false);
|
||||
//$('.name.item_' + n.id).css('display','block');
|
||||
});
|
||||
Mconsole.plot();
|
||||
$('#closeFind, #findWhere').css('display','none');
|
||||
|
@ -544,7 +533,7 @@ $(document).ready(function() {
|
|||
// }
|
||||
// }
|
||||
// }
|
||||
// toggle the image and the boolean array value
|
||||
// toggle the image and the boolean array value
|
||||
if (categoryVisible[category] == true) {
|
||||
$(this).addClass('toggledOff');
|
||||
categoryVisible[category] = false;
|
||||
|
|
|
@ -13,7 +13,7 @@ function graphSettings(type) {
|
|||
//Enable panning events only if we're dragging the empty
|
||||
//canvas (and not a node).
|
||||
panning: 'avoid nodes',
|
||||
zooming: 10 //zoom speed. higher is more sensible
|
||||
zooming: 15 //zoom speed. higher is more sensible
|
||||
},
|
||||
// Change node and edge styles such as
|
||||
// color and width.
|
||||
|
@ -30,7 +30,7 @@ function graphSettings(type) {
|
|||
overridable: true,
|
||||
color: '#222222',
|
||||
type: 'customEdge',
|
||||
lineWidth: 1
|
||||
lineWidth: 2
|
||||
},
|
||||
//Native canvas text styling
|
||||
Label: {
|
||||
|
@ -57,12 +57,13 @@ function graphSettings(type) {
|
|||
},
|
||||
//Update node positions when dragged
|
||||
onDragMove: function (node, eventInfo, e) {
|
||||
clickDragOnTopicForceDirected(node, eventInfo, e);
|
||||
clickDragOnTopic(node, eventInfo, e);
|
||||
},
|
||||
onDragEnd: function() {
|
||||
if (tempInit && tempNode2 == null) {
|
||||
$('#item_addSynapse').val("true");
|
||||
$('#new_item').fadeIn('fast');
|
||||
addMetacode();
|
||||
$('#item_name').focus();
|
||||
}
|
||||
else if (tempInit && tempNode2 != null) {
|
||||
|
@ -94,7 +95,7 @@ function graphSettings(type) {
|
|||
onClick: function (node, eventInfo, e) {
|
||||
//clicking on a node, or clicking on blank part of canvas?
|
||||
if (node.nodeFrom) {
|
||||
selectEdgeOnClickHandler(node);
|
||||
selectEdgeOnClickHandler(node);
|
||||
}
|
||||
else if (node && !node.nodeFrom) {
|
||||
selectNodeOnClickHandler(node);
|
||||
|
@ -129,7 +130,7 @@ function graphSettings(type) {
|
|||
node.setData('dim', 25, 'current');
|
||||
node.eachAdjacency(function (adj) {
|
||||
adj.setDataset('end', {
|
||||
lineWidth: 0.5,
|
||||
lineWidth: 2,
|
||||
color: '#222222'
|
||||
});
|
||||
adj.setData('showDesc', false, 'current');
|
||||
|
@ -191,7 +192,7 @@ function graphSettings(type) {
|
|||
//Enable panning events only if we're dragging the empty
|
||||
//canvas (and not a node).
|
||||
panning: 'avoid nodes',
|
||||
zooming: 10 //zoom speed. higher is more sensible
|
||||
zooming: 15 //zoom speed. higher is more sensible
|
||||
},
|
||||
// Change node and edge styles such as
|
||||
// color and width.
|
||||
|
@ -208,7 +209,7 @@ function graphSettings(type) {
|
|||
overridable: true,
|
||||
color: '#222222',
|
||||
type: 'customEdge',
|
||||
lineWidth: 1
|
||||
lineWidth: 2
|
||||
},
|
||||
//Native canvas text styling
|
||||
Label: {
|
||||
|
@ -234,10 +235,16 @@ function graphSettings(type) {
|
|||
},
|
||||
//Update node positions when dragged
|
||||
onDragMove: function (node, eventInfo, e) {
|
||||
clickDragOnTopicRGraph(node, eventInfo, e);
|
||||
clickDragOnTopic(node, eventInfo, e);
|
||||
},
|
||||
onDragEnd: function() {
|
||||
if (tempInit && tempNode2 != null) {
|
||||
if (tempInit && tempNode2 == null) {
|
||||
$('#item_addSynapse').val("true");
|
||||
$('#new_item').fadeIn('fast');
|
||||
addMetacode();
|
||||
$('#item_name').focus();
|
||||
}
|
||||
else if (tempInit && tempNode2 != null) {
|
||||
$('#item_addSynapse').val("false");
|
||||
$('#synapse_item1id').val(tempNode.id);
|
||||
$('#synapse_item2id').val(tempNode2.id);
|
||||
|
@ -247,12 +254,6 @@ function graphSettings(type) {
|
|||
tempNode2 = null;
|
||||
tempInit = false;
|
||||
}
|
||||
else {
|
||||
tempNode = null;
|
||||
tempNode2 = null;
|
||||
tempInit = false;
|
||||
Mconsole.plot();
|
||||
}
|
||||
},
|
||||
onDragCancel: function() {
|
||||
tempNode = null;
|
||||
|
@ -265,11 +266,12 @@ function graphSettings(type) {
|
|||
$jit.util.event.stop(e); //stop default touchmove event
|
||||
this.onDragMove(node, eventInfo, e);
|
||||
},
|
||||
//Add also a click handler to nodes
|
||||
//Add also a click handler to nodes
|
||||
onClick: function (node, eventInfo, e) {
|
||||
//clicking on an edge, a node, or clicking on blank part of canvas?
|
||||
if (node.nodeFrom) {
|
||||
selectEdgeOnClickHandler(node);
|
||||
if (eventInfo.getEdge() != false || node.nodeFrom) {
|
||||
if (eventInfo.getEdge() != false) selectEdgeOnClickHandler(eventInfo.getEdge());
|
||||
else if (node.nodeFrom) selectEdgeOnClickHandler(node);
|
||||
}
|
||||
else if (node && !node.nodeFrom) {
|
||||
if (!Mconsole.busy) {
|
||||
|
@ -311,7 +313,7 @@ function graphSettings(type) {
|
|||
node.setData('dim', 25, 'current');
|
||||
node.eachAdjacency(function (adj) {
|
||||
adj.setDataset('end', {
|
||||
lineWidth: 0.5,
|
||||
lineWidth: 2,
|
||||
color: '#222222'
|
||||
});
|
||||
adj.setData('showDesc', false, 'current');
|
||||
|
@ -390,6 +392,7 @@ midPoint.y - vect.y);
|
|||
var v1 = intermediatePoint.add(normal);
|
||||
var v2 = intermediatePoint.$add(normal.$scale(-1));
|
||||
|
||||
//ctx.strokeStyle = 'black';
|
||||
ctx.beginPath();
|
||||
ctx.moveTo(from.x, from.y);
|
||||
ctx.lineTo(to.x, to.y);
|
||||
|
@ -408,11 +411,20 @@ var nodeSettings = {
|
|||
var pos = node.pos.getc(true),
|
||||
dim = node.getData('dim'),
|
||||
cat = node.getData('itemcatname'),
|
||||
isNew = node.getData('isNew'),
|
||||
inCommons = node.getData('inCommons'),
|
||||
onCanvas = node.getData('onCanvas'),
|
||||
ctx = canvas.getCtx();
|
||||
|
||||
// if the topic is temporary draw a green circle around it
|
||||
if (isNew) {
|
||||
// if the topic is from the Commons draw a green circle around it
|
||||
if (inCommons) {
|
||||
ctx.beginPath();
|
||||
ctx.arc(pos.x, pos.y, dim+3, 0, 2 * Math.PI, false);
|
||||
ctx.strokeStyle = '#67be5f'; // green
|
||||
ctx.lineWidth = 2;
|
||||
ctx.stroke();
|
||||
}
|
||||
// if the topic is on the Canvas draw a white circle around it
|
||||
if (onCanvas) {
|
||||
ctx.beginPath();
|
||||
ctx.arc(pos.x, pos.y, dim+3, 0, 2 * Math.PI, false);
|
||||
ctx.strokeStyle = 'white';
|
||||
|
@ -456,7 +468,7 @@ var nodeSettings = {
|
|||
}
|
||||
|
||||
//check for edge label in data
|
||||
var desc = adj.getData("desc") + ' (' + adj.getData("userid") + ',' + adj.getData("id") + ')';
|
||||
var desc = adj.getData("desc") + ' (' + adj.getData("id") + ')';
|
||||
var showDesc = adj.getData("showDesc");
|
||||
if( desc != "" && showDesc ) {
|
||||
//now adjust the label placement
|
||||
|
@ -469,7 +481,7 @@ var nodeSettings = {
|
|||
}
|
||||
}, 'contains' : function(adj, pos) {
|
||||
var from = adj.nodeFrom.pos.getc(true),
|
||||
to = adj.nodeTo.pos.getc(true);
|
||||
to = adj.nodeTo.pos.getc(true);
|
||||
return this.edgeHelper.line.contains(from, to, pos, adj.Edge.epsilon);
|
||||
}
|
||||
}
|
||||
|
@ -499,7 +511,7 @@ function selectNodeOnClickHandler(node) {
|
|||
n.setData('dim', 25, 'current');
|
||||
n.eachAdjacency(function (adj) {
|
||||
adj.setDataset('end', {
|
||||
lineWidth: 0.5,
|
||||
lineWidth: 2,
|
||||
color: '#222222'
|
||||
});
|
||||
adj.setData('showDesc', false, 'current');
|
||||
|
@ -511,7 +523,7 @@ function selectNodeOnClickHandler(node) {
|
|||
|
||||
node.eachAdjacency(function (adj) {
|
||||
adj.setDataset('end', {
|
||||
lineWidth: 3,
|
||||
lineWidth: 4,
|
||||
color: '#FFF'
|
||||
});
|
||||
adj.setData('showDesc', true, 'current');
|
||||
|
@ -538,7 +550,7 @@ function canvasDoubleClickHandler(canvasLoc,e) {
|
|||
var storedTime = canvasDoubleClickHandlerObject.storedTime;
|
||||
var now = Date.now(); //not compatible with IE8 FYI
|
||||
|
||||
if (now - storedTime < TOLERANCE && (gType == "arranged" || gType == "chaotic")) {
|
||||
if (now - storedTime < TOLERANCE) {
|
||||
//pop up node creation :)
|
||||
$('#item_grabItem').val("null");
|
||||
$('#item_addSynapse').val("false");
|
||||
|
@ -547,12 +559,11 @@ function canvasDoubleClickHandler(canvasLoc,e) {
|
|||
$('#item_x').val(canvasLoc.x);
|
||||
$('#item_y').val(canvasLoc.y);
|
||||
$('#new_item').fadeIn('fast');
|
||||
addMetacode();
|
||||
$('#item_name').focus();
|
||||
} else {
|
||||
canvasDoubleClickHandlerObject.storedTime = now;
|
||||
if (gType != "centered") {
|
||||
$('#new_item').fadeOut('fast');
|
||||
}
|
||||
$('#new_item').fadeOut('fast');
|
||||
$('#new_synapse').fadeOut('fast');
|
||||
tempInit = false;
|
||||
tempNode = null;
|
||||
|
@ -562,18 +573,18 @@ function canvasDoubleClickHandler(canvasLoc,e) {
|
|||
}//canvasDoubleClickHandler
|
||||
|
||||
// ForceDirected Mode: for the creation of new topics and synapses through clicking and draggin with right clicks off of topics
|
||||
function clickDragOnTopicForceDirected(node, eventInfo, e) {
|
||||
function clickDragOnTopic(node, eventInfo, e) {
|
||||
if (node && !node.nodeFrom) {
|
||||
$('#new_synapse').fadeOut('fast');
|
||||
$('#new_item').fadeOut('fast');
|
||||
var pos = eventInfo.getPos();
|
||||
// if it's a left click, move the node
|
||||
if (e.button == 0) {
|
||||
if (e.button == 0 && !e.altKey ) {
|
||||
node.pos.setc(pos.x, pos.y);
|
||||
Mconsole.plot();
|
||||
}
|
||||
// if it's a right click, start synapse creation
|
||||
else if (e.button == 2) {
|
||||
else if (e.button == 2 || (e.button == 0 && e.altKey)) {
|
||||
if (tempInit == false) {
|
||||
tempNode = node;
|
||||
tempInit = true;
|
||||
|
@ -583,7 +594,7 @@ function clickDragOnTopicForceDirected(node, eventInfo, e) {
|
|||
if (temp != false && temp.id != node.id) { // this means a Node has been returned
|
||||
tempNode2 = temp;
|
||||
Mconsole.plot();
|
||||
renderMidArrow({ x: tempNode.pos.x, y: tempNode.pos.y }, { x: temp.pos.x, y: temp.pos.y }, 13, false, Mconsole.canvas);
|
||||
renderMidArrow({ x: tempNode.pos.getc().x, y: tempNode.pos.getc().y }, { x: temp.pos.getc().x, y: temp.pos.getc().y }, 13, false, Mconsole.canvas);
|
||||
// before making the highlighted one bigger, make sure all the others are regular size
|
||||
Mconsole.graph.eachNode(function (n) {
|
||||
n.setData('dim', 25, 'current');
|
||||
|
@ -607,53 +618,6 @@ function clickDragOnTopicForceDirected(node, eventInfo, e) {
|
|||
$('#item_x').val(eventInfo.getPos().x);
|
||||
$('#item_y').val(eventInfo.getPos().y);
|
||||
Mconsole.plot();
|
||||
renderMidArrow({ x: tempNode.pos.x, y: tempNode.pos.y }, { x: pos.x, y: pos.y }, 13, false, Mconsole.canvas);
|
||||
Mconsole.fx.plotNode(tempNode, Mconsole.canvas);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// RGRAPH MODE: for the creation of synapses through clicking and draggin with right clicks off of topics
|
||||
function clickDragOnTopicRGraph(node, eventInfo, e) {
|
||||
if (node && !node.nodeFrom) {
|
||||
$('#new_synapse').fadeOut('fast');
|
||||
var pos = eventInfo.getPos();
|
||||
|
||||
// if it's a left click, move the node
|
||||
if (e.button == 0) {
|
||||
node.pos.setc(pos.x, pos.y);
|
||||
Mconsole.plot();
|
||||
}
|
||||
// if it's a right click, start synapse creation
|
||||
else if (e.button == 2) {
|
||||
if (tempInit == false) {
|
||||
tempNode = node;
|
||||
tempInit = true;
|
||||
}
|
||||
//
|
||||
temp = eventInfo.getNode();
|
||||
if (temp != false && temp.id != node.id) { // this means a Node has been returned
|
||||
tempNode2 = temp;
|
||||
Mconsole.plot();
|
||||
renderMidArrow({ x: tempNode.pos.getc().x, y: tempNode.pos.getc().y }, { x: temp.pos.getc().x, y: temp.pos.getc().y }, 13, false, Mconsole.canvas);
|
||||
// before making the highlighted one bigger, make sure all the others are regular size
|
||||
Mconsole.graph.eachNode(function (n) {
|
||||
n.setData('dim', 25, 'current');
|
||||
});
|
||||
temp.setData('dim',35,'current');
|
||||
Mconsole.fx.plotNode(tempNode, Mconsole.canvas);
|
||||
Mconsole.fx.plotNode(temp, Mconsole.canvas);
|
||||
} else if (!temp) {
|
||||
tempNode2 = null;
|
||||
Mconsole.graph.eachNode(function (n) {
|
||||
n.setData('dim', 25, 'current');
|
||||
});
|
||||
var myX = e.x - 110;
|
||||
var myY = e.y - 30;
|
||||
document.getElementById('new_synapse').style.left = myX + "px";
|
||||
document.getElementById('new_synapse').style.top = myY + "px";
|
||||
Mconsole.plot();
|
||||
renderMidArrow({ x: tempNode.pos.getc().x, y: tempNode.pos.getc().y }, { x: pos.x, y: pos.y }, 13, false, Mconsole.canvas);
|
||||
Mconsole.fx.plotNode(tempNode, Mconsole.canvas);
|
||||
}
|
||||
|
|
|
@ -21,7 +21,7 @@
|
|||
// other options are 'graph'
|
||||
var viewMode = "list";
|
||||
|
||||
var labelType, useGradients, nativeTextSupport, animate, json, Mconsole = null, gType, tempNode = null, tempInit = false, tempNode2 = null;
|
||||
var labelType, useGradients, nativeTextSupport, animate, json, Mconsole = null, gType, tempNode = null, tempInit = false, tempNode2 = null, metacodeIMGinit = false;
|
||||
|
||||
$(document).ready(function() {
|
||||
|
||||
|
@ -29,61 +29,61 @@ var labelType, useGradients, nativeTextSupport, animate, json, Mconsole = null,
|
|||
return false;
|
||||
});
|
||||
|
||||
/// this is for the topic creation autocomplete fielf
|
||||
/// this is for the topic creation autocomplete field
|
||||
$('#item_name').bind('railsAutocomplete.select', function(event, data){
|
||||
if (data.item.id != undefined) {
|
||||
$('#item_grabItem').val(data.item.id);
|
||||
$('#new_item').submit();
|
||||
}
|
||||
});
|
||||
|
||||
$('.new_topic').bind('submit', function(event, data){
|
||||
event.preventDefault();
|
||||
});
|
||||
|
||||
$(".focus .desc").mCustomScrollbar();
|
||||
$(".scroll").mCustomScrollbar();
|
||||
|
||||
$('.nodemargin').css('padding-top',$('.focus').css('height'));
|
||||
|
||||
// controls the sliding hover of the menus at the top
|
||||
var sliding1 = false;
|
||||
$(".accountWrap").hover(
|
||||
var sliding1 = false;
|
||||
var lT;
|
||||
$(".logo").hover(
|
||||
function () {
|
||||
clearTimeout(lT);
|
||||
if (! sliding1) {
|
||||
sliding1 = true;
|
||||
$(".account").slideDown('slow', function() {
|
||||
sliding1 = false;
|
||||
});
|
||||
if (userid != null) {
|
||||
$('.footer .menu').animate({
|
||||
height: '252px'
|
||||
}, 300, function() {
|
||||
sliding1 = false;
|
||||
});
|
||||
}
|
||||
else {
|
||||
$('.footer .menu').animate({
|
||||
height: '140px'
|
||||
}, 300, function() {
|
||||
sliding1 = false;
|
||||
});
|
||||
}
|
||||
}
|
||||
},
|
||||
function () {
|
||||
if (! sliding1) {
|
||||
sliding1 = true;
|
||||
$(".account").slideUp('slow', function() {
|
||||
sliding1 = false;
|
||||
});
|
||||
}
|
||||
lT = setTimeout(function() {
|
||||
if (! sliding1) {
|
||||
sliding1 = true;
|
||||
$('.footer .menu').animate({
|
||||
height: '0px'
|
||||
}, 300, function() {
|
||||
sliding1 = false;
|
||||
});
|
||||
}
|
||||
},800);
|
||||
}
|
||||
);
|
||||
|
||||
var sliding2 = false;
|
||||
$(".createWrap").hover(
|
||||
function () {
|
||||
if (! sliding2) {
|
||||
sliding2 = true;
|
||||
$(".create").slideDown('slow', function() {
|
||||
sliding2 = false;
|
||||
});
|
||||
}
|
||||
},
|
||||
function () {
|
||||
if (! sliding2) {
|
||||
sliding2 = true;
|
||||
$(".create").slideUp('slow', function() {
|
||||
sliding2 = false;
|
||||
});
|
||||
}
|
||||
}
|
||||
);
|
||||
|
||||
// this is to save the layout of maps
|
||||
// this is to save the layout of maps when you're on a map page
|
||||
var coor = "";
|
||||
$("#saveLayout").click(function(event) {
|
||||
event.preventDefault();
|
||||
|
@ -98,6 +98,40 @@ var labelType, useGradients, nativeTextSupport, animate, json, Mconsole = null,
|
|||
|
||||
}
|
||||
});
|
||||
|
||||
});
|
||||
|
||||
// this is to save your console to a map
|
||||
function saveToMap() {
|
||||
var Coor = "";
|
||||
Mconsole.graph.eachNode(function(n) {
|
||||
Coor = Coor + n.id + '/' + n.pos.x + '/' + n.pos.y + ',';
|
||||
});
|
||||
Coor = Coor.slice(0, -1);
|
||||
$('#map_topicsToMap').val(Coor);
|
||||
$('#new_map').fadeIn('fast');
|
||||
}
|
||||
|
||||
function addMetacode() {
|
||||
// code from http://www.professorcloud.com/mainsite/carousel-integration.htm
|
||||
if (!metacodeIMGinit) {
|
||||
$("#metacodeImg").CloudCarousel( {
|
||||
//reflHeight: 10,
|
||||
//reflGap: 2,
|
||||
titleBox: $('#metacodeImgTitle'),
|
||||
//buttonLeft: $('#left-but'),
|
||||
//buttonRight: $('#right-but'),
|
||||
yRadius:40,
|
||||
xPos: 150,
|
||||
yPos: 40,
|
||||
speed:0.15,
|
||||
mouseWheel:true,
|
||||
bringToFront: true
|
||||
});
|
||||
metacodeIMGinit = true;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
|
362
app/assets/javascripts/carousel/cloud-carousel.1.0.5.js
Normal file
|
@ -0,0 +1,362 @@
|
|||
//////////////////////////////////////////////////////////////////////////////////
|
||||
// CloudCarousel V1.0.5
|
||||
// (c) 2011 by R Cecco. <http://www.professorcloud.com>
|
||||
// MIT License
|
||||
//
|
||||
// Reflection code based on plugin by Christophe Beyls <http://www.digitalia.be>
|
||||
//
|
||||
// Please retain this copyright header in all versions of the software
|
||||
//////////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
(function($) {
|
||||
|
||||
// START Reflection object.
|
||||
// Creates a reflection for underneath an image.
|
||||
// IE uses an image with IE specific filter properties, other browsers use the Canvas tag.
|
||||
// The position and size of the reflection gets updated by updateAll() in Controller.
|
||||
function Reflection(img, reflHeight, opacity) {
|
||||
|
||||
var reflection, cntx, imageWidth = img.width, imageHeight = img.width, gradient, parent;
|
||||
|
||||
parent = $(img.parentNode);
|
||||
this.element = reflection = parent.append("<canvas class='reflection' style='position:absolute'/>").find(':last')[0];
|
||||
if ( !reflection.getContext && $.browser.msie) {
|
||||
this.element = reflection = parent.append("<img class='reflection' style='position:absolute'/>").find(':last')[0];
|
||||
reflection.src = img.src;
|
||||
reflection.style.filter = "flipv progid:DXImageTransform.Microsoft.Alpha(opacity=" + (opacity * 100) + ", style=1, finishOpacity=0, startx=0, starty=0, finishx=0, finishy=" + (reflHeight / imageHeight * 100) + ")";
|
||||
|
||||
} else {
|
||||
cntx = reflection.getContext("2d");
|
||||
try {
|
||||
|
||||
|
||||
$(reflection).attr({width: imageWidth, height: reflHeight});
|
||||
cntx.save();
|
||||
cntx.translate(0, imageHeight-1);
|
||||
cntx.scale(1, -1);
|
||||
cntx.drawImage(img, 0, 0, imageWidth, imageHeight);
|
||||
cntx.restore();
|
||||
cntx.globalCompositeOperation = "destination-out";
|
||||
gradient = cntx.createLinearGradient(0, 0, 0, reflHeight);
|
||||
gradient.addColorStop(0, "rgba(255, 255, 255, " + (1 - opacity) + ")");
|
||||
gradient.addColorStop(1, "rgba(255, 255, 255, 1.0)");
|
||||
cntx.fillStyle = gradient;
|
||||
cntx.fillRect(0, 0, imageWidth, reflHeight);
|
||||
} catch(e) {
|
||||
return;
|
||||
}
|
||||
}
|
||||
// Store a copy of the alt and title attrs into the reflection
|
||||
$(reflection).attr({ 'alt': $(img).attr('alt'), title: $(img).attr('title')} );
|
||||
|
||||
} //END Reflection object
|
||||
|
||||
// START Item object.
|
||||
// A wrapper object for items within the carousel.
|
||||
var Item = function(imgIn, options)
|
||||
{
|
||||
this.orgWidth = imgIn.width;
|
||||
this.orgHeight = imgIn.height;
|
||||
this.image = imgIn;
|
||||
this.reflection = null;
|
||||
this.alt = imgIn.alt;
|
||||
this.title = imgIn.title;
|
||||
this.imageOK = false;
|
||||
this.options = options;
|
||||
|
||||
this.imageOK = true;
|
||||
|
||||
if (this.options.reflHeight > 0)
|
||||
{
|
||||
this.reflection = new Reflection(this.image, this.options.reflHeight, this.options.reflOpacity);
|
||||
}
|
||||
$(this.image).css('position','absolute'); // Bizarre. This seems to reset image width to 0 on webkit!
|
||||
};// END Item object
|
||||
|
||||
|
||||
// Controller object.
|
||||
// This handles moving all the items, dealing with mouse clicks etc.
|
||||
var Controller = function(container, images, options)
|
||||
{
|
||||
var items = [], funcSin = Math.sin, funcCos = Math.cos, ctx=this;
|
||||
this.controlTimer = 0;
|
||||
this.stopped = false;
|
||||
//this.imagesLoaded = 0;
|
||||
this.container = container;
|
||||
this.xRadius = options.xRadius;
|
||||
this.yRadius = options.yRadius;
|
||||
this.showFrontTextTimer = 0;
|
||||
this.autoRotateTimer = 0;
|
||||
if (options.xRadius === 0)
|
||||
{
|
||||
this.xRadius = ($(container).width()/2.3);
|
||||
}
|
||||
if (options.yRadius === 0)
|
||||
{
|
||||
this.yRadius = ($(container).height()/6);
|
||||
}
|
||||
|
||||
this.xCentre = options.xPos;
|
||||
this.yCentre = options.yPos;
|
||||
this.frontIndex = 0; // Index of the item at the front
|
||||
|
||||
// Start with the first item at the front.
|
||||
this.rotation = this.destRotation = Math.PI/2;
|
||||
this.timeDelay = 1000/options.FPS;
|
||||
|
||||
// Turn on the infoBox
|
||||
if(options.altBox !== null)
|
||||
{
|
||||
$(options.altBox).css('display','block');
|
||||
$(options.titleBox).css('display','block');
|
||||
}
|
||||
// Turn on relative position for container to allow absolutely positioned elements
|
||||
// within it to work.
|
||||
$(container).css({ position:'relative', overflow:'hidden'} );
|
||||
|
||||
$(options.buttonLeft).css('display','inline');
|
||||
$(options.buttonRight).css('display','inline');
|
||||
|
||||
// Setup the buttons.
|
||||
$(options.buttonLeft).bind('mouseup',this,function(event){
|
||||
event.data.rotate(-1);
|
||||
return false;
|
||||
});
|
||||
$(options.buttonRight).bind('mouseup',this,function(event){
|
||||
event.data.rotate(1);
|
||||
return false;
|
||||
});
|
||||
|
||||
// You will need this plugin for the mousewheel to work: http://plugins.jquery.com/project/mousewheel
|
||||
if (options.mouseWheel)
|
||||
{
|
||||
$(container).bind('mousewheel',this,function(event, delta) {
|
||||
event.data.rotate(delta);
|
||||
return false;
|
||||
});
|
||||
}
|
||||
$(container).bind('mouseover click',this,function(event){
|
||||
|
||||
clearInterval(event.data.autoRotateTimer); // Stop auto rotation if mouse over.
|
||||
var text = $(event.target).attr('alt');
|
||||
// If we have moved over a carousel item, then show the alt and title text.
|
||||
|
||||
if ( text !== undefined && text !== null )
|
||||
{
|
||||
|
||||
clearTimeout(event.data.showFrontTextTimer);
|
||||
$(options.altBox).html( ($(event.target).attr('alt') ));
|
||||
$(options.titleBox).html( ($(event.target).attr('title') ));
|
||||
if ( options.bringToFront && event.type == 'click' )
|
||||
{
|
||||
|
||||
var idx = $(event.target).data('itemIndex');
|
||||
var frontIndex = event.data.frontIndex;
|
||||
//var diff = idx - frontIndex;
|
||||
var diff = (idx - frontIndex) % images.length;
|
||||
if (Math.abs(diff) > images.length / 2) {
|
||||
diff += (diff > 0 ? -images.length : images.length);
|
||||
}
|
||||
|
||||
event.data.rotate(-diff);
|
||||
}
|
||||
}
|
||||
});
|
||||
// If we have moved out of a carousel item (or the container itself),
|
||||
// restore the text of the front item in 1 second.
|
||||
$(container).bind('mouseout',this,function(event){
|
||||
var context = event.data;
|
||||
clearTimeout(context.showFrontTextTimer);
|
||||
context.showFrontTextTimer = setTimeout( function(){context.showFrontText();},1000);
|
||||
context.autoRotate(); // Start auto rotation.
|
||||
});
|
||||
|
||||
// Prevent items from being selected as mouse is moved and clicked in the container.
|
||||
$(container).bind('mousedown',this,function(event){
|
||||
|
||||
event.data.container.focus();
|
||||
return false;
|
||||
});
|
||||
container.onselectstart = function () { return false; }; // For IE.
|
||||
|
||||
this.innerWrapper = $(container).wrapInner('<div style="position:absolute;width:100%;height:100%;"/>').children()[0];
|
||||
|
||||
// Shows the text from the front most item.
|
||||
this.showFrontText = function()
|
||||
{
|
||||
if ( items[this.frontIndex] === undefined ) { return; } // Images might not have loaded yet.
|
||||
$(options.titleBox).html( $(items[this.frontIndex].image).attr('title'));
|
||||
// METAMAPS CODE
|
||||
$('#item_metacode').val( $(items[this.frontIndex].image).attr('title'));
|
||||
// NOT METAMAPS CODE
|
||||
$(options.altBox).html( $(items[this.frontIndex].image).attr('alt'));
|
||||
};
|
||||
|
||||
this.go = function()
|
||||
{
|
||||
if(this.controlTimer !== 0) { return; }
|
||||
var context = this;
|
||||
this.controlTimer = setTimeout( function(){context.updateAll();},this.timeDelay);
|
||||
};
|
||||
|
||||
this.stop = function()
|
||||
{
|
||||
clearTimeout(this.controlTimer);
|
||||
this.controlTimer = 0;
|
||||
};
|
||||
|
||||
|
||||
// Starts the rotation of the carousel. Direction is the number (+-) of carousel items to rotate by.
|
||||
this.rotate = function(direction)
|
||||
{
|
||||
this.frontIndex -= direction;
|
||||
this.frontIndex %= items.length;
|
||||
this.destRotation += ( Math.PI / items.length ) * ( 2*direction );
|
||||
this.showFrontText();
|
||||
this.go();
|
||||
};
|
||||
|
||||
|
||||
this.autoRotate = function()
|
||||
{
|
||||
if ( options.autoRotate !== 'no' )
|
||||
{
|
||||
var dir = (options.autoRotate === 'right')? 1 : -1;
|
||||
this.autoRotateTimer = setInterval( function(){ctx.rotate(dir); }, options.autoRotateDelay );
|
||||
}
|
||||
};
|
||||
|
||||
// This is the main loop function that moves everything.
|
||||
this.updateAll = function()
|
||||
{
|
||||
var minScale = options.minScale; // This is the smallest scale applied to the furthest item.
|
||||
var smallRange = (1-minScale) * 0.5;
|
||||
var w,h,x,y,scale,item,sinVal;
|
||||
|
||||
var change = (this.destRotation - this.rotation);
|
||||
var absChange = Math.abs(change);
|
||||
|
||||
this.rotation += change * options.speed;
|
||||
if ( absChange < 0.001 ) { this.rotation = this.destRotation; }
|
||||
var itemsLen = items.length;
|
||||
var spacing = (Math.PI / itemsLen) * 2;
|
||||
//var wrapStyle = null;
|
||||
var radians = this.rotation;
|
||||
var isMSIE = $.browser.msie;
|
||||
|
||||
// Turn off display. This can reduce repaints/reflows when making style and position changes in the loop.
|
||||
// See http://dev.opera.com/articles/view/efficient-javascript/?page=3
|
||||
this.innerWrapper.style.display = 'none';
|
||||
|
||||
var style;
|
||||
var px = 'px', reflHeight;
|
||||
var context = this;
|
||||
for (var i = 0; i<itemsLen ;i++)
|
||||
{
|
||||
item = items[i];
|
||||
|
||||
sinVal = funcSin(radians);
|
||||
|
||||
scale = ((sinVal+1) * smallRange) + minScale;
|
||||
|
||||
x = this.xCentre + (( (funcCos(radians) * this.xRadius) - (item.orgWidth*0.5)) * scale);
|
||||
y = this.yCentre + (( (sinVal * this.yRadius) ) * scale);
|
||||
|
||||
if (item.imageOK)
|
||||
{
|
||||
var img = item.image;
|
||||
w = img.width = item.orgWidth * scale;
|
||||
h = img.height = item.orgHeight * scale;
|
||||
img.style.left = x + px ;
|
||||
img.style.top = y + px;
|
||||
img.style.zIndex = "" + (scale * 100)>>0; // >>0 = Math.foor(). Firefox doesn't like fractional decimals in z-index.
|
||||
if (item.reflection !== null)
|
||||
{
|
||||
reflHeight = options.reflHeight * scale;
|
||||
style = item.reflection.element.style;
|
||||
style.left = x + px;
|
||||
style.top = y + h + options.reflGap * scale + px;
|
||||
style.width = w + px;
|
||||
if (isMSIE)
|
||||
{
|
||||
style.filter.finishy = (reflHeight / h * 100);
|
||||
}else
|
||||
{
|
||||
style.height = reflHeight + px;
|
||||
}
|
||||
}
|
||||
}
|
||||
radians += spacing;
|
||||
}
|
||||
// Turn display back on.
|
||||
this.innerWrapper.style.display = 'block';
|
||||
|
||||
// If we have a preceptable change in rotation then loop again next frame.
|
||||
if ( absChange >= 0.001 )
|
||||
{
|
||||
this.controlTimer = setTimeout( function(){context.updateAll();},this.timeDelay);
|
||||
}else
|
||||
{
|
||||
// Otherwise just stop completely.
|
||||
this.stop();
|
||||
}
|
||||
}; // END updateAll
|
||||
|
||||
// Create an Item object for each image
|
||||
// func = function(){return;ctx.updateAll();} ;
|
||||
|
||||
// Check if images have loaded. We need valid widths and heights for the reflections.
|
||||
this.checkImagesLoaded = function()
|
||||
{
|
||||
var i;
|
||||
for(i=0;i<images.length;i++) {
|
||||
if ( (images[i].width === undefined) || ( (images[i].complete !== undefined) && (!images[i].complete) ))
|
||||
{
|
||||
return;
|
||||
}
|
||||
}
|
||||
for(i=0;i<images.length;i++) {
|
||||
items.push( new Item( images[i], options ) );
|
||||
$(images[i]).data('itemIndex',i);
|
||||
}
|
||||
// If all images have valid widths and heights, we can stop checking.
|
||||
clearInterval(this.tt);
|
||||
this.showFrontText();
|
||||
this.autoRotate();
|
||||
this.updateAll();
|
||||
|
||||
};
|
||||
|
||||
this.tt = setInterval( function(){ctx.checkImagesLoaded();},50);
|
||||
}; // END Controller object
|
||||
|
||||
// The jQuery plugin part. Iterates through items specified in selector and inits a Controller class for each one.
|
||||
$.fn.CloudCarousel = function(options) {
|
||||
|
||||
this.each( function() {
|
||||
|
||||
options = $.extend({}, {
|
||||
reflHeight:0,
|
||||
reflOpacity:0.5,
|
||||
reflGap:0,
|
||||
minScale:0.5,
|
||||
xPos:0,
|
||||
yPos:0,
|
||||
xRadius:0,
|
||||
yRadius:0,
|
||||
altBox:null,
|
||||
titleBox:null,
|
||||
FPS: 30,
|
||||
autoRotate: 'no',
|
||||
autoRotateDelay: 1500,
|
||||
speed:0.2,
|
||||
mouseWheel: false,
|
||||
bringToFront: false
|
||||
},options );
|
||||
// Create a Controller for each carousel.
|
||||
$(this).data('cloudcarousel', new Controller( this, $('.cloudcarousel',$(this)), options) );
|
||||
});
|
||||
return this;
|
||||
};
|
||||
|
||||
})(jQuery);
|
|
@ -98,6 +98,15 @@ a {
|
|||
border:2px solid #000;
|
||||
}
|
||||
|
||||
.onConsole .new_map {
|
||||
display:none;
|
||||
}
|
||||
|
||||
.onConsole .new_map button, .onConsole .new_map input.add {
|
||||
float:left;
|
||||
margin-top:5px;
|
||||
}
|
||||
|
||||
.invite p {
|
||||
margin:10px 0;
|
||||
}
|
||||
|
@ -114,12 +123,45 @@ a {
|
|||
right:3px;
|
||||
}
|
||||
|
||||
.anypage .new_item {
|
||||
width:300px;
|
||||
margin:-40px 0 0 -50px;
|
||||
}
|
||||
|
||||
.anypage .new_item,
|
||||
.anypage .new_synapse {
|
||||
display: none;
|
||||
display: block;
|
||||
position: absolute;
|
||||
background: url('bg.png');
|
||||
border: 2px solid #000;
|
||||
}
|
||||
|
||||
.anypage #item_name {
|
||||
width:200px;
|
||||
position:absolute;
|
||||
top:40px;
|
||||
left:50px;
|
||||
z-index:9999;
|
||||
}
|
||||
|
||||
#metacodeImg {
|
||||
height:120px;
|
||||
}
|
||||
|
||||
#metacodeImgTitle {
|
||||
color:#000;
|
||||
float:left;
|
||||
width:120px;
|
||||
text-align:center;
|
||||
margin-left:90px;
|
||||
}
|
||||
|
||||
#left-but {
|
||||
position:absolute;
|
||||
left:50px;
|
||||
}
|
||||
|
||||
#right-but {
|
||||
position:absolute;
|
||||
right:50px;
|
||||
}
|
||||
|
||||
label, select, input, textarea {
|
||||
|
@ -160,7 +202,7 @@ input[type="submit"] {
|
|||
}
|
||||
|
||||
.main {
|
||||
overflow:hidden;
|
||||
/*overflow:hidden; */
|
||||
}
|
||||
|
||||
/* --- top options --*/
|
||||
|
@ -170,26 +212,13 @@ input[type="submit"] {
|
|||
top:0;
|
||||
right:0;
|
||||
z-index:10;
|
||||
height:38px;
|
||||
width:auto;
|
||||
background: url(topbg2.png) repeat-x top left;
|
||||
border-radius:15px;
|
||||
margin:10px;
|
||||
}
|
||||
|
||||
.headertop ul {
|
||||
display:block;
|
||||
float: right;
|
||||
}
|
||||
|
||||
.headertop ul li {
|
||||
display:block;
|
||||
float:right;
|
||||
margin:10px 5px 0 5px;
|
||||
}
|
||||
|
||||
.headertop ul li a {
|
||||
color:#FFF;
|
||||
.headertop button {
|
||||
float:left;
|
||||
}
|
||||
|
||||
.wrapper {
|
||||
|
@ -198,8 +227,11 @@ input[type="submit"] {
|
|||
margin:0 0;
|
||||
}
|
||||
|
||||
.wrapper h1 {
|
||||
margin-top:50px;
|
||||
.wrapper h1.index {
|
||||
position:absolute;
|
||||
top:50px;
|
||||
left:50px;
|
||||
z-index:9999;
|
||||
}
|
||||
|
||||
.nodemargin {
|
||||
|
@ -311,60 +343,12 @@ input[type="submit"] {
|
|||
margin:0 7px;
|
||||
}
|
||||
|
||||
.accountWrap,
|
||||
.createWrap,
|
||||
.exploreWrap {
|
||||
display:block;
|
||||
position:relative;
|
||||
cursor: pointer;
|
||||
#cards {
|
||||
margin:100px 0;
|
||||
}
|
||||
|
||||
#menus .account,
|
||||
#menus .create {
|
||||
display:none;
|
||||
position:absolute;
|
||||
right:0;
|
||||
z-index:12;
|
||||
width:auto;
|
||||
color: #67AF9F;
|
||||
white-space: nowrap;
|
||||
text-align: center;
|
||||
font-size: 16px;
|
||||
overflow: hidden;
|
||||
padding: 3px 8px;
|
||||
margin: 0;
|
||||
border: 2px solid #AAA;
|
||||
background: white;
|
||||
border-radius: 6px;
|
||||
-webkit-border-radius: 6px;
|
||||
-moz-border-radius: 6px;
|
||||
box-shadow: 0 2px rgba(0, 0, 0, 0.05), 0 -2px rgba(0, 0, 0, 0.05) inset;
|
||||
-webkit-box-shadow: 0 2px rgba(0, 0, 0, 0.05), 0 -2px rgba(0, 0, 0, 0.05) inset;
|
||||
-moz-box-shadow: 0 2px rgba(0, 0, 0, 0.05), 0 -2px rgba(0, 0, 0, 0.05) inset;
|
||||
background: -moz-linear-gradient( center top, rgba(255, 255, 255, 0) 50%, rgba(0, 0, 0, 0.03) 0% ) repeat scroll 0 0 white;
|
||||
background: -webkit-gradient( linear, 0% 0%, 0% 100%, from(white), to(rgba(0, 0, 0, 0.03)), color-stop(0.5, rgba(255, 255, 255, 0)), color-stop(0.5, rgba(0, 0, 0, 0.03)) ) repeat scroll 0 0 white;
|
||||
border: 1px solid rgba(0, 0, 0, 0.2);
|
||||
}
|
||||
|
||||
#menus ul li {
|
||||
margin:0;
|
||||
clear:both;
|
||||
float:none;
|
||||
list-style-type:none;
|
||||
display:block;
|
||||
padding:3px;
|
||||
text-align:center;
|
||||
border-top:1px solid #999;
|
||||
}
|
||||
#menus ul li.first {
|
||||
border:none;
|
||||
}
|
||||
#menus ul li a:hover {
|
||||
color:#2d6a5d;
|
||||
}
|
||||
#menus ul li a {
|
||||
color: #67AF9F;
|
||||
display:block;
|
||||
#cards p.empty {
|
||||
margin-left:50px;
|
||||
}
|
||||
|
||||
/* --- styling the FIND section ---*/
|
||||
|
@ -406,6 +390,10 @@ input[type="submit"] {
|
|||
float:left;
|
||||
}
|
||||
|
||||
.findWhereField.inCommons {
|
||||
color:#67be5f;
|
||||
}
|
||||
|
||||
.sideOption select,
|
||||
.sideOption span {
|
||||
float:left;
|
||||
|
@ -498,7 +486,6 @@ input[type="submit"] {
|
|||
z-index:12;
|
||||
display:block;
|
||||
width:auto;
|
||||
overflow: hidden;
|
||||
padding: 3px 8px;
|
||||
margin: -0.75em 0 0;
|
||||
}
|
||||
|
@ -519,3 +506,49 @@ input[type="submit"] {
|
|||
float:left;
|
||||
margin-left: 7px;
|
||||
}
|
||||
|
||||
.footer .menu {
|
||||
display:block;
|
||||
position:absolute;
|
||||
bottom:40px;
|
||||
left:0;
|
||||
height:0px;
|
||||
z-index:12;
|
||||
width:124px;
|
||||
color: #67AF9F;
|
||||
white-space: nowrap;
|
||||
text-align: center;
|
||||
font-size: 16px;
|
||||
overflow: hidden;
|
||||
padding: 0 8px;
|
||||
margin: 0;
|
||||
background: white;
|
||||
border-radius: 6px;
|
||||
-webkit-border-radius: 6px;
|
||||
-moz-border-radius: 6px;
|
||||
box-shadow: 0 2px rgba(0, 0, 0, 0.05), 0 -2px rgba(0, 0, 0, 0.05) inset;
|
||||
-webkit-box-shadow: 0 2px rgba(0, 0, 0, 0.05), 0 -2px rgba(0, 0, 0, 0.05) inset;
|
||||
-moz-box-shadow: 0 2px rgba(0, 0, 0, 0.05), 0 -2px rgba(0, 0, 0, 0.05) inset;
|
||||
background: url('bg.png') no-repeat 0 0;
|
||||
}
|
||||
|
||||
.footer ul li {
|
||||
margin:0;
|
||||
clear:both;
|
||||
float:none;
|
||||
list-style-type:none;
|
||||
display:block;
|
||||
padding:3px;
|
||||
text-align:center;
|
||||
border-top:1px solid #999;
|
||||
}
|
||||
.footer ul li.first {
|
||||
border:none;
|
||||
}
|
||||
.footer ul li a:hover {
|
||||
color:#2d6a5d;
|
||||
}
|
||||
.footer ul li a {
|
||||
color: #67AF9F;
|
||||
display:block;
|
||||
}
|
||||
|
|
|
@ -14,9 +14,9 @@ class ItemsController < ApplicationController
|
|||
|
||||
if params[:user_id]
|
||||
@user = User.find(params[:user_id])
|
||||
@items = Item.visibleToUser(@current, @user)
|
||||
@items = Item.order("name ASC").visibleToUser(@current, @user)
|
||||
elsif
|
||||
@items = Item.visibleToUser(@current, nil)
|
||||
@items = Item.order("name ASC").visibleToUser(@current, nil)
|
||||
end
|
||||
|
||||
respond_with(@user,@items)
|
||||
|
@ -62,8 +62,7 @@ class ItemsController < ApplicationController
|
|||
@item.desc = ""
|
||||
@item.link = ""
|
||||
@item.permission = 'commons'
|
||||
@item.item_category = ItemCategory.all.first
|
||||
#@item.item_category = ItemCategory.find(params[:category])
|
||||
@item.item_category = ItemCategory.find_by_name(params[:item][:metacode])
|
||||
@item.user = @user
|
||||
|
||||
@item.save
|
||||
|
|
|
@ -5,24 +5,8 @@ class MainController < ApplicationController
|
|||
|
||||
respond_to :html, :js, :json
|
||||
|
||||
#homepage pick a random map and show it
|
||||
def console
|
||||
|
||||
@current = current_user
|
||||
|
||||
if authenticated?
|
||||
|
||||
else
|
||||
@maps = Map.visibleToUser(@current, nil)
|
||||
@map = @maps.sample
|
||||
|
||||
@mapjson = @map.self_as_json(@current).html_safe if @map
|
||||
|
||||
respond_to do |format|
|
||||
format.html { respond_with(@map) }
|
||||
format.json { respond_with(@mapjson) }
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
def search
|
||||
|
@ -40,27 +24,6 @@ class MainController < ApplicationController
|
|||
end
|
||||
end
|
||||
|
||||
def metamap
|
||||
@current = current_user
|
||||
|
||||
@item = Item.visibleToUser(@current, nil).first
|
||||
@alljson = all_as_json(@current).html_safe
|
||||
|
||||
respond_to do |format|
|
||||
format.html { respond_with(@item) }
|
||||
format.json { respond_with(@alljson) }
|
||||
end
|
||||
end
|
||||
|
||||
def allmaps
|
||||
@current = current_user
|
||||
@maps = Map.visibleToUser(@current, nil)
|
||||
|
||||
respond_to do |format|
|
||||
format.html { respond_with(@maps) }
|
||||
end
|
||||
end
|
||||
|
||||
def invite
|
||||
@user = current_user
|
||||
|
||||
|
|
|
@ -14,9 +14,9 @@ class MapsController < ApplicationController
|
|||
|
||||
if params[:user_id]
|
||||
@user = User.find(params[:user_id])
|
||||
@maps = Map.visibleToUser(@current, @user)
|
||||
@maps = Map.order("name ASC").visibleToUser(@current, @user)
|
||||
elsif
|
||||
@maps = Map.visibleToUser(@current, nil)
|
||||
@maps = Map.order("name ASC").visibleToUser(@current, nil)
|
||||
end
|
||||
|
||||
respond_with(@maps,@user)
|
||||
|
@ -52,14 +52,38 @@ class MapsController < ApplicationController
|
|||
def create
|
||||
|
||||
@user = current_user
|
||||
@map = Map.create(params[:map])
|
||||
@map.user = @user
|
||||
@map.arranged = false
|
||||
@map.save
|
||||
|
||||
respond_to do |format|
|
||||
format.html { respond_with(@user, location: map_path(@map)) }
|
||||
end
|
||||
@map = Map.new()
|
||||
@map.name = params[:map][:name]
|
||||
@map.desc = params[:map][:desc]
|
||||
@map.permission = params[:map][:permission]
|
||||
@map.user = @user
|
||||
@map.arranged = false
|
||||
@map.save
|
||||
|
||||
if params[:map][:topicsToMap]
|
||||
@all = params[:map][:topicsToMap]
|
||||
@all = @all.split(',')
|
||||
@all.each do |item|
|
||||
item = item.split('/')
|
||||
@mapping = Mapping.new()
|
||||
@mapping.category = "Item"
|
||||
@mapping.user = @user
|
||||
@mapping.map = @map
|
||||
@mapping.item = Item.find(item[0])
|
||||
@mapping.xloc = item[1]
|
||||
@mapping.yloc = item[2]
|
||||
@mapping.save
|
||||
end
|
||||
@map.arranged = true
|
||||
@map.save
|
||||
respond_to do |format|
|
||||
format.js { respond_with(@map) }
|
||||
end
|
||||
else
|
||||
respond_to do |format|
|
||||
format.html { respond_with(@user, location: map_path(@map)) }
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
# GET maps/:id/edit
|
||||
|
@ -114,7 +138,7 @@ class MapsController < ApplicationController
|
|||
end
|
||||
end
|
||||
|
||||
# DELETE /users/:user_id/maps/:id
|
||||
# DELETE maps/:id
|
||||
def destroy
|
||||
@map = Map.find(params[:id])
|
||||
|
||||
|
|
|
@ -22,11 +22,10 @@ class SessionsController < ApplicationController
|
|||
|
||||
@user = User.new
|
||||
|
||||
@connor = User.find(555629996)
|
||||
@map = Map.first(:conditions => [ "id = ?", 5])
|
||||
@map = Map.first(:conditions => [ "id = ?", 5])
|
||||
|
||||
if @map
|
||||
respond_with(@user, @session, location: user_map_url(@connor,@map)) do |format|
|
||||
respond_with(@user, @session, location: map_url(@map)) do |format|
|
||||
end
|
||||
else
|
||||
respond_with(@user, @session, location: root_url) do |format|
|
||||
|
|
|
@ -1,9 +1,15 @@
|
|||
<div class="anypage">
|
||||
<%= form_for Item.new, url: items_url, remote: true do |form| %>
|
||||
<div id="metacodeImg"><img class="cloudcarousel" width="40" height="40" src="/assets/action.png" alt="Action" title="Action"/><img class="cloudcarousel" width="40" height="40" src="/assets/activity.png" alt="Activity" title="Activity"/><img class="cloudcarousel" width="40" height="40" src="/assets/bizarre.png" alt="Bizarre" title="Bizarre"/><img class="cloudcarousel" width="40" height="40" src="/assets/catalyst.png" alt="Catalyst" title="Catalyst"/><img class="cloudcarousel" width="40" height="40" src="/assets/closed.png" alt="Closed" title="Closed"/><img class="cloudcarousel" width="40" height="40" src="/assets/experience.png" alt="Experience" title="Experience"/><img class="cloudcarousel" width="40" height="40" src="/assets/futuredev.png" alt="Future Dev" title="Future Dev"/><img class="cloudcarousel" width="40" height="40" src="/assets/group.png" alt="Group" title="Group"/><img class="cloudcarousel" width="40" height="40" src="/assets/idea.png" alt="Idea" title="Idea"/><img class="cloudcarousel" width="40" height="40" src="/assets/implication.png" alt="Implication" title="Implication"/><img class="cloudcarousel" width="40" height="40" src="/assets/insight.png" alt="Insight" title="Insight"/><img class="cloudcarousel" width="40" height="40" src="/assets/intention.png" alt="Intention" title="Intention"/><img class="cloudcarousel" width="40" height="40" src="/assets/knowledge.png" alt="Knowledge" title="Knowledge"/><img class="cloudcarousel" width="40" height="40" src="/assets/location.png" alt="Location" title="Location"/><img class="cloudcarousel" width="40" height="40" src="/assets/openissue.png" alt="Open Issue" title="Open Issue"/><img class="cloudcarousel" width="40" height="40" src="/assets/opinion.png" alt="Opinion" title="Opinion"/><img class="cloudcarousel" width="40" height="40" src="/assets/opportunity.png" alt="Opportunity" title="Opportunity"/><img class="cloudcarousel" width="40" height="40" src="/assets/person.png" alt="Person" title="Person"/><img class="cloudcarousel" width="40" height="40" src="/assets/platform.png" alt="Platform" title="Platform"/><img class="cloudcarousel" width="40" height="40" src="/assets/problem.png" alt="Problem" title="Problem"/><img class="cloudcarousel" width="40" height="40" src="/assets/question.png" alt="Question" title="Question"/><img class="cloudcarousel" width="40" height="40" src="/assets/reference.png" alt="Reference" title="Reference"/><img class="cloudcarousel" width="40" height="40" src="/assets/requirement.png" alt="Requirement" title="Requirement"/><img class="cloudcarousel" width="40" height="40" src="/assets/resource.png" alt="Resource" title="Resource"/><img class="cloudcarousel" width="40" height="40" src="/assets/role.png" alt="Role" title="Role"/><img class="cloudcarousel" width="40" height="40" src="/assets/task.png" alt="Task" title="Task"/><img class="cloudcarousel" width="40" height="40" src="/assets/tool.png" alt="Tool" title="Tool"/><img class="cloudcarousel" width="40" height="40" src="/assets/trajectory.png" alt="Trajectory" title="Trajectory"/></div>
|
||||
<%= form.autocomplete_field :name, autocomplete_item_name_items_path, :placeholder => "What is the name of your topic?" %>
|
||||
<%= form.hidden_field :metacode, :value => "Action" %>
|
||||
<%= form.hidden_field :x, :value => 0 %>
|
||||
<%= form.hidden_field :y, :value => 0 %>
|
||||
<%= form.hidden_field :grabItem, :value => "null" %>
|
||||
<%= form.hidden_field :addSynapse, :value => false %>
|
||||
<!--<input id="left-but" type="button" value="Left" />-->
|
||||
<div id="metacodeImgTitle"></div>
|
||||
<!--<input id="right-but" type="button" value="Right" />-->
|
||||
<div class="clearfloat"></div>
|
||||
<% end %>
|
||||
</div>
|
||||
|
|
|
@ -26,9 +26,11 @@ if (!$.isEmptyObject(Mconsole.graph.nodes)) {
|
|||
temp.setData('dim', 40, 'end');
|
||||
|
||||
if (gType == "centered") {
|
||||
temp.setPos(new $jit.Polar(5.54, 347.6), 'current');
|
||||
temp.setPos(new $jit.Polar(5.54, 347.6), 'start');
|
||||
temp.setPos(new $jit.Polar(5.54, 347.6), 'end');
|
||||
var tempPos = new $jit.Complex(x, y);
|
||||
tempPos = tempPos.toPolar();
|
||||
temp.setPos(tempPos, 'current');
|
||||
temp.setPos(tempPos, 'start');
|
||||
temp.setPos(tempPos, 'end');
|
||||
}
|
||||
else if (gType == "arranged" || gType == "chaotic") {
|
||||
temp.setData('xloc',0);
|
||||
|
@ -48,7 +50,7 @@ if (!$.isEmptyObject(Mconsole.graph.nodes)) {
|
|||
modes: ['node-property:dim'],
|
||||
duration: 500,
|
||||
onComplete: function() {
|
||||
renderMidArrow({ x: tempNode.pos.x, y: tempNode.pos.y }, { x: temp.pos.x, y: temp.pos.y }, 13, false, Mconsole.canvas);
|
||||
renderMidArrow({ x: tempNode.pos.getc().x, y: tempNode.pos.getc().y }, { x: temp.pos.getc().x, y: temp.pos.getc().y }, 13, false, Mconsole.canvas);
|
||||
Mconsole.fx.plotNode(tempNode, Mconsole.canvas);
|
||||
Mconsole.fx.plotNode(temp, Mconsole.canvas);
|
||||
tempNode = null;
|
||||
|
|
|
@ -1,15 +1,11 @@
|
|||
<h1>Topics</h1>
|
||||
<h1 class="index"><% if @user %><%= @user.name %>'s<% end %> Topics</h1>
|
||||
|
||||
<div class="items" id="cards">
|
||||
<% @items.each do |item| %>
|
||||
<%= render item %>
|
||||
<% end %>
|
||||
<% if @items.empty? %>
|
||||
<p><br>Shucks, there are no topics.<p>
|
||||
<p class="empty"><br>Shucks, there are no topics. <% if authenticated? %><%= link_to "Create some if you want.", console_url %><% end %></p>
|
||||
<% end %>
|
||||
</div>
|
||||
<div class="clearfloat"></div>
|
||||
|
||||
<% if authenticated? %>
|
||||
<%= render :partial => 'items/new' %>
|
||||
<% end %>
|
||||
<div class="clearfloat"></div>
|
|
@ -32,6 +32,7 @@
|
|||
</script>
|
||||
|
||||
<% if authenticated? %>
|
||||
<%= render :partial => 'items/new' %>
|
||||
<%= render :partial => 'synapses/new' %>
|
||||
<% end %>
|
||||
|
||||
|
|
|
@ -7,6 +7,11 @@
|
|||
var userid = "<%= user.id %>";
|
||||
var username = "<%= user.name %>";
|
||||
</script>
|
||||
<% else %>
|
||||
<script type="text/javascript">
|
||||
var userid = null;
|
||||
var username = null;
|
||||
</script>
|
||||
<% end %>
|
||||
<%= stylesheet_link_tag "application", :media => "all" %>
|
||||
<%= javascript_include_tag "application" %>
|
||||
|
@ -19,48 +24,41 @@
|
|||
<body>
|
||||
<%= content_tag :div, class: authenticated? ? "main authenticated" : "main unauthenticated" do %>
|
||||
|
||||
<div class="headertop">
|
||||
<% unless authenticated? %>
|
||||
<ul id="menus">
|
||||
<li><%= link_to "Login", new_session_path, id: "Login" %></li>
|
||||
</ul>
|
||||
<% end %>
|
||||
<% if authenticated? %>
|
||||
<ul id="menus">
|
||||
<li class="accountWrap">
|
||||
<p id="account">ACCOUNT</p>
|
||||
<ul class="account">
|
||||
<li class="first"><%= link_to "My Topics", user_items_url(user) %></li>
|
||||
<li><%= link_to "My Synapses", user_synapses_url(user) %></li>
|
||||
<li><%= link_to "My Maps", user_maps_url(user) %></li>
|
||||
<li><%= link_to "Invite", invite_path %></li>
|
||||
<li><%= link_to "Settings", edit_user_url(user) %></li>
|
||||
<% unless Map.first(:conditions => [ "id = ?", 7]).nil? %>
|
||||
<li><%= link_to "Feedback", map_path(Map.find(7)) %></li>
|
||||
<% end %>
|
||||
<li class="last"><%= link_to "Logout", session_path, method: 'delete', id: "Login" %></li>
|
||||
</ul>
|
||||
</li>
|
||||
<li>|</li>
|
||||
<li class="createWrap">
|
||||
<p id="create">CREATE</p>
|
||||
<ul class="create">
|
||||
<li class="first"><%= link_to "Add Map", new_map_path, id: "newmap" %></li>
|
||||
</ul>
|
||||
</li>
|
||||
</ul>
|
||||
<% end %>
|
||||
</div>
|
||||
<div class="clearfloat"></div>
|
||||
|
||||
<div class="wrapper" id="wrapper">
|
||||
<div class="wrapper" id="wrapper">
|
||||
<%= yield %>
|
||||
</div>
|
||||
|
||||
<div class="footer">
|
||||
<div class="logo"><h1 id="mainTitle"><%= link_to "metamaps", root_url %></h1><div id="beta">beta</div></div>
|
||||
<div class="logo">
|
||||
<% unless authenticated? %>
|
||||
<ul class="menu">
|
||||
<li class="first"><%= link_to "Console", console_url %></li>
|
||||
<li><%= link_to "Topics", items_url %></li>
|
||||
<li><%= link_to "Synapses", synapses_url %></li>
|
||||
<li><%= link_to "Maps", maps_url %></li>
|
||||
<li class="last"><%= link_to "Login", new_session_path, id: "Login" %></li>
|
||||
</ul>
|
||||
<% end %>
|
||||
<% if authenticated? %>
|
||||
<ul class="menu">
|
||||
<li class="first"><%= link_to "Console", console_url %></li>
|
||||
<li><%= link_to "Create Map", new_map_url %></li>
|
||||
<li><%= link_to "My Topics", user_items_url(user) %></li>
|
||||
<li><%= link_to "My Synapses", user_synapses_url(user) %></li>
|
||||
<li><%= link_to "My Maps", user_maps_url(user) %></li>
|
||||
<li><%= link_to "Invite", invite_path %></li>
|
||||
<li><%= link_to "Settings", edit_user_url(user) %></li>
|
||||
<% unless Map.first(:conditions => [ "id = ?", 7]).nil? %>
|
||||
<li><%= link_to "Feedback", map_path(Map.find(7)) %></li>
|
||||
<% end %>
|
||||
<li class="last"><%= link_to "Logout", session_path, method: 'delete', id: "Login" %></li>
|
||||
</ul>
|
||||
<% end %>
|
||||
<h1 id="mainTitle"><%= link_to "metamaps", root_url %></h1><div id="beta">beta</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<% end %>
|
||||
<%= render :partial => 'layouts/ga' if Rails.env.production? %>
|
||||
</body>
|
||||
</html>
|
|
@ -1,43 +1,8 @@
|
|||
<% if @map %>
|
||||
<div class="focus">
|
||||
<div class="focusleft">
|
||||
<p># of Topics: <%= @map.items.count %></p>
|
||||
<p># of Synapses: <%= @map.synapses.count %></p>
|
||||
</div>
|
||||
<div class="focusmiddle">
|
||||
<h1 class="title"><%= @map.name %></h1>
|
||||
<div class="desc">
|
||||
<p><%= @map.desc %></p>
|
||||
</div>
|
||||
</div>
|
||||
<div class="focusright">
|
||||
<div class="link"><p>Permissions:<%= @map.permission %></p></div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="clearfloat nodemargin"></div>
|
||||
|
||||
<div class="maps" id="container">
|
||||
<div id="center-container">
|
||||
<div id="infovis"></div>
|
||||
<div class="headertop">
|
||||
<% if authenticated? %><button onclick="saveToMap();">Save to Map</button><% end %>
|
||||
<button onclick='clearCanvas();'>Clear Canvas</button>
|
||||
</div>
|
||||
</div>
|
||||
<div class="clearfloat"></div>
|
||||
|
||||
<script>
|
||||
json = <%= @mapjson %>;
|
||||
if (json.length > 0) {
|
||||
$(document).ready(function() {
|
||||
<% if (@map.arranged) %>
|
||||
initialize("arranged");
|
||||
<% else %>
|
||||
initialize("chaotic");
|
||||
<% end %>
|
||||
});
|
||||
|
||||
}
|
||||
</script>
|
||||
|
||||
<% elsif authenticated? %>
|
||||
<div class="clearfloat"></div>
|
||||
<div class="maps" id="container">
|
||||
<div id="center-container">
|
||||
<div id="infovis"></div>
|
||||
|
@ -47,6 +12,7 @@
|
|||
<% if authenticated? %>
|
||||
<%= render :partial => 'items/new' %>
|
||||
<%= render :partial => 'synapses/new' %>
|
||||
<%= render :partial => 'maps/new' %>
|
||||
<% end %>
|
||||
<script>
|
||||
//if (json.length > 0) {
|
||||
|
@ -55,15 +21,11 @@
|
|||
});
|
||||
//}
|
||||
</script>
|
||||
|
||||
<% else %>
|
||||
<h1><br>Shucks, there are no maps.<h1>
|
||||
<% end %>
|
||||
|
||||
<span id="closeFind">close</span>
|
||||
<form id="findWhere">
|
||||
<span class="findWhereField"><input type="checkbox" id="onCanvas"><p>On my Canvas</p></span>
|
||||
<span class="findWhereField"><input type="checkbox" id="inCommons" checked="checked"><p>In the Commons</p></span>
|
||||
<span class="findWhereField onCanvas"><input type="checkbox" id="onCanvas"><p>On my Canvas</p></span>
|
||||
<span class="findWhereField inCommons"><input type="checkbox" id="inCommons" checked="checked"><p>In the Commons</p></span>
|
||||
</form>
|
||||
<div class="sideOption" id="sideOptionFind">
|
||||
<span class="find_key">Find...</span>
|
||||
|
@ -132,4 +94,4 @@
|
|||
<%= text_field_tag(:topics_by_user_id, "", :id => "topicsByUser", :class => "getTopicsInput") %>
|
||||
<%= text_field_tag(:topics_by_map_id, "", :id => "topicsByMap", :class => "getTopicsInput") %>
|
||||
<% end %>
|
||||
</div>
|
||||
</div>
|
|
@ -3,8 +3,9 @@ $('.getTopicsInput').attr('value','');
|
|||
var h = Mconsole.canvas.element.clientHeight / 2;
|
||||
var w = Mconsole.canvas.element.clientWidth / 2;
|
||||
|
||||
var myX = -w + 100;
|
||||
var myX = -w + 400;
|
||||
var myY = -h + 100;
|
||||
var even = true;
|
||||
|
||||
<% @items.each do |item| %>
|
||||
if ($.isEmptyObject(Mconsole.graph.nodes)) {
|
||||
|
@ -13,12 +14,13 @@ var myY = -h + 100;
|
|||
var temp = Mconsole.graph.getNode('<%= item.id %>');
|
||||
temp.setData('dim', 1, 'start');
|
||||
temp.setData('dim', 25, 'end');
|
||||
temp.setData('isNew',true);
|
||||
temp.setData('inCommons',true);
|
||||
temp.setPos(new $jit.Complex(myX, myY), 'current');
|
||||
temp.setPos(new $jit.Complex(myX, myY), 'start');
|
||||
temp.setPos(new $jit.Complex(myX, myY), 'end');
|
||||
Mconsole.fx.plotNode(temp, Mconsole.canvas);
|
||||
myX += 100;
|
||||
even = !even;
|
||||
}
|
||||
else {
|
||||
var temp = Mconsole.graph.getNode('<%= item.id %>');
|
||||
|
@ -28,16 +30,25 @@ var myY = -h + 100;
|
|||
var temp = Mconsole.graph.getNode('<%= item.id %>');
|
||||
temp.setData('dim', 1, 'start');
|
||||
temp.setData('dim', 25, 'end');
|
||||
temp.setData('isNew',true);
|
||||
temp.setData('inCommons',true);
|
||||
if (myX > (w-100)) {
|
||||
myX = -w + 100;
|
||||
myY += 100
|
||||
myX = -w + 400;
|
||||
myY += 200;
|
||||
even = true;
|
||||
}
|
||||
if (even) {
|
||||
temp.setPos(new $jit.Complex(myX, myY), 'current');
|
||||
temp.setPos(new $jit.Complex(myX, myY), 'start');
|
||||
temp.setPos(new $jit.Complex(myX, myY), 'end');
|
||||
}
|
||||
else if (!even) {
|
||||
temp.setPos(new $jit.Complex(myX, myY+100), 'current');
|
||||
temp.setPos(new $jit.Complex(myX, myY+100), 'start');
|
||||
temp.setPos(new $jit.Complex(myX, myY+100), 'end');
|
||||
}
|
||||
temp.setPos(new $jit.Complex(myX, myY), 'current');
|
||||
temp.setPos(new $jit.Complex(myX, myY), 'start');
|
||||
temp.setPos(new $jit.Complex(myX, myY), 'end');
|
||||
Mconsole.fx.plotNode(temp, Mconsole.canvas);
|
||||
myX += 100;
|
||||
even = !even;
|
||||
}
|
||||
}
|
||||
<% end %>
|
||||
|
|
15
app/views/maps/_new.html.erb
Normal file
|
@ -0,0 +1,15 @@
|
|||
<div class="onConsole">
|
||||
<%= form_for @map || Map.new, url: maps_url, remote: true do |form|%>
|
||||
<h3>Save to Map</h3>
|
||||
<label for="map_name">Name</label>
|
||||
<%= form.text_field :name %>
|
||||
<label for="map_desc">Description</label>
|
||||
<%= form.text_area :desc, class: "description", :rows => 5 %>
|
||||
<label for="map_permission">Permission</label>
|
||||
<%= form.select(:permission, options_for_select(['commons', 'public', 'private'])) %>
|
||||
<%= form.hidden_field :topicsToMap, :value => 0 %>
|
||||
<%= form.submit "Save", class: "add" %>
|
||||
<button onclick="$('#new_map').fadeOut('fast'); event.preventDefault();">Cancel</button>
|
||||
<div class="clearfloat"></div>
|
||||
<% end %>
|
||||
</div>
|
|
@ -1,9 +1,16 @@
|
|||
<div class="anypage">
|
||||
<%= form_for Item.new, url: items_url, remote: true do |form| %>
|
||||
<div id="metacodeImg"><img class="cloudcarousel" width="40" height="40" src="/assets/action.png" alt="Action" title="Action"/><img class="cloudcarousel" width="40" height="40" src="/assets/activity.png" alt="Activity" title="Activity"/><img class="cloudcarousel" width="40" height="40" src="/assets/bizarre.png" alt="Bizarre" title="Bizarre"/><img class="cloudcarousel" width="40" height="40" src="/assets/catalyst.png" alt="Catalyst" title="Catalyst"/><img class="cloudcarousel" width="40" height="40" src="/assets/closed.png" alt="Closed" title="Closed"/><img class="cloudcarousel" width="40" height="40" src="/assets/experience.png" alt="Experience" title="Experience"/><img class="cloudcarousel" width="40" height="40" src="/assets/futuredev.png" alt="Future Dev" title="Future Dev"/><img class="cloudcarousel" width="40" height="40" src="/assets/group.png" alt="Group" title="Group"/><img class="cloudcarousel" width="40" height="40" src="/assets/idea.png" alt="Idea" title="Idea"/><img class="cloudcarousel" width="40" height="40" src="/assets/implication.png" alt="Implication" title="Implication"/><img class="cloudcarousel" width="40" height="40" src="/assets/insight.png" alt="Insight" title="Insight"/><img class="cloudcarousel" width="40" height="40" src="/assets/intention.png" alt="Intention" title="Intention"/><img class="cloudcarousel" width="40" height="40" src="/assets/knowledge.png" alt="Knowledge" title="Knowledge"/><img class="cloudcarousel" width="40" height="40" src="/assets/location.png" alt="Location" title="Location"/><img class="cloudcarousel" width="40" height="40" src="/assets/openissue.png" alt="Open Issue" title="Open Issue"/><img class="cloudcarousel" width="40" height="40" src="/assets/opinion.png" alt="Opinion" title="Opinion"/><img class="cloudcarousel" width="40" height="40" src="/assets/opportunity.png" alt="Opportunity" title="Opportunity"/><img class="cloudcarousel" width="40" height="40" src="/assets/person.png" alt="Person" title="Person"/><img class="cloudcarousel" width="40" height="40" src="/assets/platform.png" alt="Platform" title="Platform"/><img class="cloudcarousel" width="40" height="40" src="/assets/problem.png" alt="Problem" title="Problem"/><img class="cloudcarousel" width="40" height="40" src="/assets/question.png" alt="Question" title="Question"/><img class="cloudcarousel" width="40" height="40" src="/assets/reference.png" alt="Reference" title="Reference"/><img class="cloudcarousel" width="40" height="40" src="/assets/requirement.png" alt="Requirement" title="Requirement"/><img class="cloudcarousel" width="40" height="40" src="/assets/resource.png" alt="Resource" title="Resource"/><img class="cloudcarousel" width="40" height="40" src="/assets/role.png" alt="Role" title="Role"/><img class="cloudcarousel" width="40" height="40" src="/assets/task.png" alt="Task" title="Task"/><img class="cloudcarousel" width="40" height="40" src="/assets/tool.png" alt="Tool" title="Tool"/><img class="cloudcarousel" width="40" height="40" src="/assets/trajectory.png" alt="Trajectory" title="Trajectory"/></div>
|
||||
<%= form.autocomplete_field :name, autocomplete_item_name_items_path, :placeholder => "What is the name of your topic?" %>
|
||||
<%= form.hidden_field :metacode, :value => "Action" %>
|
||||
<%= form.hidden_field :x, :value => 0 %>
|
||||
<%= form.hidden_field :y, :value => 0 %>
|
||||
<%= form.hidden_field :map, :value => @map.id %>
|
||||
<%= form.hidden_field :grabItem, :value => "null" %>
|
||||
<%= form.hidden_field :addSynapse, :value => false %>
|
||||
<!--<input id="left-but" type="button" value="Left" />-->
|
||||
<div id="metacodeImgTitle"></div>
|
||||
<!--<input id="right-but" type="button" value="Right" />-->
|
||||
<div class="clearfloat"></div>
|
||||
<% end %>
|
||||
</div>
|
13
app/views/maps/create.js.erb
Normal file
|
@ -0,0 +1,13 @@
|
|||
$('#map_name').val('');
|
||||
$('#map_desc').val('');
|
||||
$('#map_permission').val('commons');
|
||||
$('#map_topicsToMap').val('0');
|
||||
|
||||
var tempForm = $('#new_map').html();
|
||||
$('#new_map').html("Success! Do you want to <br> <a href='/maps/" + '<%= @map.id %>' + "'>Go to your new map?</a><br>or<br><a href='javascript:closeIt(); event.preventDefault();'>Stay on the Console?</a>");
|
||||
|
||||
function closeIt() {
|
||||
$('#new_map').fadeOut('fast', function(){
|
||||
$('#new_map').html(tempForm);
|
||||
});
|
||||
}
|
|
@ -1,11 +1,11 @@
|
|||
<h1>Maps</h1>
|
||||
<h1 class="index"><% if @user %><%= @user.name %>'s<% end %> Maps</h1>
|
||||
|
||||
<div class="maps" id="cards">
|
||||
<% @maps.each do |map| %>
|
||||
<%= render map %>
|
||||
<% end %>
|
||||
<% if @maps.empty? %>
|
||||
<p><br>Shucks, there are no maps.<p>
|
||||
<p class="empty"><br>Shucks, there are no maps. <% if authenticated? %><%= link_to "Create one if you want.", new_map_url %><% end %></p>
|
||||
<% end %>
|
||||
</div>
|
||||
<div class="clearfloat"></div>
|
|
@ -42,6 +42,11 @@
|
|||
<% end %>
|
||||
});
|
||||
}
|
||||
else {
|
||||
$(document).ready(function() {
|
||||
initialize("chaotic", true);
|
||||
});
|
||||
}
|
||||
</script>
|
||||
|
||||
<%= render :partial => 'newtopic' %>
|
||||
|
|
|
@ -1,3 +1,5 @@
|
|||
<h1 class="index"><% if @user %><%= @user.name %>'s<% end %> Synapses</h1>
|
||||
|
||||
<div class="synapses" id="container">
|
||||
<div id="center-container">
|
||||
<div id="infovis"></div>
|
||||
|
|
|
@ -2,7 +2,7 @@ ISSAD::Application.routes.draw do
|
|||
|
||||
root to: 'main#console', via: :get
|
||||
|
||||
match 'metamap', to: 'main#metamap', via: :get, as: :metamap
|
||||
match 'console', to: 'main#console', via: :get, as: :console
|
||||
|
||||
match 'invite', to: 'main#invite', via: :get, as: :invite
|
||||
|
||||
|
|