@reactual/handsontable
Version:
Spreadsheet-like data grid editor
330 lines (255 loc) • 11.6 kB
HTML
<html>
<head>
<meta charset='utf-8'>
<title>Search - Handsontable</title>
<!--
Loading Handsontable (full distribution that includes all dependencies)
-->
<link data-jsfiddle="common" rel="stylesheet" media="screen" href="../dist/handsontable.css">
<link data-jsfiddle="common" rel="stylesheet" media="screen" href="../dist/pikaday/pikaday.css">
<script data-jsfiddle="common" src="../dist/pikaday/pikaday.js"></script>
<script data-jsfiddle="common" src="../dist/moment/moment.js"></script>
<script data-jsfiddle="common" src="../dist/numbro/numbro.js"></script>
<script data-jsfiddle="common" src="../dist/numbro/languages.js"></script>
<script data-jsfiddle="common" src="../dist/handsontable.js"></script>
<!--
Loading demo dependencies. They are used here only to enhance the examples on this page
-->
<link data-jsfiddle="common" rel="stylesheet" media="screen" href="css/samples.css?20140331">
<script src="js/samples.js"></script>
<script src="js/highlight/highlight.pack.js"></script>
<link rel="stylesheet" media="screen" href="js/highlight/styles/github.css">
<link rel="stylesheet" href="css/font-awesome/css/font-awesome.min.css">
<!--
Facebook open graph. Don't copy this to your project :)
-->
<meta property="og:title" content="Search">
<meta property="og:description"
content="">
<meta property="og:url" content="http://handsontable.com/demo/search.html">
<meta property="og:image" content="http://handsontable.com/demo/image/og-image.png">
<meta property="og:image:type" content="image/png">
<meta property="og:image:width" content="409">
<meta property="og:image:height" content="164">
<link rel="canonical" href="http://handsontable.com/demo/search.html">
<!--
Google Analytics for GitHub Page. Don't copy this to your project :)
-->
<script src="js/ga.js"></script>
</head>
<body>
<div class="wrapper">
<div class="wrapper-row">
<div id="global-menu-clone">
<h1><a href="../index.html">Handsontable</a></h1>
</div>
<div id="container">
<div class="columnLayout">
<div class="rowLayout">
<div class="descLayout">
<div class="pad">
<h2>Search</h2>
<p>
You can easily add the ability to search through Handsontable content, using <code>searchPlugin</code>.
</p>
<p>
See <a href="https://github.com/handsontable/handsontable/wiki/Search-plugin">wiki</a> for an in-depth documentation.
</p>
<ul>
<li><a href="#simplest-use-case">Simplest use case</a></li>
<li><a href="#custom-search-result-class">Custom search result class</a></li>
<li><a href="#custom-query-method">Custom query method</a></li>
<li><a href="#custom-callback">Custom callback</a></li>
</ul>
</div>
</div>
</div>
<div class="rowLayout">
<div class="descLayout">
<div class="pad" data-jsfiddle="example1">
<h2 id="simplest-use-case">Simplest use case</h2>
<input id='search_field' type="search" placeholder="Search" />
<div id="example1"></div>
</div>
</div>
<div class="codeLayout">
<div class="pad">
<div class="jsFiddle">
<button class="jsFiddleLink" data-runfiddle="example1">Edit in jsFiddle</button>
</div>
<style data-jsfiddle="example1">
[type="search"] {
margin: 0 0 10px;
}
</style>
<script data-jsfiddle="example1">
var
data = [
['Nissan', 2009, 'black', 'black'],
['Nissan', 2006, 'blue', 'blue'],
['Chrysler', 2004, 'yellow', 'black'],
['Volvo', 2012, 'yellow', 'gray']
],
example = document.getElementById('example1'),
searchFiled = document.getElementById('search_field'),
hot;
hot = new Handsontable(example, {
data: data,
colHeaders: true,
search: true
});
function onlyExactMatch(queryStr, value) {
return queryStr.toString() === value.toString();
}
Handsontable.dom.addEvent(searchFiled, 'keyup', function (event) {
var queryResult = hot.search.query(this.value);
console.log(queryResult);
hot.render();
});
</script>
</div>
</div>
</div>
<div class="rowLayout">
<div class="descLayout">
<div class="pad" data-jsfiddle="example2">
<h2 id="custom-search-result-class">Custom search result class</h2>
<input id='search_field2' type="search" placeholder="Search" />
<div id="example2"></div>
</div>
</div>
<div class="codeLayout">
<div class="pad">
<div class="jsFiddle">
<button class="jsFiddleLink" data-runfiddle="example2">Edit in jsFiddle</button>
</div>
<style data-jsfiddle="example2">
.htCore td.customClass {
background: #1E90FF;
color: #f8f8ff;
}
</style>
<script data-jsfiddle="example2">
var data = [
["Nissan", 2009, "black", "black"],
["Nissan", 2006, "blue", "blue"],
["Chrysler", 2004, "yellow", "black"],
["Volvo", 2012, "white", "gray"]
]
, example2 = document.getElementById("example2");
var hot2 = new Handsontable(example2,{
data: data,
colHeaders: true,
search: {
searchResultClass: 'customClass'
}
});
var searchFiled2 = document.getElementById('search_field2');
Handsontable.dom.addEvent(searchFiled2,'keyup', function (event) {
var queryResult = hot2.search.query(this.value);
console.log(queryResult);
hot2.render();
});
</script>
</div>
</div>
</div>
<div class="rowLayout">
<div class="descLayout">
<div class="pad" data-jsfiddle="example3">
<h2 id="custom-query-method">Custom query method</h2>
<input id='search_field3' type="search" placeholder="Search" />
<div id="example3"></div>
</div>
</div>
<div class="codeLayout">
<div class="pad">
<div class="jsFiddle">
<button class="jsFiddleLink" data-runfiddle="example3">Edit in jsFiddle</button>
</div>
<script data-jsfiddle="example3">
var data = [
["Nissan", 2009, "black", "black"],
["Nissan", 2006, "blue", "blue"],
["Chrysler", 2004, "yellow", "black"],
["Volvo", 2012, "white", "gray"]
]
, example3 = document.getElementById("example3");
var onlyExactMatch = function (queryStr, value) {
return queryStr.toString() === value.toString();
};
var hot3 = new Handsontable(example3,{
data: data,
colHeaders: true,
search: {
queryMethod: onlyExactMatch
}
});
var searchFiled3 = document.getElementById('search_field3');
Handsontable.dom.addEvent(searchFiled3,'keyup', function (event) {
var queryResult = hot3.search.query(this.value);
console.log(queryResult);
hot3.render();
});
</script>
</div>
</div>
</div>
<div class="rowLayout">
<div class="descLayout">
<div class="pad" data-jsfiddle="example4">
<h2 id="custom-callback">Custom callback</h2>
<input id='search_field4' type="search" placeholder="Search" /> <span id="resultCount">0</span> results
<div id="example4"></div>
</div>
</div>
<div class="codeLayout">
<div class="pad">
<div class="jsFiddle">
<button class="jsFiddleLink" data-runfiddle="example4">Edit in jsFiddle</button>
</div>
<script data-jsfiddle="example4">
var data = [
["Nissan", 2009, "black", "black"],
["Nissan", 2006, "blue", "blue"],
["Chrysler", 2004, "yellow", "black"],
["Volvo", 2012, "white", "gray"]
]
, example4 = document.getElementById("example4");
var searchResultCount = 0;
var searchResultCounter = function (instance, row, col, value, result) {
Handsontable.Search.DEFAULT_CALLBACK.apply(this, arguments);
if (result) {
searchResultCount++;
}
};
var hot4 = new Handsontable(example4,{
data: data,
colHeaders: true,
search: {
callback: searchResultCounter
}
});
var searchFiled4 = document.getElementById('search_field4');
var resultCount = document.getElementById('resultCount');
Handsontable.dom.addEvent(searchFiled4, 'keyup', function (event) {
searchResultCount = 0;
var queryResult = hot4.search.query(this.value);
console.log(queryResult);
resultCount.innerText = searchResultCount.toString();
hot4.render();
});
</script>
</div>
</div>
</div>
<div class="footer-text">
</div>
</div>
</div>
</div>
</div>
<div id="outside-links-wrapper"></div>
</body>
</html>