add del confirmation dialog

mine
derailed 2019-03-11 22:32:41 -06:00
parent 9e5583e99b
commit 58358a3f2d
2 changed files with 28 additions and 39 deletions

View File

@ -80,36 +80,6 @@ func (v *podView) logsCmd(evt *tcell.EventKey) *tcell.EventKey {
return nil
}
// func (v *podView) logsCmd(evt *tcell.EventKey) *tcell.EventKey {
// if !v.rowSelected() {
// return evt
// }
// previous := false
// if evt.Rune() == 'p' {
// log.Debug("Previous logs detected")
// previous = true
// }
// cc, err := fetchContainers(v.list, v.selectedItem, true)
// if err != nil {
// v.app.flash(flashErr, err.Error())
// log.Error("Error fetching containers", err)
// return evt
// }
// if len(cc) == 1 {
// v.showLogs(v.selectedItem, "", previous)
// } else {
// p := v.GetPrimitive("choose").(*selectList)
// p.populate(cc)
// p.SetSelectedFunc(func(i int, t, d string, r rune) {
// v.showLogs(v.selectedItem, t, previous)
// })
// v.switchPage("choose")
// }
// return evt
// }
func (v *podView) shellCmd(evt *tcell.EventKey) *tcell.EventKey {
if !v.rowSelected() {
return evt

View File

@ -34,6 +34,7 @@ type (
app *appView
title string
selectedItem string
selectedRow int
namespaces map[int]string
selectedNS string
update sync.Mutex
@ -62,6 +63,12 @@ func newResourceView(title string, app *appView, list resource.List, c colorerFn
details := newDetailsView(app, v.backCmd)
v.AddPage("details", details, true, false)
confirm := tview.NewModal().
AddButtons([]string{"OK", "Cancel"}).
SetTextColor(tcell.ColorFuchsia)
v.AddPage("confirm", confirm, false, false)
return &v
}
@ -93,6 +100,7 @@ func (v *resourceView) getTitle() string {
}
func (v *resourceView) selChanged(r, c int) {
v.selectedRow = r
v.selectItem(r, c)
v.getTV().cmdBuff.setActive(false)
}
@ -133,13 +141,24 @@ func (v *resourceView) deleteCmd(evt *tcell.EventKey) *tcell.EventKey {
if !v.rowSelected() {
return evt
}
v.getTV().setDeleted()
sel := v.getSelectedItem()
confirm := v.GetPrimitive("confirm").(*tview.Modal)
confirm.SetText(fmt.Sprintf("Delete %s %s?", v.list.GetName(), sel))
confirm.SetDoneFunc(func(_ int, button string) {
if button == "OK" {
v.getTV().setDeleted()
v.app.flash(flashInfo, fmt.Sprintf("Deleting %s %s", v.list.GetName(), sel))
if err := v.list.Resource().Delete(sel); err != nil {
v.app.flash(flashErr, "Boom!", err.Error())
} else {
v.refresh()
}
v.selectedItem = noSelection
}
v.switchPage(v.list.GetName())
})
v.SwitchToPage("confirm")
return nil
}
@ -251,7 +270,7 @@ func (v *resourceView) refresh() {
data = v.decorateDataFn(data)
}
v.getTV().update(data)
v.selectItem(v.selectedRow, 0)
v.refreshActions()
v.app.infoView.refresh()
v.app.Draw()
@ -267,12 +286,12 @@ func (v *resourceView) getTV() *tableView {
}
func (v *resourceView) selectItem(r, c int) {
if r == 0 {
t := v.getTV()
if r == 0 || t.GetCell(r, 0) == nil {
v.selectedItem = noSelection
return
}
t := v.getTV()
switch v.list.GetNamespace() {
case resource.NotNamespaced:
v.selectedItem = strings.TrimSpace(t.GetCell(r, 0).Text)