From 4809fec457b29af597bc48fa5ba3d05f21cb2abf Mon Sep 17 00:00:00 2001 From: Alan Perdomo Date: Wed, 5 Apr 2023 12:29:23 -0300 Subject: [PATCH] fix(basic.gblib): Correct web automation 'date' use. --- packages/basic.gblib/services/DialogKeywords.ts | 17 +++++++++++++---- packages/basic.gblib/services/SystemKeywords.ts | 2 +- 2 files changed, 14 insertions(+), 5 deletions(-) diff --git a/packages/basic.gblib/services/DialogKeywords.ts b/packages/basic.gblib/services/DialogKeywords.ts index 0dbf1a15e..7eff82f31 100644 --- a/packages/basic.gblib/services/DialogKeywords.ts +++ b/packages/basic.gblib/services/DialogKeywords.ts @@ -906,14 +906,23 @@ export class DialogKeywords { ); }; - const value = extractEntity(answer); + const parseDate = str => { + function pad(x){return (((''+x).length==2) ? '' : '0') + x; } + var m = str.match(/^(\d{1,2})\/(\d{1,2})\/(\d{4})$/) + , d = (m) ? new Date(m[3], m[2]-1, m[1]) : null + , matchesPadded = (d&&(str==[pad(d.getDate()),pad(d.getMonth()+1),d.getFullYear()].join('/'))) + , matchesNonPadded = (d&&(str==[d.getDate(),d.getMonth()+1,d.getFullYear()].join('/'))); + return (matchesPadded || matchesNonPadded) ? d : null; + } - if (value === null || value.length != 1) { + let value = parseDate(answer); + + if (value === null) { await this.talk({ pid, text: 'Por favor, digite uma data no formato 12/12/2020.' }); return await this.hear({ pid, kind, args }); } - - result = value; + value = new Date(value); + result = value.toLocaleString('pt-BR', { day: '2-digit', month: '2-digit', year: 'numeric' }); } else if (kind === 'hour') { const extractEntity = (text: string) => { return text.match(/^([0-1]?[0-9]|2[0-4]):([0-5][0-9])(:[0-5][0-9])?$/gi); diff --git a/packages/basic.gblib/services/SystemKeywords.ts b/packages/basic.gblib/services/SystemKeywords.ts index 1e8719d26..8474c280b 100644 --- a/packages/basic.gblib/services/SystemKeywords.ts +++ b/packages/basic.gblib/services/SystemKeywords.ts @@ -487,7 +487,7 @@ export class SystemKeywords { // Processes FILTER option to ensure parallel SET calls. - const filter = await DialogKeywords.getOption({ pid, name }); + const filter = await DialogKeywords.getOption({ pid, name: 'filter' }); if (filter) { const row = this.find({ pid, handle: null, args: [filter] }); address += row['line'];