Example #1
0
		function createPaletteEntry(title, metadata) {
			return shapesFactory.createNode({
				'renderService': renderService,
				'paper': palette,
				'metadata': metadata
			});
		}
Example #2
0
		function handleDrag(event) {
			// TODO offsetX/Y not on firefox
			//$log.debug("tracking move: x="+event.pageX+",y="+event.pageY);
			if (clickedElement && clickedElement.attr('metadata')) {
				if (!viewBeingDragged) {
					var dataOfClickedElement = clickedElement.attr('metadata');
					// custom div if not already built.
					$('<div>', {
						id: 'palette-floater'
					}).appendTo($('body'));
					var floatergraph = new joint.dia.Graph();
					floatergraph.attributes.type = joint.shapes.flo.FEEDBACK_TYPE;
					var floaterpaper = new joint.dia.Paper({
						el: $('#palette-floater'),
						gridSize:10,
						model: floatergraph,
						height: 400,
						width: 200,
						validateMagnet: function() {
							return false;
						},
						validateConnection: function() {
							return false;
						}
					});
					// TODO float thing needs to be bigger otherwise icon label is missing
					// Initiative drag and drop - create draggable element
					var floaternode = shapesFactory.createNode({
						'renderService': renderService,
						'paper': floaterpaper,
						'graph': floatergraph,
						'metadata': dataOfClickedElement
					});
					var box = floaterpaper.findViewByModel(floaternode).getBBox();
					var size = floaternode.get('size');
					// Account for node real size including ports
					floaternode.translate(box.width - size.width, box.height - size.height);
					viewBeingDragged = floaterpaper.findViewByModel(floaternode);
					$('#palette-floater').offset({left:event.pageX+5,top:event.pageY+5});
//					trigger('dragStarted',{'dragged':viewBeingDragged,'x':x,'y':y});
				} else {
					$('#palette-floater').offset({left:event.pageX+5,top:event.pageY+5});
					trigger('drag',{'dragged':viewBeingDragged,'evt':event});

				}
			}
		}