Review languages and locales; fix start/end dates and timings formats
This commit is contained in:
@@ -70,6 +70,7 @@
|
||||
<link rel="stylesheet" href="/css/main.css"/>
|
||||
<script type="text/javascript">
|
||||
const lang = '${request.lang}';
|
||||
const locale = '${request.locale}';
|
||||
// #[[
|
||||
onLoad(() => {
|
||||
$('#lang').on('click', e => {
|
||||
|
@@ -3,11 +3,11 @@
|
||||
|
||||
<toolbox scope="application">
|
||||
<tool key="translate" class="org.jeudego.pairgoth.view.TranslationTool"/>
|
||||
<tool key="strings" class="org.apache.commons.lang3.StringUtils"/>
|
||||
<!--
|
||||
<tool key="number" format="#0.00"/>
|
||||
<tool key="date" locale="fr_FR" format="yyyy-MM-dd"/>
|
||||
<tool key="inflector" class="org.atteo.evo.inflector.English"/>
|
||||
<tool key="strings" class="org.apache.commons.lang3.StringUtils"/>
|
||||
-->
|
||||
</toolbox>
|
||||
|
||||
|
@@ -1,4 +1,5 @@
|
||||
#macro(toHMS $value)#if($value)#set($hh = $value / 3600)#set($mm = ($value - $hh) / 60)#set($ss = $value % 60)$hh:$mm:$ss#end#end
|
||||
#macro(twoDigits $value)$strings.leftPad($value, 2, '0')#end
|
||||
#macro(toHMS $value)#if($value)#set($hh = $value / 3600)#set($mm = ($value % 3600) / 60)#set($ss = $value % 60)#twoDigits($hh):#twoDigits($mm):#twoDigits($ss)#end#end
|
||||
#macro(levels $sel)
|
||||
#foreach($d in [8..0])
|
||||
#set($dan = $d + 1)
|
||||
@@ -37,19 +38,20 @@
|
||||
<label>Dates</label>
|
||||
<span id="date-range">
|
||||
from
|
||||
<input type="date" name="startDate" required class="date" placeholder="start date" #if($tour) value="$tour.startDate" #end/>
|
||||
<input type="text" name="startDate" required class="date" placeholder="start date" #if($tour) value="$tour.startDate" #end/>
|
||||
to
|
||||
<input type="date" name="endDate" required class="date" placeholder="end date" #if($tour) value="$tour.startDate" #end/>
|
||||
<input type="text" name="endDate" required class="date" placeholder="end date" #if($tour) value="$tour.startDate" #end/>
|
||||
</span>
|
||||
</div>
|
||||
</div>
|
||||
<div class="two stackable fields">
|
||||
<div class="seven wide field">
|
||||
<label>Country</label>
|
||||
<select name="country">
|
||||
<select name="country" placeholder="country">
|
||||
<option></option>
|
||||
#set($defaultCountry = $translate.defaultCountry[$request.lang])
|
||||
#foreach($country in $countries.countries)
|
||||
<option value="$country.key" #if($tour && $country.key == $tour.country || !$tour && $country.key == $request.lang) selected #end>$country.value</option>
|
||||
<option value="$country.key" #if($tour && $country.key == $tour.country || !$tour && $country.key == $defaultCountry) selected #end>$country.value</option>
|
||||
#end
|
||||
</select>
|
||||
</div>
|
||||
@@ -216,24 +218,29 @@
|
||||
#if($tour)
|
||||
const tour_id = ${tour.id};
|
||||
#end
|
||||
// #[[
|
||||
#set($datepickerLocale = $translate.datepickerLocale($request.lang, $request.loc))
|
||||
const datepickerLocale = '$datepickerLocale';
|
||||
// #[[ale
|
||||
const safeRegex = /^[-a-zA-Z0-9_.]+$/;
|
||||
function parseDate(value) {
|
||||
return value;
|
||||
/*
|
||||
let locale = Datepicker.locales[lang];
|
||||
if (locale) {
|
||||
let date = Datepicker.parseDate(value, locale.format, locale);
|
||||
return Datepicker.formatDate(date, 'yyyy-mm-dd')
|
||||
}
|
||||
else return undefined;
|
||||
*/
|
||||
let format = Datepicker.locales[datepickerLocale]?.format || 'mm/dd/yyyy';
|
||||
let date = Datepicker.parseDate(value, format, datepickerLocale);
|
||||
return Datepicker.formatDate(date, 'yyyy-mm-dd')
|
||||
}
|
||||
function formatDate(value) {
|
||||
let format = Datepicker.locales[datepickerLocale]?.format || 'mm/dd/yyyy';
|
||||
let date = Datepicker.parseDate(value, 'yyyy-mm-dd', datepickerLocale);
|
||||
return Datepicker.formatDate(date, format)
|
||||
}
|
||||
function fromHMS(value) {
|
||||
if (value && /\d+:\d+:\d+/.test(value)) {
|
||||
let parts = value.split(':');
|
||||
return parts[0] * 3600 + parts[1] * 60 + parts[2];
|
||||
let seconds = parts[0] * 3600 + parts[1] * 60 + parts[2] * 1;
|
||||
console.log(`${value} => ${seconds}`);
|
||||
return seconds;
|
||||
}
|
||||
console.log(`invalid hh:mm:ss value: ${value}`);
|
||||
return 0;
|
||||
}
|
||||
onLoad(() => {
|
||||
|
||||
@@ -265,9 +272,15 @@
|
||||
if (!valid) return;
|
||||
});
|
||||
|
||||
for(let name of ['startDate', 'endDate']) {
|
||||
let control = $(`input[name="${name}"]`)[0];
|
||||
if (control.value) {
|
||||
control.value = formatDate(control.value);
|
||||
}
|
||||
}
|
||||
new DateRangePicker($('#date-range')[0], {
|
||||
autohide: true,
|
||||
language: lang
|
||||
language: datepickerLocale || 'en'
|
||||
});
|
||||
|
||||
$('input[name="online"]').on('change', e => {
|
||||
@@ -361,13 +374,14 @@
|
||||
}
|
||||
});
|
||||
});
|
||||
|
||||
// ]]#
|
||||
</script>
|
||||
<!--
|
||||
<script type="text/javascript" src="/lib/datepicker-1.3.3/datepicker-full.min.js"></script>
|
||||
<script type="text/javascript" src="/lib/datepicker-1.3.3/locales/${request.lang}.js"></script>
|
||||
<link rel="stylesheet" href="/lib/datepicker-1.3.3/datepicker.min.css">
|
||||
-->
|
||||
<script type="text/javascript" src="/lib/datepicker-1.3.4/datepicker-full#*.min*#.js"></script>
|
||||
#if($datepickerLocale != 'en')
|
||||
<script type="text/javascript" src="/lib/datepicker-1.3.4/locales/${datepickerLocale}.js"></script>
|
||||
#end
|
||||
<link rel="stylesheet" href="/lib/datepicker-1.3.4/datepicker.min.css">
|
||||
<style type="text/css">
|
||||
.ui.form input[type=checkbox][name=online] {
|
||||
vertical-align: initial;
|
||||
|
Reference in New Issue
Block a user