cobuild-angular-stack
Version:
Base stack angular sass jade gulp
400 lines (348 loc) • 15.1 kB
JavaScript
function getMixpanel() {
try {
return mixpanel;
} catch (err) {
return {
identify: $.noop,
people: {
set: $.noop,
increment: $.noop
}
}
}
}
Number.prototype.formatMoney = function (c, d, t) {
d = d || ".";
t = t || ",";
try {
c = isNaN(c = Math.abs(c)) ? 2 : c;
var n = this,
s = n < 0 ? "-" : "",
i = parseInt(n = Math.abs(+n || 0).toFixed(c)) + "",
j = (j = i.length) > 3 ? j % 3 : 0;
return s + (j ? i.substr(0, j) + t : "") + i.substr(j).replace(/(\d{3})(?=\d)/g, "$1" + t) + (c ? d + Math.abs(n - i).toFixed(c).slice(2) : "");
} catch (err) {
return '0' + d + '00';
}
};
(function (arr, i, name) {
while (name = arr[i++]) {
Math["$" + name] = Function("a", "b", "return Math." + name + "(a*(b=Math.pow(10,b||0)))/b");
}
})(["floor", "ceil", "round"], 0);
(function () {
'use strict';
angular.module('uniko', [
'ui.router',
'ngStorage',
'pascalprecht.translate',
'uniko.translate',
'uniko.admin.auth',
'uniko.authSatellizer',
'uniko.customs',
'uniko.models',
'uniko.authLoopback',
'uniko.products',
'uniko.gifts',
'uniko.cashout',
'uniko.import',
'uniko.inspiration',
'uniko.statics',
'uniko.admin.products',
'uniko.admin.stores',
'uniko.admin.categories',
'uniko.admin.coupleAccounts',
'uniko.admin.banners',
'uniko.admin.orders',
'uniko.admin.cashouts',
'uniko.admin.onboarding',
'uniko.admin.settings',
'uniko.admin.settings.accounts',
'uniko.admin.discount',
'uniko.admin.experiences',
'uniko.upload',
'uniko.registry',
'uniko.guest',
'uniko.guest.registry',
'uniko.guest.checkout',
'xeditable',
'restangular',
'ui.bootstrap',
'ngFileUpload',
'slickCarousel',
'ui.bootstrap-slider',
'angular.filter',
'checklist-model',
'uiGmapgoogle-maps',
'uiSwitch',
'ngSanitize',
'ngTagsInput',
'ngImgCrop',
'angular-loading-bar',
'zeroclipboard',
'angulartics',
'angulartics.google.analytics',
'angulartics.hubspot',
'mwl.confirm',
'720kb.socialshare',
'rokk3rlabs.onboarding',
'ui.select',
'ng-slide-down',
'ngLodash',
'daterangepicker',
'uniko.instapage'
]);
function $configConekta() {
Conekta.setPublishableKey("$$UnikoConektaToken$$");
}
$configConekta.$inject = [];
function $configMercado() {
Mercadopago.setPublishableKey("$$UnikoMercadoToken$$");
}
$configMercado.$inject = [];
function $configClipboard(uiZeroclipConfigProvider) {
uiZeroclipConfigProvider.setZcConf({
swfPath: 'swf/ZeroClipboard.swf'
});
}
$configClipboard.$inject = ['uiZeroclipConfigProvider'];
function $configAnalytics($analyticsProvider) {
}
$configHtml5Mode.$inject = ['$locationProvider'];
function $configHtml5Mode($locationProvider) {
$locationProvider.html5Mode(true);
}
$configAnalytics.$inject = ['$analyticsProvider'];
function $configMaps(uiGmapGoogleMapApiProvider) {
uiGmapGoogleMapApiProvider.configure({
key: 'AIzaSyC-cNfPK1guu4XvoxSpktEIkg_xvf7-gHU',
v: '3.22', //defaults to latest 3.X anyhow
libraries: 'places'
});
}
$configMaps.$inject = ['uiGmapGoogleMapApiProvider'];
function $toastrConfig(toastrConfig) {
angular.extend(toastrConfig, {
positionClass: 'toast-bottom-right',
timeOut: "10000"
});
}
$toastrConfig.$inject = ['toastrConfig'];
var $configStorage = function ($localStorageProvider) {
$localStorageProvider.setKeyPrefix('co.uniko.');
};
$configStorage.$inject = ['$localStorageProvider'];
$configLoadingBar.$inject = ['cfpLoadingBarProvider'];
function $configLoadingBar(loadingBarProvider) {
loadingBarProvider.includeSpinner = true;
}
$configRestangular.$inject = ['RestangularProvider'];
function $configRestangular(RestangularProvider) {
RestangularProvider.setBaseUrl('http://uniko.co:3000/api/v2');
}
$run.$inject = [
'$rootScope', '$window', '$state', '$localStorage', 'toastr', 'Auth', 'editableOptions',
'$translate', 'Restangular', 'LoopBackAuth', 'confirmationPopoverDefaults', 'CoupleAccount',
'Onboarding', '$timeout', '$location', 'Utils', 'lodash'
];
function $run($rootScope, $window, $state, $localStorage, toastr, Auth, editableOptions,
$translate, Restangular, LoopBackAuth, confirmationPopoverDefaults, CoupleAccount,
Onboarding, $timeout, $location, Utils, lodash) {
if (Auth.isTmpAccount()) {
Auth.clearAccount();
}
$rootScope.$state = $state;
var account_prim = {};
CoupleAccount.updateMainAttributes = function (couple, cbSuccess, cbError) {
account_prim = couple;
var coupleClone = lodash.clone(couple);
delete coupleClone.cashOutInformationList;
delete coupleClone.orders;
delete coupleClone.productsRegistryList;
delete coupleClone.giftList;
delete coupleClone.rsvpList;
CoupleAccount.prototype$updateAttributes({id: couple.id}, coupleClone, cbSuccess, cbError);
};
$rootScope.$on('reloadUtils', function () {
Utils.list().then(function (response) {
var list = response.data;
$rootScope.dataUtils = {
payPrice: {}
};
$rootScope.paymentDiscount = 0;
var discount = lodash.find(list,function(data) {
return data.type == 'discountPrice';
});
$rootScope.paymentDiscount = discount ? discount.value.value : 0;
lodash.forEach(lodash.filter(list, {type: 'payPrice'}), function (payData) {
$rootScope.dataUtils.payPrice[payData.name] = payData.value.value;
$rootScope.dataUtils.payPrice[payData.name+ "Description"] = payData.value.description;
$rootScope.dataUtils.payPrice[payData.name+ "Id"] = payData.id;
var discount = (payData.value.value * $rootScope.paymentDiscount) / 100;
$rootScope.dataUtils.payPrice[payData.name + "Discount"] = discount > 0 ? (payData.value.value - discount) : 0;
});
if (Auth.isAuthenticated()) {
$rootScope.isAuthenticated = true;
$rootScope.sidebarActive = true;
var isAdmin = localStorage.getItem('isAdmin');
var role = localStorage.getItem('role');
var name = localStorage.getItem('username');
$rootScope.isAdmin = isAdmin && isAdmin !== 'undefined' && !!JSON.parse(localStorage.getItem('isAdmin'));
$rootScope.role = role && role !== 'undefined' && localStorage.getItem('role');
$rootScope.name = name && name !== 'undefined' && localStorage.getItem('username');
$rootScope.fullAccount = !!$localStorage.fullAccount;
if ($rootScope.isAdmin) {
confirmationPopoverDefaults.templateUrl = 'partials/mwl-confirm-admin.html';
} else {
var user = Auth.getCurrent();
$rootScope.dataUtils.tcs = lodash.find(list, {name: 'tcs'}).value;
$rootScope.dataUtils.is2FA = lodash.find(list, {name: 'is2FA'}).value;
$rootScope.dataUtils.isExperiences = lodash.find(list, {name: 'isExperiences'}).value;
$state.go('registry');
user.$promise.then(function (a) {
if (!a.is2FA && $rootScope.dataUtils.is2FA.is2FA){
$state.go('activate');
}
});
}
} else {
$rootScope.sidebarActive = false;
$rootScope.showNumber = false;
$rootScope.dataUtils.tcs = lodash.find(list, {name: 'tcs'}).value;
}
});
});
$rootScope.$emit('reloadUtils');
$rootScope.$storage = $localStorage;
$rootScope.$on('Account::logout', function () {
$localStorage.nowLogout = true;
localStorage.removeItem('isAdmin');
$window.location.href = $window.location.origin;
});
$rootScope.$on('Account::onboardinglogin', function (event, dataLogin) {
if (dataLogin && dataLogin.isAdmin) {
localStorage.setItem('isAdmin', JSON.stringify(true));
}
$localStorage.nowLogin = true;
$localStorage.fullAccount = dataLogin.payInformationData && dataLogin.payInformationData.isPaid;
});
$rootScope.$on('Account::login', function (event, dataLogin) {
if (dataLogin && dataLogin.isAdmin) {
localStorage.setItem('isAdmin', JSON.stringify(true));
localStorage.setItem('role', dataLogin.objAdmin.role );
localStorage.setItem('username', dataLogin.objAdmin.user.username );
}
$localStorage.nowLogin = true;
$localStorage.fullAccount = dataLogin.payInformationData && dataLogin.payInformationData.isPaid;
$window.location.href = $window.location.origin;
});
$rootScope.$on('imageProfile', function (event, args) {
$rootScope.imageProfile = args;
$localStorage.imageProfile = args;
});
var defaultDataState = $state.get('home').data;
$rootScope.$on('$stateChangeSuccess', function (event, toState, toParams, fromState, fromParams, options) {
$rootScope.dataState = toState.data ? lodash.defaults(toState.data, defaultDataState) : defaultDataState;
$rootScope.canonicalUrl = angular.element(document).find('base').attr('href') + $location.path().substring(1);
$timeout(function () {
window.prerenderReady = true;
}, 2000);
});
$rootScope.$on('$stateChangeStart', function (event, toState, toParams, fromState, fromParams, options) {
document.body.scrollTop = document.documentElement.scrollTop = 0;
$rootScope.current = toState.name;
$rootScope.uniko_aside = toState.name == 'registry' || toState.name == 'homeUser' || toState.name == 'products.new';
$rootScope.uniko_aside_profile = toState.name == 'cashout' || toState.name == 'gifts' || toState.name.indexOf('homeUser.') > -1;
if ($localStorage.imageProfile) {
$rootScope.imageProfile = $localStorage.imageProfile;
}
if (Auth.isAuthenticated()) {
if ($localStorage.newAccount) {
delete $localStorage.newAccount;
$translate('new-created-account').then(function (translation) {
toastr.info(translation);
});
}
if ($localStorage.nowLogin) {
delete $localStorage.nowLogin;
$translate('sign-in-success').then(function (translation) {
toastr.success(translation);
});
}
var isAdmin = localStorage.getItem('isAdmin');
$rootScope.isAdmin = isAdmin && isAdmin !== 'undefined' && !!JSON.parse(localStorage.getItem('isAdmin'));
if(toState.name === 'home' && $rootScope.isAdmin){
event.preventDefault();
$state.go('admin.coupleAccounts');
}else if (toState.name === 'home' || (toState.data && toState.data.onlyUnathenticated)) {
event.preventDefault();
$rootScope.current = 'homeUser';
$state.go('homeUser');
} else if (toState.name === 'homeUser' && $rootScope.isAdmin) {
event.preventDefault();
$state.go('admin.coupleAccounts');
}
} else {
if ($localStorage.nowLogout) {
delete $localStorage.nowLogout;
$translate('log-out-success').then(function (translation) {
toastr.info(translation);
});
}
if (toState.data && toState.data.requireLogin) {
event.preventDefault();
$state.go('login');
}
}
});
$rootScope.$on('Auth::unauthorized', function () {
if ($state.$current.data && $state.$current.data.requireLogin) {
$window.location.href = $window.location.origin;
}
});
$rootScope.$on('$locationChangeSuccess', function () {
});
$rootScope.toggleSidebar = function () {
$rootScope.sidebarActive = !$rootScope.sidebarActive;
};
editableOptions.theme = 'bs3';
$rootScope.slug = function (data) {
return lodash.deburr(data).replace(/\W/g, " ").replace(/\s+/g, '_').substr(0, 40);
};
Restangular.addFullRequestInterceptor(function (element, operation, route, url, headers, params, httpConfig) {
if (LoopBackAuth.accessTokenId) {
headers.authorization = LoopBackAuth.accessTokenId;
}
return {
element: element,
params: params,
headers: headers,
httpConfig: httpConfig
};
});
$rootScope.goToTable = function (url, couple) {
$rootScope.lastCoupleLoaded = couple;
$location.path(url);
};
}
$selectConfig.$inject = ['uiSelectConfig'];
function $selectConfig(uiSelectConfig) {
uiSelectConfig.theme = 'bootstrap';
uiSelectConfig.resetSearchInput = true;
uiSelectConfig.appendToBody = true;
}
angular
.module('uniko')
.config($configStorage)
.config($configMaps)
.config($configAnalytics)
.config($configConekta)
.config($configMercado)
.config($configLoadingBar)
.config($configClipboard)
.config($toastrConfig)
.config($configRestangular)
.config($configHtml5Mode)
.config($selectConfig)
.run($run);
})();