UNPKG

@reactual/handsontable

Version:

Spreadsheet-like data grid editor

330 lines (255 loc) 11.6 kB
<!doctype 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>