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

image

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