82 lines
2.6 KiB
JavaScript
82 lines
2.6 KiB
JavaScript
function searchHandle(tmid) {
|
|
var concordiaRequest = {
|
|
operation: 'concordiaSearch',
|
|
tmId: tmid,
|
|
pattern:$("#searchInput").val()
|
|
}
|
|
|
|
$.ajax({
|
|
url: concordiaUrl,
|
|
type: 'post',
|
|
dataType: 'json',
|
|
success: function (data) {
|
|
$('#result').html(renderResult(data));
|
|
},
|
|
data: JSON.stringify(concordiaRequest)
|
|
});
|
|
}
|
|
|
|
function renderResult(data) {
|
|
var res = '';
|
|
|
|
var score = data['result']['bestOverlayScore']*100;
|
|
|
|
res += '<div id="result-score">Concordia score: <b>'+score.toFixed(0)+'%</b></div>';
|
|
|
|
var inputSentence = $('#searchInput').val();
|
|
var markedSentence = '';
|
|
var fragments = '';
|
|
lastInsertedEnd = 0;
|
|
for(var i = 0; i < data['result']['bestOverlay'].length; i++) {
|
|
var fragment = data['result']['bestOverlay'][i];
|
|
//previous unmarked fragment
|
|
markedSentence += inputSentence.slice(lastInsertedEnd, fragment['matchedPatternStart']);
|
|
|
|
//the marked fragment
|
|
markedSentence += '<span onclick="displayDetails(this, '+i+')" class="matchedFragment">'+inputSentence.slice(fragment['matchedPatternStart'], fragment['matchedPatternEnd'])+'</span>';
|
|
|
|
lastInsertedEnd = fragment['matchedPatternEnd'];
|
|
|
|
fragments += renderFragment(fragment, i);
|
|
}
|
|
|
|
//remaining unmarked fragment
|
|
markedSentence += inputSentence.slice(lastInsertedEnd);
|
|
|
|
res += '<div id="result-sentence">'+markedSentence+'</div>';
|
|
|
|
res += '<br/><br/><br/>'+fragments;
|
|
|
|
return res;
|
|
}
|
|
|
|
function renderFragment(fragment, number) {
|
|
var result = '<div style="display:none" id="fragment'+number+'" class="fragmentDetails"><table><tr><td>';
|
|
|
|
var sourceSegment = fragment['sourceSegment'];
|
|
result += sourceSegment.slice(0, fragment['matchedExampleStart']);
|
|
result += '<span class="matchedFragment">';
|
|
result += sourceSegment.slice(fragment['matchedExampleStart'], fragment['matchedExampleEnd']);
|
|
result += '</span>';
|
|
result += sourceSegment.slice(fragment['matchedExampleEnd']);
|
|
|
|
result += '</td></tr><tr><td>'+fragment['targetSegment']+'</td></tr></table></div>';
|
|
return result;
|
|
}
|
|
|
|
function displayDetails(caller, number) {
|
|
$('#result-sentence .matchedFragmentSelected').attr("class","matchedFragment");
|
|
caller.className='matchedFragmentSelected';
|
|
$('.fragmentDetails').css('display', 'none');
|
|
$('#fragment'+number).css('display', 'block');
|
|
}
|
|
|
|
function searchText(text) {
|
|
$("#searchInput").val(text);
|
|
searchHandle();
|
|
}
|
|
|
|
function showHideSuggestions() {
|
|
$('#suggestions').toggleClass('suggestionsInvisible');
|
|
}
|