Map Updator

Update Map

目前為 2017-02-26 提交的版本,檢視 最新版本

// ==UserScript==
// @name         Map Updator
// @namespace    http://api.micetigri.fr/
// @version      0.4
// @description  Update Map
// @author       Billysmille
// @match        http://api.micetigri.fr/maps/
// @require      https://xmlhttp.googleapis.com/xmlhttp/libs/jquery/3.1.0/jquery.min.js
// @grant        none
// ==/UserScript==

(function (){
    function updateMap() {
        var array = [];
        var pattern = /@\d+/g;
        var match;
        while ((match = pattern.exec($('#lsmap').val()))) {
            array.push(match[0]);
        }
        if (array.length) {
            var i = 0;
            var wait = window.setInterval(function () {
                if (i < array.length) {
                    var xmlhttp = new XMLHttpRequest();
                    xmlhttp.onreadystatechange = function () {
                        if (this.readyState == 4 && this.status == 200) {
                            var session = this.responseText.match(/session="(\w+)"/i)[1];
                            var socket = io.connect('http://node.micetigri.fr:443/');
                            socket.emit('map', {
                                map: array[i],
                                id: session
                            });
                        }
                    };
                    xmlhttp.open('GET', 'http://api.micetigri.fr/maps/' + array[i], true);
                    xmlhttp.send();
                    i++;
                }
                else {
                    $('#lsmap').val('');
                    $('#lsmap').attr('readonly', false);
                    $('.change-log').append('<p>Finished</p>');
                    window.clearInterval(wait);
                }
            }, 10000);
            $('#lsmap').val('Updating...');
            $('#lsmap').attr('readonly', true);
            $('.change-log').append('<p>' + array.length + ' maps will be updated. Time left: ' + Math.ceil(array.length / 6) + ' minutes</p>');
        }
        else {
            $('#lsmap').val('');
            $('.change-log').append('<p>Error</p>');
        }
    }
    $(document).ready(function (){
        $('.row:has(#MapViewer)').remove();
        $('.panel-body:has(#mapUpdator)').html('<input type="text" class="form-control" id="lsmap" placeholder="Enter code to update">');
        $('.panel-body:has(#copy_this_text)').html('<article class="change-log"></article>');
        $('.change-log').css({
            'height': '190px',
            'overflow': 'auto'
        });
        $('#lsmap').change(updateMap);
    });
})();