diff --git a/app/main/forms.py b/app/main/forms.py index 20826e482eca6df3612c9c54be9c5833f9fe0c9b..a3ff4a639373ee4dc648a7cadffb52f327c20bac 100644 --- a/app/main/forms.py +++ b/app/main/forms.py @@ -1,6 +1,6 @@ from flask_wtf import FlaskForm from wtforms import (MultipleFileField, StringField, SubmitField, - ValidationError, IntegerField) + ValidationError, IntegerField, SelectField) from wtforms.validators import DataRequired, Length, NumberRange @@ -26,8 +26,27 @@ class AddCorpusFileForm(FlaskForm): class QueryForm(FlaskForm): - query = StringField('CQP Query', validators=[DataRequired()]) - # hits_per_page = IntegerField('Hits per page', - # validators=[DataRequired(), - # NumberRange(min=10, max=50)]) + query = StringField('CQP Query', validators=[DataRequired(), (Length(1, 1024))]) + hits_per_page = SelectField('Hits per page', + choices=[('', 'Nr. of hits per page'), + ('10', '10'), + ('20', '20'), + ('30', '30'), + ('40', '40'), + ('50', '50')], + validators=[DataRequired()], + default='30') + context = SelectField('Context', + choices=[('', 'Words of context around hit'), + ('5', '5'), + ('10', '10'), + ('15', '15'), + ('20', '20'), + ('25', '25')], + validators=[DataRequired()], + default='10') submit = SubmitField('Start Query') + + +class QueryDownloadForm(FlaskForm): + pass diff --git a/app/main/views.py b/app/main/views.py index bff10de17c8f428d7065630406c8888d2004d571..e2202423930e4517fd128408e1de279f1e6270f2 100644 --- a/app/main/views.py +++ b/app/main/views.py @@ -55,15 +55,24 @@ def corpus_download(corpus_id): @login_required def corpus_analysis(corpus_id): corpus = Corpus.query.get_or_404(corpus_id) + query = request.args.get('query') form = QueryForm() if form.validate_on_submit(): logger = logging.getLogger(__name__) logger.warning('Data has been sent!') + logger.warning('Data labels: {data}'.format(data=[data for data in form.data])) + logger.warning('Query: {q}'.format(q=form.query.data)) + logger.warning('Hits: {hits}'.format(hits=form.hits_per_page.data)) + logger.warning('Context: {context}'.format(context=form.context.data)) flash('Query has been sent!') - return redirect(url_for('main.corpus_analysis', corpus_id=corpus_id)) + query = form.query.data + logger.warning('Session query: {sq}'.format(sq=query)) + return redirect(url_for('main.corpus_analysis', corpus_id=corpus_id, + query=query)) return render_template('main/corpora/corpus_analysis.html.j2', corpus=corpus, form=form, + query=query, title='Corpus: ' + corpus.title) diff --git a/app/templates/main/corpora/corpus_analysis.html.j2 b/app/templates/main/corpora/corpus_analysis.html.j2 index 211e9f49941ca133a27e12eba02c80696e4b87bd..62919497766e7143f62c730b0082a32fd5e9dd8e 100644 --- a/app/templates/main/corpora/corpus_analysis.html.j2 +++ b/app/templates/main/corpora/corpus_analysis.html.j2 @@ -35,7 +35,7 @@ <span class="card-title">Query and analysis</span> <div class="input-field"> <i class="material-icons prefix">search</i> - <textarea id="{{ form.query.id }}" name="{{ form.query.id }}" required="" type="text" value="" class="materialize-textarea"></textarea> + <input autofocus size="1024" data-length="1024" id="{{ form.query.id }}" name="{{ form.query.id }}" required="" type="text" value="{{ query if query != None else '' }}"></input> {{ form.query.label }} {% for error in form.query.errors %} <span class="helper-text red-text">{{ error }}</span> @@ -44,7 +44,7 @@ <div class="right-align"> {{ form.submit(class='btn') }} </div> - <!-- <br> + <br> <span class="card-title">Help</span> <ul> <li> @@ -54,17 +54,26 @@ </ul> <br> <span class="card-title">Options</span> - <select> - <option value="" disabled selected>Choose your option</option> - <option value="1">10</option> - <option value="2">20</option> - <option value="3">25</option> - <option value="3">50</option> - </select> - <label>Materialize Select</label> <br> + <div class="input-field"> + <i class="material-icons prefix">format_list_numbered</i> + {{ form.hits_per_page() }} + {{ form.hits_per_page.label }} + {% for error in form.hits_per_page.errors %} + <span class="helper-text red-text">{{ error }}</span> + {% endfor %} + </div> + <br> + <div class="input-field"> + <i class="material-icons prefix">short_text</i> + {{ form.context() }} + {{ form.context.label }} + {% for error in form.context.errors %} + <span class="helper-text red-text">{{ error }}</span> + {% endfor %} + </div> <span class="card-title">Download Results</span> - </div> --> + </div> </form> </div> </div>