Client - add dropdown to select timezone in user preferences
This commit is contained in:
Vendored
+1
-1
@@ -1 +1 @@
|
|||||||
<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><meta name="viewport" content="width=device-width,initial-scale=1"><!--[if IE]><link rel="icon" href="/favicon.ico"><![endif]--><link rel="stylesheet" href="/static/css/fork-awesome.min.css"><link rel="stylesheet" href="/static/css/leaflet.css"><title>FitTrackee</title><link href="/static/css/admin.96bd05ff.css" rel="prefetch"><link href="/static/css/main.3128d1ad.css" rel="prefetch"><link href="/static/css/main~workouts.b5b213a7.css" rel="prefetch"><link href="/static/css/profile.38ea27d6.css" rel="prefetch"><link href="/static/css/reset.5be7fe9e.css" rel="prefetch"><link href="/static/css/workouts.29d75144.css" rel="prefetch"><link href="/static/js/admin.4047df15.js" rel="prefetch"><link href="/static/js/chunk-2d0c9189.c81458cc.js" rel="prefetch"><link href="/static/js/chunk-2d0cf391.020c75ea.js" rel="prefetch"><link href="/static/js/chunk-2d0da8f3.c8c3e7e8.js" rel="prefetch"><link href="/static/js/chunk-2d2248b6.d84473c1.js" rel="prefetch"><link href="/static/js/chunk-2d22523a.4b710d99.js" rel="prefetch"><link href="/static/js/main.265d6693.js" rel="prefetch"><link href="/static/js/main~workouts.aa540c70.js" rel="prefetch"><link href="/static/js/profile.7e87449f.js" rel="prefetch"><link href="/static/js/reset.98679f6c.js" rel="prefetch"><link href="/static/js/workouts.52ba33b8.js" rel="prefetch"><link href="/static/css/app.eff81d02.css" rel="preload" as="style"><link href="/static/js/app.c4a3f999.js" rel="preload" as="script"><link href="/static/js/chunk-vendors.c7e5773d.js" rel="preload" as="script"><link href="/static/css/app.eff81d02.css" rel="stylesheet"><link rel="icon" type="image/png" sizes="32x32" href="/img/icons/favicon-32x32.png"><link rel="icon" type="image/png" sizes="16x16" href="/img/icons/favicon-16x16.png"><link rel="manifest" href="/manifest.json"><meta name="theme-color" content="#4DBA87"><meta name="apple-mobile-web-app-capable" content="no"><meta name="apple-mobile-web-app-status-bar-style" content="default"><meta name="apple-mobile-web-app-title" content="fittrackee_client"><link rel="apple-touch-icon" href="/img/icons/apple-touch-icon-152x152.png"><link rel="mask-icon" href="/img/icons/safari-pinned-tab.svg" color="#4DBA87"><meta name="msapplication-TileImage" content="/img/icons/msapplication-icon-144x144.png"><meta name="msapplication-TileColor" content="#000000"></head><body><noscript><strong>We're sorry but FitTrackee doesn't work properly without JavaScript enabled. Please enable it to continue.</strong></noscript><div id="app"></div><script src="/static/js/chunk-vendors.c7e5773d.js"></script><script src="/static/js/app.c4a3f999.js"></script></body></html>
|
<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><meta name="viewport" content="width=device-width,initial-scale=1"><!--[if IE]><link rel="icon" href="/favicon.ico"><![endif]--><link rel="stylesheet" href="/static/css/fork-awesome.min.css"><link rel="stylesheet" href="/static/css/leaflet.css"><title>FitTrackee</title><link href="/static/css/admin.2e1912ed.css" rel="prefetch"><link href="/static/css/main.0baa26a6.css" rel="prefetch"><link href="/static/css/main~workouts.2563ccfd.css" rel="prefetch"><link href="/static/css/profile.14a2947f.css" rel="prefetch"><link href="/static/css/reset.3e6931c7.css" rel="prefetch"><link href="/static/css/workouts.d952f3cf.css" rel="prefetch"><link href="/static/js/admin.4047df15.js" rel="prefetch"><link href="/static/js/chunk-2d0c9189.c81458cc.js" rel="prefetch"><link href="/static/js/chunk-2d0cf391.020c75ea.js" rel="prefetch"><link href="/static/js/chunk-2d0da8f3.c8c3e7e8.js" rel="prefetch"><link href="/static/js/chunk-2d2248b6.d84473c1.js" rel="prefetch"><link href="/static/js/chunk-2d22523a.4b710d99.js" rel="prefetch"><link href="/static/js/main.265d6693.js" rel="prefetch"><link href="/static/js/main~workouts.aa540c70.js" rel="prefetch"><link href="/static/js/profile.7e87449f.js" rel="prefetch"><link href="/static/js/reset.98679f6c.js" rel="prefetch"><link href="/static/js/workouts.52ba33b8.js" rel="prefetch"><link href="/static/css/app.88c1cb13.css" rel="preload" as="style"><link href="/static/js/app.e01bf3f7.js" rel="preload" as="script"><link href="/static/js/chunk-vendors.5928fb7f.js" rel="preload" as="script"><link href="/static/css/app.88c1cb13.css" rel="stylesheet"><link rel="icon" type="image/png" sizes="32x32" href="/img/icons/favicon-32x32.png"><link rel="icon" type="image/png" sizes="16x16" href="/img/icons/favicon-16x16.png"><link rel="manifest" href="/manifest.json"><meta name="theme-color" content="#4DBA87"><meta name="apple-mobile-web-app-capable" content="no"><meta name="apple-mobile-web-app-status-bar-style" content="default"><meta name="apple-mobile-web-app-title" content="fittrackee_client"><link rel="apple-touch-icon" href="/img/icons/apple-touch-icon-152x152.png"><link rel="mask-icon" href="/img/icons/safari-pinned-tab.svg" color="#4DBA87"><meta name="msapplication-TileImage" content="/img/icons/msapplication-icon-144x144.png"><meta name="msapplication-TileColor" content="#000000"></head><body><noscript><strong>We're sorry but FitTrackee doesn't work properly without JavaScript enabled. Please enable it to continue.</strong></noscript><div id="app"></div><script src="/static/js/chunk-vendors.5928fb7f.js"></script><script src="/static/js/app.e01bf3f7.js"></script></body></html>
|
||||||
+25
-25
@@ -64,7 +64,7 @@ self.__precacheManifest = (self.__precacheManifest || []).concat([
|
|||||||
"url": "/img/workouts/mountains.svg"
|
"url": "/img/workouts/mountains.svg"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"revision": "d007b6ca755d57b83cdffe3017ac1ddc",
|
"revision": "ac27cacdce535196c127b4f950b04fcf",
|
||||||
"url": "/index.html"
|
"url": "/index.html"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
@@ -76,12 +76,12 @@ self.__precacheManifest = (self.__precacheManifest || []).concat([
|
|||||||
"url": "/robots.txt"
|
"url": "/robots.txt"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"revision": "cc693cb7a0e0db74a0f8",
|
"revision": "2a55f1c804bfc2c51c03",
|
||||||
"url": "/static/css/admin.96bd05ff.css"
|
"url": "/static/css/admin.2e1912ed.css"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"revision": "c44c6acce4f7f5de5c16",
|
"revision": "45aeb8689961e0a5de78",
|
||||||
"url": "/static/css/app.eff81d02.css"
|
"url": "/static/css/app.88c1cb13.css"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"revision": "82c1118c918377daaa71a320ab8eea42",
|
"revision": "82c1118c918377daaa71a320ab8eea42",
|
||||||
@@ -92,24 +92,24 @@ self.__precacheManifest = (self.__precacheManifest || []).concat([
|
|||||||
"url": "/static/css/leaflet.css"
|
"url": "/static/css/leaflet.css"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"revision": "c636dca2ff8f2e69fec2",
|
"revision": "4f21a8566a32a3eaa6cc",
|
||||||
"url": "/static/css/main.3128d1ad.css"
|
"url": "/static/css/main.0baa26a6.css"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"revision": "6d573d49ccf8697d7a42",
|
"revision": "44ec9db1f0dd0bd662ad",
|
||||||
"url": "/static/css/main~workouts.b5b213a7.css"
|
"url": "/static/css/main~workouts.2563ccfd.css"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"revision": "3f008aeedc1ab0c22041",
|
"revision": "d13a074cdc41830448c5",
|
||||||
"url": "/static/css/profile.38ea27d6.css"
|
"url": "/static/css/profile.14a2947f.css"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"revision": "7809fba7be881924ee97",
|
"revision": "eaff42a53248eac38103",
|
||||||
"url": "/static/css/reset.5be7fe9e.css"
|
"url": "/static/css/reset.3e6931c7.css"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"revision": "84ea3e9043f1583d46c6",
|
"revision": "c3c3a3c7444bd3448bda",
|
||||||
"url": "/static/css/workouts.29d75144.css"
|
"url": "/static/css/workouts.d952f3cf.css"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"revision": "e719f9244c69e28e7d00e725ca1e280e",
|
"revision": "e719f9244c69e28e7d00e725ca1e280e",
|
||||||
@@ -192,12 +192,12 @@ self.__precacheManifest = (self.__precacheManifest || []).concat([
|
|||||||
"url": "/static/img/pt-sans-v9-latin-regular.f1f73e45.svg"
|
"url": "/static/img/pt-sans-v9-latin-regular.f1f73e45.svg"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"revision": "cc693cb7a0e0db74a0f8",
|
"revision": "2a55f1c804bfc2c51c03",
|
||||||
"url": "/static/js/admin.4047df15.js"
|
"url": "/static/js/admin.4047df15.js"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"revision": "c44c6acce4f7f5de5c16",
|
"revision": "45aeb8689961e0a5de78",
|
||||||
"url": "/static/js/app.c4a3f999.js"
|
"url": "/static/js/app.e01bf3f7.js"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"revision": "bd7d183c9f68e5f4027d",
|
"revision": "bd7d183c9f68e5f4027d",
|
||||||
@@ -220,27 +220,27 @@ self.__precacheManifest = (self.__precacheManifest || []).concat([
|
|||||||
"url": "/static/js/chunk-2d22523a.4b710d99.js"
|
"url": "/static/js/chunk-2d22523a.4b710d99.js"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"revision": "8a5827b5b86b68554e15",
|
"revision": "639fd68690c8714c6f5c",
|
||||||
"url": "/static/js/chunk-vendors.c7e5773d.js"
|
"url": "/static/js/chunk-vendors.5928fb7f.js"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"revision": "c636dca2ff8f2e69fec2",
|
"revision": "4f21a8566a32a3eaa6cc",
|
||||||
"url": "/static/js/main.265d6693.js"
|
"url": "/static/js/main.265d6693.js"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"revision": "6d573d49ccf8697d7a42",
|
"revision": "44ec9db1f0dd0bd662ad",
|
||||||
"url": "/static/js/main~workouts.aa540c70.js"
|
"url": "/static/js/main~workouts.aa540c70.js"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"revision": "3f008aeedc1ab0c22041",
|
"revision": "d13a074cdc41830448c5",
|
||||||
"url": "/static/js/profile.7e87449f.js"
|
"url": "/static/js/profile.7e87449f.js"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"revision": "7809fba7be881924ee97",
|
"revision": "eaff42a53248eac38103",
|
||||||
"url": "/static/js/reset.98679f6c.js"
|
"url": "/static/js/reset.98679f6c.js"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"revision": "84ea3e9043f1583d46c6",
|
"revision": "c3c3a3c7444bd3448bda",
|
||||||
"url": "/static/js/workouts.52ba33b8.js"
|
"url": "/static/js/workouts.52ba33b8.js"
|
||||||
}
|
}
|
||||||
]);
|
]);
|
||||||
Vendored
+1
-1
@@ -14,7 +14,7 @@
|
|||||||
importScripts("https://storage.googleapis.com/workbox-cdn/releases/4.3.1/workbox-sw.js");
|
importScripts("https://storage.googleapis.com/workbox-cdn/releases/4.3.1/workbox-sw.js");
|
||||||
|
|
||||||
importScripts(
|
importScripts(
|
||||||
"/precache-manifest.a85c48ea1aa2f9a87ce7d226e746d8e8.js"
|
"/precache-manifest.4d775da2b435165a0140d391654cdbc7.js"
|
||||||
);
|
);
|
||||||
|
|
||||||
workbox.core.setCacheNameDetails({prefix: "fittrackee_client"});
|
workbox.core.setCacheNameDetails({prefix: "fittrackee_client"});
|
||||||
|
|||||||
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
+1
File diff suppressed because one or more lines are too long
-1
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
-2
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
+2
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
+3
-3
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
@@ -0,0 +1,132 @@
|
|||||||
|
<template>
|
||||||
|
<div id="tz-dropdown">
|
||||||
|
<input
|
||||||
|
class="tz-dropdown-input"
|
||||||
|
id="timezone"
|
||||||
|
name="timezone"
|
||||||
|
:value="timezone"
|
||||||
|
:disabled="disabled"
|
||||||
|
required
|
||||||
|
@keydown.esc="onUpdateTimezone(input)"
|
||||||
|
@keydown.enter="onEnter"
|
||||||
|
@input="openDropdown"
|
||||||
|
/>
|
||||||
|
<ul class="tz-dropdown-list" v-if="isOpen" ref="tzList">
|
||||||
|
<li
|
||||||
|
v-for="(tz, index) in timeZones.filter((t) => matchTimezone(t))"
|
||||||
|
:key="tz"
|
||||||
|
class="tz-dropdown-item"
|
||||||
|
:class="{ focus: index === focusItemIndex }"
|
||||||
|
@click="onUpdateTimezone(tz)"
|
||||||
|
@mouseover="onMouseOver(index)"
|
||||||
|
:autofocus="index === focusItemIndex"
|
||||||
|
>
|
||||||
|
{{ tz }}
|
||||||
|
</li>
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script lang="ts">
|
||||||
|
import { Ref, defineComponent, ref, watch } from 'vue'
|
||||||
|
|
||||||
|
import { timeZones } from '@/utils/timezone'
|
||||||
|
|
||||||
|
export default defineComponent({
|
||||||
|
name: 'TimezoneDropdown',
|
||||||
|
props: {
|
||||||
|
disabled: {
|
||||||
|
type: Boolean,
|
||||||
|
default: false,
|
||||||
|
},
|
||||||
|
input: {
|
||||||
|
type: String,
|
||||||
|
required: true,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
emits: ['updateTimezone'],
|
||||||
|
setup(props, { emit }) {
|
||||||
|
const timezone: Ref<string> = ref(props.input)
|
||||||
|
const isOpen: Ref<boolean> = ref(false)
|
||||||
|
const tzList: Ref<HTMLInputElement | null> = ref(null)
|
||||||
|
const focusItemIndex: Ref<number> = ref(0)
|
||||||
|
|
||||||
|
function matchTimezone(t: string): RegExpMatchArray | null {
|
||||||
|
return t.toLowerCase().match(timezone.value.toLowerCase())
|
||||||
|
}
|
||||||
|
function onMouseOver(index: number) {
|
||||||
|
focusItemIndex.value = index
|
||||||
|
}
|
||||||
|
function onUpdateTimezone(value: string) {
|
||||||
|
timezone.value = value
|
||||||
|
isOpen.value = false
|
||||||
|
emit('updateTimezone', value)
|
||||||
|
}
|
||||||
|
function onEnter(event: Event & { target: HTMLInputElement }) {
|
||||||
|
event.preventDefault()
|
||||||
|
if (tzList.value?.firstElementChild?.innerHTML) {
|
||||||
|
onUpdateTimezone(tzList.value?.firstElementChild?.innerHTML)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
function openDropdown(event: Event & { target: HTMLInputElement }) {
|
||||||
|
event.preventDefault()
|
||||||
|
isOpen.value = true
|
||||||
|
timezone.value = event.target.value.trim()
|
||||||
|
}
|
||||||
|
|
||||||
|
watch(
|
||||||
|
() => props.input,
|
||||||
|
(value) => {
|
||||||
|
timezone.value = value
|
||||||
|
}
|
||||||
|
)
|
||||||
|
|
||||||
|
return {
|
||||||
|
focusItemIndex,
|
||||||
|
isOpen,
|
||||||
|
timezone,
|
||||||
|
timeZones,
|
||||||
|
tzList,
|
||||||
|
matchTimezone,
|
||||||
|
onEnter,
|
||||||
|
onMouseOver,
|
||||||
|
onUpdateTimezone,
|
||||||
|
openDropdown,
|
||||||
|
}
|
||||||
|
},
|
||||||
|
})
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<style lang="scss" scoped>
|
||||||
|
@import '~@/scss/base.scss';
|
||||||
|
|
||||||
|
#tz-dropdown {
|
||||||
|
display: flex;
|
||||||
|
flex-direction: column;
|
||||||
|
position: relative;
|
||||||
|
|
||||||
|
.tz-dropdown-list {
|
||||||
|
background-color: var(--input-bg-color);
|
||||||
|
border-radius: $border-radius;
|
||||||
|
border: solid 1px var(--input-border-color);
|
||||||
|
padding: $default-padding * 0.5 0;
|
||||||
|
position: absolute;
|
||||||
|
overflow-y: auto;
|
||||||
|
top: 20px;
|
||||||
|
left: 0;
|
||||||
|
right: 0;
|
||||||
|
max-height: 200px;
|
||||||
|
width: inherit;
|
||||||
|
}
|
||||||
|
.tz-dropdown-item {
|
||||||
|
cursor: pointer;
|
||||||
|
font-size: 0.9em;
|
||||||
|
font-weight: normal;
|
||||||
|
padding: $default-padding * 0.5;
|
||||||
|
|
||||||
|
&.focus {
|
||||||
|
background-color: var(--dropdown-hover-color);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</style>
|
||||||
@@ -15,12 +15,12 @@
|
|||||||
</option>
|
</option>
|
||||||
</select>
|
</select>
|
||||||
</label>
|
</label>
|
||||||
<label class="form-items" for="timezone">
|
<label class="form-items">
|
||||||
{{ $t('user.PROFILE.TIMEZONE') }}
|
{{ $t('user.PROFILE.TIMEZONE') }}
|
||||||
<input
|
<TimezoneDropdown
|
||||||
id="timezone"
|
:input="userForm.timezone"
|
||||||
v-model="userForm.timezone"
|
|
||||||
:disabled="loading"
|
:disabled="loading"
|
||||||
|
@updateTimezone="updateTZ"
|
||||||
/>
|
/>
|
||||||
</label>
|
</label>
|
||||||
<label class="form-items">
|
<label class="form-items">
|
||||||
@@ -61,6 +61,7 @@
|
|||||||
onMounted,
|
onMounted,
|
||||||
} from 'vue'
|
} from 'vue'
|
||||||
|
|
||||||
|
import TimezoneDropdown from '@/components/User/ProfileEdition/TimezoneDropdown.vue'
|
||||||
import { AUTH_USER_STORE, ROOT_STORE } from '@/store/constants'
|
import { AUTH_USER_STORE, ROOT_STORE } from '@/store/constants'
|
||||||
import { IUserProfile, IUserPreferencesPayload } from '@/types/user'
|
import { IUserProfile, IUserPreferencesPayload } from '@/types/user'
|
||||||
import { useStore } from '@/use/useStore'
|
import { useStore } from '@/use/useStore'
|
||||||
@@ -68,6 +69,9 @@
|
|||||||
|
|
||||||
export default defineComponent({
|
export default defineComponent({
|
||||||
name: 'UserPreferencesEdition',
|
name: 'UserPreferencesEdition',
|
||||||
|
components: {
|
||||||
|
TimezoneDropdown,
|
||||||
|
},
|
||||||
props: {
|
props: {
|
||||||
user: {
|
user: {
|
||||||
type: Object as PropType<IUserProfile>,
|
type: Object as PropType<IUserProfile>,
|
||||||
@@ -115,6 +119,9 @@
|
|||||||
userForm
|
userForm
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
function updateTZ(value: string) {
|
||||||
|
userForm.timezone = value
|
||||||
|
}
|
||||||
|
|
||||||
return {
|
return {
|
||||||
availableLanguages,
|
availableLanguages,
|
||||||
@@ -123,6 +130,7 @@
|
|||||||
userForm,
|
userForm,
|
||||||
weekStart,
|
weekStart,
|
||||||
updateProfile,
|
updateProfile,
|
||||||
|
updateTZ,
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
})
|
})
|
||||||
|
|||||||
@@ -20,6 +20,7 @@
|
|||||||
--card-border-color: #c4c7cf;
|
--card-border-color: #c4c7cf;
|
||||||
--input-border-color: #9da3af;
|
--input-border-color: #9da3af;
|
||||||
--input-bg-color: #FFFFFF;
|
--input-bg-color: #FFFFFF;
|
||||||
|
--dropdown-hover-color: #eff0f5;
|
||||||
|
|
||||||
--custom-checkbox-border-color: #9da3af;
|
--custom-checkbox-border-color: #9da3af;
|
||||||
--custom-checkbox-checked-bg-color: #9da3af;
|
--custom-checkbox-checked-bg-color: #9da3af;
|
||||||
|
|||||||
@@ -0,0 +1,350 @@
|
|||||||
|
export const timeZones = [
|
||||||
|
'Africa/Abidjan',
|
||||||
|
'Africa/Accra',
|
||||||
|
'Africa/Algiers',
|
||||||
|
'Africa/Bissau',
|
||||||
|
'Africa/Cairo',
|
||||||
|
'Africa/Casablanca',
|
||||||
|
'Africa/Ceuta',
|
||||||
|
'Africa/El_Aaiun',
|
||||||
|
'Africa/Johannesburg',
|
||||||
|
'Africa/Juba',
|
||||||
|
'Africa/Khartoum',
|
||||||
|
'Africa/Lagos',
|
||||||
|
'Africa/Maputo',
|
||||||
|
'Africa/Monrovia',
|
||||||
|
'Africa/Nairobi',
|
||||||
|
'Africa/Ndjamena',
|
||||||
|
'Africa/Sao_Tome',
|
||||||
|
'Africa/Tripoli',
|
||||||
|
'Africa/Tunis',
|
||||||
|
'Africa/Windhoek',
|
||||||
|
'America/Adak',
|
||||||
|
'America/Anchorage',
|
||||||
|
'America/Araguaina',
|
||||||
|
'America/Argentina/Buenos_Aires',
|
||||||
|
'America/Argentina/Catamarca',
|
||||||
|
'America/Argentina/Cordoba',
|
||||||
|
'America/Argentina/Jujuy',
|
||||||
|
'America/Argentina/La_Rioja',
|
||||||
|
'America/Argentina/Mendoza',
|
||||||
|
'America/Argentina/Rio_Gallegos',
|
||||||
|
'America/Argentina/Salta',
|
||||||
|
'America/Argentina/San_Juan',
|
||||||
|
'America/Argentina/San_Luis',
|
||||||
|
'America/Argentina/Tucuman',
|
||||||
|
'America/Argentina/Ushuaia',
|
||||||
|
'America/Asuncion',
|
||||||
|
'America/Atikokan',
|
||||||
|
'America/Bahia',
|
||||||
|
'America/Bahia_Banderas',
|
||||||
|
'America/Barbados',
|
||||||
|
'America/Belem',
|
||||||
|
'America/Belize',
|
||||||
|
'America/Blanc-Sablon',
|
||||||
|
'America/Boa_Vista',
|
||||||
|
'America/Bogota',
|
||||||
|
'America/Boise',
|
||||||
|
'America/Cambridge_Bay',
|
||||||
|
'America/Campo_Grande',
|
||||||
|
'America/Cancun',
|
||||||
|
'America/Caracas',
|
||||||
|
'America/Cayenne',
|
||||||
|
'America/Chicago',
|
||||||
|
'America/Chihuahua',
|
||||||
|
'America/Costa_Rica',
|
||||||
|
'America/Creston',
|
||||||
|
'America/Cuiaba',
|
||||||
|
'America/Curacao',
|
||||||
|
'America/Danmarkshavn',
|
||||||
|
'America/Dawson',
|
||||||
|
'America/Dawson_Creek',
|
||||||
|
'America/Denver',
|
||||||
|
'America/Detroit',
|
||||||
|
'America/Edmonton',
|
||||||
|
'America/Eirunepe',
|
||||||
|
'America/El_Salvador',
|
||||||
|
'America/Fortaleza',
|
||||||
|
'America/Fort_Nelson',
|
||||||
|
'America/Glace_Bay',
|
||||||
|
'America/Godthab',
|
||||||
|
'America/Goose_Bay',
|
||||||
|
'America/Grand_Turk',
|
||||||
|
'America/Guatemala',
|
||||||
|
'America/Guayaquil',
|
||||||
|
'America/Guyana',
|
||||||
|
'America/Halifax',
|
||||||
|
'America/Havana',
|
||||||
|
'America/Hermosillo',
|
||||||
|
'America/Indiana/Indianapolis',
|
||||||
|
'America/Indiana/Knox',
|
||||||
|
'America/Indiana/Marengo',
|
||||||
|
'America/Indiana/Petersburg',
|
||||||
|
'America/Indiana/Tell_City',
|
||||||
|
'America/Indiana/Vevay',
|
||||||
|
'America/Indiana/Vincennes',
|
||||||
|
'America/Indiana/Winamac',
|
||||||
|
'America/Inuvik',
|
||||||
|
'America/Iqaluit',
|
||||||
|
'America/Jamaica',
|
||||||
|
'America/Juneau',
|
||||||
|
'America/Kentucky/Louisville',
|
||||||
|
'America/Kentucky/Monticello',
|
||||||
|
'America/La_Paz',
|
||||||
|
'America/Lima',
|
||||||
|
'America/Los_Angeles',
|
||||||
|
'America/Maceio',
|
||||||
|
'America/Managua',
|
||||||
|
'America/Manaus',
|
||||||
|
'America/Martinique',
|
||||||
|
'America/Matamoros',
|
||||||
|
'America/Mazatlan',
|
||||||
|
'America/Menominee',
|
||||||
|
'America/Merida',
|
||||||
|
'America/Metlakatla',
|
||||||
|
'America/Mexico_City',
|
||||||
|
'America/Miquelon',
|
||||||
|
'America/Moncton',
|
||||||
|
'America/Monterrey',
|
||||||
|
'America/Montevideo',
|
||||||
|
'America/Nassau',
|
||||||
|
'America/New_York',
|
||||||
|
'America/Nipigon',
|
||||||
|
'America/Nome',
|
||||||
|
'America/Noronha',
|
||||||
|
'America/North_Dakota/Beulah',
|
||||||
|
'America/North_Dakota/Center',
|
||||||
|
'America/North_Dakota/New_Salem',
|
||||||
|
'America/Ojinaga',
|
||||||
|
'America/Panama',
|
||||||
|
'America/Pangnirtung',
|
||||||
|
'America/Paramaribo',
|
||||||
|
'America/Phoenix',
|
||||||
|
'America/Port-au-Prince',
|
||||||
|
'America/Port_of_Spain',
|
||||||
|
'America/Porto_Velho',
|
||||||
|
'America/Puerto_Rico',
|
||||||
|
'America/Punta_Arenas',
|
||||||
|
'America/Rainy_River',
|
||||||
|
'America/Rankin_Inlet',
|
||||||
|
'America/Recife',
|
||||||
|
'America/Regina',
|
||||||
|
'America/Resolute',
|
||||||
|
'America/Rio_Branco',
|
||||||
|
'America/Santarem',
|
||||||
|
'America/Santiago',
|
||||||
|
'America/Santo_Domingo',
|
||||||
|
'America/Sao_Paulo',
|
||||||
|
'America/Scoresbysund',
|
||||||
|
'America/Sitka',
|
||||||
|
'America/St_Johns',
|
||||||
|
'America/Swift_Current',
|
||||||
|
'America/Tegucigalpa',
|
||||||
|
'America/Thule',
|
||||||
|
'America/Thunder_Bay',
|
||||||
|
'America/Tijuana',
|
||||||
|
'America/Toronto',
|
||||||
|
'America/Vancouver',
|
||||||
|
'America/Whitehorse',
|
||||||
|
'America/Winnipeg',
|
||||||
|
'America/Yakutat',
|
||||||
|
'America/Yellowknife',
|
||||||
|
'Antarctica/Casey',
|
||||||
|
'Antarctica/Davis',
|
||||||
|
'Antarctica/DumontDUrville',
|
||||||
|
'Antarctica/Macquarie',
|
||||||
|
'Antarctica/Mawson',
|
||||||
|
'Antarctica/Palmer',
|
||||||
|
'Antarctica/Rothera',
|
||||||
|
'Antarctica/Syowa',
|
||||||
|
'Antarctica/Troll',
|
||||||
|
'Antarctica/Vostok',
|
||||||
|
'Asia/Almaty',
|
||||||
|
'Asia/Amman',
|
||||||
|
'Asia/Anadyr',
|
||||||
|
'Asia/Aqtau',
|
||||||
|
'Asia/Aqtobe',
|
||||||
|
'Asia/Ashgabat',
|
||||||
|
'Asia/Atyrau',
|
||||||
|
'Asia/Baghdad',
|
||||||
|
'Asia/Baku',
|
||||||
|
'Asia/Bangkok',
|
||||||
|
'Asia/Barnaul',
|
||||||
|
'Asia/Beirut',
|
||||||
|
'Asia/Bishkek',
|
||||||
|
'Asia/Brunei',
|
||||||
|
'Asia/Chita',
|
||||||
|
'Asia/Choibalsan',
|
||||||
|
'Asia/Colombo',
|
||||||
|
'Asia/Damascus',
|
||||||
|
'Asia/Dhaka',
|
||||||
|
'Asia/Dili',
|
||||||
|
'Asia/Dubai',
|
||||||
|
'Asia/Dushanbe',
|
||||||
|
'Asia/Famagusta',
|
||||||
|
'Asia/Gaza',
|
||||||
|
'Asia/Hebron',
|
||||||
|
'Asia/Ho_Chi_Minh',
|
||||||
|
'Asia/Hong_Kong',
|
||||||
|
'Asia/Hovd',
|
||||||
|
'Asia/Irkutsk',
|
||||||
|
'Asia/Jakarta',
|
||||||
|
'Asia/Jayapura',
|
||||||
|
'Asia/Jerusalem',
|
||||||
|
'Asia/Kabul',
|
||||||
|
'Asia/Kamchatka',
|
||||||
|
'Asia/Karachi',
|
||||||
|
'Asia/Kathmandu',
|
||||||
|
'Asia/Khandyga',
|
||||||
|
'Asia/Kolkata',
|
||||||
|
'Asia/Krasnoyarsk',
|
||||||
|
'Asia/Kuala_Lumpur',
|
||||||
|
'Asia/Kuching',
|
||||||
|
'Asia/Macau',
|
||||||
|
'Asia/Magadan',
|
||||||
|
'Asia/Makassar',
|
||||||
|
'Asia/Manila',
|
||||||
|
'Asia/Nicosia',
|
||||||
|
'Asia/Novokuznetsk',
|
||||||
|
'Asia/Novosibirsk',
|
||||||
|
'Asia/Omsk',
|
||||||
|
'Asia/Oral',
|
||||||
|
'Asia/Pontianak',
|
||||||
|
'Asia/Pyongyang',
|
||||||
|
'Asia/Qatar',
|
||||||
|
'Asia/Qostanay',
|
||||||
|
'Asia/Qyzylorda',
|
||||||
|
'Asia/Riyadh',
|
||||||
|
'Asia/Sakhalin',
|
||||||
|
'Asia/Samarkand',
|
||||||
|
'Asia/Seoul',
|
||||||
|
'Asia/Shanghai',
|
||||||
|
'Asia/Singapore',
|
||||||
|
'Asia/Srednekolymsk',
|
||||||
|
'Asia/Taipei',
|
||||||
|
'Asia/Tashkent',
|
||||||
|
'Asia/Tbilisi',
|
||||||
|
'Asia/Tehran',
|
||||||
|
'Asia/Thimphu',
|
||||||
|
'Asia/Tokyo',
|
||||||
|
'Asia/Tomsk',
|
||||||
|
'Asia/Ulaanbaatar',
|
||||||
|
'Asia/Urumqi',
|
||||||
|
'Asia/Ust-Nera',
|
||||||
|
'Asia/Vladivostok',
|
||||||
|
'Asia/Yakutsk',
|
||||||
|
'Asia/Yangon',
|
||||||
|
'Asia/Yekaterinburg',
|
||||||
|
'Asia/Yerevan',
|
||||||
|
'Atlantic/Azores',
|
||||||
|
'Atlantic/Bermuda',
|
||||||
|
'Atlantic/Canary',
|
||||||
|
'Atlantic/Cape_Verde',
|
||||||
|
'Atlantic/Faroe',
|
||||||
|
'Atlantic/Madeira',
|
||||||
|
'Atlantic/Reykjavik',
|
||||||
|
'Atlantic/South_Georgia',
|
||||||
|
'Atlantic/Stanley',
|
||||||
|
'Australia/Adelaide',
|
||||||
|
'Australia/Brisbane',
|
||||||
|
'Australia/Broken_Hill',
|
||||||
|
'Australia/Currie',
|
||||||
|
'Australia/Darwin',
|
||||||
|
'Australia/Eucla',
|
||||||
|
'Australia/Hobart',
|
||||||
|
'Australia/Lindeman',
|
||||||
|
'Australia/Lord_Howe',
|
||||||
|
'Australia/Melbourne',
|
||||||
|
'Australia/Perth',
|
||||||
|
'Australia/Sydney',
|
||||||
|
'Europe/Amsterdam',
|
||||||
|
'Europe/Andorra',
|
||||||
|
'Europe/Astrakhan',
|
||||||
|
'Europe/Athens',
|
||||||
|
'Europe/Belgrade',
|
||||||
|
'Europe/Berlin',
|
||||||
|
'Europe/Brussels',
|
||||||
|
'Europe/Bucharest',
|
||||||
|
'Europe/Budapest',
|
||||||
|
'Europe/Chisinau',
|
||||||
|
'Europe/Copenhagen',
|
||||||
|
'Europe/Dublin',
|
||||||
|
'Europe/Gibraltar',
|
||||||
|
'Europe/Helsinki',
|
||||||
|
'Europe/Istanbul',
|
||||||
|
'Europe/Kaliningrad',
|
||||||
|
'Europe/Kiev',
|
||||||
|
'Europe/Kirov',
|
||||||
|
'Europe/Lisbon',
|
||||||
|
'Europe/London',
|
||||||
|
'Europe/Luxembourg',
|
||||||
|
'Europe/Madrid',
|
||||||
|
'Europe/Malta',
|
||||||
|
'Europe/Minsk',
|
||||||
|
'Europe/Monaco',
|
||||||
|
'Europe/Moscow',
|
||||||
|
'Europe/Oslo',
|
||||||
|
'Europe/Paris',
|
||||||
|
'Europe/Prague',
|
||||||
|
'Europe/Riga',
|
||||||
|
'Europe/Rome',
|
||||||
|
'Europe/Samara',
|
||||||
|
'Europe/Saratov',
|
||||||
|
'Europe/Simferopol',
|
||||||
|
'Europe/Sofia',
|
||||||
|
'Europe/Stockholm',
|
||||||
|
'Europe/Tallinn',
|
||||||
|
'Europe/Tirane',
|
||||||
|
'Europe/Ulyanovsk',
|
||||||
|
'Europe/Uzhgorod',
|
||||||
|
'Europe/Vienna',
|
||||||
|
'Europe/Vilnius',
|
||||||
|
'Europe/Volgograd',
|
||||||
|
'Europe/Warsaw',
|
||||||
|
'Europe/Zaporozhye',
|
||||||
|
'Europe/Zurich',
|
||||||
|
'Indian/Chagos',
|
||||||
|
'Indian/Christmas',
|
||||||
|
'Indian/Cocos',
|
||||||
|
'Indian/Kerguelen',
|
||||||
|
'Indian/Mahe',
|
||||||
|
'Indian/Maldives',
|
||||||
|
'Indian/Mauritius',
|
||||||
|
'Indian/Reunion',
|
||||||
|
'Pacific/Apia',
|
||||||
|
'Pacific/Auckland',
|
||||||
|
'Pacific/Bougainville',
|
||||||
|
'Pacific/Chatham',
|
||||||
|
'Pacific/Chuuk',
|
||||||
|
'Pacific/Easter',
|
||||||
|
'Pacific/Efate',
|
||||||
|
'Pacific/Enderbury',
|
||||||
|
'Pacific/Fakaofo',
|
||||||
|
'Pacific/Fiji',
|
||||||
|
'Pacific/Funafuti',
|
||||||
|
'Pacific/Galapagos',
|
||||||
|
'Pacific/Gambier',
|
||||||
|
'Pacific/Guadalcanal',
|
||||||
|
'Pacific/Guam',
|
||||||
|
'Pacific/Honolulu',
|
||||||
|
'Pacific/Kiritimati',
|
||||||
|
'Pacific/Kosrae',
|
||||||
|
'Pacific/Kwajalein',
|
||||||
|
'Pacific/Majuro',
|
||||||
|
'Pacific/Marquesas',
|
||||||
|
'Pacific/Nauru',
|
||||||
|
'Pacific/Niue',
|
||||||
|
'Pacific/Norfolk',
|
||||||
|
'Pacific/Noumea',
|
||||||
|
'Pacific/Pago_Pago',
|
||||||
|
'Pacific/Palau',
|
||||||
|
'Pacific/Pitcairn',
|
||||||
|
'Pacific/Pohnpei',
|
||||||
|
'Pacific/Port_Moresby',
|
||||||
|
'Pacific/Rarotonga',
|
||||||
|
'Pacific/Tahiti',
|
||||||
|
'Pacific/Tarawa',
|
||||||
|
'Pacific/Tongatapu',
|
||||||
|
'Pacific/Wake',
|
||||||
|
'Pacific/Wallis',
|
||||||
|
]
|
||||||
Reference in New Issue
Block a user