Prefill forms blocks fields from URLs
Os valores dos componentes de formulário podem ser pré-preenchidos por meio da url, porém alguns componentes tem algumas particularidades e no geral deve ser seguido um formato de url para evitar conflitos com modais e outras funcionalidades do sistema
Formato padrão
O formato padrão da url é ?form=JSON
. Com isso todos os forms do app usarão o JSON para pre-preencher os campos do form. Um detalhe importante é que o json deve estar codificado no formato da url. Ex:
https://test.jestor.com.br/app/id?form={"name":"1"}
com encoding:
https://test.jestor.com.br/app/id?form=%7B%22name%22%3A%221%22%7D
Caso o app tenha mais de um form e sejá necessário gerar valores diferentes para cada form basta adicionar o id do componente seguindo esse formato ?form.idComponent=JSON&form.idComponent2=JSON2
. Ex:
https://test.jestor.com.br/app/id?form.8A6eBhYtCJYandNeXtF6t=ENCODED_JSON1&form.nNYRi8pufr1VE9cA-HTHG=ENCODED_JSON2
O id de cada componente por enquanto pode ser obtido pela url de edição do componente
Formato do JSON
O formato do json difere um pouco dependendo do tipo de componente, já que alguns formulários podem ter mais uma table relacionada
O formato padrão é um simples objeto no formato { "fieldId": "value" }
. Isso vai funcionar no form Single trick button e também para os valores da tabela principal no Internal forms
Agora para o form Fields e os forms internos do Internal forms é necessário adicionar também o id da table do campo { "objectId.fieldId": "value" }
Util de geração via JS
Para exemplificar, esse é um util que gera a URL dos valores de um form em JS
function getFormUrl(compId: string | null, values: any) {
return `form${compId ? `.${compId}` : ''}=${encodeURIComponent(
JSON.stringify(values),
)}`;
}
getFormUrl(null, { name: '1' });
getFormUrl('8A6eBhYtCJYandNeXtF6t', { name: '1' });
getFormUrl('8A6eBhYtCJYandNeXtF6t', { 'table_1.name': '1' });
window.location.search = [
getFormUrl('8A6eBhYtCJYandNeXtF6t', { 'table_1.name': '1' }),
getFormUrl('nNYRi8pufr1VE9cA', { name: '1' }),
].join('&');
Selecionar registro para atualização do Super Form via URL
No bloco "Super Form" com a opção de atualização de registro habilitada é possível selecionar o registro a ser atualizado a partir da url. Para isso basta adicionar ?updateRecord=
+ ID do registro
a query string da URL, ou caso tenha mais de um formulário no app: ?updateRecord.
+ ID do componente
+ =
+ ID do registro
. Ex:
// seleciona os registros com ID == 10 em todos forms
https://test.jestor.com.br/app/id?updateRecord=10
// seleciona os registros com ID == 10 em um form especifíco
https://test.jestor.com.br/app/id?updateRecord.8A6eBhYtCJYandNeXtF6t=10
Updated over 1 year ago