@ui5/webcomponents-localization 0.0.0-cf069fb29 → 0.0.0-d4d43327a
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 +224 -0
- package/README.md +5 -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/dist/features/calendar/Buddhist.js +1 -0
- package/dist/features/calendar/Buddhist.js.map +1 -0
- package/dist/features/calendar/Gregorian.js +1 -0
- package/dist/features/calendar/Gregorian.js.map +1 -0
- package/dist/features/calendar/Islamic.js +1 -0
- package/dist/features/calendar/Islamic.js.map +1 -0
- package/dist/features/calendar/Japanese.js +1 -0
- package/dist/features/calendar/Japanese.js.map +1 -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 -2
- 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 -29
- package/dist/sap/base/assert.js +5 -6
- 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/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 +14 -0
- package/dist/sap/ui/core/FormatSettings.js.map +1 -0
- package/dist/sap/ui/core/Locale.js +13 -0
- package/dist/sap/ui/core/LocaleData.js +107 -6
- 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 +496 -201
- package/dist/sap/ui/core/format/TimezoneUtil.js +94 -0
- package/package-scripts.js +5 -7
- package/package.json +6 -5
- 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 +16 -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
- /package/{src/features/calendar/Buddhist.js → dist/features/calendar/Buddhist.d.ts} +0 -0
- /package/{src/features/calendar/Gregorian.js → dist/features/calendar/Gregorian.d.ts} +0 -0
- /package/{src/features/calendar/Islamic.js → dist/features/calendar/Islamic.d.ts} +0 -0
- /package/{src/features/calendar/Japanese.js → dist/features/calendar/Japanese.d.ts} +0 -0
- /package/{src/features/calendar/Persian.js → dist/features/calendar/Persian.d.ts} +0 -0
- /package/src/{Assets-static.js → Assets-static.ts} +0 -0
- /package/src/{Assets.js → Assets.ts} +0 -0
@@ -5,11 +5,14 @@ import CalendarType from './CalendarType.js';
|
|
5
5
|
import Locale from './Locale.js';
|
6
6
|
import assert from '../../base/assert.js';
|
7
7
|
import LoaderExtensions from '../../base/util/LoaderExtensions.js';
|
8
|
+
import Configuration from './Configuration.js';
|
8
9
|
var LocaleData = BaseObject.extend('sap.ui.core.LocaleData', {
|
9
10
|
constructor: function (oLocale) {
|
10
11
|
this.oLocale = oLocale;
|
11
12
|
BaseObject.apply(this);
|
12
|
-
|
13
|
+
var oDataLoaded = getData(oLocale);
|
14
|
+
this.mData = oDataLoaded.mData;
|
15
|
+
this.sCLDRLocaleId = oDataLoaded.sCLDRLocaleId;
|
13
16
|
},
|
14
17
|
_get: function () {
|
15
18
|
return this._getDeep(this.mData, arguments);
|
@@ -95,6 +98,56 @@ var LocaleData = BaseObject.extend('sap.ui.core.LocaleData', {
|
|
95
98
|
assert(sStyle == 'short' || sStyle == 'medium' || sStyle == 'long' || sStyle == 'full', 'sStyle must be short, medium, long or full');
|
96
99
|
return this._get(getCLDRCalendarName(sCalendarType), 'dateFormats', sStyle);
|
97
100
|
},
|
101
|
+
getFlexibleDayPeriods: function (sWidth, sCalendarType) {
|
102
|
+
return this._get(getCLDRCalendarName(sCalendarType), 'flexibleDayPeriods', 'format', sWidth);
|
103
|
+
},
|
104
|
+
getFlexibleDayPeriodsStandAlone: function (sWidth, sCalendarType) {
|
105
|
+
return this._get(getCLDRCalendarName(sCalendarType), 'flexibleDayPeriods', 'stand-alone', sWidth);
|
106
|
+
},
|
107
|
+
getFlexibleDayPeriodOfTime: function (iHour, iMinute) {
|
108
|
+
var iAbsoluteMinutes, oDayPeriodRules, sPeriodMatch;
|
109
|
+
iAbsoluteMinutes = (iHour * 60 + iMinute) % 1440;
|
110
|
+
oDayPeriodRules = this._get('dayPeriodRules');
|
111
|
+
function parseToAbsoluteMinutes(sValue) {
|
112
|
+
var aSplit = sValue.split(':'), sHour = aSplit[0], sMinute = aSplit[1];
|
113
|
+
return parseInt(sHour) * 60 + parseInt(sMinute);
|
114
|
+
}
|
115
|
+
sPeriodMatch = Object.keys(oDayPeriodRules).find(function (sDayPeriodRule) {
|
116
|
+
var oDayPeriodRule = oDayPeriodRules[sDayPeriodRule];
|
117
|
+
return oDayPeriodRule['_at'] && parseToAbsoluteMinutes(oDayPeriodRule['_at']) === iAbsoluteMinutes;
|
118
|
+
});
|
119
|
+
if (sPeriodMatch) {
|
120
|
+
return sPeriodMatch;
|
121
|
+
}
|
122
|
+
return Object.keys(oDayPeriodRules).find(function (sDayPeriodRule) {
|
123
|
+
var iEndValue, aIntervals, iStartValue, oDayPeriodRule = oDayPeriodRules[sDayPeriodRule];
|
124
|
+
if (oDayPeriodRule['_at']) {
|
125
|
+
return false;
|
126
|
+
}
|
127
|
+
iStartValue = parseToAbsoluteMinutes(oDayPeriodRule['_from']);
|
128
|
+
iEndValue = parseToAbsoluteMinutes(oDayPeriodRule['_before']);
|
129
|
+
if (iStartValue > iEndValue) {
|
130
|
+
aIntervals = [
|
131
|
+
{
|
132
|
+
start: iStartValue,
|
133
|
+
end: 1440
|
134
|
+
},
|
135
|
+
{
|
136
|
+
start: 0,
|
137
|
+
end: iEndValue
|
138
|
+
}
|
139
|
+
];
|
140
|
+
} else {
|
141
|
+
aIntervals = [{
|
142
|
+
start: iStartValue,
|
143
|
+
end: iEndValue
|
144
|
+
}];
|
145
|
+
}
|
146
|
+
return aIntervals.some(function (oInterval) {
|
147
|
+
return oInterval.start <= iAbsoluteMinutes && oInterval.end > iAbsoluteMinutes;
|
148
|
+
});
|
149
|
+
});
|
150
|
+
},
|
98
151
|
getTimePattern: function (sStyle, sCalendarType) {
|
99
152
|
assert(sStyle == 'short' || sStyle == 'medium' || sStyle == 'long' || sStyle == 'full', 'sStyle must be short, medium, long or full');
|
100
153
|
return this._get(getCLDRCalendarName(sCalendarType), 'timeFormats', sStyle);
|
@@ -109,6 +162,24 @@ var LocaleData = BaseObject.extend('sap.ui.core.LocaleData', {
|
|
109
162
|
var sDateTimePattern = this.getDateTimePattern(sDateStyle, sCalendarType), sDatePattern = this.getDatePattern(sDateStyle, sCalendarType), sTimePattern = this.getTimePattern(sTimeStyle, sCalendarType);
|
110
163
|
return sDateTimePattern.replace('{0}', sTimePattern).replace('{1}', sDatePattern);
|
111
164
|
},
|
165
|
+
getCombinedDateTimeWithTimezonePattern: function (sDateStyle, sTimeStyle, sCalendarType) {
|
166
|
+
return this.applyTimezonePattern(this.getCombinedDateTimePattern(sDateStyle, sTimeStyle, sCalendarType));
|
167
|
+
},
|
168
|
+
applyTimezonePattern: function (sPattern) {
|
169
|
+
var aPatterns = [sPattern];
|
170
|
+
var aMissingTokens = [{
|
171
|
+
group: 'Timezone',
|
172
|
+
length: 2,
|
173
|
+
field: 'zone',
|
174
|
+
symbol: 'V'
|
175
|
+
}];
|
176
|
+
this._appendItems(aPatterns, aMissingTokens);
|
177
|
+
return aPatterns[0];
|
178
|
+
},
|
179
|
+
getTimezoneTranslations: function () {
|
180
|
+
this.mTimezoneTranslations = this.mTimezoneTranslations || _resolveTimezoneTranslationStructure(this._get('timezoneNames'));
|
181
|
+
return Object.assign({}, this.mTimezoneTranslations);
|
182
|
+
},
|
112
183
|
getCustomDateTimePattern: function (sSkeleton, sCalendarType) {
|
113
184
|
var oAvailableFormats = this._get(getCLDRCalendarName(sCalendarType), 'dateTimeFormats', 'availableFormats');
|
114
185
|
return this._getFormatPattern(sSkeleton, oAvailableFormats, sCalendarType);
|
@@ -727,7 +798,7 @@ var LocaleData = BaseObject.extend('sap.ui.core.LocaleData', {
|
|
727
798
|
return oMessageBundle.getText(sKey, iWeekNumber);
|
728
799
|
},
|
729
800
|
firstDayStartsFirstWeek: function () {
|
730
|
-
return this.
|
801
|
+
return this.oLocale.getLanguage() === 'en' && this.oLocale.getRegion() === 'US';
|
731
802
|
},
|
732
803
|
getPreferredCalendarType: function () {
|
733
804
|
var sCalendarPreference = this._get('calendarPreference'), aCalendars = sCalendarPreference ? sCalendarPreference.split(' ') : [], sCalendarName, sType, i;
|
@@ -1155,9 +1226,29 @@ var M_SUPPORTED_LOCALES = function () {
|
|
1155
1226
|
return result;
|
1156
1227
|
}();
|
1157
1228
|
var mLocaleDatas = {};
|
1229
|
+
function _resolveTimezoneTranslationStructure(oNode, sKey, oResult, aParentTranslations) {
|
1230
|
+
aParentTranslations = aParentTranslations ? aParentTranslations.slice() : [];
|
1231
|
+
oResult = oResult || {};
|
1232
|
+
sKey = sKey || '';
|
1233
|
+
Object.keys(oNode).forEach(function (sChildKey) {
|
1234
|
+
var vChildNode = oNode[sChildKey];
|
1235
|
+
if (typeof vChildNode === 'object') {
|
1236
|
+
var aParentTranslationForChild = aParentTranslations.slice();
|
1237
|
+
var sParent = vChildNode['_parent'];
|
1238
|
+
if (sParent) {
|
1239
|
+
aParentTranslationForChild.push(sParent);
|
1240
|
+
}
|
1241
|
+
_resolveTimezoneTranslationStructure(vChildNode, sKey + sChildKey + '/', oResult, aParentTranslationForChild);
|
1242
|
+
} else if (typeof vChildNode === 'string' && sChildKey !== '_parent') {
|
1243
|
+
var sParents = aParentTranslations.length ? aParentTranslations.join(', ') + ', ' : '';
|
1244
|
+
oResult[sKey + sChildKey] = sParents + vChildNode;
|
1245
|
+
}
|
1246
|
+
});
|
1247
|
+
return oResult;
|
1248
|
+
}
|
1158
1249
|
function getCLDRCalendarName(sCalendarType) {
|
1159
1250
|
if (!sCalendarType) {
|
1160
|
-
sCalendarType =
|
1251
|
+
sCalendarType = Configuration.getCalendarType();
|
1161
1252
|
}
|
1162
1253
|
return 'ca-' + sCalendarType.toLowerCase();
|
1163
1254
|
}
|
@@ -1210,19 +1301,29 @@ function getData(oLocale) {
|
|
1210
1301
|
sLanguage = 'sr_Latn';
|
1211
1302
|
}
|
1212
1303
|
var sId = sLanguage + '_' + sRegion;
|
1304
|
+
var sCLDRLocaleId = sId;
|
1213
1305
|
if (sLanguage && sRegion) {
|
1214
1306
|
mData = getOrLoad(sId);
|
1215
1307
|
}
|
1216
1308
|
if (!mData && sLanguage) {
|
1217
1309
|
mData = getOrLoad(sLanguage);
|
1310
|
+
sCLDRLocaleId = sLanguage;
|
1311
|
+
}
|
1312
|
+
if (!mData) {
|
1313
|
+
mData = getOrLoad('en');
|
1314
|
+
sCLDRLocaleId = 'en';
|
1218
1315
|
}
|
1219
|
-
mLocaleDatas[sId] = mData
|
1220
|
-
|
1316
|
+
mLocaleDatas[sId] = mData;
|
1317
|
+
sCLDRLocaleId = sCLDRLocaleId.replace(/_/g, '-');
|
1318
|
+
return {
|
1319
|
+
mData: mData,
|
1320
|
+
sCLDRLocaleId: sCLDRLocaleId
|
1321
|
+
};
|
1221
1322
|
}
|
1222
1323
|
var CustomLocaleData = LocaleData.extend('sap.ui.core.CustomLocaleData', {
|
1223
1324
|
constructor: function (oLocale) {
|
1224
1325
|
LocaleData.apply(this, arguments);
|
1225
|
-
this.mCustomData =
|
1326
|
+
this.mCustomData = Configuration.getFormatSettings().getCustomLocaleData();
|
1226
1327
|
},
|
1227
1328
|
_get: function () {
|
1228
1329
|
var aArguments = Array.prototype.slice.call(arguments), sCalendar, sKey;
|
@@ -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]) {
|