Javascript-форум (https://javascript.ru/forum/)
-   ExtJS (https://javascript.ru/forum/extjs/)
-   -   Форматирование даты (https://javascript.ru/forum/extjs/56289-formatirovanie-daty.html)

Пролетарий 08.06.2015 21:26

Форматирование даты
 
Существует ли в принципе возможность форматировать дату в полях ввода и при выводе в таблице, но так чтобы это не влияло на сами данные, которые затем будут отправлены на сервер?

У меня на сервере пустая дата это "0001.00.00 00:00", но на клиенте хочется чтобы в поле ввода даты, если она "пустая" выводилась чистая строка, а не год рождения Иисуса, а то люди пугаются такой даты. :)

Пробовал в моделе использовать convert: function (value) {} но это влияет на данные, которые затем оправляются на сервер, т.е. я заменяю якобы пустую дату на пустую строку и на клиенте вроде всё нормально, но эта пустая строка возвращается на сервер,а там всё ломается и не может распарсится из json.

Хочется, чтобы дата хранилась как "0001.00.00 00:00", но клиент видел пустую строку и если он дату не выбирал, то на сервер она вернулась в том же виде, что и пришла, т.е. "0001.00.00 00:00".

Есть конечно в полях ввода свойство format: "d.m.Y H:i", но оно не делает то что хотелось бы.

nohuhu 08.06.2015 22:21

Опция submitFormat вам поможет: http://docs.sencha.com/extjs/5.1/5.1...g-submitFormat.

AirGraph 08.06.2015 23:43

Вот это похоже на то, что Вам нужно:

http://docs.sencha.com/extjs/5.1/5.1...n-cfg-renderer

siber-biber 09.06.2015 07:00

для колонки есть конфиг format: http://docs.sencha.com/extjs/5.1/5.1...ate-cfg-format

Пролетарий 09.06.2015 14:13

Цитата:

Сообщение от nohuhu (Сообщение 374343)
Опция submitFormat вам поможет: http://docs.sencha.com/extjs/5.1/5.1...g-submitFormat.

К сожалению не помогла, она преобразует дату в любой формат для отправки на сервер, но если дата null или пустая строка, то на сервер всё равно уходит null, который в дату не может там распознаваться.

Цитата:

Сообщение от siber-biber (Сообщение 374405)
для колонки есть конфиг format: http://docs.sencha.com/extjs/5.1/5.1...ate-cfg-format

format я пользуюсь, но он не может сделать дату "0001-01-01" пустой, а только преобразовать скажем в "0001.01.01", если конечно там нет какого специального формата для таких случаев, но я не нашел.

Цитата:

Сообщение от AirGraph (Сообщение 374365)
Вот это похоже на то, что Вам нужно:

http://docs.sencha.com/extjs/5.1/5.1...n-cfg-renderer

Выглядит как то что надо, но не могу то же самое найти для поля ввода в форме. Она там как-то по другому называется или это предусмотрено только для таблиц?

AirGraph 09.06.2015 16:28

Я про вывод в GridPanel.
Про поля ввода вопрос не изучал...

siber-biber 09.06.2015 17:02

1) для колонок renderer
2) для полей свой класс с перекрытым valueToRaw (и rawToValue наверно тоже придется перекрыть):
http://docs.sencha.com/extjs/5.1/5.1...hod-valueToRaw

Пролетарий 09.06.2015 17:40

Спасибо за ответы.

Буду разбираться.

nohuhu 09.06.2015 21:58

Цитата:

Сообщение от Пролетарий
Сообщение от nohuhu
Опция submitFormat вам поможет: http://docs.sencha.com/extjs/5.1/5.1...g-submitFormat.
К сожалению не помогла, она преобразует дату в любой формат для отправки на сервер, но если дата null или пустая строка, то на сервер всё равно уходит null, который в дату не может там распознаваться.

На такой случай есть опция поля в модели: http://docs.sencha.com/extjs/5.1/5.1...-cfg-serialize.


Часовой пояс GMT +3, время: 15:50.