-
Notifications
You must be signed in to change notification settings - Fork 3
/
Copy pathaddons.html
273 lines (241 loc) · 12.5 KB
/
addons.html
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
<!DOCTYPE html>
<html lang="en" class="no-js">
<head>
<!-- Google Tag Manager -->
<script>(function(w,d,s,l,i){w[l]=w[l]||[];w[l].push({'gtm.start':
new Date().getTime(),event:'gtm.js'});var f=d.getElementsByTagName(s)[0],
j=d.createElement(s),dl=l!='dataLayer'?'&l='+l:'';j.async=true;j.src=
'https://www.googletagmanager.com/gtm.js?id='+i+dl;f.parentNode.insertBefore(j,f);
})(window,document,'script','dataLayer','GTM-WCRD68P');</script>
<!-- End Google Tag Manager -->
<!-- Basic Page Needs
================================================== -->
<meta charset="utf-8">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<link rel="icon" type="image/png" href="images/favicon.ico">
<title>Capella MBSE Tool - Add-Ons</title>
<meta name="description" content="Beyond Capella, the ecosystem offers extensions to unleash the power of your MBSE workbench.">
<meta name="keywords" content="">
<meta name="author" content="">
<!-- Mobile Specific Metas
================================================== -->
<meta name="format-detection" content="telephone=no">
<meta name="viewport" content="width=device-width, initial-scale=1">
<!-- Template CSS Files
================================================== -->
<!-- Twitter Bootstrs CSS -->
<link rel="stylesheet" href="css/bootstrap.min.css">
<!-- animate css -->
<link rel="stylesheet" href="css/animate.css">
<!-- template main css file -->
<link rel="stylesheet" href="css/main.css">
<!-- responsive css -->
<link rel="stylesheet" href="css/responsive.css">
<link rel="stylesheet" href="css/latofonts.css">
<link rel="stylesheet" href="css/flag-icons.min.css">
<!-- Cookie content -->
<link rel="stylesheet" type="text/css" href="//www.eclipse.org/eclipse.org-common/themes/solstice/public/stylesheets/vendor/cookieconsent/cookieconsent.min.css" />
<!-- Eclipse Foundation Google Tag Manager -->
<script>(function(w,d,s,l,i){w[l]=w[l]||[];w[l].push({'gtm.start':
new Date().getTime(),event:'gtm.js'});var f=d.getElementsByTagName(s)[0],
j=d.createElement(s),dl=l!='dataLayer'?'&l='+l:'';j.async=true;j.src=
'https://www.googletagmanager.com/gtm.js?id='+i+dl;f.parentNode.insertBefore(j,f);
})(window,document,'script','dataLayer','GTM-5WLCZXC');</script>
<!-- End Google Tag Manager -->
<!-- Template Javascript Files
================================================== -->
<!-- Angular -->
<base href="/">
<script src="js/angular-1.7.8.min.js"></script>
<script src="angular/capella.js"></script>
<!-- jquery -->
<script src="js/jquery-3.4.1.min.js"></script>
<script src="js/popper-1.14.3.min.js"></script>
<script src="js/helpers.js"></script>
<script defer src="https://kit.fontawesome.com/16cf99803e.js" crossorigin="anonymous"></script>
</head>
<body ng-app="capella" data-deferred-cloak>
<!-- Google Tag Manager (noscript) -->
<noscript><iframe src="https://www.googletagmanager.com/ns.html?id=GTM-WCRD68P"
height="0" width="0" style="display:none;visibility:hidden"></iframe></noscript>
<!-- End Google Tag Manager (noscript) -->
<!--
==================================================
Header Section
================================================== -->
<ng-include src="'angular/blocks/header.html'"></ng-include>
<!--
==================================================
Intro Section
================================================== -->
<section class="hero-area addons">
<div class="container">
<div class="row">
<div class="col-md-12 text-center">
<div class="block wow fadeInUp" data-wow-delay=".3s">
<section class="cd-intro">
<h1 class="wow fadeInUp animated" data-wow-delay=".4s">Add-Ons</h1>
</section>
<!-- cd-intro -->
<h2 class="wow fadeInUp animated" data-wow-delay=".6s">
Beyond Eclipse Capella™, the ecosystem offers extensions <br>to
unleash the power of your MBSE workbench
</h2>
</div>
</div>
</div>
</div>
</section>
<!--/#intro_banner-->
<!--
==================================================
Secure your industrial Capella deployment
================================================== -->
<section id="services" class="">
<div class="container">
<div class="row">
<p><i>To install Capella extensions have a look to the <a href="https://github.com/eclipse-capella/capella/blob/master/doc/plugins/org.polarsys.capella.ui.doc/html/Installation%20Guide/How%20to%20install%20Capella%20and%20Addons.mediawiki#Configuration_and_Extensibility">installation procedure</a></i></p>
</div>
<div class="row">
<div id="accordion-opensource-addons" class="accordion dropdown_content">
</div>
</div>
<div class="row">
<div id="accordion-commercial-addons" class="accordion dropdown_content">
</div>
</div>
<div class="row">
<div id="accordion-labs-addons" class="accordion dropdown_content">
<div><h1>Labs Add-ons</h1>It is the place where Capella users, as well as tool providers, can collaborate and create synergies to develop Capella add-ons</div>
</div>
<a class="btn btn-default" href="https://labs4capella.github.io">Discover Labs for Capella <i class="fa fa-external-link"></i></a>
<br/><br/>
</div>
<div class="row">
<div id="accordion-sample-addons" class="accordion dropdown_content">
</div>
</div>
<div class="row">
<p class="underline"><b><u>Compatibility and integration</u></b></p>
<p><i>Each author is responsible for the compatibility of his add-ons with different versions of Capella.</i>
<br><i>Additional integration may be needed between two add-ons provided by different authors.</i></p>
</div>
</div>
</section>
<script>
$.getJSON('json/downloads.json', function(data) {
let eplAddons = data.addons.filter(function(a) { return a.licence == 'EPL' && !a.isSample && !a.isLabs}); //Open-source add-ons
let commercialAddons = data.addons.filter(function(a) { return a.licence == 'Commercial' }); //Commercial add-ons
let labsAddons = data.addons.filter(function(a) { return a.isLabs });
let sampleAddons = data.addons.filter(function(a) { return a.isSample });
if (eplAddons.length != 0) {
addTitleToDiv("accordion-opensource-addons", "Open-Source Add-ons");
for (addon in eplAddons) {
addAddonSection(data, eplAddons[addon], "accordion-opensource-addons");
}
}
if (commercialAddons.length != 0) {
addTitleToDiv("accordion-commercial-addons", "Commercial Add-ons");
for (addon in commercialAddons) {
addAddonSection(data, commercialAddons[addon], "accordion-commercial-addons");
}
}
// No test on the existence of at least one add-on in this category: we always display this category
for (addon in labsAddons) {
addAddonSection(data, labsAddons[addon], "accordion-labs-addons");
}
if (sampleAddons.length != 0) {
addTitleToDiv("accordion-sample-addons", "Basic Add-ons", "Add-ons that show basic usage of viewpoints and how to start developing add-ons for Capella using Capella Studio");
for (addon in sampleAddons) {
addAddonSection(data, sampleAddons[addon], "accordion-sample-addons");
}
}
$('[data-toggle="tooltip"]').tooltip();
});
function addTitleToDiv(divId, title, description) {
let desc = description == undefined ? "": description;
document.getElementById(divId).innerHTML += "<div><h1>" + title + "</h1>" + desc + "</div>";
}
function createKeysLinks(data, addon, download, icons) {
let keys = Object.keys(download).filter(function(x) { return x != "notes" });
let links = keys.map(function(k) {
let icon = icons == undefined && data.lang[k].icon ? '<i class="pl-2 {0}" aria-hidden="true"></i>'.format(data.lang[k].icon) : "";
if (data.lang[k].target == "_expand") {
return '<a data-toggle="collapse" data-target="#collapse-notes-{3}">{4}{5}</a>'.format(download[k], data.lang[k].target, data.versionBranch, addon.key, data.lang[k].text, icon);
} else if (Array.isArray(download[k])) {
let value = download[k];
return data.lang[k].text + "s"+ icon + " (" + value.map(function(x) { return '<a href="{0}" onClick="ga(\'send\', \'event\', \'Capella\', \'{1}\', \'{2}\');">{3}</a>'.format(x.url, data.versionBranch, addon.key, x.name) }).join(" + ")+")";
}
return '<a href="{0}" {1} onClick="ga(\'send\', \'event\', \'Capella\', \'{2}\', \'{3}\');">{4}{5}</a>'.format(download[k], data.lang[k].target == undefined ? "" : 'target="'+data.lang[k].target+'}"', data.versionBranch, addon.key, data.lang[k].text, icon);
}).join(" - ");
return links;
}
function addAddonSection(data, addon, divId) {
let keys = Object.keys(addon.download);
let links = createKeysLinks(data, addon, addon.download);
let header = [];
if (addon.contact) {
header.push("Contact: "+addon.contact);
}
if (addon.licence) {
header.push("License: "+addon.licence);
}
if (addon.tags) {
let tags='';
for (tag in addon.tags) {
tags+=' <button class="tag">'+addon.tags[tag]+'</button>';
}
header.push(tags);
}
header=header.join(" - ");
let compatible = addon.compatibleWithCurrentVersion === false ? '<button role="button" class="fa fa-exclamation-triangle btn-link btn-xs alert-compatibility" data-toggle="tooltip" data-placement="bottom" title="{0}" ></button>'.format(data.lang.compatibility.text) : "";
let addonName = addon.isViewpoint ? addon.name + " Viewpoint" : addon.name;
let fragment = addon.fragment != undefined ? addon.fragment : addon.key;
let dropdown = '<div class="accordion-heading"><a class="accordion-toggle collapsed" data-toggle="collapse" data-parent="#accordion2" href="#{0}"><h3>{1}</h3><i class="fas fa-caret-down txt_yellow" aria-hidden="true"> </i><span class="descr txt_lightest_grey">{2}</span></a></div>'.format(fragment, addonName, header);
let sections = keys.filter(function(k) { return data.lang[k].target == "_expand" }).map(function(k) {
let div = '<div class="collapse notes-section" id="collapse-notes-'+addon.key+'"><h3>'+data.lang[k].text+'</h3>'+createKeysLinks(data, addon, addon.download[k])+addon.download[k]["notes"]+'</div>';
return div;
}).join("");
let content = '<div id="{0}" class="accordion-body collapse" style="height: 0px;"><div class="accordion-inner">{1}<p>{2}{3}</p>{4}</div></div>'.format(fragment, addon.description, compatible, links, sections);
let result = '<div class="accordion-group">{0}{1}</div>'.format(dropdown, content);
document.getElementById(divId).innerHTML += result;
}
</script>
<div id="back-to-top" data-spy="affix" data-offset-top="100"
class="back-to-top hidden-xs hidden-sm affix-top">
<button class="btn btn-default" title="Back to Top">
<i class="fa fa-caret-up"></i>
</button>
</div>
<script type="text/javascript">
// Back to top
jQuery('#back-to-top').on('click', function() {
jQuery("html, body").animate({
scrollTop : 0
}, 500);
return false;
});
</script>
<!--
==================================================
Call To Action Section Start
================================================== -->
<ng-include src="'angular/blocks/call2action_services.html'"></ng-include>
<!--
==================================================
Footer Section
================================================== -->
<ng-include src="'angular/blocks/footer.html'"></ng-include>
<!-- bootstrap js -->
<script defer src="js/bootstrap.min.js"></script>
<!-- wow js -->
<script defer src="js/wow.min.js"></script>
<script defer src="js/jquery.fancybox.js"></script>
<!-- template main js -->
<script defer src="js/main.js"></script>
<!-- Global site tag (gtag.js) - Google Analytics -->
<script async src="https://www.googletagmanager.com/gtag/js?id=UA-57722280-1"></script>
<script async src="js/googleAnalytics.js"></script>
<script async src="//www.eclipse.org/eclipse.org-common/themes/solstice/public/javascript/vendor/cookieconsent/default.min.js"></script>
</body>
</html>