Merge branch 'master' of github.com:ornicar/lila into v2
* 'master' of github.com:ornicar/lila: fix /@/<user>/search after #4973 Make date picker label appear on same line as date picker Use flatpickr instead of native input field Add datepicker to search menumore-scalatags
commit
66bf448e26
|
@ -89,6 +89,11 @@ trait AssetHelper { self: I18nHelper with SecurityHelper =>
|
|||
val flatpickrTag = raw {
|
||||
s"""<script defer src="${staticUrl("javascripts/vendor/flatpickr.min.js")}"></script>"""
|
||||
}
|
||||
|
||||
val nonAsyncFlatpickrTag = Html {
|
||||
s"""<script defer src="${staticUrl("javascripts/vendor/flatpickr.min.js")}"></script>"""
|
||||
}
|
||||
|
||||
def delayFlatpickrStart(implicit ctx: Context) = embedJs {
|
||||
"""$(function() { setTimeout(function() { $(".flatpickr").flatpickr(); }, 2000) });"""
|
||||
}
|
||||
|
|
|
@ -51,13 +51,7 @@ private[gameSearch] final class DataForm {
|
|||
}
|
||||
|
||||
private[gameSearch] object DataForm {
|
||||
|
||||
val DateDelta = """\d++[a-z]""".r
|
||||
private val dateConstraint = Constraints.pattern(
|
||||
regex = DateDelta,
|
||||
error = "Invalid date."
|
||||
)
|
||||
val dateField = optional(nonEmptyText.verifying(dateConstraint))
|
||||
val dateField = optional(ISODateOrTimestamp.isoDateOrTimestamp)
|
||||
}
|
||||
|
||||
private[gameSearch] case class SearchData(
|
||||
|
@ -76,8 +70,8 @@ private[gameSearch] case class SearchData(
|
|||
durationMin: Option[Int] = None,
|
||||
durationMax: Option[Int] = None,
|
||||
clock: SearchClock = SearchClock(),
|
||||
dateMin: Option[String] = None,
|
||||
dateMax: Option[String] = None,
|
||||
dateMin: Option[DateTime] = None,
|
||||
dateMax: Option[DateTime] = None,
|
||||
status: Option[Int] = None,
|
||||
analysed: Option[Int] = None,
|
||||
sort: Option[SearchSort] = None
|
||||
|
@ -100,7 +94,7 @@ private[gameSearch] case class SearchData(
|
|||
aiLevel = Range(aiLevelMin, aiLevelMax),
|
||||
duration = Range(durationMin, durationMax),
|
||||
clock = Clocking(clock.initMin, clock.initMax, clock.incMin, clock.incMax),
|
||||
date = Range(dateMin flatMap toDate, dateMax flatMap toDate),
|
||||
date = Range(dateMin, dateMax),
|
||||
status = status,
|
||||
analysed = analysed map (_ == 1),
|
||||
whiteUser = players.cleanWhite,
|
||||
|
@ -110,16 +104,6 @@ private[gameSearch] case class SearchData(
|
|||
|
||||
def nonEmptyQuery = Some(query).filter(_.nonEmpty)
|
||||
|
||||
import DataForm.DateDelta
|
||||
|
||||
private def toDate(delta: String): Option[DateTime] = delta match {
|
||||
case DateDelta(n, "h") => parseIntOption(n) map DateTime.now.minusHours
|
||||
case DateDelta(n, "d") => parseIntOption(n) map DateTime.now.minusDays
|
||||
case DateDelta(n, "w") => parseIntOption(n) map DateTime.now.minusWeeks
|
||||
case DateDelta(n, "m") => parseIntOption(n) map DateTime.now.minusMonths
|
||||
case DateDelta(n, "y") => parseIntOption(n) map DateTime.now.minusYears
|
||||
case _ => None
|
||||
}
|
||||
}
|
||||
|
||||
private[gameSearch] case class SearchPlayer(
|
||||
|
|
|
@ -85,4 +85,11 @@ $(function() {
|
|||
$form.find("input,select").filter(function() { return !this.value; }).attr("disabled", "disabled");
|
||||
$form.addClass('searching');
|
||||
});
|
||||
|
||||
$form.find(".flatpickr").flatpickr({
|
||||
maxDate: 'today',
|
||||
dateFormat: 'Z',
|
||||
altInput: true,
|
||||
altFormat: 'Y-m-d h:i K'
|
||||
});
|
||||
});
|
||||
|
|
|
@ -38,6 +38,12 @@ form.search .half select {
|
|||
width: 78%;
|
||||
}
|
||||
|
||||
form.search .half .flatpickr {
|
||||
width: 74.93%; /* this will make the date picker just as large as the select */
|
||||
border: 1px solid rgb(169, 169, 169);
|
||||
padding: 0.5% 1%;
|
||||
}
|
||||
|
||||
form.search input.submit {
|
||||
width: 99%;
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue