mandarina-server 1.7.0 → 2.0.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/build/Table/Table.js +5 -0
- package/build/Table/Table.js.map +1 -1
- package/build/cli/gen-files/prisma2.d.ts +1 -0
- package/build/cli/gen-files/prisma2.js +284 -0
- package/build/cli/gen-files/prisma2.js.map +1 -0
- package/build/cli/index.js +5 -0
- package/build/cli/index.js.map +1 -1
- package/build/cli/utils.d.ts +4 -0
- package/build/cli/utils.js.map +1 -1
- package/package.json +1 -1
- package/src/Table/Table.ts +8 -0
- package/src/cli/gen-files/prisma2.ts +277 -0
- package/src/cli/index.ts +6 -0
- package/src/cli/utils.js +5 -2
- package/src/cli/utils.js.map +1 -1
- package/src/cli/utils.ts +7 -3
- package/tmp/client/components/Common/Cells/CellDateTime.js +22 -0
- package/tmp/client/components/Common/Cells/CellDateTime.js.map +1 -0
- package/tmp/client/components/Common/Cells/CellHtml.js +13 -0
- package/tmp/client/components/Common/Cells/CellHtml.js.map +1 -0
- package/tmp/client/components/Common/Cells/CellLinkTemplate.js +19 -0
- package/tmp/client/components/Common/Cells/CellLinkTemplate.js.map +1 -0
- package/tmp/client/components/Common/ConfigurationContext.js +25 -0
- package/tmp/client/components/Common/ConfigurationContext.js.map +1 -0
- package/tmp/client/components/Common/My/MySchema.js +27 -0
- package/tmp/client/components/Common/My/MySchema.js.map +1 -0
- package/tmp/client/components/Common/uniforms/AddressField/AddressField.js +139 -0
- package/tmp/client/components/Common/uniforms/AddressField/AddressField.js.map +1 -0
- package/tmp/client/components/Common/uniforms/AddressField/utils.js +99 -0
- package/tmp/client/components/Common/uniforms/AddressField/utils.js.map +1 -0
- package/tmp/client/components/Common/uniforms/DateField.js +31 -0
- package/tmp/client/components/Common/uniforms/DateField.js.map +1 -0
- package/tmp/client/components/Common/uniforms/DateTimeField.js +44 -0
- package/tmp/client/components/Common/uniforms/DateTimeField.js.map +1 -0
- package/tmp/client/components/Common/uniforms/RichTextField/RichTextField.js +115 -0
- package/tmp/client/components/Common/uniforms/RichTextField/RichTextField.js.map +1 -0
- package/tmp/client/components/Common/uniforms/RichTextField/addMention.js +17 -0
- package/tmp/client/components/Common/uniforms/RichTextField/addMention.js.map +1 -0
- package/tmp/client/components/Common/uniforms/SocialField.js +37 -0
- package/tmp/client/components/Common/uniforms/SocialField.js.map +1 -0
- package/tmp/client/components/Common/uniforms/TableIdField.js +27 -0
- package/tmp/client/components/Common/uniforms/TableIdField.js.map +1 -0
- package/tmp/client/components/Location/Marker.js +24 -0
- package/tmp/client/components/Location/Marker.js.map +1 -0
- package/tmp/lib/actions/AddReferralSchema.js +27 -0
- package/tmp/lib/actions/AddReferralSchema.js.map +1 -0
- package/tmp/lib/actions/AutoMatchSchema.js +12 -0
- package/tmp/lib/actions/AutoMatchSchema.js.map +1 -0
- package/tmp/lib/actions/CampaignRefresh.js +12 -0
- package/tmp/lib/actions/CampaignRefresh.js.map +1 -0
- package/tmp/lib/actions/ChangeFamilyVisit.js +45 -0
- package/tmp/lib/actions/ChangeFamilyVisit.js.map +1 -0
- package/tmp/lib/actions/ContactFormSchema.js +38 -0
- package/tmp/lib/actions/ContactFormSchema.js.map +1 -0
- package/tmp/lib/actions/DeleteSchema.js +12 -0
- package/tmp/lib/actions/DeleteSchema.js.map +1 -0
- package/tmp/lib/actions/GroupFamilyStatus.js +43 -0
- package/tmp/lib/actions/GroupFamilyStatus.js.map +1 -0
- package/tmp/lib/actions/NotificationPopUpSchema.js +30 -0
- package/tmp/lib/actions/NotificationPopUpSchema.js.map +1 -0
- package/tmp/lib/actions/OneId.js +12 -0
- package/tmp/lib/actions/OneId.js.map +1 -0
- package/tmp/lib/actions/PaySchema.js +32 -0
- package/tmp/lib/actions/PaySchema.js.map +1 -0
- package/tmp/lib/actions/PaymentNotificationSchema.js +33 -0
- package/tmp/lib/actions/PaymentNotificationSchema.js.map +1 -0
- package/tmp/lib/actions/PlacementGuestFamilySchema.js +10 -0
- package/tmp/lib/actions/PlacementGuestFamilySchema.js.map +1 -0
- package/tmp/lib/actions/PlacementGuestMoveSchema.js +14 -0
- package/tmp/lib/actions/PlacementGuestMoveSchema.js.map +1 -0
- package/tmp/lib/actions/PlacementGuestStatusSchema.js +8 -0
- package/tmp/lib/actions/PlacementGuestStatusSchema.js.map +1 -0
- package/tmp/lib/actions/PlacementStatusSchema.js +33 -0
- package/tmp/lib/actions/PlacementStatusSchema.js.map +1 -0
- package/tmp/lib/actions/ReconfirmSchema.js +85 -0
- package/tmp/lib/actions/ReconfirmSchema.js.map +1 -0
- package/tmp/lib/actions/ReferralAddress.js +43 -0
- package/tmp/lib/actions/ReferralAddress.js.map +1 -0
- package/tmp/lib/actions/SendCommunicationSchema.js +26 -0
- package/tmp/lib/actions/SendCommunicationSchema.js.map +1 -0
- package/tmp/lib/actions/SendPreview.js +9 -0
- package/tmp/lib/actions/SendPreview.js.map +1 -0
- package/tmp/lib/actions/TranslationSchema.js +9 -0
- package/tmp/lib/actions/TranslationSchema.js.map +1 -0
- package/tmp/lib/actions/UploaderSchema.js +11 -0
- package/tmp/lib/actions/UploaderSchema.js.map +1 -0
- package/tmp/lib/actions/index.js +24 -0
- package/tmp/lib/actions/index.js.map +1 -0
- package/tmp/lib/constants.js +452 -0
- package/tmp/lib/constants.js.map +1 -0
- package/tmp/lib/forms/spans.js +12 -0
- package/tmp/lib/forms/spans.js.map +1 -0
- package/tmp/lib/schemas/Configuration/Locale.js +89 -0
- package/tmp/lib/schemas/Configuration/Locale.js.map +1 -0
- package/tmp/lib/schemas/Template.js +76 -0
- package/tmp/lib/schemas/Template.js.map +1 -0
- package/tmp/lib/schemas/utils.js +39 -0
- package/tmp/lib/schemas/utils.js.map +1 -0
- package/tmp/lib/utils.js +127 -0
- package/tmp/lib/utils.js.map +1 -0
- package/tmp/server/generated/prisma.js +52293 -0
- package/tmp/server/generated/prisma.js.map +1 -0
- package/src/Action/CustomAction.js +0 -108
- package/src/Action/CustomAction.js.map +0 -1
- package/src/Errors/TableInstanceNotFound.js +0 -28
- package/src/Errors/TableInstanceNotFound.js.map +0 -1
- package/src/Errors/UniqueActionError.js +0 -31
- package/src/Errors/UniqueActionError.js.map +0 -1
- package/src/Mandarina.js +0 -58
- package/src/Mandarina.js.map +0 -1
- package/src/Table/Table.js +0 -424
- package/src/Table/Table.js.map +0 -1
- package/src/Table/utils.js +0 -0
- package/src/index.js +0 -16
- package/src/index.js.map +0 -1
|
@@ -0,0 +1,277 @@
|
|
|
1
|
+
import {getConfig, loadSchemas} from "../utils";
|
|
2
|
+
import {createDir} from "./genFilesUtils";
|
|
3
|
+
import {Table} from "../..";
|
|
4
|
+
import {Schema} from "mandarina";
|
|
5
|
+
import {isRequired} from "mandarina/build/Schema/utils";
|
|
6
|
+
import path from "path";
|
|
7
|
+
import fs from "fs";
|
|
8
|
+
import {FieldDefinition} from "mandarina/build/Schema/Schema";
|
|
9
|
+
|
|
10
|
+
const prisma2Models: { [schemaName: string]: { [fieldName: string]: string } } = {}
|
|
11
|
+
const processed: { [schemaName: string]: { [schemaName: string]: { [fieldName: string]: true } } } = {}
|
|
12
|
+
const processedSubSchemas: string[] = []
|
|
13
|
+
export const genFile = () => {
|
|
14
|
+
const config = getConfig()
|
|
15
|
+
loadSchemas(config.dir)
|
|
16
|
+
createDir(config.dir.prisma2)
|
|
17
|
+
for (const schemaName in Table.instances) {
|
|
18
|
+
const schema = Schema.getInstance(schemaName)
|
|
19
|
+
getPrisma2Model(schema)
|
|
20
|
+
}
|
|
21
|
+
let prisma = `generator client {
|
|
22
|
+
provider = "prisma-client-js"
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
datasource db {
|
|
26
|
+
provider = "postgresql"
|
|
27
|
+
url = env("DATABASE_URL")
|
|
28
|
+
}
|
|
29
|
+
`
|
|
30
|
+
Object.keys(prisma2Models).forEach(modelName => {
|
|
31
|
+
const model = prisma2Models[modelName]
|
|
32
|
+
prisma += `model ${modelName} {\n `
|
|
33
|
+
Object.keys(model).forEach(fieldName => {
|
|
34
|
+
const field = model[fieldName]
|
|
35
|
+
prisma += `\t${fieldName} ${field}\n`
|
|
36
|
+
})
|
|
37
|
+
prisma += `}\n\n`
|
|
38
|
+
})
|
|
39
|
+
const prismaDir = path.join(process.cwd(), config.dir.prisma2,)
|
|
40
|
+
const fileAbs = `${prismaDir}/schema.prisma`;
|
|
41
|
+
fs.writeFileSync(fileAbs, prisma);
|
|
42
|
+
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
const getPrisma2Model = (schema: Schema) => {
|
|
46
|
+
prisma2Models[schema.name] = prisma2Models[schema.name] || {}
|
|
47
|
+
for (const key of schema.keys) {
|
|
48
|
+
if (key === 'id') {
|
|
49
|
+
c++
|
|
50
|
+
prisma2Models[schema.name].id = `String @id @default(cuid()) //`;
|
|
51
|
+
} else {
|
|
52
|
+
const fieldDefinition = schema.getPathDefinition(key)
|
|
53
|
+
let required = fieldDefinition.isArray || isRequired(fieldDefinition)
|
|
54
|
+
const fieldType = getGraphQLType(fieldDefinition, key, required);
|
|
55
|
+
const unique = fieldDefinition.table.unique ? '@unique' : ''
|
|
56
|
+
let createdAt = '', updatedAt = ''
|
|
57
|
+
let defaultValue = ''
|
|
58
|
+
if (fieldDefinition.table.default !== undefined) {
|
|
59
|
+
const wrapper = (fieldDefinition.type === String) ? '"' : ''
|
|
60
|
+
defaultValue = `@default(${wrapper}${fieldDefinition.table.default}${wrapper})`
|
|
61
|
+
}
|
|
62
|
+
if ((fieldDefinition.table.createdAt === true || (fieldDefinition.table.createdAt !== false && key === 'createdAt'))) {
|
|
63
|
+
createdAt = `@default(now())`
|
|
64
|
+
}
|
|
65
|
+
if ((fieldDefinition.table.updatedAt === true || (fieldDefinition.table.updatedAt !== false && key === 'updatedAt'))) {
|
|
66
|
+
createdAt = `@default(now())`
|
|
67
|
+
}
|
|
68
|
+
|
|
69
|
+
if (fieldDefinition.table.default !== undefined) {
|
|
70
|
+
const wrapper = (fieldDefinition.type === String) ? '"' : ''
|
|
71
|
+
defaultValue = `@default(${wrapper}${fieldDefinition.table.default}${wrapper})`
|
|
72
|
+
}
|
|
73
|
+
if (fieldDefinition.isTable) {
|
|
74
|
+
getPrismaModelAModelB(schema, fieldDefinition)
|
|
75
|
+
if (!processedSubSchemas.includes(fieldDefinition.type) ) {
|
|
76
|
+
processedSubSchemas.push(fieldDefinition.type)
|
|
77
|
+
getPrisma2Model(Schema.getInstance(fieldDefinition.type))
|
|
78
|
+
}
|
|
79
|
+
}else{
|
|
80
|
+
prisma2Models[schema.name][key] = `${fieldType} ${unique} ${createdAt} ${updatedAt} ${defaultValue}`;
|
|
81
|
+
|
|
82
|
+
}
|
|
83
|
+
}
|
|
84
|
+
}// end for
|
|
85
|
+
}
|
|
86
|
+
|
|
87
|
+
let c=0
|
|
88
|
+
const getPrismaModelAModelB = (schema: Schema, fieldDefinition: FieldDefinition) => {
|
|
89
|
+
if (!fieldDefinition.isTable) {
|
|
90
|
+
throw new Error(`Relation must be an array`)
|
|
91
|
+
}
|
|
92
|
+
processed[schema.name] = processed[schema.name] || {}
|
|
93
|
+
processed[schema.name][fieldDefinition.type] = processed[schema.name][fieldDefinition.type] || {}
|
|
94
|
+
prisma2Models[fieldDefinition.type] = prisma2Models[fieldDefinition.type] || {}
|
|
95
|
+
prisma2Models[schema.name] = prisma2Models[schema.name] || {}
|
|
96
|
+
c++
|
|
97
|
+
const childSchema = Schema.getInstance(fieldDefinition.type)
|
|
98
|
+
const children = childSchema.keys.filter(fieldName => childSchema.getPathDefinition(fieldName).type === schema.name)
|
|
99
|
+
|
|
100
|
+
if (!processed[schema.name][fieldDefinition.type][fieldDefinition.key]) {
|
|
101
|
+
if (schema.name === fieldDefinition.type) {
|
|
102
|
+
if (fieldDefinition.isArray) {
|
|
103
|
+
throw new Error(`DO THIS`)
|
|
104
|
+
}else{
|
|
105
|
+
if (fieldDefinition.isArray) {
|
|
106
|
+
throw new Error(`DO THIS`)
|
|
107
|
+
}else{
|
|
108
|
+
const child = schema.getPathDefinition(fieldDefinition.key)
|
|
109
|
+
|
|
110
|
+
if (getRelation(fieldDefinition)!==getRelation(child)){
|
|
111
|
+
throw new Error(`Relation must be the same`)
|
|
112
|
+
}
|
|
113
|
+
const relation = getRelationName(fieldDefinition, child) || `${schema.name}To${schema.name}`
|
|
114
|
+
const fields=`p2${fieldDefinition.key}Id`
|
|
115
|
+
prisma2Models[schema.name][fieldDefinition.key] = `${schema.name}? ${buildRelation(relation, fields)} //SELF: 1 - 1 ((${c}))`;
|
|
116
|
+
prisma2Models[schema.name][fields] = `String? @unique //SELF: 1 - 1 ((${c}))`;
|
|
117
|
+
prisma2Models[schema.name][`p2Predecessor${schema.name}`] = `${schema.name}? ${buildRelation(relation)}//SELF: 1 - 1 ((${c}))`;
|
|
118
|
+
|
|
119
|
+
}
|
|
120
|
+
}
|
|
121
|
+
} else {
|
|
122
|
+
if (children.length === 0) {
|
|
123
|
+
const relation = getRelationName(fieldDefinition)
|
|
124
|
+
if (fieldDefinition.isArray) {
|
|
125
|
+
//relation many to one
|
|
126
|
+
prisma2Models[schema.name][fieldDefinition.key] = `${fieldDefinition.type}[] ${buildRelation(relation)}//CREATE: n - 1 ((${c}))`;
|
|
127
|
+
const fields=`p2${relation}${schema.name}Id`
|
|
128
|
+
prisma2Models[fieldDefinition.type][`p2${relation}${schema.name}`] = `${schema.name}? ${buildRelation(relation, fields)} //=>CREATE: n - 1 ((${c}))`;
|
|
129
|
+
prisma2Models[fieldDefinition.type][fields] = `String? //=>CREATE: 1 - n ((${c}))`;
|
|
130
|
+
} else {
|
|
131
|
+
if (!fieldDefinition.table?.relation?.type) {
|
|
132
|
+
throw new Error(`Relation must be defined ONE_TO_ONE || ONE_TO_MANY- ${schema.name}.${fieldDefinition.key}`)
|
|
133
|
+
}
|
|
134
|
+
if (fieldDefinition.table?.relation?.type === 'ONE_TO_ONE') {
|
|
135
|
+
const fields=`p2${relation}${schema.name}Id`
|
|
136
|
+
prisma2Models[schema.name][fieldDefinition.key] = `${fieldDefinition.type}? ${buildRelation(relation)}//INLINE : 1 - 1 ((${c}))`;
|
|
137
|
+
prisma2Models[fieldDefinition.type][`p2${relation}${schema.name}`] = `${schema.name}? ${buildRelation(relation,fields)} //=>INLINE: 1 - 1 ((${c}))`;
|
|
138
|
+
prisma2Models[fieldDefinition.type][fields] = `String? @unique //=>INLINE: 1 - 1 ((${c}))`;
|
|
139
|
+
}else if (fieldDefinition.table?.relation?.type === 'ONE_TO_MANY') {
|
|
140
|
+
const fields=`p2${relation}${fieldDefinition.type}Id`
|
|
141
|
+
prisma2Models[schema.name][fieldDefinition.key] = `${fieldDefinition.type}? ${buildRelation(relation,fields)}//CREATE: 1 - n ((${c}))`;
|
|
142
|
+
prisma2Models[schema.name][fields] = `String? //=>CREATE: 1 - n ((${c}))`;
|
|
143
|
+
prisma2Models[fieldDefinition.type][`p2${relation}${schema.name}`] = `${schema.name}[] ${buildRelation(relation)} //=>CREATE: 1 - n ((${c}))`;
|
|
144
|
+
}else{
|
|
145
|
+
throw new Error(`many to one does no exists for create - ${schema.name}.${fieldDefinition.key}`)
|
|
146
|
+
}
|
|
147
|
+
}
|
|
148
|
+
} else if (children.length >= 1) {
|
|
149
|
+
let child: FieldDefinition
|
|
150
|
+
if (children.length === 1) {
|
|
151
|
+
child = childSchema.getPathDefinition(children[0])
|
|
152
|
+
} else {
|
|
153
|
+
const childName = children.find(childName => getRelation(childSchema.getPathDefinition(childName)) === getRelation(fieldDefinition))
|
|
154
|
+
if (!childName) {
|
|
155
|
+
throw new Error(`Relation not found111`)
|
|
156
|
+
}
|
|
157
|
+
child = childSchema.getPathDefinition(childName)
|
|
158
|
+
}
|
|
159
|
+
if (!child) {
|
|
160
|
+
throw new Error(`Relation not found222`)
|
|
161
|
+
}
|
|
162
|
+
|
|
163
|
+
if (child.isArray) { // means that the parent is the array (because fieldDefinition.isArray is array then child is the gran children which is really the parent)
|
|
164
|
+
const relation = getRelationName(fieldDefinition,child)
|
|
165
|
+
if (fieldDefinition.isArray) {
|
|
166
|
+
//relation many to many
|
|
167
|
+
prisma2Models[schema.name][fieldDefinition.key] = `${fieldDefinition.type}[] ${buildRelation(relation)} //n - n ((${c}))`;
|
|
168
|
+
prisma2Models[fieldDefinition.type][child.key] = `${child.type}[] ${buildRelation(relation)} //=>n - n ((${c}))`;
|
|
169
|
+
} else {
|
|
170
|
+
//relation one to many
|
|
171
|
+
const relation = getRelationName(fieldDefinition,child)
|
|
172
|
+
const fields=`p2${relation}${fieldDefinition.type}Id`
|
|
173
|
+
prisma2Models[schema.name][fieldDefinition.key] = `${fieldDefinition.type}? ${buildRelation(relation, fields)} //n - 1 ((${c}))`;
|
|
174
|
+
prisma2Models[schema.name][fields] = `String? //n - 1 ((${c}))`;
|
|
175
|
+
prisma2Models[fieldDefinition.type][child.key] = `${schema.name} [] ${buildRelation(relation)}//=>n - 1 ((${c}))`;
|
|
176
|
+
|
|
177
|
+
}
|
|
178
|
+
} else {
|
|
179
|
+
const relation = getRelationName(fieldDefinition,child)
|
|
180
|
+
if (fieldDefinition.isArray) {
|
|
181
|
+
//relation many to many
|
|
182
|
+
const fields=`p2${relation}${schema.name}Id`
|
|
183
|
+
prisma2Models[schema.name][fieldDefinition.key] = `${fieldDefinition.type}[] ${buildRelation(relation)}//1 - n ((${c}))`;
|
|
184
|
+
prisma2Models[fieldDefinition.type][child.key] = `${schema.name}? ${buildRelation(relation,fields)} //=>n - 1 ((${c}))`;
|
|
185
|
+
prisma2Models[fieldDefinition.type][fields] = `String? //=>n - 1 ((${c}))`;
|
|
186
|
+
|
|
187
|
+
} else {
|
|
188
|
+
if (!fieldDefinition.table?.relation?.owner && !child.table?.relation?.owner) {
|
|
189
|
+
throw new Error(`Relation must be defined a owner - ${schema.name}.${fieldDefinition.key}`)
|
|
190
|
+
}
|
|
191
|
+
if (fieldDefinition.table?.relation?.owner && child.table?.relation?.owner) {
|
|
192
|
+
throw new Error(`Relation booth can not be a owner - ${schema.name}.${fieldDefinition.key}`)
|
|
193
|
+
}
|
|
194
|
+
if (fieldDefinition.table?.relation?.owner) {
|
|
195
|
+
const fields = `p2${relation}${schema.name}Id`
|
|
196
|
+
prisma2Models[schema.name][fieldDefinition.key] = `${fieldDefinition.type}? ${buildRelation(relation)}//OWNER 1 - 1 ((${c}))`;
|
|
197
|
+
prisma2Models[fieldDefinition.type][child.key] = `${schema.name}? ${buildRelation(relation, fields)} //OWNER =>1 - 1 ((${c}))`;
|
|
198
|
+
prisma2Models[fieldDefinition.type][fields] = `String? @unique //OWNER =>1 - 1 ((${c}))`;
|
|
199
|
+
}else{
|
|
200
|
+
const fields = `p2${relation}${fieldDefinition.type}Id`
|
|
201
|
+
prisma2Models[schema.name][fieldDefinition.key] = `${fieldDefinition.type}? ${buildRelation(relation, fields)}//OWNED 1 - 1 ((${c}))`;
|
|
202
|
+
prisma2Models[schema.name][fields] = `String? @unique ${buildRelation(relation)} //OWNED =>1 - 1 ((${c}))`;
|
|
203
|
+
prisma2Models[fieldDefinition.type][child.key] = `${child.type}? //OWNED =>1 - 1 ((${c}))`;
|
|
204
|
+
}
|
|
205
|
+
}
|
|
206
|
+
}
|
|
207
|
+
processed[fieldDefinition.type] = processed[fieldDefinition.type] || {}
|
|
208
|
+
processed[fieldDefinition.type][schema.name] = processed[fieldDefinition.type][schema.name] || {}
|
|
209
|
+
processed[fieldDefinition.type][schema.name][child.key] = true
|
|
210
|
+
} else {
|
|
211
|
+
throw new Error(`Relation must be have name`)
|
|
212
|
+
}
|
|
213
|
+
}
|
|
214
|
+
}
|
|
215
|
+
}
|
|
216
|
+
|
|
217
|
+
|
|
218
|
+
|
|
219
|
+
function getRelation(fieldDefinition: FieldDefinition) {
|
|
220
|
+
if (!fieldDefinition.table.relation) return ''
|
|
221
|
+
if (typeof fieldDefinition.table.relation === 'string') {
|
|
222
|
+
return fieldDefinition.table.relation
|
|
223
|
+
}
|
|
224
|
+
return fieldDefinition.table.relation.name || ''
|
|
225
|
+
}
|
|
226
|
+
|
|
227
|
+
const getGraphQLType = (def: FieldDefinition, key: string, required: boolean): string => {
|
|
228
|
+
const optional = !def.isArray && !required ? '?' : ''
|
|
229
|
+
switch (true) {
|
|
230
|
+
case (!def.isArray && !def.isTable && def.type.name === 'String'):
|
|
231
|
+
return `String${optional}`;
|
|
232
|
+
|
|
233
|
+
case (!def.isArray && !def.isTable && def.type.name === 'Boolean'):
|
|
234
|
+
return `Boolean${optional}`;
|
|
235
|
+
|
|
236
|
+
case (!def.isArray && !def.isTable && def.type.name === 'Number'):
|
|
237
|
+
return `Float${optional}`;
|
|
238
|
+
|
|
239
|
+
case (!def.isArray && !def.isTable && def.type.name === 'Integer'):
|
|
240
|
+
return `Int${optional}`;
|
|
241
|
+
case (!def.isArray && !def.isTable && def.type.name === 'Date'):
|
|
242
|
+
return `DateTime${optional}`;
|
|
243
|
+
case (def.isArray && def.isTable):
|
|
244
|
+
return `${def.type}[]`
|
|
245
|
+
case (def.isArray && !def.isTable):
|
|
246
|
+
const scalarName = getGraphQLType({...def, isArray: false}, key, def.isArray && required)
|
|
247
|
+
return `${scalarName}[]`
|
|
248
|
+
default:
|
|
249
|
+
return def.type + optional;
|
|
250
|
+
}
|
|
251
|
+
}
|
|
252
|
+
|
|
253
|
+
function buildRelation(relation: string, fields?: string){
|
|
254
|
+
if (!relation && !fields) return ''
|
|
255
|
+
if (!relation) return `@relation(fields: [${fields}], references: [id])`
|
|
256
|
+
if (fields){
|
|
257
|
+
return `@relation("${relation}", fields: [${fields}], references: [id])`
|
|
258
|
+
}
|
|
259
|
+
return `@relation("${relation}")`
|
|
260
|
+
|
|
261
|
+
}
|
|
262
|
+
|
|
263
|
+
const getRelationName = (def1: FieldDefinition, def2?:FieldDefinition) => {
|
|
264
|
+
const n1=getRelation(def1)
|
|
265
|
+
if (!def2){
|
|
266
|
+
if (!n1){
|
|
267
|
+
return ''
|
|
268
|
+
}
|
|
269
|
+
return n1
|
|
270
|
+
}
|
|
271
|
+
const n2=getRelation(def2)
|
|
272
|
+
if (n1!==n2){
|
|
273
|
+
throw new Error(`Relation name must be equal ${n1} ${n2}`)
|
|
274
|
+
}
|
|
275
|
+
if (!n1) return ""
|
|
276
|
+
return n1
|
|
277
|
+
}
|
package/src/cli/index.ts
CHANGED
|
@@ -3,6 +3,9 @@ import {createProject} from "./createProject";
|
|
|
3
3
|
import {watch} from "./watch";
|
|
4
4
|
import {deploy} from "./deploy";
|
|
5
5
|
import {genFile} from "./gen-files/genFiles";
|
|
6
|
+
import {genFile as genPrisma2} from "./gen-files/prisma2";
|
|
7
|
+
|
|
8
|
+
console.log('cesar')
|
|
6
9
|
|
|
7
10
|
//@ts-ignore
|
|
8
11
|
const [nodeDir, dir, cmd, ...args] = process.argv
|
|
@@ -15,6 +18,9 @@ switch (cmd) {
|
|
|
15
18
|
case 'gen-files':
|
|
16
19
|
genFile()
|
|
17
20
|
break;
|
|
21
|
+
case 'gen-prisma2':
|
|
22
|
+
genPrisma2()
|
|
23
|
+
break;
|
|
18
24
|
case 'deploy':
|
|
19
25
|
deploy()
|
|
20
26
|
break;
|
package/src/cli/utils.js
CHANGED
|
@@ -3,9 +3,10 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
3
3
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
4
|
};
|
|
5
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.loadSchemas = exports.getConfig = void 0;
|
|
6
7
|
var fs_1 = __importDefault(require("fs"));
|
|
7
8
|
var path_1 = __importDefault(require("path"));
|
|
8
|
-
|
|
9
|
+
var getConfig = function () {
|
|
9
10
|
var rawData;
|
|
10
11
|
try {
|
|
11
12
|
rawData = fs_1.default.readFileSync(path_1.default.join(process.cwd(), 'mandarina.json'), 'utf8');
|
|
@@ -34,6 +35,7 @@ exports.getConfig = function () {
|
|
|
34
35
|
}
|
|
35
36
|
return (config);
|
|
36
37
|
};
|
|
38
|
+
exports.getConfig = getConfig;
|
|
37
39
|
var walkSync = function (dir, fileList) {
|
|
38
40
|
var files = fs_1.default.readdirSync(dir);
|
|
39
41
|
fileList = fileList || [];
|
|
@@ -49,7 +51,7 @@ var walkSync = function (dir, fileList) {
|
|
|
49
51
|
});
|
|
50
52
|
return fileList;
|
|
51
53
|
};
|
|
52
|
-
|
|
54
|
+
var loadSchemas = function (dir) {
|
|
53
55
|
var tables = [];
|
|
54
56
|
var schemas = [];
|
|
55
57
|
var actions = [];
|
|
@@ -88,4 +90,5 @@ exports.loadSchemas = function (dir) {
|
|
|
88
90
|
}
|
|
89
91
|
});
|
|
90
92
|
};
|
|
93
|
+
exports.loadSchemas = loadSchemas;
|
|
91
94
|
//# sourceMappingURL=utils.js.map
|
package/src/cli/utils.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"utils.js","sourceRoot":"","sources":["utils.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"utils.js","sourceRoot":"","sources":["utils.ts"],"names":[],"mappings":"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"}
|
package/src/cli/utils.ts
CHANGED
|
@@ -46,8 +46,11 @@ const walkSync = function (dir: string, fileList: string[]) {
|
|
|
46
46
|
};
|
|
47
47
|
|
|
48
48
|
export interface ConfigInterface {
|
|
49
|
-
|
|
50
|
-
|
|
49
|
+
database: {
|
|
50
|
+
url: string,
|
|
51
|
+
}
|
|
52
|
+
prisma: {
|
|
53
|
+
port: string,
|
|
51
54
|
host: string,
|
|
52
55
|
database?: string,
|
|
53
56
|
stage?: string,
|
|
@@ -58,7 +61,7 @@ export interface ConfigInterface {
|
|
|
58
61
|
}
|
|
59
62
|
secret?: string
|
|
60
63
|
customSettings: {
|
|
61
|
-
[props:string]: any
|
|
64
|
+
[props: string]: any
|
|
62
65
|
}
|
|
63
66
|
}
|
|
64
67
|
|
|
@@ -68,6 +71,7 @@ export interface ConfigDirInterface {
|
|
|
68
71
|
actions?: string[]
|
|
69
72
|
generated: string
|
|
70
73
|
prisma: string
|
|
74
|
+
prisma2: string
|
|
71
75
|
}
|
|
72
76
|
|
|
73
77
|
export const loadSchemas = (dir: ConfigDirInterface) => {
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
const utils_1 = require("mandarina/build/Schema/utils");
|
|
7
|
+
const react_1 = __importDefault(require("react"));
|
|
8
|
+
const utils_2 = require("../../../../lib/utils");
|
|
9
|
+
const ConfigurationContext_1 = require("../ConfigurationContext");
|
|
10
|
+
// @ts-ignore //TODO: https://github.com/DefinitelyTyped/DefinitelyTyped/issues/27805
|
|
11
|
+
const CellDateTime = ConfigurationContext_1.withConfiguration(({ columnIndex, rowIndex, data, field, configuration }) => {
|
|
12
|
+
const dates = utils_1.get(data[rowIndex], field.split('.'));
|
|
13
|
+
return dates.map((d, i) => {
|
|
14
|
+
const [h, t] = utils_2.showDateTime(dates, configuration.locale.dateFormat).split(', ');
|
|
15
|
+
return react_1.default.createElement("span", { key: i },
|
|
16
|
+
h,
|
|
17
|
+
react_1.default.createElement("br", null),
|
|
18
|
+
t);
|
|
19
|
+
});
|
|
20
|
+
});
|
|
21
|
+
exports.default = CellDateTime;
|
|
22
|
+
//# sourceMappingURL=CellDateTime.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"CellDateTime.js","sourceRoot":"","sources":["../../../../../../../app/client/components/Common/Cells/CellDateTime.tsx"],"names":[],"mappings":";;;;;AAAA,wDAAiD;AAEjD,kDAA0B;AAC1B,iDAAmD;AACnD,kEAA6E;AAG7E,qFAAqF;AAErF,MAAM,YAAY,GAAG,wCAAiB,CAAC,CAAC,EAAC,WAAW,EAAE,QAAQ,EAAE,IAAI,EAAE,KAAK,EAAE,aAAa,EAAyC,EAAE,EAAE;IACnI,MAAM,KAAK,GAAG,WAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAA;IACnD,OAAO,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE;QACtB,MAAM,CAAC,CAAC,EAAC,CAAC,CAAC,GAAC,oBAAY,CAAC,KAAK,EAAE,aAAa,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAA;QAC5E,OAAO,wCAAM,GAAG,EAAE,CAAC;YAAG,CAAC;YAAC,yCAAK;YAAC,CAAC,CAAQ,CAAC;IAC5C,CAAC,CAAC,CAAA;AACN,CAAC,CAAC,CAAA;AAEF,kBAAe,YAAY,CAAA"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
const react_1 = __importDefault(require("react"));
|
|
7
|
+
const utils_1 = require("mandarina/build/Schema/utils");
|
|
8
|
+
const CellHtml = ({ data, rowIndex, field }) => {
|
|
9
|
+
const res = utils_1.get(data[rowIndex], field.split('.'));
|
|
10
|
+
return react_1.default.createElement(react_1.default.Fragment, null, res.map(__html => react_1.default.createElement("div", { dangerouslySetInnerHTML: { __html } })));
|
|
11
|
+
};
|
|
12
|
+
exports.default = CellHtml;
|
|
13
|
+
//# sourceMappingURL=CellHtml.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"CellHtml.js","sourceRoot":"","sources":["../../../../../../../app/client/components/Common/Cells/CellHtml.tsx"],"names":[],"mappings":";;;;;AAAA,kDAAyB;AAEzB,wDAAiD;AAGjD,MAAM,QAAQ,GAAG,CAAC,EAAC,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAqB,EAAE,EAAE;IAC7D,MAAM,GAAG,GAAG,WAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAA;IACjD,OAAO,8DAAG,GAAG,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,uCAAK,uBAAuB,EAAE,EAAC,MAAM,EAAC,GAAG,CAAC,CAAI,CAAA;AAC9E,CAAC,CAAA;AAED,kBAAe,QAAQ,CAAA"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
const react_1 = __importDefault(require("react"));
|
|
7
|
+
const react_router_dom_1 = require("react-router-dom");
|
|
8
|
+
const CellLinkTemplate = ({ location, rowIndex, data, }) => {
|
|
9
|
+
const type = data[rowIndex].type;
|
|
10
|
+
const id = data[rowIndex].id;
|
|
11
|
+
const description = data[rowIndex].description;
|
|
12
|
+
if (!id)
|
|
13
|
+
return null;
|
|
14
|
+
const event = location.pathname.indexOf('event') > 0 ? 'event/' : '';
|
|
15
|
+
const url = `/admin/${type.toLowerCase()}/templates/${event}update/${id}`;
|
|
16
|
+
return react_1.default.createElement(react_router_dom_1.Link, { to: url, "data-id": rowIndex }, description);
|
|
17
|
+
};
|
|
18
|
+
exports.default = react_router_dom_1.withRouter(CellLinkTemplate);
|
|
19
|
+
//# sourceMappingURL=CellLinkTemplate.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"CellLinkTemplate.js","sourceRoot":"","sources":["../../../../../../../app/client/components/Common/Cells/CellLinkTemplate.tsx"],"names":[],"mappings":";;;;;AAAA,kDAAyB;AAEzB,uDAAuE;AAGtE,MAAM,gBAAgB,GAAG,CAAC,EAAC,QAAQ,EAAE,QAAQ,EAAE,IAAI,GAA4C,EAAE,EAAE;IAChG,MAAM,IAAI,GAAG,IAAI,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAA;IAChC,MAAM,EAAE,GAAG,IAAI,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAA;IAC5B,MAAM,WAAW,GAAG,IAAI,CAAC,QAAQ,CAAC,CAAC,WAAW,CAAA;IAC9C,IAAI,CAAC,EAAE;QAAE,OAAO,IAAI,CAAA;IACpB,MAAM,KAAK,GAAG,QAAQ,CAAC,QAAQ,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAA;IACpE,MAAM,GAAG,GAAG,UAAU,IAAI,CAAC,WAAW,EAAE,cAAc,KAAK,UAAU,EAAE,EAAE,CAAA;IACzE,OAAO,8BAAC,uBAAI,IAAC,EAAE,EAAE,GAAG,aAAW,QAAQ,IAAG,WAAW,CAAQ,CAAA;AAChE,CAAC,CAAA;AAEF,kBAAe,6BAAU,CAAC,gBAAgB,CAAC,CAAA"}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
const react_1 = __importDefault(require("react"));
|
|
7
|
+
exports.ConfigurationContext = react_1.default.createContext({
|
|
8
|
+
locale: {
|
|
9
|
+
dateFormat: 'DD/MM/YYYY', currencySymbol: '$', country: 'AU', timeZone: "UTC+10:00"
|
|
10
|
+
},
|
|
11
|
+
settings: {
|
|
12
|
+
sandbox: true,
|
|
13
|
+
childCard: true,
|
|
14
|
+
childCardFamily: true,
|
|
15
|
+
reviews: true,
|
|
16
|
+
}
|
|
17
|
+
});
|
|
18
|
+
exports.ConfigurationProvider = exports.ConfigurationContext.Provider;
|
|
19
|
+
exports.ConfigurationConsumer = exports.ConfigurationContext.Consumer;
|
|
20
|
+
function withConfiguration(WrappedComponent) {
|
|
21
|
+
return (props) => (react_1.default.createElement(exports.ConfigurationConsumer, null, (configuration) => react_1.default.createElement(WrappedComponent, Object.assign({ configuration: configuration }, props))));
|
|
22
|
+
}
|
|
23
|
+
exports.withConfiguration = withConfiguration;
|
|
24
|
+
exports.default = exports.ConfigurationContext;
|
|
25
|
+
//# sourceMappingURL=ConfigurationContext.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ConfigurationContext.js","sourceRoot":"","sources":["../../../../../../app/client/components/Common/ConfigurationContext.tsx"],"names":[],"mappings":";;;;;AAAA,kDAA0C;AAG7B,QAAA,oBAAoB,GAAG,eAAK,CAAC,aAAa,CAAC;IACpD,MAAM,EAAE;QACJ,UAAU,EAAE,YAAY,EAAE,cAAc,EAAE,GAAG,EAAE,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW;KACtF;IACD,QAAQ,EAAE;QACN,OAAO,EAAE,IAAI;QACb,SAAS,EAAE,IAAI;QACf,eAAe,EAAE,IAAI;QACrB,OAAO,EAAE,IAAI;KAChB;CACJ,CAAC,CAAC;AAGU,QAAA,qBAAqB,GAAG,4BAAoB,CAAC,QAAQ,CAAA;AACrD,QAAA,qBAAqB,GAAG,4BAAoB,CAAC,QAAQ,CAAA;AASlE,SAAgB,iBAAiB,CAAI,gBAAkD;IACnF,OAAO,CAAC,KAAQ,EAAE,EAAE,CAAC,CACjB,8BAAC,6BAAqB,QACjB,CAAC,aAAa,EAAE,EAAE,CAAC,8BAAC,gBAAgB,kBAAC,aAAa,EAAE,aAAa,IAAM,KAAU,EAAI,CAClE,CAC3B,CAAA;AACL,CAAC;AAND,8CAMC;AAED,kBAAe,4BAAoB,CAAA"}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
const mandarina_1 = require("mandarina");
|
|
4
|
+
class MySchema extends mandarina_1.Schema {
|
|
5
|
+
constructor(shape, options) {
|
|
6
|
+
if (shape.id) {
|
|
7
|
+
shape.id.label = 'Action';
|
|
8
|
+
shape.id.list = shape.id.list || {};
|
|
9
|
+
if (shape.id.list.noFilter !== false)
|
|
10
|
+
shape.id.list.noFilter = true;
|
|
11
|
+
if (shape.id.list.noSort !== false)
|
|
12
|
+
shape.id.list.noSort = true;
|
|
13
|
+
}
|
|
14
|
+
const permissions = Object.assign(Object.assign({}, permissionBuilder(options.name)), options.permissions);
|
|
15
|
+
super(shape, Object.assign(Object.assign({}, options), { permissions }));
|
|
16
|
+
}
|
|
17
|
+
}
|
|
18
|
+
exports.default = MySchema;
|
|
19
|
+
const permissionBuilder = (name) => {
|
|
20
|
+
return {
|
|
21
|
+
read: [`role_read${name}`, `role_update${name}`, `role_create${name}`, 'role_admin'],
|
|
22
|
+
update: [`role_update${name}`, `role_create${name}`, 'role_admin'],
|
|
23
|
+
create: [`role_create${name}`, 'role_admin'],
|
|
24
|
+
delete: [`role_delete${name}`, 'role_admin'],
|
|
25
|
+
};
|
|
26
|
+
};
|
|
27
|
+
//# sourceMappingURL=MySchema.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"MySchema.js","sourceRoot":"","sources":["../../../../../../../app/client/components/Common/My/MySchema.ts"],"names":[],"mappings":";;AAAA,yCAAiC;AAGjC,MAAqB,QAAS,SAAQ,kBAAM;IAExC,YAAY,KAAsB,EAAE,OAAsB;QACtD,IAAI,KAAK,CAAC,EAAE,EAAE;YACV,KAAK,CAAC,EAAE,CAAC,KAAK,GAAG,QAAQ,CAAA;YACzB,KAAK,CAAC,EAAE,CAAC,IAAI,GAAG,KAAK,CAAC,EAAE,CAAC,IAAI,IAAI,EAAE,CAAA;YACnC,IAAI,KAAK,CAAC,EAAE,CAAC,IAAI,CAAC,QAAQ,KAAK,KAAK;gBAAE,KAAK,CAAC,EAAE,CAAC,IAAK,CAAC,QAAQ,GAAG,IAAI,CAAA;YACpE,IAAI,KAAK,CAAC,EAAE,CAAC,IAAI,CAAC,MAAM,KAAK,KAAK;gBAAE,KAAK,CAAC,EAAE,CAAC,IAAK,CAAC,MAAM,GAAG,IAAI,CAAA;SACnE;QACD,MAAM,WAAW,mCACV,iBAAiB,CAAC,OAAO,CAAC,IAAI,CAAC,GAC/B,OAAO,CAAC,WAAW,CACzB,CAAA;QACD,KAAK,CAAC,KAAK,kCAAM,OAAO,KAAE,WAAW,IAAE,CAAC;IAC5C,CAAC;CACJ;AAfD,2BAeC;AAED,MAAM,iBAAiB,GAAG,CAAC,IAAY,EAAE,EAAE;IACvC,OAAO;QACH,IAAI,EAAE,CAAC,YAAY,IAAI,EAAE,EAAE,cAAc,IAAI,EAAE,EAAE,cAAc,IAAI,EAAE,EAAE,YAAY,CAAC;QACpF,MAAM,EAAE,CAAC,cAAc,IAAI,EAAE,EAAE,cAAc,IAAI,EAAE,EAAE,YAAY,CAAC;QAClE,MAAM,EAAE,CAAC,cAAc,IAAI,EAAE,EAAE,YAAY,CAAC;QAC5C,MAAM,EAAE,CAAC,cAAc,IAAI,EAAE,EAAE,YAAY,CAAC;KAC/C,CAAA;AACL,CAAC,CAAA"}
|
|
@@ -0,0 +1,139 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importStar = (this && this.__importStar) || function (mod) {
|
|
3
|
+
if (mod && mod.__esModule) return mod;
|
|
4
|
+
var result = {};
|
|
5
|
+
if (mod != null) for (var k in mod) if (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k];
|
|
6
|
+
result["default"] = mod;
|
|
7
|
+
return result;
|
|
8
|
+
};
|
|
9
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
10
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
11
|
+
};
|
|
12
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
13
|
+
const react_1 = __importStar(require("react"));
|
|
14
|
+
const antd_1 = require("antd");
|
|
15
|
+
const utils_1 = require("./utils");
|
|
16
|
+
const connectField_1 = __importDefault(require("uniforms/connectField"));
|
|
17
|
+
const wrapField_1 = __importDefault(require("uniforms-antd/wrapField"));
|
|
18
|
+
const utils_2 = require("../../../../../lib/utils");
|
|
19
|
+
const Marker_1 = require("../../../Location/Marker");
|
|
20
|
+
const google_map_react_1 = __importDefault(require("google-map-react"));
|
|
21
|
+
const ConfigurationContext_1 = require("../../ConfigurationContext");
|
|
22
|
+
const Option = antd_1.AutoComplete.Option;
|
|
23
|
+
// components=country:fr
|
|
24
|
+
class AddressField extends react_1.Component {
|
|
25
|
+
constructor() {
|
|
26
|
+
super(...arguments);
|
|
27
|
+
this.state = {
|
|
28
|
+
input: this.props.value && this.props.value.fullText || '',
|
|
29
|
+
loading: false,
|
|
30
|
+
suggestions: this.props.value && this.props.value.placeId ? [{
|
|
31
|
+
place_id: this.props.value.placeId,
|
|
32
|
+
description: this.props.value.fullText
|
|
33
|
+
}] : []
|
|
34
|
+
};
|
|
35
|
+
this.google = utils_2.isBrowser ? google : class Nothing {
|
|
36
|
+
};
|
|
37
|
+
// @ts-ignore
|
|
38
|
+
this.autocompleteService = utils_2.isBrowser ? new this.google.maps.places.AutocompleteService() : undefined;
|
|
39
|
+
this.autocompleteCallback = (suggestions, status) => {
|
|
40
|
+
this.setState({ loading: false });
|
|
41
|
+
// @ts-ignore
|
|
42
|
+
if (status !== this.google.maps.places.PlacesServiceStatus.OK) {
|
|
43
|
+
this.clearSuggestions();
|
|
44
|
+
return;
|
|
45
|
+
}
|
|
46
|
+
this.setState({ suggestions });
|
|
47
|
+
};
|
|
48
|
+
this.clearSuggestions = () => {
|
|
49
|
+
return this.setState({ suggestions: [] });
|
|
50
|
+
};
|
|
51
|
+
this.onSelect = (placeId) => {
|
|
52
|
+
const suggestion = this.state.suggestions.find(({ place_id }) => place_id === placeId);
|
|
53
|
+
if (!suggestion)
|
|
54
|
+
return;
|
|
55
|
+
const { onChange, full } = this.props;
|
|
56
|
+
if (full) {
|
|
57
|
+
utils_1.geocodeByPlaceId(placeId, suggestion.description)
|
|
58
|
+
.then(value => onChange(Object.assign({ fullText: suggestion.description }, value)));
|
|
59
|
+
}
|
|
60
|
+
else {
|
|
61
|
+
onChange({ fullText: suggestion.description, placeId });
|
|
62
|
+
}
|
|
63
|
+
};
|
|
64
|
+
this.onInput = (input) => {
|
|
65
|
+
//if is a placeId
|
|
66
|
+
if (!input)
|
|
67
|
+
input = '';
|
|
68
|
+
if (this.state.suggestions.findIndex(({ place_id }) => input === place_id) > -1)
|
|
69
|
+
return;
|
|
70
|
+
const loading = !!input.length;
|
|
71
|
+
const searchOptions = Object.assign({ componentRestrictions: { country: this.props.configuration.locale.country.toLowerCase() } }, this.props.searchOptions);
|
|
72
|
+
this.setState({ input, loading });
|
|
73
|
+
if (input.length) {
|
|
74
|
+
this.props.onChange({});
|
|
75
|
+
this.autocompleteService.getPlacePredictions(Object.assign(Object.assign({}, searchOptions), { input }), this.autocompleteCallback);
|
|
76
|
+
}
|
|
77
|
+
else {
|
|
78
|
+
this.props.onChange(null);
|
|
79
|
+
this.clearSuggestions();
|
|
80
|
+
}
|
|
81
|
+
};
|
|
82
|
+
this.options = () => {
|
|
83
|
+
return this.state.loading ?
|
|
84
|
+
[react_1.default.createElement(Option, { disabled: true, key: "loading", value: '' },
|
|
85
|
+
react_1.default.createElement(antd_1.Spin, null))]
|
|
86
|
+
: this.state.suggestions.map(({ place_id, description }) => (react_1.default.createElement(Option, { key: place_id, value: place_id }, description))).concat([
|
|
87
|
+
react_1.default.createElement(Option, { disabled: true, key: "powered_by_google_on_white", style: { textAlign: 'right' } },
|
|
88
|
+
react_1.default.createElement("img", { src: '/images/powered_by_google_on_white.png' })),
|
|
89
|
+
]);
|
|
90
|
+
};
|
|
91
|
+
}
|
|
92
|
+
render() {
|
|
93
|
+
const placeId = this.props.value && this.props.value.placeId || '';
|
|
94
|
+
const value = this.props.value || {
|
|
95
|
+
unit: '',
|
|
96
|
+
number: '',
|
|
97
|
+
street: '',
|
|
98
|
+
suburb: '',
|
|
99
|
+
city: '',
|
|
100
|
+
state: '',
|
|
101
|
+
zip: '',
|
|
102
|
+
country: '',
|
|
103
|
+
lat: 0, lng: 0, fullText: ''
|
|
104
|
+
};
|
|
105
|
+
const { showMap, showDetail = true } = this.props;
|
|
106
|
+
const { unit, number, street, suburb, city, state, zip, country, lat, lng, fullText } = value;
|
|
107
|
+
return wrapField_1.default(this.props, react_1.default.createElement(react_1.default.Fragment, null,
|
|
108
|
+
react_1.default.createElement(antd_1.AutoComplete, Object.assign({ onChange: this.onInput, allowClear: true, onSelect: this.onSelect }, this.props.props, { defaultValue: placeId }), this.options()),
|
|
109
|
+
showDetail && placeId && react_1.default.createElement(react_1.default.Fragment, null,
|
|
110
|
+
react_1.default.createElement(Part, { title: 'Unit', value: unit }),
|
|
111
|
+
react_1.default.createElement(Part, { title: 'Number', value: number }),
|
|
112
|
+
react_1.default.createElement(Part, { title: 'Street', value: street }),
|
|
113
|
+
react_1.default.createElement(Part, { title: 'Suburb', value: suburb }),
|
|
114
|
+
react_1.default.createElement(Part, { title: 'City', value: city }),
|
|
115
|
+
react_1.default.createElement(Part, { title: 'State', value: state }),
|
|
116
|
+
react_1.default.createElement(Part, { title: 'Zip', value: zip }),
|
|
117
|
+
react_1.default.createElement(Part, { title: 'Country', value: country })),
|
|
118
|
+
showMap && placeId && lat && lng &&
|
|
119
|
+
react_1.default.createElement("div", { style: { height: '400px', width: '100%' } },
|
|
120
|
+
react_1.default.createElement(google_map_react_1.default, { bootstrapURLKeys: { key: 'AIzaSyDREfT4Rypm8BD2TqwK-8tAHvAQ46Nswbg' }, defaultCenter: { lat, lng }, defaultZoom: 17 },
|
|
121
|
+
react_1.default.createElement(Marker_1.FamilyMarker, { lat: lat, lng: lng, content: fullText })))));
|
|
122
|
+
}
|
|
123
|
+
}
|
|
124
|
+
exports.AddressField = AddressField;
|
|
125
|
+
AddressField.defaultProps = {
|
|
126
|
+
full: true
|
|
127
|
+
};
|
|
128
|
+
const Part = ({ title, value }) => react_1.default.createElement("div", { style: { display: 'inline-block', marginRight: '10px' } },
|
|
129
|
+
' ',
|
|
130
|
+
react_1.default.createElement("b", null,
|
|
131
|
+
title,
|
|
132
|
+
":"),
|
|
133
|
+
" ",
|
|
134
|
+
value ? value : react_1.default.createElement("span", { style: { color: 'red' } }, "_____"),
|
|
135
|
+
". ",
|
|
136
|
+
' ',
|
|
137
|
+
" ");
|
|
138
|
+
exports.default = connectField_1.default(ConfigurationContext_1.withConfiguration(AddressField));
|
|
139
|
+
//# sourceMappingURL=AddressField.js.map
|