# TODO: question element form -
make_elem_form = (args) -> $ """
"""
generate_results = () ->
# TODO: use the parameters specified to display example words, and a
# count
form = $(this).parents('form')
elems = form.find('.form-control:enabled')
vals = {}
for e in elems
name = $(e).attr('name').replace(/-\d$/, '')
if name == 'elem-name'
continue
val = $(e).val()
vals[name] = val
# semtypes
# pos
# element-tag
query_kwargs = {}
if vals.semtypes
query_kwargs.semtypes = vals.semtypes.join(',')
if vals.pos
query_kwargs.pos = vals.pos
if vals['element-tag']
query_kwargs.tag = vals['element-tag']
uri = 'http://localhost:8000/nuorti/builder/api/words/'
$.ajax
url: uri
data: query_kwargs
dataType: "json"
type: "GET"
success: (result) ->
console.log result
lemmas = (w.lemma for w in result.results)
form.find('.count').html(result.count)
form.find('.words li').remove()
for l in lemmas.slice(0, 4)
form.find('.words').append($("
#{l}
"))
return false
toggle_available = () ->
if $(this).is(':checked')
$(this).parents('.form-group').find('.form-control[name]').attr('disabled', false)
else
$(this).parents('.form-group').find('.form-control[name]').attr('disabled', true)
render_element_form = (to_element, word_index) ->
# This is a two step thing: request options, then do the get request
word_tag = $(to_element).find('.word-step-1 :selected').attr('data-tag')
word_fullform = $(to_element).attr('data-wordform')
# TODO: populate tag menu with possible tags for POS, select current
# word form
#
# TODO: calculate number of possibilities for this element
#
render_results = (options, result) ->
# if length of results is greater than 1, we have a problem
wordform = result.results[0]
$(to_element).find('.word-step-1').toggle()
# make the base form
form = make_elem_form
word_index: word_index
form.find('.enabler').click toggle_available
$(to_element).append form
semtypes = (s.semtype for s in wordform.word.semtype)
semtype_list = form.find("select[name=semtypes-#{word_index}]")
pos_list = form.find("select[name=pos-#{word_index}]")
tag_list = form.find("select[name=element-tag-#{word_index}]")
for word_semtype in semtypes
semtype_list.append $ ""
for available_semtype in options.possible_values.semtypes
semtype_list.append $ ""
for p in options.possible_values.pos
if p == wordform.word.pos
pos_list.append $ ""
else
pos_list.append $ ""
for t in options.possible_values.tags
if t == word_tag
tag_list.append $ ""
else
tag_list.append $ ""
form.find('button[type=generate]').click generate_results
uri = 'http://localhost:8000/nuorti/builder/api/forms/'
params =
fullform: word_fullform
tag: word_tag
get_word = (word_options_result) ->
$.ajax
url: uri
data: params
dataType: "json"
type: "GET"
success: (word_results) ->
render_results(word_options_result, word_results)
w_uri = 'http://localhost:8000/nuorti/builder/api/words/'
$.ajax
url: w_uri
data: params
dataType: "json"
type: "OPTIONS"
success: get_word
return form
render_analysis_choice = () ->
selected = $(this).find ' :selected'
console.log selected
tag = selected.attr('data-tag')
lemma = selected.attr('data-lemma')
word_index = $(this).parents('[data-word]').attr('data-word')
console.log [lemma, tag, word_index]
render_element_form($(this).parents('.word_column'), word_index)
render_analysis_options = (word_index, word_form) ->
form_base = $("""
""")
render_choice = (f) -> $ """
"""
render_results = (result) ->
forms = result.results
select_menu = form_base.find('select')
if result.count > 0
for f in forms
select_menu.append(render_choice(f))
select_menu.change render_analysis_choice
else
form_base.find('p.note').remove()
form_base.find('select').attr('disabled', true)
form_base.prepend($("
No matching forms
"))
uri = 'http://localhost:8000/nuorti/builder/api/forms/'
params =
fullform: word_form
$.ajax
url: uri
data: params
dataType: "json"
type: "GET"
success: render_results
# TODO: add events for changing the choice menu
return form_base
render_search_menu = () ->
if $(this).is(':checked')
word = $(event.target).attr('data-word')
wordform = $(event.target).attr('data-wordform')
word_column = $ "div.word_column[data-word=#{word}]"
word_column.append render_analysis_options(word, wordform)
else
word = $(event.target).attr('data-word')
$(".word-step-1[data-word=#{word}]").remove()
$(".word-step-2[data-word=#{word}]").remove()
return false
render_question_column = (ws) ->
for w, i in ws
column_check_elem = """