Skip to content
GitLab
Explore
Sign in
Primary navigation
Search or go to…
Project
M
Metabase
Manage
Activity
Members
Labels
Plan
Issues
Issue boards
Milestones
Iterations
Wiki
Requirements
Code
Merge requests
Repository
Branches
Commits
Tags
Repository graph
Compare revisions
Snippets
Locked files
Build
Pipelines
Jobs
Pipeline schedules
Test cases
Artifacts
Deploy
Releases
Package registry
Container Registry
Model registry
Operate
Environments
Terraform modules
Monitor
Incidents
Service Desk
Analyze
Value stream analytics
Contributor analytics
CI/CD analytics
Repository analytics
Code review analytics
Issue analytics
Insights
Model experiments
Help
Help
Support
GitLab documentation
Compare GitLab plans
Community forum
Contribute to GitLab
Provide feedback
Terms and privacy
Keyboard shortcuts
?
Snippets
Groups
Projects
Show more breadcrumbs
Engineering Digital Service
Metabase
Commits
e708924a
Unverified
Commit
e708924a
authored
1 year ago
by
Oleg Gromov
Committed by
GitHub
1 year ago
Browse files
Options
Downloads
Patches
Plain Diff
Translate to typescript (#38809)
parent
d2856e4d
No related branches found
Branches containing commit
No related tags found
Tags containing commit
No related merge requests found
Changes
2
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
frontend/src/metabase/actions/components/ActionViz/ActionParameterMapping.tsx
+1
-1
1 addition, 1 deletion
...e/actions/components/ActionViz/ActionParameterMapping.tsx
frontend/src/metabase/dashboard/actions/parameters.ts
+134
-83
134 additions, 83 deletions
frontend/src/metabase/dashboard/actions/parameters.ts
with
135 additions
and
84 deletions
frontend/src/metabase/actions/components/ActionViz/ActionParameterMapping.tsx
+
1
−
1
View file @
e708924a
...
...
@@ -68,7 +68,7 @@ export const ActionParameterMappingForm = ({
setParameterMapping
(
dashboardParameterId
,
dashcard
.
id
,
undefined
,
// this is irrelevant for action parameters
-
1
,
// this is irrelevant for action parameters
target
,
),
);
...
...
This diff is collapsed.
Click to expand it.
frontend/src/metabase/dashboard/actions/parameters.
j
s
→
frontend/src/metabase/dashboard/actions/parameters.
t
s
+
134
−
83
View file @
e708924a
...
...
@@ -16,6 +16,21 @@ import { updateDashboard } from "metabase/dashboard/actions/save";
import
{
autoWireDashcardsWithMatchingParameters
}
from
"
metabase/dashboard/actions/auto-wire-parameters/actions
"
;
import
{
getParameterMappings
}
from
"
metabase/dashboard/actions/auto-wire-parameters/utils
"
;
import
{
closeAutoWireParameterToast
}
from
"
metabase/dashboard/actions/auto-wire-parameters/toasts
"
;
import
type
{
Dispatch
,
GetState
}
from
"
metabase-types/store
"
;
import
type
{
ActionDashboardCard
,
CardId
,
DashCardId
,
Parameter
,
ParameterId
,
ParameterMappingOptions
,
ParameterTarget
,
QuestionDashboardCard
,
ValuesQueryType
,
ValuesSourceConfig
,
ValuesSourceType
,
WritebackAction
,
}
from
"
metabase-types/api
"
;
import
{
isParameterValueEmpty
,
PULSE_PARAM_EMPTY
,
...
...
@@ -33,15 +48,24 @@ import {
import
{
trackAutoApplyFiltersDisabled
}
from
"
../analytics
"
;
import
{
isQuestionDashCard
}
from
"
../utils
"
;
import
{
setDashboardAttributes
,
setDashCardAttributes
}
from
"
./core
"
;
import
{
setSidebar
,
closeSidebar
}
from
"
./ui
"
;
function
updateParameter
(
dispatch
,
getState
,
id
,
parameterUpdater
)
{
type
SingleParamUpdater
=
(
p
:
Parameter
)
=>
Parameter
;
function
updateParameter
(
dispatch
:
Dispatch
,
getState
:
GetState
,
id
:
ParameterId
,
parameterUpdater
:
SingleParamUpdater
,
)
{
const
dashboard
=
getDashboard
(
getState
());
const
index
=
_
.
findIndex
(
dashboard
&&
dashboard
.
parameters
,
p
=>
p
.
id
===
id
,
);
if
(
!
dashboard
||
!
dashboard
.
parameters
)
{
return
;
}
const
index
=
_
.
findIndex
(
dashboard
.
parameters
,
p
=>
p
.
id
===
id
);
if
(
index
>=
0
)
{
const
parameters
=
assoc
(
dashboard
.
parameters
,
...
...
@@ -54,7 +78,13 @@ function updateParameter(dispatch, getState, id, parameterUpdater) {
}
}
function
updateParameters
(
dispatch
,
getState
,
parametersUpdater
)
{
type
MultipleParamUpdater
=
(
p
:
Parameter
[])
=>
Parameter
[];
function
updateParameters
(
dispatch
:
Dispatch
,
getState
:
GetState
,
parametersUpdater
:
MultipleParamUpdater
,
)
{
const
dashboard
=
getDashboard
(
getState
());
if
(
dashboard
)
{
const
parameters
=
parametersUpdater
(
dashboard
.
parameters
||
[]);
...
...
@@ -64,46 +94,51 @@ function updateParameters(dispatch, getState, parametersUpdater) {
}
}
export
const
setEditingParameter
=
parameterId
=>
dispatch
=>
{
if
(
parameterId
!=
null
)
{
dispatch
(
setSidebar
({
name
:
SIDEBAR_NAME
.
editParameter
,
props
:
{
parameterId
,
},
}),
);
}
else
{
dispatch
(
closeSidebar
());
}
};
export
const
setEditingParameter
=
(
parameterId
:
ParameterId
)
=>
(
dispatch
:
Dispatch
)
=>
{
if
(
parameterId
!=
null
)
{
dispatch
(
setSidebar
({
name
:
SIDEBAR_NAME
.
editParameter
,
props
:
{
parameterId
,
},
}),
);
}
else
{
dispatch
(
closeSidebar
());
}
};
export
const
ADD_PARAMETER
=
"
metabase/dashboard/ADD_PARAMETER
"
;
export
const
addParameter
=
createThunkAction
(
ADD_PARAMETER
,
parameterOption
=>
(
dispatch
,
getState
)
=>
{
let
parameter
;
(
option
:
ParameterMappingOptions
)
=>
(
dispatch
,
getState
)
=>
{
let
newId
:
undefined
|
ParameterId
=
undefined
;
updateParameters
(
dispatch
,
getState
,
parameters
=>
{
parameter
=
createParameter
(
parameterOption
,
parameters
);
return
parameters
.
concat
(
parameter
);
const
parameter
=
createParameter
(
option
,
parameters
);
newId
=
parameter
.
id
;
return
[...
parameters
,
parameter
];
});
dispatch
(
setSidebar
({
name
:
SIDEBAR_NAME
.
editParameter
,
props
:
{
parameterId
:
parameter
.
id
,
},
}),
);
if
(
newId
)
{
dispatch
(
setSidebar
({
name
:
SIDEBAR_NAME
.
editParameter
,
props
:
{
parameterId
:
newId
,
},
}),
);
}
},
);
export
const
REMOVE_PARAMETER
=
"
metabase/dashboard/REMOVE_PARAMETER
"
;
export
const
removeParameter
=
createThunkAction
(
REMOVE_PARAMETER
,
parameterId
=>
(
dispatch
,
getState
)
=>
{
(
parameterId
:
ParameterId
)
=>
(
dispatch
,
getState
)
=>
{
updateParameters
(
dispatch
,
getState
,
parameters
=>
parameters
.
filter
(
p
=>
p
.
id
!==
parameterId
),
);
...
...
@@ -115,16 +150,21 @@ export const SET_PARAMETER_MAPPING = "metabase/dashboard/SET_PARAMETER_MAPPING";
export
const
setParameterMapping
=
createThunkAction
(
SET_PARAMETER_MAPPING
,
(
parameter_id
,
dashcard_id
,
card_id
,
target
)
=>
{
(
parameterId
:
ParameterId
,
dashcardId
:
DashCardId
,
cardId
:
CardId
,
target
:
ParameterTarget
|
null
,
)
=>
{
return
(
dispatch
,
getState
)
=>
{
dispatch
(
closeAutoWireParameterToast
());
const
dashcard
=
getDashCardById
(
getState
(),
dashcard
_i
d
);
const
dashcard
=
getDashCardById
(
getState
(),
dashcard
I
d
);
if
(
target
!==
null
)
{
if
(
target
!==
null
&&
isQuestionDashCard
(
dashcard
)
)
{
dispatch
(
autoWireDashcardsWithMatchingParameters
(
parameter
_i
d
,
parameter
I
d
,
dashcard
,
target
,
),
...
...
@@ -133,12 +173,13 @@ export const setParameterMapping = createThunkAction(
dispatch
(
setDashCardAttributes
({
id
:
dashcard
_i
d
,
id
:
dashcard
I
d
,
attributes
:
{
parameter_mappings
:
getParameterMappings
(
dashcard
,
parameter_id
,
card_id
,
// TODO remove type casting when getParameterMappings is fixed
dashcard
as
QuestionDashboardCard
,
parameterId
,
cardId
,
target
,
),
},
...
...
@@ -152,7 +193,7 @@ export const SET_ACTION_FOR_DASHCARD =
"
metabase/dashboard/SET_ACTION_FOR_DASHCARD
"
;
export
const
setActionForDashcard
=
createThunkAction
(
SET_PARAMETER_MAPPING
,
(
dashcard
,
new
Action
)
=>
dispatch
=>
{
(
dashcard
:
ActionDashboardCard
,
newAction
:
Writeback
Action
)
=>
dispatch
=>
{
dispatch
(
setDashCardAttributes
({
id
:
dashcard
.
id
,
...
...
@@ -168,7 +209,7 @@ export const setActionForDashcard = createThunkAction(
export
const
SET_PARAMETER_NAME
=
"
metabase/dashboard/SET_PARAMETER_NAME
"
;
export
const
setParameterName
=
createThunkAction
(
SET_PARAMETER_NAME
,
(
parameterId
,
name
)
=>
(
dispatch
,
getState
)
=>
{
(
parameterId
:
ParameterId
,
name
:
string
)
=>
(
dispatch
,
getState
)
=>
{
updateParameter
(
dispatch
,
getState
,
parameterId
,
parameter
=>
setParamName
(
parameter
,
name
),
);
...
...
@@ -178,19 +219,20 @@ export const setParameterName = createThunkAction(
export
const
setParameterFilteringParameters
=
createThunkAction
(
SET_PARAMETER_NAME
,
(
parameterId
,
filteringParameters
)
=>
(
dispatch
,
getState
)
=>
{
updateParameter
(
dispatch
,
getState
,
parameterId
,
parameter
=>
({
...
parameter
,
filteringParameters
,
}));
return
{
id
:
parameterId
,
filteringParameters
};
},
(
parameterId
:
ParameterId
,
filteringParameters
:
ParameterId
[])
=>
(
dispatch
,
getState
)
=>
{
updateParameter
(
dispatch
,
getState
,
parameterId
,
parameter
=>
({
...
parameter
,
filteringParameters
,
}));
return
{
id
:
parameterId
,
filteringParameters
};
},
);
export
const
SET_PARAMETER_VALUE
=
"
metabase/dashboard/SET_PARAMETER_VALUE
"
;
export
const
setParameterValue
=
createThunkAction
(
SET_PARAMETER_VALUE
,
(
parameterId
,
value
)
=>
(
_dispatch
,
getState
)
=>
{
(
parameterId
:
ParameterId
,
value
:
any
)
=>
(
_dispatch
,
getState
)
=>
{
const
isSettingDraftParameterValues
=
!
getIsAutoApplyFilters
(
getState
());
return
{
...
...
@@ -219,7 +261,7 @@ export const SET_PARAMETER_DEFAULT_VALUE =
"
metabase/dashboard/SET_PARAMETER_DEFAULT_VALUE
"
;
export
const
setParameterDefaultValue
=
createThunkAction
(
SET_PARAMETER_DEFAULT_VALUE
,
(
parameterId
,
defaultValue
)
=>
(
dispatch
,
getState
)
=>
{
(
parameterId
:
ParameterId
,
defaultValue
:
any
)
=>
(
dispatch
,
getState
)
=>
{
updateParameter
(
dispatch
,
getState
,
parameterId
,
parameter
=>
({
...
parameter
,
default
:
defaultValue
,
...
...
@@ -232,7 +274,7 @@ export const SET_PARAMETER_VALUE_TO_DEFAULT =
"
metabase/dashboard/SET_PARAMETER_VALUE_TO_DEFAULT
"
;
export
const
setParameterValueToDefault
=
createThunkAction
(
SET_PARAMETER_VALUE_TO_DEFAULT
,
parameterId
=>
(
dispatch
,
getState
)
=>
{
(
parameterId
:
ParameterId
)
=>
(
dispatch
,
getState
)
=>
{
const
parameter
=
getParameters
(
getState
()).
find
(
({
id
})
=>
id
===
parameterId
,
);
...
...
@@ -247,15 +289,15 @@ export const SET_PARAMETER_REQUIRED =
"
metabase/dashboard/SET_PARAMETER_REQUIRED
"
;
export
const
setParameterRequired
=
createThunkAction
(
SET_PARAMETER_REQUIRED
,
(
parameterId
,
value
)
=>
(
dispatch
,
getState
)
=>
{
(
parameterId
:
ParameterId
,
required
:
boolean
)
=>
(
dispatch
,
getState
)
=>
{
const
parameter
=
getParameters
(
getState
()).
find
(
({
id
})
=>
id
===
parameterId
,
);
if
(
parameter
.
required
!==
value
)
{
if
(
parameter
&&
parameter
.
required
!==
required
)
{
updateParameter
(
dispatch
,
getState
,
parameterId
,
parameter
=>
({
...
parameter
,
required
:
value
,
required
,
}));
}
},
...
...
@@ -265,7 +307,7 @@ export const SET_PARAMETER_IS_MULTI_SELECT =
"
metabase/dashboard/SET_PARAMETER_DEFAULT_VALUE
"
;
export
const
setParameterIsMultiSelect
=
createThunkAction
(
SET_PARAMETER_IS_MULTI_SELECT
,
(
parameterId
,
isMultiSelect
)
=>
(
dispatch
,
getState
)
=>
{
(
parameterId
:
ParameterId
,
isMultiSelect
:
boolean
)
=>
(
dispatch
,
getState
)
=>
{
updateParameter
(
dispatch
,
getState
,
parameterId
,
parameter
=>
({
...
parameter
,
isMultiSelect
:
isMultiSelect
,
...
...
@@ -278,46 +320,54 @@ export const SET_PARAMETER_QUERY_TYPE =
"
metabase/dashboard/SET_PARAMETER_QUERY_TYPE
"
;
export
const
setParameterQueryType
=
createThunkAction
(
SET_PARAMETER_QUERY_TYPE
,
(
parameterId
,
queryType
)
=>
(
dispatch
,
getState
)
=>
{
updateParameter
(
dispatch
,
getState
,
parameterId
,
parameter
=>
({
...
parameter
,
values_query_type
:
queryType
,
}));
return
{
id
:
parameterId
,
queryType
};
},
(
parameterId
:
ParameterId
,
queryType
:
ValuesQueryType
)
=>
(
dispatch
,
getState
)
=>
{
updateParameter
(
dispatch
,
getState
,
parameterId
,
parameter
=>
({
...
parameter
,
values_query_type
:
queryType
,
}));
return
{
id
:
parameterId
,
queryType
};
},
);
export
const
SET_PARAMETER_SOURCE_TYPE
=
"
metabase/dashboard/SET_PARAMETER_SOURCE_TYPE
"
;
export
const
setParameterSourceType
=
createThunkAction
(
SET_PARAMETER_SOURCE_TYPE
,
(
parameterId
,
sourceType
)
=>
(
dispatch
,
getState
)
=>
{
updateParameter
(
dispatch
,
getState
,
parameterId
,
parameter
=>
({
...
parameter
,
values_source_type
:
sourceType
,
}));
return
{
id
:
parameterId
,
sourceType
};
},
(
parameterId
:
ParameterId
,
sourceType
:
ValuesSourceType
)
=>
(
dispatch
,
getState
)
=>
{
updateParameter
(
dispatch
,
getState
,
parameterId
,
parameter
=>
({
...
parameter
,
values_source_type
:
sourceType
,
}));
return
{
id
:
parameterId
,
sourceType
};
},
);
export
const
SET_PARAMETER_SOURCE_CONFIG
=
"
metabase/dashboard/SET_PARAMETER_SOURCE_CONFIG
"
;
export
const
setParameterSourceConfig
=
createThunkAction
(
SET_PARAMETER_SOURCE_CONFIG
,
(
parameterId
,
sourceConfig
)
=>
(
dispatch
,
getState
)
=>
{
updateParameter
(
dispatch
,
getState
,
parameterId
,
parameter
=>
({
...
parameter
,
values_source_config
:
sourceConfig
,
}));
return
{
id
:
parameterId
,
sourceConfig
};
},
(
parameterId
:
ParameterId
,
sourceConfig
:
ValuesSourceConfig
)
=>
(
dispatch
,
getState
)
=>
{
updateParameter
(
dispatch
,
getState
,
parameterId
,
parameter
=>
({
...
parameter
,
values_source_config
:
sourceConfig
,
}));
return
{
id
:
parameterId
,
sourceConfig
};
},
);
export
const
SET_PARAMETER_INDEX
=
"
metabase/dashboard/SET_PARAMETER_INDEX
"
;
export
const
setParameterIndex
=
createThunkAction
(
SET_PARAMETER_INDEX
,
(
parameterId
,
index
)
=>
(
dispatch
,
getState
)
=>
{
(
parameterId
:
ParameterId
,
index
:
number
)
=>
(
dispatch
,
getState
)
=>
{
const
dashboard
=
getDashboard
(
getState
());
if
(
!
dashboard
||
!
dashboard
.
parameters
)
{
return
;
}
const
parameterIndex
=
_
.
findIndex
(
dashboard
.
parameters
,
p
=>
p
.
id
===
parameterId
,
...
...
@@ -338,7 +388,6 @@ export const setParameterIndex = createThunkAction(
export
const
SHOW_ADD_PARAMETER_POPOVER
=
"
metabase/dashboard/SHOW_ADD_PARAMETER_POPOVER
"
;
export
const
showAddParameterPopover
=
createAction
(
SHOW_ADD_PARAMETER_POPOVER
);
export
const
HIDE_ADD_PARAMETER_POPOVER
=
...
...
@@ -346,7 +395,8 @@ export const HIDE_ADD_PARAMETER_POPOVER =
export
const
hideAddParameterPopover
=
createAction
(
HIDE_ADD_PARAMETER_POPOVER
);
export
const
setOrUnsetParameterValues
=
parameterIdValuePairs
=>
(
dispatch
,
getState
)
=>
{
(
parameterIdValuePairs
:
any
[][])
=>
(
dispatch
:
Dispatch
,
getState
:
GetState
)
=>
{
const
parameterValues
=
getParameterValues
(
getState
());
parameterIdValuePairs
.
map
(([
id
,
value
])
=>
...
...
@@ -356,7 +406,8 @@ export const setOrUnsetParameterValues =
};
export
const
setParameterValuesFromQueryParams
=
queryParams
=>
(
dispatch
,
getState
)
=>
{
(
queryParams
:
Record
<
string
,
string
|
string
[]
>
)
=>
(
dispatch
:
Dispatch
,
getState
:
GetState
)
=>
{
const
parameters
=
getParameters
(
getState
());
const
parameterValues
=
getParameterValuesByIdFromQueryParams
(
parameters
,
...
...
@@ -370,7 +421,7 @@ export const TOGGLE_AUTO_APPLY_FILTERS =
"
metabase/dashboard/TOGGLE_AUTO_APPLY_FILTERS
"
;
export
const
toggleAutoApplyFilters
=
createThunkAction
(
TOGGLE_AUTO_APPLY_FILTERS
,
isEnabled
=>
(
dispatch
,
getState
)
=>
{
(
isEnabled
:
boolean
)
=>
(
dispatch
,
getState
)
=>
{
const
dashboardId
=
getDashboardId
(
getState
());
if
(
dashboardId
)
{
...
...
This diff is collapsed.
Click to expand it.
Preview
0%
Loading
Try again
or
attach a new file
.
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Save comment
Cancel
Please
register
or
sign in
to comment