Projekt

Obecné

Profil

« Předchozí | Další » 

Revize 70453f8a

Přidáno uživatelem Pavel Fidranský před více než 6 roky(ů)

excluded Vertex related archetypes highlighting

Zobrazit rozdíly:

sources/src/main/webapp/css/main.css
584 584
    display: inline-block;
585 585
}
586 586

  
587
.sidebar .node .required-counter,
588
.sidebar .node .provided-counter {
589
	fill: white;
590
	stroke: #000;
591
	stroke-width: 1;
592
}
593

  
594
.sidebar .node .required-counter > text,
595
.sidebar .node .provided-counter > text {
596
	fill: #000;
597
	stroke-width: 0;
587
.sidebar .node .related-archetype > text {
588
	font-size: 0.8em;
598 589
}
599 590

  
600
.sidebar .node--highlighted-required-neighbours .required-counter .lollipop {
601
	fill: red;
591
.sidebar .node .related-archetype > g {
592
	dominant-baseline: central;
602 593
}
603 594

  
604
.sidebar .node--highlighted-provided-neighbours .provided-counter .lollipop {
605
    fill: #5896ff;
595
.sidebar .node .related-archetype > line {
596
	stroke: #000;
606 597
}
607 598

  
608 599
.sidebar .group {
sources/src/main/webapp/js/components/floatingPoint.js
90 90
		position.y = (bbox.top - viewportPosition.y - app.headerHeight);
91 91

  
92 92
		if (node instanceof Vertex) {
93
			var inEdgeOffsetY = 15;
94
			var outEdgeOffsetY = 45;
93
			var edgeOffsetY = 10;
95 94
		} else if (node instanceof Group) {
96
			var inEdgeOffsetY = 40;
97
			var outEdgeOffsetY = 70;
95
			var edgeOffsetY = 40;
96
		} else {
97
			var edgeOffsetY = 0;
98 98
		}
99 99

  
100
		var archetypeList = Object.keys(node.getRelatedArchetypeMap()).map(function(archetypeIndex) {
101
			return parseInt(archetypeIndex);
102
		});
103
		var archetypeIconOrder;
104

  
100 105
		// redraw dependent edges
101 106
		inEdgeList.forEach(function(edge) {
107
			archetypeIconOrder = archetypeList.indexOf(edge.getFrom().archetype);
108

  
102 109
			edge.moveEnd(new Coordinates(
103 110
				position.x / app.zoom.scale,
104
				(position.y + inEdgeOffsetY) / app.zoom.scale,
111
				(position.y + edgeOffsetY + archetypeIconOrder * 20) / app.zoom.scale,
105 112
			));
106 113
		}, this);
107 114

  
108 115
		outEdgeList.forEach(function(edge) {
116
			archetypeIconOrder = archetypeList.indexOf(edge.getTo().archetype);
117

  
109 118
			edge.moveStart(new Coordinates(
110 119
				position.x / app.zoom.scale,
111
				(position.y + outEdgeOffsetY) / app.zoom.scale,
120
				(position.y + edgeOffsetY + archetypeIconOrder * 20) / app.zoom.scale,
112 121
			));
113 122
		}, this);
114 123
	};
sources/src/main/webapp/js/components/group.js
32 32
	var dimmed = false;
33 33

  
34 34
	var vertexList = [];
35
	var relatedArchetypeMap = {};
35 36

  
36 37
	/**
37 38
	 * Adds a new vertex to the group. The vertex is set as excluded and its DOM element is removed from document. Its edges are moved so that they end at the group.
......
151 152
		return [].concat(this.getInEdgeList(), this.getOutEdgeList());
152 153
	};
153 154

  
155
	/**
156
	 * @returns {object} Map with archetype indexes as keys and counters of their instances as values.
157
	 */
158
	this.getRelatedArchetypeMap = function() {
159
		return relatedArchetypeMap;
160
	};
161

  
154 162
	/**
155 163
	 * @returns {Coordinates} Current position of the group in graph.
156 164
	 */
sources/src/main/webapp/js/components/vertex.js
506 506
		});
507 507
		rootElement.appendChild(relatedArchetypeListContainer);
508 508

  
509
		var i = 0;
509
		var archetypeIconOrder = 0;
510 510
		for (var archetypeIndex in relatedArchetypeMap) {
511 511
			var relatedArchetype = app.utils.createSvgElement('g', {
512 512
				'class': 'related-archetype',
513
				'transform': `translate(${i * relatedArchetypeIconWidth}, 8)`,
513
				'transform': `translate(${archetypeIconOrder * relatedArchetypeIconWidth}, 8)`,
514 514
			});
515 515
			relatedArchetype.addEventListener('click', relatedArchetypeClick.bind(this, parseInt(archetypeIndex)));
516 516

  
......
518 518

  
519 519
			relatedArchetypeListContainer.appendChild(relatedArchetype);
520 520

  
521
			i++;
521
			archetypeIconOrder++;
522 522
		}
523 523

  
524 524
		// symbol list
......
548 548
		});
549 549
		rootElement.appendChild(svg);
550 550

  
551
		var group = app.dom.createSvgElement('g', {
552
			'transform': 'translate(60,10)',
551
		// related archetypes
552
		var relatedArchetypesGroup = app.dom.createSvgElement('g', {
553
			'transform': 'translate(10, 15)',
553 554
		});
554
		svg.appendChild(group);
555
		svg.appendChild(relatedArchetypesGroup);
555 556

  
556
		// related
557
		var i = 0;
557
		var archetypeIconOrder = 0;
558 558
		for (var archetypeIndex in relatedArchetypeMap) {
559 559
			var relatedArchetype = app.dom.createSvgElement('g', {
560 560
				'class': 'related-archetype',
561
				'transform': `translate(0, ${i * 20})`,
562
		});
563
			relatedArchetype.addEventListener('click', relatedArchetypeClick.bind(this, parseInt(archetypeIndex)));
564

  
565
			relatedArchetype.innerHTML = app.archetype.icon[app.archetype.vertex[archetypeIndex].name];
561
				'transform': `translate(0, ${archetypeIconOrder * 20})`,
562
			});
563
			relatedArchetypesGroup.appendChild(relatedArchetype);
566 564

  
567
			group.appendChild(relatedArchetype);
565
			// counter
566
			var relatedArchetypeCounter = app.dom.createSvgElement('text', {});
567
			relatedArchetypeCounter.appendChild(app.dom.createTextElement(relatedArchetypeMap[archetypeIndex]));
568
			relatedArchetype.appendChild(relatedArchetypeCounter);
568 569

  
569
			i++;
570
			// icon
571
			var relatedArchetypeIcon = app.dom.createSvgElement('g', {
572
				'transform': `translate(15, -10)`,
573
			});
574
			relatedArchetypeIcon.addEventListener('click', relatedArchetypeClick.bind(this, parseInt(archetypeIndex)));
575
			relatedArchetypeIcon.innerHTML = app.archetype.icon[app.archetype.vertex[archetypeIndex].name];
576
			relatedArchetype.appendChild(relatedArchetypeIcon);
577

  
578
			// line
579
			relatedArchetype.appendChild(app.dom.createSvgElement('line', {
580
				'x1': 30,
581
				'y1': -5,
582
				'x2': 36,
583
				'y2': -5,
584
			}));
585

  
586
			archetypeIconOrder++;
570 587
		}
571 588

  
572 589
		// name

Také k dispozici: Unified diff