From 5a7fdf82acc5e7459b1b4738252b05afd2ee89fd Mon Sep 17 00:00:00 2001 From: Deep Tailor Date: Tue, 1 Aug 2017 12:00:21 -0700 Subject: [PATCH] persist user preference width for MCTSplitPanes --- .../commonUI/browse/res/templates/browse.html | 5 ++--- .../general/src/directives/MCTSplitPane.js | 15 +++++++++++---- .../general/src/directives/MCTSplitter.js | 7 ++++++- 3 files changed, 19 insertions(+), 8 deletions(-) diff --git a/platform/commonUI/browse/res/templates/browse.html b/platform/commonUI/browse/res/templates/browse.html index b6d4dd0b92..8353b297f9 100644 --- a/platform/commonUI/browse/res/templates/browse.html +++ b/platform/commonUI/browse/res/templates/browse.html @@ -26,7 +26,7 @@ ng-controller="PaneController as modelPaneTree" ng-class="modelPaneTree.visible() ? 'pane-tree-showing' : 'pane-tree-hidden'"> + anchor='left' saveUserWidthPreference='true'>
- +
- diff --git a/platform/commonUI/general/src/directives/MCTSplitPane.js b/platform/commonUI/general/src/directives/MCTSplitPane.js index 35625da413..5418be2f11 100644 --- a/platform/commonUI/general/src/directives/MCTSplitPane.js +++ b/platform/commonUI/general/src/directives/MCTSplitPane.js @@ -94,6 +94,7 @@ define( * @constructor */ function MCTSplitPane($parse, $log, $interval) { + var splitPaneNumber = 1; function controller($scope, $element, $attrs) { var anchorKey = $attrs.anchor || DEFAULT_ANCHOR, anchor, @@ -101,6 +102,10 @@ define( positionParsed = $parse($attrs.position), position; // Start undefined, until explicitly set + // create unique alias for every instance of MCTSplitPane + var mctSplitPaneAlias = "mctSplitPaneAlias" + splitPaneNumber; + splitPaneNumber += 1; + // Get relevant size (height or width) of DOM element function getSize(domElement) { return (anchor.orientation === 'vertical' ? @@ -148,8 +153,10 @@ define( // Enforce minimum/maximum positions function enforceExtrema() { + // Check for user preference on splitPane width + var userWidthPreference = window.localStorage[mctSplitPaneAlias]; position = Math.max(position, 0); - position = Math.min(position, getSize($element[0])); + position = Math.min(position,(userWidthPreference || getSize($element[0]))); } // Getter-setter for the pixel offset of the splitter, @@ -208,7 +215,9 @@ define( toggleClass: toggleClass, anchor: function () { return anchor; - } + }, + saveUserWidthPreference: $attrs.saveuserwidthpreference, + mctSplitPaneAlias: mctSplitPaneAlias }; } @@ -219,9 +228,7 @@ define( controller: ['$scope', '$element', '$attrs', controller] }; } - return MCTSplitPane; } ); - diff --git a/platform/commonUI/general/src/directives/MCTSplitter.js b/platform/commonUI/general/src/directives/MCTSplitter.js index 63acb90824..38abecdc08 100644 --- a/platform/commonUI/general/src/directives/MCTSplitter.js +++ b/platform/commonUI/general/src/directives/MCTSplitter.js @@ -56,6 +56,12 @@ define( // Update the position of this splitter mctSplitPane.position(initialPosition + pixelDelta); + + // Save user width preference to local storage if selected + if (mctSplitPane.saveUserWidthPreference === 'true') { + var myStorage = window.localStorage; + myStorage.setItem(mctSplitPane.mctSplitPaneAlias, initialPosition + pixelDelta); + } }, // Grab the event when the user is done moving // the splitter and pass it on @@ -83,4 +89,3 @@ define( } ); -