Skip to content

Commit 0406e8e

Browse files
AI update
1 parent 04ce524 commit 0406e8e

File tree

22 files changed

+623
-39
lines changed

22 files changed

+623
-39
lines changed
Lines changed: 194 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,194 @@
1+
property personas; _originIcons : Collection
2+
property _originIcon : Picture
3+
4+
Class constructor($formName : Text)
5+
6+
This:C1470._originIcons:=This:C1470.getIcons()
7+
This:C1470.personas:=This:C1470.getPersonas()
8+
9+
Function getPersonas()->$personas : Collection
10+
11+
12+
var $folder : 4D:C1709.Folder
13+
var $file : 4D:C1709.File
14+
var $lang : Text
15+
var $localizedPersonaFolders; $defaultPersonaFolders; $dataPersonas; $files : Collection
16+
var $persona : Object
17+
var $i : Integer
18+
var $validated : Boolean
19+
20+
$lang:=Get database localization:C1009(Current localization:K5:22; *)
21+
$personas:=[]
22+
23+
$localizedPersonaFolders:=[]
24+
$defaultPersonaFolders:=[]
25+
26+
$localizedPersonaFolders.push(Folder:C1567("/RESOURCES/4DWP_AI/Personas/"+$lang)) // default
27+
$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))
29+
30+
$defaultPersonaFolders.push(Folder:C1567("/RESOURCES/4DWP_AI/Personas/en/"))
31+
$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))
33+
34+
// local personas
35+
For ($i; 0; $localizedPersonaFolders.length-1)
36+
$folder:=$localizedPersonaFolders[$i]
37+
If ($folder.exists=False:C215)
38+
$folder:=$defaultPersonaFolders[$i]
39+
End if
40+
If ($folder.exists=True:C214)
41+
42+
$files:=$folder.files(fk ignore invisible:K87:22)
43+
For each ($file; $files)
44+
//$validated:=This.JSONvalidate("persona"; $file.getText())
45+
$validated:=True:C214
46+
If ($validated)
47+
$persona:=JSON Parse:C1218($file.getText())
48+
$persona._fileName:=$file.fullName
49+
$persona._origin:=Choose:C955($i; "Default"; "Resources"; "Single User")
50+
$persona._originIcon:=This:C1470._originIcons[$i]
51+
$personas.push($persona)
52+
End if
53+
End for each
54+
55+
End if
56+
End for
57+
58+
// data (server) personas
59+
$dataPersonas:=AI_GetPersonas($lang) // executed on server
60+
For each ($persona; $dataPersonas)
61+
$persona._origin:="All Users"
62+
$persona._originIcon:=This:C1470._originIcons[3]
63+
End for each
64+
$personas.combine($dataPersonas)
65+
66+
67+
Function getIcons()->$icons : Collection
68+
69+
var $fileNames : Collection
70+
var $fileName; $filePath : Text
71+
var $picture : Picture
72+
73+
$icons:=[]
74+
$fileNames:=["locker.png"; "database.png"; "single.png"; "multi.png"]
75+
For each ($fileName; $fileNames)
76+
$filePath:=File:C1566("/RESOURCES/Images/AI/"+$FileName).platformPath
77+
READ PICTURE FILE:C678($filePath; $picture)
78+
$icons.push($picture)
79+
End for each
80+
81+
Function getPersona($id : Integer)->$persona : Object
82+
83+
If ($id<=This:C1470.personas.length)
84+
$persona:=This:C1470.personas[$id]
85+
End if
86+
87+
88+
89+
Function save($persona : Object)
90+
91+
var $folder : 4D:C1709.Folder
92+
var $file : 4D:C1709.File
93+
var $lang; $json : Text
94+
95+
$lang:=Get database localization:C1009(Current localization:K5:22; *)
96+
97+
Case of
98+
: ($persona._origin="default") // must be saved in the 4DWP resources folder
99+
100+
$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
104+
105+
: ($persona._origin="resources") // must be saved in the host database resources
106+
107+
$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+
112+
113+
: ($persona._origin="user") // must be saved in the user's folder
114+
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
119+
120+
: ($persona._origin="data") // must be saved in the data folder
121+
122+
End case
123+
124+
125+
If ($folder#Null:C1517)
126+
127+
$file:=File:C1566($folder.path+$persona.name+".json"; fk posix path:K87:1)
128+
OB REMOVE:C1226($persona; "_origin")
129+
OB REMOVE:C1226($persona; "_originIcon")
130+
131+
$json:=JSON Stringify:C1217($persona; *)
132+
$file.setText($json)
133+
134+
Else // data folder case
135+
136+
AI_SavePersona($persona; $lang)
137+
138+
End if
139+
140+
141+
142+
Function delete($persona : Object)
143+
144+
var $folder : 4D:C1709.Folder
145+
var $file : 4D:C1709.File
146+
var $lang; $json : Text
147+
148+
$lang:=Get database localization:C1009(Current localization:K5:22; *)
149+
150+
Case of
151+
: ($persona._origin="default") // must be saved in the 4DWP resources folder
152+
153+
$folder:=Folder:C1567("/RESOURCES/4DWP_AI/Personas/"+$lang)
154+
If ($folder.exists=False:C215)
155+
$folder:=Folder:C1567("/RESOURCES/4DWP_AI/Personas/en/")
156+
End if
157+
158+
: ($persona._origin="resources") // must be saved in the host database resources
159+
160+
$folder:=Folder:C1567("/RESOURCES/4DWP_AI/Personas/"+$lang; *)
161+
If ($folder.exists=False:C215)
162+
$folder:=Folder:C1567("/RESOURCES/4DWP_AI/Personas/en/"; *)
163+
End if
164+
165+
166+
: ($persona._origin="user") // must be saved in the user's folder
167+
168+
$folder:=Folder:C1567(Folder:C1567(fk user preferences folder:K87:10).path+"4DWP_AI/Personas/"+$lang; fk posix path:K87:1)
169+
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+
End if
172+
173+
: ($persona._origin="data") // must be saved in the data folder
174+
175+
End case
176+
177+
178+
If ($folder#Null:C1517)
179+
180+
$file:=File:C1566($folder.path+$persona.name+".json"; fk posix path:K87:1)
181+
182+
If ($file.exists)
183+
$file.delete()
184+
End if
185+
186+
Else // data folder case
187+
188+
AI_SavePersona($persona; $lang)
189+
190+
End if
191+
192+
193+
194+
Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
2+
3+
var $col1; $col2 : Collection
4+
5+
$col1:=Form:C1466.ai.personas.copy()
6+
$col2:=$col1.extract("name")
7+
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
SET TIMER:C645(-1)
Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
Form:C1466.persona._origin:=Form:C1466.saveDestination.values[Form:C1466.saveDestination.index]
2+
SET TIMER:C645(-1)
Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
CONFIRM:C162(".Are you sure?.")
2+
If (ok=1)
3+
Form:C1466.ai.delete(Form:C1466.persona)
4+
5+
Form:C1466.ai:=cs:C1710.AiWizard.new()
6+
LISTBOX SELECT ROW:C912(*; "LB_Personas"; 1; lk replace selection:K53:1)
7+
8+
Form:C1466.personasDD:={values: Form:C1466.ai.personas.extract("name"); index: 0}
9+
SET TIMER:C645(-1)
10+
11+
End if
Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
Form:C1466.ai.save(Form:C1466.persona)
2+
3+
Form:C1466.ai:=cs:C1710.AiWizard.new()
4+
LISTBOX SELECT ROW:C912(*; "LB_Personas"; 1; lk replace selection:K53:1)
5+
6+
Form:C1466.personasDD:={values: Form:C1466.ai.personas.extract("name"); index: 0}
7+
8+
SET TIMER:C645(-1)

0 commit comments

Comments
 (0)