Skip to content

Commit 574c59b

Browse files
author
Aaron Sillus
committed
Select-/FilterController for Aframe
-AframeCanvas(-Filter/-Select)Controller working -filter functions can be used via PackageExplorerController -new setup file "aframe.js" will be used for further testing instead of "blank.js" and activates the new Controllers
1 parent fcf0ff3 commit 574c59b

5 files changed

Lines changed: 498 additions & 3 deletions

File tree

ui/aframe.html

Lines changed: 10 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -48,11 +48,18 @@
4848
<link rel="stylesheet" href="libs/jqwidgets/styles/jqx.base.css" type="text/css" />
4949
<link rel="stylesheet" href="libs/jqwidgets/styles/jqx.metro.css" type="text/css" />
5050

51-
<script type="text/javascript" src="scripts/CanvasFilter/CanvasFilterController.js"></script>
51+
<!-- ztree -->
52+
<script type="text/javascript" src="libs/zTree_v3/js/jquery.ztree.core.js"></script>
53+
<script type="text/javascript" src="libs/zTree_v3/js/jquery.ztree.exhide.js"></script>
54+
<script type="text/javascript" src="libs/zTree_v3/js/jquery.ztree.excheck.js"></script>
55+
<link rel="stylesheet" href="libs/zTree_v3/css/zTreeStyle/zTreeStyle.css" type="text/css">
56+
<link rel="stylesheet" href="scripts/PackageExplorer/zt.css" type="text/css">
57+
58+
<script type="text/javascript" src="scripts/CanvasFilter/AframeCanvasFilterController.js"></script>
5259
<script type="text/javascript" src="scripts/CanvasMark/AframeCanvasMarkController.js"></script>
5360
<script type="text/javascript" src="scripts/CanvasFlyTo/CanvasFlyToController.js"></script>
5461
<script type="text/javascript" src="scripts/CanvasHover/AframeCanvasHoverController.js"></script>
55-
<script type="text/javascript" src="scripts/CanvasSelect/CanvasSelectController.js"></script>
62+
<script type="text/javascript" src="scripts/CanvasSelect/AframeCanvasSelectController.js"></script>
5663
<script type="text/javascript" src="scripts/CanvasResetView/CanvasResetViewController.js"></script>
5764
<script type="text/javascript" src="scripts/CanvasGrid/CanvasGridController.js"></script>
5865
<script type="text/javascript" src="scripts/RelationConnector/RelationConnectorController.js"></script>
@@ -79,7 +86,7 @@
7986
<link rel="stylesheet" href="Style.css" type="text/css" />
8087

8188
<!--setup-->
82-
<script type="text/javascript" src="setups/test/blank.js"></script>
89+
<script type="text/javascript" src="setups/test/aframe.js"></script>
8390

