You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
133 lines
4.6 KiB
133 lines
4.6 KiB
/* |
|
* Copyright 2015 OSBI Ltd |
|
* |
|
* Licensed under the Apache License, Version 2.0 (the "License"); |
|
* you may not use this file except in compliance with the License. |
|
* You may obtain a copy of the License at |
|
* |
|
* http://www.apache.org/licenses/LICENSE-2.0 |
|
* |
|
* Unless required by applicable law or agreed to in writing, software |
|
* distributed under the License is distributed on an "AS IS" BASIS, |
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
|
* See the License for the specific language governing permissions and |
|
* limitations under the License. |
|
*/ |
|
|
|
/** |
|
* Module License Upload |
|
*/ |
|
var upload = (function($, window, document, undefined) { |
|
|
|
// undefined is used here as the undefined global variable in ECMAScript 3 is |
|
// mutable (ie. it can be changed by someone else). undefined isn't really being |
|
// passed in so we can ensure the value of it is truly undefined. In ES5, undefined |
|
// can no longer be modified. |
|
|
|
// window and document are passed through as local variable rather than global |
|
// as this (slightly) quickens the resolution process and can be more efficiently |
|
// minified (especially when both are regularly referenced in your plugin). |
|
|
|
'use strict'; |
|
|
|
var module = { |
|
_baseURL: window.location.origin + '/saiku/rest/saiku/api/license', |
|
|
|
formChange: function() { |
|
$('#file-chooser').change(function() { |
|
$('.form-upload p').text(this.files.length + ' file selected'); |
|
}); |
|
}, |
|
|
|
_notifyUser: function(alertType, msg) { |
|
$('#notification').removeClass(); |
|
$('#notification').addClass(alertType); |
|
$('#notification').slideDown(); |
|
module._setNotificationMessage(msg); |
|
setTimeout(function() { |
|
$('#notification').slideUp(); |
|
}, 3000); |
|
}, |
|
|
|
_setNotificationMessage: function(msg) { |
|
$('#notification p').text(msg); |
|
}, |
|
|
|
_clearInputFile: function() { |
|
var inputFile = $('#file-chooser'); |
|
inputFile.replaceWith(inputFile.val('').clone(true)); |
|
}, |
|
|
|
_loadingButton: function(isLoadBtn) { |
|
if (isLoadBtn) { |
|
$('#btn-sendfile').attr('disabled', 'disabled'); |
|
$('#btn-sendfile').text('Loading file...'); |
|
} |
|
else { |
|
$('#btn-sendfile').removeAttr('disabled'); |
|
$('#btn-sendfile').text('Upload'); |
|
} |
|
}, |
|
|
|
_backLogin: function(isShow) { |
|
if (isShow) { |
|
$('.back-login').show(); |
|
$('#btn-back-login').on('click', function() { |
|
var url = window.location.origin; |
|
window.open(url, '_self'); |
|
}); |
|
} |
|
else { |
|
$('.back-login').hide(); |
|
} |
|
}, |
|
|
|
_xhr: function(options, callback) { |
|
$.ajax({ |
|
url: options.url, |
|
type: options.type, |
|
data: options.data, |
|
contentType: 'application/x-java-serialized-object', |
|
processData: false, |
|
success: function(data, status, jqXHR) { |
|
module._clearInputFile(); |
|
module._loadingButton(false); |
|
module._backLogin(true); |
|
callback('alert-success', data); |
|
}, |
|
error: function(jqXHR, status, errorThrown) { |
|
module._clearInputFile(); |
|
module._loadingButton(false); |
|
// module._backLogin(false); |
|
callback('alert-danger', 'Error while uploading the file: (' + errorThrown + ')'); |
|
} |
|
}); |
|
}, |
|
|
|
sendFile: function() { |
|
$('#btn-sendfile').on('click', function() { |
|
var file = $('#file-chooser')[0].files[0]; |
|
|
|
if (file !== undefined) { |
|
module._loadingButton(true); |
|
module._xhr({type: 'POST', url: module._baseURL, data: file}, module._notifyUser); |
|
$('.form-upload p').text('Drag your license or click in this area.'); |
|
} |
|
else { |
|
// module._backLogin(false); |
|
module._notifyUser('alert-danger', 'Oops... Select a file!'); |
|
} |
|
}); |
|
}, |
|
|
|
init: function() { |
|
module.formChange(); |
|
module.sendFile(); |
|
} |
|
}; |
|
|
|
return { |
|
init: module.init |
|
} |
|
|
|
}(jQuery, window, document)); |