diff options
Diffstat (limited to 'misc/openlayers/examples/example-list.html')
-rw-r--r-- | misc/openlayers/examples/example-list.html | 302 |
1 files changed, 302 insertions, 0 deletions
diff --git a/misc/openlayers/examples/example-list.html b/misc/openlayers/examples/example-list.html new file mode 100644 index 0000000..3ac9120 --- /dev/null +++ b/misc/openlayers/examples/example-list.html @@ -0,0 +1,302 @@ +<!DOCTYPE html> +<html> + <head> + <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> + <meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=0"> + <meta name="apple-mobile-web-app-capable" content="yes"> + <!-- This is the example list source: if you are trying to look at the + source of an example, YOU ARE IN THE WRONG PLACE. If you want to view + the source of just one example, you can typically choose + "This Frame -> View source" when right clicking on the exmaple. If not, + choose to open the example in a new window (via the context menu + click on the link), and view source from there. --> + <title>OpenLayers Examples</title> + <link rel="alternate" href="example-list.xml" type="application/atom+xml" /> + <link rel="stylesheet" href="style.css" type="text/css"> + <style type="text/css"> + html, body { + margin: 0; + padding: 0; + line-height: 1.25em; + } + #logo { + text-shadow: 2px 2px 3px gray; + color: white; + vertical-align: middle; + position: absolute; + top: 5px; + left: 5px; + font-size: 34px; + font-family: "Trebuchet MS",Helvetica,Arial,sans-serif; + } + #logo img { + vertical-align: middle; + } + .ex_container{ + } + .ex_container a { + text-decoration: none; + padding: 5px 1em; + display: block; + } + .ex_container a:hover { + background-color: #eeeeee; + } + .ex_title{ + display: inline; + font-weight: bold; + color: #333; + } + .ex_tags{ + display: inline; + font-size: smaller; + font-style: italic; + color: #333; + } + .ex_filename { + font-weight: normal; + font-size: 0.8em; + color: #ccc + } + .ex_description{ + color: #222; + padding: 3px; + } + .ex_classes{ + font-size: .7em; + color: gray; + display: none; + } + #toc { + width: 100%; + height: 100%; + } + #filter { + position: fixed; + text-align: center; + top: 0px; + background: #9D9FA1; + width: 100%; + padding: 1.3em 0; + } + #examples { + overflow: auto; + list-style: none; + margin: 0; + padding: 0; + } + #examples ul { + list-style: none; + margin: 0; + padding: 0; + margin-top: 4em; + } + #examples ul li { + display: inline; + float: left; + width: 350px; + margin: 10px 0 0 10px; + padding: 0; + border: 1px solid #ddd; + border-radius: 3px; + } + #examples .mainlink { + height: 8em; + overflow: auto; + } + #exwin { + position: absolute; + top: 0; + left: 30%; + width: 70%; + height: 100%; + border: none; + border-left: 1px solid #cccccc; + margin: 0; + } + @media only screen and (max-width: 600px) { + #examples ul { + margin-top: 100px; + } + #filter { + padding-top: 50px; + } + #examples ul li { + margin-left: 0; + border-radius: 0; + border-width: 1px 0; + width: 100%; + } + #examples .mainlink { + height: auto; + } + #examples .ex_tags, #examples .ex_filename { + display: none; + } + } + </style> + <script type="text/javascript" src="Jugl.js"></script> + <script type="text/javascript" src="example-list.js"></script> + <script type="text/javascript"> + var template, target; + + function listExamples(examples) { + target.innerHTML = ""; + var node = template.process({ + context: {examples: examples}, + clone: true, + parent: target + }); + document.getElementById("count").innerHTML = "(" + examples.length + ")"; + } + + var timerId; + function inputChange() { + if(timerId) { + window.clearTimeout(timerId); + } + var text = this.value; + timerId = window.setTimeout(function() { + filterList(text); + }, 500); + } + + function filterList(text) { + var examples; + if(text.length < 2) { + examples = info.examples; + } else { + var words = text.split(/\W+/); + var scores = {}; + for(var i=0; i<words.length; ++i) { + var word = words[i].toLowerCase(); + var dict = info.index[word]; + var updateScores = function() { + for(exIndex in dict) { + var count = dict[exIndex]; + if(scores[exIndex]) { + if(scores[exIndex][word]) { + scores[exIndex][word] += count; + } else { + scores[exIndex][word] = count; + } + } else { + scores[exIndex] = {}; + scores[exIndex][word] = count; + } + } + }; + if(dict) { + updateScores(); + } else { + var r; + for (idx in info.index) { + r = new RegExp(word); + if (r.test(idx)) { + dict = info.index[idx]; + updateScores(); + } + } + } + } + examples = []; + for(var j in scores) { + var ex = info.examples[j]; + ex.score = scores[j]; + examples.push(ex); + } + // sort examples by first by number of words matched, then + // by word frequency + examples.sort(function(a, b) { + var cmp; + var aWords = 0, bWords = 0; + var aScore = 0, bScore = 0; + for(var i in a.score) { + aScore += a.score[i]; + aWords += 1; + } + for(var j in b.score) { + bScore += b.score[j]; + bWords += 1; + } + if(aWords == bWords) { + cmp = bScore - aScore; + } else { + cmp = bWords - aWords; + } + return cmp; + }); + } + listExamples(examples); + } + + function showAll() { + document.getElementById("keywords").value = ""; + listExamples(info.examples); + } + + function parseQuery() { + var params = {}; + var list = window.location.search.substring(1).split("&"); + for(var i=0; i<list.length; ++i) { + var pair = list[i].split("="); + if(pair.length == 2) { + params[decodeURIComponent(pair[0])] = decodeURIComponent(pair[1]); + } + } + if(params["q"]) { + var input = document.getElementById("keywords"); + input.value = params["q"]; + inputChange.call(input); + } + } + window.onload = function() { + //document.getElementById('keywords').focus(); + template = new jugl.Template("template"); + target = document.getElementById("examples"); + listExamples(info.examples); + document.getElementById("keywords").onkeyup = inputChange; + parseQuery(); + }; + </script> + </head> + <body> + <div id="toc"> + <div id="filter"> + <div id="logo"> + <img src="http://www.openlayers.org/images/OpenLayers.trac.png" + /> + OpenLayers + </div> + <p> + <input autofocus placeholder="filter by keywords..." type="text" id="keywords" /> + <span id="count"></span> + <a href="javascript:void showAll();">show all</a> + </p> + </div> + <div id="examples"></div> + </div> + <div style="display: none;"> + <ul id="template"> + <li class="ex_container" jugl:repeat="example examples"> + <a jugl:attributes="href example.link" class="mainlink" + target="_blank"> + <h5 class="ex_title"> + <span jugl:replace="example.title">title</span><br> + <span class="ex_filename" jugl:content="'(' + example.example + ')'">filename</span> + </h5> + <div class="ex_description" jugl:content="example.shortdesc"> + Short Description goes here + </div> + <p class="ex_classes" jugl:content="example.classes"> + Related Classes go here + </p> + <div class="ex_tags" jugl:content="'...tagged with ' + example.tags"> + + </div> + </a> + </li> + </ul> + </div> + </body> +</html> |