@steedos/service-plugin-amis 2.3.0-beta.12 → 2.3.0-beta.15

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.
@@ -127,6 +127,26 @@ module.exports = {
127
127
 
128
128
  return { status: 0, data: { options } }
129
129
  },
130
+ },
131
+ getObjectsForGenerateTabsOptions: {
132
+ rest: {
133
+ method: "GET",
134
+ path: "/objects/generate_tabs_options"
135
+ },
136
+ async handler(ctx) {
137
+ const options = await this.getObjectsGenerateTabsOptions(ctx);
138
+ return { status: 0, data: { options } }
139
+ }
140
+ },
141
+ generateTabs: {
142
+ rest: {
143
+ method: "POST",
144
+ path: "/objects/generate/tabs"
145
+ },
146
+ async handler(ctx) {
147
+ const result = await this.generateTabs(ctx);
148
+ return { status: 0, data: result }
149
+ }
130
150
  }
131
151
  },
132
152
 
@@ -357,6 +377,123 @@ module.exports = {
357
377
  })
358
378
  return options;
359
379
  }
380
+ },
381
+ getObjectsGenerateTabsOptions: {
382
+ async handler(ctx) {
383
+ const userSession = ctx.meta.user;
384
+ const lng = userSession.language || 'zh-CN';
385
+ const spaceId = userSession.spaceId;
386
+ const objectTabs = await objectql.getObject('tabs').find({filters: [['type', '=', "object"]]});
387
+ const tabObjects = _.map(objectTabs, "object");
388
+ const allMetadataObjects = await objectql.getSteedosSchema().getAllObject();
389
+ const allObjects = _.map(clone(allMetadataObjects), 'metadata');
390
+ const query = {
391
+ filters: [['hidden', '!=', true], ['name', '<>', tabObjects]],
392
+ projection: {
393
+ name: 1,
394
+ label: 1
395
+ }
396
+ };
397
+ // 只列出未找到tabs记录的对象清单
398
+ const objects = objectql.getSteedosSchema().metadataDriver.find(allObjects, query, spaceId);
399
+
400
+ _.each(objects, (object)=>{
401
+ if(object && object.name){
402
+ steedosI18n.translationObject(lng, object.name, object)
403
+ }
404
+ })
405
+ return _.map(objects, (object)=>{
406
+ return {
407
+ value: object.name,
408
+ label: object.label || object.name
409
+ }
410
+ });
411
+ }
412
+ },
413
+ generateTabs: {
414
+ async handler(ctx) {
415
+ let selectedObjects = ctx.params && ctx.params.objects && ctx.params.objects.split(",");
416
+ if(!selectedObjects || !selectedObjects.length){
417
+ return {
418
+ doneCount:0,
419
+ errors: []
420
+ }
421
+ }
422
+ const userSession = ctx.meta.user;
423
+ const lng = userSession.language || 'zh-CN';
424
+ const spaceId = userSession.spaceId;
425
+ const userId = userSession.userId;
426
+ const companyId = userSession.company_id;
427
+ const companyIds = userSession.company_ids;
428
+ const allMetadataObjects = await objectql.getSteedosSchema().getAllObject();
429
+ const allObjects = _.map(clone(allMetadataObjects), 'metadata');
430
+ const query = {
431
+ filters: [['name', 'in', selectedObjects]], //['hidden', '!=', true] ,
432
+ projection: {
433
+ name: 1,
434
+ label: 1
435
+ }
436
+ };
437
+
438
+ const objects = objectql.getSteedosSchema().metadataDriver.find(allObjects, query, spaceId);
439
+
440
+ _.each(objects, (object) => {
441
+ if (object && object.name) {
442
+ steedosI18n.translationObject(lng, object.name, object)
443
+ }
444
+ })
445
+ const errors = [];
446
+ let doneCount = 0;
447
+ for(let i = 0;i < objects.length; i++) {
448
+ const object = objects[i];
449
+ try{
450
+ const existCount = await objectql.getObject('tabs').count({filters: [['object', '=', object.name]]});
451
+ if(existCount > 0){
452
+ return;
453
+ }
454
+ const tabLabel = object.label || object.name;
455
+ const tabName = "object_" + object.name.replace(/__c$/, "");
456
+ const now = new Date();
457
+ const doc = {
458
+ label: tabLabel,
459
+ name: tabName,
460
+ icon: object.icon,
461
+ type: "object",
462
+ mobile: true,
463
+ desktop: true,
464
+ object: object.name,
465
+ space: spaceId,
466
+ owner: userId,
467
+ created_by: userId,
468
+ created: now,
469
+ modified_by: userId,
470
+ modified: now,
471
+ company_id: companyId,
472
+ company_ids: companyIds
473
+ };
474
+ const tab = await objectql.getObject('tabs').insert(doc);
475
+ if(tab && tab._id){
476
+ doneCount++;
477
+ }
478
+ else{
479
+ errors.push({
480
+ object: (object.label || object.name) + `(${object.name})`,
481
+ message: ""
482
+ });
483
+ }
484
+ }
485
+ catch(ex){
486
+ errors.push({
487
+ object: (object.label || object.name) + `(${object.name})`,
488
+ message: ex.message
489
+ });
490
+ }
491
+ };
492
+ return {
493
+ doneCount:doneCount,
494
+ errors: errors
495
+ }
496
+ }
360
497
  }
361
498
  }
362
499
  };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@steedos/service-plugin-amis",
3
- "version": "2.3.0-beta.12",
3
+ "version": "2.3.0-beta.15",
4
4
  "main": "package.service.js",
5
5
  "scripts": {
6
6
  "build": "node .scripts/build.tailwind.js"
@@ -10,5 +10,5 @@
10
10
  "publishConfig": {
11
11
  "access": "public"
12
12
  },
13
- "gitHead": "7e3c85a4ef245bd1fc12b8076537537d46613bad"
13
+ "gitHead": "c3db84dc93be4194cf902d5db0f5522b6d18281b"
14
14
  }
@@ -52,7 +52,7 @@ body{
52
52
  min-width: 100px;
53
53
  }
54
54
 
55
- .steedos-amis-form .antd-Collapse .antd-Form--normal{
55
+ .steedos-amis-form .antd-Collapse .antd-Form--normal, .antd-Form--normal .antd-Tabs .antd-Tabs-content .antd-Tabs-pane .form-content{
56
56
  display: grid!important;
57
57
  grid-template-columns: repeat(2,minmax(0,1fr))!important;
58
58
  grid-row-gap: 1rem!important;