Skip to content

Commit 19ae4e1

Browse files
committed
[SCAL-299968] SDK changes for Send Now
1 parent e1e0318 commit 19ae4e1

6 files changed

Lines changed: 2570 additions & 2249 deletions

File tree

src/embed/app.spec.ts

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -653,6 +653,34 @@ describe('App embed tests', () => {
653653
});
654654
});
655655

656+
test('should set isSendNowLiveboardSchedulingEnabled to true in url', async () => {
657+
const appEmbed = new AppEmbed(getRootEl(), {
658+
...defaultViewConfig,
659+
isSendNowLiveboardSchedulingEnabled: true,
660+
} as AppViewConfig);
661+
appEmbed.render();
662+
await executeAfterWait(() => {
663+
expectUrlMatchesWithParams(
664+
getIFrameSrc(),
665+
`http://${thoughtSpotHost}/?embedApp=true&profileAndHelpInNavBarHidden=false&isSendNowLiveboardSchedulingEnabled=true${defaultParamsPost}#/home`,
666+
);
667+
});
668+
});
669+
670+
test('should set isSendNowLiveboardSchedulingEnabled to false in url', async () => {
671+
const appEmbed = new AppEmbed(getRootEl(), {
672+
...defaultViewConfig,
673+
isSendNowLiveboardSchedulingEnabled: false,
674+
} as AppViewConfig);
675+
appEmbed.render();
676+
await executeAfterWait(() => {
677+
expectUrlMatchesWithParams(
678+
getIFrameSrc(),
679+
`http://${thoughtSpotHost}/?embedApp=true&profileAndHelpInNavBarHidden=false&isSendNowLiveboardSchedulingEnabled=false${defaultParamsPost}#/home`,
680+
);
681+
});
682+
});
683+
656684
test('should set isCentralizedLiveboardFilterUXEnabled to true in url', async () => {
657685
const appEmbed = new AppEmbed(getRootEl(), {
658686
...defaultViewConfig,

src/embed/app.ts

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -640,6 +640,25 @@ export interface AppViewConfig extends AllEmbedViewConfig {
640640
*/
641641
isGranularXLSXCSVSchedulesEnabled?: boolean;
642642

643+
/**
644+
* This flag is used to enable/disable the Send Now feature for
645+
* Liveboard scheduling, which allows sending a test schedule email.
646+
*
647+
* Supported embed types: `AppEmbed`, `LiveboardEmbed`
648+
* @type {boolean}
649+
* @version SDK: 1.48.0 | ThoughtSpot Cloud: 26.6.0.cl
650+
* @default false
651+
* @example
652+
* ```js
653+
* // Replace <EmbedComponent> with embed component name. For example, AppEmbed or LiveboardEmbed
654+
* const embed = new <EmbedComponent>('#tsEmbed', {
655+
* ... // other embed view config
656+
* isSendNowLiveboardSchedulingEnabled: true,
657+
* })
658+
* ```
659+
*/
660+
isSendNowLiveboardSchedulingEnabled?: boolean;
661+
643662
/**
644663
* This flag is used to enable the full height lazy load data.
645664
*
@@ -850,6 +869,7 @@ export class AppEmbed extends V1Embed {
850869
isPNGInScheduledEmailsEnabled = false,
851870
isLiveboardXLSXCSVDownloadEnabled = false,
852871
isGranularXLSXCSVSchedulesEnabled = false,
872+
isSendNowLiveboardSchedulingEnabled,
853873
isCentralizedLiveboardFilterUXEnabled = false,
854874
isLinkParametersEnabled,
855875
updatedSpotterChatPrompt,
@@ -1015,6 +1035,10 @@ export class AppEmbed extends V1Embed {
10151035
params[Param.isGranularXLSXCSVSchedulesEnabled] = isGranularXLSXCSVSchedulesEnabled;
10161036
}
10171037

1038+
if (isSendNowLiveboardSchedulingEnabled !== undefined) {
1039+
params[Param.isSendNowLiveboardSchedulingEnabled] = isSendNowLiveboardSchedulingEnabled;
1040+
}
1041+
10181042
if (hideTagFilterChips !== undefined) {
10191043
params[Param.HideTagFilterChips] = hideTagFilterChips;
10201044
}

src/embed/liveboard.spec.ts

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

338+
test('should set isSendNowLiveboardSchedulingEnabled to true in url', async () => {
339+
const liveboardEmbed = new LiveboardEmbed(getRootEl(), {
340+
isSendNowLiveboardSchedulingEnabled: true,
341+
...defaultViewConfig,
342+
liveboardId,
343+
} as LiveboardViewConfig);
344+
liveboardEmbed.render();
345+
await executeAfterWait(() => {
346+
expectUrlMatchesWithParams(
347+
getIFrameSrc(),
348+
`http://${thoughtSpotHost}/?embedApp=true${defaultParams}&isSendNowLiveboardSchedulingEnabled=true${prefixParams}#/embed/viz/${liveboardId}`,
349+
);
350+
});
351+
});
352+
353+
test('should set isSendNowLiveboardSchedulingEnabled to false in url', async () => {
354+
const liveboardEmbed = new LiveboardEmbed(getRootEl(), {
355+
isSendNowLiveboardSchedulingEnabled: false,
356+
...defaultViewConfig,
357+
liveboardId,
358+
} as LiveboardViewConfig);
359+
liveboardEmbed.render();
360+
await executeAfterWait(() => {
361+
expectUrlMatchesWithParams(
362+
getIFrameSrc(),
363+
`http://${thoughtSpotHost}/?embedApp=true${defaultParams}&isSendNowLiveboardSchedulingEnabled=false${prefixParams}#/embed/viz/${liveboardId}`,
364+
);
365+
});
366+
});
367+
338368
test('should set isLinkParametersEnabled to true in url', async () => {
339369
const liveboardEmbed = new LiveboardEmbed(getRootEl(), {
340370
isLinkParametersEnabled: true,

src/embed/liveboard.ts

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -437,6 +437,23 @@ export interface LiveboardViewConfig extends BaseViewConfig, LiveboardOtherViewC
437437
* ```
438438
*/
439439
isGranularXLSXCSVSchedulesEnabled?: boolean;
440+
/**
441+
* This flag is used to enable/disable the Send Now feature for
442+
* Liveboard scheduling, which allows sending a test schedule email.
443+
*
444+
* Supported embed types: `AppEmbed`, `LiveboardEmbed`
445+
* @type {boolean}
446+
* @version SDK: 1.48.0 | ThoughtSpot Cloud: 26.5.0.cl
447+
* @default false
448+
* @example
449+
* ```js
450+
* const embed = new LiveboardEmbed('#tsEmbed', {
451+
* ... // other embed view config
452+
* isSendNowLiveboardSchedulingEnabled: true,
453+
* })
454+
* ```
455+
*/
456+
isSendNowLiveboardSchedulingEnabled?: boolean;
440457
/**
441458
* This flag is used to enable the full height lazy load data.
442459
*
@@ -610,6 +627,7 @@ export class LiveboardEmbed extends V1Embed {
610627
isPNGInScheduledEmailsEnabled = false,
611628
isLiveboardXLSXCSVDownloadEnabled = false,
612629
isGranularXLSXCSVSchedulesEnabled = false,
630+
isSendNowLiveboardSchedulingEnabled,
613631
showSpotterLimitations,
614632
isCentralizedLiveboardFilterUXEnabled = false,
615633
isLinkParametersEnabled,
@@ -698,6 +716,10 @@ export class LiveboardEmbed extends V1Embed {
698716
params[Param.isGranularXLSXCSVSchedulesEnabled] = isGranularXLSXCSVSchedulesEnabled;
699717
}
700718

719+
if (isSendNowLiveboardSchedulingEnabled !== undefined) {
720+
params[Param.isSendNowLiveboardSchedulingEnabled] = isSendNowLiveboardSchedulingEnabled;
721+
}
722+
701723
if (showSpotterLimitations !== undefined) {
702724
params[Param.ShowSpotterLimitations] = showSpotterLimitations;
703725
}

src/types.ts

Lines changed: 50 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3654,6 +3654,20 @@ export enum EmbedEvent {
36543654
* @version SDK: 1.45.2 | ThoughtSpot: 26.3.0.cl
36553655
*/
36563656
RefreshAuthToken = 'RefreshAuthToken',
3657+
/**
3658+
* Emitted when a user clicks the **Send Test Email** button in the
3659+
* Liveboard schedule modal. Requires `isSendNowLiveboardSchedulingEnabled`
3660+
* to be enabled.
3661+
* @example
3662+
* ```js
3663+
* liveboardEmbed.on(EmbedEvent.SendTestScheduleEmail, (payload) => {
3664+
* console.log('Send test email', payload);
3665+
* // payload: { liveboardId: string, sendToSelf: boolean }
3666+
* })
3667+
* ```
3668+
* @version SDK: 1.48.0 | ThoughtSpot Cloud: 26.5.0.cl
3669+
*/
3670+
SendTestScheduleEmail = 'sendTestScheduleEmail',
36573671
}
36583672

36593673
/**
@@ -5369,7 +5383,8 @@ export enum HostEvent {
53695383
* ```js
53705384
* // Get parameters from liveboard context
53715385
* import { ContextType } from '@thoughtspot/visual-embed-sdk';
5372-
* liveboardEmbed.trigger(HostEvent.GetParameters, {}, ContextType.Liveboard).then((parameters) => {
5386+
* liveboardEmbed.trigger(HostEvent.GetParameters, {},
5387+
* ContextType.Liveboard).then((parameters) => {
53735388
* console.log('parameters', parameters);
53745389
* });
53755390
* ```
@@ -5715,14 +5730,34 @@ export enum HostEvent {
57155730
/**
57165731
* @hidden
57175732
* Get the current context of the embedded page.
5718-
*
5733+
*
57195734
* @example
57205735
* ```js
57215736
* const context = await liveboardEmbed.trigger(HostEvent.GetPageContext);
57225737
* ```
57235738
* @version SDK: 1.45.0 | ThoughtSpot: 26.2.0.cl
57245739
*/
57255740
GetPageContext = 'GetPageContext',
5741+
/**
5742+
* Trigger the **Send Test Email** action in the Liveboard schedule modal.
5743+
* Sends a test schedule email to self or all recipients.
5744+
* Requires `isSendNowLiveboardSchedulingEnabled` to be enabled.
5745+
* @example
5746+
* ```js
5747+
* liveboardEmbed.trigger(HostEvent.SendTestScheduleEmail, {
5748+
* sendToSelf: true,
5749+
* })
5750+
* ```
5751+
* @example
5752+
* ```js
5753+
* // Send to all recipients
5754+
* liveboardEmbed.trigger(HostEvent.SendTestScheduleEmail, {
5755+
* sendToSelf: false,
5756+
* })
5757+
* ```
5758+
* @version SDK: 1.48.0 | ThoughtSpot Cloud: 26.5.0.cl
5759+
*/
5760+
SendTestScheduleEmail = 'sendTestScheduleEmail',
57265761
}
57275762

57285763
/**
@@ -5880,6 +5915,7 @@ export enum Param {
58805915
IsWYSIWYGLiveboardPDFEnabled = 'isWYSIWYGLiveboardPDFEnabled',
58815916
isLiveboardXLSXCSVDownloadEnabled = 'isLiveboardXLSXCSVDownloadEnabled',
58825917
isGranularXLSXCSVSchedulesEnabled = 'isGranularXLSXCSVSchedulesEnabled',
5918+
isSendNowLiveboardSchedulingEnabled = 'isSendNowLiveboardSchedulingEnabled',
58835919
isCentralizedLiveboardFilterUXEnabled = 'isCentralizedLiveboardFilterUXEnabled',
58845920
isLinkParametersEnabled = 'isLinkParametersEnabled',
58855921
EnablePastConversationsSidebar = 'enablePastConversationsSidebar',
@@ -7514,6 +7550,18 @@ export enum Action {
75147550
* @version SDK: 1.45.0 | ThoughtSpot: 26.4.0.cl
75157551
*/
75167552
IncludeCurrentPeriod = 'includeCurrentPeriod',
7553+
/**
7554+
* The **Send Test Email** button in the Liveboard schedule modal.
7555+
* Allows sending a test schedule email to self or all recipients.
7556+
* Requires `isSendNowLiveboardSchedulingEnabled` to be enabled.
7557+
* @example
7558+
* ```js
7559+
* disabledActions: [Action.SendTestScheduleEmail]
7560+
* hiddenActions: [Action.SendTestScheduleEmail]
7561+
* ```
7562+
* @version SDK: 1.48.0 | ThoughtSpot Cloud: 26.5.0.cl
7563+
*/
7564+
SendTestScheduleEmail = 'sendTestScheduleEmail',
75177565
}
75187566
export interface AnswerServiceType {
75197567
getAnswer?: (offset: number, batchSize: number) => any;

0 commit comments

Comments
 (0)