Skip to content

feat(datepicker): date format finding #133

Merged
merged 8 commits into from
Jun 7, 2019
Merged

feat(datepicker): date format finding #133

merged 8 commits into from
Jun 7, 2019

Conversation

roll314
Copy link
Contributor

@roll314 roll314 commented Jun 4, 2019

@fost
@lskramarov
@mikeozornin

Для обоих локалей

  • ISO 2019-06-03T14:50:30.000Z'
  • нотация с точкой
    • короткий год 26.01.2019
    • длинный год 26.01.19
  • нотация с тире
    • с завершающим годом
      • короткий год 26-01-19
      • длинный год 26-01-2019
    • с лидирующем годом
      • длинный год 2019-01-26
  • unix timestamp (sec) 1559509200

Для ru

  • нотация со слешем
    • с завершающим годом
      • короткий год 26/01/19
      • длинный год 26/01/2019

Для en

  • нотация со слешем
    • с завершающим годом
      • день-месяц-год
        • короткий год 26/01/2019
        • длинный год 26/01/19
    • месяц-день-год
      - короткий год 01/26/2019
      - длинный год 01/26/19

Для ru

  • месяц прописью
    • короткий месяц 10 фер 2019
    • длинный месяц 10 февраля 2019

Для en

  • месяц прописью
    • короткий месяц
      • дата с окончанием Jan 26th 2019
      • дата без окончания 26 Jan 2019
    • длинный месяц
      • дата с окончанием January 26th 2019
      • дата без окончания 26 January 2019

Короткий год означает 2000 + год, т.е. 19 это 2019

@mikeozornin
Copy link
Contributor

Клево.

А как определяется где месяц для 12/05/2019, если два формата подходят? Имхо, нужно убрать варианты со / из русского и решать, что это всегда англ, причем mm/dd/yyyy. Иначе не угадать.

@lskramarov
Copy link
Contributor

Давайте в данном контексте не употреблять слово "угадывать".
В данном случае мы пытаемся определить формат, в котором представлена дата.

Настройка параметра должна происходить при подключении DateAdapter в провайдере, но не в компоненте и тем более не через input'ы

@roll314
Copy link
Contributor Author

roll314 commented Jun 6, 2019

Логика следующая:
сперва смотрим что из себя представляет первый кусок и второй. Если внезапно первый кусок больше 12, а второй меньше, то значит первый кусок не месяц и следовательно формат день\месяц\год. Если такой ситуации нет, то будет использоваться американский формат месяц\день\год. На мой взгляд это разумная попытка угадать UK формат

@roll314
Copy link
Contributor Author

roll314 commented Jun 6, 2019

Логично, поправлю

@pimenovoleg
Copy link
Member

Давайте в данном контексте не употреблять слово "угадывать".
В данном случае мы пытаемся определить формат, в котором представлена дата.

@roll314 замени слово guessing, на определение (более близкий синоним)

@roll314 roll314 changed the title feat(datepicker): date format guessing feat(datepicker): date format finding Jun 6, 2019
@roll314
Copy link
Contributor Author

roll314 commented Jun 6, 2019

Вынес в настройки опцию с поиском формата, обновил тесты

@roll314
Copy link
Contributor Author

roll314 commented Jun 6, 2019

переименовал, в т.ч. и по коду

@mikeozornin
Copy link
Contributor

У меня не заводится пример:

Uncaught Error: Template parse errors:
Can't bind to 'shouldGuess' since it isn't a known property of 'input'. ("label>
    <mc-form-field>
        <input mcInput [(ngModel)]="date" [mcDatepicker]="myDatepicker0" [ERROR ->][shouldGuess]="true" />
        <mc-datepicker-toggle mcSuffix [for]="myDatepicker0"></mc-datepicker-"): ng:///DemoModule/DemoComponent.html@3:73
    at syntaxError (compiler.js:2430)
    at TemplateParser.push../node_modules/@angular/compiler/fesm5/compiler.js.TemplateParser.parse (compiler.js:20605)
    at JitCompiler.push../node_modules/@angular/compiler/fesm5/compiler.js.JitCompiler._parseTemplate (compiler.js:26171)
    at JitCompiler.push../node_modules/@angular/compiler/fesm5/compiler.js.JitCompiler._compileTemplate (compiler.js:26158)
    at compiler.js:26101
    at Set.forEach (<anonymous>)
    at JitCompiler.push../node_modules/@angular/compiler/fesm5/compiler.js.JitCompiler._compileComponents (compiler.js:26101)
    at compiler.js:26011
    at Object.then (compiler.js:2421)
    at JitCompiler.push../node_modules/@angular/compiler/fesm5/compiler.js.JitCompiler._compileModuleAndComponents (compiler.js:26010)

Peter Kornuishin added 2 commits June 7, 2019 10:00
@roll314
Copy link
Contributor Author

roll314 commented Jun 7, 2019

поправил пример, добавил комменты к регуляркам

Copy link
Contributor

@mikeozornin mikeozornin left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Разделенное по локалям ок, если сможем определять сразу для двух языков, то совсем волшебно будет

@pimenovoleg pimenovoleg merged commit 880ddc3 into positive-js:master Jun 7, 2019
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

4 participants