VTAP JavaScript API 的增强

我们很高兴地宣布对 VTAP JavaScript API 进行了重大改进,旨在增强使用 Vtiger CRM 的开发人员和合作伙伴的能力。

这些改进侧重于增强平台的灵活性和功能性,尤其是在事件模块和 RelatedRecords API 中。下面,我们概述了使您能够创建许多动态且响应迅速的 CRM 解决方案的关键更新。

增强功能 1:支持 RelatedRecords API 中的额外字段

我们扩展了 VTAP RelatedRecords API,以支持 附加字段 参数,使您能够检索除默认字段之外的其他字段。此增强功能在处理相关记录时提供了更大的灵活性,从而实现了更丰富的数据交互。

VTAP.Detail.相关记录

此 API 会获取给定模块的相关记录。默认情况下,它包括启用快速创建、标题等的字段。使用新的 附加字段 参数,您现在可以指定要包含在响应中的其他字段,从而更深入地了解相关数据。

示例用例: 假设您正在使用联系人模块,并希望检索包含以下字段的相关案例记录: 案例频道状态,这些字段不属于默认响应。现在,您可以轻松地在 API 请求中包含以下字段:


  

VTAP.Detail.RelatedRecords("Cases", { 'extrafields': ['casechannel', 'slastatus'] })

    .then((case_records) => {

        // Process the retrieved case records with extra fields

    });


  

VTAP.Detail.RelatedRecords("Cases", { 'extrafields': ['casechannel', 'slastatus'] })

    .then((case_records) => {

        // Process the retrieved case records with extra fields

    });

 

增强功能 2:RelatedRecords API 中的标签列支持

除了上述增强功能外,我们还在 VTAP RelatedRecords API 中添加了对标签列的支持。此改进允许您在 API 响应中包含记录名称(标签),从而更轻松地识别和使用相关记录。

VTAP.详细信息.记录

以前,RelatedRecords API 不支持包含记录名称的标签列。现在,通过使用 extrafields 参数,您可以在 API 调用中请求此标签。

示例用例:获取相关案例记录时,您可能希望包含记录的名称以便于识别。只需将标签作为附加字段传递即可:

 

增强功能 2:RelatedRecords API 中的标签列支持

除了上述增强功能外,我们还在 VTAP RelatedRecords API 中添加了对标签列的支持。此改进允许您在 API 响应中包含记录名称(标签),从而更轻松地识别和使用相关记录。

VTAP.详细信息.记录

以前,RelatedRecords API 不支持包含记录名称的标签列。现在,通过使用 extrafields 参数,您可以在 API 调用中请求此标签。

示例用例:获取相关案例记录时,您可能希望包含记录的名称以便于识别。只需将标签作为附加字段传递即可:


  

VTAP.Detail.RelatedRecords("Cases", { 'extrafields': ['label'] })

    .then((case_records) => {

        // The response now includes the label (name) of each case

    });


  

VTAP.Detail.RelatedRecords("Cases", { 'extrafields': ['label'] })

    .then((case_records) => {

        // The response now includes the label (name) of each case

    });

 

这些增强功能是我们持续承诺的一部分,旨在为您提供强大的工具,用于在 Vtiger CRM 平台上构建动态的企业级应用程序。我们鼓励您探索这些新功能并将其集成到您的项目中,以增强整体用户体验。

请继续关注更多更新,祝您编码愉快!

 

这些增强功能是我们持续承诺的一部分,旨在为您提供强大的工具,用于在 Vtiger CRM 平台上构建动态的企业级应用程序。我们鼓励您探索这些新功能并将其集成到您的项目中,以增强整体用户体验。

请继续关注更多更新,祝您编码愉快!

 
 
 

VTAP 客户用例

 
 

一位客户要求不要在事件模块中显示除呼叫和会议之外的自定义类型事件的受邀者块。它占用了屏幕空间,而对于用于内部事件的自定义类型事件则毫无用处。

事件模块中增强的事件处理

VTAP 事件 API 现在包括控制事件模块中受邀者块可见性的功能。此增强功能允许精确控制用户界面,以满足应用程序的特定需求。

  • VTAP.事件.注册:此功能允许您注册客户端事件,并在用户界面中发生这些事件时接收回调。支持的事件的完整列表可在此处查看。
  • VTAP.事件.触发器:此功能强制执行 Vtiger UI 提供的事件。我们在事件模块中引入了两个用于显示和隐藏受邀者块的新事件:
  • 活动演出邀请对象:触发​​受邀者块的显示。
  • 事件_隐藏_邀请对象:隐藏受邀者块。

