cobuild-angular-stack
Version:
Base stack angular sass jade gulp
71 lines (60 loc) • 2.74 kB
JavaScript
/**
* Created by garusis on 19/06/16.
*/
(function (module) {
var settings = {};
var defaultSettings = {};
module
.directive('onboardingStepsBuilder', onboardingStepsBuilderDirective);
onboardingStepsBuilderDirective.$inject = ['ROKK3RLABS_ONBOARDING_CONSTANTS'];
function onboardingStepsBuilderDirective(ROKK3RLABS_ONBOARDING_CONSTANTS) {
return {
scope: {
onboarding: '=',
steps: '=?'
},
link: function (scope, element, attr) {
var defaultAttrsOnboarding = ROKK3RLABS_ONBOARDING_CONSTANTS.directives.stepsBuilder;
if (scope.steps && !angular.isArray(scope.steps)) {
throw new Error('steps must be an array');
}
attr = angular.extend({}, defaultAttrsOnboarding, attr);
var vmOnboarding = scope.$$onboarding = {
addStepText: attr.addStepText,
steps: scope.steps || [],
active: 0
};
},
controller: ['$scope', 'Onboarding', '$uibModal', '$timeout', function ($scope, Onboarding, $uibModal, $timeout) {
var sBCtrl = this;
$scope.$on('sortableTabs::reorder', function (event, data) {
$scope.onboarding.reorderSteps(data).then(function (response) {
console.log(response);
}).catch(function (response) {
console.log(response);
});
});
sBCtrl.addStep = function (onboarding) {
Onboarding
.getFrom(onboarding.id).steps()
.post({title: 'step ' + $scope.$$onboarding.steps.length})
.then(function (step) {
$scope.$$onboarding.steps.push(step);
$timeout(function () {
$scope.$$onboarding.active = $scope.$$onboarding.steps.length - 1;
});
});
};
$scope.$on('rokk3r::onboardingBuilder::removedStep', function (event, step) {
var index = $scope.$$onboarding.steps.indexOf(step);
$scope.$$onboarding.steps.splice(index,1);
});
}],
controllerAs: 'sBCtrl',
templateUrl: function (elem, attr) {
return attr.templateUrl || ROKK3RLABS_ONBOARDING_CONSTANTS.directives.stepsBuilder.templateUrl;
},
restrict: 'E'
};
}
})(angular.module('rokk3rlabs.onboarding'));