Move TickscriptSave button to own file

pull/10616/head
Andrew Watkins 2018-04-09 10:44:41 -07:00
parent 75186ae8da
commit 4908c2cd0b
3 changed files with 68 additions and 66 deletions

View File

@ -1,15 +1,9 @@
import React, {SFC, PureComponent} from 'react'
import React, {SFC} from 'react'
import SourceIndicator from 'src/shared/components/SourceIndicator'
import LogsToggle from 'src/kapacitor/components/LogsToggle'
import ConfirmButton from 'src/shared/components/ConfirmButton'
import {DBRP} from 'src/types/kapacitor'
interface Task {
dbrps: DBRP[]
id: string
}
import TickscriptSave, {Task} from 'src/kapacitor/components/TickscriptSave'
interface Props {
task: Task
@ -71,59 +65,4 @@ const TickscriptHeader: SFC<Props> = ({
</div>
)
interface SaveProps {
onSave: () => void
task: Task
isNewTickscript: boolean
unsavedChanges: boolean
}
export class TickscriptSave extends PureComponent<SaveProps> {
public render() {
const {onSave} = this.props
return (
<button
className="btn btn-success btn-sm"
title={this.title}
onClick={onSave}
disabled={this.isDisabled}
>
{this.textContent}
</button>
)
}
private get title(): string {
const {task} = this.props
if (!task.id) {
return 'Name your TICKscript to save'
}
if (!task.dbrps.length) {
return 'Select databases to save'
}
}
private get textContent(): string {
if (this.props.isNewTickscript) {
return 'Save New TICKscript'
}
return 'Save Changes'
}
private get isDisabled(): boolean {
const {isNewTickscript, unsavedChanges, task} = this.props
const {id, dbrps} = task
if (isNewTickscript) {
return !id || !dbrps.length
}
return !unsavedChanges || !dbrps.length
}
}
export default TickscriptHeader

View File

@ -0,0 +1,64 @@
import React, {PureComponent} from 'react'
import {DBRP} from 'src/types/kapacitor'
export interface Task {
dbrps: DBRP[]
id: string
}
interface SaveProps {
onSave: () => void
task: Task
isNewTickscript: boolean
unsavedChanges: boolean
}
class TickscriptSave extends PureComponent<SaveProps> {
public render() {
const {onSave} = this.props
return (
<button
className="btn btn-success btn-sm"
title={this.title}
onClick={onSave}
disabled={this.isDisabled}
>
{this.textContent}
</button>
)
}
private get title(): string {
const {task} = this.props
if (!task.id) {
return 'Name your TICKscript to save'
}
if (!task.dbrps.length) {
return 'Select databases to save'
}
}
private get textContent(): string {
if (this.props.isNewTickscript) {
return 'Save New TICKscript'
}
return 'Save Changes'
}
private get isDisabled(): boolean {
const {isNewTickscript, unsavedChanges, task} = this.props
const {id, dbrps} = task
if (isNewTickscript) {
return !id || !dbrps.length
}
return !unsavedChanges || !dbrps.length
}
}
export default TickscriptSave

View File

@ -1,9 +1,8 @@
import React from 'react'
import {shallow} from 'enzyme'
import TickscriptHeader, {
TickscriptSave,
} from 'src/kapacitor/components/TickscriptHeader'
import TickscriptHeader from 'src/kapacitor/components/TickscriptHeader'
import TickscriptSave from 'src/kapacitor/components/TickscriptSave'
const setup = (override?) => {
const props = {