Skip to content

Commit 66e7013

Browse files
authored
feat: extension tile update filter (#1087)
1. extension sdk support for update filter 2. extension tile example update filter example
1 parent 4ff4493 commit 66e7013

File tree

4 files changed

+28
-11
lines changed

4 files changed

+28
-11
lines changed

packages/extension-sdk/src/connect/tile/tile_sdk.spec.ts

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -194,9 +194,10 @@ describe('TileSDK', () => {
194194
it('sends update filters message ', () => {
195195
const tileSdk = makeTileSdk()
196196
const filters = { hello: 'world' }
197-
tileSdk.updateFilters(filters)
197+
tileSdk.updateFilters(filters, true)
198198
expect(api.send).toBeCalledWith('TILE_UPDATE_FILTERS', {
199199
filters,
200+
runDashboard: true,
200201
})
201202
})
202203

packages/extension-sdk/src/connect/tile/tile_sdk.ts

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -127,10 +127,11 @@ export class TileSDKImpl implements TileSDK {
127127
}
128128
}
129129

130-
updateFilters(filters: Filters) {
130+
updateFilters(filters: Filters, runDashboard = false) {
131131
if (this.hostApi.isDashboardMountSupported) {
132132
this.hostApi.send(ExtensionRequestType.TILE_UPDATE_FILTERS, {
133133
filters,
134+
runDashboard,
134135
})
135136
} else {
136137
throw NOT_DASHBOARD_MOUNT_NOT_SUPPORTED_ERROR

packages/extension-sdk/src/connect/tile/types.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -189,6 +189,6 @@ export interface TileSDK {
189189
toggleCrossFilter: (options: CrossFilterOptions, event?: MouseEvent) => void
190190
runDashboard: () => void
191191
stopDashboard: () => void
192-
updateFilters: (filters: Filters) => void
192+
updateFilters: (filters: Filters, runDashboard?: boolean) => void
193193
openScheduleDialog: () => Promise<void>
194194
}

packages/extension-tile-playground/src/components/Inspector/components/EventTester/EventTester.tsx

Lines changed: 23 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -23,14 +23,16 @@
2323
SOFTWARE.
2424
2525
*/
26-
import React, { useCallback, useContext } from 'react'
26+
import React, { useCallback, useContext, useState } from 'react'
2727
import type { MouseEvent } from 'react'
2828
import {
29+
Space,
2930
Accordion2,
3031
Card,
3132
CardContent,
3233
Grid,
3334
ButtonOutline,
35+
FieldToggleSwitch,
3436
} from '@looker/components'
3537
import { ExtensionContext40 } from '@looker/extension-sdk-react'
3638

@@ -39,6 +41,7 @@ export const EventTester: React.FC = () => {
3941
tileSDK,
4042
tileHostData: { dashboardFilters },
4143
} = useContext(ExtensionContext40)
44+
const [runDashboard, setRunDashboard] = useState(false)
4245

4346
const addErrorsClick = useCallback(() => {
4447
tileSDK.addErrors(
@@ -113,12 +116,15 @@ export const EventTester: React.FC = () => {
113116
const updatedFilter = {}
114117
Object.entries(dashboardFilters || {}).forEach(([key, value]) => {
115118
updatedFilter[key] = value
116-
if (typeof value === 'string') {
117-
updatedFilter[key] = value.split('').reverse().join()
119+
if (key === 'State') {
120+
updatedFilter[key] =
121+
value === 'California' ? 'Washington' : 'California'
122+
} else if (typeof value === 'string') {
123+
updatedFilter[key] = value.split('').reverse().join('')
118124
}
119125
})
120-
tileSDK.updateFilters(updatedFilter)
121-
}, [tileSDK, dashboardFilters])
126+
tileSDK.updateFilters(updatedFilter, runDashboard)
127+
}, [tileSDK, dashboardFilters, runDashboard])
122128

123129
const openScheduleDialogClick = useCallback(() => {
124130
tileSDK.openScheduleDialog()
@@ -153,9 +159,18 @@ export const EventTester: React.FC = () => {
153159
<ButtonOutline onClick={stopDashboardClick} width="100%">
154160
Test stop dashboard
155161
</ButtonOutline>
156-
<ButtonOutline onClick={updateFiltersClick} width="100%">
157-
Test update filters
158-
</ButtonOutline>
162+
<Space width="100%">
163+
<ButtonOutline onClick={updateFiltersClick} width="50%">
164+
Test update filters
165+
</ButtonOutline>
166+
<FieldToggleSwitch
167+
label="Run dashboard"
168+
onChange={(event: React.ChangeEvent<HTMLInputElement>) =>
169+
setRunDashboard(event.target.checked)
170+
}
171+
on={runDashboard}
172+
></FieldToggleSwitch>
173+
</Space>
159174
<ButtonOutline onClick={openScheduleDialogClick} width="100%">
160175
Test open schedule dialog
161176
</ButtonOutline>

0 commit comments

Comments
 (0)