В Play нет тега выбора даты/времени, причина довольно проста: поскольку Play — это фреймворк, а не CMS, по умолчанию нет внешней библиотеки, включенные теги Bootstrap де-факто помещаются в Play... случайно :).
В прошлый раз, когда мне понадобилось такое поле, я использовал комбинацию двух плагинов Bootstrap:
Поскольку они мне нравятся по отдельности... Конечно, вы можете поискать другое решение, объединяющее средства выбора даты и времени, например: http://dl.dropbox.com/u/143355/datepicker/datepicker.html, все зависит от ваших потребностей и используемых решений FE (если вы не используете Bootstrap, вы можете для например, используйте образцы jQuery UI).
Редактировать: helpers
представляют собой не что иное, как готовые к использованию мини-шаблоны, встроенные в Play, написанные с использованием синтаксиса Scala для динамических частей, единственной задачей которых является создание фрагментов HTML. Как я уже сказал, в Play нет такой большой библиотеки, как вы показали, однако вы также можете написать такие вещи (т.е. в пакет tags
) также с динамическими параметрами, а затем использовать их точно так же, как они были помощниками.
На самом деле я использую эти упомянутые плагины Bootstrap таким образом:
app/views/tags/datePickerJs.scala.html
<!-- first line has to be empty, as that's place for defining views arguments - remove this comment...-->
<script type="text/javascript">
function setToday(datePickerSetId) {
var currentServerDate = "@DatepickerUtils.getCurrentDate()";
var currentServerTime = "@DatepickerUtils.getCurrentTime()";
$("#" + datePickerSetId + "Date").val(currentServerDate);
$("#" + datePickerSetId + "Time").val(currentServerTime);
$("#" + datePickerSetId + "DateContainer").data('date', currentServerDate);
$("#" + datePickerSetId + "DateContainer").datepicker('update');
}
</script>
app/views/tags/dateTimePicker.scala.html
@(label: String, prefix: String, dateString: String=null)
<label for="@{prefix}Date">@label </label>
<btn id="@{prefix}" class="datePickerSetNow btn pull-left" onclick="setToday('@{prefix}'); return false;">teraz</btn>
<div class="input-append date pull-left datePickerDateContainer" id="@{prefix}DateContainer" data-date='@DatepickerUtils.splitDateTime(dateString, 0, true)' da$
<input class="span2" size="16" type="text" value='@DatepickerUtils.splitDateTime(dateString, 0)' name="@{prefix}Date" id="@{prefix}Date">
<span class="add-on"><i class="icon-calendar"></i></span>
</div>
<div class="input-append bootstrap-timepicker-component datePickerTimeContainer">
<input type="text" class="@{prefix}Time input-small" name="@{prefix}Time" id="@{prefix}Time">
<span class="add-on"><i class="icon-time"></i></span>
</div>
<script type="text/javascript">
$('#@{prefix}DateContainer').datepicker({weekStart:1, language:'pl'});
$('#@{prefix}Time').timepicker({
minuteStep:5, template:'dropdown', showMeridian:false, defaultTime:'@DatepickerUtils.splitDateTime(dateString, 1)'
});</script>
Таким образом, в любом представлении вы можете использовать его позже:
@tags.dateTimePicker(
"Event's start",
"eventStartDate",
myForm("eventStart").value
)
@tags.dateTimePicker(
"Event's end",
"eventEndDate",
myForm("eventEnd").value
)
<!-- once per view at the end -->
@tags.datePickerJs()
Конечно, этот пример для Bootsrtap подготовлен для моих полей и требует дополнительных методов в классах Java, поэтому без изменений он не будет работать. В общем хочу продемонстрировать вам идею tags
.
Конечно, я согласен с вами, что было бы идеально, если бы подобный API был доступен для простой установки для фреймворка Play, но я не уверен, планируют ли это разработчики Play... Вы должны спросить их. Скорее всего, это задача для автономного модуля, который нацелен на какую-то библиотеку JS, потому что, как я писал ранее, нет библиотеки внешнего интерфейса по умолчанию, которую вы должны использовать.
person
biesior
schedule
23.09.2012