Skip to content

Commit a0a0d82

Browse files
Personas Management
1 parent 0406e8e commit a0a0d82

33 files changed

+530
-185
lines changed

Project/Sources/Classes/AiWizard.4dm

Lines changed: 38 additions & 37 deletions
Original file line numberDiff line numberDiff line change
@@ -11,25 +11,27 @@ Function getPersonas()->$personas : Collection
1111

1212
var $folder : 4D:C1709.Folder
1313
var $file : 4D:C1709.File
14-
var $lang : Text
14+
var $lang; $DBname : Text
1515
var $localizedPersonaFolders; $defaultPersonaFolders; $dataPersonas; $files : Collection
1616
var $persona : Object
1717
var $i : Integer
1818
var $validated : Boolean
1919

2020
$lang:=Get database localization:C1009(Current localization:K5:22; *)
21+
$DBname:=Folder:C1567(fk database folder:K87:14; *).name
22+
2123
$personas:=[]
2224

2325
$localizedPersonaFolders:=[]
2426
$defaultPersonaFolders:=[]
2527

2628
$localizedPersonaFolders.push(Folder:C1567("/RESOURCES/4DWP_AI/Personas/"+$lang)) // default
2729
$localizedPersonaFolders.push(Folder:C1567("/RESOURCES/4DWP_AI/Personas/"+$lang; *)) // host resources
28-
$localizedPersonaFolders.push(Folder:C1567(Folder:C1567(fk user preferences folder:K87:10).path+"4DWP_AI/Personas/"+$lang; fk posix path:K87:1))
30+
$localizedPersonaFolders.push(Folder:C1567(Folder:C1567(fk user preferences folder:K87:10).path+$DBname+"/Personas/"+$lang; fk posix path:K87:1))
2931

3032
$defaultPersonaFolders.push(Folder:C1567("/RESOURCES/4DWP_AI/Personas/en/"))
3133
$defaultPersonaFolders.push(Folder:C1567("/RESOURCES/4DWP_AI/Personas/en/"; *))
32-
$defaultPersonaFolders.push(Folder:C1567(Folder:C1567(fk user preferences folder:K87:10).path+"4DWP_AI/Personas/en"; fk posix path:K87:1))
34+
$defaultPersonaFolders.push(Folder:C1567(Folder:C1567(fk user preferences folder:K87:10).path+$DBname+"/Personas/en"; fk posix path:K87:1))
3335

3436
// local personas
3537
For ($i; 0; $localizedPersonaFolders.length-1)
@@ -46,7 +48,7 @@ Function getPersonas()->$personas : Collection
4648
If ($validated)
4749
$persona:=JSON Parse:C1218($file.getText())
4850
$persona._fileName:=$file.fullName
49-
$persona._origin:=Choose:C955($i; "Default"; "Resources"; "Single User")
51+
$persona._origin:=$i // 0: "Default" 1:"Resources" 2:"User")
5052
$persona._originIcon:=This:C1470._originIcons[$i]
5153
$personas.push($persona)
5254
End if
@@ -58,7 +60,7 @@ Function getPersonas()->$personas : Collection
5860
// data (server) personas
5961
$dataPersonas:=AI_GetPersonas($lang) // executed on server
6062
For each ($persona; $dataPersonas)
61-
$persona._origin:="All Users"
63+
$persona._origin:=3 // data folder = "All Users"
6264
$persona._originIcon:=This:C1470._originIcons[3]
6365
End for each
6466
$personas.combine($dataPersonas)
@@ -84,93 +86,92 @@ Function getPersona($id : Integer)->$persona : Object
8486
$persona:=This:C1470.personas[$id]
8587
End if
8688

87-
88-
89-
Function save($persona : Object)
89+
Function save($persona : Object; $saveWhere : Integer)
9090

9191
var $folder : 4D:C1709.Folder
92-
var $file : 4D:C1709.File
93-
var $lang; $json : Text
92+
var $oldFile; $newFile : 4D:C1709.File
93+
var $lang; $json; $DBname : Text
9494

9595
$lang:=Get database localization:C1009(Current localization:K5:22; *)
9696

9797
Case of
98-
: ($persona._origin="default") // must be saved in the 4DWP resources folder
98+
: ($saveWhere=0) // must be saved in the 4DWP resources folder
9999

100100
$folder:=Folder:C1567("/RESOURCES/4DWP_AI/Personas/"+$lang)
101-
If ($folder.exists=False:C215)
102-
$folder:=Folder:C1567("/RESOURCES/4DWP_AI/Personas/en/")
103-
End if
104101

105-
: ($persona._origin="resources") // must be saved in the host database resources
102+
: ($saveWhere=1) // must be saved in the host database resources
106103

107104
$folder:=Folder:C1567("/RESOURCES/4DWP_AI/Personas/"+$lang; *)
108-
If ($folder.exists=False:C215)
109-
$folder:=Folder:C1567("/RESOURCES/4DWP_AI/Personas/en/"; *)
110-
End if
111-
112105

113-
: ($persona._origin="user") // must be saved in the user's folder
106+
: ($saveWhere=2) // must be saved in the user's folder
114107

