gethue
Version:
Hue is an Open source SQL Query Editor for Databases/Warehouses
110 lines (102 loc) • 3.99 kB
JavaScript
// Licensed to Cloudera, Inc. under one
// or more contributor license agreements. See the NOTICE file
// distributed with this work for additional information
// regarding copyright ownership. Cloudera, Inc. licenses this file
// to you 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.
import Dropzone from 'dropzone';
import $ from 'jquery';
import * as ko from 'knockout';
import I18n from '../../utils/i18n';
// TODO: Depends on Dropzone
ko.bindingHandlers.dropzone = {
init: function (element, valueAccessor) {
const value = ko.unwrap(valueAccessor());
if (value.disabled) {
return;
}
const options = {
autoDiscover: false,
timeout: 300000,
maxFilesize: 5000000,
previewsContainer: '#progressStatusContent',
previewTemplate:
'<div class="progress-row">' +
'<span class="break-word" data-dz-name></span>' +
'<div class="pull-right">' +
'<span class="muted" data-dz-size></span> ' +
'<span data-dz-remove><a href="javascript:undefined;" title="' +
I18n('Cancel upload') +
'"><i class="fa fa-fw fa-times"></i></a></span>' +
'<span style="display: none" data-dz-uploaded><i class="fa fa-fw fa-check muted"></i></span>' +
'</div>' +
'<div class="progress-row-bar" data-dz-uploadprogress></div>' +
'</div>',
sending: function () {
$('.hoverMsg').addClass('hide');
$('#progressStatus').removeClass('hide');
$('#progressStatusBar').removeClass('hide');
$('#progressStatus .progress-row').remove();
$('#progressStatusBar div').css('width', '0');
},
uploadprogress: function (file, progress) {
$('[data-dz-name]').each((cnt, item) => {
if ($(item).text() === file.name) {
$(item)
.parents('.progress-row')
.find('[data-dz-uploadprogress]')
.width(progress.toFixed() + '%');
if (progress.toFixed() === '100') {
$(item).parents('.progress-row').find('[data-dz-remove]').hide();
$(item).parents('.progress-row').find('[data-dz-uploaded]').show();
}
}
});
},
totaluploadprogress: function (progress) {
$('#progressStatusBar div').width(progress.toFixed() + '%');
},
canceled: function () {
$.jHueNotify.info(I18n('The upload has been canceled'));
},
complete: function (file) {
if (file.xhr.response !== '') {
const response = JSON.parse(file.xhr.response);
if (response && response.status != null) {
if (response.status !== 0) {
$(document).trigger('error', response.data);
if (value.onError) {
value.onError(file.name);
}
} else {
$(document).trigger('info', response.path + ' ' + I18n('uploaded successfully'));
if (value.onComplete) {
value.onComplete(response.path);
}
}
}
}
},
queuecomplete: function () {
window.setTimeout(() => {
$('#progressStatus').addClass('hide');
$('#progressStatusBar').addClass('hide');
$('#progressStatusBar div').css('width', '0');
}, 2500);
},
createImageThumbnails: false
};
$.extend(options, value);
$(element).addClass('dropzone');
new Dropzone(element, options);
}
};