Здравствуй, зимнее время! Часть II

Оказывается, у прошлой истории есть продолжение.

Со слов заказчика проблема проявляется следующим образом:

Выявилась проблема со стандартным элементом управления задания даты.
Например, такой контрол используется в DA для задания параметров Job.

Описание проблемы:

Если открыть контрол на дате позднее февраля 2014 (25.02.2014) и попробовать стрелками перейти на более раннюю дату, то январь 2014 отображаться не будет.
Если открыть контрол на дате раньше декабря 2013 (12.11.2013) и попробовать стрелками перейти на более позднюю дату, то декабрь 2013 года отобразиться дважды, и дальше продвинутся уже будет нельзя.

Гугл, конечно, великий помощник, главное знать, что искать, и я знал. Наиболее адекватное обсуждение по теме: Хром, укравший рождество

Патч для WDK:

--- wdk/include/popupCalendar.js.orig	Thu Jan 31 01:54:20 2013
+++ wdk/include/popupCalendar.js	Sat Nov  8 00:17:33 2014
@@ -48,11 +48,11 @@
 pcPopupDIV.m_inputDate = getInputDate();
 if (pcPopupDIV.m_inputDate == null)
 {
-pcPopupDIV.m_currentMonth = new Date(getYear(pcPopupDIV.m_todaysDate), pcPopupDIV.m_todaysDate.getMonth(), 1);
+pcPopupDIV.m_currentMonth = new Date(getYear(pcPopupDIV.m_todaysDate), pcPopupDIV.m_todaysDate.getMonth(), 1, 12);
 }
 else
 {
-pcPopupDIV.m_currentMonth = new Date(getYear(pcPopupDIV.m_inputDate), pcPopupDIV.m_inputDate.getMonth(), 1);
+pcPopupDIV.m_currentMonth = new Date(getYear(pcPopupDIV.m_inputDate), pcPopupDIV.m_inputDate.getMonth(), 1, 12);
 }
 pcPopupDIV.className = CLASS_CAL;
 pcPopupDIV.onmouseover = onMouseOver;
@@ -134,7 +134,7 @@
 month = 11;
 year -= 1;
 }
-pcPopupDIV.m_currentMonth = new Date(year, month, 1);
+pcPopupDIV.m_currentMonth = new Date(year, month, 1, 12);
 renderCalendar();
 if(g_clientInfo.isPlatform(ClientInfo.MACOS) && g_clientInfo.isBrowser(ClientInfo.MSIE))
 return false;
@@ -149,7 +149,7 @@
 month = 0;
 year += 1;
 }
-pcPopupDIV.m_currentMonth = new Date(year, month, 1);
+pcPopupDIV.m_currentMonth = new Date(year, month, 1, 12);
 renderCalendar();
 if(g_clientInfo.isPlatform(ClientInfo.MACOS) && g_clientInfo.isBrowser(ClientInfo.MSIE))
 return false;
@@ -498,7 +498,7 @@
 {
 year += 1900;
 }
-return new Date(year, month - 1, day);
+return new Date(year, month - 1, day, 12);
 }
 return null;
 }
@@ -621,7 +621,7 @@
 function getTodaysDate()
 {
 var now = new Date();
-var today = new Date(getYear(now), now.getMonth(), now.getDate());
+var today = new Date(getYear(now), now.getMonth(), now.getDate(), 12);
 return today;
 }
 function indexOfDigit(strString, indexFrom)

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s