Rework list handling

This commit is contained in:
Patrick Jentsch
2020-12-15 14:38:52 +01:00
parent 85385ef7e4
commit 1b5b935a28
7 changed files with 354 additions and 232 deletions

View File

@ -36,16 +36,16 @@
</div>
</div>
<div class="col s12 l6">
<div class="col s12 l6" id="corpora" data-user-id="{{ user.id }}">
<h3>Corpora</h3>
<div class="card">
<div class="card-content" id="corpora">
<div class="card-content">
<div class="input-field">
<i class="material-icons prefix">search</i>
<input id="search-corpus" class="search" type="search"></input>
<label for="search-corpus">Search corpus</label>
</div>
<table class="highlight">
<table class="highlight ressource-list">
<thead>
<tr>
<th></th>
@ -64,16 +64,16 @@
</div>
</div>
<div class="col s12 l6">
<div class="col s12 l6" id="jobs" data-user-id="{{ user.id }}">
<h3>Jobs</h3>
<div class="card">
<div class="card-content" id="jobs">
<div class="card-content">
<div class="input-field">
<i class="material-icons prefix">search</i>
<input id="search-job" class="search" type="search"></input>
<label for="search-job">Search job</label>
</div>
<table class="highlight">
<table class="highlight ressource-list">
<thead>
<tr>
<th><span class="sort" data-sort="service">Service</span></th>
@ -109,10 +109,9 @@
{% block scripts %}
{{ super() }}
<script type="module">
import {RessourceList} from '{{ url_for('static', filename='js/nopaque.lists.js') }}';
let corpusList = new RessourceList("corpora", nopaque.foreignCorporaSubscribers, "Corpus");
let jobList = new RessourceList("jobs", nopaque.foreignJobsSubscribers, "Job");
nopaque.socket.emit("foreign_user_data_stream_init", {{ user.id }});
<script>
nopaque.appClient.loadUser({{ user.id }});
let corpusList = new CorpusList(document.querySelector('#corpora'));
let jobList = new JobList(document.querySelector('#jobs'));
</script>
{% endblock scripts %}

View File

@ -29,7 +29,7 @@
<input id="search-corpus" class="search" type="search"></input>
<label for="search-corpus">Search corpus</label>
</div>
<table class="highlight">
<table class="highlight ressource-list">
<thead>
<tr>
<th></th>
@ -102,7 +102,7 @@
<input id="search-job" class="search" type="search"></input>
<label for="search-job">Search job</label>
</div>
<table class="highlight">
<table class="highlight ressource-list">
<thead>
<tr>
<th><span class="sort" data-sort="service">Service</span></th>
@ -175,10 +175,9 @@
{% block scripts %}
{{ super() }}
<script type="module">
import {CorpusList, JobList, QueryResultList} from '../../static/js/nopaque.lists.js';
let corpusList = new CorpusList("corpora");
let jobList = new JobList("jobs");
let queryResultList = new QueryResultList("query-results");
<script>
let corpusList = new CorpusList(document.querySelector('#corpora'));
let jobList = new JobList(document.querySelector('#jobs'));
let queryResultList = new QueryResultList(document.querySelector('#query-results'));
</script>
{% endblock scripts %}

View File

@ -244,28 +244,29 @@
{% block scripts %}
{{ super() }}
{% if current_user.setting_dark_mode %}
<script src="{{ url_for('static', filename='js/darkreader.js') }}"></script>
<script>
DarkReader.enable({brightness: 150, contrast: 100, sepia: 0});
</script>
{% endif %}
<script src="{{ url_for('static', filename='js/jsonpatch.min.js') }}"></script>
<script src="{{ url_for('static', filename='js/list.min.js') }}"></script>
<script src="{{ url_for('static', filename='js/socket.io.slim.js') }}"></script>
<script src="{{ url_for('static', filename='js/nopaque.js') }}"></script>
<script src="{{ url_for('static', filename='js/nopaque.lists.js') }}"></script>
<script>
{% if current_user.setting_dark_mode %}
DarkReader.enable({brightness: 150, contrast: 100, sepia: 0});
{% endif %}
// Disable all option elements with no value
for (let optionElement of document.querySelectorAll('option[value=""]')) {
optionElement.disabled = true;
}
for (let optionElement of document.querySelectorAll('option[value=""]')) {optionElement.disabled = true;}
M.AutoInit();
M.CharacterCounter.init(document.querySelectorAll('input[data-length][type="email"], input[data-length][type="password"], input[data-length][type="text"], textarea[data-length]'));
M.Dropdown.init(document.querySelectorAll('#nav-more-dropdown-trigger'), {alignment: 'right', constrainWidth: false, coverTrigger: false});
nopaque.Forms.init();
for (let flashedMessage of {{ get_flashed_messages(with_categories=True)|tojson }}) {nopaque.flash(flashedMessage[1], flashedMessage[0]);}
</script>
<script>
{% if current_user.is_authenticated %}
nopaque.socket.emit('user_data_stream_init');
nopaque.appClient = new AppClient({{ current_user.id }});
{% endif %}
for (let flashedMessage of {{ get_flashed_messages(with_categories=True)|tojson }}) {
nopaque.flash(flashedMessage[1], flashedMessage[0]);
}
</script>
{% endblock scripts %}