@ui5/webcomponents-localization 0.0.0-dff5837d7 → 0.0.0-e55c2cec6
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.eslintignore +1 -0
- package/CHANGELOG.md +260 -0
- package/README.md +36 -6
- package/dist/Assets-static.d.ts +1 -0
- package/dist/Assets-static.js +3 -0
- package/dist/Assets-static.js.map +1 -0
- package/dist/Assets.d.ts +1 -0
- package/dist/Assets.js +1 -0
- package/dist/Assets.js.map +1 -0
- package/dist/DateFormat.d.ts +6 -0
- package/dist/DateFormat.js +6 -2
- package/dist/DateFormat.js.map +1 -0
- package/dist/LocaleData.d.ts +6 -0
- package/dist/LocaleData.js +6 -2
- package/dist/LocaleData.js.map +1 -0
- package/dist/dates/CalendarDate.d.ts +41 -0
- package/dist/dates/CalendarDate.js +170 -181
- package/dist/dates/CalendarDate.js.map +1 -0
- package/dist/dates/ExtremeDates.d.ts +5 -0
- package/dist/dates/ExtremeDates.js +29 -0
- package/dist/dates/ExtremeDates.js.map +1 -0
- package/dist/dates/UniversalDate.d.ts +46 -0
- package/dist/dates/UniversalDate.js +5 -0
- package/dist/dates/UniversalDate.js.map +1 -0
- package/dist/dates/calculateWeekNumber.d.ts +4 -0
- package/dist/dates/calculateWeekNumber.js +42 -48
- package/dist/dates/calculateWeekNumber.js.map +1 -0
- package/dist/dates/convertMonthNumbersToMonthNames.d.ts +16 -0
- package/dist/dates/convertMonthNumbersToMonthNames.js +30 -0
- package/dist/dates/convertMonthNumbersToMonthNames.js.map +1 -0
- package/dist/dates/getDaysInMonth.d.ts +3 -0
- package/dist/dates/getDaysInMonth.js +10 -0
- package/dist/dates/getDaysInMonth.js.map +1 -0
- package/dist/dates/getRoundedTimestamp.d.ts +7 -0
- package/dist/dates/getRoundedTimestamp.js +14 -0
- package/dist/dates/getRoundedTimestamp.js.map +1 -0
- package/dist/dates/getTodayUTCTimestamp.d.ts +7 -0
- package/dist/dates/getTodayUTCTimestamp.js +8 -0
- package/dist/dates/getTodayUTCTimestamp.js.map +1 -0
- package/dist/dates/modifyDateBy.d.ts +13 -0
- package/dist/dates/modifyDateBy.js +40 -0
- package/dist/dates/modifyDateBy.js.map +1 -0
- package/dist/dates/transformDateToSecondaryType.d.ts +7 -0
- package/dist/dates/transformDateToSecondaryType.js +17 -0
- package/dist/dates/transformDateToSecondaryType.js.map +1 -0
- package/{src/features/calendar/Buddhist.js → dist/features/calendar/Buddhist.d.ts} +0 -0
- package/dist/features/calendar/Buddhist.js +1 -0
- package/dist/features/calendar/Buddhist.js.map +1 -0
- package/{src/features/calendar/Gregorian.js → dist/features/calendar/Gregorian.d.ts} +0 -0
- package/dist/features/calendar/Gregorian.js +1 -0
- package/dist/features/calendar/Gregorian.js.map +1 -0
- package/{src/features/calendar/Islamic.js → dist/features/calendar/Islamic.d.ts} +0 -0
- package/dist/features/calendar/Islamic.js +1 -0
- package/dist/features/calendar/Islamic.js.map +1 -0
- package/{src/features/calendar/Japanese.js → dist/features/calendar/Japanese.d.ts} +0 -0
- package/dist/features/calendar/Japanese.js +1 -0
- package/dist/features/calendar/Japanese.js.map +1 -0
- package/{src/features/calendar/Persian.js → dist/features/calendar/Persian.d.ts} +0 -0
- package/dist/features/calendar/Persian.js +1 -0
- package/dist/features/calendar/Persian.js.map +1 -0
- package/dist/generated/assets/cldr/ar.json +803 -3
- package/dist/generated/assets/cldr/ar_EG.json +803 -3
- package/dist/generated/assets/cldr/ar_SA.json +803 -3
- package/dist/generated/assets/cldr/bg.json +768 -3
- package/dist/generated/assets/cldr/ca.json +802 -3
- package/dist/generated/assets/cldr/cs.json +801 -3
- package/dist/generated/assets/cldr/cy.json +6614 -0
- package/dist/generated/assets/cldr/da.json +768 -3
- package/dist/generated/assets/cldr/de.json +802 -3
- package/dist/generated/assets/cldr/de_AT.json +802 -3
- package/dist/generated/assets/cldr/de_CH.json +802 -3
- package/dist/generated/assets/cldr/el.json +701 -3
- package/dist/generated/assets/cldr/el_CY.json +701 -3
- package/dist/generated/assets/cldr/en.json +767 -3
- package/dist/generated/assets/cldr/en_AU.json +768 -4
- package/dist/generated/assets/cldr/en_GB.json +767 -3
- package/dist/generated/assets/cldr/en_HK.json +767 -3
- package/dist/generated/assets/cldr/en_IE.json +767 -3
- package/dist/generated/assets/cldr/en_IN.json +767 -3
- package/dist/generated/assets/cldr/en_NZ.json +767 -3
- package/dist/generated/assets/cldr/en_PG.json +767 -3
- package/dist/generated/assets/cldr/en_SG.json +767 -3
- package/dist/generated/assets/cldr/en_ZA.json +767 -3
- package/dist/generated/assets/cldr/es.json +734 -3
- package/dist/generated/assets/cldr/es_AR.json +734 -3
- package/dist/generated/assets/cldr/es_BO.json +737 -6
- package/dist/generated/assets/cldr/es_CL.json +737 -6
- package/dist/generated/assets/cldr/es_CO.json +734 -3
- package/dist/generated/assets/cldr/es_MX.json +737 -6
- package/dist/generated/assets/cldr/es_PE.json +737 -6
- package/dist/generated/assets/cldr/es_UY.json +737 -6
- package/dist/generated/assets/cldr/es_VE.json +736 -5
- package/dist/generated/assets/cldr/et.json +767 -3
- package/dist/generated/assets/cldr/fa.json +769 -3
- package/dist/generated/assets/cldr/fi.json +801 -3
- package/dist/generated/assets/cldr/fr.json +767 -3
- package/dist/generated/assets/cldr/fr_BE.json +767 -3
- package/dist/generated/assets/cldr/fr_CA.json +767 -3
- package/dist/generated/assets/cldr/fr_CH.json +767 -3
- package/dist/generated/assets/cldr/fr_LU.json +767 -3
- package/dist/generated/assets/cldr/he.json +802 -3
- package/dist/generated/assets/cldr/hi.json +734 -3
- package/dist/generated/assets/cldr/hr.json +767 -3
- package/dist/generated/assets/cldr/hu.json +835 -3
- package/dist/generated/assets/cldr/id.json +767 -3
- package/dist/generated/assets/cldr/it.json +767 -3
- package/dist/generated/assets/cldr/it_CH.json +767 -3
- package/dist/generated/assets/cldr/ja.json +801 -3
- package/dist/generated/assets/cldr/kk.json +767 -3
- package/dist/generated/assets/cldr/ko.json +801 -3
- package/dist/generated/assets/cldr/lt.json +767 -3
- package/dist/generated/assets/cldr/lv.json +767 -3
- package/dist/generated/assets/cldr/ms.json +735 -3
- package/dist/generated/assets/cldr/nb.json +768 -3
- package/dist/generated/assets/cldr/nl.json +734 -3
- package/dist/generated/assets/cldr/nl_BE.json +734 -3
- package/dist/generated/assets/cldr/pl.json +801 -3
- package/dist/generated/assets/cldr/pt.json +767 -3
- package/dist/generated/assets/cldr/pt_PT.json +767 -3
- package/dist/generated/assets/cldr/ro.json +767 -3
- package/dist/generated/assets/cldr/ru.json +767 -3
- package/dist/generated/assets/cldr/ru_UA.json +767 -3
- package/dist/generated/assets/cldr/sk.json +801 -3
- package/dist/generated/assets/cldr/sl.json +801 -3
- package/dist/generated/assets/cldr/sr.json +767 -3
- package/dist/generated/assets/cldr/sr_Latn.json +5891 -0
- package/dist/generated/assets/cldr/sv.json +768 -3
- package/dist/generated/assets/cldr/th.json +835 -3
- package/dist/generated/assets/cldr/tr.json +835 -3
- package/dist/generated/assets/cldr/uk.json +767 -3
- package/dist/generated/assets/cldr/vi.json +767 -3
- package/dist/generated/assets/cldr/zh_CN.json +803 -4
- package/dist/generated/assets/cldr/zh_HK.json +803 -4
- package/dist/generated/assets/cldr/zh_SG.json +803 -4
- package/dist/generated/assets/cldr/zh_TW.json +802 -3
- package/dist/generated/json-imports/LocaleData-static.js +90 -0
- package/dist/generated/json-imports/LocaleData.js +88 -91
- package/dist/getCachedLocaleDataInstance.d.ts +4 -0
- package/dist/getCachedLocaleDataInstance.js +10 -0
- package/dist/getCachedLocaleDataInstance.js.map +1 -0
- package/dist/locale/getLocaleData.d.ts +11 -0
- package/dist/locale/getLocaleData.js +13 -17
- package/dist/locale/getLocaleData.js.map +1 -0
- package/dist/sap/base/Log.js +28 -37
- package/dist/sap/base/assert.js +5 -10
- package/dist/sap/base/util/LoaderExtensions.d.ts +4 -0
- package/dist/sap/base/util/LoaderExtensions.js +11 -4
- package/dist/sap/base/util/LoaderExtensions.js.map +1 -0
- package/dist/sap/base/util/array/uniqueSort.js +7 -7
- package/dist/sap/base/util/deepEqual.js +1 -5
- package/dist/sap/ui/base/Interface.js +3 -5
- package/dist/sap/ui/base/Metadata.js +1 -3
- package/dist/sap/ui/base/Object.js +26 -2
- package/dist/sap/ui/core/Configuration.d.ts +17 -0
- package/dist/sap/ui/core/Configuration.js +20 -0
- package/dist/sap/ui/core/Configuration.js.map +1 -0
- package/dist/sap/ui/core/Core.d.ts +26 -0
- package/dist/sap/ui/core/Core.js +7 -32
- package/dist/sap/ui/core/Core.js.map +1 -0
- package/dist/sap/ui/core/FormatSettings.d.ts +10 -0
- package/dist/sap/ui/core/FormatSettings.js +13 -0
- package/dist/sap/ui/core/FormatSettings.js.map +1 -0
- package/dist/sap/ui/core/Locale.js +70 -31
- package/dist/sap/ui/core/LocaleData.js +133 -1506
- package/dist/sap/ui/core/date/Buddhist.js +0 -6
- package/dist/sap/ui/core/date/CalendarUtils.js +36 -0
- package/dist/sap/ui/core/date/CalendarWeekNumbering.js +7 -0
- package/dist/sap/ui/core/date/Islamic.js +3 -3
- package/dist/sap/ui/core/date/Japanese.js +4 -4
- package/dist/sap/ui/core/date/UniversalDate.js +82 -23
- package/dist/sap/ui/core/format/DateFormat.js +530 -222
- package/dist/sap/ui/core/format/TimezoneUtil.js +94 -0
- package/package-scripts.js +14 -7
- package/package.json +13 -14
- package/src/Assets-static.ts +2 -0
- package/src/{Assets.js → Assets.ts} +0 -0
- package/src/DateFormat.ts +8 -0
- package/src/LocaleData.ts +8 -0
- package/src/dates/{CalendarDate.js → CalendarDate.ts} +64 -35
- package/src/dates/ExtremeDates.ts +40 -0
- package/src/dates/UniversalDate.ts +51 -0
- package/src/dates/{calculateWeekNumber.js → calculateWeekNumber.ts} +5 -3
- package/src/dates/convertMonthNumbersToMonthNames.ts +34 -0
- package/src/dates/getDaysInMonth.ts +11 -0
- package/src/dates/getRoundedTimestamp.ts +14 -0
- package/src/dates/getTodayUTCTimestamp.ts +10 -0
- package/src/dates/modifyDateBy.ts +42 -0
- package/src/dates/transformDateToSecondaryType.ts +21 -0
- package/src/features/calendar/Buddhist.ts +1 -0
- package/src/features/calendar/Gregorian.ts +1 -0
- package/src/features/calendar/Islamic.ts +1 -0
- package/src/features/calendar/Japanese.ts +1 -0
- package/src/features/calendar/Persian.ts +1 -0
- package/src/getCachedLocaleDataInstance.ts +15 -0
- package/src/locale/{getLocaleData.js → getLocaleData.ts} +9 -8
- package/src/sap/base/util/LoaderExtensions.ts +17 -0
- package/src/sap/ui/core/{Core.js → Configuration.ts} +5 -21
- package/src/sap/ui/core/Core.ts +15 -0
- package/src/sap/ui/core/FormatSettings.ts +15 -0
- package/tsconfig.json +13 -0
- package/used-modules.txt +4 -1
- package/src/DateFormat.js +0 -3
- package/src/LocaleData.js +0 -3
- package/src/sap/base/util/LoaderExtensions.js +0 -7
@@ -117,11 +117,5 @@ Buddhist.prototype.setUTCFullYear = function (iYear, iMonth, iDay) {
|
|
117
117
|
}
|
118
118
|
return this._setUTCBuddhist(oBuddhist);
|
119
119
|
};
|
120
|
-
Buddhist.prototype.getWeek = function () {
|
121
|
-
return UniversalDate.getWeekByDate(this.sCalendarType, this.oDate.getFullYear(), this.getMonth(), this.getDate());
|
122
|
-
};
|
123
|
-
Buddhist.prototype.getUTCWeek = function () {
|
124
|
-
return UniversalDate.getWeekByDate(this.sCalendarType, this.oDate.getUTCFullYear(), this.getUTCMonth(), this.getUTCDate());
|
125
|
-
};
|
126
120
|
_Calendars.set(CalendarType.Buddhist, Buddhist);
|
127
121
|
export default Buddhist;
|
@@ -0,0 +1,36 @@
|
|
1
|
+
import CalendarWeekNumbering from './CalendarWeekNumbering.js';
|
2
|
+
import Configuration from '../Configuration.js';
|
3
|
+
import LocaleData from '../LocaleData.js';
|
4
|
+
var mWeekNumberingConfiguration = {
|
5
|
+
ISO_8601: {
|
6
|
+
firstDayOfWeek: 1,
|
7
|
+
minimalDaysInFirstWeek: 4
|
8
|
+
},
|
9
|
+
MiddleEastern: {
|
10
|
+
firstDayOfWeek: 6,
|
11
|
+
minimalDaysInFirstWeek: 1
|
12
|
+
},
|
13
|
+
WesternTraditional: {
|
14
|
+
firstDayOfWeek: 0,
|
15
|
+
minimalDaysInFirstWeek: 1
|
16
|
+
}
|
17
|
+
};
|
18
|
+
var CalendarUtils = {
|
19
|
+
getWeekConfigurationValues: function (sCalendarWeekNumbering, oLocale) {
|
20
|
+
var oLocaleData;
|
21
|
+
if (mWeekNumberingConfiguration.hasOwnProperty(sCalendarWeekNumbering)) {
|
22
|
+
return mWeekNumberingConfiguration[sCalendarWeekNumbering];
|
23
|
+
}
|
24
|
+
sCalendarWeekNumbering = sCalendarWeekNumbering || CalendarWeekNumbering.Default;
|
25
|
+
if (sCalendarWeekNumbering === CalendarWeekNumbering.Default) {
|
26
|
+
oLocale = oLocale || Configuration.getFormatSettings().getFormatLocale();
|
27
|
+
oLocaleData = LocaleData.getInstance(oLocale);
|
28
|
+
return {
|
29
|
+
firstDayOfWeek: oLocaleData.getFirstDayOfWeek(),
|
30
|
+
minimalDaysInFirstWeek: oLocaleData.getMinimalDaysInFirstWeek()
|
31
|
+
};
|
32
|
+
}
|
33
|
+
return undefined;
|
34
|
+
}
|
35
|
+
};
|
36
|
+
export default CalendarUtils;
|
@@ -1,8 +1,8 @@
|
|
1
|
-
import Core from '../Core.js';
|
2
1
|
import UniversalDate from './UniversalDate.js';
|
3
2
|
import CalendarType from '../CalendarType.js';
|
4
3
|
import Log from '../../../base/Log.js';
|
5
4
|
import _Calendars from './_Calendars.js';
|
5
|
+
import Configuration from '../Configuration.js';
|
6
6
|
var Islamic = UniversalDate.extend('sap.ui.core.date.Islamic', {
|
7
7
|
constructor: function () {
|
8
8
|
var aArgs = arguments;
|
@@ -102,9 +102,9 @@ function toGregorianArguments(aArgs) {
|
|
102
102
|
function initCustomizationMap() {
|
103
103
|
var sDateFormat, oCustomizationJSON;
|
104
104
|
oCustomizationMap = {};
|
105
|
-
sDateFormat =
|
105
|
+
sDateFormat = Configuration.getFormatSettings().getLegacyDateFormat();
|
106
106
|
sDateFormat = _isSupportedIslamicCalendarType(sDateFormat) ? sDateFormat : 'A';
|
107
|
-
oCustomizationJSON =
|
107
|
+
oCustomizationJSON = Configuration.getFormatSettings().getLegacyDateCalendarCustomizing();
|
108
108
|
oCustomizationJSON = oCustomizationJSON || [];
|
109
109
|
if (!oCustomizationJSON.length) {
|
110
110
|
Log.warning('No calendar customizations.');
|
@@ -152,11 +152,11 @@ Japanese.prototype.setUTCEra = function (iEra, iYear, iMonth, iDay) {
|
|
152
152
|
}
|
153
153
|
return this._setUTCJapanese(oJapanese);
|
154
154
|
};
|
155
|
-
Japanese.prototype.getWeek = function () {
|
156
|
-
return UniversalDate.getWeekByDate(this.sCalendarType, this.oDate.getFullYear(), this.getMonth(), this.getDate());
|
155
|
+
Japanese.prototype.getWeek = function (oLocale, vCalendarWeekNumbering) {
|
156
|
+
return UniversalDate.getWeekByDate(this.sCalendarType, this.oDate.getFullYear(), this.getMonth(), this.getDate(), oLocale, vCalendarWeekNumbering);
|
157
157
|
};
|
158
|
-
Japanese.prototype.getUTCWeek = function () {
|
159
|
-
return UniversalDate.getWeekByDate(this.sCalendarType, this.oDate.getUTCFullYear(), this.getUTCMonth(), this.getUTCDate());
|
158
|
+
Japanese.prototype.getUTCWeek = function (oLocale, vCalendarWeekNumbering) {
|
159
|
+
return UniversalDate.getWeekByDate(this.sCalendarType, this.oDate.getUTCFullYear(), this.getUTCMonth(), this.getUTCDate(), oLocale, vCalendarWeekNumbering);
|
160
160
|
};
|
161
161
|
_Calendars.set(CalendarType.Japanese, Japanese);
|
162
162
|
export default Japanese;
|
@@ -1,7 +1,10 @@
|
|
1
|
-
import Core from '../Core.js';
|
2
1
|
import BaseObject from '../../base/Object.js';
|
2
|
+
import Configuration from '../Configuration.js';
|
3
|
+
import Locale from '../Locale.js';
|
3
4
|
import LocaleData from '../LocaleData.js';
|
4
5
|
import _Calendars from './_Calendars.js';
|
6
|
+
import CalendarUtils from './CalendarUtils.js';
|
7
|
+
import CalendarWeekNumbering from './CalendarWeekNumbering.js';
|
5
8
|
var UniversalDate = BaseObject.extend('sap.ui.core.date.UniversalDate', {
|
6
9
|
constructor: function () {
|
7
10
|
var clDate = UniversalDate.getClass();
|
@@ -20,7 +23,7 @@ UniversalDate.prototype.createDate = function (clDate, aArgs) {
|
|
20
23
|
case 0:
|
21
24
|
return new clDate();
|
22
25
|
case 1:
|
23
|
-
return new clDate(aArgs[0]);
|
26
|
+
return new clDate(aArgs[0] instanceof Date ? aArgs[0].getTime() : aArgs[0]);
|
24
27
|
case 2:
|
25
28
|
return new clDate(aArgs[0], aArgs[1]);
|
26
29
|
case 3:
|
@@ -39,9 +42,14 @@ UniversalDate.getInstance = function (oDate, sCalendarType) {
|
|
39
42
|
var clDate, oInstance;
|
40
43
|
if (oDate instanceof UniversalDate) {
|
41
44
|
oDate = oDate.getJSDate();
|
45
|
+
} else if (!oDate) {
|
46
|
+
oDate = new Date();
|
47
|
+
}
|
48
|
+
if (isNaN(oDate.getTime())) {
|
49
|
+
throw new Error('The given date object is invalid');
|
42
50
|
}
|
43
51
|
if (!sCalendarType) {
|
44
|
-
sCalendarType =
|
52
|
+
sCalendarType = Configuration.getCalendarType();
|
45
53
|
}
|
46
54
|
clDate = UniversalDate.getClass(sCalendarType);
|
47
55
|
oInstance = Object.create(clDate.prototype);
|
@@ -51,7 +59,7 @@ UniversalDate.getInstance = function (oDate, sCalendarType) {
|
|
51
59
|
};
|
52
60
|
UniversalDate.getClass = function (sCalendarType) {
|
53
61
|
if (!sCalendarType) {
|
54
|
-
sCalendarType =
|
62
|
+
sCalendarType = Configuration.getCalendarType();
|
55
63
|
}
|
56
64
|
return _Calendars.get(sCalendarType);
|
57
65
|
};
|
@@ -114,18 +122,22 @@ UniversalDate.prototype.getUTCEra = function () {
|
|
114
122
|
};
|
115
123
|
UniversalDate.prototype.setUTCEra = function (iEra) {
|
116
124
|
};
|
117
|
-
UniversalDate.prototype.getWeek = function () {
|
118
|
-
|
125
|
+
UniversalDate.prototype.getWeek = function (oLocale, vCalendarWeekNumbering) {
|
126
|
+
checkWeekConfig(vCalendarWeekNumbering);
|
127
|
+
return UniversalDate.getWeekByDate(this.sCalendarType, this.getFullYear(), this.getMonth(), this.getDate(), oLocale, vCalendarWeekNumbering);
|
119
128
|
};
|
120
|
-
UniversalDate.prototype.setWeek = function (oWeek) {
|
121
|
-
|
129
|
+
UniversalDate.prototype.setWeek = function (oWeek, oLocale, vCalendarWeekNumbering) {
|
130
|
+
checkWeekConfig(vCalendarWeekNumbering);
|
131
|
+
var oDate = UniversalDate.getFirstDateOfWeek(this.sCalendarType, oWeek.year || this.getFullYear(), oWeek.week, oLocale, vCalendarWeekNumbering);
|
122
132
|
this.setFullYear(oDate.year, oDate.month, oDate.day);
|
123
133
|
};
|
124
|
-
UniversalDate.prototype.getUTCWeek = function () {
|
125
|
-
|
134
|
+
UniversalDate.prototype.getUTCWeek = function (oLocale, vCalendarWeekNumbering) {
|
135
|
+
checkWeekConfig(vCalendarWeekNumbering);
|
136
|
+
return UniversalDate.getWeekByDate(this.sCalendarType, this.getUTCFullYear(), this.getUTCMonth(), this.getUTCDate(), oLocale, vCalendarWeekNumbering);
|
126
137
|
};
|
127
|
-
UniversalDate.prototype.setUTCWeek = function (oWeek) {
|
128
|
-
|
138
|
+
UniversalDate.prototype.setUTCWeek = function (oWeek, oLocale, vCalendarWeekNumbering) {
|
139
|
+
checkWeekConfig(vCalendarWeekNumbering);
|
140
|
+
var oDate = UniversalDate.getFirstDateOfWeek(this.sCalendarType, oWeek.year || this.getFullYear(), oWeek.week, oLocale, vCalendarWeekNumbering);
|
129
141
|
this.setUTCFullYear(oDate.year, oDate.month, oDate.day);
|
130
142
|
};
|
131
143
|
UniversalDate.prototype.getQuarter = function () {
|
@@ -159,15 +171,21 @@ UniversalDate.prototype.getTimezoneLong = function () {
|
|
159
171
|
}
|
160
172
|
};
|
161
173
|
var iMillisecondsInWeek = 7 * 24 * 60 * 60 * 1000;
|
162
|
-
UniversalDate.getWeekByDate = function (sCalendarType, iYear, iMonth, iDay) {
|
163
|
-
|
164
|
-
|
174
|
+
UniversalDate.getWeekByDate = function (sCalendarType, iYear, iMonth, iDay, oLocale, vCalendarWeekNumbering) {
|
175
|
+
checkWeekConfig(vCalendarWeekNumbering);
|
176
|
+
oLocale = oLocale || Configuration.getFormatSettings().getFormatLocale();
|
177
|
+
var clDate = this.getClass(sCalendarType);
|
178
|
+
var oFirstDay = getFirstDayOfFirstWeek(clDate, iYear, oLocale, vCalendarWeekNumbering);
|
179
|
+
var oDate = new clDate(clDate.UTC(iYear, iMonth, iDay));
|
180
|
+
var iWeek, iLastYear, iNextYear, oLastFirstDay, oNextFirstDay;
|
181
|
+
var bSplitWeek = isSplitWeek(vCalendarWeekNumbering, oLocale);
|
182
|
+
if (bSplitWeek) {
|
165
183
|
iWeek = calculateWeeks(oFirstDay, oDate);
|
166
184
|
} else {
|
167
185
|
iLastYear = iYear - 1;
|
168
186
|
iNextYear = iYear + 1;
|
169
|
-
oLastFirstDay = getFirstDayOfFirstWeek(clDate, iLastYear);
|
170
|
-
oNextFirstDay = getFirstDayOfFirstWeek(clDate, iNextYear);
|
187
|
+
oLastFirstDay = getFirstDayOfFirstWeek(clDate, iLastYear, oLocale, vCalendarWeekNumbering);
|
188
|
+
oNextFirstDay = getFirstDayOfFirstWeek(clDate, iNextYear, oLocale, vCalendarWeekNumbering);
|
171
189
|
if (oDate >= oNextFirstDay) {
|
172
190
|
iYear = iNextYear;
|
173
191
|
iWeek = 0;
|
@@ -183,9 +201,14 @@ UniversalDate.getWeekByDate = function (sCalendarType, iYear, iMonth, iDay) {
|
|
183
201
|
week: iWeek
|
184
202
|
};
|
185
203
|
};
|
186
|
-
UniversalDate.getFirstDateOfWeek = function (sCalendarType, iYear, iWeek) {
|
187
|
-
|
188
|
-
|
204
|
+
UniversalDate.getFirstDateOfWeek = function (sCalendarType, iYear, iWeek, oLocale, vCalendarWeekNumbering) {
|
205
|
+
checkWeekConfig(vCalendarWeekNumbering);
|
206
|
+
oLocale = oLocale || Configuration.getFormatSettings().getFormatLocale();
|
207
|
+
var clDate = this.getClass(sCalendarType);
|
208
|
+
var oFirstDay = getFirstDayOfFirstWeek(clDate, iYear, oLocale, vCalendarWeekNumbering);
|
209
|
+
var oDate = new clDate(oFirstDay.valueOf() + iWeek * iMillisecondsInWeek);
|
210
|
+
var bSplitWeek = isSplitWeek(vCalendarWeekNumbering, oLocale);
|
211
|
+
if (bSplitWeek && iWeek === 0 && oFirstDay.getUTCFullYear() < iYear) {
|
189
212
|
return {
|
190
213
|
year: iYear,
|
191
214
|
month: 0,
|
@@ -198,8 +221,44 @@ UniversalDate.getFirstDateOfWeek = function (sCalendarType, iYear, iWeek) {
|
|
198
221
|
day: oDate.getUTCDate()
|
199
222
|
};
|
200
223
|
};
|
201
|
-
function
|
202
|
-
|
224
|
+
function isSplitWeek(vCalendarWeekNumbering, oLocale) {
|
225
|
+
oLocale = oLocale || Configuration.getFormatSettings().getFormatLocale();
|
226
|
+
var oLocaleData = LocaleData.getInstance(oLocale);
|
227
|
+
return (!isCalendarWeekConfigurationDefined(vCalendarWeekNumbering) || vCalendarWeekNumbering === CalendarWeekNumbering.Default) && oLocaleData.firstDayStartsFirstWeek();
|
228
|
+
}
|
229
|
+
function checkWeekConfig(vCalendarWeekNumbering) {
|
230
|
+
if (typeof vCalendarWeekNumbering === 'object') {
|
231
|
+
if (!isCalendarWeekConfigurationDefined(vCalendarWeekNumbering)) {
|
232
|
+
throw new TypeError('Week config requires firstDayOfWeek and minimalDaysInFirstWeek to be set');
|
233
|
+
}
|
234
|
+
} else if (vCalendarWeekNumbering && !Object.values(CalendarWeekNumbering).includes(vCalendarWeekNumbering)) {
|
235
|
+
throw new TypeError('Illegal format option calendarWeekNumbering: \'' + vCalendarWeekNumbering + '\'');
|
236
|
+
}
|
237
|
+
}
|
238
|
+
function isCalendarWeekConfigurationDefined(vCalendarWeekNumbering) {
|
239
|
+
if (typeof vCalendarWeekNumbering === 'object') {
|
240
|
+
return typeof vCalendarWeekNumbering.firstDayOfWeek === 'number' && typeof vCalendarWeekNumbering.minimalDaysInFirstWeek === 'number';
|
241
|
+
} else if (vCalendarWeekNumbering) {
|
242
|
+
return true;
|
243
|
+
}
|
244
|
+
return false;
|
245
|
+
}
|
246
|
+
function resolveCalendarWeekConfiguration(vCalendarWeekNumbering, oLocale) {
|
247
|
+
if (typeof vCalendarWeekNumbering === 'object' && typeof vCalendarWeekNumbering.firstDayOfWeek === 'number' && typeof vCalendarWeekNumbering.minimalDaysInFirstWeek === 'number') {
|
248
|
+
return vCalendarWeekNumbering;
|
249
|
+
}
|
250
|
+
return CalendarUtils.getWeekConfigurationValues(vCalendarWeekNumbering, oLocale);
|
251
|
+
}
|
252
|
+
function getFirstDayOfFirstWeek(clDate, iYear, oLocale, vCalendarWeekNumbering) {
|
253
|
+
oLocale = oLocale || Configuration.getFormatSettings().getFormatLocale();
|
254
|
+
var oWeekConfig = resolveCalendarWeekConfiguration(vCalendarWeekNumbering, oLocale);
|
255
|
+
var iMinDays = oWeekConfig.minimalDaysInFirstWeek;
|
256
|
+
var iFirstDayOfWeek = oWeekConfig.firstDayOfWeek;
|
257
|
+
var oFirstDay = new clDate(clDate.UTC(iYear, 0, 1));
|
258
|
+
var iDayCount = 7;
|
259
|
+
if (isNaN(oFirstDay.getTime())) {
|
260
|
+
throw new Error('Could not determine the first day of the week, because the date ' + 'object is invalid');
|
261
|
+
}
|
203
262
|
while (oFirstDay.getUTCDay() !== iFirstDayOfWeek) {
|
204
263
|
oFirstDay.setUTCDate(oFirstDay.getUTCDate() - 1);
|
205
264
|
iDayCount--;
|
@@ -239,7 +298,7 @@ UniversalDate.getEraStartDate = function (sCalendarType, iEra) {
|
|
239
298
|
}
|
240
299
|
};
|
241
300
|
function getEras(sCalendarType) {
|
242
|
-
var oLocale =
|
301
|
+
var oLocale = Configuration.getFormatSettings().getFormatLocale(), oLocaleData = LocaleData.getInstance(oLocale), aEras = mEras[sCalendarType];
|
243
302
|
if (!aEras) {
|
244
303
|
var aEras = oLocaleData.getEraDates(sCalendarType);
|
245
304
|
if (!aEras[0]) {
|