@ui5/webcomponents-localization 0.0.0-4821618b2 → 0.0.0-49cef2d02
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/CHANGELOG.md +188 -0
- package/README.md +36 -6
- package/dist/Assets-static.d.ts +1 -0
- package/dist/Assets-static.js +1 -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 -201
- package/dist/dates/CalendarDate.js.map +1 -0
- package/dist/dates/ExtremeDates.d.ts +5 -0
- package/dist/dates/ExtremeDates.js +25 -35
- 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 +9 -9
- package/dist/dates/getRoundedTimestamp.js.map +1 -0
- package/dist/dates/getTodayUTCTimestamp.d.ts +7 -0
- package/dist/dates/getTodayUTCTimestamp.js +2 -3
- package/dist/dates/getTodayUTCTimestamp.js.map +1 -0
- package/dist/dates/modifyDateBy.d.ts +13 -0
- package/dist/dates/modifyDateBy.js +27 -29
- 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 +799 -1
- package/dist/generated/assets/cldr/ar_EG.json +799 -1
- package/dist/generated/assets/cldr/ar_SA.json +799 -1
- package/dist/generated/assets/cldr/bg.json +764 -1
- package/dist/generated/assets/cldr/ca.json +798 -1
- package/dist/generated/assets/cldr/cs.json +797 -1
- package/dist/generated/assets/cldr/cy.json +729 -1
- package/dist/generated/assets/cldr/da.json +764 -1
- package/dist/generated/assets/cldr/de.json +798 -1
- package/dist/generated/assets/cldr/de_AT.json +798 -1
- package/dist/generated/assets/cldr/de_CH.json +798 -1
- package/dist/generated/assets/cldr/el.json +697 -1
- package/dist/generated/assets/cldr/el_CY.json +697 -1
- package/dist/generated/assets/cldr/en.json +763 -1
- package/dist/generated/assets/cldr/en_AU.json +764 -2
- package/dist/generated/assets/cldr/en_GB.json +763 -1
- package/dist/generated/assets/cldr/en_HK.json +763 -1
- package/dist/generated/assets/cldr/en_IE.json +763 -1
- package/dist/generated/assets/cldr/en_IN.json +763 -1
- package/dist/generated/assets/cldr/en_NZ.json +763 -1
- package/dist/generated/assets/cldr/en_PG.json +763 -1
- package/dist/generated/assets/cldr/en_SG.json +763 -1
- package/dist/generated/assets/cldr/en_ZA.json +763 -1
- package/dist/generated/assets/cldr/es.json +730 -1
- package/dist/generated/assets/cldr/es_AR.json +730 -1
- package/dist/generated/assets/cldr/es_BO.json +733 -4
- package/dist/generated/assets/cldr/es_CL.json +733 -4
- package/dist/generated/assets/cldr/es_CO.json +730 -1
- package/dist/generated/assets/cldr/es_MX.json +733 -4
- package/dist/generated/assets/cldr/es_PE.json +733 -4
- package/dist/generated/assets/cldr/es_UY.json +733 -4
- package/dist/generated/assets/cldr/es_VE.json +732 -3
- package/dist/generated/assets/cldr/et.json +763 -1
- package/dist/generated/assets/cldr/fa.json +765 -1
- package/dist/generated/assets/cldr/fi.json +797 -1
- package/dist/generated/assets/cldr/fr.json +763 -1
- package/dist/generated/assets/cldr/fr_BE.json +763 -1
- package/dist/generated/assets/cldr/fr_CA.json +763 -1
- package/dist/generated/assets/cldr/fr_CH.json +763 -1
- package/dist/generated/assets/cldr/fr_LU.json +763 -1
- package/dist/generated/assets/cldr/he.json +798 -1
- package/dist/generated/assets/cldr/hi.json +730 -1
- package/dist/generated/assets/cldr/hr.json +763 -1
- package/dist/generated/assets/cldr/hu.json +831 -1
- package/dist/generated/assets/cldr/id.json +763 -1
- package/dist/generated/assets/cldr/it.json +763 -1
- package/dist/generated/assets/cldr/it_CH.json +763 -1
- package/dist/generated/assets/cldr/ja.json +797 -1
- package/dist/generated/assets/cldr/kk.json +763 -1
- package/dist/generated/assets/cldr/ko.json +797 -1
- package/dist/generated/assets/cldr/lt.json +763 -1
- package/dist/generated/assets/cldr/lv.json +763 -1
- package/dist/generated/assets/cldr/ms.json +731 -1
- package/dist/generated/assets/cldr/nb.json +764 -1
- package/dist/generated/assets/cldr/nl.json +730 -1
- package/dist/generated/assets/cldr/nl_BE.json +730 -1
- package/dist/generated/assets/cldr/pl.json +797 -1
- package/dist/generated/assets/cldr/pt.json +763 -1
- package/dist/generated/assets/cldr/pt_PT.json +763 -1
- package/dist/generated/assets/cldr/ro.json +763 -1
- package/dist/generated/assets/cldr/ru.json +763 -1
- package/dist/generated/assets/cldr/ru_UA.json +763 -1
- package/dist/generated/assets/cldr/sk.json +797 -1
- package/dist/generated/assets/cldr/sl.json +797 -1
- package/dist/generated/assets/cldr/sr.json +763 -1
- package/dist/generated/assets/cldr/sr_Latn.json +763 -1
- package/dist/generated/assets/cldr/sv.json +764 -1
- package/dist/generated/assets/cldr/th.json +831 -1
- package/dist/generated/assets/cldr/tr.json +831 -1
- package/dist/generated/assets/cldr/uk.json +763 -1
- package/dist/generated/assets/cldr/vi.json +763 -1
- package/dist/generated/assets/cldr/zh_CN.json +799 -2
- package/dist/generated/assets/cldr/zh_HK.json +799 -2
- package/dist/generated/assets/cldr/zh_SG.json +799 -2
- package/dist/generated/assets/cldr/zh_TW.json +798 -1
- package/dist/generated/json-imports/LocaleData-static.js +2 -1
- package/dist/generated/json-imports/LocaleData.js +2 -1
- package/dist/getCachedLocaleDataInstance.d.ts +4 -0
- package/dist/getCachedLocaleDataInstance.js +6 -9
- 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 +9 -12
- package/dist/sap/base/util/LoaderExtensions.js.map +1 -0
- package/dist/sap/base/util/deepEqual.js +1 -5
- 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 +15 -0
- package/dist/sap/ui/core/LocaleData.js +109 -1503
- 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 +79 -22
- package/dist/sap/ui/core/format/DateFormat.js +497 -198
- package/dist/sap/ui/core/format/TimezoneUtil.js +94 -0
- package/package-scripts.js +8 -10
- package/package.json +7 -14
- package/src/{Assets-static.js → Assets-static.ts} +0 -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} +43 -34
- package/src/dates/{ExtremeDates.js → ExtremeDates.ts} +6 -5
- 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.js → getRoundedTimestamp.ts} +3 -3
- package/src/dates/getTodayUTCTimestamp.ts +10 -0
- package/src/dates/{modifyDateBy.js → modifyDateBy.ts} +1 -1
- 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.js → LoaderExtensions.ts} +1 -1
- 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/hash.txt +0 -1
- package/src/DateFormat.js +0 -3
- package/src/LocaleData.js +0 -3
- package/src/dates/getTodayUTCTimestamp.js +0 -9
- package/src/getCachedLocaleDataInstance.js +0 -13
@@ -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();
|
@@ -42,8 +45,11 @@ UniversalDate.getInstance = function (oDate, sCalendarType) {
|
|
42
45
|
} else if (!oDate) {
|
43
46
|
oDate = new Date();
|
44
47
|
}
|
48
|
+
if (isNaN(oDate.getTime())) {
|
49
|
+
throw new Error('The given date object is invalid');
|
50
|
+
}
|
45
51
|
if (!sCalendarType) {
|
46
|
-
sCalendarType =
|
52
|
+
sCalendarType = Configuration.getCalendarType();
|
47
53
|
}
|
48
54
|
clDate = UniversalDate.getClass(sCalendarType);
|
49
55
|
oInstance = Object.create(clDate.prototype);
|
@@ -53,7 +59,7 @@ UniversalDate.getInstance = function (oDate, sCalendarType) {
|
|
53
59
|
};
|
54
60
|
UniversalDate.getClass = function (sCalendarType) {
|
55
61
|
if (!sCalendarType) {
|
56
|
-
sCalendarType =
|
62
|
+
sCalendarType = Configuration.getCalendarType();
|
57
63
|
}
|
58
64
|
return _Calendars.get(sCalendarType);
|
59
65
|
};
|
@@ -116,18 +122,22 @@ UniversalDate.prototype.getUTCEra = function () {
|
|
116
122
|
};
|
117
123
|
UniversalDate.prototype.setUTCEra = function (iEra) {
|
118
124
|
};
|
119
|
-
UniversalDate.prototype.getWeek = function () {
|
120
|
-
|
125
|
+
UniversalDate.prototype.getWeek = function (oLocale, vCalendarWeekNumbering) {
|
126
|
+
checkWeekConfig(vCalendarWeekNumbering);
|
127
|
+
return UniversalDate.getWeekByDate(this.sCalendarType, this.getFullYear(), this.getMonth(), this.getDate(), oLocale, vCalendarWeekNumbering);
|
121
128
|
};
|
122
|
-
UniversalDate.prototype.setWeek = function (oWeek) {
|
123
|
-
|
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);
|
124
132
|
this.setFullYear(oDate.year, oDate.month, oDate.day);
|
125
133
|
};
|
126
|
-
UniversalDate.prototype.getUTCWeek = function () {
|
127
|
-
|
134
|
+
UniversalDate.prototype.getUTCWeek = function (oLocale, vCalendarWeekNumbering) {
|
135
|
+
checkWeekConfig(vCalendarWeekNumbering);
|
136
|
+
return UniversalDate.getWeekByDate(this.sCalendarType, this.getUTCFullYear(), this.getUTCMonth(), this.getUTCDate(), oLocale, vCalendarWeekNumbering);
|
128
137
|
};
|
129
|
-
UniversalDate.prototype.setUTCWeek = function (oWeek) {
|
130
|
-
|
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);
|
131
141
|
this.setUTCFullYear(oDate.year, oDate.month, oDate.day);
|
132
142
|
};
|
133
143
|
UniversalDate.prototype.getQuarter = function () {
|
@@ -161,15 +171,21 @@ UniversalDate.prototype.getTimezoneLong = function () {
|
|
161
171
|
}
|
162
172
|
};
|
163
173
|
var iMillisecondsInWeek = 7 * 24 * 60 * 60 * 1000;
|
164
|
-
UniversalDate.getWeekByDate = function (sCalendarType, iYear, iMonth, iDay) {
|
165
|
-
|
166
|
-
|
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) {
|
167
183
|
iWeek = calculateWeeks(oFirstDay, oDate);
|
168
184
|
} else {
|
169
185
|
iLastYear = iYear - 1;
|
170
186
|
iNextYear = iYear + 1;
|
171
|
-
oLastFirstDay = getFirstDayOfFirstWeek(clDate, iLastYear);
|
172
|
-
oNextFirstDay = getFirstDayOfFirstWeek(clDate, iNextYear);
|
187
|
+
oLastFirstDay = getFirstDayOfFirstWeek(clDate, iLastYear, oLocale, vCalendarWeekNumbering);
|
188
|
+
oNextFirstDay = getFirstDayOfFirstWeek(clDate, iNextYear, oLocale, vCalendarWeekNumbering);
|
173
189
|
if (oDate >= oNextFirstDay) {
|
174
190
|
iYear = iNextYear;
|
175
191
|
iWeek = 0;
|
@@ -185,9 +201,14 @@ UniversalDate.getWeekByDate = function (sCalendarType, iYear, iMonth, iDay) {
|
|
185
201
|
week: iWeek
|
186
202
|
};
|
187
203
|
};
|
188
|
-
UniversalDate.getFirstDateOfWeek = function (sCalendarType, iYear, iWeek) {
|
189
|
-
|
190
|
-
|
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) {
|
191
212
|
return {
|
192
213
|
year: iYear,
|
193
214
|
month: 0,
|
@@ -200,8 +221,44 @@ UniversalDate.getFirstDateOfWeek = function (sCalendarType, iYear, iWeek) {
|
|
200
221
|
day: oDate.getUTCDate()
|
201
222
|
};
|
202
223
|
};
|
203
|
-
function
|
204
|
-
|
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
|
+
}
|
205
262
|
while (oFirstDay.getUTCDay() !== iFirstDayOfWeek) {
|
206
263
|
oFirstDay.setUTCDate(oFirstDay.getUTCDate() - 1);
|
207
264
|
iDayCount--;
|
@@ -241,7 +298,7 @@ UniversalDate.getEraStartDate = function (sCalendarType, iEra) {
|
|
241
298
|
}
|
242
299
|
};
|
243
300
|
function getEras(sCalendarType) {
|
244
|
-
var oLocale =
|
301
|
+
var oLocale = Configuration.getFormatSettings().getFormatLocale(), oLocaleData = LocaleData.getInstance(oLocale), aEras = mEras[sCalendarType];
|
245
302
|
if (!aEras) {
|
246
303
|
var aEras = oLocaleData.getEraDates(sCalendarType);
|
247
304
|
if (!aEras[0]) {
|