@@ -14,8 +14,8 @@ import {
1414
1515import * as util from './../../utils/util' ;
1616
17- import { PoPageDynamicEditActions } from './po-page-dynamic-edit-actions.interface' ;
18- import { PoPageDynamicEditField } from './po-page-dynamic-edit-field.interface' ;
17+ import { PoPageDynamicEditActions } from './interfaces/ po-page-dynamic-edit-actions.interface' ;
18+ import { PoPageDynamicEditField } from './interfaces/ po-page-dynamic-edit-field.interface' ;
1919import { PoPageDynamicService } from './po-page-dynamic.service' ;
2020
2121export const poPageDynamicEditLiteralsDefault = {
@@ -69,6 +69,63 @@ export const poPageDynamicEditLiteralsDefault = {
6969 * O `po-page-dynamic-edit` é uma página que pode servir para editar ou criar novos registros,
7070 * o mesmo também suporta metadados conforme especificado na documentação.
7171 *
72+ * ### Utilização via rota
73+ *
74+ * Ao utilizar as rotas para carregar o template, o `page-dynamic-edit` disponibiliza propriedades para
75+ * poder especificar o endpoint dos dados e dos metadados. Exemplo de utilização:
76+ *
77+ * ```
78+ * {
79+ * path: 'people',
80+ * component: PoPageDynamicEditComponent,
81+ * data: {
82+ * serviceApi: 'http://localhost:3000/v1/people', // endpoint dos dados
83+ * serviceMetadataApi: 'http://localhost:3000/v1/metadata' // endpoint dos metadados
84+ * }
85+ * }
86+ * ```
87+ *
88+ * Para carregar com um recurso já existente, deve-se ser incluído um parâmetro na rota chamado `id`:
89+ *
90+ * ```
91+ * {
92+ * path: 'people/:id',
93+ * component: PoPageDynamicEditComponent,
94+ * data: {
95+ * serviceApi: 'http://localhost:3000/v1/people', // endpoint dos dados
96+ * serviceMetadataApi: 'http://localhost:3000/v1/metadata' // endpoint dos metadados
97+ * }
98+ * }
99+ * ```
100+ *
101+ * A requisição dos metadados é feita na inicialização do template para buscar os metadados da página passando o
102+ * tipo do metadado esperado e a versão cacheada pelo browser.
103+ *
104+ * O formato esperado na resposta da requisição está especificado na interface
105+ * [PoPageDynamicEditMetadata](/documentation/po-page-dynamic-edit#po-page-dynamic-edit-metadata). Por exemplo:
106+ *
107+ * ```
108+ * {
109+ * version: 1,
110+ * title: 'Person edit',
111+ * fields: [
112+ * { property: 'id', key: true, disabled: true },
113+ * { property: 'status' },
114+ * { property: 'name' },
115+ * { property: 'nickname' },
116+ * { property: 'birthdate', label: 'Birth date' },
117+ * { property: 'genre' },
118+ * { property: 'city' },
119+ * { property: 'country' }
120+ * ]
121+ * }
122+ * ```
123+ *
124+ * > Caso o endpoint dos metadados não seja especificado, será feito uma requisição utilizando o `serviceApi` da seguinte forma:
125+ * ```
126+ * GET {end-point}/metadata?type=edit&version={version}
127+ * ```
128+ *
72129 * @example
73130 *
74131 * <example name="po-page-dynamic-edit-basic" title="Portinari Page Dynamic Edit Basic">
@@ -171,7 +228,7 @@ export class PoPageDynamicEditComponent implements OnInit {
171228 /**
172229 * @description
173230 *
174- * Endpoint usado pelo template para requisição do recurso que serão exibido para edição.
231+ * Endpoint usado pelo template para requisição do recurso que será exibido para edição.
175232 *
176233 * Para as ações de `save` e `saveNew`, será feito uma requisição de criação nesse mesmo endpoint passando os valores
177234 * preenchidos pelo usuário via payload.
@@ -202,10 +259,6 @@ export class PoPageDynamicEditComponent implements OnInit {
202259 * ```
203260 * { "name": "Fulano", "city": "Smallville" }
204261 * ```
205- * > Caso esteja usando metadados com o template, será disparado uma requisição na inicialização do template para buscar
206- * > os metadados da página passando o tipo do metadado esperado e a versão cacheada pelo browser.
207- * >
208- * > `GET {end-point}/metadata?type=create&version={version}`
209262 *
210263 * Caso queira que o template carregue um recurso já existente, deve-se ser incluído um parametro na rota chamado `id`.
211264 *
@@ -240,11 +293,6 @@ export class PoPageDynamicEditComponent implements OnInit {
240293 * ```
241294 * { "name": "Fulano", "city": "Metropolis" }
242295 * ```
243- *
244- * > Caso esteja usando metadados com o template, será disparado uma requisição na inicialização do template para buscar
245- * > os metadados da página passando o tipo do metadado esperado e a versão cacheada pelo browser.
246- * >
247- * > `GET {end-point}/metadata?type=edit&version={version}`
248296 */
249297 @Input ( 'p-service-api' ) serviceApi : string ;
250298
@@ -266,15 +314,13 @@ export class PoPageDynamicEditComponent implements OnInit {
266314 const paramId = this . activatedRoute . snapshot . params [ 'id' ] ;
267315 const duplicate = this . activatedRoute . snapshot . queryParams [ 'duplicate' ] ;
268316
269- if ( this . activatedRoute . snapshot . data . serviceApi ) {
270- this . serviceApi = this . activatedRoute . snapshot . data . serviceApi ;
271-
272- this . poPageDynamicService . configServiceApi ( { endpoint : this . serviceApi } ) ;
317+ const { serviceApi, serviceMetadataApi } = this . activatedRoute . snapshot . data ;
318+ this . serviceApi = serviceApi || this . serviceApi ;
319+ this . poPageDynamicService . configServiceApi ( { endpoint : this . serviceApi , metadata : serviceMetadataApi } ) ;
273320
321+ if ( serviceApi ) {
274322 this . loadMetadata ( paramId , duplicate ) ;
275323 } else {
276- this . poPageDynamicService . configServiceApi ( { endpoint : this . serviceApi } ) ;
277-
278324 this . loadData ( paramId , duplicate ) ;
279325 }
280326 }
0 commit comments