您可以利用这些事件根据用户输入动态控制可见性。对于其他活动类型,您可以隐藏受邀者块以简化用户体验。

为事件模块创建一个名为“受邀者”的 VTAP 脚本,并复制以下函数以隐藏除会议和通话之外的活动类型的受邀者块:

 

一位客户要求不要在事件模块中显示除呼叫和会议之外的自定义类型事件的受邀者块。它占用了屏幕空间,而对于用于内部事件的自定义类型事件则毫无用处。

事件模块中增强的事件处理

VTAP 事件 API 现在包括控制事件模块中受邀者块可见性的功能。此增强功能允许精确控制用户界面,以满足应用程序的特定需求。

  • VTAP.事件.注册:此功能允许您注册客户端事件,并在用户界面中发生这些事件时接收回调。支持的事件的完整列表可在此处查看。
  • VTAP.事件.触发器:此功能强制执行 Vtiger UI 提供的事件。我们在事件模块中引入了两个用于显示和隐藏受邀者块的新事件:
  • 活动演出邀请对象:触发​​受邀者块的显示。
  • 事件_隐藏_邀请对象:隐藏受邀者块。

您可以利用这些事件根据用户输入动态控制可见性。对于其他活动类型,您可以隐藏受邀者块以简化用户体验。

为事件模块创建一个名为“受邀者”的 VTAP 脚本,并复制以下函数以隐藏除会议和通话之外的活动类型的受邀者块:


  

var Events_Component_Invitess = VTAP.Component.Core.extend({

    mounted() {

        VTAP.Event.Register("CREATE_MODAL_SHOWN", (data) => { this.observeEventsFormActivityType(data); });

        VTAP.Event.Register("EDIT_MODAL_SHOWN", (data) => { this.observeEventsFormActivityType(data); });

    },

    methods : {

        observeEventsFormActivityType(data) {

            if (data.module == "Events") {

                setTimeout(() => {

                    var element = jQuery('select[name="activitytype"]');

                    if (element.length) {

                        this.handleEventsFormActivityType(element.get(0).value);

                        element.on('change', () => { this.handleEventsFormActivityType(element.get(0).value); }); /* changes */

                    } else {

                        if(data && data.record) {

                            VTAP.Api.Get('records', {

                                'module': 'Events',

                                'id': data.record

                            }, (error, response) => {

                                this.handleEventsFormActivityType(response.activitytype);

                            });

                        }

                    }

                }, 500);

            }

        },

        handleEventsFormActivityType(activityType) {

            if (activityType == "Call" || activityType == "Meeting") {

                VTAP.Event.Trigger("EVENT_SHOW_INVITEES");

            } else {

                VTAP.Event.Trigger("EVENT_HIDE_INVITEES");

            }

        }

    }

});


  

var Events_Component_Invitess = VTAP.Component.Core.extend({

    mounted() {

        VTAP.Event.Register("CREATE_MODAL_SHOWN", (data) => { this.observeEventsFormActivityType(data); });

        VTAP.Event.Register("EDIT_MODAL_SHOWN", (data) => { this.observeEventsFormActivityType(data); });

    },

    methods : {

        observeEventsFormActivityType(data) {

            if (data.module == "Events") {

                setTimeout(() => {

                    var element = jQuery('select[name="activitytype"]');

                    if (element.length) {

                        this.handleEventsFormActivityType(element.get(0).value);

                        element.on('change', () => { this.handleEventsFormActivityType(element.get(0).value); }); /* changes */

                    } else {

                        if(data && data.record) {

                            VTAP.Api.Get('records', {

                                'module': 'Events',

                                'id': data.record

                            }, (error, response) => {

                                this.handleEventsFormActivityType(response.activitytype);

                            });

                        }

                    }

                }, 500);

            }

        },

        handleEventsFormActivityType(activityType) {

            if (activityType == "Call" || activityType == "Meeting") {

                VTAP.Event.Trigger("EVENT_SHOW_INVITEES");

            } else {

                VTAP.Event.Trigger("EVENT_HIDE_INVITEES");

            }

        }

    }

});

 
 

注册以接收最新更新!