mirror of
https://github.com/wassname/nvatom.git
synced 2026-09-10 12:21:11 +08:00
Compare commits
1
Commits
topic-35
...
feature-30
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
ce9869362a |
@@ -38,33 +38,6 @@ class NotationalVelocityView extends SelectListView
|
|||||||
@prevCursorPosition = currCursorPosition
|
@prevCursorPosition = currCursorPosition
|
||||||
return isCursorProceeded
|
return isCursorProceeded
|
||||||
|
|
||||||
selectItem: (filteredItems, filterQuery) ->
|
|
||||||
isCursorProceeded = @isCursorProceeded()
|
|
||||||
|
|
||||||
for item in filteredItems
|
|
||||||
if item.title.toLowerCase() is filterQuery.toLowerCase()
|
|
||||||
# autoselect
|
|
||||||
n = filteredItems.indexOf(item) + 1
|
|
||||||
@selectItemView(@list.find("li:nth-child(#{n})"))
|
|
||||||
return
|
|
||||||
|
|
||||||
for item in filteredItems
|
|
||||||
if item.title.toLowerCase().startsWith(filterQuery.toLowerCase()) and isCursorProceeded
|
|
||||||
# autocomplete
|
|
||||||
@skipPopulateList = true
|
|
||||||
editor = @filterEditorView.model
|
|
||||||
editor.setText(filterQuery + item.title.slice(filterQuery.length))
|
|
||||||
editor.selectLeft(item.title.length - filterQuery.length)
|
|
||||||
|
|
||||||
# autoselect
|
|
||||||
n = filteredItems.indexOf(item) + 1
|
|
||||||
@selectItemView(@list.find("li:nth-child(#{n})"))
|
|
||||||
|
|
||||||
filter: (filterQuery) ->
|
|
||||||
if (filterQuery is "") or (filterQuery is undefined)
|
|
||||||
return @docQuery.documents
|
|
||||||
return @docQuery.search(filterQuery)
|
|
||||||
|
|
||||||
getFilterKey: ->
|
getFilterKey: ->
|
||||||
'filetext'
|
'filetext'
|
||||||
|
|
||||||
@@ -136,24 +109,73 @@ class NotationalVelocityView extends SelectListView
|
|||||||
selectedText = editor.getSelectedText()
|
selectedText = editor.getSelectedText()
|
||||||
return fullText.substring(0, fullText.length - selectedText.length)
|
return fullText.substring(0, fullText.length - selectedText.length)
|
||||||
|
|
||||||
|
filterByTitle: (filterQuery) ->
|
||||||
|
if (filterQuery is "") or (filterQuery is undefined)
|
||||||
|
return []
|
||||||
|
filterQuery = filterQuery.toLowerCase()
|
||||||
|
matchingNotes = []
|
||||||
|
filteredNotes = []
|
||||||
|
for note in @docQuery.documents
|
||||||
|
title = note.title.toLowerCase()
|
||||||
|
if title is filterQuery
|
||||||
|
matchingNotes.push(note)
|
||||||
|
else if filteredNotes.length < @maxItems and title.startsWith(filterQuery)
|
||||||
|
filteredNotes.push(note)
|
||||||
|
notes = matchingNotes.concat(filteredNotes)
|
||||||
|
if notes.length > @maxItems
|
||||||
|
notes = notes.slice(0, @maxItems)
|
||||||
|
return notes
|
||||||
|
|
||||||
|
filterByLunr: (filterQuery) ->
|
||||||
|
notes = []
|
||||||
|
if (filterQuery is "") or (filterQuery is undefined)
|
||||||
|
notes = @docQuery.documents
|
||||||
|
else
|
||||||
|
notes = @docQuery.search(filterQuery)
|
||||||
|
if notes.length > @maxItems
|
||||||
|
notes = notes.slice(0, @maxItems)
|
||||||
|
return notes
|
||||||
|
|
||||||
populateList: ->
|
populateList: ->
|
||||||
filterQuery = @getFilterQuery()
|
filterQuery = @getFilterQuery()
|
||||||
filteredItems = @filter(filterQuery)
|
notesByTitle = @filterByTitle(filterQuery)
|
||||||
|
notesByLunr = @filterByLunr(filterQuery)
|
||||||
|
isCursorProceeded = @isCursorProceeded()
|
||||||
|
|
||||||
@list.empty()
|
@list.empty()
|
||||||
if filteredItems.length
|
if notesByTitle.length + notesByLunr.length == 0
|
||||||
@setError(null)
|
@setError(@getEmptyMessage(@docQuery.documents.length, 0))
|
||||||
|
return
|
||||||
|
|
||||||
for i in [0...Math.min(filteredItems.length, @maxItems)]
|
@setError(null)
|
||||||
item = filteredItems[i]
|
for note in notesByTitle
|
||||||
itemView = $(@viewForItem(item))
|
itemView = $(@viewForItem(note))
|
||||||
itemView.data('select-list-item', item)
|
itemView.data('select-list-item', note)
|
||||||
@list.append(itemView)
|
@list.append(itemView)
|
||||||
|
|
||||||
@selectItem(filteredItems, filterQuery)
|
if notesByTitle.length
|
||||||
|
# autoselect
|
||||||
|
@selectItemView(@list.find("li:nth-child(1)"))
|
||||||
|
|
||||||
else
|
#autocomplete
|
||||||
@setError(@getEmptyMessage(@docQuery.documents.length, filteredItems.length))
|
note = notesByTitle[0]
|
||||||
|
if note.title.toLowerCase() is filterQuery.toLowerCase() or isCursorProceeded
|
||||||
|
@skipPopulateList = true
|
||||||
|
editor = @filterEditorView.model
|
||||||
|
editor.setText(filterQuery + note.title.slice(filterQuery.length))
|
||||||
|
editor.selectLeft(note.title.length - filterQuery.length)
|
||||||
|
|
||||||
|
if @list.length >= @maxItems
|
||||||
|
return
|
||||||
|
|
||||||
|
for note in notesByLunr
|
||||||
|
if @list.length >= @maxItems
|
||||||
|
break
|
||||||
|
if filterQuery?.length and note.title.toLowerCase().startsWith(filterQuery.toLowerCase())
|
||||||
|
continue
|
||||||
|
itemView = $(@viewForItem(note))
|
||||||
|
itemView.data('select-list-item', note)
|
||||||
|
@list.append(itemView)
|
||||||
|
|
||||||
schedulePopulateList: ->
|
schedulePopulateList: ->
|
||||||
unless @skipPopulateList
|
unless @skipPopulateList
|
||||||
|
|||||||
Reference in New Issue
Block a user