您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
Want better control of your Munzee sandbox? Here you go!
当前为
// ==UserScript== // @name Zandboxee // @namespace none // @version 2019.01.08.1438ß // @description Want better control of your Munzee sandbox? Here you go! // @supportURL https://Discord.me/TheShoeStore // @author technical13 // @match https://www.munzee.com/map/* // @grant none // ==/UserScript== // jshint esversion: 6 /* KNOWN ISSUES LIST // Munzee's "Quick Deploy" feature may round the least significant digit of the latitude - not an issue with the script //*/ /* TO-DO LIST // Add a way to import a .csv file into the sandbox // Add a way to import/export a sandbox as a .json file into/from the sandbox // Add a button to quick deploy each pin in the table - without using the actual (buggy) quick deploy function // Drag and drop reordering of pins //*/ var isDebug = false; var intVerbosity = 0; const ver = '2019.01.08.1438ß'; const scriptName = 'Zandboxee v' + ver; function log( intV, strConsole, strLog, ...arrArgs ) { if ( intV === undefined ) { intV = 0; } if ( strConsole === undefined ) { strConsole = 'log'; } if ( strLog === undefined ) { strLog = '%o'; } if ( intVerbosity >= intV && ( strConsole === 'groupEnd' ) ) { console[ strConsole ](); } if ( intV === 0 || ( isDebug && intVerbosity >= intV ) ) { console[ strConsole ]( '[%i]: %s: ' + strLog, intV, scriptName, ...arrArgs ); } } function toBoolean( val ) { const arrTrue = [ undefined, null, '', true, 'true', 1, '1', 'on', 'yes' ]; val = ( typeof( val ) === 'string' ? val.toLowerCase() : val ); log( 4, 'log', 'toBoolean() is returning: %o', ( arrTrue.indexOf( val ) !== -1 ? true : false ) ); return ( arrTrue.indexOf( val ) !== -1 ? true : false ); } const intParamsStart = ( document.URL.indexOf( '?' ) + 1 ); const strParams = document.URL.substr( intParamsStart ); const arrParamSets = strParams.split( '&' ); var objParams = {}; arrParamSets.forEach( function( strParam ) { let arrParam = strParam.split( '=' ); let strParamName = ( arrParam[ 0 ].toLowerCase() || '' ); if ( strParamName === 'verbosity' ) { isDebug = true; intVerbosity = ( arrParam[ 1 ] ? ( parseInt( arrParam[ 1 ] ) < 0 ? 0 : ( parseInt( arrParam[ 1 ] ) > 9 ? 9 : parseInt( arrParam[ 1 ] ) ) ) : 9 ); } else if ( strParamName === 'debug' ) { isDebug = toBoolean( arrParam[ 1 ] ); intVerbosity = 1; } } ); log( 1, 'warn', 'Debug mode is on with verbosity level: %o', intVerbosity ); log( 1, 'groupCollapsed', 'Verbosity options: (click to expand)' ); log( 1, 'log', '\n\t1) Summary\n\t2) Parameters retrieved from URL\n\t3) Variables set\n\t4) Function returns\n\t9) ALL debugging info and this notice.' ); log( 1, 'groupEnd' ); var munzeesandboxcounter = parseInt( localStorage.munzeesandboxcounter || 0 ); var munzeesandbox = JSON.parse( localStorage.munzeesandbox || '[]' ); if ( munzeesandboxcounter !== munzeesandbox.length ) { munzeesandboxcounter = munzeesandbox.length; localStorage.setItem( 'munzeesandboxcounter', munzeesandboxcounter ); log( 1, 'error', 'munzeesandboxcounter failed sanity check!\n\tReset value to: %i', munzeesandboxcounter ); } if ( munzeesandboxcounter > 0 ) { log( 3, 'log', 'Sandbox has %i pin%s in it.', munzeesandboxcounter, ( munzeesandboxcounter === 1 ? '' : 's' ) ); } else { log( 3, 'error', 'Sandbox is empty.' ); } function mapChanged() { log( 4, 'log', 'mapChanged() updating Add new Munzee placeholder coordinates.' ); document.getElementById( 'NewMunzeeLat' ).placeholder = map.getCenter().lat; document.getElementById( 'NewMunzeeLng' ).placeholder = map.getCenter().lng; } function pinMoved( objDragged ) { var intPin = 0; for ( var pinNode in mapSandbox.list ) { if ( objDragged.target._element.isSameNode( mapSandbox.list[ pinNode ].marker._element ) ) { intPin = parseInt( pinNode ); } } var objUpdatedMunzee = { lng: objDragged.target._lngLat.lng, lat: objDragged.target._lngLat.lat }; log( 4, 'log', 'pinMoved( %i ) updating munzeesandbox with new coordinates: [ %o, %o ]', intPin, objUpdatedMunzee.lat, objUpdatedMunzee.lng ); munzeesandbox[ intPin ][ 0 ] = objUpdatedMunzee.lat; munzeesandbox[ intPin ][ 1 ] = objUpdatedMunzee.lng; log( 4, 'log', 'pinMoved( %i ) updating table row %i with new coordinates: [ %o, %o ]', intPin, ( intPin + 1 ), objUpdatedMunzee.lat, objUpdatedMunzee.lng ); $( 'input#ZandboxRow-' + ( intPin + 1 ) + '-lat' )[ 0 ].value = objUpdatedMunzee.lat; $( 'input#ZandboxRow-' + ( intPin + 1 ) + '-lng' )[ 0 ].value = objUpdatedMunzee.lng; log( 4, 'log', 'pinMoved() performing:\n\tFunction.saveSandbox()' ); Function.saveSandbox(); } Function.prototype.saveSandbox = function () { localStorage.setItem( 'munzeesandbox', JSON.stringify( munzeesandbox ) ); localStorage.setItem( 'munzeesandboxcounter', munzeesandboxcounter ); } function createTableHead() { var domZandboxTableHead = document.createElement( 'thead' ); var domZandBoxTableHeadRow = document.createElement( 'tr' ); var domZandBoxTableHeadColPin = document.createElement( 'th' ); var domZandBoxTableHeadColLat = document.createElement( 'th' ); var domZandBoxTableHeadColLon = document.createElement( 'th' ); var domZandBoxTableHeadColOwn = document.createElement( 'th' ); var domZandBoxTableHeadColName = document.createElement( 'th' ); var domZandBoxTableHeadColId = document.createElement( 'th' ); var domZandBoxTableHeadColSaveAddRem = document.createElement( 'th' ); domZandBoxTableHeadColId.className = 'hidden-id'; domZandBoxTableHeadColPin.style = 'text-align: center !important; width: 50px !important;'; domZandBoxTableHeadColLat.style = 'text-align: center !important;'; domZandBoxTableHeadColLon.style = 'text-align: center !important;'; domZandBoxTableHeadColOwn.style = 'text-align: center !important;'; domZandBoxTableHeadColName.style = 'text-align: center !important;'; domZandBoxTableHeadColId.style = 'text-align: center !important; display: none;' domZandBoxTableHeadColSaveAddRem.style = 'text-align: center !important;'; domZandBoxTableHeadColPin.innerText = '#'; domZandBoxTableHeadColLat.innerText = 'Latitude'; domZandBoxTableHeadColLon.innerText = 'Longitude'; domZandBoxTableHeadColOwn.innerText = 'Own'; domZandBoxTableHeadColName.innerText = 'Name'; domZandBoxTableHeadColId.innerText = 'ID'; domZandBoxTableHeadColSaveAddRem.innerHTML = 'Save - Add/Remove'; domZandBoxTableHeadRow.append( domZandBoxTableHeadColPin ); domZandBoxTableHeadRow.append( domZandBoxTableHeadColLat ); domZandBoxTableHeadRow.append( domZandBoxTableHeadColLon ); domZandBoxTableHeadRow.append( domZandBoxTableHeadColOwn ); domZandBoxTableHeadRow.append( domZandBoxTableHeadColName ); domZandBoxTableHeadRow.append( domZandBoxTableHeadColId ); domZandBoxTableHeadRow.append( domZandBoxTableHeadColSaveAddRem ); domZandboxTableHead.append( domZandBoxTableHeadRow ); return domZandboxTableHead; } Function.prototype.removeTableRow = function ( valId ) { var intIndex = -1; if ( isNaN( valId ) ) { valId = valId.trim(); intIndex = ( valId === 'ZandboxNewRow' ? ( $( 'table#ZandboxTable tr' ).length - 2 ) : parseInt( valId.replace( 'ZandboxRow-', '' ) ) ) } else { intIndex = parseInt( valId ); } log( 5, 'info', 'Function.prototype.removeTableRow() removing row %i-1 (from %o)', intIndex, valId ); if ( valId !== 'ZandboxNewRow' ) { log( 4, 'log', 'Function.prototype.removeTableRow() updating row indices.' ); $( 'table#ZandboxTable tr' ).each( function( intRow, domTR ) { if ( intRow === intIndex ) { log( 4, 'log', 'Function.prototype.removeTableRow() renaming row %i to ZandboxRemoveRow-%i', intRow, intRow ); domTR.id = 'ZandboxRemoveRow-' + intRow; } else if ( intRow > intIndex && domTR.id !== 'ZandboxNewRow' ) { log( 4, 'log', 'Function.prototype.removeTableRow() calling Function.updateMunzee( %i )', ( intRow - 1 ) ); Function.updateMunzee( intRow - 1 ); log( 4, 'log', 'Function.prototype.removeTableRow() renumbering row %i to %i.', intRow, ( intRow - 1 ) ); domTR.id = 'ZandboxRow-' + ( intRow - 1 ); domTR.cells[ 0 ].innerText = ( intRow - 1 ); domTR.cells[ 5 ].children[ 0 ].value = ( intRow - 1 ); } else if ( domTR.id === 'ZandboxNewRow' ) { log( 4, 'log', 'Function.prototype.removeTableRow() renumbering add munzee row to %i.', ( intRow - 1 ) ); domTR.cells[ 0 ].innerText = ( intRow - 1 ); domTR.cells[ 5 ].children[ 0 ].placeholder = ( intRow - 2 ); } } ); } else { log( 4, 'log', 'Function.prototype.removeTableRow() renaming ZandboxNewRow to ZandboxRemoveRow.' ); document.getElementById( 'ZandboxNewRow' ).id = 'ZandboxRemoveRow-' + intIndex; } log( 4, 'log', 'Function.prototype.removeTableRow() removing row %i (%o) from table.', intIndex, valId ); $( 'tr#ZandboxRemoveRow-' + intIndex ).remove(); } Function.prototype.createNewMunzeeRow = function () { log( 4, 'log', 'Function.prototype.createNewMunzeeRow() creating "Add new Munzee" row for table.' ); var domZandBoxTableRow = document.createElement( 'tr' ); var domZandBoxTableRowPin = document.createElement( 'td' ); var domZandBoxTableRowLat = document.createElement( 'td' ); var domZandBoxTableRowLon = document.createElement( 'td' ); var domZandBoxTableRowOwn = document.createElement( 'td' ); var domZandBoxTableRowName = document.createElement( 'td' ); var domZandBoxTableRowId = document.createElement( 'td' ); var domZandBoxTableRowAddClear = document.createElement( 'td' ); domZandBoxTableRow.id = 'ZandboxNewRow'; domZandBoxTableRowId.style = 'display: none;'; domZandBoxTableRowId.className = 'hidden-id'; var domZandBoxTextPin = document.createTextNode( munzeesandbox.length + 1 ); var domZandBoxInputLat = document.createElement( 'input' ); var domZandBoxInputLon = document.createElement( 'input' ); var domZandBoxInputOwn = document.createElement( 'input' ); var domZandBoxInputName = document.createElement( 'input' ); var domZandBoxInputId = document.createElement( 'input' ); var domZandBoxInputAdd = document.createElement( 'input' ); var domZandBoxInputClear = document.createElement( 'input' ); domZandBoxInputLat.type = 'text'; domZandBoxInputLon.type = 'text'; domZandBoxInputOwn.type = 'checkbox'; domZandBoxInputName.type = 'text'; domZandBoxInputId.type = 'number'; domZandBoxInputAdd.type = 'button'; domZandBoxInputClear.type = 'button'; domZandBoxInputLat.id = 'NewMunzeeLat'; domZandBoxInputLon.id = 'NewMunzeeLng'; domZandBoxInputOwn.id = 'NewMunzeeOwn'; domZandBoxInputName.id = 'NewMunzeeName'; domZandBoxInputId.id = 'NewMunzeeId'; domZandBoxInputAdd.id = 'NewMunzeeAdd'; domZandBoxInputClear.id = 'clearSB'; domZandBoxInputLat.size = '25'; domZandBoxInputLon.size = '25'; domZandBoxInputName.maxlength = '33'; domZandBoxInputName.size = '35'; domZandBoxInputLat.style = 'text-align: right;'; domZandBoxInputLon.style = 'text-align: right;'; domZandBoxInputName.style = 'text-align: right;'; domZandBoxInputId.style = 'text-align: center;'; domZandBoxInputClear.style = 'background-color: #FF6666; font-weight: bold;'; domZandBoxInputLat.placeholder = map.getCenter().lat; domZandBoxInputLon.placeholder = map.getCenter().lng; domZandBoxInputOwn.checked = true; domZandBoxInputName.placeholder = 'Quick Deploy by ' + username; domZandBoxInputId.placeholder = munzeesandbox.length.toString(); domZandBoxInputAdd.value = 'Add'; domZandBoxInputAdd.setAttribute( 'onClick', 'Function.addMunzee();'); domZandBoxInputClear.setAttribute( 'onClick', "if(confirm('Click OK if you are sure you want to clear your sandbox:',false)){Function.clearSandbox();}" ); domZandBoxInputClear.value = 'Clear'; domZandBoxTableRowPin.append( domZandBoxTextPin ); domZandBoxTableRowLat.append( domZandBoxInputLat ); domZandBoxTableRowLon.append( domZandBoxInputLon ); domZandBoxTableRowOwn.append( domZandBoxInputOwn ); domZandBoxTableRowName.append( domZandBoxInputName ); domZandBoxTableRowId.append( domZandBoxInputId ); domZandBoxTableRowAddClear.append( domZandBoxInputAdd ); domZandBoxTableRowAddClear.append( domZandBoxInputClear ); domZandBoxTableRow.append( domZandBoxTableRowPin ); domZandBoxTableRow.append( domZandBoxTableRowLat ); domZandBoxTableRow.append( domZandBoxTableRowLon ); domZandBoxTableRow.append( domZandBoxTableRowOwn ); domZandBoxTableRow.append( domZandBoxTableRowName ); domZandBoxTableRow.append( domZandBoxTableRowId ); domZandBoxTableRow.append( domZandBoxTableRowAddClear ); log( 4, 'log', 'Function.prototype.createNewMunzeeRow() returning new row DOM:\n\t%o', domZandBoxTableRow ); return domZandBoxTableRow; } Function.prototype.addTableRow = function ( arrSandPin, intIndex ) { log( 4, 'log', 'Function.prototype.addTableRow() creating row #%i for table with pin:\n\t%o', ( intIndex + 1 ), arrSandPin ); var domZandBoxTableRow = document.createElement( 'tr' ); var domZandBoxTableRowPin = document.createElement( 'td' ); var domZandBoxTableRowLat = document.createElement( 'td' ); var domZandBoxTableRowLon = document.createElement( 'td' ); var domZandBoxTableRowOwn = document.createElement( 'td' ); var domZandBoxTableRowName = document.createElement( 'td' ); var domZandBoxTableRowId = document.createElement( 'td' ); var domZandBoxTableRowSaveRemove = document.createElement( 'td' ); domZandBoxTableRow.id = 'ZandboxRow-' + ( intIndex + 1 ); domZandBoxTableRowId.style = 'display: none;'; domZandBoxTableRowId.className = 'hidden-id'; var domZandBoxTextPin = document.createTextNode( intIndex + 1 ); var domZandBoxInputLat = document.createElement( 'input' ); var domZandBoxInputLon = document.createElement( 'input' ); var domZandBoxInputOwn = document.createElement( 'input' ); var domZandBoxInputName = document.createElement( 'input' ); var domZandBoxInputId = document.createElement( 'input' ); var domZandBoxInputSave = document.createElement( 'input' ); var domZandBoxInputRemove = document.createElement( 'input' ); domZandBoxInputLat.type = 'text'; domZandBoxInputLon.type = 'text'; domZandBoxInputOwn.type = 'checkbox'; domZandBoxInputName.type = 'text'; domZandBoxInputId.type = 'number'; domZandBoxInputSave.type = 'button'; domZandBoxInputRemove.type = 'button'; domZandBoxInputLat.id = 'ZandboxRow-' + ( intIndex + 1 ) + '-lat'; domZandBoxInputLon.id = 'ZandboxRow-' + ( intIndex + 1 ) + '-lng'; domZandBoxInputOwn.id = 'ZandboxRow-' + ( intIndex + 1 ) + '-own'; domZandBoxInputName.id = 'ZandboxRow-' + ( intIndex + 1 ) + '-name'; domZandBoxInputId.id = 'ZandboxRow-' + ( intIndex + 1 ) + '-id'; domZandBoxInputLat.size = '25'; domZandBoxInputLon.size = '25'; domZandBoxInputName.maxlength = '33'; domZandBoxInputName.size = '35'; domZandBoxInputLat.style = 'text-align: right;'; domZandBoxInputLon.style = 'text-align: right;'; domZandBoxInputName.style = 'text-align: right;'; domZandBoxInputId.style = 'text-align: center;'; domZandBoxInputLat.setAttribute( 'value', ( arrSandPin[ 0 ] || 0 ) ); domZandBoxInputLon.setAttribute( 'value', ( arrSandPin[ 1 ] || 0 ) ); domZandBoxInputOwn.checked = ( arrSandPin[ 2 ] === 1 ? true : false ); domZandBoxInputName.setAttribute( 'value', ( arrSandPin[ 3 ] || '' ) ); domZandBoxInputId.setAttribute( 'value', ( arrSandPin[ 4 ] || '' ) ); domZandBoxInputSave.setAttribute( 'value', 'Save' ); domZandBoxInputSave.setAttribute( 'onClick', "Function.updateMunzee( parseInt( $( this ).parents( 'tr' ).attr( 'id' ).replace( 'ZandboxRow-', '' ) ) );" ); domZandBoxInputRemove.setAttribute( 'value', 'Remove' ); domZandBoxInputRemove.setAttribute( 'onClick', "Function.removeMunzee( parseInt( $( this ).parents( 'tr' ).attr( 'id' ).replace( 'ZandboxRow-', '' ) ) );" ); domZandBoxTableRowPin.append( domZandBoxTextPin ); domZandBoxTableRowLat.append( domZandBoxInputLat ); domZandBoxTableRowLon.append( domZandBoxInputLon ); domZandBoxTableRowOwn.append( domZandBoxInputOwn ); domZandBoxTableRowName.append( domZandBoxInputName ); domZandBoxTableRowId.append( domZandBoxInputId ); domZandBoxTableRowSaveRemove.append( domZandBoxInputSave ); domZandBoxTableRowSaveRemove.append( domZandBoxInputRemove ); domZandBoxTableRow.append( domZandBoxTableRowPin ); domZandBoxTableRow.append( domZandBoxTableRowLat ); domZandBoxTableRow.append( domZandBoxTableRowLon ); domZandBoxTableRow.append( domZandBoxTableRowOwn ); domZandBoxTableRow.append( domZandBoxTableRowName ); domZandBoxTableRow.append( domZandBoxTableRowId ); domZandBoxTableRow.append( domZandBoxTableRowSaveRemove ); log( 4, 'log', 'Function.prototype.addTableRow() returning new row DOM:\n\t%o', domZandBoxTableRow ); return domZandBoxTableRow; } Function.prototype.updateMunzee = function( valId ) { var intIndex = ( isNaN( valId ) ? parseInt( valId.replace( 'ZandboxRow-', '' ) ) : valId ); log( 5, 'info', 'Function.prototype.updateMunzee() updating sandbox item %i-1 (from %o)', intIndex, valId ); log( 4, 'log', 'Function.prototype.updateMunzee() updating munzee %s', munzeesandbox[ intIndex - 1 ][ 3 ] ); var objUpdatedMunzee = { lng: parseFloat( $( 'input#ZandboxRow-' + intIndex + '-lng' ).val() || map.getCenter().lng ), lat: parseFloat( $( 'input#ZandboxRow-' + intIndex + '-lat' ).val() || map.getCenter().lat ), name: ( $( 'input#ZandboxRow-' + intIndex + '-name' ).val() || 'Quick Deploy by " + username + "' ), id: ( $( 'input#ZandboxRow-' + intIndex + '-id' ).val() || ( intIndex - 1 ).toString() ), own: ( document.getElementById( 'ZandboxRow-' + intIndex + '-own' ).checked ? 1 : 0 ) }; log( 4, 'log', 'Function.prototype.updateMunzee() updating marker on map from [ %o, %o ] to [ %o, %o ]', mapSandbox.list[ ( intIndex - 1 ) ].marker._lngLat.lng, mapSandbox.list[ ( intIndex - 1 ) ].marker._lngLat.lat, objUpdatedMunzee.lng, objUpdatedMunzee.lat ); mapSandbox.list[ ( intIndex - 1 ) ].marker.setLngLat( [ objUpdatedMunzee.lng, objUpdatedMunzee.lat ] ); log( 4, 'log', 'Function.prototype.updateMunzee() updating mapSandbox.list[ %i ] (%s)', ( intIndex - 1 ), mapSandbox.list[ intIndex - 1 ].title ); mapSandbox.list[ intIndex - 1 ].id = objUpdatedMunzee.id; mapSandbox.list[ intIndex - 1 ].title = objUpdatedMunzee.name; mapSandbox.list[ intIndex - 1 ].coordinates[ 0 ] = objUpdatedMunzee.lng; mapSandbox.list[ intIndex - 1 ].coordinates[ 1 ] = objUpdatedMunzee.lat; mapSandbox.list[ intIndex - 1 ].myOwn = objUpdatedMunzee.own; log( 4, 'info', 'Function.prototype.updateMunzee() updated %i in mapSandbox.list to:\n\t%o', ( intIndex - 1 ), mapSandbox.list[ intIndex - 1 ] ); log( 4, 'log', 'Function.prototype.updateMunzee() performing:\n\tmunzeesandbox[ %i ] = %o', ( intIndex - 1 ), [ objUpdatedMunzee.lng, objUpdatedMunzee.lat, objUpdatedMunzee.own, objUpdatedMunzee.name, objUpdatedMunzee.id ] ); munzeesandbox[ intIndex - 1 ] = [ objUpdatedMunzee.lat, objUpdatedMunzee.lng, objUpdatedMunzee.own, objUpdatedMunzee.name, objUpdatedMunzee.id ]; log( 4, 'log', 'Function.prototype.updateMunzee() performing:\n\tFunction.saveSandbox()' ); Function.saveSandbox(); } Function.prototype.removeMunzee = function ( valId ) { var intIndex = ( isNaN( valId ) ? parseInt( valId.replace( 'ZandboxRow-', '' ) ) : valId ); log( 4, 'log', 'Function.prototype.removeMunzee() removing munzee (%o) %i (%s) from sandbox.', valId, ( intIndex - 1 ), munzeesandbox[ intIndex - 1 ][ 3 ] ); log( 4, 'log', 'Function.prototype.removeMunzee() removing marker from map' ); mapSandbox.list[ ( intIndex - 1 ) ].marker.remove(); log( 4, 'log', 'Function.prototype.removeMunzee() splicing %i (%s) from mapSandbox.list', ( intIndex - 1 ), mapSandbox.list[ intIndex - 1 ].title ); mapSandbox.list.splice( ( intIndex - 1 ), 1 ); log( 4, 'info', 'Function.prototype.removeMunzee() spliced %i from mapSandbox.list leaving:\n\t%o', ( intIndex - 1 ), mapSandbox.list ); log( 4, 'log', 'Function.prototype.removeMunzee() splicing %i (%s) from munzeesandbox', ( intIndex - 1 ), munzeesandbox[ intIndex - 1 ][ 3 ] ); munzeesandbox.splice( ( intIndex - 1 ), 1 ); log( 4, 'info', 'Function.prototype.removeMunzee() spliced %i from munzeesandbox leaving:\n\t%o', ( intIndex - 1 ), munzeesandbox ); log( 4, 'info', 'Function.prototype.removeMunzee() decrementing munzeesandboxcounter-- to %i', ( munzeesandboxcounter - 1 ) ); munzeesandboxcounter--; log( 4, 'log', 'Function.prototype.removeMunzee() performing:\n\tFunction.saveSandbox()' ); Function.saveSandbox(); log( 4, 'log', 'Function.prototype.removeMunzee() performing:\n\tFunction.removeTableRow( %o )', intIndex ); Function.removeTableRow( intIndex ); } Function.prototype.addMunzee = function() { var objNewMunzee = { lng: ( $( 'input#NewMunzeeLng' ).val() || map.getCenter().lng ), lat: ( $( 'input#NewMunzeeLat' ).val() || map.getCenter().lat ), name: ( $( 'input#NewMunzeeName' ).val() || 'Quick Deploy by ' + username ), id: ( $( 'input#NewMunzeeId' ).val() || $( 'input#NewMunzeeId' )[ 0 ].placeholder ), own: ( document.getElementById( 'NewMunzeeOwn' ).checked ? 1 : 0 ) }; log( 4, 'log', 'Function.prototype.addMunzee() performing:\n\tmapSandbox.addItem( %o, %o, %o )', [ objNewMunzee.lng, objNewMunzee.lat ], objNewMunzee.name, objNewMunzee.own ); mapSandbox.addItem( [ objNewMunzee.lng, objNewMunzee.lat ], objNewMunzee.name, objNewMunzee.own ); mapSandbox.list[ mapSandbox.length - 1 ].marker.on( 'dragend', objDragged => pinMoved( objDragged ) ); log( 2, 'log', 'Created move listener for pin #%i', ( mapSandbox.length - 1 ) ); initilSB = 1; log( 4, 'log', 'Function.prototype.addMunzee() performing:\n\tmunzeesandbox.push( %o )', [ objNewMunzee.lat, objNewMunzee.lng, objNewMunzee.own, objNewMunzee.name, munzeesandboxcounter.toString() ] ); munzeesandbox.push( [ objNewMunzee.lat, objNewMunzee.lng, objNewMunzee.own, objNewMunzee.name, munzeesandboxcounter.toString() ] ); munzeesandboxcounter++; log( 4, 'info', 'munzeesandbox now contains:\n%o', munzeesandbox ); log( 4, 'log', 'Function.prototype.addMunzee() performing:\n\tFunction.removeTableRow( \'%s\' )', 'ZandboxNewRow' ); Function.removeTableRow( 'ZandboxNewRow' ); log( 4, 'log', 'Function.prototype.addMunzee() performing:\n\tFunction.addTableRow( %o, %i )', munzeesandbox[ munzeesandboxcounter - 1 ], munzeesandboxcounter - 1 ); $( 'table#ZandboxTable > tbody' ).append( Function.addTableRow( munzeesandbox[ munzeesandboxcounter - 1 ], munzeesandboxcounter - 1 ) ); log( 4, 'log', 'Function.prototype.addMunzee() performing:\n\tFunction.createNewMunzeeRow()' ); $( 'table#ZandboxTable > tbody' ).append( Function.createNewMunzeeRow() ); if ( isDebug ) { $( '.hidden-id' ).show(); } log( 4, 'log', 'Function.prototype.addMunzee() performing:\n\tFunction.saveSandbox()' ); Function.saveSandbox(); } Function.prototype.clearSandbox = function() { log( 4, 'log', 'Function.prototype.clearSandbox clearing localStorage items.' ); localStorage.removeItem( 'munzeesandboxcounter' ); localStorage.removeItem( 'munzeesandbox' ); log( 4, 'log', 'Function.prototype.clearSandbox performing:\n\t$( \'tr#ZandboxNewRow\' ).remove()' ); $( 'tr#ZandboxNewRow' ).remove(); log( 4, 'log', 'Function.prototype.clearSandbox clearing table rows.' ); for ( var i = $( 'table#ZandboxTable > tbody > tr' ).length; i > 0; i-- ) { log( 4, 'log', 'Function.prototype.clearSandbox performing:\n\t$( \'tr#ZandboxRow-\' + %i ).remove()', i ); $( 'tr#ZandboxRow-' + i ).remove(); log( 4, 'log', 'Function.prototype.removeMunzee() removing marker from map' ); mapSandbox.list[ i - 1 ].marker.remove(); } log( 4, 'log', 'Function.prototype.clearSandbox performing Function.createNewMunzeeRow()' ); $( 'table#ZandboxTable > tbody' ).append( Function.createNewMunzeeRow() ); } var domZandboxDiv = document.createElement( 'div' ); domZandboxDiv.id = 'zandbox'; domZandboxDiv.className = 'panel-footer'; domZandboxDiv.style = 'text-align: center;'; var domZandboxTable = document.createElement( 'table' ); domZandboxTable.id = 'ZandboxTable'; domZandboxTable.style = 'width: 100%;'; domZandboxTable.append( createTableHead() ); var domZandboxTableBody = document.createElement( 'tbody' ); munzeesandbox.forEach( function( arrSandPin, intIndex, arrSandbox ) { domZandboxTableBody.append( Function.addTableRow( arrSandPin, intIndex ) ); } ); domZandboxTableBody.append( Function.createNewMunzeeRow() ); domZandboxTable.append( domZandboxTableBody ); domZandboxDiv.append( domZandboxTable ); ( function() { 'use strict'; log( 0, 'info', 'Script loaded.' ); $( 'div#filterboxes label' ).eq( 0 )[ 0 ].childNodes[ 2 ].nodeValue = $( 'div#filterboxes label' ).eq( 0 )[ 0 ].childNodes[ 2 ].nodeValue .replace( ' munzees', '' ).replace( 'exclude', 'hide' );// Shorten & clarify `exclude own munzees` $( 'div#filterboxes label' ).eq( 1 )[ 0 ].childNodes[ 2 ].nodeValue = $( 'div#filterboxes label' ).eq( 1 )[ 0 ].childNodes[ 2 ].nodeValue .replace( ' munzees', '' ).replace( 'exclude', 'hide' );// Shorten & clarify `exclude captured munzees` $( 'div#filterboxes label' ).eq( 4 )[ 0 ].childNodes[ 2 ].nodeValue = $( 'div#filterboxes label' ).eq( 4 )[ 0 ].childNodes[ 2 ].nodeValue .replace( 'only uncaptured', 'FTC opportunities' );// Clarify `only uncaptured` $( 'div#sandbox' ).remove();// We're not going to use the default sandbox buttons anymore. $( 'input#showSBbuttons' ).click( function( event ) { event.preventDefault(); $( 'div#showsandbox' ).empty();// hide button mapSandbox = initSandbox();// initialize sandbox var arrSandBoxMunzee = JSON.parse( localStorage.getItem( 'munzeesandbox' ) ); for ( var n in arrSandBoxMunzee ) { mapSandbox.addItem( [ arrSandBoxMunzee[ n ][ 1 ], arrSandBoxMunzee[ n ][ 0 ] ], arrSandBoxMunzee[ n ][ 3 ], arrSandBoxMunzee[ n ][ 2 ] ); mapSandbox.list[ n ].marker.on( 'dragend', objDragged => pinMoved( objDragged ) ); log( 2, 'log', 'Created move listener for pin #%i', n ); } $( 'div.panel.panel-default' ).append( domZandboxDiv );// Add table with contents of sandbox if ( isDebug ) { $( '.hidden-id' ).show(); } map.on( 'resize', mapChanged ).on( 'touchend', mapChanged ).on( 'dragend', mapChanged ).on( 'zoomend', mapChanged ).on( 'moveend', mapChanged ); } ); } )();
QingJ © 2025
镜像随时可能失效,请加Q群300939539或关注我们的公众号极客氢云获取最新地址