pip-webui
Version:
HTML5 UI for LOB applications
71 lines (53 loc) • 2.17 kB
JavaScript
/**
* @file Split layout
* @copyright Digital Living Software Corp. 2014-2015
*/
/* global $, angular */
(function () {
'use strict';
var thisModule = angular.module('pipLayout.Split', []);
thisModule.run( function($rootScope, pipSplit) {
// Intercept routes
$rootScope.$on('$stateChangeStart',
function(event, toState, toParams, fromState, fromParams) {
// Split animation
var splitElements = $('.pip-split');
if (splitElements.length > 0) {
splitElements.removeClass('pip-transition-forward');
splitElements.removeClass('pip-transition-back');
if (toState.name != fromState.name) {
if (pipSplit.forwardTransition(toState, fromState))
splitElements.addClass('pip-transition-forward');
else
splitElements.addClass('pip-transition-back');
}
}
}
);
});
thisModule.provider('pipSplit', function() {
var transitionSequences = [];
this.addTransitionSequence = addTransitionSequence;
this.$get = function () {
return {
forwardTransition: forwardTransition
};
};
return;
//----------------------------
function addTransitionSequence(sequence) {
if (!_.isArray(sequence) || sequence.length == 0)
throw new Error('Transition sequence must be an array of state names');
transitionSequences.push(sequence);
}
function forwardTransition(toState, fromState) {
for (var i = 0; i < transitionSequences.length; i++) {
var toIndex = transitionSequences[i].indexOf(toState.name);
var fromIndex = transitionSequences[i].indexOf(fromState.name);
if (toIndex > -1)
return toIndex > fromIndex;
}
return false
}
});
})();