UNPKG

leaflet

Version:

JavaScript library for mobile-friendly interactive maps

655 lines (623 loc) 23.5 kB
<!doctype html> <html> <head> <title>Code coverage report for src/map/handler/Map.TouchZoom.js</title> <meta http-equiv="content-type" content="text/html; charset=UTF-8"> <meta http-equiv="content-language" content="en-gb"> <link rel='stylesheet' href='../../../prettify.css'> <style type='text/css'> body, html { margin:0; padding: 0; } body { font-family: "Helvetic Neue", Helvetica,Arial; font-size: 10pt; } div.header, div.footer { background: #eee; padding: 1em; } div.header { z-index: 100; position: fixed; top: 0; border-bottom: 1px solid #666; width: 100%; } div.footer { border-top: 1px solid #666; } div.body { margin-top: 10em; } div.meta { font-size: 90%; text-align: center; } h1, h2, h3 { font-weight: normal; } h1 { font-size: 12pt; } h2 { font-size: 10pt; } pre { font-family: consolas, menlo, monaco, monospace; margin: 0; padding: 0; line-height: 14px; font-size: 14px; } div.path { font-size: 110%; } div.path a:link, div.path a:visited { color: #000; } table.coverage { border-collapse: collapse; margin:0; padding: 0 } table.coverage td { margin: 0; padding: 0; color: #111; vertical-align: top; } table.coverage td.line-count { width: 50px; text-align: right; padding-right: 5px; } table.coverage td.line-coverage { color: #777 !important; text-align: right; border-left: 1px solid #666; border-right: 1px solid #666; } table.coverage td.text { } table.coverage td span.cline-any { display: inline-block; padding: 0 5px; width: 40px; } table.coverage td span.cline-neutral { background: #eee; } table.coverage td span.cline-yes { background: #b5d592; color: #999; } table.coverage td span.cline-no { background: #fc8c84; } .cstat-yes { color: #111; } .cstat-no { background: #fc8c84; color: #111; } .fstat-no { background: #ffc520; color: #111 !important; } .cbranch-no { background: yellow !important; color: #111; } .missing-if-branch { display: inline-block; margin-right: 10px; position: relative; padding: 0 4px; background: black; color: yellow; xtext-decoration: line-through; } .missing-if-branch .typ { color: inherit !important; } .entity, .metric { font-weight: bold; } .metric { display: inline-block; border: 1px solid #333; padding: 0.3em; background: white; } .metric small { font-size: 80%; font-weight: normal; color: #666; } div.coverage-summary table { border-collapse: collapse; margin: 3em; font-size: 110%; } div.coverage-summary td, div.coverage-summary table th { margin: 0; padding: 0.25em 1em; border-top: 1px solid #666; border-bottom: 1px solid #666; } div.coverage-summary th { text-align: left; border: 1px solid #666; background: #eee; font-weight: normal; } div.coverage-summary th.file { border-right: none !important; } div.coverage-summary th.pic { border-left: none !important; text-align: right; } div.coverage-summary th.pct { border-right: none !important; } div.coverage-summary th.abs { border-left: none !important; text-align: right; } div.coverage-summary td.pct { text-align: right; border-left: 1px solid #666; } div.coverage-summary td.abs { text-align: right; font-size: 90%; color: #444; border-right: 1px solid #666; } div.coverage-summary td.file { text-align: right; border-left: 1px solid #666; white-space: nowrap; } div.coverage-summary td.pic { min-width: 120px !important; } div.coverage-summary a:link { text-decoration: none; color: #000; } div.coverage-summary a:visited { text-decoration: none; color: #333; } div.coverage-summary a:hover { text-decoration: underline; } div.coverage-summary tfoot td { border-top: 1px solid #666; } div.coverage-summary .yui3-datatable-sort-indicator, div.coverage-summary .dummy-sort-indicator { height: 10px; width: 7px; display: inline-block; margin-left: 0.5em; } div.coverage-summary .yui3-datatable-sort-indicator { background: url("http://yui.yahooapis.com/3.6.0/build/datatable-sort/assets/skins/sam/sort-arrow-sprite.png") no-repeat scroll 0 0 transparent; } div.coverage-summary .yui3-datatable-sorted .yui3-datatable-sort-indicator { background-position: 0 -20px; } div.coverage-summary .yui3-datatable-sorted-desc .yui3-datatable-sort-indicator { background-position: 0 -10px; } .high { background: #b5d592 !important; } .medium { background: #ffe87c !important; } .low { background: #fc8c84 !important; } span.cover-fill, span.cover-empty { display:inline-block; border:1px solid #444; background: white; height: 12px; } span.cover-fill { background: #ccc; border-right: 1px solid #444; } span.cover-empty { background: white; border-left: none; } span.cover-full { border-right: none !important; } pre.prettyprint { border: none !important; padding: 0 !important; margin: 0 !important; } .com { color: #999 !important; } </style> </head> <body> <div class='header low'> <h1>Code coverage report for <span class='entity'>src/map/handler/Map.TouchZoom.js</span></h1> <h2> Statements: <span class='metric'>6.67% <small>(3 / 45)</small></span> &nbsp;&nbsp;&nbsp;&nbsp; Branches: <span class='metric'>4.17% <small>(1 / 24)</small></span> &nbsp;&nbsp;&nbsp;&nbsp; Functions: <span class='metric'>0% <small>(0 / 7)</small></span> &nbsp;&nbsp;&nbsp;&nbsp; Lines: <span class='metric'>7.32% <small>(3 / 41)</small></span> &nbsp;&nbsp;&nbsp;&nbsp; </h2> <div class="path"><a href="../../../index.html">All files</a> &#187; <a href="index.html">src/map/handler/</a> &#187; Map.TouchZoom.js</div> </div> <div class='body'> <pre><table class="coverage"> <tr><td class="line-count">1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118</td><td class="line-coverage"><span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-yes">1</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-yes">1</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-no">&nbsp;</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-no">&nbsp;</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-no">&nbsp;</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-no">&nbsp;</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-no">&nbsp;</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-no">&nbsp;</span> <span class="cline-any cline-no">&nbsp;</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-no">&nbsp;</span> <span class="cline-any cline-no">&nbsp;</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-no">&nbsp;</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-no">&nbsp;</span> <span class="cline-any cline-no">&nbsp;</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-no">&nbsp;</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-no">&nbsp;</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-no">&nbsp;</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-no">&nbsp;</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-no">&nbsp;</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-no">&nbsp;</span> <span class="cline-any cline-no">&nbsp;</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-no">&nbsp;</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-no">&nbsp;</span> <span class="cline-any cline-no">&nbsp;</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-no">&nbsp;</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-no">&nbsp;</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-no">&nbsp;</span> <span class="cline-any cline-no">&nbsp;</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-no">&nbsp;</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-no">&nbsp;</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-no">&nbsp;</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-no">&nbsp;</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-no">&nbsp;</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-no">&nbsp;</span> <span class="cline-any cline-no">&nbsp;</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-no">&nbsp;</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-no">&nbsp;</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-no">&nbsp;</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-no">&nbsp;</span> <span class="cline-any cline-no">&nbsp;</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-yes">1</span> <span class="cline-any cline-neutral">&nbsp;</span></td><td class="text"><pre class="prettyprint lang-js">/* * L.Handler.TouchZoom is used by L.Map to add pinch zoom on supported mobile browsers. */ &nbsp; L.Map.mergeOptions({ touchZoom: L.Browser.touch &amp;&amp; <span class="branch-1 cbranch-no" title="branch not covered" >!L.Browser.android23</span> }); &nbsp; L.Map.TouchZoom = L.Handler.extend({ addHooks: <span class="fstat-no" title="function not covered" >function () {</span> <span class="cstat-no" title="statement not covered" > L.DomEvent.on(this._map._container, 'touchstart', this._onTouchStart, this);</span> }, &nbsp; removeHooks: <span class="fstat-no" title="function not covered" >function () {</span> <span class="cstat-no" title="statement not covered" > L.DomEvent.off(this._map._container, 'touchstart', this._onTouchStart, this);</span> }, &nbsp; _onTouchStart: <span class="fstat-no" title="function not covered" >function (e) {</span> <span class="cstat-no" title="statement not covered" > var map = this._map;</span> &nbsp; <span class="cstat-no" title="statement not covered" > if (!e.touches || e.touches.length !== 2 || map._animatingZoom || this._zooming) { <span class="cstat-no" title="statement not covered" >return; </span>}</span> &nbsp; <span class="cstat-no" title="statement not covered" > var p1 = map.mouseEventToLayerPoint(e.touches[0]),</span> p2 = map.mouseEventToLayerPoint(e.touches[1]), viewCenter = map._getCenterLayerPoint(); &nbsp; <span class="cstat-no" title="statement not covered" > this._startCenter = p1.add(p2)._divideBy(2);</span> <span class="cstat-no" title="statement not covered" > this._startDist = p1.distanceTo(p2);</span> &nbsp; <span class="cstat-no" title="statement not covered" > this._moved = false;</span> <span class="cstat-no" title="statement not covered" > this._zooming = true;</span> &nbsp; <span class="cstat-no" title="statement not covered" > this._centerOffset = viewCenter.subtract(this._startCenter);</span> &nbsp; <span class="cstat-no" title="statement not covered" > if (map._panAnim) {</span> <span class="cstat-no" title="statement not covered" > map._panAnim.stop();</span> } &nbsp; <span class="cstat-no" title="statement not covered" > L.DomEvent</span> .on(document, 'touchmove', this._onTouchMove, this) .on(document, 'touchend', this._onTouchEnd, this); &nbsp; <span class="cstat-no" title="statement not covered" > L.DomEvent.preventDefault(e);</span> }, &nbsp; _onTouchMove: <span class="fstat-no" title="function not covered" >function (e) {</span> <span class="cstat-no" title="statement not covered" > if (!e.touches || e.touches.length !== 2) { <span class="cstat-no" title="statement not covered" >return; </span>}</span> &nbsp; <span class="cstat-no" title="statement not covered" > var map = this._map;</span> &nbsp; <span class="cstat-no" title="statement not covered" > var p1 = map.mouseEventToLayerPoint(e.touches[0]),</span> p2 = map.mouseEventToLayerPoint(e.touches[1]); &nbsp; <span class="cstat-no" title="statement not covered" > this._scale = p1.distanceTo(p2) / this._startDist;</span> <span class="cstat-no" title="statement not covered" > this._delta = p1._add(p2)._divideBy(2)._subtract(this._startCenter);</span> &nbsp; <span class="cstat-no" title="statement not covered" > if (this._scale === 1) { <span class="cstat-no" title="statement not covered" >return; </span>}</span> &nbsp; <span class="cstat-no" title="statement not covered" > if (!this._moved) {</span> <span class="cstat-no" title="statement not covered" > L.DomUtil.addClass(map._mapPane, 'leaflet-touching');</span> &nbsp; <span class="cstat-no" title="statement not covered" > map</span> .fire('movestart') .fire('zoomstart'); &nbsp; <span class="cstat-no" title="statement not covered" > this._moved = true;</span> } &nbsp; <span class="cstat-no" title="statement not covered" > L.Util.cancelAnimFrame(this._animRequest);</span> <span class="cstat-no" title="statement not covered" > this._animRequest = L.Util.requestAnimFrame(</span> this._updateOnMove, this, true, this._map._container); &nbsp; <span class="cstat-no" title="statement not covered" > L.DomEvent.preventDefault(e);</span> }, &nbsp; _updateOnMove: <span class="fstat-no" title="function not covered" >function () {</span> <span class="cstat-no" title="statement not covered" > var map = this._map,</span> origin = this._getScaleOrigin(), center = map.layerPointToLatLng(origin), zoom = map.getScaleZoom(this._scale); &nbsp; <span class="cstat-no" title="statement not covered" > map._animateZoom(center, zoom, this._startCenter, this._scale, this._delta, true);</span> }, &nbsp; _onTouchEnd: <span class="fstat-no" title="function not covered" >function () {</span> <span class="cstat-no" title="statement not covered" > if (!this._moved || !this._zooming) { <span class="cstat-no" title="statement not covered" >return; </span>}</span> &nbsp; <span class="cstat-no" title="statement not covered" > var map = this._map;</span> &nbsp; <span class="cstat-no" title="statement not covered" > this._zooming = false;</span> <span class="cstat-no" title="statement not covered" > L.DomUtil.removeClass(map._mapPane, 'leaflet-touching');</span> &nbsp; <span class="cstat-no" title="statement not covered" > L.DomEvent</span> .off(document, 'touchmove', this._onTouchMove) .off(document, 'touchend', this._onTouchEnd); &nbsp; <span class="cstat-no" title="statement not covered" > var origin = this._getScaleOrigin(),</span> center = map.layerPointToLatLng(origin), &nbsp; oldZoom = map.getZoom(), floatZoomDelta = map.getScaleZoom(this._scale) - oldZoom, roundZoomDelta = (floatZoomDelta &gt; 0 ? Math.ceil(floatZoomDelta) : Math.floor(floatZoomDelta)), &nbsp; zoom = map._limitZoom(oldZoom + roundZoomDelta), scale = map.getZoomScale(zoom) / this._scale; &nbsp; <span class="cstat-no" title="statement not covered" > map._animateZoom(center, zoom, origin, scale, null, true);</span> }, &nbsp; _getScaleOrigin: <span class="fstat-no" title="function not covered" >function () {</span> <span class="cstat-no" title="statement not covered" > var centerOffset = this._centerOffset.subtract(this._delta).divideBy(this._scale);</span> <span class="cstat-no" title="statement not covered" > return this._startCenter.add(centerOffset);</span> } }); &nbsp; L.Map.addInitHook('addHandler', 'touchZoom', L.Map.TouchZoom); &nbsp;</pre></td></tr> </table></pre> </div> <div class='footer'> <div class='meta'>Generated by <a href='http://istanbul-js.org' target='_blank'>istanbul</a> at Thu Apr 04 2013 12:16:35 GMT+0300 (EEST)</div> </div> </body> <script src="../../../prettify.js"></script> <script src="http://yui.yahooapis.com/3.6.0/build/yui/yui-min.js"></script> <script> YUI().use('datatable', function (Y) { var formatters = { pct: function (o) { o.className += o.record.get('classes')[o.column.key]; try { return o.value.toFixed(2) + '%'; } catch (ex) { return o.value + '%'; } }, html: function (o) { o.className += o.record.get('classes')[o.column.key]; return o.record.get(o.column.key + '_html'); } }, defaultFormatter = function (o) { o.className += o.record.get('classes')[o.column.key]; return o.value; }; function getColumns(theadNode) { var colNodes = theadNode.all('tr th'), cols = [], col; colNodes.each(function (colNode) { col = { key: colNode.getAttribute('data-col'), label: colNode.get('innerHTML') || ' ', sortable: !colNode.getAttribute('data-nosort'), className: colNode.getAttribute('class'), type: colNode.getAttribute('data-type'), allowHTML: colNode.getAttribute('data-html') === 'true' || colNode.getAttribute('data-fmt') === 'html' }; col.formatter = formatters[colNode.getAttribute('data-fmt')] || defaultFormatter; cols.push(col); }); return cols; } function getRowData(trNode, cols) { var tdNodes = trNode.all('td'), i, row = { classes: {} }, node, name; for (i = 0; i < cols.length; i += 1) { name = cols[i].key; node = tdNodes.item(i); row[name] = node.getAttribute('data-value') || node.get('innerHTML'); row[name + '_html'] = node.get('innerHTML'); row.classes[name] = node.getAttribute('class'); //Y.log('Name: ' + name + '; Value: ' + row[name]); if (cols[i].type === 'number') { row[name] = row[name] * 1; } } //Y.log(row); return row; } function getData(tbodyNode, cols) { var data = []; tbodyNode.all('tr').each(function (trNode) { data.push(getRowData(trNode, cols)); }); return data; } function replaceTable(node) { if (!node) { return; } var cols = getColumns(node.one('thead')), data = getData(node.one('tbody'), cols), table, parent = node.get('parentNode'); table = new Y.DataTable({ columns: cols, data: data, sortBy: 'file' }); parent.set('innerHTML', ''); table.render(parent); } Y.on('domready', function () { replaceTable(Y.one('div.coverage-summary table')); if (typeof prettyPrint === 'function') { prettyPrint(); } }); }); </script> </html>