Text2Mindmap Autosave

Autosaves mindmaps on Text2Mindmap

当前为 2015-07-30 提交的版本,查看 最新版本

您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey 篡改猴Greasemonkey 油猴子Violentmonkey 暴力猴,才能安装此脚本。

您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey 篡改猴,才能安装此脚本。

您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey 篡改猴Violentmonkey 暴力猴,才能安装此脚本。

您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey 篡改猴Userscripts ,才能安装此脚本。

您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey 篡改猴,才能安装此脚本。

您需要先安装一款用户脚本管理器扩展后才能安装此脚本。

(我已经安装了用户脚本管理器,让我安装!)

您需要先安装一款用户样式管理器扩展,比如 Stylus,才能安装此样式。

您需要先安装一款用户样式管理器扩展,比如 Stylus,才能安装此样式。

您需要先安装一款用户样式管理器扩展,比如 Stylus,才能安装此样式。

您需要先安装一款用户样式管理器扩展后才能安装此样式。

您需要先安装一款用户样式管理器扩展后才能安装此样式。

您需要先安装一款用户样式管理器扩展后才能安装此样式。

(我已经安装了用户样式管理器,让我安装!)

// ==UserScript==
// @name         Text2Mindmap Autosave
// @namespace    http://your.homepage/
// @version      0.01
// @description  Autosaves mindmaps on Text2Mindmap
// @author       D.Slee
// @match        http*://www.text2mindmap.com/***********************************************************************************************************************
// @grant        none
// ==/UserScript==

//Plans
//* Allow autosave without refreshing - Add an event listener to the close button, and inititate then
//* Add a method of changing autosave time (input)

var checkInt, saveInt;
var timerInt = false;
var currentTime = 0;
var autosaveTime = localStorage.autosaveTime || 10;
var saveCountdown = localStorage.saveCountdown || false;

Init();
setTimeout(Init2, 1000);

function Init(){
    SaveFile();
}

function Init2(){
    if ($("#savingStateSaved").css("display") == "inline"){
        CheckIfSaveNeeded();
        saveInt = setInterval(CheckIfSaveNeeded, 3000);
    } else {
        SetText("(Auto N/A)");
    }
}

//Check if required to time
function CheckIfSaveNeeded(){
    if ($(".saveMsg").css("display") === "none"){
        SetText("(saved)");
        StopTimer();
    } else {
        if (timerInt === false){
            timerInt = setInterval(Timer, 1000);
            clearInterval(saveInt);
        }
    }
}

//Timer, called every second
function Timer(){
    currentTime += 1;
    modulo = currentTime % autosaveTime;
    if (modulo === 0){
        SaveFile();
        SetText("(saving...)");
        StopTimer();
    } else {
        if (saveCountdown){
            SetText("(autosave " + (autosaveTime - (modulo)).toString() + ")");
        } else {
            SetText("(unsaved)");
        }
    }
}

//Stops timer
function StopTimer(){
    clearInterval(timerInt);
    timerInt = false;
}

//Saving functions, called every 30 seconds
function SaveFile(){
    OpenSave();
    checkInt = setInterval(CheckDone, 500);
}

function CheckDone(){
    if ($("#savingFinished").css("display") == "block" || $("#savingStateUnsaved").css("display") == "block"){
        CloseSave();
        clearInterval(checkInt);
        TextFocus();
        saveInt = setInterval(CheckIfSaveNeeded, 3000);
    }
}

//Changes the text
function SetText(text){
    $('.tab-pane td').eq(1).find('h4').text("Outline your text " + text);
}

//This function refocuses on the text area after being saved
function TextFocus(){
    scrollTop = $("#textArea").scrollTop();
    scrollLeft = $("#textArea").scrollLeft();
    $("#textArea").focus();
    $("#textArea").scrollLeft(scrollLeft);
    $("#textArea").scrollTop(scrollTop);
}

//This function opens a hidden save box
function OpenSave(){
    $("#saveBtn").click();
    $(".modal-backdrop").css("display", "none");
    $("#saveModal").css("display", "none");
}

//This function closes a hidden save box
function CloseSave(){
    $("#saveModal").css("display", "");
    $(".modal-backdrop").css("display", "");
    $(".icon-close").parent().click();
}