2022-07-18 15:10:21 +00:00
|
|
|
<script src="https://cdnjs.cloudflare.com/ajax/libs/fast-json-patch/3.1.1/fast-json-patch.min.js" integrity="sha512-5uDdefwnzyq4N+SkmMBmekZLZNmc6dLixvVxCdlHBfqpyz0N3bzLdrJ55OLm7QrZmgZuhLGgHLDtJwU6RZoFCA==" crossorigin="anonymous" referrerpolicy="no-referrer"></script>
|
2021-12-09 11:50:14 +00:00
|
|
|
<script src="https://cdnjs.cloudflare.com/ajax/libs/list.js/2.3.1/list.min.js" integrity="sha512-93wYgwrIFL+b+P3RvYxi/WUFRXXUDSLCT2JQk9zhVGXuS2mHl2axj6d+R6pP+gcU5isMHRj1u0oYE/mWyt/RjA==" crossorigin="anonymous" referrerpolicy="no-referrer"></script>
|
2023-01-09 07:45:47 +00:00
|
|
|
<script src="https://cdnjs.cloudflare.com/ajax/libs/socket.io/4.5.4/socket.io.min.js" integrity="sha512-HTENHrkQ/P0NGDFd5nk6ibVtCkcM7jhr2c7GyvXp5O+4X6O5cQO9AhqFzM+MdeBivsX7Hoys2J7pp2wdgMpCvw==" crossorigin="anonymous" referrerpolicy="no-referrer"></script>
|
2023-06-21 06:46:08 +00:00
|
|
|
<script src="https://cdnjs.cloudflare.com/ajax/libs/plotly.js/2.24.2/plotly.min.js" integrity="sha512-dAXqGCq94D0kgLSPnfvd/pZpCMoJQpGj2S2XQmFQ9Ay1+96kbjss02ISEh+TBNXMggGg/1qoMcOHcxg+Op/Jmw==" crossorigin="anonymous" referrerpolicy="no-referrer"></script>
|
2023-07-06 11:02:22 +00:00
|
|
|
<script src="https://cdnjs.cloudflare.com/ajax/libs/pako/2.1.0/pako_inflate.min.js" integrity="sha512-mlnC6JeOvg9V4vBpWMxGKscsCdScB6yvGVCeFF2plnQMRmwH69s9F8SHPbC0oirqfePmRBhqx2s3Bx7WIvHfWg==" crossorigin="anonymous" referrerpolicy="no-referrer"></script>
|
2023-06-13 13:41:34 +00:00
|
|
|
|
2023-06-29 10:09:28 +00:00
|
|
|
{%- assets
|
|
|
|
filters='rjsmin',
|
|
|
|
output='gen/cqi.%(version)s.js',
|
|
|
|
'js/cqi/package.js',
|
|
|
|
'js/cqi/errors.js',
|
|
|
|
'js/cqi/status.js',
|
|
|
|
'js/cqi/api/package.js',
|
|
|
|
'js/cqi/api/client.js',
|
|
|
|
'js/cqi/models/package.js',
|
|
|
|
'js/cqi/models/resource.js',
|
|
|
|
'js/cqi/models/attributes.js',
|
|
|
|
'js/cqi/models/subcorpora.js',
|
|
|
|
'js/cqi/models/corpora.js',
|
|
|
|
'js/cqi/client.js'
|
|
|
|
%}
|
|
|
|
<script src="{{ ASSET_URL }}"></script>
|
|
|
|
{%- endassets %}
|
2021-12-09 14:39:45 +00:00
|
|
|
{%- assets
|
|
|
|
filters='rjsmin',
|
2022-02-15 08:25:34 +00:00
|
|
|
output='gen/app.%(version)s.js',
|
|
|
|
'js/App.js',
|
2022-09-02 11:07:30 +00:00
|
|
|
'js/Utils.js',
|
2022-02-15 08:25:34 +00:00
|
|
|
'js/CorpusAnalysis/CorpusAnalysisApp.js',
|
|
|
|
'js/CorpusAnalysis/CorpusAnalysisConcordance.js',
|
|
|
|
'js/CorpusAnalysis/CorpusAnalysisReader.js',
|
2023-07-11 13:52:44 +00:00
|
|
|
'js/CorpusAnalysis/CorpusAnalysisStaticVisualization.js',
|
2022-09-07 12:56:40 +00:00
|
|
|
'js/CorpusAnalysis/QueryBuilder.js',
|
2023-03-08 10:42:53 +00:00
|
|
|
'js/XMLtoObject.js'
|
|
|
|
%}
|
|
|
|
<script src="{{ ASSET_URL }}"></script>
|
|
|
|
{%- endassets %}
|
|
|
|
{%- assets
|
|
|
|
filters='rjsmin',
|
|
|
|
output='gen/Forms.%(version)s.js',
|
|
|
|
'js/Forms/Form.js',
|
|
|
|
'js/Forms/CreateCorpusFileForm.js',
|
|
|
|
'js/Forms/CreateJobForm.js',
|
|
|
|
'js/Forms/CreateContributionForm.js'
|
|
|
|
%}
|
|
|
|
<script src="{{ ASSET_URL }}"></script>
|
|
|
|
{%- endassets %}
|
|
|
|
{%- assets
|
|
|
|
filters='rjsmin',
|
|
|
|
output='gen/ResourceDisplays.%(version)s.js',
|
|
|
|
'js/ResourceDisplays/ResourceDisplay.js',
|
|
|
|
'js/ResourceDisplays/CorpusDisplay.js',
|
|
|
|
'js/ResourceDisplays/JobDisplay.js'
|
|
|
|
%}
|
|
|
|
<script src="{{ ASSET_URL }}"></script>
|
|
|
|
{%- endassets %}
|
|
|
|
{%- assets
|
|
|
|
filters='rjsmin',
|
|
|
|
output='gen/ResourceLists.%(version)s.js',
|
2023-01-04 19:00:37 +00:00
|
|
|
'js/ResourceLists/ResourceList.js',
|
|
|
|
'js/ResourceLists/CorpusFileList.js',
|
|
|
|
'js/ResourceLists/CorpusList.js',
|
2023-02-09 13:03:03 +00:00
|
|
|
'js/ResourceLists/PublicCorpusList.js',
|
2023-01-04 19:00:37 +00:00
|
|
|
'js/ResourceLists/JobList.js',
|
|
|
|
'js/ResourceLists/JobInputList.js',
|
|
|
|
'js/ResourceLists/JobResultList.js',
|
|
|
|
'js/ResourceLists/SpacyNLPPipelineModelList.js',
|
|
|
|
'js/ResourceLists/TesseractOCRPipelineModelList.js',
|
2023-01-11 12:47:09 +00:00
|
|
|
'js/ResourceLists/UserList.js',
|
2023-01-09 07:45:47 +00:00
|
|
|
'js/ResourceLists/AdminUserList.js',
|
2023-06-06 13:39:47 +00:00
|
|
|
'js/ResourceLists/CorpusFollowerList.js',
|
2023-06-13 13:41:34 +00:00
|
|
|
'js/ResourceLists/CorpusTextInfoList.js',
|
2023-06-06 13:39:47 +00:00
|
|
|
'js/ResourceLists/DetailledPublicCorpusList.js'
|
2023-03-08 10:42:53 +00:00
|
|
|
%}
|
|
|
|
<script src="{{ ASSET_URL }}"></script>
|
|
|
|
{%- endassets %}
|
|
|
|
{%- assets
|
|
|
|
filters='rjsmin',
|
|
|
|
output='gen/Requests.%(version)s.js',
|
|
|
|
'js/Requests/Requests.js',
|
2023-03-29 12:32:35 +00:00
|
|
|
'js/Requests/admin/admin.js',
|
2023-03-09 11:07:16 +00:00
|
|
|
'js/Requests/contributions/contributions.js',
|
|
|
|
'js/Requests/contributions/spacy_nlp_pipeline_models.js',
|
|
|
|
'js/Requests/contributions/tesseract_ocr_pipeline_models.js',
|
2023-03-09 13:55:08 +00:00
|
|
|
'js/Requests/corpora/corpora.js',
|
|
|
|
'js/Requests/corpora/files.js',
|
2023-03-09 13:56:44 +00:00
|
|
|
'js/Requests/corpora/followers.js',
|
2023-03-13 12:29:01 +00:00
|
|
|
'js/Requests/jobs/jobs.js',
|
2023-04-06 06:42:21 +00:00
|
|
|
'js/Requests/users/users.js',
|
|
|
|
'js/Requests/users/settings.js'
|
2021-12-09 14:39:45 +00:00
|
|
|
%}
|
2021-05-28 13:51:23 +00:00
|
|
|
<script src="{{ ASSET_URL }}"></script>
|
2021-12-09 14:39:45 +00:00
|
|
|
{%- endassets %}
|
2021-05-28 13:51:23 +00:00
|
|
|
<script>
|
2021-12-09 14:39:45 +00:00
|
|
|
const app = new App();
|
|
|
|
{%- if current_user.is_authenticated %}
|
|
|
|
const currentUserId = {{ current_user.hashid|tojson }};
|
|
|
|
|
|
|
|
// Initialize components for current user
|
2023-01-03 16:03:47 +00:00
|
|
|
app.subscribeUser(currentUserId)
|
|
|
|
.catch((error) => {throw JSON.stringify(error);});
|
|
|
|
app.getUser(currentUserId, true, true)
|
|
|
|
.catch((error) => {throw JSON.stringify(error);});
|
2021-12-09 14:39:45 +00:00
|
|
|
{%- endif %}
|
|
|
|
|
2021-05-28 13:51:23 +00:00
|
|
|
// Disable all option elements with no value
|
2023-01-03 16:03:47 +00:00
|
|
|
for (let optionElement of document.querySelectorAll('option[value=""]')) {
|
|
|
|
optionElement.disabled = true;
|
2021-12-09 14:39:45 +00:00
|
|
|
}
|
2023-05-31 14:10:05 +00:00
|
|
|
for (let optgroupElement of document.querySelectorAll('optgroup[label=""]')) {
|
|
|
|
for (let c of optgroupElement.children) {
|
|
|
|
optgroupElement.parentElement.insertAdjacentElement('afterbegin', c);
|
|
|
|
}
|
|
|
|
optgroupElement.remove();
|
|
|
|
|
|
|
|
}
|
2023-01-03 16:03:47 +00:00
|
|
|
// Set the data-length attribute on textareas/inputs with the maxlength attribute
|
|
|
|
for (let inputElement of document.querySelectorAll('textarea[maxlength], input[maxlength]')) {
|
2022-04-12 14:11:24 +00:00
|
|
|
inputElement.dataset.length = inputElement.getAttribute('maxlength');
|
|
|
|
}
|
|
|
|
|
2021-12-09 14:39:45 +00:00
|
|
|
// Initialize components
|
2021-05-28 13:51:23 +00:00
|
|
|
M.AutoInit();
|
2022-12-12 14:37:33 +00:00
|
|
|
M.CharacterCounter.init(document.querySelectorAll('input[data-length], textarea[data-length]'));
|
2021-12-09 14:39:45 +00:00
|
|
|
M.Dropdown.init(
|
|
|
|
document.querySelectorAll('#nav-more-dropdown-trigger'),
|
|
|
|
{alignment: 'right', constrainWidth: false, coverTrigger: false}
|
|
|
|
);
|
2023-01-04 19:00:37 +00:00
|
|
|
ResourceList.autoInit();
|
2022-09-02 11:07:30 +00:00
|
|
|
Form.autoInit();
|
2021-12-09 14:39:45 +00:00
|
|
|
|
|
|
|
// Display flashed messages
|
2023-01-03 16:03:47 +00:00
|
|
|
for (let [category, message] of {{ get_flashed_messages(with_categories=True)|tojson }}) {
|
|
|
|
app.flash(message, message);
|
2021-12-09 14:39:45 +00:00
|
|
|
}
|
2023-04-13 14:08:07 +00:00
|
|
|
|
2023-04-18 09:32:04 +00:00
|
|
|
// Initialize manual modal
|
|
|
|
let manualModalTableOfContentsElement = document.querySelector('#manual-modal-table-of-contents');
|
|
|
|
let manualModalTableOfContents = M.Tabs.init(manualModalTableOfContentsElement);
|
|
|
|
let manualModalElement = document.querySelector('#manual-modal');
|
|
|
|
let manualModal = M.Modal.init(
|
|
|
|
manualModalElement,
|
|
|
|
{
|
|
|
|
onOpenStart: (manualModalElement, modalTriggerElement) => {
|
|
|
|
if ('manualModalChapter' in modalTriggerElement.dataset) {
|
|
|
|
manualModalTableOfContents.select(modalTriggerElement.dataset.manualModalChapter);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
);
|
|
|
|
|
2023-04-13 14:08:07 +00:00
|
|
|
// Initialize terms of use modal
|
|
|
|
const termsOfUseModal = document.getElementById('terms-of-use-modal');
|
|
|
|
M.Modal.init(
|
|
|
|
termsOfUseModal,
|
|
|
|
{
|
|
|
|
dismissible: false,
|
|
|
|
onCloseEnd: () => {
|
2023-04-17 07:43:12 +00:00
|
|
|
Requests.users.entity.acceptTermsOfUse();
|
2023-04-13 14:08:07 +00:00
|
|
|
}
|
|
|
|
}
|
|
|
|
);
|
2023-04-17 07:43:12 +00:00
|
|
|
{% if current_user.is_authenticated and not current_user.terms_of_use_accepted %}
|
2023-04-13 14:08:07 +00:00
|
|
|
termsOfUseModal.M_Modal.open();
|
|
|
|
{% endif %}
|
|
|
|
|
2021-05-28 13:51:23 +00:00
|
|
|
</script>
|