mirror of
				https://github.com/node-red/node-red.git
				synced 2025-03-01 10:36:34 +00:00 
			
		
		
		
	Add option to remember zoom and scroll position in localStorage
This commit is contained in:
		@@ -75,6 +75,8 @@
 | 
			
		||||
            "view": {
 | 
			
		||||
                "view": "View",
 | 
			
		||||
                "grid": "Grid",
 | 
			
		||||
                "storeZoom": "Restore zoom level on load",
 | 
			
		||||
                "storePosition": "Restore scroll position on load",
 | 
			
		||||
                "showGrid": "Show grid",
 | 
			
		||||
                "snapGrid": "Snap to grid",
 | 
			
		||||
                "gridSize": "Grid size",
 | 
			
		||||
 
 | 
			
		||||
@@ -121,6 +121,13 @@ RED.userSettings = (function() {
 | 
			
		||||
        //         {setting:"theme", label:"Theme",options:function(done){ done([{val:'',text:'default'}].concat(RED.settings.theme("themes"))) }},
 | 
			
		||||
        //     ]
 | 
			
		||||
        // },
 | 
			
		||||
        {
 | 
			
		||||
            title: "menu.label.view.view",
 | 
			
		||||
            options: [
 | 
			
		||||
                {setting:"view-store-zoom",label:"menu.label.view.storeZoom", default: false, toggle:true, onchange: function(val) { if (!val) { RED.settings.removeLocal("zoom-level")}}},
 | 
			
		||||
                {setting:"view-store-position",label:"menu.label.view.storePosition", default: false, toggle:true, onchange: function(val) { if (!val) { RED.settings.removeLocal("scroll-positions")}}},
 | 
			
		||||
            ]
 | 
			
		||||
        },
 | 
			
		||||
        {
 | 
			
		||||
            title: "menu.label.view.grid",
 | 
			
		||||
            options: [
 | 
			
		||||
 
 | 
			
		||||
@@ -678,13 +678,41 @@ RED.view = (function() {
 | 
			
		||||
            show: function(n) { return !n.valid }
 | 
			
		||||
        })
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
        if (RED.settings.get("editor.view.view-store-zoom")) {
 | 
			
		||||
            var  userZoomLevel = parseFloat(RED.settings.getLocal('zoom-level'))
 | 
			
		||||
            if (!isNaN(userZoomLevel)) {
 | 
			
		||||
                scaleFactor = userZoomLevel
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        var onScrollTimer = null;
 | 
			
		||||
        function storeScrollPosition() {
 | 
			
		||||
            workspaceScrollPositions[RED.workspaces.active()] = {
 | 
			
		||||
                left:chart.scrollLeft(),
 | 
			
		||||
                top:chart.scrollTop()
 | 
			
		||||
            };
 | 
			
		||||
            RED.settings.setLocal('scroll-positions', JSON.stringify(workspaceScrollPositions) )
 | 
			
		||||
        }
 | 
			
		||||
        chart.on("scroll", function() {
 | 
			
		||||
            if (RED.settings.get("editor.view.view-store-position")) {
 | 
			
		||||
                if (onScrollTimer) {
 | 
			
		||||
                    clearTimeout(onScrollTimer)
 | 
			
		||||
                }
 | 
			
		||||
                onScrollTimer = setTimeout(storeScrollPosition, 200);
 | 
			
		||||
            }
 | 
			
		||||
        })
 | 
			
		||||
 | 
			
		||||
        if (RED.settings.get("editor.view.view-store-position")) {
 | 
			
		||||
            var scrollPositions = RED.settings.getLocal('scroll-positions')
 | 
			
		||||
            if (scrollPositions) {
 | 
			
		||||
                try {
 | 
			
		||||
                    workspaceScrollPositions = JSON.parse(scrollPositions)
 | 
			
		||||
                } catch(err) {
 | 
			
		||||
                }
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
    function updateGrid() {
 | 
			
		||||
@@ -1983,8 +2011,10 @@ RED.view = (function() {
 | 
			
		||||
 | 
			
		||||
        RED.view.navigator.resize();
 | 
			
		||||
        redraw();
 | 
			
		||||
        if (RED.settings.get("editor.view.view-store-zoom")) {
 | 
			
		||||
            RED.settings.setLocal('zoom-level', factor.toFixed(1))
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    function selectNone() {
 | 
			
		||||
        if (mouse_mode === RED.state.MOVING || mouse_mode === RED.state.MOVING_ACTIVE) {
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user