mirror of
https://github.com/ansible/awx.git
synced 2026-01-27 16:41:29 -03:30
107 lines
4.0 KiB
JavaScript
107 lines
4.0 KiB
JavaScript
/*************************************************
|
|
* Copyright (c) 2016 Ansible, Inc.
|
|
*
|
|
* All Rights Reserved
|
|
*************************************************/
|
|
|
|
export default
|
|
['Wait', '$state', '$scope', '$rootScope', '$location', 'GetBasePath',
|
|
'Rest', 'ProcessErrors', 'CheckLicense', 'moment','$window',
|
|
'ConfigService', 'FeaturesService', 'pendoService',
|
|
function( Wait, $state, $scope, $rootScope, $location, GetBasePath, Rest,
|
|
ProcessErrors, CheckLicense, moment, $window, ConfigService,
|
|
FeaturesService, pendoService){
|
|
$scope.getKey = function(event){
|
|
// Mimic HTML5 spec, show filename
|
|
$scope.fileName = event.target.files[0].name;
|
|
// Grab the key from the raw license file
|
|
var raw = new FileReader();
|
|
// readAsFoo runs async
|
|
raw.onload = function(){
|
|
try {
|
|
$scope.newLicense.file = JSON.parse(raw.result);
|
|
}
|
|
catch(err) {
|
|
ProcessErrors($rootScope, null, null, null, {msg: 'Invalid file format. Please upload valid JSON.'});
|
|
}
|
|
};
|
|
try {
|
|
raw.readAsText(event.target.files[0]);
|
|
}
|
|
catch(err) {
|
|
ProcessErrors($rootScope, null, null, null, {msg: 'Invalid file format. Please upload valid JSON.'});
|
|
}
|
|
};
|
|
// HTML5 spec doesn't provide a way to customize file input css
|
|
// So we hide the default input, show our own, and simulate clicks to the hidden input
|
|
$scope.fakeClick = function(){
|
|
$('#License-file').click();
|
|
};
|
|
|
|
$scope.downloadLicense = function(){
|
|
$window.open('https://www.ansible.com/license', '_blank');
|
|
};
|
|
|
|
$scope.newLicense = {};
|
|
$scope.submit = function(){
|
|
Wait('start');
|
|
CheckLicense.post($scope.newLicense.file, $scope.newLicense.eula)
|
|
.success(function(){
|
|
reset();
|
|
ConfigService.delete();
|
|
ConfigService.getConfig().then(function(){
|
|
delete($rootScope.features);
|
|
FeaturesService.get();
|
|
pendoService.issuePendoIdentity();
|
|
if($rootScope.licenseMissing === true){
|
|
$state.go('dashboard', {
|
|
licenseMissing: false
|
|
});
|
|
}
|
|
else{
|
|
init();
|
|
$scope.success = true;
|
|
$rootScope.licenseMissing = false;
|
|
// for animation purposes
|
|
var successTimeout = setTimeout(function(){
|
|
$scope.success = false;
|
|
clearTimeout(successTimeout);
|
|
}, 4000);
|
|
}
|
|
});
|
|
});
|
|
};
|
|
var calcDaysRemaining = function(seconds){
|
|
// calculate the number of days remaining on the license
|
|
var duration = moment.duration(seconds, 'seconds').asDays();
|
|
duration = Math.floor(duration);
|
|
duration = (duration!==1) ? `${duration} Days` : `${duration} Day`;
|
|
return duration;
|
|
};
|
|
|
|
|
|
var calcExpiresOn = function(days){
|
|
// calculate the expiration date of the license
|
|
return moment().add(days, 'days').calendar();
|
|
};
|
|
var init = function(){
|
|
$scope.fileName = "No file selected.";
|
|
$scope.title = $rootScope.licenseMissing ? "Tower License" : "License Management";
|
|
Wait('start');
|
|
ConfigService.getConfig().then(function(config){
|
|
$scope.license = config;
|
|
$scope.license.version = config.version.split('-')[0];
|
|
$scope.time = {};
|
|
$scope.time.remaining = calcDaysRemaining($scope.license.license_info.time_remaining);
|
|
$scope.time.expiresOn = calcExpiresOn($scope.time.remaining);
|
|
$scope.valid = CheckLicense.valid($scope.license.license_info);
|
|
Wait('stop');
|
|
});
|
|
};
|
|
var reset = function(){
|
|
document.getElementById('License-form').reset();
|
|
};
|
|
init();
|
|
}
|
|
];
|