Skip to content
This repository has been archived by the owner on Dec 13, 2022. It is now read-only.

Commit

Permalink
Merge branch 'master' into 14-send_results
Browse files Browse the repository at this point in the history
# Conflicts:
#	default/static/js/uploader.js
#	default/templates/default/base-uploader.html
#	default/templates/default/to-json.html
#	default/templates/default/to-spreadsheet.html
#	locale/es/LC_MESSAGES/django.po
  • Loading branch information
aguilerapy committed Jul 1, 2020
2 parents 2d46a91 + a5363c0 commit b49e5ef
Show file tree
Hide file tree
Showing 13 changed files with 790 additions and 217 deletions.
61 changes: 58 additions & 3 deletions default/static/js/uploader.js
Original file line number Diff line number Diff line change
Expand Up @@ -122,13 +122,13 @@ var app = {};
hideProcessingModal();
}

function performAction(values) {
function performAction(url) {
showProcessingModal();
var actionParams = {};
_paramSetters.forEach(function (f) {
f(actionParams);
});
$.ajax($('#fileupload').attr('data-perform-action'), {data: actionParams})
$.ajax(url, {data: actionParams})
.done(function (data) {
$('.response-success .file-size').html(utils.readableFileSize(data.size));
$('.response-success .download').attr('href', data.url);
Expand Down Expand Up @@ -159,7 +159,9 @@ var app = {};
return val.submit();
});
$.when.apply($, promises)
.done(performAction)
.done(function () {
performAction($('#fileupload').attr('data-perform-action'));
})
.fail(function () {
enableAddFiles();
$('.response-warning.file-process-failed').removeClass('hidden');
Expand All @@ -177,6 +179,52 @@ var app = {};
;
}

function upload_url() {
hideMessages();
$('#processing-modal .total-files')
.html($('.input-url-container .form-group .input-group .form-control').length);
$('#processing-modal .downloading-status').removeClass('hidden');
showProcessingModal();
$('.response-fail').addClass('hidden');
$('.form-group').removeClass('has-error');
$('.help-block').remove();

$.ajax('/upload-url/', {'dataType': 'json', type: 'POST',
'data': $('.input-url-container .form-group .input-group .form-control').serialize() +
'&type=' + JSON.parse($('#fileupload').attr('data-form-data')).type,
headers: {'X-CSRFToken': JSON.parse($('#fileupload').attr('data-form-data')).csrfmiddlewaretoken}})
.done(function () {
performAction($('#url-button').attr('data-perform-action'));
})
.fail(function(jqXHR, textStatus, errorThrown) {
$.each(JSON.parse(jqXHR.responseText), function(i, item) {
slt = "#" + item.id;
msg = item.message;
$(slt).addClass('has-error');
$(slt).append('<div class="help-block">' + msg + '</div>');
});
if (jqXHR.status === 400) {
$('.response-fail').removeClass('hidden');
}
if (jqXHR.status === 401) {
$('.response-warning.file-process-failed').removeClass('hidden');
}
hideProcessingModal();
$('#processing-modal .downloading-status').addClass('hidden');
})
.always(function () {
clearInterval(pollInterval);
})
pollInterval = setInterval(function () {
$.ajax('/upload-url/status/', {'dataType': 'json', type: 'GET'})
.done(function (data) {
$('#processing-modal .current-files').html(data);
})
;
}, 500);
;
}

function go() {
disableGoButton();
hideMessages();
Expand Down Expand Up @@ -208,13 +256,20 @@ var app = {};
/** upload call binding **/
$("#upload-button").click(upload);

/* click upload url button behaviour */
$("#url-button").click(upload_url);

/** go call binding **/
$("#go-button").click(go);

/** click send button behaviour **/
$('.send-button').click(send_to);

/* add warning before closing/navigating away from page */
window.onload = function () {
/* clear URL input text */
$('#input_url_0 input').val('');

/* check if results were sent to this page */
url = '/result/receive/?type=' + JSON.parse($('#fileupload').attr('data-form-data')).type;
$.ajax(url, { 'dataType': 'json' })
Expand Down
143 changes: 103 additions & 40 deletions default/templates/default/base-uploader.html
Original file line number Diff line number Diff line change
Expand Up @@ -39,54 +39,43 @@
<div class="panel panel-default info">
<div class="panel-body">
{% block info %}{% endblock %}
<p>{% trans "The options available for input files are:" %}</p>
<ul class="list-unstyled">
<li>
<strong>{% trans "Upload a file:" %}</strong>
{% trans "Drag and drop one or more files." %}
{% trans "You can also click the <strong>Add a file</strong> link below." %}
</li>
<li>
<strong>{% trans "Provide a URL:" %}</strong>
{% trans "Enter one or more URLs to each file. Click <strong>Add URL</strong> to provide more URLs." %}
</li>
</ul>
</div>
</div>
<form
id="fileupload"
method="POST"
action="/upload/"
onsubmit="return false;"
data-accept-file-types="/(\.|\/)json$/i"
data-files-container=".files"
data-sequential-uploads="true"
data-form-data='{"csrfmiddlewaretoken": "{{csrf_token}}"{% block form-options %}{% endblock %}}'
data-max-number-of-files="{{maxNumOfFiles}}"
data-max-file-size="{{maxFileSize}}"
data-perform-action="{{performAction}}"
>
<div class="action-extra-params form-inline">{% block extraoptions %}{% endblock %}</div>
<!-- The container for the uploaded files -->
<div class="drop-area empty">
<!-- The file input field used as target for the file upload widget -->
<input type="file" name="file" id="file" accept=".json" multiple/>
<span class="file-selector-empty"><label for="file">{% trans "Add a file" %}</label> {% trans "or drag and drop here." %}</span>
<div class="files hidden">
</div>
<span class="drop-area-received-msg hidden">{% trans "<b>Received</b>: " %}<span class="file-result"></span></span>
</div>
<div class="actions hidden">
<div class="buttons">
<div class="btn btn-default fileinput-button">
<i class="glyphicon glyphicon-plus"></i>
<label for="file" id="file-selector">{% trans "Add more files" %}</label>
</div>
<button type="submit" class="btn btn-primary pull-right start" id="upload-button" disabled>
<i class="glyphicon glyphicon-cloud-upload"></i>
<span>{% trans "Start" %}</span>
</button>
<button type="submit" class="btn btn-primary pull-right start hidden" id="go-button">
<i class="glyphicon glyphicon-play-circle"></i>
<span>{% trans "Process" %}</span>
</button>
</div>
</div>
</form>
<div class="text-danger"></div>
<div class="btn-group schema-nav" data-toggle="buttons" style="margin-top: 0px;margin-bottom: 15px;">
<label class="btn btn-default active">
<input type="radio" name="type" class="choice-header toucan-nav-file" autocomplete="off" value="file">
{% trans "Upload files" %}
</label>
<label class="btn btn-default">
<input type="radio" name="type" class="choice-header toucan-nav-input" autocomplete="off" value="input">
{% trans "Provide URLs" %}
</label>
</div>
<div class="action-extra-params form-inline"style="margin-bottom: 10px;">
{% block extraoptions %}{% endblock %}
</div>
<!-- Processing modal, active when all files has been uploaded and the requested operation is in progress -->
<div id="processing-modal" class="modal fade" tabindex="-1" role="dialog" data-backdrop="static" data-keyboard="false">
<div class="modal-dialog modal-sm" role="document">
<div class="modal-content">
<div class="modal-body">
<p>{% trans "Processing operation. Please don't refresh nor close the browser window!" %}</p>
<div class="downloading-status hidden">
<p>{% trans "Processed " %}<span class="current-files">0</span>{% trans " of " %}<span class="total-files"></span>{% trans " files ..." %}</p>
</div>
<div class="progress">
<div class="progress-bar progress-bar-striped active" aria-valuenow="100" aria-valuemin="0" aria-valuemax="100" style="width: 100%">
</div>
Expand All @@ -95,6 +84,79 @@
</div>
</div>
</div>

<div role="tabpanel" class="panel-collapse toucan-nav-input collapse">
<div class="input-url-container">
<div class="form-group" id="input_url_0">
<label>{% blocktrans trimmed %}
Provide the URL to a file:
{% endblocktrans %}</label>
<div class="input-group">
<input type="text" name="input_url_0" class="form-control"/>
<span class="input-group-btn">
<button class="btn btn-danger input-delete"
type="button"
onclick="inputDelete(this)"
disabled="disabled">
x
</button>
</span>
</div>
</div>
</div>
<div class="buttons">
<a class="pull-right" href="#" id="add-url" style="margin-top: 5px;">+{% trans "Add URL" %}</a>
<button type="submit" class="btn btn-primary" id="url-button" data-perform-action="{{performAction}}">
{% trans "Start" %}
<i class="glyphicon glyphicon-play-circle"></i>
</button>
</div>
</div>

<div role="tabpanel" class="panel-collapse toucan-nav-file collapse in">
<div class="form-group">
<form
id="fileupload"
method="POST"
action="/upload/"
onsubmit="return false;"
data-accept-file-types="/(\.|\/)json$/i"
data-files-container=".files"
data-sequential-uploads="true"
data-form-data='{"csrfmiddlewaretoken": "{{csrf_token}}"{% block form-options %}{% endblock %}}'
data-max-number-of-files="{{maxNumOfFiles}}"
data-max-file-size="{{maxFileSize}}"
data-perform-action="{{performAction}}"
>
<div class="action-extra-params form-inline">{% block extraoptions %}{% endblock %}</div>
<!-- The container for the uploaded files -->
<div class="drop-area empty">
<!-- The file input field used as target for the file upload widget -->
<input type="file" name="file" id="file" accept=".json" multiple/>
<span class="file-selector-empty"><label for="file">{% trans "Add a file" %}</label> {% trans "or drag and drop here." %}</span>
<div class="files hidden">
</div>
<span class="drop-area-received-msg hidden">{% trans "<b>Received</b>: " %}<span class="file-result"></span></span>
</div>
<div class="actions hidden">
<div class="buttons">
<div class="btn btn-default fileinput-button">
<i class="glyphicon glyphicon-plus"></i>
<label for="file" id="file-selector">{% trans "Add more files" %}</label>
</div>
<button type="submit" class="btn btn-primary pull-right start" id="upload-button" disabled>
<i class="glyphicon glyphicon-cloud-upload"></i>
<span>{% trans "Start" %}</span>
</button>
<button type="submit" class="btn btn-primary pull-right start hidden" id="go-button">
<i class="glyphicon glyphicon-play-circle"></i>
<span>{% trans "Process" %}</span>
</button>
</div>
</div>
</form>
</div>
</div>
{% endblock body %}

{% block scripts %}
Expand All @@ -106,6 +168,7 @@
<script src="{% static "js/jquery.fileupload-validate.js" %}"></script>
<script src="{% static "js/jquery.fileupload-ui.js" %}"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery.mask/1.14.15/jquery.mask.js"></script>
{% include "default/snippets/url_uploader_scripts.html" %}
{% include "jquery-file-upload/upload.html"%}
{% include "jquery-file-upload/download.html"%}
<script src="{% static "js/utils.js" %}"></script>
Expand Down
8 changes: 3 additions & 5 deletions default/templates/default/combine-packages.html
Original file line number Diff line number Diff line change
Expand Up @@ -8,16 +8,14 @@
{% block info %}
<p>
{% blocktrans trimmed %}
Drag and drop two or more
<a href="https://standard.open-contracting.org/latest/en/schema/release_package/" target="_blank">release packages</a>
Use this tool to combine <a href="https://standard.open-contracting.org/latest/en/schema/release_package/" target="_blank">release packages</a>
or <a href="https://standard.open-contracting.org/latest/en/schema/record_package/" target="_blank">record packages</a>
to combine them into a single package.
into a single package.
{% endblocktrans %}
{% trans "You can also click the <strong>Add a file</strong> link below." %}
</p>
<p>
{% trans "Fill in the <strong>Published date</strong> textbox to set <code>publishedDate</code> in the output package." %}
{% trans "Select the correct <strong>Package type</strong> option before uploading." %}
{% trans "Select the correct <strong>Package type</strong> option before starting." %}
</p>
<p>
{% trans "Each input file must be a JSON file containing either a single package or an array of packages." %}
Expand Down
13 changes: 5 additions & 8 deletions default/templates/default/compile.html
Original file line number Diff line number Diff line change
Expand Up @@ -8,15 +8,11 @@
{% block info %}
<p>
{% blocktrans trimmed %}
Drag and drop one or more
<a href="https://standard.open-contracting.org/latest/en/schema/release_package/" target="_blank">release packages</a>
to create a
Use this tool to create a
<a href="https://standard.open-contracting.org/latest/en/schema/record_package/" target="_blank">record package</a>
with compiled releases included.
with compiled releases included from <a href="https://standard.open-contracting.org/latest/en/schema/release_package/" target="_blank">release packages</a>.
{% endblocktrans %}
{% trans "You can also click the <strong>Add a file</strong> link below." %}
</p>

<p>
{% trans "Fill in the <strong>Published date</strong> textbox to set <code>publishedDate</code> in the output package." %}
{% blocktrans trimmed %}
Expand All @@ -25,8 +21,9 @@
<a href="https://standard.open-contracting.org/latest/en/schema/merging/" target="_blank">OCDS documentation</a>.
{% endblocktrans %}
</p>

<p>{% trans "Please verify that your files are release packages before uploading." %}</p>
<p>
{% trans "Please verify that your files are release packages before uploading." %}
</p>
{% endblock %}

{% block extraoptions %}
Expand Down
7 changes: 2 additions & 5 deletions default/templates/default/package-releases.html
Original file line number Diff line number Diff line change
Expand Up @@ -8,12 +8,9 @@
{% block info %}
<p>
{% blocktrans trimmed %}
Drag and drop one or more
<a href="https://standard.open-contracting.org/latest/en/getting_started/releases_and_records/#releases" target="_blank">releases</a>
to create a
<a href="https://standard.open-contracting.org/latest/en/schema/release_package/" target="_blank">release package</a>.
Use this tool to create a <a href="https://standard.open-contracting.org/latest/en/schema/release_package/" target="_blank">release package</a>
from <a href="https://standard.open-contracting.org/latest/en/getting_started/releases_and_records/#releases" target="_blank">releases</a>.
{% endblocktrans %}
{% trans "You can also click the <strong>Add a file</strong> link below." %}
</p>
<p>
{% trans "Fill in the <strong>Published date</strong> textbox to set <code>publishedDate</code> in the output package." %}
Expand Down
31 changes: 31 additions & 0 deletions default/templates/default/snippets/url_uploader_scripts.html
Original file line number Diff line number Diff line change
@@ -0,0 +1,31 @@
<script type="text/javascript">
(function(){
this.inputDelete = function (button) {
$(button).parents('.form-group').remove();
if ($('.input-url-container .btn.input-delete').length < 2) {
$('.input-url-container .btn.input-delete').attr('disabled', true);
}
};
$('.choice-header').on('change', function() {
if ($(this).is(':checked')) {
var allClasses = $(this).attr('class');
var operationIndex = allClasses.search(/toucan-nav-[^\s]+/);
var operationClass = allClasses.substring(operationIndex);
$('.panel-collapse.collapse ').not(this).collapse('hide');
$('.panel-collapse.collapse.' + operationClass).collapse('show');
}
});
$('#add-url').click(function () {
var numInputs = $('.input-url-container').children().length;
$('.input-url-container .btn.btn-danger').attr('disabled', false);
$('.input-url-container').append('<div class="form-group" id="input_url_' + numInputs + '">' +
'<div class="input-group">' +
'<input type="text" class="form-control" name="input_url_' + numInputs + '"/>' +
'<span class="input-group-btn">' +
'<button class="btn btn-danger input-delete" onclick="inputDelete(this)" type="button">x</button>' +
'</span>' +
'</div>' +
'</div>')
});
})();
</script>
Loading

0 comments on commit b49e5ef

Please sign in to comment.