rapida-partner 1.0.0 → 1.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +4 -1
- package/package.json +2 -2
- package/rapidaObject.json +342 -770
- package/src/enums/form-contract.enum.ts +30 -0
- package/src/enums/form.enum.ts +31 -0
- package/src/examples/components/forms/character.form.ts +12 -10
- package/src/examples/components/forms/company.form.ts +83 -76
- package/src/examples/components/forms/movie.form.ts +53 -21
- package/src/examples/components/forms/movieGenre.form.ts +6 -4
- package/src/examples/components/forms/person.form.ts +81 -79
- package/src/examples/modules/movie.ts +2 -1
- package/src/examples/projects/movieBackoffice.ts +1 -1
- package/src/interfaces/data-card.interface.ts +2 -30
- package/src/interfaces/data-detail.interface.ts +2 -30
- package/src/interfaces/form-autocomplete.interface.ts +2 -30
- package/src/interfaces/form-file.interface.ts +2 -30
- package/src/interfaces/form-input.interface.ts +2 -30
- package/src/interfaces/form-select.interface.ts +2 -30
- package/src/interfaces/form.interface.ts +22 -33
- package/src/schemas/data-card.ref.json +2 -28
- package/src/schemas/data-detail.ref.json +2 -30
- package/src/schemas/form-autocomplete.ref.json +1 -29
- package/src/schemas/form-contract-request-array.ref.json +18 -0
- package/src/schemas/form-contract-request-one-of.ref.json +11 -0
- package/src/schemas/form-contract-request.ref.json +49 -0
- package/src/schemas/form-file.ref.json +1 -31
- package/src/schemas/form-input.ref.json +1 -31
- package/src/schemas/form-select.ref.json +1 -29
- package/src/schemas/form.ref.json +46 -47
- package/src/schemas/types-datatype.ref.json +32 -0
package/rapidaObject.json
CHANGED
|
@@ -1,25 +1,26 @@
|
|
|
1
1
|
{
|
|
2
|
-
"
|
|
3
|
-
"
|
|
2
|
+
"id": "movieBackoffice",
|
|
3
|
+
"title": "Movie Backoffice",
|
|
4
|
+
"description": "Sistema de gerenciamento para filmes e personagens.",
|
|
5
|
+
"flow": "permeson",
|
|
4
6
|
"businessPlan": {
|
|
5
|
-
"businessValue": "
|
|
6
|
-
"targetMarket": "
|
|
7
|
-
"benchmarkings": "
|
|
8
|
-
"legalIssues": "
|
|
9
|
-
"ethicalIssues": "
|
|
10
|
-
"afterSales": "
|
|
7
|
+
"businessValue": "Gerenciar e otimizar as operações do Movie.",
|
|
8
|
+
"targetMarket": "Empresas que utilizam o Movie para gerenciar sugestões e feedbacks.",
|
|
9
|
+
"benchmarkings": "Análise de sistemas de gerenciamento de feedbacks.",
|
|
10
|
+
"legalIssues": "Conformidade com leis de proteção de dados.",
|
|
11
|
+
"ethicalIssues": "Garantir a privacidade dos usuários.",
|
|
12
|
+
"afterSales": "Suporte contínuo e atualizações regulares.",
|
|
13
|
+
"monetization": "Assinaturas mensais para acesso ao sistema."
|
|
11
14
|
},
|
|
12
|
-
"
|
|
13
|
-
"flow": "permeson",
|
|
14
|
-
"frontend": { "framework": "angular", "uiKit": "material" },
|
|
15
|
+
"frontend": { "framework": "svelte", "uiKit": "flowbite" },
|
|
15
16
|
"backend": {
|
|
16
17
|
"framework": "nest",
|
|
17
18
|
"jwtSecret": "Kunl4t3kw1llN3v3rD13",
|
|
18
19
|
"database": {
|
|
19
20
|
"provider": "mongodb",
|
|
20
|
-
"connectionString": "mongodb+srv://kunlatek:Kunlatek751@cluster0.b0pfr.mongodb.net/
|
|
21
|
+
"connectionString": "mongodb+srv://kunlatek:Kunlatek751@cluster0.b0pfr.mongodb.net/movie-v1",
|
|
21
22
|
"credentials": {
|
|
22
|
-
"databaseName": "
|
|
23
|
+
"databaseName": "movie-v1",
|
|
23
24
|
"username": "kunlatek",
|
|
24
25
|
"password": "Kunlatek751",
|
|
25
26
|
"host": "cluster0.b0pfr.mongodb.net"
|
|
@@ -46,90 +47,6 @@
|
|
|
46
47
|
"baseUrl": "http://localhost:5173"
|
|
47
48
|
},
|
|
48
49
|
"modules": [
|
|
49
|
-
{
|
|
50
|
-
"title": "Autenticação",
|
|
51
|
-
"id": "authenticationGoogleAndAppleModule",
|
|
52
|
-
"icon": "lock",
|
|
53
|
-
"components": [
|
|
54
|
-
{
|
|
55
|
-
"title": "Autenticação",
|
|
56
|
-
"id": "authenticationGoogleAndAppleForm",
|
|
57
|
-
"userStory": "Como usuário, quero poder me autenticar usando minha conta do Google ou Apple para facilitar o acesso ao sistema.",
|
|
58
|
-
"contracts": [
|
|
59
|
-
{ "endpoint": "/auth/google", "methods": [{ "verb": "GET" }] },
|
|
60
|
-
{ "endpoint": "/auth/apple", "methods": [{ "verb": "GET" }] }
|
|
61
|
-
],
|
|
62
|
-
"componentType": "form",
|
|
63
|
-
"elements": [
|
|
64
|
-
{
|
|
65
|
-
"label": "Entrar com o Gmail",
|
|
66
|
-
"type": "button",
|
|
67
|
-
"id": "loginWithGoogle",
|
|
68
|
-
"actionType": "apiRequest",
|
|
69
|
-
"apiRequest": {
|
|
70
|
-
"endpoint": "/auth/google",
|
|
71
|
-
"paramType": "query"
|
|
72
|
-
},
|
|
73
|
-
"icon": "google",
|
|
74
|
-
"businessRules": [
|
|
75
|
-
{
|
|
76
|
-
"rule": {
|
|
77
|
-
"description": "IF Google ID EXISTS in the database Users collection with Google ID AND collection Profiles related THEN",
|
|
78
|
-
"subrules": [
|
|
79
|
-
{
|
|
80
|
-
"description": "Log in the user AND redirect to home page"
|
|
81
|
-
},
|
|
82
|
-
{
|
|
83
|
-
"description": "Generate a JWT with the logged-in user's data and their related profile to be used by the application's API using a secret key to serialize it"
|
|
84
|
-
}
|
|
85
|
-
]
|
|
86
|
-
}
|
|
87
|
-
},
|
|
88
|
-
{
|
|
89
|
-
"rule": {
|
|
90
|
-
"description": "IF Google ID does NOT EXIST in the database THEN",
|
|
91
|
-
"subrules": [
|
|
92
|
-
{ "description": "Redirect to profile registration form" }
|
|
93
|
-
]
|
|
94
|
-
}
|
|
95
|
-
}
|
|
96
|
-
]
|
|
97
|
-
},
|
|
98
|
-
{
|
|
99
|
-
"label": "Entrar com o AppleId",
|
|
100
|
-
"type": "button",
|
|
101
|
-
"id": "loginWithAppleId",
|
|
102
|
-
"actionType": "apiRequest",
|
|
103
|
-
"apiRequest": { "endpoint": "/auth/apple", "paramType": "query" },
|
|
104
|
-
"icon": "apple",
|
|
105
|
-
"businessRules": [
|
|
106
|
-
{
|
|
107
|
-
"rule": {
|
|
108
|
-
"description": "IF Apple ID EXISTS in the database Users collection with Apple ID AND collection Profiles related THEN",
|
|
109
|
-
"subrules": [
|
|
110
|
-
{
|
|
111
|
-
"description": "Log in the user AND redirect to home page"
|
|
112
|
-
},
|
|
113
|
-
{
|
|
114
|
-
"description": "Generate a JWT with the logged-in user's data and their related profile to be used by the application's API using a secret key to serialize it"
|
|
115
|
-
}
|
|
116
|
-
]
|
|
117
|
-
}
|
|
118
|
-
},
|
|
119
|
-
{
|
|
120
|
-
"rule": {
|
|
121
|
-
"description": "IF Apple ID does NOT EXIST in the database THEN",
|
|
122
|
-
"subrules": [
|
|
123
|
-
{ "description": "Redirect to profile registration form" }
|
|
124
|
-
]
|
|
125
|
-
}
|
|
126
|
-
}
|
|
127
|
-
]
|
|
128
|
-
}
|
|
129
|
-
]
|
|
130
|
-
}
|
|
131
|
-
]
|
|
132
|
-
},
|
|
133
50
|
{
|
|
134
51
|
"title": "Pessoa",
|
|
135
52
|
"id": "personModule",
|
|
@@ -137,6 +54,7 @@
|
|
|
137
54
|
"components": [
|
|
138
55
|
{
|
|
139
56
|
"title": "Gerenciamento de cliente pessoa",
|
|
57
|
+
"userStory": "Como um usuário autorizado, eu quero usar o formulário de gerenciamento de pessoa para inserir e editar informações de clientes, incluindo dados principais (como nome, nacionalidade, CPF, data de nascimento, gênero, foto, telefones e e-mails), contatos e redes sociais (como telefones secundários, e-mails e links de sites), e endereços, para que eu possa manter um registro completo e atualizado das pessoas no sistema.",
|
|
140
58
|
"componentType": "form",
|
|
141
59
|
"id": "personForm",
|
|
142
60
|
"contracts": [
|
|
@@ -1035,6 +953,7 @@
|
|
|
1035
953
|
"components": [
|
|
1036
954
|
{
|
|
1037
955
|
"title": "Gerenciamento de empresa",
|
|
956
|
+
"userStory": "Como um usuário autorizado, eu quero usar o formulário de gerenciamento de empresas para criar e editar registros de empresas, incluindo dados principais como razão social, nome fantasia, CNPJ, nacionalidade, data de abertura, natureza legal e descrição. Eu também quero gerenciar informações de contato e redes sociais, como telefones e e-mails, e até dois endereços completos, para que eu possa manter um cadastro detalhado e atualizado das empresas. Além disso, quero poder associar sócios cadastrados no gerenciamento de pessoas à empresa, para manter um registro de quem são os responsáveis.",
|
|
1038
957
|
"componentType": "form",
|
|
1039
958
|
"id": "companyForm",
|
|
1040
959
|
"contracts": [
|
|
@@ -2174,17 +2093,17 @@
|
|
|
2174
2093
|
]
|
|
2175
2094
|
},
|
|
2176
2095
|
{
|
|
2177
|
-
"
|
|
2178
|
-
"
|
|
2179
|
-
"icon": "
|
|
2096
|
+
"id": "movieModule",
|
|
2097
|
+
"title": "Filme",
|
|
2098
|
+
"icon": "movie",
|
|
2180
2099
|
"components": [
|
|
2181
2100
|
{
|
|
2182
|
-
"
|
|
2183
|
-
"
|
|
2101
|
+
"title": "Gerenciar filme",
|
|
2102
|
+
"userStory": "Como um usuário autorizado, eu quero usar o formulário de gerenciamento de filmes para cadastrar e editar filmes, incluindo a foto, o nome, a descrição, a data de lançamento, a pontuação no IMDb e os gêneros associados. Quero também ter a opção de adicionar e gerenciar episódios, incluindo seus títulos, descrições, datas de lançamento e personagens relacionados. Isso me permite manter um registro completo e detalhado do conteúdo audiovisual no sistema.",
|
|
2184
2103
|
"componentType": "form",
|
|
2185
2104
|
"contracts": [
|
|
2186
2105
|
{
|
|
2187
|
-
"endpoint": "/
|
|
2106
|
+
"endpoint": "/movies",
|
|
2188
2107
|
"methods": [
|
|
2189
2108
|
{ "verb": "POST" },
|
|
2190
2109
|
{ "verb": "PUT" },
|
|
@@ -2193,158 +2112,197 @@
|
|
|
2193
2112
|
],
|
|
2194
2113
|
"request": {
|
|
2195
2114
|
"body": [
|
|
2196
|
-
{ "name": "
|
|
2197
|
-
{ "name": "
|
|
2198
|
-
{ "name": "
|
|
2199
|
-
{ "name": "
|
|
2200
|
-
{ "name": "
|
|
2201
|
-
{ "name": "
|
|
2202
|
-
{ "name": "
|
|
2115
|
+
{ "name": "pictureFile", "dataType": "text" },
|
|
2116
|
+
{ "name": "name", "dataType": "text" },
|
|
2117
|
+
{ "name": "description", "dataType": "wysiwyg" },
|
|
2118
|
+
{ "name": "releaseDate", "dataType": "date" },
|
|
2119
|
+
{ "name": "imdbRating", "dataType": "number" },
|
|
2120
|
+
{ "name": "movieGenres", "dataType": "array" },
|
|
2121
|
+
{ "name": "link1", "dataType": "text" },
|
|
2122
|
+
{ "name": "link2", "dataType": "text" },
|
|
2123
|
+
{ "name": "link3", "dataType": "text" },
|
|
2124
|
+
{ "name": "episodes", "dataType": "array" }
|
|
2203
2125
|
]
|
|
2204
2126
|
}
|
|
2205
2127
|
}
|
|
2206
2128
|
],
|
|
2129
|
+
"id": "movieForm",
|
|
2130
|
+
"guards": "isAuthorized",
|
|
2207
2131
|
"elements": [
|
|
2208
2132
|
{
|
|
2209
|
-
"
|
|
2210
|
-
"
|
|
2211
|
-
"
|
|
2212
|
-
"dataType": "text",
|
|
2213
|
-
"isRequired": true
|
|
2214
|
-
},
|
|
2215
|
-
{
|
|
2216
|
-
"label": "Descrição",
|
|
2217
|
-
"type": "input",
|
|
2218
|
-
"name": "description",
|
|
2219
|
-
"dataType": "wysiwyg"
|
|
2220
|
-
},
|
|
2221
|
-
{
|
|
2222
|
-
"label": "Tipo de cliente",
|
|
2223
|
-
"type": "select",
|
|
2224
|
-
"dataType": "text",
|
|
2225
|
-
"name": "clientType",
|
|
2226
|
-
"isRequired": true,
|
|
2227
|
-
"options": [
|
|
2228
|
-
{ "label": "Empresa", "value": "company" },
|
|
2229
|
-
{ "label": "Pessoa", "value": "person" }
|
|
2230
|
-
]
|
|
2231
|
-
},
|
|
2232
|
-
{
|
|
2233
|
-
"label": "Cliente",
|
|
2234
|
-
"type": "autocomplete",
|
|
2235
|
-
"name": "personId",
|
|
2236
|
-
"dataType": "text",
|
|
2237
|
-
"isRequired": true,
|
|
2238
|
-
"optionsApi": {
|
|
2239
|
-
"endpoint": "/people",
|
|
2240
|
-
"labelField": ["cpf", "name"],
|
|
2241
|
-
"valueField": "_id",
|
|
2242
|
-
"paramsToFilter": ["cpf", "name"],
|
|
2243
|
-
"paramType": "query"
|
|
2244
|
-
},
|
|
2245
|
-
"conditions": [
|
|
2133
|
+
"type": "tab",
|
|
2134
|
+
"id": "movieTab",
|
|
2135
|
+
"tabs": [
|
|
2246
2136
|
{
|
|
2247
|
-
"
|
|
2137
|
+
"id": "mainTab",
|
|
2138
|
+
"title": "Principal",
|
|
2248
2139
|
"elements": [
|
|
2249
2140
|
{
|
|
2250
|
-
"
|
|
2251
|
-
"
|
|
2252
|
-
"
|
|
2141
|
+
"label": "Foto",
|
|
2142
|
+
"type": "file",
|
|
2143
|
+
"dataType": "text",
|
|
2144
|
+
"name": "pictureFile",
|
|
2145
|
+
"storageConfig": {
|
|
2146
|
+
"fileNameStrategy": "uuid",
|
|
2147
|
+
"path": "movies",
|
|
2148
|
+
"visibility": "public"
|
|
2149
|
+
}
|
|
2150
|
+
},
|
|
2151
|
+
{
|
|
2152
|
+
"type": "input",
|
|
2153
|
+
"dataType": "text",
|
|
2154
|
+
"label": "Nome",
|
|
2155
|
+
"name": "name",
|
|
2156
|
+
"isRequired": true
|
|
2157
|
+
},
|
|
2158
|
+
{
|
|
2159
|
+
"type": "input",
|
|
2160
|
+
"dataType": "wysiwyg",
|
|
2161
|
+
"label": "Descrição",
|
|
2162
|
+
"name": "description",
|
|
2163
|
+
"isRequired": true
|
|
2164
|
+
},
|
|
2165
|
+
{
|
|
2166
|
+
"type": "input",
|
|
2167
|
+
"dataType": "date",
|
|
2168
|
+
"label": "Data de lançamento",
|
|
2169
|
+
"name": "releaseDate",
|
|
2170
|
+
"isRequired": true
|
|
2171
|
+
},
|
|
2172
|
+
{
|
|
2173
|
+
"type": "input",
|
|
2174
|
+
"name": "imdbRating",
|
|
2175
|
+
"label": "Pontuação do IMDb",
|
|
2176
|
+
"dataType": "number",
|
|
2177
|
+
"isRequired": true
|
|
2178
|
+
},
|
|
2179
|
+
{
|
|
2180
|
+
"type": "autocomplete",
|
|
2181
|
+
"dataType": "text",
|
|
2182
|
+
"label": "Gêneros",
|
|
2183
|
+
"name": "movieGenres",
|
|
2184
|
+
"optionsApi": {
|
|
2185
|
+
"endpoint": "/api/movies-genres",
|
|
2186
|
+
"labelField": ["name"],
|
|
2187
|
+
"valueField": "_id",
|
|
2188
|
+
"paramsToFilter": ["name"],
|
|
2189
|
+
"paramType": "query"
|
|
2190
|
+
},
|
|
2191
|
+
"isMultiple": true,
|
|
2192
|
+
"isRequired": true
|
|
2193
|
+
},
|
|
2194
|
+
{
|
|
2195
|
+
"type": "input",
|
|
2196
|
+
"name": "link1",
|
|
2197
|
+
"label": "Link 1",
|
|
2198
|
+
"dataType": "text",
|
|
2199
|
+
"isRequired": true
|
|
2200
|
+
},
|
|
2201
|
+
{
|
|
2202
|
+
"type": "input",
|
|
2203
|
+
"name": "link2",
|
|
2204
|
+
"label": "Link 2",
|
|
2205
|
+
"dataType": "text"
|
|
2206
|
+
},
|
|
2207
|
+
{
|
|
2208
|
+
"type": "input",
|
|
2209
|
+
"name": "link3",
|
|
2210
|
+
"label": "Link 3",
|
|
2211
|
+
"dataType": "text"
|
|
2253
2212
|
}
|
|
2254
2213
|
]
|
|
2255
|
-
}
|
|
2256
|
-
]
|
|
2257
|
-
},
|
|
2258
|
-
{
|
|
2259
|
-
"label": "Cliente",
|
|
2260
|
-
"type": "autocomplete",
|
|
2261
|
-
"name": "companyId",
|
|
2262
|
-
"dataType": "text",
|
|
2263
|
-
"isRequired": true,
|
|
2264
|
-
"optionsApi": {
|
|
2265
|
-
"endpoint": "/companies",
|
|
2266
|
-
"labelField": ["cnpj", "companyName"],
|
|
2267
|
-
"valueField": "_id",
|
|
2268
|
-
"paramsToFilter": ["cnpj", "companyName"],
|
|
2269
|
-
"paramType": "query"
|
|
2270
|
-
},
|
|
2271
|
-
"conditions": [
|
|
2214
|
+
},
|
|
2272
2215
|
{
|
|
2273
|
-
"
|
|
2216
|
+
"id": "episodesTab",
|
|
2217
|
+
"title": "Episódios",
|
|
2274
2218
|
"elements": [
|
|
2275
2219
|
{
|
|
2276
|
-
"
|
|
2277
|
-
"
|
|
2278
|
-
"
|
|
2220
|
+
"type": "array",
|
|
2221
|
+
"id": "episodes",
|
|
2222
|
+
"name": "episodes",
|
|
2223
|
+
"title": "Episódio",
|
|
2224
|
+
"elements": [
|
|
2225
|
+
{
|
|
2226
|
+
"type": "input",
|
|
2227
|
+
"dataType": "text",
|
|
2228
|
+
"label": "Título do episódio",
|
|
2229
|
+
"name": "episodeTitle",
|
|
2230
|
+
"isRequired": true
|
|
2231
|
+
},
|
|
2232
|
+
{
|
|
2233
|
+
"type": "input",
|
|
2234
|
+
"dataType": "wysiwyg",
|
|
2235
|
+
"label": "Descrição do episódio",
|
|
2236
|
+
"name": "episodeDescription"
|
|
2237
|
+
},
|
|
2238
|
+
{
|
|
2239
|
+
"type": "input",
|
|
2240
|
+
"dataType": "date",
|
|
2241
|
+
"label": "Data de lançamento do episódio",
|
|
2242
|
+
"name": "episodeReleaseDate"
|
|
2243
|
+
},
|
|
2244
|
+
{
|
|
2245
|
+
"type": "autocomplete",
|
|
2246
|
+
"dataType": "text",
|
|
2247
|
+
"name": "charactersId",
|
|
2248
|
+
"label": "Personagens no episódio",
|
|
2249
|
+
"optionsApi": {
|
|
2250
|
+
"endpoint": "/characters",
|
|
2251
|
+
"labelField": ["characterName"],
|
|
2252
|
+
"valueField": "_id",
|
|
2253
|
+
"paramsToFilter": ["characterName"],
|
|
2254
|
+
"paramType": "query",
|
|
2255
|
+
"relatedEntity": "Character"
|
|
2256
|
+
}
|
|
2257
|
+
}
|
|
2258
|
+
]
|
|
2259
|
+
}
|
|
2260
|
+
],
|
|
2261
|
+
"conditions": [
|
|
2262
|
+
{
|
|
2263
|
+
"type": "form",
|
|
2264
|
+
"elements": [
|
|
2265
|
+
{
|
|
2266
|
+
"key": "movieGenres",
|
|
2267
|
+
"comparisonOperator": "===",
|
|
2268
|
+
"value": "Série de TV"
|
|
2269
|
+
}
|
|
2270
|
+
]
|
|
2279
2271
|
}
|
|
2280
2272
|
]
|
|
2281
2273
|
}
|
|
2282
2274
|
]
|
|
2283
|
-
},
|
|
2284
|
-
{
|
|
2285
|
-
"label": "Tags",
|
|
2286
|
-
"type": "select",
|
|
2287
|
-
"dataType": "text",
|
|
2288
|
-
"name": "tags",
|
|
2289
|
-
"isRequired": true,
|
|
2290
|
-
"isMultiple": true,
|
|
2291
|
-
"options": [
|
|
2292
|
-
{ "label": "Residencial", "value": "residencial" },
|
|
2293
|
-
{ "label": "Comercial", "value": "comercial" },
|
|
2294
|
-
{ "label": "Corporativo", "value": "corporativo" },
|
|
2295
|
-
{ "label": "Industrial", "value": "industrial" },
|
|
2296
|
-
{ "label": "Educacional", "value": "educacional" },
|
|
2297
|
-
{ "label": "Hospitalar", "value": "hospitalar" },
|
|
2298
|
-
{ "label": "Religioso", "value": "religioso" },
|
|
2299
|
-
{ "label": "Paisagismo", "value": "paisagismo" },
|
|
2300
|
-
{ "label": "Reforma", "value": "reforma" },
|
|
2301
|
-
{ "label": "Retrofit", "value": "retrofit" },
|
|
2302
|
-
{ "label": "Sustentável", "value": "sustentavel" }
|
|
2303
|
-
]
|
|
2304
|
-
},
|
|
2305
|
-
{
|
|
2306
|
-
"label": "Compartilhar com usuários",
|
|
2307
|
-
"type": "autocomplete",
|
|
2308
|
-
"dataType": "text",
|
|
2309
|
-
"name": "usersIds",
|
|
2310
|
-
"placeholder": "Selecione os usuários para compartilhar",
|
|
2311
|
-
"tooltip": "Usuários com quem este arquivo será compartilhado",
|
|
2312
|
-
"optionsApi": {
|
|
2313
|
-
"endpoint": "/users",
|
|
2314
|
-
"labelField": ["email"],
|
|
2315
|
-
"valueField": "_id",
|
|
2316
|
-
"paramsToFilter": ["email"],
|
|
2317
|
-
"paramType": "query"
|
|
2318
|
-
},
|
|
2319
|
-
"isMultiple": true
|
|
2320
2275
|
}
|
|
2321
2276
|
]
|
|
2322
2277
|
},
|
|
2323
2278
|
{
|
|
2324
|
-
"title": "Lista de NCMs",
|
|
2325
2279
|
"componentType": "list",
|
|
2326
|
-
"id": "
|
|
2280
|
+
"id": "movieList",
|
|
2281
|
+
"title": "Lista de filmes",
|
|
2327
2282
|
"guards": ["isAuthorized"],
|
|
2328
2283
|
"dataSource": {
|
|
2329
|
-
"endpoint": "/
|
|
2284
|
+
"endpoint": "/movies",
|
|
2330
2285
|
"paramType": "query",
|
|
2331
2286
|
"hasAuthentication": true
|
|
2332
2287
|
},
|
|
2333
2288
|
"properties": [
|
|
2289
|
+
{ "property": "pictureFile", "type": "image", "label": "Cartaz" },
|
|
2290
|
+
{ "property": "name", "type": "title", "label": "Nome" },
|
|
2334
2291
|
{
|
|
2335
|
-
"property": "
|
|
2292
|
+
"property": "releaseDate",
|
|
2336
2293
|
"type": "subtitle",
|
|
2337
|
-
"label": "
|
|
2294
|
+
"label": "Data de lançamento"
|
|
2338
2295
|
},
|
|
2339
2296
|
{
|
|
2340
|
-
"property": "
|
|
2297
|
+
"property": "movieGenres.name",
|
|
2341
2298
|
"type": "subtitle",
|
|
2342
|
-
"label": "
|
|
2299
|
+
"label": "Gênero"
|
|
2343
2300
|
},
|
|
2344
2301
|
{
|
|
2345
|
-
"property": "
|
|
2346
|
-
"type": "
|
|
2347
|
-
"label": "
|
|
2302
|
+
"property": "description",
|
|
2303
|
+
"type": "description",
|
|
2304
|
+
"label": "Descrição",
|
|
2305
|
+
"isHtml": true
|
|
2348
2306
|
}
|
|
2349
2307
|
],
|
|
2350
2308
|
"callsToActionMenu": [
|
|
@@ -2353,7 +2311,7 @@
|
|
|
2353
2311
|
"icon": "pencil",
|
|
2354
2312
|
"action": {
|
|
2355
2313
|
"link": {
|
|
2356
|
-
"endpoint": "/
|
|
2314
|
+
"endpoint": "/movie-form",
|
|
2357
2315
|
"propertiesAsQueryParam": ["_id"]
|
|
2358
2316
|
}
|
|
2359
2317
|
}
|
|
@@ -2362,14 +2320,14 @@
|
|
|
2362
2320
|
"label": "Excluir",
|
|
2363
2321
|
"icon": "delete",
|
|
2364
2322
|
"action": {
|
|
2365
|
-
"link": { "endpoint": "/
|
|
2323
|
+
"link": { "endpoint": "/movie-list" },
|
|
2366
2324
|
"request": {
|
|
2367
|
-
"endpoint": "/
|
|
2325
|
+
"endpoint": "/movies",
|
|
2368
2326
|
"verb": "delete",
|
|
2369
2327
|
"propertiesAsPathParam": ["_id"],
|
|
2370
2328
|
"dialog": {
|
|
2371
2329
|
"title": "Excluir conteúdo",
|
|
2372
|
-
"message": "Deseja realmente excluir
|
|
2330
|
+
"message": "Deseja realmente excluir esse conteúdo?"
|
|
2373
2331
|
}
|
|
2374
2332
|
}
|
|
2375
2333
|
}
|
|
@@ -2377,12 +2335,12 @@
|
|
|
2377
2335
|
]
|
|
2378
2336
|
},
|
|
2379
2337
|
{
|
|
2380
|
-
"title": "Gerenciar
|
|
2381
|
-
"
|
|
2338
|
+
"title": "Gerenciar gênero de filme",
|
|
2339
|
+
"userStory": "Como um usuário autorizado, eu quero usar o formulário de gerenciamento de gênero de filme para criar e editar gêneros de filmes, fornecendo um nome e uma descrição para cada um. Isso me permite organizar e categorizar filmes de forma precisa no sistema.",
|
|
2382
2340
|
"componentType": "form",
|
|
2383
2341
|
"contracts": [
|
|
2384
2342
|
{
|
|
2385
|
-
"endpoint": "/
|
|
2343
|
+
"endpoint": "/movie-genres",
|
|
2386
2344
|
"methods": [
|
|
2387
2345
|
{ "verb": "POST" },
|
|
2388
2346
|
{ "verb": "PUT" },
|
|
@@ -2392,399 +2350,92 @@
|
|
|
2392
2350
|
"request": {
|
|
2393
2351
|
"body": [
|
|
2394
2352
|
{ "name": "name", "dataType": "text" },
|
|
2395
|
-
{ "name": "description", "dataType": "
|
|
2396
|
-
{ "name": "projectId", "dataType": "text" },
|
|
2397
|
-
{ "name": "personId", "dataType": "text" },
|
|
2398
|
-
{ "name": "companyId", "dataType": "text" },
|
|
2399
|
-
{ "name": "usersIds", "dataType": "array" }
|
|
2353
|
+
{ "name": "description", "dataType": "wysiwyg" }
|
|
2400
2354
|
]
|
|
2401
2355
|
}
|
|
2402
2356
|
}
|
|
2403
2357
|
],
|
|
2404
|
-
"
|
|
2358
|
+
"id": "movieGenreForm",
|
|
2359
|
+
"guards": "isAuthorized",
|
|
2405
2360
|
"elements": [
|
|
2406
2361
|
{
|
|
2407
|
-
"label": "Tipo de cliente",
|
|
2408
|
-
"type": "select",
|
|
2409
|
-
"dataType": "text",
|
|
2410
|
-
"name": "clientType",
|
|
2411
|
-
"placeholder": "Selecione o tipo de cliente",
|
|
2412
|
-
"tooltip": "Tipo de cliente associado ao projeto",
|
|
2413
|
-
"isRequired": true,
|
|
2414
|
-
"options": [
|
|
2415
|
-
{ "label": "Empresa", "value": "company" },
|
|
2416
|
-
{ "label": "Pessoa", "value": "person" }
|
|
2417
|
-
]
|
|
2418
|
-
},
|
|
2419
|
-
{
|
|
2420
|
-
"label": "Cliente",
|
|
2421
|
-
"type": "autocomplete",
|
|
2422
|
-
"dataType": "text",
|
|
2423
|
-
"name": "personId",
|
|
2424
|
-
"placeholder": "Selecione o cliente associado",
|
|
2425
|
-
"tooltip": "Cliente ao qual o projeto pertence",
|
|
2426
|
-
"isRequired": true,
|
|
2427
|
-
"optionsApi": {
|
|
2428
|
-
"endpoint": "/people",
|
|
2429
|
-
"labelField": ["emailOne", "name"],
|
|
2430
|
-
"valueField": "_id",
|
|
2431
|
-
"paramsToFilter": ["cpf", "name", "emailOne"],
|
|
2432
|
-
"paramType": "query"
|
|
2433
|
-
},
|
|
2434
|
-
"conditions": [
|
|
2435
|
-
{
|
|
2436
|
-
"type": "form",
|
|
2437
|
-
"elements": [
|
|
2438
|
-
{
|
|
2439
|
-
"key": "clientType",
|
|
2440
|
-
"comparisonOperator": "===",
|
|
2441
|
-
"value": "person"
|
|
2442
|
-
}
|
|
2443
|
-
]
|
|
2444
|
-
}
|
|
2445
|
-
]
|
|
2446
|
-
},
|
|
2447
|
-
{
|
|
2448
|
-
"label": "Cliente",
|
|
2449
|
-
"type": "autocomplete",
|
|
2450
|
-
"dataType": "text",
|
|
2451
|
-
"name": "companyId",
|
|
2452
|
-
"placeholder": "Selecione a empresa associada",
|
|
2453
|
-
"tooltip": "Empresa ao qual o projeto pertence",
|
|
2454
|
-
"isRequired": true,
|
|
2455
|
-
"optionsApi": {
|
|
2456
|
-
"endpoint": "/companies",
|
|
2457
|
-
"labelField": ["emailOne", "name"],
|
|
2458
|
-
"valueField": "_id",
|
|
2459
|
-
"paramsToFilter": ["cnpj", "name", "emailOne"],
|
|
2460
|
-
"paramType": "query"
|
|
2461
|
-
},
|
|
2462
|
-
"conditions": [
|
|
2463
|
-
{
|
|
2464
|
-
"type": "form",
|
|
2465
|
-
"elements": [
|
|
2466
|
-
{
|
|
2467
|
-
"key": "clientType",
|
|
2468
|
-
"comparisonOperator": "===",
|
|
2469
|
-
"value": "company"
|
|
2470
|
-
}
|
|
2471
|
-
]
|
|
2472
|
-
}
|
|
2473
|
-
]
|
|
2474
|
-
},
|
|
2475
|
-
{
|
|
2476
|
-
"label": "Projeto",
|
|
2477
|
-
"type": "autocomplete",
|
|
2478
|
-
"dataType": "text",
|
|
2479
|
-
"name": "projectId",
|
|
2480
|
-
"placeholder": "Selecione o projeto associado",
|
|
2481
|
-
"tooltip": "Projeto ao qual esta pasta pertence",
|
|
2482
|
-
"isRequired": true,
|
|
2483
|
-
"optionsApi": {
|
|
2484
|
-
"filtersFromOtherFormFields": [
|
|
2485
|
-
{
|
|
2486
|
-
"formFieldName": "companyId",
|
|
2487
|
-
"filterPropertyName": "_id",
|
|
2488
|
-
"conditions": [
|
|
2489
|
-
{
|
|
2490
|
-
"type": "form",
|
|
2491
|
-
"elements": [
|
|
2492
|
-
{
|
|
2493
|
-
"key": "clientType",
|
|
2494
|
-
"comparisonOperator": "===",
|
|
2495
|
-
"value": "company"
|
|
2496
|
-
}
|
|
2497
|
-
]
|
|
2498
|
-
}
|
|
2499
|
-
]
|
|
2500
|
-
},
|
|
2501
|
-
{
|
|
2502
|
-
"formFieldName": "personId",
|
|
2503
|
-
"filterPropertyName": "_id",
|
|
2504
|
-
"conditions": [
|
|
2505
|
-
{
|
|
2506
|
-
"type": "form",
|
|
2507
|
-
"elements": [
|
|
2508
|
-
{
|
|
2509
|
-
"key": "clientType",
|
|
2510
|
-
"comparisonOperator": "===",
|
|
2511
|
-
"value": "person"
|
|
2512
|
-
}
|
|
2513
|
-
]
|
|
2514
|
-
}
|
|
2515
|
-
]
|
|
2516
|
-
}
|
|
2517
|
-
],
|
|
2518
|
-
"endpoint": "/projects",
|
|
2519
|
-
"labelField": ["title", "client.name", "client.cpf"],
|
|
2520
|
-
"valueField": "_id",
|
|
2521
|
-
"paramsToFilter": ["title", "client.name", "client.cpf"],
|
|
2522
|
-
"paramType": "query"
|
|
2523
|
-
}
|
|
2524
|
-
},
|
|
2525
|
-
{
|
|
2526
|
-
"label": "Nome da pasta",
|
|
2527
2362
|
"type": "input",
|
|
2528
2363
|
"dataType": "text",
|
|
2364
|
+
"label": "Nome",
|
|
2529
2365
|
"name": "name",
|
|
2530
|
-
"placeholder": "Digite o nome da pasta",
|
|
2531
|
-
"tooltip": "Nome descritivo para a pasta do projeto",
|
|
2532
2366
|
"isRequired": true
|
|
2533
2367
|
},
|
|
2534
2368
|
{
|
|
2535
|
-
"label": "Descrição da pasta",
|
|
2536
2369
|
"type": "input",
|
|
2537
2370
|
"dataType": "wysiwyg",
|
|
2371
|
+
"label": "Descrição",
|
|
2538
2372
|
"name": "description",
|
|
2539
|
-
"
|
|
2540
|
-
"tooltip": "Informações adicionais sobre a pasta do projeto"
|
|
2541
|
-
},
|
|
2542
|
-
{
|
|
2543
|
-
"label": "Compartilhar com usuários",
|
|
2544
|
-
"type": "autocomplete",
|
|
2545
|
-
"dataType": "text",
|
|
2546
|
-
"name": "usersIds",
|
|
2547
|
-
"placeholder": "Selecione os usuários para compartilhar",
|
|
2548
|
-
"tooltip": "Usuários com quem este arquivo será compartilhado",
|
|
2549
|
-
"optionsApi": {
|
|
2550
|
-
"endpoint": "/users",
|
|
2551
|
-
"labelField": ["email"],
|
|
2552
|
-
"valueField": "_id",
|
|
2553
|
-
"paramsToFilter": ["email"],
|
|
2554
|
-
"paramType": "query"
|
|
2555
|
-
},
|
|
2556
|
-
"isMultiple": true
|
|
2373
|
+
"isRequired": true
|
|
2557
2374
|
}
|
|
2558
2375
|
]
|
|
2559
2376
|
},
|
|
2560
2377
|
{
|
|
2561
|
-
"
|
|
2562
|
-
"id": "
|
|
2563
|
-
"
|
|
2564
|
-
"
|
|
2378
|
+
"componentType": "list",
|
|
2379
|
+
"id": "movieGenreList",
|
|
2380
|
+
"title": "Lista de gêneros de filmes",
|
|
2381
|
+
"guards": ["isAuthorized"],
|
|
2382
|
+
"dataSource": {
|
|
2383
|
+
"endpoint": "/movies-genres",
|
|
2384
|
+
"paramType": "query",
|
|
2385
|
+
"hasAuthentication": true
|
|
2386
|
+
},
|
|
2387
|
+
"properties": [
|
|
2388
|
+
{ "property": "name", "type": "title", "label": "Nome" },
|
|
2565
2389
|
{
|
|
2566
|
-
"
|
|
2567
|
-
"
|
|
2568
|
-
|
|
2569
|
-
{ "verb": "PUT" },
|
|
2570
|
-
{ "verb": "GET" },
|
|
2571
|
-
{ "verb": "DELETE" }
|
|
2572
|
-
],
|
|
2573
|
-
"request": {
|
|
2574
|
-
"body": [
|
|
2575
|
-
{ "name": "file", "dataType": "text" },
|
|
2576
|
-
{ "name": "title", "dataType": "text" },
|
|
2577
|
-
{ "name": "description", "dataType": "text" },
|
|
2578
|
-
{ "name": "projectFolderId", "dataType": "text" },
|
|
2579
|
-
{ "name": "projectId", "dataType": "text" },
|
|
2580
|
-
{ "name": "personId", "dataType": "text" },
|
|
2581
|
-
{ "name": "companyId", "dataType": "text" },
|
|
2582
|
-
{ "name": "usersIds", "dataType": "array" }
|
|
2583
|
-
]
|
|
2584
|
-
}
|
|
2390
|
+
"property": "description",
|
|
2391
|
+
"type": "description",
|
|
2392
|
+
"label": "Descrição"
|
|
2585
2393
|
}
|
|
2586
2394
|
],
|
|
2587
|
-
"
|
|
2588
|
-
"elements": [
|
|
2589
|
-
{
|
|
2590
|
-
"label": "Tipo de cliente",
|
|
2591
|
-
"type": "select",
|
|
2592
|
-
"dataType": "text",
|
|
2593
|
-
"name": "clientType",
|
|
2594
|
-
"placeholder": "Selecione o tipo de cliente",
|
|
2595
|
-
"tooltip": "Tipo de cliente associado ao projeto",
|
|
2596
|
-
"isRequired": true,
|
|
2597
|
-
"options": [
|
|
2598
|
-
{ "label": "Empresa", "value": "company" },
|
|
2599
|
-
{ "label": "Pessoa", "value": "person" }
|
|
2600
|
-
]
|
|
2601
|
-
},
|
|
2602
|
-
{
|
|
2603
|
-
"label": "Cliente",
|
|
2604
|
-
"type": "autocomplete",
|
|
2605
|
-
"dataType": "text",
|
|
2606
|
-
"name": "personId",
|
|
2607
|
-
"placeholder": "Selecione o cliente associado",
|
|
2608
|
-
"tooltip": "Cliente ao qual o projeto pertence",
|
|
2609
|
-
"isRequired": true,
|
|
2610
|
-
"optionsApi": {
|
|
2611
|
-
"endpoint": "/people",
|
|
2612
|
-
"labelField": ["emailOne", "name"],
|
|
2613
|
-
"valueField": "_id",
|
|
2614
|
-
"paramsToFilter": ["emailOne", "name", "cpf"],
|
|
2615
|
-
"paramType": "query"
|
|
2616
|
-
},
|
|
2617
|
-
"conditions": [
|
|
2618
|
-
{
|
|
2619
|
-
"type": "form",
|
|
2620
|
-
"elements": [
|
|
2621
|
-
{
|
|
2622
|
-
"key": "clientType",
|
|
2623
|
-
"comparisonOperator": "===",
|
|
2624
|
-
"value": "person"
|
|
2625
|
-
}
|
|
2626
|
-
]
|
|
2627
|
-
}
|
|
2628
|
-
]
|
|
2629
|
-
},
|
|
2395
|
+
"callsToActionMenu": [
|
|
2630
2396
|
{
|
|
2631
|
-
"label": "
|
|
2632
|
-
"
|
|
2633
|
-
"
|
|
2634
|
-
|
|
2635
|
-
|
|
2636
|
-
|
|
2637
|
-
"isRequired": true,
|
|
2638
|
-
"optionsApi": {
|
|
2639
|
-
"endpoint": "/companies",
|
|
2640
|
-
"labelField": ["emailOne", "name"],
|
|
2641
|
-
"valueField": "_id",
|
|
2642
|
-
"paramsToFilter": ["emailOne", "name", "cnpj"],
|
|
2643
|
-
"paramType": "query"
|
|
2644
|
-
},
|
|
2645
|
-
"conditions": [
|
|
2646
|
-
{
|
|
2647
|
-
"type": "form",
|
|
2648
|
-
"elements": [
|
|
2649
|
-
{
|
|
2650
|
-
"key": "clientType",
|
|
2651
|
-
"comparisonOperator": "===",
|
|
2652
|
-
"value": "company"
|
|
2653
|
-
}
|
|
2654
|
-
]
|
|
2397
|
+
"label": "Editar",
|
|
2398
|
+
"icon": "pencil",
|
|
2399
|
+
"action": {
|
|
2400
|
+
"link": {
|
|
2401
|
+
"endpoint": "/movie-genre-form",
|
|
2402
|
+
"propertiesAsQueryParam": ["_id"]
|
|
2655
2403
|
}
|
|
2656
|
-
]
|
|
2657
|
-
},
|
|
2658
|
-
{
|
|
2659
|
-
"label": "Projeto",
|
|
2660
|
-
"type": "autocomplete",
|
|
2661
|
-
"dataType": "text",
|
|
2662
|
-
"name": "projectId",
|
|
2663
|
-
"placeholder": "Selecione o projeto associado",
|
|
2664
|
-
"tooltip": "Projeto ao qual esta pasta pertence",
|
|
2665
|
-
"isRequired": true,
|
|
2666
|
-
"optionsApi": {
|
|
2667
|
-
"filtersFromOtherFormFields": [
|
|
2668
|
-
{
|
|
2669
|
-
"formFieldName": "companyId",
|
|
2670
|
-
"filterPropertyName": "_id",
|
|
2671
|
-
"conditions": [
|
|
2672
|
-
{
|
|
2673
|
-
"type": "form",
|
|
2674
|
-
"elements": [
|
|
2675
|
-
{
|
|
2676
|
-
"key": "clientType",
|
|
2677
|
-
"comparisonOperator": "===",
|
|
2678
|
-
"value": "company"
|
|
2679
|
-
}
|
|
2680
|
-
]
|
|
2681
|
-
}
|
|
2682
|
-
]
|
|
2683
|
-
},
|
|
2684
|
-
{
|
|
2685
|
-
"formFieldName": "personId",
|
|
2686
|
-
"filterPropertyName": "_id",
|
|
2687
|
-
"conditions": [
|
|
2688
|
-
{
|
|
2689
|
-
"type": "form",
|
|
2690
|
-
"elements": [
|
|
2691
|
-
{
|
|
2692
|
-
"key": "clientType",
|
|
2693
|
-
"comparisonOperator": "===",
|
|
2694
|
-
"value": "person"
|
|
2695
|
-
}
|
|
2696
|
-
]
|
|
2697
|
-
}
|
|
2698
|
-
]
|
|
2699
|
-
}
|
|
2700
|
-
],
|
|
2701
|
-
"endpoint": "/projects",
|
|
2702
|
-
"labelField": ["title", "client.name", "client.cpf"],
|
|
2703
|
-
"valueField": "_id",
|
|
2704
|
-
"paramsToFilter": ["title", "client.name", "client.cpf"],
|
|
2705
|
-
"paramType": "query"
|
|
2706
2404
|
}
|
|
2707
2405
|
},
|
|
2708
2406
|
{
|
|
2709
|
-
"label": "
|
|
2710
|
-
"
|
|
2711
|
-
"
|
|
2712
|
-
|
|
2713
|
-
|
|
2714
|
-
|
|
2715
|
-
|
|
2716
|
-
|
|
2717
|
-
|
|
2718
|
-
|
|
2719
|
-
|
|
2720
|
-
"paramsToFilter": ["name"],
|
|
2721
|
-
"paramType": "query",
|
|
2722
|
-
"filtersFromOtherFormFields": [
|
|
2723
|
-
{
|
|
2724
|
-
"formFieldName": "projectId",
|
|
2725
|
-
"filterPropertyName": "projectId"
|
|
2407
|
+
"label": "Excluir",
|
|
2408
|
+
"icon": "delete",
|
|
2409
|
+
"action": {
|
|
2410
|
+
"link": { "endpoint": "/movie-genre-list" },
|
|
2411
|
+
"request": {
|
|
2412
|
+
"endpoint": "/movies-genres",
|
|
2413
|
+
"verb": "delete",
|
|
2414
|
+
"propertiesAsPathParam": ["_id"],
|
|
2415
|
+
"dialog": {
|
|
2416
|
+
"title": "Excluir conteúdo",
|
|
2417
|
+
"message": "Deseja realmente excluir esse conteúdo?"
|
|
2726
2418
|
}
|
|
2727
|
-
|
|
2419
|
+
}
|
|
2728
2420
|
}
|
|
2729
|
-
},
|
|
2730
|
-
{
|
|
2731
|
-
"type": "file",
|
|
2732
|
-
"label": "Arquivo",
|
|
2733
|
-
"name": "file",
|
|
2734
|
-
"dataType": "text",
|
|
2735
|
-
"storageConfig": {
|
|
2736
|
-
"fileNameStrategy": "uuid",
|
|
2737
|
-
"path": "files",
|
|
2738
|
-
"visibility": "private"
|
|
2739
|
-
},
|
|
2740
|
-
"isRequired": true
|
|
2741
|
-
},
|
|
2742
|
-
{
|
|
2743
|
-
"type": "input",
|
|
2744
|
-
"label": "Título",
|
|
2745
|
-
"name": "title",
|
|
2746
|
-
"dataType": "text",
|
|
2747
|
-
"placeholder": "Digite o título do arquivo"
|
|
2748
|
-
},
|
|
2749
|
-
{
|
|
2750
|
-
"type": "input",
|
|
2751
|
-
"label": "Descrição",
|
|
2752
|
-
"name": "description",
|
|
2753
|
-
"dataType": "wysiwyg",
|
|
2754
|
-
"isRequired": true
|
|
2755
|
-
},
|
|
2756
|
-
{
|
|
2757
|
-
"label": "Compartilhar com usuários",
|
|
2758
|
-
"type": "autocomplete",
|
|
2759
|
-
"dataType": "text",
|
|
2760
|
-
"name": "usersIds",
|
|
2761
|
-
"placeholder": "Selecione os usuários para compartilhar",
|
|
2762
|
-
"tooltip": "Usuários com quem este arquivo será compartilhado",
|
|
2763
|
-
"optionsApi": {
|
|
2764
|
-
"endpoint": "/users",
|
|
2765
|
-
"labelField": ["email"],
|
|
2766
|
-
"valueField": "_id",
|
|
2767
|
-
"paramsToFilter": ["email"],
|
|
2768
|
-
"paramType": "query"
|
|
2769
|
-
},
|
|
2770
|
-
"isMultiple": true
|
|
2771
2421
|
}
|
|
2772
2422
|
]
|
|
2773
2423
|
}
|
|
2774
2424
|
]
|
|
2775
2425
|
},
|
|
2776
2426
|
{
|
|
2777
|
-
"id": "
|
|
2778
|
-
"title": "
|
|
2779
|
-
"icon": "
|
|
2427
|
+
"id": "characterModule",
|
|
2428
|
+
"title": "Peronsagem",
|
|
2429
|
+
"icon": "character",
|
|
2780
2430
|
"components": [
|
|
2781
2431
|
{
|
|
2782
|
-
"title": "
|
|
2783
|
-
"
|
|
2432
|
+
"title": "Personagem",
|
|
2433
|
+
"userStory": "Como um usuário autorizado, quero usar o formulário de personagem para criar e editar personagens, fornecendo um nome, uma descrição, um tipo (como \"protagonista\" ou \"antagonista\") e um gênero para cada um. Isso me permite manter um registro detalhado e organizado dos personagens no sistema.",
|
|
2784
2434
|
"componentType": "form",
|
|
2435
|
+
"id": "characterForm",
|
|
2785
2436
|
"contracts": [
|
|
2786
2437
|
{
|
|
2787
|
-
"endpoint": "/
|
|
2438
|
+
"endpoint": "/characters",
|
|
2788
2439
|
"methods": [
|
|
2789
2440
|
{ "verb": "POST" },
|
|
2790
2441
|
{ "verb": "PUT" },
|
|
@@ -2793,232 +2444,153 @@
|
|
|
2793
2444
|
],
|
|
2794
2445
|
"request": {
|
|
2795
2446
|
"body": [
|
|
2796
|
-
{ "name": "
|
|
2797
|
-
{ "name": "
|
|
2798
|
-
{ "name": "
|
|
2799
|
-
{ "name": "
|
|
2800
|
-
{ "name": "
|
|
2801
|
-
{ "name": "projectId", "dataType": "text" },
|
|
2802
|
-
{ "name": "relatedFileIds", "dataType": "array" },
|
|
2803
|
-
{ "name": "priority", "dataType": "number" },
|
|
2804
|
-
{ "name": "dueDate", "dataType": "date" },
|
|
2805
|
-
{ "name": "assigneeId", "dataType": "text" }
|
|
2447
|
+
{ "name": "characterName", "dataType": "text" },
|
|
2448
|
+
{ "name": "characterImage", "dataType": "text" },
|
|
2449
|
+
{ "name": "characterDescription", "dataType": "wysiwyg" },
|
|
2450
|
+
{ "name": "characterType", "dataType": "text" },
|
|
2451
|
+
{ "name": "characterGender", "dataType": "text" }
|
|
2806
2452
|
]
|
|
2807
2453
|
}
|
|
2808
2454
|
}
|
|
2809
2455
|
],
|
|
2810
|
-
"
|
|
2456
|
+
"guards": "isAuthorized",
|
|
2811
2457
|
"elements": [
|
|
2812
2458
|
{
|
|
2813
|
-
"label": "Título",
|
|
2814
2459
|
"type": "input",
|
|
2815
2460
|
"dataType": "text",
|
|
2816
|
-
"
|
|
2817
|
-
"
|
|
2818
|
-
"tooltip": "Título descritivo da tarefa",
|
|
2461
|
+
"label": "Nome do personagem",
|
|
2462
|
+
"name": "characterName",
|
|
2819
2463
|
"isRequired": true
|
|
2820
2464
|
},
|
|
2821
2465
|
{
|
|
2822
|
-
"label": "
|
|
2466
|
+
"label": "Foto do personagem",
|
|
2467
|
+
"type": "file",
|
|
2468
|
+
"dataType": "text",
|
|
2469
|
+
"name": "characterImage",
|
|
2470
|
+
"storageConfig": {
|
|
2471
|
+
"fileNameStrategy": "uuid",
|
|
2472
|
+
"path": "characters",
|
|
2473
|
+
"visibility": "public"
|
|
2474
|
+
}
|
|
2475
|
+
},
|
|
2476
|
+
{
|
|
2823
2477
|
"type": "input",
|
|
2824
2478
|
"dataType": "wysiwyg",
|
|
2825
|
-
"
|
|
2826
|
-
"
|
|
2827
|
-
"tooltip": "Detalhes adicionais sobre a tarefa"
|
|
2479
|
+
"label": "Descrição do personagem",
|
|
2480
|
+
"name": "characterDescription"
|
|
2828
2481
|
},
|
|
2829
2482
|
{
|
|
2830
|
-
"label": "Tipo de cliente",
|
|
2831
2483
|
"type": "select",
|
|
2484
|
+
"label": "Tipo de personagem",
|
|
2485
|
+
"name": "characterType",
|
|
2832
2486
|
"dataType": "text",
|
|
2833
|
-
"name": "clientType",
|
|
2834
|
-
"placeholder": "Selecione o tipo de cliente",
|
|
2835
|
-
"tooltip": "Tipo de cliente associado ao projeto",
|
|
2836
|
-
"isRequired": true,
|
|
2837
2487
|
"options": [
|
|
2838
|
-
{ "
|
|
2839
|
-
{ "
|
|
2488
|
+
{ "value": "protagonist", "label": "Protagonista" },
|
|
2489
|
+
{ "value": "antagonist", "label": "Antagonista" },
|
|
2490
|
+
{ "value": "hero", "label": "Herói" },
|
|
2491
|
+
{ "value": "villain", "label": "Vilão" },
|
|
2492
|
+
{ "value": "sidekick", "label": "Ajudante" },
|
|
2493
|
+
{ "value": "supporting", "label": "Secundário" }
|
|
2840
2494
|
]
|
|
2841
2495
|
},
|
|
2842
2496
|
{
|
|
2843
|
-
"
|
|
2844
|
-
"
|
|
2497
|
+
"type": "select",
|
|
2498
|
+
"label": "Gênero do personagem",
|
|
2499
|
+
"name": "characterGender",
|
|
2845
2500
|
"dataType": "text",
|
|
2846
|
-
"
|
|
2847
|
-
|
|
2848
|
-
|
|
2849
|
-
|
|
2850
|
-
|
|
2851
|
-
"endpoint": "/people",
|
|
2852
|
-
"labelField": ["emailOne", "name"],
|
|
2853
|
-
"valueField": "_id",
|
|
2854
|
-
"paramsToFilter": ["emailOne", "name", "cpf"],
|
|
2855
|
-
"paramType": "query"
|
|
2856
|
-
},
|
|
2857
|
-
"conditions": [
|
|
2858
|
-
{
|
|
2859
|
-
"type": "form",
|
|
2860
|
-
"elements": [
|
|
2861
|
-
{
|
|
2862
|
-
"key": "clientType",
|
|
2863
|
-
"comparisonOperator": "===",
|
|
2864
|
-
"value": "person"
|
|
2865
|
-
}
|
|
2866
|
-
]
|
|
2867
|
-
}
|
|
2501
|
+
"options": [
|
|
2502
|
+
{ "value": "male", "label": "Masculino" },
|
|
2503
|
+
{ "value": "female", "label": "Feminino" },
|
|
2504
|
+
{ "value": "non-binary", "label": "Não-binário" },
|
|
2505
|
+
{ "value": "other", "label": "Outro" }
|
|
2868
2506
|
]
|
|
2869
|
-
}
|
|
2507
|
+
}
|
|
2508
|
+
]
|
|
2509
|
+
},
|
|
2510
|
+
{
|
|
2511
|
+
"title": "Lista de personagens",
|
|
2512
|
+
"componentType": "list",
|
|
2513
|
+
"id": "characterList",
|
|
2514
|
+
"guards": ["isAuthorized"],
|
|
2515
|
+
"dataSource": {
|
|
2516
|
+
"endpoint": "/characters",
|
|
2517
|
+
"paramType": "query",
|
|
2518
|
+
"hasAuthentication": true
|
|
2519
|
+
},
|
|
2520
|
+
"properties": [
|
|
2521
|
+
{ "label": "Nome", "property": "characterName", "type": "title" },
|
|
2870
2522
|
{
|
|
2871
|
-
"label": "
|
|
2872
|
-
"
|
|
2873
|
-
"
|
|
2874
|
-
"
|
|
2875
|
-
|
|
2876
|
-
|
|
2877
|
-
|
|
2878
|
-
"optionsApi": {
|
|
2879
|
-
"endpoint": "/companies",
|
|
2880
|
-
"labelField": ["emailOne", "name"],
|
|
2881
|
-
"valueField": "_id",
|
|
2882
|
-
"paramsToFilter": ["emailOne", "name", "cnpj"],
|
|
2883
|
-
"paramType": "query"
|
|
2884
|
-
},
|
|
2885
|
-
"conditions": [
|
|
2886
|
-
{
|
|
2887
|
-
"type": "form",
|
|
2888
|
-
"elements": [
|
|
2889
|
-
{
|
|
2890
|
-
"key": "clientType",
|
|
2891
|
-
"comparisonOperator": "===",
|
|
2892
|
-
"value": "company"
|
|
2893
|
-
}
|
|
2894
|
-
]
|
|
2895
|
-
}
|
|
2896
|
-
]
|
|
2897
|
-
},
|
|
2523
|
+
"label": "Descrição",
|
|
2524
|
+
"property": "characterDescription",
|
|
2525
|
+
"type": "description",
|
|
2526
|
+
"isHtml": true
|
|
2527
|
+
}
|
|
2528
|
+
],
|
|
2529
|
+
"callsToActionMenu": [
|
|
2898
2530
|
{
|
|
2899
|
-
"label": "
|
|
2900
|
-
"
|
|
2901
|
-
"
|
|
2902
|
-
|
|
2903
|
-
|
|
2904
|
-
|
|
2905
|
-
|
|
2906
|
-
"optionsApi": {
|
|
2907
|
-
"filtersFromOtherFormFields": [
|
|
2908
|
-
{
|
|
2909
|
-
"formFieldName": "companyId",
|
|
2910
|
-
"filterPropertyName": "_id",
|
|
2911
|
-
"conditions": [
|
|
2912
|
-
{
|
|
2913
|
-
"type": "form",
|
|
2914
|
-
"elements": [
|
|
2915
|
-
{
|
|
2916
|
-
"key": "clientType",
|
|
2917
|
-
"comparisonOperator": "===",
|
|
2918
|
-
"value": "company"
|
|
2919
|
-
}
|
|
2920
|
-
]
|
|
2921
|
-
}
|
|
2922
|
-
]
|
|
2923
|
-
},
|
|
2924
|
-
{
|
|
2925
|
-
"formFieldName": "personId",
|
|
2926
|
-
"filterPropertyName": "_id",
|
|
2927
|
-
"conditions": [
|
|
2928
|
-
{
|
|
2929
|
-
"type": "form",
|
|
2930
|
-
"elements": [
|
|
2931
|
-
{
|
|
2932
|
-
"key": "clientType",
|
|
2933
|
-
"comparisonOperator": "===",
|
|
2934
|
-
"value": "person"
|
|
2935
|
-
}
|
|
2936
|
-
]
|
|
2937
|
-
}
|
|
2938
|
-
]
|
|
2939
|
-
}
|
|
2940
|
-
],
|
|
2941
|
-
"endpoint": "/projects",
|
|
2942
|
-
"labelField": ["title", "client.name", "client.cpf"],
|
|
2943
|
-
"valueField": "_id",
|
|
2944
|
-
"paramsToFilter": ["title", "client.name", "client.cpf"],
|
|
2945
|
-
"paramType": "query"
|
|
2531
|
+
"label": "Editar",
|
|
2532
|
+
"icon": "pencil",
|
|
2533
|
+
"action": {
|
|
2534
|
+
"link": {
|
|
2535
|
+
"endpoint": "/character-form",
|
|
2536
|
+
"propertiesAsQueryParam": ["_id"]
|
|
2537
|
+
}
|
|
2946
2538
|
}
|
|
2947
2539
|
},
|
|
2948
2540
|
{
|
|
2949
|
-
"label": "
|
|
2950
|
-
"
|
|
2951
|
-
"
|
|
2952
|
-
|
|
2953
|
-
|
|
2954
|
-
|
|
2955
|
-
|
|
2956
|
-
|
|
2957
|
-
|
|
2958
|
-
|
|
2959
|
-
|
|
2960
|
-
"paramType": "query",
|
|
2961
|
-
"filtersFromOtherFormFields": [
|
|
2962
|
-
{
|
|
2963
|
-
"formFieldName": "projectId",
|
|
2964
|
-
"filterPropertyName": "projectId"
|
|
2541
|
+
"label": "Excluir",
|
|
2542
|
+
"icon": "delete",
|
|
2543
|
+
"action": {
|
|
2544
|
+
"link": { "endpoint": "/character-list" },
|
|
2545
|
+
"request": {
|
|
2546
|
+
"endpoint": "/characters",
|
|
2547
|
+
"verb": "delete",
|
|
2548
|
+
"propertiesAsPathParam": ["_id"],
|
|
2549
|
+
"dialog": {
|
|
2550
|
+
"title": "Excluir projeto",
|
|
2551
|
+
"message": "Deseja realmente excluir essa projeto?"
|
|
2965
2552
|
}
|
|
2966
|
-
]
|
|
2967
|
-
},
|
|
2968
|
-
"conditions": [
|
|
2969
|
-
{
|
|
2970
|
-
"type": "form",
|
|
2971
|
-
"elements": [
|
|
2972
|
-
{
|
|
2973
|
-
"key": "projectId",
|
|
2974
|
-
"comparisonOperator": "!==",
|
|
2975
|
-
"value": null
|
|
2976
|
-
}
|
|
2977
|
-
]
|
|
2978
2553
|
}
|
|
2979
|
-
]
|
|
2980
|
-
},
|
|
2981
|
-
{
|
|
2982
|
-
"label": "Prioridade",
|
|
2983
|
-
"type": "select",
|
|
2984
|
-
"dataType": "number",
|
|
2985
|
-
"name": "priority",
|
|
2986
|
-
"placeholder": "Selecione a prioridade da tarefa",
|
|
2987
|
-
"tooltip": "Nível de urgência da tarefa",
|
|
2988
|
-
"isRequired": true,
|
|
2989
|
-
"options": [
|
|
2990
|
-
{ "label": "Baixa", "value": 3 },
|
|
2991
|
-
{ "label": "Média", "value": 2 },
|
|
2992
|
-
{ "label": "Alta", "value": 1 },
|
|
2993
|
-
{ "label": "Urgente", "value": 0 }
|
|
2994
|
-
]
|
|
2995
|
-
},
|
|
2996
|
-
{
|
|
2997
|
-
"label": "Data de entrega",
|
|
2998
|
-
"type": "input",
|
|
2999
|
-
"dataType": "date",
|
|
3000
|
-
"name": "dueDate",
|
|
3001
|
-
"placeholder": "Selecione a data de vencimento",
|
|
3002
|
-
"tooltip": "Data limite para conclusão da tarefa"
|
|
3003
|
-
},
|
|
3004
|
-
{
|
|
3005
|
-
"label": "Responsável",
|
|
3006
|
-
"type": "autocomplete",
|
|
3007
|
-
"dataType": "text",
|
|
3008
|
-
"name": "assigneeId",
|
|
3009
|
-
"placeholder": "Selecione o responsável pela tarefa",
|
|
3010
|
-
"tooltip": "Usuário designado para a tarefa",
|
|
3011
|
-
"optionsApi": {
|
|
3012
|
-
"endpoint": "/users",
|
|
3013
|
-
"labelField": ["email", "name"],
|
|
3014
|
-
"valueField": "_id",
|
|
3015
|
-
"paramsToFilter": ["email", "name"],
|
|
3016
|
-
"paramType": "query"
|
|
3017
2554
|
}
|
|
3018
2555
|
}
|
|
3019
2556
|
]
|
|
3020
2557
|
}
|
|
3021
2558
|
]
|
|
3022
2559
|
}
|
|
2560
|
+
],
|
|
2561
|
+
"styles": [
|
|
2562
|
+
{
|
|
2563
|
+
"themeName": "light",
|
|
2564
|
+
"main": {
|
|
2565
|
+
"headerHeight": "60px",
|
|
2566
|
+
"typography": { "fontFamily": "Arial, sans-serif", "fontSize": "16px" },
|
|
2567
|
+
"colors": {
|
|
2568
|
+
"primary": "#4F46E5",
|
|
2569
|
+
"primaryContrast": "#FFFFFF",
|
|
2570
|
+
"secondary": "#6B7280",
|
|
2571
|
+
"secondaryContrast": "#FFFFFF",
|
|
2572
|
+
"background": "#FFFFFF",
|
|
2573
|
+
"error": "#DC2626",
|
|
2574
|
+
"success": "#16A34A",
|
|
2575
|
+
"warning": "#D97706"
|
|
2576
|
+
},
|
|
2577
|
+
"shadows": { "boxShadow": "0 1px 3px rgba(0, 0, 0, 0.1)" },
|
|
2578
|
+
"borders": { "radius": "4px" },
|
|
2579
|
+
"components": {
|
|
2580
|
+
"input": {
|
|
2581
|
+
"text": "#111827",
|
|
2582
|
+
"background": "#F9FAFB",
|
|
2583
|
+
"border": "#D1D5DB",
|
|
2584
|
+
"borderRadius": "4px",
|
|
2585
|
+
"focusBorder": "#4F46E5",
|
|
2586
|
+
"placeholder": "#9CA3AF",
|
|
2587
|
+
"width": "248px"
|
|
2588
|
+
}
|
|
2589
|
+
},
|
|
2590
|
+
"spacing": "8px",
|
|
2591
|
+
"maxWidth": "1200px",
|
|
2592
|
+
"footerHeight": "60px"
|
|
2593
|
+
}
|
|
2594
|
+
}
|
|
3023
2595
|
]
|
|
3024
2596
|
}
|