merge altDomain into location field

This commit is contained in:
Girish Ramakrishnan
2016-04-25 19:26:13 -07:00
parent c581d2a52c
commit dec2fdb6bb
2 changed files with 43 additions and 15 deletions

View File

@@ -30,12 +30,30 @@
<div class="form-group" ng-class="{ 'has-error': (appConfigureForm.location.$dirty && appConfigureForm.location.$invalid) || (!appConfigureForm.location.$dirty && appConfigure.error.location) }">
<label class="control-label" for="appConfigureLocationInput">Location {{ appConfigure.error.location }} </label>
<div class="input-group form-inline">
<input type="text" class="form-control" ng-model="appConfigure.location" id="appConfigureLocationInput" name="location" placeholder="Leave empty to use bare domain" autofocus>
<div class="input-group-addon">
{{ !appConfigure.location ? '' : (config.isCustomDomain ? '.' : '-') }}{{ config.fqdn }}
<input type="text" class="form-control" ng-model="appConfigure.location" id="appConfigureLocationInput" name="location" placeholder="{{ appConfigure.usingAltDomain ? 'app.example.com' : 'Leave empty to use bare domain' }}" autofocus>
<div class="input-group-btn">
<button type="button" class="btn btn-default dropdown-toggle" data-toggle="dropdown">
{{ appConfigure.usingAltDomain ? 'External Domain' : ((!appConfigure.location ? '' : (config.isCustomDomain ? '.' : '-')) + config.fqdn) }}
<span class="caret"></span>
</button>
<ul class="dropdown-menu dropdown-menu-right" role="menu">
<li>
<a href="" ng-click="useAltDomain(false)">{{ config.fqdn }}</a>
</li>
<li>
<a href="" ng-click="useAltDomain(true)"><i class="fa fa-star"></i> External Domain</a>
</li>
</ul>
</div>
</div>
</div>
<p class="text-center" ng-show="appConfigure.usingAltDomain && appConfigure.location && appConfigure.isAltDomainValid()">
Add a CNAME record for {{ appConfigure.location }} to {{ appConfigure.app.fqdn }}
<br>
</p>
<div class="has-error text-center" ng-show="appConfigure.error.port">{{ appConfigure.error.port }}</div>
<div ng-repeat="(env, info) in appConfigure.portBindingsInfo">
<ng-form name="portInfo_form">
@@ -82,11 +100,6 @@
<slider id="memoryUsage" ng-model="appConfigure.memoryUsage" step="33554432" tooltip="hide" ticks="memoryTicks" ticks-snap-bounds="67108864"></slider>
</div>
</div>
<div class="form-group">
<label class="control-label" for="appConfigureAltDomainInput">Alternate external domain</label>
<br/>
<input type="text" class="form-control" ng-model="appConfigure.altDomain" id="appConfigureAltDomainInput" name="altDomain" placeholder="chat.example.com" autofocus>
</div>
<div class="hide">
<label class="control-label" for="appConfigureCertificateInput" ng-show="config.isCustomDomain">Certificate (optional)</label>
@@ -128,7 +141,7 @@
</div>
<div class="modal-footer ">
<button type="button" class="btn btn-default" data-dismiss="modal">Cancel</button>
<button type="button" class="btn btn-success" ng-click="doConfigure()" ng-disabled="appConfigureForm.$invalid || appConfigure.busy || (appConfigure.accessRestrictionOption !== '' && !appConfigure.isAccessRestrictionValid())"><i class="fa fa-spinner fa-pulse" ng-show="appConfigure.busy"></i> Save</button>
<button type="button" class="btn btn-success" ng-click="doConfigure()" ng-disabled="appConfigureForm.$invalid || appConfigure.busy || (appConfigure.accessRestrictionOption !== '' && !appConfigure.isAccessRestrictionValid()) || !appConfigure.isAltDomainValid()"><i class="fa fa-spinner fa-pulse" ng-show="appConfigure.busy"></i> Save</button>
</div>
</div>
</div>

View File

@@ -23,7 +23,7 @@ angular.module('Application').controller('AppsController', ['$scope', '$location
error: {},
app: {},
location: '',
altDomain: null,
usingAltDomain: false,
password: '',
portBindings: {},
portBindingsEnabled: {},
@@ -39,6 +39,11 @@ angular.module('Application').controller('AppsController', ['$scope', '$location
isAccessRestrictionValid: function () {
var tmp = $scope.appConfigure.accessRestriction;
return !!(tmp.users.length || tmp.groups.length);
},
isAltDomainValid: function () {
if (!$scope.appConfigure.usingAltDomain) return true;
return /.+\..+\..+/.test($scope.appConfigure.location); // 2 dots
}
};
@@ -74,7 +79,7 @@ angular.module('Application').controller('AppsController', ['$scope', '$location
$scope.appConfigure.error = {};
$scope.appConfigure.app = {};
$scope.appConfigure.location = '';
$scope.appConfigure.altDomain = null;
$scope.appConfigure.usingAltDomain = false;
$scope.appConfigure.password = '';
$scope.appConfigure.portBindings = {}; // This is the actual model holding the env:port pair
$scope.appConfigure.portBindingsEnabled = {}; // This is the actual model holding the enabled/disabled flag
@@ -152,13 +157,23 @@ angular.module('Application').controller('AppsController', ['$scope', '$location
else groups.splice(pos, 1);
};
$scope.useAltDomain = function (use) {
$scope.appConfigure.usingAltDomain = use;
if (use) {
$scope.appConfigure.location = '';
} else {
$scope.appConfigure.location = $scope.appConfigure.app.location;
}
};
$scope.showConfigure = function (app) {
$scope.reset();
// fill relevant info from the app
$scope.appConfigure.app = app;
$scope.appConfigure.location = app.location;
$scope.appConfigure.altDomain = app.altDomain;
$scope.appConfigure.location = app.altDomain || app.location;
$scope.appConfigure.usingAltDomain = !!app.altDomain;
$scope.appConfigure.portBindingsInfo = app.manifest.tcpPorts || {}; // Portbinding map only for information
$scope.appConfigure.accessRestrictionOption = app.accessRestriction ? 'restricted' : '';
$scope.appConfigure.accessRestriction = app.accessRestriction || { users: [], groups: [] };
@@ -193,8 +208,8 @@ angular.module('Application').controller('AppsController', ['$scope', '$location
}
var data = {
location: $scope.appConfigure.location || '',
altDomain: $scope.appConfigure.altDomain || null,
location: $scope.appConfigure.usingAltDomain ? $scope.appConfigure.app.location : $scope.appConfigure.location,
altDomain: $scope.appConfigure.usingAltDomain ? $scope.appConfigure.location : null,
portBindings: finalPortBindings,
accessRestriction: !$scope.appConfigure.accessRestrictionOption ? null : $scope.appConfigure.accessRestriction,
cert: $scope.appConfigure.certificateFile,