diff --git a/app/setup/FilterConfig.scala b/app/setup/FilterConfig.scala index c3e65feabe..c8c265f39d 100644 --- a/app/setup/FilterConfig.scala +++ b/app/setup/FilterConfig.scala @@ -60,7 +60,7 @@ object FilterConfig { variant ← filter.getAs[Int]("v") mode ← filter.getAs[Int]("m") speed ← filter.getAs[Int]("s") - eloDiff = ~filter.getAs[Int]("e") + eloDiff ← filter.getAs[Int]("e") config ← RawFilterConfig(variant, mode, speed, eloDiff).decode } yield config } diff --git a/app/setup/SetupHelper.scala b/app/setup/SetupHelper.scala index b10106390a..011c553e8b 100644 --- a/app/setup/SetupHelper.scala +++ b/app/setup/SetupHelper.scala @@ -21,4 +21,11 @@ trait SetupHelper { self: I18nHelper ⇒ def translatedSpeedChoices(implicit ctx: Context) = Speed.all map { s ⇒ s.id.toString -> (s.toString + " - " + StringHelper.ucFirst(s.name)) } + + def eloDiffChoices(elo: Int)(implicit ctx: Context) = FilterConfig.eloDiffs map { diff ⇒ + diff -> (diff == 0).fold( + trans.eloRange.str(), + "%d - %d (+-%d)".format(elo - diff, elo + diff, diff) + ) + } } diff --git a/app/templating/AssetHelper.scala b/app/templating/AssetHelper.scala index 98e888877d..eb76c1ca38 100644 --- a/app/templating/AssetHelper.scala +++ b/app/templating/AssetHelper.scala @@ -7,7 +7,7 @@ import play.api.templates.Html trait AssetHelper { - val assetVersion = 39 + val assetVersion = 40 def cssTag(name: String) = css("stylesheets/" + name) diff --git a/app/views/setup/filter.scala.html b/app/views/setup/filter.scala.html index 0000f80f19..60af1cd06a 100644 --- a/app/views/setup/filter.scala.html +++ b/app/views/setup/filter.scala.html @@ -3,9 +3,10 @@ @helper.form(action = routes.Setup.filter(), 'novalidate -> "novalidate") { @base.select(form("variant"), translatedVariantChoices, trans.variant.str().some) @base.select(form("speed"), translatedSpeedChoices, trans.timeControl.str().some) -@if(ctx.isAuth) { -@base.select(form("mode"), translatedModeChoices,trans.mode.str().some) -} else { +@ctx.me.map { me => +@base.select(form("mode"), translatedModeChoices, trans.mode.str().some) +@base.select(form("eloDiff"), eloDiffChoices(me.elo)) +}.getOrElse { @base.select(form("mode"), translatedModeChoices take 1) }
diff --git a/public/javascripts/big.js b/public/javascripts/big.js index 41597d1e59..c0de113e20 100644 --- a/public/javascripts/big.js +++ b/public/javascripts/big.js @@ -1531,8 +1531,7 @@ var lichess_translations = []; $a.removeClass('active'); }); }, 10); - $(this).toggleClass('active'); - if($(this).hasClass('active')) { + if($(this).toggleClass('active').hasClass('active')) { var $filter = $div.fadeIn(200); if ($filter.is(':empty')) { $.ajax({ @@ -1704,9 +1703,9 @@ var lichess_translations = []; var hook = $(this).data('hook'); var hide = (filter.variant != null && filter.variant != hook.variant) || (filter.mode != null && filter.mode != hook.mode) || - (filter.speed != null && filter.speed != hook.speed); - hide = hide && (hook.action != 'cancel'); - $(this).toggleClass('none', hide); + (filter.speed != null && filter.speed != hook.speed) || + (filter.eloDiff > 0 && (!hook.elo || hook.elo > (myElo + filter.eloDiff) || hook.elo < (myElo - filter.eloDiff))); + $(this).toggleClass('none', hide && (hook.action != 'cancel')); }); var nbVisibleHooks = $hooksTable.find('tr.hook:not(.none)').length; @@ -1715,7 +1714,7 @@ var lichess_translations = []; $wrap .toggleClass("large", nbVisibleHooks > 6) .find('a.filter') - .toggleClass('on', filter.mode != null || filter.variant != null || filter.speed != null) + .toggleClass('on', filter.mode != null || filter.variant != null || filter.speed != null || filter.eloDiff > 0) .find('span.number').text('(' + $hooksTable.find('tr.hook.none').length + ')'); } diff --git a/todo b/todo index c06d2567b1..5a27a2c4bf 100644 --- a/todo +++ b/todo @@ -54,5 +54,8 @@ traduction intégrale block user creation from an IP mute IP time color toward end http://fr.lichess.org/forum/lichess-feedback/suggestion-time-color-towards-end#5 -finish elo filter! fast join game = creator not redirected properly? + +deploy +------ +db.config.update({_id:"thibault"},{$unset:{filter:true}}, {multi: true})