Review search scroll behavior
This commit is contained in:
@@ -118,17 +118,35 @@
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
#player-form {
|
#player {
|
||||||
&:not(.add) {
|
&.edit {
|
||||||
#search-form, #search-result {
|
#search-form, #search-result {
|
||||||
display: none;
|
display: none;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
&.create {
|
||||||
|
.popup-body {
|
||||||
|
padding-top: 0;
|
||||||
|
.needle {
|
||||||
|
padding-top: 0.25em;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
#search-form {
|
#search-form {
|
||||||
|
position: sticky;
|
||||||
|
top: 0;
|
||||||
|
z-index: 10;
|
||||||
|
}
|
||||||
|
#search-header {
|
||||||
|
position: relative;
|
||||||
|
background-color: white;
|
||||||
|
}
|
||||||
|
#search-wrapper {
|
||||||
position: relative;
|
position: relative;
|
||||||
}
|
}
|
||||||
#search-result {
|
#search-result {
|
||||||
|
text-align: left;
|
||||||
position: absolute;
|
position: absolute;
|
||||||
background-color: gray;
|
background-color: gray;
|
||||||
z-index: 2;
|
z-index: 2;
|
||||||
|
@@ -22,7 +22,7 @@ function searchResultShown() {
|
|||||||
function search(needle) {
|
function search(needle) {
|
||||||
needle = needle.trim();
|
needle = needle.trim();
|
||||||
if (needle && (needle === '*' || needle.length > 2)) {
|
if (needle && (needle === '*' || needle.length > 2)) {
|
||||||
let form = $('#player-form')[0];
|
let form = $('#search-form')[0];
|
||||||
let search = {
|
let search = {
|
||||||
needle: needle,
|
needle: needle,
|
||||||
// aga: form.val('aga'),
|
// aga: form.val('aga'),
|
||||||
@@ -44,6 +44,22 @@ function search(needle) {
|
|||||||
searchResult = result
|
searchResult = result
|
||||||
let html = resultTemplate.render(result);
|
let html = resultTemplate.render(result);
|
||||||
$('#search-result')[0].innerHTML = html;
|
$('#search-result')[0].innerHTML = html;
|
||||||
|
if (needle === '*') {
|
||||||
|
setTimeout(() => {
|
||||||
|
let scrollTo = $('#needle')[0].value.trim();
|
||||||
|
while (scrollTo.length > 0) {
|
||||||
|
let target = $(`#search-result .result-line[data-name^="${scrollTo}"i]`);
|
||||||
|
if (target.length > 0) {
|
||||||
|
target[0].scrollIntoView({ behavior: "smooth", block: "center" });
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
scrollTo = scrollTo.substring(0, scrollTo.length - 1);
|
||||||
|
}
|
||||||
|
}, 0);
|
||||||
|
} else {
|
||||||
|
let scrollable = $('#player .popup-body');
|
||||||
|
scrollable[0].scrollTop = 0;
|
||||||
|
}
|
||||||
} else console.log(result);
|
} else console.log(result);
|
||||||
});
|
});
|
||||||
} else {
|
} else {
|
||||||
@@ -88,7 +104,6 @@ function fillPlayer(player) {
|
|||||||
|
|
||||||
function addPlayers() {
|
function addPlayers() {
|
||||||
let form = $('#player-form')[0];
|
let form = $('#player-form')[0];
|
||||||
form.addClass('add');
|
|
||||||
// keep preliminary/final status
|
// keep preliminary/final status
|
||||||
let status = form.val('final') || false;
|
let status = form.val('final') || false;
|
||||||
form.reset();
|
form.reset();
|
||||||
@@ -202,7 +217,7 @@ onLoad(() => {
|
|||||||
player[origin] = value;
|
player[origin] = value;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (form.hasClass('add')) {
|
if ($('#player').hasClass('create')) {
|
||||||
api.postJson(`tour/${tour_id}/part`, player)
|
api.postJson(`tour/${tour_id}/part`, player)
|
||||||
.then(player => {
|
.then(player => {
|
||||||
if (player !== 'error') {
|
if (player !== 'error') {
|
||||||
@@ -245,7 +260,6 @@ onLoad(() => {
|
|||||||
for (r = 1; r <= tour_rounds; ++r) {
|
for (r = 1; r <= tour_rounds; ++r) {
|
||||||
form.val(`r${r}`, !(player.skip && player.skip.includes(r)));
|
form.val(`r${r}`, !(player.skip && player.skip.includes(r)));
|
||||||
}
|
}
|
||||||
form.removeClass('add');
|
|
||||||
$('#player').removeClass('create').addClass('edit');
|
$('#player').removeClass('create').addClass('edit');
|
||||||
$('#register').addClass('disabled');
|
$('#register').addClass('disabled');
|
||||||
modal('player');
|
modal('player');
|
||||||
|
@@ -88,66 +88,71 @@
|
|||||||
</div>
|
</div>
|
||||||
<div id="player" class="popup">
|
<div id="player" class="popup">
|
||||||
<div class="popup-body">
|
<div class="popup-body">
|
||||||
|
|
||||||
|
<form id="search-form" class="ui edit form">
|
||||||
|
<div id="search-header" class="five stackable fields">
|
||||||
|
#if($tour.country)
|
||||||
|
<div class="two wide field">
|
||||||
|
<div class="toggle">
|
||||||
|
<input id="countryFilter" name="countryFilter" type="checkbox" value="$tour.country"/>
|
||||||
|
<div class="search-param checkbox">
|
||||||
|
<div class="circle"></div>
|
||||||
|
</div>
|
||||||
|
<label>$tour.country.toUpperCase()</label>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
#end
|
||||||
|
<div class="needle eight wide field">
|
||||||
|
<div class="ui icon input">
|
||||||
|
<input id="needle" name="needle" type="text" placeholder="Search...">
|
||||||
|
<i id="clear-search" class="clickable close icon"></i>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
#* Disabled
|
||||||
|
<div class="two wide field">
|
||||||
|
<div class="toggle">
|
||||||
|
<input id="aga" name="aga" type="checkbox" value="true"/>
|
||||||
|
<div class="search-param checkbox">
|
||||||
|
<div class="circle"></div>
|
||||||
|
</div>
|
||||||
|
<label>AGA</label>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
*#
|
||||||
|
<div class="two wide field">
|
||||||
|
<div class="toggle" title="${utils.ratingsDates.egf|'no egf ratings'}">
|
||||||
|
<input id="egf" name="egf" type="checkbox" checked value="true"/>
|
||||||
|
<div class="search-param checkbox">
|
||||||
|
<div class="circle"></div>
|
||||||
|
</div>
|
||||||
|
<label>EGF</label>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="two wide field">
|
||||||
|
<div class="toggle" title="${utils.ratingsDates.ffg|'no ffg ratings'}">
|
||||||
|
<input id="ffg" name="ffg" type="checkbox" checked value="true"/>
|
||||||
|
<div class="search-param checkbox">
|
||||||
|
<div class="circle"></div>
|
||||||
|
</div>
|
||||||
|
<label>FFG</label>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="two wide field">
|
||||||
|
<button id="browse-players" type="button" class="ui basic icon button">
|
||||||
|
<i class="sort alphabet down icon"></i>
|
||||||
|
</button>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</form>
|
||||||
|
<div id="search-wrapper">
|
||||||
|
<div id="search-result"></div>
|
||||||
|
</div>
|
||||||
<form id="player-form" class="ui form edit">
|
<form id="player-form" class="ui form edit">
|
||||||
<input type="hidden" name="id"/>
|
<input type="hidden" name="id"/>
|
||||||
<input type="hidden" name="egf_id"/>
|
<input type="hidden" name="egf_id"/>
|
||||||
<input type="hidden" name="ffg_id"/>
|
<input type="hidden" name="ffg_id"/>
|
||||||
<!-- input type="hidden" name="aga"/> -->
|
<!-- input type="hidden" name="aga"/> -->
|
||||||
<div class="popup-content">
|
<div class="popup-content">
|
||||||
<div id="search-form" class="five stackable fields">
|
|
||||||
#if($tour.country)
|
|
||||||
<div class="two wide field">
|
|
||||||
<div class="toggle">
|
|
||||||
<input id="countryFilter" name="countryFilter" type="checkbox" value="$tour.country"/>
|
|
||||||
<div class="search-param checkbox">
|
|
||||||
<div class="circle"></div>
|
|
||||||
</div>
|
|
||||||
<label>$tour.country.toUpperCase()</label>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
#end
|
|
||||||
<div class="eight wide field">
|
|
||||||
<div class="ui icon input">
|
|
||||||
<input id="needle" name="needle" type="text" placeholder="Search...">
|
|
||||||
<i id="clear-search" class="clickable close icon"></i>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
#* Disabled
|
|
||||||
<div class="two wide field">
|
|
||||||
<div class="toggle">
|
|
||||||
<input id="aga" name="aga" type="checkbox" value="true"/>
|
|
||||||
<div class="search-param checkbox">
|
|
||||||
<div class="circle"></div>
|
|
||||||
</div>
|
|
||||||
<label>AGA</label>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
*#
|
|
||||||
<div class="two wide field">
|
|
||||||
<div class="toggle" title="${utils.ratingsDates.egf|'no egf ratings'}">
|
|
||||||
<input id="egf" name="egf" type="checkbox" checked value="true"/>
|
|
||||||
<div class="search-param checkbox">
|
|
||||||
<div class="circle"></div>
|
|
||||||
</div>
|
|
||||||
<label>EGF</label>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div class="two wide field">
|
|
||||||
<div class="toggle" title="${utils.ratingsDates.ffg|'no ffg ratings'}">
|
|
||||||
<input id="ffg" name="ffg" type="checkbox" checked value="true"/>
|
|
||||||
<div class="search-param checkbox">
|
|
||||||
<div class="circle"></div>
|
|
||||||
</div>
|
|
||||||
<label>FFG</label>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div class="two wide field">
|
|
||||||
<button id="browse-players" type="button" class="ui basic icon button">
|
|
||||||
<i class="sort alphabet down icon"></i>
|
|
||||||
</button>
|
|
||||||
</div>
|
|
||||||
<div id="search-result"></div>
|
|
||||||
</div>
|
|
||||||
<div class="player-fields">
|
<div class="player-fields">
|
||||||
<div class="two stackable fields">
|
<div class="two stackable fields">
|
||||||
<div class="eight wide field">
|
<div class="eight wide field">
|
||||||
@@ -297,7 +302,7 @@
|
|||||||
#[[
|
#[[
|
||||||
<script id="result" type="text/template">
|
<script id="result" type="text/template">
|
||||||
{{for #data}}
|
{{for #data}}
|
||||||
<div class="result-line" data-index="{{:#getIndex()}}">[{{:origin}}] {{:country}} - {{:name}} {{:firstname}} {{:rank}} ({{:club}}) {{if country === 'FR' && license !== 'L'}}<span class="darkred">non licencié</span>{{/if}}</div>
|
<div class="result-line" data-index="{{:#getIndex()}}" data-name="{{:name}}">[{{:origin}}] {{:country}} - {{:name}} {{:firstname}} {{:rank}} ({{:club}}) {{if country === 'FR' && license !== 'L'}}<span class="darkred">non licencié</span>{{/if}}</div>
|
||||||
{{/for}}
|
{{/for}}
|
||||||
</script>
|
</script>
|
||||||
<script type="text/javascript" src="/lib/jsrender-1.0.13/jsrender.min.js"></script>
|
<script type="text/javascript" src="/lib/jsrender-1.0.13/jsrender.min.js"></script>
|
||||||
|
Reference in New Issue
Block a user