WIP Introduce clone dashboard button

pull/10616/head
Alex P 2018-03-30 14:45:47 -07:00
parent fe8535f5b8
commit d818c7aae5
3 changed files with 18 additions and 0 deletions

View File

@ -25,6 +25,7 @@ class DashboardsPageContents extends Component {
dashboards,
onDeleteDashboard,
onCreateDashboard,
onCloneDashboard,
dashboardLink,
} = this.props
const {searchTerm} = this.state
@ -69,6 +70,7 @@ class DashboardsPageContents extends Component {
dashboards={filteredDashboards}
onDeleteDashboard={onDeleteDashboard}
onCreateDashboard={onCreateDashboard}
onCloneDashboard={onCloneDashboard}
dashboardLink={dashboardLink}
/>
</div>
@ -87,6 +89,7 @@ DashboardsPageContents.propTypes = {
dashboards: arrayOf(shape()),
onDeleteDashboard: func.isRequired,
onCreateDashboard: func.isRequired,
onCloneDashboard: func.isRequired,
dashboardLink: string.isRequired,
}

View File

@ -33,6 +33,7 @@ const DashboardsTable = ({
dashboards,
onDeleteDashboard,
onCreateDashboard,
onCloneDashboard,
dashboardLink,
}) => {
const wrappedDelete = dashboard => () => {
@ -71,6 +72,13 @@ const DashboardsTable = ({
replaceWithIfNotAuthorized={<td />}
>
<td className="text-right">
<button
className="btn btn-xs btn-default"
onClick={onCloneDashboard(dashboard)}
>
<span className="icon duplicate" />
Clone
</button>
<ConfirmButton
confirmAction={wrappedDelete}
size="btn-xs"
@ -100,6 +108,7 @@ DashboardsTable.propTypes = {
dashboards: arrayOf(shape()),
onDeleteDashboard: func.isRequired,
onCreateDashboard: func.isRequired,
onCloneDashboard: func.isRequired,
dashboardLink: string.isRequired,
}

View File

@ -23,6 +23,11 @@ class DashboardsPage extends Component {
push(`/sources/${id}/dashboards/${data.id}`)
}
handleCloneDashboard = dashboard => () => {
console.log(dashboard)
createDashboard({...dashboard, name: `${dashboard.name} (Clone)`})
}
handleDeleteDashboard = dashboard => {
this.props.handleDeleteDashboard(dashboard)
}
@ -39,6 +44,7 @@ class DashboardsPage extends Component {
dashboards={dashboards}
onDeleteDashboard={this.handleDeleteDashboard}
onCreateDashboard={this.handleCreateDashbord}
onCloneDashboard={this.handleCloneDashboard}
/>
</div>
)