persist user preference width for MCTSplitPanes

This commit is contained in:
Deep Tailor
2017-08-01 12:00:21 -07:00
parent 34c3763421
commit 5a7fdf82ac
3 changed files with 19 additions and 8 deletions

View File

@ -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;
}
);

View File

@ -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(
}
);