Skip to content

Commit 0984ea7

Browse files
authored
JBDS-4466 Refactor confirm page components using templates
Load components into confirm page using templates
2 parents 69f8b06 + f7b4daa commit 0984ea7

11 files changed

Lines changed: 272 additions & 656 deletions

File tree

Lines changed: 63 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,63 @@
1+
<div ng-hide="item === undefined || item.hidden === true">
2+
<div id="{{item.keyName}}-panel" class="panel panel-default panel2pxborder" ng-class="{'zero-border':item.isDetected()}">
3+
<div id="{{item.keyName}}-panel-heading" class="panel-heading panel-normal"
4+
ng-class="{'dotted-panel':item.isDetected()}">
5+
<div class="checkbox-container verticalLine">
6+
<input id="{{item.keyName}}-checkbox" type="checkbox" ng-disabled="item.isDisabled()" ng-model="item.selectedOption" aria-label="Toggle ngHide" class="vallign-middle" ng-true-value="'install'" ng-false-value="'detected'">
7+
</div>
8+
<div class="product-container">
9+
<div class="warnings-in-panel">
10+
<span id="{{item.keyName}}-installed-note" class="installed-note" ng-show="item.hasOption('detected') && item.selectedOption === 'detected'">
11+
<i class="fa fa-check"></i> Using detected version {{item.option.detected.version}}
12+
</span>
13+
<div ng-show="item.hasOption('detected')">
14+
<div id="{{item.keyName}}-newer-warning" ng-show="item.option.detected.warning !== '' && item.selectedOption === 'detected'" class="has-warning">
15+
<div class="help-block">
16+
<span class="pficon pficon-warning-triangle-o"></span>
17+
<span id="{{item.keyName}}-newer-message">Newer than required!</span>
18+
</div>
19+
</div>
20+
<div id="{{item.keyName}}-older-warning" ng-show="item.option.detected.error !=='' && item.selectedOption === 'detected'" class="has-warning">
21+
<div class="help-block">
22+
<span class="pficon pficon-warning-triangle-o"></span>
23+
<span id="{{item.keyName}}-older-message">Older than required!</span>
24+
</div>
25+
</div>
26+
</div>
27+
</div>
28+
<span id="{{item.keyName}}-name" class="product-name">{{item.productName}}</span><span id="{{item.keyName}}-version" class="product-version">{{item.version}}</span>
29+
<div id="{{item.keyName}}-description">{{item.productDesc}}</div>
30+
</div>
31+
</div>
32+
</div>
33+
34+
<div class="help-block" ng-show="item.messages.info !== undefined && !item.isDetected()">
35+
<span class="pficon pficon-info"></span>
36+
<span>{{item.messages.info.message.split(item.messages.info.linkDescription)[0]}}</span>
37+
<a type="button" class="pointer" ng-click="openUrl(item.messages.info.link ? item.messages.info.link : item.downloadUrl)">
38+
{{item.messages.info.linkDescription}}</a>
39+
<span>{{item.messages.info.message.split(item.messages.info.linkDescription)[1]}}</span>
40+
</div>
41+
42+
<div class="message-container error-message" ng-show="filtered.length > 0 && !item.isConfigured()">
43+
<span class="pficon pficon-error-circle-o"></span>
44+
<span>You have selected
45+
<ng-repeat ng-repeat="dep in filtered = (item.dependenciesOf | filter: {selectedOption: 'install'} | limitTo:1)">
46+
<span>{{dep.productName}},</span>
47+
</ng-repeat> which requires {{item.productName}} version {{item.minimumVersion}} or higher.</span>
48+
<span ng-show="item.messages.dependency !== undefined">
49+
<span>{{item.messages.dependency.message.split(item.messages.dependency.linkDescription)[0]}}</span>
50+
<a type="button" class="pointer" ng-click="openUrl(item.messages.dependency.link ? item.messages.dependency.link : item.downloadUrl)">
51+
{{item.messages.dependency.linkDescription}}</a>
52+
<span>{{item.messages.dependency.message.split(item.messages.dependency.linkDescription)[1]}}</span>
53+
</span>
54+
</div>
55+
56+
<div ng-repeat="message in item.messages.misc">
57+
<div ng-show="evaluateCondition(message.isVisible)" class="message-container" ng-class="{'error-message': message.type === 'error', 'warning-message': message.type === 'warning'}">
58+
<span ng-show="message.type === 'error'" class="pficon pficon-error-circle-o"></span>
59+
<span ng-show="message.type === 'warning'" class="pficon pficon-warning-triangle-o"></span>
60+
<span>{{message.message}}</span>
61+
</div>
62+
</div>
63+
</div>
Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
'use strict';
2+
3+
function componentPanel() {
4+
return {
5+
controller: ('componentController', ['$scope', 'electron', 'installerDataSvc', function($scope, electron, installerDataSvc) {
6+
$scope.openUrl = function(url) {
7+
electron.shell.openExternal(url);
8+
};
9+
10+
$scope.evaluateCondition = function(content) {
11+
let evaluate = new Function('installerDataSvc', 'return ' + content);
12+
return evaluate(installerDataSvc);
13+
};
14+
}]),
15+
restrict: 'E',
16+
replace: true,
17+
scope: {
18+
item: '='
19+
},
20+
templateUrl: 'directives/componentPanel.html'
21+
};
22+
}
23+
24+
export default componentPanel;

