Adding A new Field to the FileNode -> Title
Previously During Searching the Connection with mpd client was utilised to get the title for the files this was slowing the search with large number of files. Now after adding the Title field to the struct the Field is accessed instead of querying the server this has lead to faster searches. [[ Please Note the Title of a Folder would be the last accessed track from the FileMap. ]]
This commit is contained in:
parent
a8ae5fb426
commit
09297a4974
@ -3,6 +3,8 @@ package client
|
||||
import (
|
||||
"fmt"
|
||||
"strings"
|
||||
|
||||
"github.com/fhs/gompd/mpd"
|
||||
)
|
||||
|
||||
type FileNode struct {
|
||||
@ -10,6 +12,7 @@ type FileNode struct {
|
||||
Path string
|
||||
Parent *FileNode
|
||||
AbsolutePath string
|
||||
Title string
|
||||
}
|
||||
|
||||
// Source Interface For Fuzzy Searching.
|
||||
@ -17,12 +20,7 @@ type FileNodes []FileNode
|
||||
|
||||
func (f FileNodes) String(i int) string {
|
||||
if len(f[i].Children) == 0 {
|
||||
_s, err := CONN.ListAllInfo(f[i].AbsolutePath)
|
||||
if err != nil {
|
||||
NotificationServer.Send(fmt.Sprintf("Could Not Get Information About the Node %s", f[i].Path))
|
||||
return f[i].Path
|
||||
}
|
||||
return _s[0]["Title"]
|
||||
return f[i].Title
|
||||
}
|
||||
return f[i].Path
|
||||
}
|
||||
@ -31,11 +29,11 @@ func (f FileNodes) Len() int {
|
||||
return len(f)
|
||||
}
|
||||
|
||||
func (f *FileNode) AddChildren(path string) {
|
||||
func (f *FileNode) AddChildren(path string, title string) {
|
||||
if f.Path != "" {
|
||||
f.Children = append(f.Children, FileNode{Children: make([]FileNode, 0), Path: path, Parent: f, AbsolutePath: f.AbsolutePath + "/" + path})
|
||||
f.Children = append(f.Children, FileNode{Children: make([]FileNode, 0), Path: path, Parent: f, AbsolutePath: f.AbsolutePath + "/" + path, Title: title})
|
||||
} else {
|
||||
f.Children = append(f.Children, FileNode{Children: make([]FileNode, 0), Path: path, Parent: f, AbsolutePath: f.AbsolutePath + path})
|
||||
f.Children = append(f.Children, FileNode{Children: make([]FileNode, 0), Path: path, Parent: f, AbsolutePath: f.AbsolutePath + path, Title: title})
|
||||
}
|
||||
}
|
||||
|
||||
@ -44,14 +42,14 @@ func (f *FileNode) AddChildNode(m FileNode) {
|
||||
f.Children = append(f.Children, m)
|
||||
}
|
||||
|
||||
func GenerateDirectoryTree(path []string) *FileNode {
|
||||
func GenerateDirectoryTree(path []mpd.Attrs) *FileNode {
|
||||
var head *FileNode = new(FileNode)
|
||||
var head1 *FileNode = head
|
||||
for i := range path {
|
||||
sepPaths := strings.Split(path[i], "/")
|
||||
sepPaths := strings.Split(path[i]["file"], "/")
|
||||
for j := range sepPaths {
|
||||
if len(head.Children) == 0 {
|
||||
head.AddChildren(sepPaths[j])
|
||||
head.AddChildren(sepPaths[j], path[i]["Title"])
|
||||
head = &(head.Children[len(head.Children)-1])
|
||||
} else {
|
||||
var headIsChanged = false
|
||||
@ -63,7 +61,7 @@ func GenerateDirectoryTree(path []string) *FileNode {
|
||||
}
|
||||
}
|
||||
if !headIsChanged {
|
||||
head.AddChildren(sepPaths[j])
|
||||
head.AddChildren(sepPaths[j], path[i]["Title"])
|
||||
head = &(head.Children[len(head.Children)-1])
|
||||
}
|
||||
}
|
||||
|
@ -1,7 +1,6 @@
|
||||
package client
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
"strings"
|
||||
|
||||
"github.com/aditya-K2/fuzzy"
|
||||
@ -18,12 +17,7 @@ func UpdateBuffSearchView(inputTable *tview.Table, m fuzzy.Matches, f []FileNode
|
||||
if len(f[v.Index].Children) != 0 {
|
||||
inputTable.SetCellSimple(k, 0, utils.GetMatchedString(f[v.Index].Path, "#0000ff", "yellow", v.MatchedIndexes))
|
||||
} else {
|
||||
_s, err := CONN.ListAllInfo(f[v.Index].AbsolutePath)
|
||||
if err != nil {
|
||||
NotificationServer.Send(fmt.Sprintf("Could Not Add %s to the Table", f[v.Index].Path))
|
||||
} else {
|
||||
inputTable.SetCellSimple(k, 0, utils.GetMatchedString(_s[0]["Title"], "#fbff00", "green", v.MatchedIndexes))
|
||||
}
|
||||
inputTable.SetCellSimple(k, 0, utils.GetMatchedString(f[v.Index].Title, "#fbff00", "green", v.MatchedIndexes))
|
||||
}
|
||||
if k == 15 {
|
||||
break
|
||||
|
Loading…
Reference in New Issue
Block a user