You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tapestry.apache.org by hl...@apache.org on 2013/07/23 01:57:32 UTC
[5/8] git commit: Add a text field for dynamic filtering of the
floating console messages
Add a text field for dynamic filtering of the floating console messages
Project: http://git-wip-us.apache.org/repos/asf/tapestry-5/repo
Commit: http://git-wip-us.apache.org/repos/asf/tapestry-5/commit/01cfeb1d
Tree: http://git-wip-us.apache.org/repos/asf/tapestry-5/tree/01cfeb1d
Diff: http://git-wip-us.apache.org/repos/asf/tapestry-5/diff/01cfeb1d
Branch: refs/heads/master
Commit: 01cfeb1d188ffb775abc4b6b04f39e39770ba71e
Parents: 36de838
Author: Howard M. Lewis Ship <hl...@apache.org>
Authored: Mon Jul 22 09:36:17 2013 -0700
Committer: Howard M. Lewis Ship <hl...@apache.org>
Committed: Mon Jul 22 09:36:17 2013 -0700
----------------------------------------------------------------------
.../META-INF/modules/t5/core/console.coffee | 62 ++++++++++++++++----
1 file changed, 49 insertions(+), 13 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/tapestry-5/blob/01cfeb1d/tapestry-core/src/main/coffeescript/META-INF/modules/t5/core/console.coffee
----------------------------------------------------------------------
diff --git a/tapestry-core/src/main/coffeescript/META-INF/modules/t5/core/console.coffee b/tapestry-core/src/main/coffeescript/META-INF/modules/t5/core/console.coffee
index f5ebb69..fcc6bf8 100644
--- a/tapestry-core/src/main/coffeescript/META-INF/modules/t5/core/console.coffee
+++ b/tapestry-core/src/main/coffeescript/META-INF/modules/t5/core/console.coffee
@@ -20,7 +20,23 @@ define ["./dom", "underscore"],
nativeConsole = {}
floatingConsole = null
- alertContainer = null
+ messages = null
+
+ noFilter = -> true
+
+ filter = noFilter
+
+ updateFilter = (text) ->
+ if text is ""
+ filter = noFilter
+ return
+
+ text = text.toLowerCase()
+
+ filter = (e) ->
+ e.element.innerText.toLowerCase().indexOf(text) >= 0
+
+ return
forceFloating = (dom.body.attribute "data-floating-console") == "true"
@@ -41,25 +57,28 @@ define ["./dom", "underscore"],
class: "tapestry-console",
"""
<div class="message-container"></div>
- <button data-action="clear" class="btn btn-mini"><i class="icon-remove"></i> Clear Console</button>
- <button data-action="enable" class="btn btn-mini" disabled="true"><i class="icon-play"></i> Enable Console</button>
- <button data-action="disable" class="btn btn-mini"><i class="icon-pause"></i> Disable Console</button>
+ <div class="row-fluid">
+ <button data-action="clear" class="btn btn-mini"><i class="icon-remove"></i> Clear Console</button>
+ <button data-action="enable" class="btn btn-mini" disabled="true"><i class="icon-play"></i> Enable Console</button>
+ <button data-action="disable" class="btn btn-mini"><i class="icon-pause"></i> Disable Console</button>
+ <input class="search-query input-xlarge" size="40" placeholder="Filter console content">
+ </div>
"""
dom.body.prepend floatingConsole
- alertContainer = floatingConsole.findFirst ".message-container"
+ messages = floatingConsole.findFirst ".message-container"
floatingConsole.on "click", "[data-action=clear]", ->
floatingConsole.hide()
- alertContainer.update ""
+ messages.update ""
floatingConsole.on "click", "[data-action=disable]", ->
@attribute "disabled", true
floatingConsole.findFirst("[data-action=enable]").attribute "disabled", false
- alertContainer.hide()
+ messages.hide()
return false
@@ -68,19 +87,36 @@ define ["./dom", "underscore"],
@attribute "disabled", true
floatingConsole.findFirst("[data-action=disable]").attribute "disabled", false
- alertContainer.show()
+ messages.show()
return false
- alertContainer.append """
- <div class="#{className}">#{_.escape message}</div>
- """
+ floatingConsole.on "change keyup", ".search-query", ->
+ updateFilter @value()
+
+ for e in messages.children()
+ visible = filter e
+
+ e[if visible then "show" else "hide"]()
+
+ return false
+
+ div = dom.create
+ class: className,
+ _.escape message
+
+ # Should really filter on original message, not escaped.
+
+ unless filter div
+ div.hide()
+
+ messages.append div
- # Make sure the console is visible, even if disabled.
+ # Make sure the console is visible, even if disabled (and even if the new content is hidden).
floatingConsole.show()
# A slightly clumsy way to ensure that the container is scrolled to the bottom.
- _.delay -> alertContainer.element.scrollTop = alertContainer.element.scrollHeight
+ _.delay -> messages.element.scrollTop = messages.element.scrollHeight
level = (className, consolefn) ->
(message) ->