browser/main.js

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@ import startCtrl from './pages/start/controller';
1212
import pathValidator from './directives/pathValidator';
1313
import progressBar from './directives/progressBar';
1414
import breadcrumb from './directives/breadcrumb';
15+
import componentPanel from './directives/componentPanel';
1516
import InstallerDataService from './services/data';
1617
import Request from './services/request';
1718
import ComponentLoader from './services/componentLoader';
@@ -30,6 +31,7 @@ let mainModule =
3031
.factory('request', Request.factory)
3132
.value('electron', Electron)
3233
.directive(progressBar.name, progressBar)
34+
.directive(componentPanel.name, componentPanel)
3335
.directive(breadcrumb.name, breadcrumb)
3436
.directive(pathValidator.name, pathValidator)
3537
.config( ['$stateProvider', '$urlRouterProvider', ($stateProvider, $urlRouterProvider) => {

browser/model/hyperv.js

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@ class HypervInstall extends InstallableItem {
2020
this.addOption('detected', '', '', detected);
2121
}
2222
this.hypervstatus = detected;
23+
this.hidden = this.hypervstatus === undefined;
2324
this.selectedOption = 'detected';
2425
return Promise.resolve(detected);
2526
}).then((detected)=> {

browser/model/installable-item.js

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -53,6 +53,8 @@ class InstallableItem {
5353
this.ipcRenderer = ipcRenderer;
5454
this.authRequired = authRequired;
5555
this.references = 0;
56+
57+
this.messages = requirement.messages;
5658
}
5759

5860
getProductName() {

browser/model/jdk-install.js

Lines changed: 18 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -197,12 +197,28 @@ class JdkInstall extends InstallableItem {
197197
}
198198

199199
isConfigured() {
200-
if (Platform.OS === 'darwin') {
201-
return this.isDetected() && this.option['detected'].valid;
200+
if (Platform.getOS() === 'darwin') {
201+
return this.isDetected() && this.option.detected && this.option.detected.valid;
202202
}
203203
return super.isConfigured();
204204
}
205205

206+
isDetected() {
207+
if (Platform.getOS() === 'darwin') {
208+
return true;
209+
} else {
210+
return super.isDetected();
211+
}
212+
}
213+
214+
isNotDetected() {
215+
if (Platform.getOS() === 'darwin') {
216+
return false;
217+
} else {
218+
return super.isNotDetected();
219+
}
220+
}
221+
206222
isDisabled() {
207223
return !this.hasOption('detected') && (this.references > 0)
208224
|| this.hasOption('detected') && !this.option.detected.valid && (this.references > 0)

0 commit comments

Comments
 (0)