Skip to content

Commit 473a37e

Browse files
committed
add group import/export support
1 parent 996c630 commit 473a37e

14 files changed

+531
-180
lines changed

api/db.go

+1
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@ import (
77
)
88

99
type TypeDbLink = db.TypeLink
10+
type TypeDbGroup = db.TypeGroup
1011
type TypeDbModule = db.TypeModule
1112
type TypeDbSession = db.TypeSession
1213

api/plugins.go

+39-2
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,7 @@ var Plugins = TypePlugins{
3131
}
3232
return eja
3333
},
34-
"ejaImport": func(eja TypeApi, db TypeDbSession) TypeApi {
34+
"ejaModuleImport": func(eja TypeApi, db TypeDbSession) TypeApi {
3535
if eja.Action == "run" {
3636
moduleName := eja.Values["moduleName"]
3737
moduleData := eja.Values["import"]
@@ -61,7 +61,7 @@ var Plugins = TypePlugins{
6161
}
6262
return eja
6363
},
64-
"ejaExport": func(eja TypeApi, db TypeDbSession) TypeApi {
64+
"ejaModuleExport": func(eja TypeApi, db TypeDbSession) TypeApi {
6565
if eja.Action == "run" {
6666
moduleId := db.Number(eja.Values["ejaModuleId"])
6767
dataExport := db.Number(eja.Values["dataExport"]) > 0
@@ -77,4 +77,41 @@ var Plugins = TypePlugins{
7777
}
7878
return eja
7979
},
80+
"ejaGroupImport": func(eja TypeApi, db TypeDbSession) TypeApi {
81+
if eja.Action == "run" {
82+
groupName := eja.Values["groupName"]
83+
groupData := eja.Values["import"]
84+
if groupData != "" {
85+
var group TypeDbGroup
86+
if err := json.Unmarshal([]byte(groupData), &group); err != nil {
87+
alert(&eja.Alert, db.Translate("ejaImportJsonError", eja.Owner))
88+
} else {
89+
var err error
90+
err = db.GroupImport(group, groupName)
91+
if err != nil {
92+
alert(&eja.Alert, db.Translate("ejaImportError", eja.Owner))
93+
} else {
94+
eja.Values["import"] = ""
95+
info(&eja.Info, db.Translate("ejaImportOk", eja.Owner))
96+
}
97+
}
98+
}
99+
}
100+
return eja
101+
},
102+
"ejaGroupExport": func(eja TypeApi, db TypeDbSession) TypeApi {
103+
if eja.Action == "run" {
104+
groupId := db.Number(eja.Values["ejaGroupId"])
105+
if groupId > 0 {
106+
if data, err := db.GroupExport(groupId); err != nil {
107+
alert(&eja.Alert, db.Translate("ejaExportError", eja.Owner))
108+
} else {
109+
jsonData, _ := json.MarshalIndent(data, "", " ")
110+
eja.Values["export"] = string(jsonData)
111+
info(&eja.Info, db.Translate("ejaExportOk", eja.Owner))
112+
}
113+
}
114+
}
115+
return eja
116+
},
80117
}

db/assets/ejaExport.json

+3-77
Original file line numberDiff line numberDiff line change
@@ -3,91 +3,17 @@
33
"parentName": "ejaSystem",
44
"power": 11,
55
"searchLimit": 0,
6-
"sqlCreated": 1
6+
"sqlCreated": 0
77
},
88
"command": [
9-
"logout",
10-
"run"
11-
],
12-
"field": [
13-
{
14-
"value": "SELECT ejaId,name FROM ejaModules ORDER BY name;",
15-
"powerEdit": 0,
16-
"powerList": 0,
17-
"type": "sqlMatrix",
18-
"translate": 0,
19-
"powerSearch": 1,
20-
"name": "ejaModuleId",
21-
"sizeSearch": 0,
22-
"sizeList": 0,
23-
"sizeEdit": 0
24-
},
25-
{
26-
"value": "",
27-
"powerEdit": 0,
28-
"powerList": 0,
29-
"type": "boolean",
30-
"translate": 0,
31-
"powerSearch": 2,
32-
"name": "dataExport",
33-
"sizeSearch": 0,
34-
"sizeList": 0,
35-
"sizeEdit": 0
36-
},
37-
{
38-
"value": "",
39-
"powerEdit": 0,
40-
"powerList": 0,
41-
"type": "textArea",
42-
"translate": 0,
43-
"powerSearch": 3,
44-
"name": "export",
45-
"sizeSearch": 10,
46-
"sizeList": 0,
47-
"sizeEdit": 0
48-
}
9+
"logout"
4910
],
11+
"field": null,
5012
"translation": [
5113
{
5214
"ejaLanguage": "en",
5315
"word": "ejaExport",
5416
"translation": "Export"
55-
},
56-
{
57-
"ejaLanguage": "en",
58-
"ejaModuleName": "ejaExport",
59-
"word": "ejaModuleId",
60-
"translation": "Module"
61-
},
62-
{
63-
"ejaLanguage": "en",
64-
"ejaModuleName": "ejaExport",
65-
"word": "export",
66-
"translation": "Export"
67-
},
68-
{
69-
"ejaLanguage": "en",
70-
"ejaModuleName": "ejaExport",
71-
"word": "dataExport",
72-
"translation": "Data"
73-
},
74-
{
75-
"ejaLanguage": "en",
76-
"ejaModuleName": "ejaExport",
77-
"word": "ejaExportError",
78-
"translation": "Cannot export this module"
79-
},
80-
{
81-
"ejaLanguage": "en",
82-
"ejaModuleName": "ejaExport",
83-
"word": "ejaExportOk",
84-
"translation": "Module exported"
85-
},
86-
{
87-
"ejaLanguage": "en",
88-
"ejaModuleName": "ejaExport",
89-
"word": "run",
90-
"translation": "Export"
9117
}
9218
],
9319
"name": "ejaExport",

db/assets/ejaGroupExport.json

+65
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,65 @@
1+
{
2+
"module": {
3+
"parentName": "ejaExport",
4+
"power": 20,
5+
"searchLimit": 0,
6+
"sqlCreated": 0
7+
},
8+
"command": [
9+
"logout",
10+
"run"
11+
],
12+
"field": [
13+
{
14+
"value": "",
15+
"powerEdit": 0,
16+
"powerList": 0,
17+
"type": "textArea",
18+
"translate": 0,
19+
"powerSearch": 3,
20+
"name": "export",
21+
"sizeSearch": 10,
22+
"sizeList": 0,
23+
"sizeEdit": 0
24+
},
25+
{
26+
"value": "SELECT ejaId,name FROM ejaGroups ORDER BY name;",
27+
"powerEdit": 0,
28+
"powerList": 0,
29+
"type": "sqlMatrix",
30+
"translate": 0,
31+
"powerSearch": 1,
32+
"name": "ejaGroupId",
33+
"sizeSearch": 0,
34+
"sizeList": 0,
35+
"sizeEdit": 0
36+
}
37+
],
38+
"translation": [
39+
{
40+
"ejaLanguage": "en",
41+
"ejaModuleName": "ejaGroupExport",
42+
"word": "ejaGroupId",
43+
"translation": "Group"
44+
},
45+
{
46+
"ejaLanguage": "en",
47+
"ejaModuleName": "ejaGroupExport",
48+
"word": "export",
49+
"translation": "Export"
50+
},
51+
{
52+
"ejaLanguage": "en",
53+
"ejaModuleName": "ejaGroupExport",
54+
"word": "run",
55+
"translation": "Export"
56+
},
57+
{
58+
"ejaLanguage": "en",
59+
"word": "ejaGroupExport",
60+
"translation": "Group"
61+
}
62+
],
63+
"name": "ejaGroupExport",
64+
"data": null
65+
}

db/assets/ejaGroupImport.json

+84
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,84 @@
1+
{
2+
"module": {
3+
"parentName": "ejaImport",
4+
"power": 20,
5+
"searchLimit": 0,
6+
"sqlCreated": 0
7+
},
8+
"command": [
9+
"logout",
10+
"run"
11+
],
12+
"field": [
13+
{
14+
"value": "",
15+
"powerEdit": 0,
16+
"powerList": 0,
17+
"type": "textArea",
18+
"translate": 0,
19+
"powerSearch": 3,
20+
"name": "import",
21+
"sizeSearch": 10,
22+
"sizeList": 0,
23+
"sizeEdit": 0
24+
},
25+
{
26+
"value": "",
27+
"powerEdit": 0,
28+
"powerList": 0,
29+
"type": "text",
30+
"translate": 0,
31+
"powerSearch": 1,
32+
"name": "groupName",
33+
"sizeSearch": 0,
34+
"sizeList": 0,
35+
"sizeEdit": 0
36+
}
37+
],
38+
"translation": [
39+
{
40+
"ejaLanguage": "en",
41+
"word": "ejaGroupImport",
42+
"translation": "Group"
43+
},
44+
{
45+
"ejaLanguage": "en",
46+
"ejaModuleName": "ejaGroupImport",
47+
"word": "groupName",
48+
"translation": "Name"
49+
},
50+
{
51+
"ejaLanguage": "en",
52+
"ejaModuleName": "ejaGroupImport",
53+
"word": "import",
54+
"translation": "Import"
55+
},
56+
{
57+
"ejaLanguage": "en",
58+
"ejaModuleName": "ejaGroupImport",
59+
"word": "ejaImportJsonError",
60+
"translation": "Json structure is not compatible"
61+
},
62+
{
63+
"ejaLanguage": "en",
64+
"ejaModuleName": "ejaGroupImport",
65+
"word": "ejaImportError",
66+
"translation": "Cannot import this group"
67+
},
68+
{
69+
"ejaLanguage": "en",
70+
"ejaModuleName": "ejaGroupImport",
71+
"word": "ejaImportOk",
72+
"translation": "Group imported"
73+
},
74+
75+
{
76+
"ejaLanguage": "en",
77+
"ejaModuleName": "ejaGroupImport",
78+
"word": "run",
79+
"translation": "Import"
80+
}
81+
],
82+
"name": "ejaGroupImport",
83+
"data": null
84+
}

0 commit comments

Comments
 (0)