8491
</head>
8592
<body>
Lines changed: 160 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,160 @@
1+
var canvasFilterController = (function() {
2+
3+
let issueFilterId = "";
4+
let changeFrequency = 0;
5+
let issueFilter = "showAll";
6+
7+
function initialize(){
8+
}
9+
10+
function activate(){
11+
events.filtered.on.subscribe(onEntityFilter);
12+
events.tmpFiltered.on.subscribe(onEntityTmpFilter);
13+
events.filtered.off.subscribe(onEntityUnfilter);
14+
events.tmpFiltered.off.subscribe(onEntityTmpUnfilter);
15+
events.versionSelected.on.subscribe(onVersionSelected);
16+
events.versionSelected.off.subscribe(offVersionSelected);
17+
events.config.filterSettings.subscribe(filterSettings);
18+
}
19+
20+
function applyIssueFilter(entities) {
21+
if(issueFilter === "showAll") {
22+
return entities;
23+
}
24+
if(issueFilter === "showOpen") {
25+
const result = [];
26+
entities.forEach(function(entity){
27+
let foundOpenIssues = false;
28+
entity.issues.forEach(function(issueId) {
29+
if(issueId !== "") {
30+
const issue = model.getIssuesById(issueId);
31+
if (issue.open) {
32+
foundOpenIssues = true;
33+
}
34+
}
35+
});
36+
if(foundOpenIssues) {
37+
result.push(entity)
38+
}
39+
});
40+
return result;
41+
}
42+
if(issueFilter === "showOpenSecurity") {
43+
const result = [];
44+
entities.forEach(function(entity){
45+
let foundOpenIssues = false;
46+
entity.issues.forEach(function(issueId) {
47+
if(issueId !== "") {
48+
const issue = model.getIssuesById(issueId);
49+
if (issue.open && issue.security) {
50+
foundOpenIssues = true;
51+
}
52+
}
53+
});
54+
if(foundOpenIssues) {
55+
result.push(entity)
56+
}
57+
});
58+
return result;
59+
}
60+
}
61+
62+
function applyChangeFrequencyFilter(entities) {
63+
if (changeFrequency === 0) {
64+
return entities;
65+
} else {
66+
return entities.filter(entity => entity.changeFrequency >= changeFrequency);
67+
}
68+
}
69+
70+
function applyIssueIdFilter(entities) {
71+
if(issueFilterId === "") {
72+
return entities;
73+
}
74+
return model.getEntitiesByIssue(issueFilterId);
75+
}
76+
77+
function filterSettings(applicationEvent) {
78+
79+
const entities = model.getEntitiesByType("Class");
80+
if (applicationEvent.changeFrequency !== undefined) {
81+
changeFrequency = applicationEvent.changeFrequency
82+
}
83+
if (applicationEvent.issuesFilter !== undefined) {
84+
issueFilter = applicationEvent.issuesFilter
85+
}
86+
if (applicationEvent.issueFilterId !== undefined) {
87+
issueFilterId = applicationEvent.issueFilterId;
88+
}
89+
let changeFrequencyEntities = applyChangeFrequencyFilter(entities);
90+
let issueFilterEntities = applyIssueFilter(entities);
91+
let issueIdEntities = applyIssueIdFilter(entities);
92+
const fadeEntities = [];
93+
const hideEntities = [];
94+
entities.forEach(function(entity){
95+
if(changeFrequencyEntities.includes(entity) && issueFilterEntities.includes(entity) && issueIdEntities.includes(entity)){
96+
fadeEntities.push(entity);
97+
} else {
98+
hideEntities.push(entity);
99+
}
100+
});
101+
102+
if(hideEntities.length > 0) {
103+
const hideEvent = {
104+
sender: configurationController,
105+
entities: hideEntities
106+
};
107+
events.filtered.on.publish(hideEvent);
108+
}
109+
if(fadeEntities.length > 0) {
110+
const fadeEvent = {
111+
sender: configurationController,
112+
entities: fadeEntities
113+
};
114+
events.filtered.off.publish(fadeEvent);
115+
}
116+
117+
}
118+
119+
function onEntityFilter(applicationEvent) {
120+
const entities = applicationEvent.entities;
121+
canvasManipulator.hideEntities(entities);
122+
}
123+
124+
function onEntityUnfilter(applicationEvent) {
125+
const entities = applicationEvent.entities;
126+
canvasManipulator.showEntities(entities);
127+
}
128+
129+
function onEntityTmpFilter(applicationEvent) {
130+
const entities = applicationEvent.entities;
131+
let stillTmpFiltered = [];
132+
entities.forEach(function(entity){
133+
if(!entity.filter){
134+
stillTmpFiltered.push(entity);
135+
}
136+
});
137+
canvasManipulator.hideEntities(stillTmpFiltered);
138+
139+
}
140+
141+
function onEntityTmpUnfilter(applicationEvent) {
142+
const entities = applicationEvent.entities;
143+
canvasManipulator.showEntities(entities);
144+
}
145+
146+
function onVersionSelected(applicationEvent) {
147+
const entities = model.getEntitiesByVersion(applicationEvent.entities[0]);
148+
canvasManipulator.showEntities(entities);
149+
}
150+
151+
function offVersionSelected(applicationEvent) {
152+
const entities = model.getEntitiesByVersion(applicationEvent.entities[0]);
153+
canvasManipulator.hideEntities(entities);
154+
}
155+
156+
return {
157+
initialize: initialize,
158+
activate: activate
159+
};
160+
})();

0 commit comments

Comments
 (0)