@steedos/objectql 2.2.24 → 2.2.27

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.
@@ -13,8 +13,9 @@ const BASIC_TYPE_MAPPING = {
13
13
  'select': 'String',
14
14
  'url': 'String',
15
15
  'email': 'String',
16
- 'date': 'String',
17
- 'datetime': 'String',
16
+ 'date': 'Date',
17
+ 'datetime': 'Date',
18
+ 'time': 'Date',
18
19
  'number': 'Float',
19
20
  'currency': 'Float',
20
21
  'boolean': 'Boolean'
@@ -103,7 +104,7 @@ export function generateSettingsGraphql(objectConfig: SteedosObjectTypeConfig) {
103
104
  let refTo = field.reference_to;
104
105
  // 判断能否根据refTo找到对象,如果找到则说明对象已加载,否则return
105
106
  let objMetaData = getLocalService(refTo);
106
- if (!objMetaData || objMetaData.settings.deleted) {
107
+ if (refTo != objectName && (!objMetaData || objMetaData.settings.deleted)) {
107
108
  return;
108
109
  }
109
110
  if (field.multiple) {
@@ -538,6 +539,9 @@ async function translateToDisplay(objectName, doc, userSession: any) {
538
539
  let lookupLabel = "";
539
540
  let refTo = field.reference_to;
540
541
  let refValue = doc[name];
542
+ if (!refValue) {
543
+ continue;
544
+ }
541
545
  let refObj = steedosSchema.getObject(refTo);
542
546
  let nameFieldKey = await refObj.getNameFieldKey();
543
547
  if (field.multiple) {
@@ -562,6 +566,9 @@ async function translateToDisplay(objectName, doc, userSession: any) {
562
566
  let masterDetailLabel = "";
563
567
  let refTo = field.reference_to;
564
568
  let refValue = doc[name];
569
+ if (!refValue) {
570
+ continue;
571
+ }
565
572
  let refObj = steedosSchema.getObject(refTo);
566
573
  let nameFieldKey = await refObj.getNameFieldKey();
567
574
  if (field.multiple) {
@@ -18,6 +18,7 @@ import { sortBy, forEach } from 'lodash';
18
18
  import { ShareRules } from './shareRule';
19
19
  import { RestrictionRule } from './restrictionRule';
20
20
  import { FieldPermission } from './field_permission';
21
+ import { getPatternListeners } from '../dynamic-load';
21
22
 
22
23
  const clone = require('clone')
23
24
 
@@ -113,7 +114,7 @@ export interface SteedosObjectTypeConfig extends SteedosObjectProperties {
113
114
  permission_set?: Dictionary<SteedosObjectPermissionTypeConfig> //TODO remove ; 目前为了兼容现有object的定义保留
114
115
  }
115
116
 
116
- const _TRIGGERKEYS = ['beforeFind', 'beforeInsert', 'beforeUpdate', 'beforeDelete', 'afterFind', 'afterCount', 'afterFindOne', 'afterInsert', 'afterUpdate', 'afterDelete', 'beforeAggregate', 'afterAggregate']
117
+ export const _TRIGGERKEYS = ['beforeFind', 'beforeInsert', 'beforeUpdate', 'beforeDelete', 'afterFind', 'afterCount', 'afterFindOne', 'afterInsert', 'afterUpdate', 'afterDelete', 'beforeAggregate', 'afterAggregate']
117
118
 
118
119
  const properties = ['label', 'icon', 'enable_search', 'sidebar', 'is_enable', 'enable_files', 'enable_tasks', 'enable_notes', 'enable_events', 'enable_api', 'enable_share', 'enable_instances', 'enable_chatter', 'enable_audit', 'enable_web_forms', 'enable_inline_edit', 'enable_approvals', 'enable_trash', 'enable_space_global', 'enable_tree', 'parent_field', 'children_field', 'enable_enhanced_lookup', 'enable_workflow', 'is_view', 'hidden', 'description', 'custom', 'owner', 'methods', '_id', 'relatedList', 'fields_serial_number', "is_enable", "in_development", "version"]
119
120
 
@@ -361,16 +362,35 @@ export class SteedosObjectType extends SteedosObjectProperties {
361
362
 
362
363
  async runTriggers(when: string, context: SteedosTriggerContextConfig) {
363
364
  let triggers = this._triggersQueue[when]
364
- if (!triggers) {
365
- return;
366
- }
365
+ if (triggers) {
366
+ let triggerKeys = _.keys(triggers)
367
367
 
368
- let triggerKeys = _.keys(triggers)
368
+ for (let index = 0; index < triggerKeys.length; index++) {
369
+ let trigger = triggers[triggerKeys[index]];
370
+ await this.runTirgger(trigger, context)
371
+ }
372
+ }
369
373
 
370
- for (let index = 0; index < triggerKeys.length; index++) {
371
- let trigger = triggers[triggerKeys[index]];
372
- await this.runTirgger(trigger, context)
374
+ // 获取通配的trigger,如果有则生成SteedosTriggerType执行
375
+ let wildcardListeners = getPatternListeners(this.name);
376
+ if (wildcardListeners) {
377
+ for (const key in wildcardListeners) {
378
+ if (Object.prototype.hasOwnProperty.call(wildcardListeners, key)) {
379
+ const listener = wildcardListeners[key];
380
+ if (listener && listener[when]) {
381
+ let triggerConfig: SteedosTriggerTypeConfig = {
382
+ name: `${key}_${when}`,
383
+ on: 'server',
384
+ when: when,
385
+ todo: listener[when],
386
+ }
387
+ let trigger = new SteedosTriggerType(triggerConfig)
388
+ await this.runTirgger(trigger, context)
389
+ }
390
+ }
391
+ }
373
392
  }
393
+
374
394
  }
375
395
 
376
396
  async runTriggerActions(when: string, context: SteedosTriggerContextConfig) {
@@ -1896,7 +1916,7 @@ export class SteedosObjectType extends SteedosObjectProperties {
1896
1916
  sharesFilter = getUserObjectSharesFilters(this.name, userSession);
1897
1917
 
1898
1918
  if (!_.isEmpty(companyFilter)) {
1899
- permissionFilters.push(`(${companyFilter.join(' and ')})`);
1919
+ permissionFilters.push(`(${companyFilter.join(' or ')})`);
1900
1920
  }
1901
1921
 
1902
1922
  if (ownerFilter) {
@@ -326,7 +326,7 @@ export const loadStandardBaseObjects = async (serviceName: string) => {
326
326
  let baseObjectJs = util.loadFile(path.join(standardObjectsDir, "base.object.js"))
327
327
  baseObjectJs.extend = MONGO_BASE_OBJECT;
328
328
  await addObjectConfig(baseObjectJs, SYSTEM_DATASOURCE, serviceName);
329
- const baseTriggers = ['base.trigger.js', 'base.autonumber.trigger.js','base.masterDetail.trigger.js','base.objectwebhooks.trigger.js','base.recordFieldAudit.trigger.js','base.recordRecentView.trigger.js','base.tree.trigger.js','base.calendar.trigger.js'];
329
+ const baseTriggers = ['base.trigger.js', 'base.autonumber.trigger.js','base.masterDetail.trigger.js','base.objectwebhooks.trigger.js','base.recordFieldAudit.trigger.js','base.recordRecentView.trigger.js','base.tree.trigger.js','base.calendar.trigger.js','base.defaultValue.trigger.js'];
330
330
  _.forEach(baseTriggers, function(triggerFileName){
331
331
  let baseObjectTrigger = util.loadFile(path.join(standardObjectsDir, triggerFileName))
332
332
  baseObjectTrigger.listenTo = MONGO_BASE_OBJECT
@@ -336,9 +336,13 @@ export const loadStandardBaseObjects = async (serviceName: string) => {
336
336
  let coreObject = util.loadFile(path.join(standardObjectsDir, "core.object.yml"))
337
337
  coreObject.name = SQL_BASE_OBJECT;
338
338
  await addObjectConfig(coreObject, SYSTEM_DATASOURCE, serviceName);
339
- let coreObjectTrigger = util.loadFile(path.join(standardObjectsDir, "core.objectwebhooks.trigger.js"))
340
- coreObjectTrigger.listenTo = SQL_BASE_OBJECT
341
- addObjectListenerConfig(coreObjectTrigger)
339
+
340
+ const coreTriggers = ['core.objectwebhooks.trigger.js','core.defaultValue.trigger.js'];
341
+ _.forEach(coreTriggers, function(triggerFileName){
342
+ let coreObjectTrigger = util.loadFile(path.join(standardObjectsDir, triggerFileName))
343
+ coreObjectTrigger.listenTo = SQL_BASE_OBJECT
344
+ addObjectListenerConfig(coreObjectTrigger)
345
+ })
342
346
 
343
347
  // addAllConfigFiles(path.join(standardObjectsDir, "**"), 'default');
344
348
  }