Skip to content

Instantly share code, notes, and snippets.

@machito
Created September 13, 2016 17:58
Show Gist options
  • Save machito/32fdfcb970c0f98c64e28232a7af7d67 to your computer and use it in GitHub Desktop.
Save machito/32fdfcb970c0f98c64e28232a7af7d67 to your computer and use it in GitHub Desktop.
((angular) => {
'use strict';
angular
.module(_MODULE)
.directive('numberRange', numberRange);
numberRange.$inject = [
'$document',
'$log',
'$timeout'
];
function numberRange ($document, $log, $timeout) {
return {
restrict: 'A',
templateUrl: 'components/numberRange/numberRange.html',
link: (scope, element, attr) => {
/**
* @public
* @desc logic to generate an array range of two numbers
*/
function generateRange (min, max) {
let startNumber = min;
let endNumber = max;
let list = [];
for (let i = startNumber; i <= endNumber; i++) {
list.push(i);
}
// $log.log(list);
// assign range arrays to customRangeObject
scope.vm.data.customRangeObject.rangeArray = list;
scope.vm.data.customRangeObject.rangeArrayEven = list.filter((num) => {
return num % 2 === 0;
});
scope.vm.data.customRangeObject.rangeArrayOdd = list.filter((num) => {
return num % 2 != 0;
});
/*
* @private
* @desc basic validation to provide application feedback based on user input
*/
$timeout(() => {
scope.$apply(() => {
if (startNumber === null) {
scope.helper = "Please enter a min number";
scope.rangeArray = "";
} else if (endNumber === null) {
scope.helper = "Please enter a max number";
scope.rangeArray = "";
} else if (startNumber > endNumber) {
scope.helper = "Min number must be less than max number";
scope.rangeArray = "";
} else {
scope.helper = "";
scope.rangeArray = scope.vm.data.customRangeObject.rangeArray; // build inital range object for ng-repeat in view template
$log.info("Generating new number range for "+startNumber+" & "+endNumber);
}
});
}, 0);
}
scope.generateRange = generateRange; // expose this function to the parent controller
// $log.log(scope.vm.data.customRangeObject.minNumber);
// $log.log(scope.vm.data.customRangeObject.maxNumber);
// $log.log(generateRange(scope.vm.data.customRangeObject.minNumber, scope.vm.data.customRangeObject.maxNumber));
/**
* @private
* @desc initializes the directive
*/
function init() {
$log.debug('numberRange initialized');
}
init();
}
};
}
})(window.angular);
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment