UNPKG

cobuild-angular-stack

Version:

Base stack angular sass jade gulp

125 lines (106 loc) 4.7 kB
/** * Created by garusis on 16/06/16. * * This Module use Restangular to make API request. You can define a base url, default headers, etc... using RestangularProvider */ (function (module) { var settings = {}; var defaultSettings = {}; module .provider('Onboarding', OnboardingProvider); OnboardingProvider.$inject = ['RestangularProvider']; function OnboardingProvider(RestangularProvider) { var onboardingProvider = this; this.$get = [ 'OnboardingInternalService', 'OnboardingInternalRelation', 'Restangular', '$uibModal', function (OnboardingInternalService, OnboardingInternalRelation, Restangular, $uibModal) { var resource = 'onboardings'; var service = new OnboardingInternalService('onboardings'); var oldPost = service.post; service.post = function () { return oldPost.apply(this, arguments) .then(function (onboarding) { return service .getFrom(onboarding.id).steps() .post({title: 'step ' + onboarding.stepsList.length}) .then(function () { return onboarding; }); }); }; Restangular.extendModel(service.serviceResource, function (onboarding) { onboarding.addRestangularMethod('reorderSteps', 'post', 'reorderSteps'); return onboarding; }); service.reorderSteps = function (indexesData) { return Restangular.one(this.serviceResource, id).reorderSteps(indexesData); }; service.getFrom = function (id) { return { steps: function () { return new OnboardingInternalRelation(Restangular.one(resource, id), 'steps'); } }; }; //User interaction with onboarding methods var activeOnboardings = {}; /** * Start an onboarding. * @param id */ service.start = function (id, facebook) { if (!id || activeOnboardings[id]) { return; } activeOnboardings[id] = {}; return service.get(id) .then(function (onboardingData) { var onboarding = activeOnboardings[id] = $uibModal.open({ animation: false, templateUrl: 'partials/onboarding.display-template.html', controller: 'OnboardingModalController', controllerAs: 'sBCtrl', size: 'lg', backdrop: 'static', resolve: { currentOnboarding: function () { onboardingData.facebook = facebook; return onboardingData; } } }); onboarding.result .catch(function () { delete activeOnboardings[id]; }); return onboarding.result; }); }; /** * Stop an onboarding. * @param id */ service.stop = function (id) { var onboarding = activeOnboardings[id]; if (!onboarding) { return; } onboarding.dismiss(); delete activeOnboardings[id]; }; /** * End an onboarding * @param id */ service.end = function (id) { var onboarding = activeOnboardings[id]; if (!onboarding) { return; } onboarding.close(); delete activeOnboardings[id]; }; return service; }]; } })(angular.module('rokk3rlabs.onboarding'));