115-
$folder:=Folder:C1567(Folder:C1567(fk user preferences folder:K87:10).path+"4DWP_AI/Personas/"+$lang; fk posix path:K87:1)
116-
If ($folder.exists=False:C215)
117-
$folder:=Folder:C1567(Folder:C1567(fk user preferences folder:K87:10).path+"4DWP_AI/Personas/en"; fk posix path:K87:1)
118-
End if
108+
$DBname:=Folder:C1567(fk database folder:K87:14; *).name
109+
$folder:=Folder:C1567(Folder:C1567(fk user preferences folder:K87:10).path+$DBname+"/Personas/"+$lang; fk posix path:K87:1)
119110

120-
: ($persona._origin="data") // must be saved in the data folder
111+
: ($saveWhere=3) // must be saved in the data folder
121112

113+
// later
122114
End case
123115

124116

125117
If ($folder#Null:C1517)
126118

127-
$file:=File:C1566($folder.path+$persona.name+".json"; fk posix path:K87:1)
119+
If ($folder.exists=False:C215)
120+
$folder.create()
121+
End if
122+
123+
$oldFile:=File:C1566($folder.platformPath+$persona._fileName; fk platform path:K87:2)
124+
If ($oldFile.exists) // true if folder has not changed, false otherwise
125+
$oldFile.delete()
126+
End if
127+
128+
$newFile:=File:C1566($folder.platformPath+$persona.name+".json"; fk platform path:K87:2)
128129
OB REMOVE:C1226($persona; "_origin")
129130
OB REMOVE:C1226($persona; "_originIcon")
131+
OB REMOVE:C1226($persona; "_fileName")
130132

131133
$json:=JSON Stringify:C1217($persona; *)
132-
$file.setText($json)
134+
$newFile.setText($json)
133135

134136
Else // data folder case
135137

136138
AI_SavePersona($persona; $lang)
137139

138140
End if
139141

140-
141-
142142
Function delete($persona : Object)
143143

144144
var $folder : 4D:C1709.Folder
145145
var $file : 4D:C1709.File
146-
var $lang; $json : Text
146+
var $lang; $json; $DBname : Text
147147

148148
$lang:=Get database localization:C1009(Current localization:K5:22; *)
149149

150150
Case of
151-
: ($persona._origin="default") // must be saved in the 4DWP resources folder
151+
: ($persona._origin=0) // must be saved in the 4DWP resources folder
152152

153153
$folder:=Folder:C1567("/RESOURCES/4DWP_AI/Personas/"+$lang)
154154
If ($folder.exists=False:C215)
155155
$folder:=Folder:C1567("/RESOURCES/4DWP_AI/Personas/en/")
156156
End if
157157

158-
: ($persona._origin="resources") // must be saved in the host database resources
158+
: ($persona._origin=1) // must be saved in the host database resources
159159

160160
$folder:=Folder:C1567("/RESOURCES/4DWP_AI/Personas/"+$lang; *)
161161
If ($folder.exists=False:C215)
162162
$folder:=Folder:C1567("/RESOURCES/4DWP_AI/Personas/en/"; *)
163163
End if
164164

165165

166-
: ($persona._origin="user") // must be saved in the user's folder
166+
: ($persona._origin=2) // must be saved in the user's folder
167167

168-
$folder:=Folder:C1567(Folder:C1567(fk user preferences folder:K87:10).path+"4DWP_AI/Personas/"+$lang; fk posix path:K87:1)
168+
$DBname:=Folder:C1567(fk database folder:K87:14; *).name
169+
$folder:=Folder:C1567(Folder:C1567(fk user preferences folder:K87:10).path+$DBname+"/Personas/"+$lang; fk posix path:K87:1)
169170
If ($folder.exists=False:C215)
170-
$folder:=Folder:C1567(Folder:C1567(fk user preferences folder:K87:10).path+"4DWP_AI/Personas/en"; fk posix path:K87:1)
171+
$folder:=Folder:C1567(Folder:C1567(fk user preferences folder:K87:10).path+$DBname+"/Personas/en"; fk posix path:K87:1)
171172
End if
172173

173-
: ($persona._origin="data") // must be saved in the data folder
174+
: ($persona._origin=3) // must be saved in the data folder
174175

175176
End case
176177

@@ -185,7 +186,7 @@ Function delete($persona : Object)
185186

186187
Else // data folder case
187188

188-
AI_SavePersona($persona; $lang)
189+
AI_DeletePersona($persona; $lang)
189190

190191
End if
191192

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
var $winLeft; $winTop; $winRight; $WinBottom : Integer
2+
var $x1; $y1; $x2; $y2 : Integer
3+
4+
5+
6+
GET WINDOW RECT:C443($winLeft; $winTop; $winRight; $WinBottom)
7+
8+
OBJECT GET COORDINATES:C663(*; "Rect_Frame"; $x1; $y1; $x2; $y2)
9+
10+
If (Form:C1466._extra.expanded)
11+
//FORM SET SIZE($x1; $y2)
12+
SET WINDOW RECT:C444($winLeft; $winTop; $winLeft+$x1-1; $winTop+$y2)
13+
Else
14+
//FORM SET SIZE($x2; $y2)
15+
SET WINDOW RECT:C444($winLeft; $winTop; $winLeft+$x2; $winTop+$y2)
16+
End if
17+
18+
Form:C1466._extra.expanded:=Not:C34(Form:C1466._extra.expanded)
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
WP UpdateWidget ("WPwidget";"WParea")

0 commit comments

Comments
 (0)