Skip to content

Commit 228eb5e

Browse files
committed
[SCAL-299968] SDK changes for Send Now
1 parent 8dfb695 commit 228eb5e

6 files changed

Lines changed: 3283 additions & 2361 deletions

File tree

src/embed/app.spec.ts

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -639,6 +639,34 @@ describe('App embed tests', () => {
639639
});
640640
});
641641

642+
test('should set isSendNowLiveboardSchedulingEnabled to true in url', async () => {
643+
const appEmbed = new AppEmbed(getRootEl(), {
644+
...defaultViewConfig,
645+
isSendNowLiveboardSchedulingEnabled: true,
646+
} as AppViewConfig);
647+
appEmbed.render();
648+
await executeAfterWait(() => {
649+
expectUrlMatchesWithParams(
650+
getIFrameSrc(),
651+
`http://${thoughtSpotHost}/?embedApp=true&profileAndHelpInNavBarHidden=false&isSendNowLiveboardSchedulingEnabled=true${defaultParamsPost}#/home`,
652+
);
653+
});
654+
});
655+
656+
test('should set isSendNowLiveboardSchedulingEnabled to false in url', async () => {
657+
const appEmbed = new AppEmbed(getRootEl(), {
658+
...defaultViewConfig,
659+
isSendNowLiveboardSchedulingEnabled: false,
660+
} as AppViewConfig);
661+
appEmbed.render();
662+
await executeAfterWait(() => {
663+
expectUrlMatchesWithParams(
664+
getIFrameSrc(),
665+
`http://${thoughtSpotHost}/?embedApp=true&profileAndHelpInNavBarHidden=false&isSendNowLiveboardSchedulingEnabled=false${defaultParamsPost}#/home`,
666+
);
667+
});
668+
});
669+
642670
test('should set isCentralizedLiveboardFilterUXEnabled to true in url', async () => {
643671
const appEmbed = new AppEmbed(getRootEl(), {
644672
...defaultViewConfig,

src/embed/app.ts

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -621,6 +621,25 @@ export interface AppViewConfig extends AllEmbedViewConfig {
621621
*/
622622
isGranularXLSXCSVSchedulesEnabled?: boolean;
623623

624+
/**
625+
* This flag is used to enable/disable the Send Now feature for
626+
* Liveboard scheduling, which allows sending a test schedule email.
627+
*
628+
* Supported embed types: `AppEmbed`, `LiveboardEmbed`
629+
* @type {boolean}
630+
* @version SDK: 1.47.0 | ThoughtSpot Cloud: 26.5.0.cl
631+
* @default false
632+
* @example
633+
* ```js
634+
* // Replace <EmbedComponent> with embed component name. For example, AppEmbed or LiveboardEmbed
635+
* const embed = new <EmbedComponent>('#tsEmbed', {
636+
* ... // other embed view config
637+
* isSendNowLiveboardSchedulingEnabled: true,
638+
* })
639+
* ```
640+
*/
641+
isSendNowLiveboardSchedulingEnabled?: boolean;
642+
624643
/**
625644
* This flag is used to enable the full height lazy load data.
626645
*
@@ -831,6 +850,7 @@ export class AppEmbed extends V1Embed {
831850
isPNGInScheduledEmailsEnabled = false,
832851
isLiveboardXLSXCSVDownloadEnabled = false,
833852
isGranularXLSXCSVSchedulesEnabled = false,
853+
isSendNowLiveboardSchedulingEnabled = false,
834854
isCentralizedLiveboardFilterUXEnabled = false,
835855
isLinkParametersEnabled,
836856
updatedSpotterChatPrompt,
@@ -995,6 +1015,10 @@ export class AppEmbed extends V1Embed {
9951015
params[Param.isGranularXLSXCSVSchedulesEnabled] = isGranularXLSXCSVSchedulesEnabled;
9961016
}
9971017

1018+
if (isSendNowLiveboardSchedulingEnabled !== undefined) {
1019+
params[Param.isSendNowLiveboardSchedulingEnabled] = isSendNowLiveboardSchedulingEnabled;
1020+
}
1021+
9981022
if (hideTagFilterChips !== undefined) {
9991023
params[Param.HideTagFilterChips] = hideTagFilterChips;
10001024
}

src/embed/liveboard.spec.ts

Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -320,6 +320,36 @@ describe('Liveboard/viz embed tests', () => {
320320
});
321321
});
322322

323+
test('should set isSendNowLiveboardSchedulingEnabled to true in url', async () => {
324+
const liveboardEmbed = new LiveboardEmbed(getRootEl(), {
325+
isSendNowLiveboardSchedulingEnabled: true,
326+
...defaultViewConfig,
327+
liveboardId,
328+
} as LiveboardViewConfig);
329+
liveboardEmbed.render();
330+
await executeAfterWait(() => {
331+
expectUrlMatchesWithParams(
332+
getIFrameSrc(),
333+
`http://${thoughtSpotHost}/?embedApp=true${defaultParams}&isSendNowLiveboardSchedulingEnabled=true${prefixParams}#/embed/viz/${liveboardId}`,
334+
);
335+
});
336+
});
337+
338+
test('should set isSendNowLiveboardSchedulingEnabled to false in url', async () => {
339+
const liveboardEmbed = new LiveboardEmbed(getRootEl(), {
340+
isSendNowLiveboardSchedulingEnabled: false,
341+
...defaultViewConfig,
342+
liveboardId,
343+
} as LiveboardViewConfig);
344+
liveboardEmbed.render();
345+
await executeAfterWait(() => {
346+
expectUrlMatchesWithParams(
347+
getIFrameSrc(),
348+
`http://${thoughtSpotHost}/?embedApp=true${defaultParams}&isSendNowLiveboardSchedulingEnabled=false${prefixParams}#/embed/viz/${liveboardId}`,
349+
);
350+
});
351+
});
352+
323353
test('should set isLinkParametersEnabled to true in url', async () => {
324354
const liveboardEmbed = new LiveboardEmbed(getRootEl(), {
325355
isLinkParametersEnabled: true,

src/embed/liveboard.ts

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -419,6 +419,23 @@ export interface LiveboardViewConfig extends BaseViewConfig, LiveboardOtherViewC
419419
* ```
420420
*/
421421
isGranularXLSXCSVSchedulesEnabled?: boolean;
422+
/**
423+
* This flag is used to enable/disable the Send Now feature for
424+
* Liveboard scheduling, which allows sending a test schedule email.
425+
*
426+
* Supported embed types: `AppEmbed`, `LiveboardEmbed`
427+
* @type {boolean}
428+
* @version SDK: 1.47.0 | ThoughtSpot Cloud: 26.5.0.cl
429+
* @default false
430+
* @example
431+
* ```js
432+
* const embed = new LiveboardEmbed('#tsEmbed', {
433+
* ... // other embed view config
434+
* isSendNowLiveboardSchedulingEnabled: true,
435+
* })
436+
* ```
437+
*/
438+
isSendNowLiveboardSchedulingEnabled?: boolean;
422439
/**
423440
* This flag is used to enable the full height lazy load data.
424441
*
@@ -592,6 +609,7 @@ export class LiveboardEmbed extends V1Embed {
592609
isPNGInScheduledEmailsEnabled = false,
593610
isLiveboardXLSXCSVDownloadEnabled = false,
594611
isGranularXLSXCSVSchedulesEnabled = false,
612+
isSendNowLiveboardSchedulingEnabled = false,
595613
showSpotterLimitations,
596614
isCentralizedLiveboardFilterUXEnabled = false,
597615
isLinkParametersEnabled,
@@ -679,6 +697,10 @@ export class LiveboardEmbed extends V1Embed {
679697
params[Param.isGranularXLSXCSVSchedulesEnabled] = isGranularXLSXCSVSchedulesEnabled;
680698
}
681699

700+
if (isSendNowLiveboardSchedulingEnabled !== undefined) {
701+
params[Param.isSendNowLiveboardSchedulingEnabled] = isSendNowLiveboardSchedulingEnabled;
702+
}
703+
682704
if (showSpotterLimitations !== undefined) {
683705
params[Param.ShowSpotterLimitations] = showSpotterLimitations;
684706
}

src/types.ts

Lines changed: 48 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3643,6 +3643,20 @@ export enum EmbedEvent {
36433643
* @version SDK: 1.45.2 | ThoughtSpot: 26.3.0.cl
36443644
*/
36453645
RefreshAuthToken = 'RefreshAuthToken',
3646+
/**
3647+
* Emitted when a user clicks the **Send Test Email** button in the
3648+
* Liveboard schedule modal. Requires `isSendNowLiveboardSchedulingEnabled`
3649+
* to be enabled.
3650+
* @example
3651+
* ```js
3652+
* liveboardEmbed.on(EmbedEvent.SendTestScheduleEmail, (payload) => {
3653+
* console.log('Send test email', payload);
3654+
* // payload: { liveboardId: string, sendToSelf: boolean }
3655+
* })
3656+
* ```
3657+
* @version SDK: 1.47.0 | ThoughtSpot Cloud: 26.5.0.cl
3658+
*/
3659+
SendTestScheduleEmail = 'sendTestScheduleEmail',
36463660
}
36473661

36483662
/**
@@ -5692,14 +5706,34 @@ export enum HostEvent {
56925706
/**
56935707
* @hidden
56945708
* Get the current context of the embedded page.
5695-
*
5709+
*
56965710
* @example
56975711
* ```js
56985712
* const context = await liveboardEmbed.trigger(HostEvent.GetPageContext);
56995713
* ```
57005714
* @version SDK: 1.45.0 | ThoughtSpot: 26.2.0.cl
57015715
*/
57025716
GetPageContext = 'GetPageContext',
5717+
/**
5718+
* Trigger the **Send Test Email** action in the Liveboard schedule modal.
5719+
* Sends a test schedule email to self or all recipients.
5720+
* Requires `isSendNowLiveboardSchedulingEnabled` to be enabled.
5721+
* @example
5722+
* ```js
5723+
* liveboardEmbed.trigger(HostEvent.SendTestScheduleEmail, {
5724+
* sendToSelf: true,
5725+
* })
5726+
* ```
5727+
* @example
5728+
* ```js
5729+
* // Send to all recipients
5730+
* liveboardEmbed.trigger(HostEvent.SendTestScheduleEmail, {
5731+
* sendToSelf: false,
5732+
* })
5733+
* ```
5734+
* @version SDK: 1.47.0 | ThoughtSpot Cloud: 26.5.0.cl
5735+
*/
5736+
SendTestScheduleEmail = 'sendTestScheduleEmail',
57035737
}
57045738

57055739
/**
@@ -5856,6 +5890,7 @@ export enum Param {
58565890
isPNGInScheduledEmailsEnabled = 'isPNGInScheduledEmailsEnabled',
58575891
isLiveboardXLSXCSVDownloadEnabled = 'isLiveboardXLSXCSVDownloadEnabled',
58585892
isGranularXLSXCSVSchedulesEnabled = 'isGranularXLSXCSVSchedulesEnabled',
5893+
isSendNowLiveboardSchedulingEnabled = 'isSendNowLiveboardSchedulingEnabled',
58595894
isCentralizedLiveboardFilterUXEnabled = 'isCentralizedLiveboardFilterUXEnabled',
58605895
isLinkParametersEnabled = 'isLinkParametersEnabled',
58615896
EnablePastConversationsSidebar = 'enablePastConversationsSidebar',
@@ -7480,6 +7515,18 @@ export enum Action {
74807515
* @version SDK: 1.45.0 | ThoughtSpot: 26.4.0.cl
74817516
*/
74827517
IncludeCurrentPeriod = 'includeCurrentPeriod',
7518+
/**
7519+
* The **Send Test Email** button in the Liveboard schedule modal.
7520+
* Allows sending a test schedule email to self or all recipients.
7521+
* Requires `isSendNowLiveboardSchedulingEnabled` to be enabled.
7522+
* @example
7523+
* ```js
7524+
* disabledActions: [Action.SendTestScheduleEmail]
7525+
* hiddenActions: [Action.SendTestScheduleEmail]
7526+
* ```
7527+
* @version SDK: 1.47.0 | ThoughtSpot Cloud: 26.5.0.cl
7528+
*/
7529+
SendTestScheduleEmail = 'sendTestScheduleEmail',
74837530
}
74847531
export interface AnswerServiceType {
74857532
getAnswer?: (offset: number, batchSize: number) => any;

0 commit comments

Comments
 (0)