. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
| Server IP : 52.223.31.75 / Your IP : 172.31.32.98 [ Web Server : Apache/2.4.66 () OpenSSL/1.0.2k-fips PHP/7.4.33 System : Linux ip-172-31-14-81.eu-central-1.compute.internal 4.14.281-212.502.amzn2.x86_64 #1 SMP Thu May 26 09:52:17 UTC 2022 x86_64 User : apache ( 48) PHP Version : 7.4.33 Disable Function : NONE Domains : 4 Domains MySQL : OFF | cURL : ON | WGET : ON | Perl : ON | Python : ON | Sudo : ON | Pkexec : OFF Directory : /var/www_local/cosabutto/ |
Upload File : |
try{
//controllo se esistono template altrimenti creo un template vuoto
angular.module('app.templates');
}catch(e){
angular.module('app.templates',[]);
}
String.prototype.capitalize = function() {
return this.charAt(0).toUpperCase() + this.slice(1)
}
var app = angular.module("cosabutto",['app.templates','localytics.directives','ui.bootstrap', 'moment-picker','ui.router','ngMap']);
var basePath = "";//http://www.cosabutto.it/";
app.constant('googleMapsKey',"https://maps.googleapis.com/maps/api/js?key=AIzaSyA2Dx-F4FrIVDAjaH4xPm6q-Y1Nt2J3pUw");
// =========================================================================
// Malihu Scroll - Custom Scroll bars
// =========================================================================
app.service('scrollService', function() {
var ss = {};
ss.malihuScroll = function scrollBar(selector, theme, mousewheelaxis) {
$(selector).mCustomScrollbar({
theme: theme,
scrollInertia: 100,
axis:'yx',
mouseWheel: {
enable: true,
axis: mousewheelaxis,
preventDefault: true
}
});
}
return ss;
})
app.directive('myEnter', function () {
return function (scope, element, attrs) {
element.bind("keydown keypress", function (event) {
if(event.which === 13) {
scope.$apply(function (){
scope.$eval(attrs.myEnter);
});
event.preventDefault();
}
});
};
});
//==============================================
// BOOTSTRAP GROWL
//==============================================
app.service('growlService', function(){
var gs = {};
gs.growl = function(message, type) {
$.growl({
message: message
},{
type: type,
allow_dismiss: false,
label: 'Cancel',
className: 'btn-xs btn-inverse',
placement: {
from: 'top',
align: 'right'
},
delay: 2500,
animate: {
enter: 'animated bounceIn',
exit: 'animated bounceOut'
},
offset: {
x: 20,
y: 85
}
});
}
return gs;
})
app.config(['momentPickerProvider', function (momentPickerProvider) {
momentPickerProvider.options({
/* Picker properties */
locale: 'it',
/* format: 'L LTS',
minView: 'decade',
maxView: 'minute',
startView: 'year',
autoclose: true,
today: false,
keyboard: false,*/
/* Extra: Views properties */
/* leftArrow: '←',
rightArrow: '→',
yearsFormat: 'YYYY',
monthsFormat: 'MMM',
daysFormat: 'D',*/
hoursFormat: 'HH:[00]',
minutesFormat: moment.localeData().longDateFormat('LT').replace(/[aA]/, ''),
secondsFormat: 'ss',
minutesStep: 5,
secondsStep: 1
});
}]);
app.config(["$stateProvider", "$urlRouterProvider", "$compileProvider", function ($stateProvider, $urlRouterProvider, $compileProvider){
$urlRouterProvider.otherwise("/home");
$compileProvider.aHrefSanitizationWhitelist(/^\s*(https?|ftp|mailto|file|tel):/);
$stateProvider
.state ('howto', {
url: '/howto',
templateUrl: 'template/howto.html',
controller: "howtoCtrl",
controllerAs: "howctrl"
})
.state ('calendario', {
url: '/caledar',
templateUrl: 'template/calenadio.html',
controller: "calendarCtrl",
controllerAs: "calctrl"
})
.state ('social', {
url: '/social',
templateUrl: 'template/social.html',
controller: "socialCtrl",
controllerAs: "soctrl"
})
.state ('social.inserimento', {
url: '/insert',
templateUrl: 'template/social/inserimento.html'
})
.state ('social.colori', {
url: '/color',
templateUrl: 'template/social/colori.html'
})
.state ('social.orari', {
url: '/time',
templateUrl: 'template/social/orari.html'
})
.state ('home', {
url: '/home',
templateUrl: 'template/home.html',
controller: "homeCtrl",
controllerAs: "hctrl"/*,
resolve: {
/* loadPlugin: function($ocLazyLoad) {
return $ocLazyLoad.load ([
{
name: 'css',
insertBefore: '#app-level',
files: [
'vendors/bower_components/fullcalendar/dist/fullcalendar.min.css',
]
},
{
name: 'vendors',
insertBefore: '#app-level-js',
files: [
'vendors/sparklines/jquery.sparkline.min.js',
'vendors/bower_components/jquery.easy-pie-chart/dist/jquery.easypiechart.min.js',
'vendors/bower_components/simpleWeather/jquery.simpleWeather.min.js'
]
}
])
},*/
/* JWTValidationResolve: function(IAM, $state,$rootScope){
$rootScope.$on('$stateChangeStart', function (event, toState) {
if("id" in toState && toState.id > 0){
if(!IAM.JWTValidation(toState.id, "R").status){
event.preventDefault();
debugger;
if(!("token" in localStorage && localStorage.token)){
location.href="index.html";
}else{
$state.go("jam.nopermessi");
console.log("Permessi non validi!");
}
}else{
$rootScope.IAM = IAM;
}
}
});
}
},*/
})
}]);
app.controller("homeCtrl", function($scope, $window, cosabuttoService,growlService, $rootScope, $compile, $q){
var lingua = window.navigator.language;
moment.locale(lingua);
$rootScope.oggi = {};
$scope.dataOrdierna = moment(moment().format("YYYY-MM-DD")).valueOf();
this.getCssPerQuantita = function(x){
switch(x){
case 1:
return 'left: 65px;top: -50px;';
break;
case 1:
return 'left: 65px;top: -50px;';
break;
case 1:
return 'left: 65px;top: -50px;';
break;
case 1:
return 'left: 65px;top: -50px;';
break;
case 1:
return 'left: 65px;top: -50px;';
break;
}
}
// Swal.getQueueStep() Get the index of current modal in queue. When there's no active queue, null will be returned.
// Swal.insertQueueStep() Insert a modal to queue, you can specify modal positioning with second parameter. By default a modal will be added to the end of a queue.
// Swal.deleteQueueStep(index) Delete a modal at index from queue.
// Swal.getProgressSteps() Progress steps getter.
// Swal.setProgressSteps([]) Progress steps setter.
// Swal.showProgressSteps() Show progress steps.
// Swal.hideProgressSteps() Hide progress steps.
// Swal.isValidParameter(param) Determine if parameter name is valid.
$scope.intro = async function(){
if($scope.cittaSelezionata.istat>-1){
return;
}
swal.fire({
title: 'Benvenuto in Cosa Butto Oggi?',
imageUrl: 'img/logo-cosa-butto-oggi-apisoft.png',
imageHeight: 300,
showCancelButton: false,
confirmButtonText: 'Avanti',
imageAlt: 'Cosa butto oggi?',
html: 'Cosa Butto Oggi ti ricorda cosa buttare oggi per rispettare la raccolta differenziata nel tuo paese.<br><br><b>Seleziona una città per continuare</b> <div id="includimihome"></div>',
onOpen: (el) => {
var ht= '<select chosen style="padding: 0px !important;" class="w-100 localytics-chosen" options="comuni" ng-model="cittaSelezionata.istat" ng-options="comune.istat as comune.comune group by comune.regione for comune in comuni" ng-change="hctrl.getGiorno()" data-placeholder="Scrivi qui il tuo comune!" group_search="false" search_contains="false" enable-split-word-search="false" no-results-text="\'Non è stato trovato nessun risultato :(\'" max_shown_results="100">'+
'<option></option>'+
'</select>';
var html = $compile(ht)($scope);
angular.element(document.getElementById("includimihome")).append(html);
}
}).then(function(val){
if($scope.cittaSelezionata.istat > -1){
if($scope.cittaSelezionata.zone.length > 1){
swal.fire({
title: 'Seleziona una zona della tua citta',
imageUrl: 'img/italia_0.png',
imageHeight: 300,
showCancelButton: true,
cancelButtonText: 'Indietro',
confirmButtonText: 'Fine',
reverseButtons: true,
imageAlt: 'Seleziona una zona della tua citta',
html: '<div id="includimihome2"></div>',
onOpen: (el) => {
var hta= '<div scelta-zonehome citta-selezionata="cittaSelezionata" hctrl="hctrl"></div>';
var htmla = $compile(hta)($scope);
angular.element(document.getElementById("includimihome2")).append(htmla);
}
}).then(function(val){
// alert(JSON.stringify($scope.cittaSelezionata.zona))
if("dismiss" in val && val.dismiss == "cancel"){
//bottone indietro
$scope.intro();
return;
}
// if("value" in val && val.value){
// return;
// }
return;
});
}
// if($scope.cittaSelezionata.zona != "" && $scope.cittaSelezionata.zona != "Nuova Zona"){
// }
}else{
Swal.fire({
type: 'info',
title: 'Non hai selezionato una città',
text: 'Puoi selezionare successivamente la città desiderata tramite il menù il alto a destra!',
// footer: '<a href>Why do I have this issue?</a>'
})
return;
}
// if("dismiss" in val && val.dismiss=="backdrop"){
// //se è uscito senza selezionare la città
// }
})
// swal.fire({
// title: 'Seleziona una città',
// imageUrl: 'img/italia.png',
// imageHeight: 300,
// showCancelButton: false,
// confirmButtonText: 'Avanti',
// imageAlt: 'Seleziona una città',
// html: '<div id="includimihome"></div>',
// onOpen: (el) => {
// var ht= '<select chosen style="padding: 0px !important;" class="w-100 localytics-chosen" options="comuni" ng-model="cittaSelezionata.istat" ng-options="comune.istat as comune.comune group by comune.regione for comune in comuni" ng-change="hctrl.getGiorno()" data-placeholder="Scrivi qui il tuo comune!" group_search="false" search_contains="false" enable-split-word-search="false" no-results-text="\'Non è stato trovato nessun risultato :(\'" max_shown_results="100">'+
// '<option></option>'+
// '</select>';
// var html = $compile(ht)($scope);
// angular.element(document.getElementById("includimihome")).append(html);
// }
// }).then(function(val){
// if("value" in val && val.value){
// deferred.resolve(val.value);
// return;
// }
// deferred.resolve("dismiss");
// return;
// });
// //fine swal principale
// });
// var res = deferred.promise;
// if(res != "dismiss"){
// /*non ha selezionato il paese*/
// }else if(se ha le zone e ne ha più di una){
// swal.fire({
// title: 'Seleziona una città',
// imageUrl: 'img/italia.png',
// imageHeight: 300,
// showCancelButton: false,
// confirmButtonText: 'Avanti',
// imageAlt: 'Seleziona una città',
// html: '<div id="includimihome2"></div>',
// onOpen: (el) => {
// var hta= '<div scelta-zonehome citta-selezionata="cittaSelezionata"></div>';
// var htmla = $compile(hta)($scope);
// angular.element(document.getElementById("includimihome2")).append(htmla);
// }
// }).then(function(val){
// if("value" in val && val.value){
// deferred.resolve(val.value);
// return;
// }
// deferred.resolve("dismiss");
// return;
// });
// }
/*var steps = ['1', '2', '3']
var swalQueueStep = Swal.mixin({
confirmButtonText: 'Forward',
cancelButtonText: 'Back',
progressSteps: steps,
input: 'text',
})
var deferred = $q.defer();
var step0 = await swalQueueStep.fire({
title: 'Benvenuto in Cosa Butto Oggi?',
imageUrl: 'img/logo-cosa-butto-oggi-apisoft.png',
imageHeight: 300,
inputValue: 1,
showCancelButton: false,
imageAlt: 'Cosa butto oggi?',
currentProgressStep: 0,
html: 'Cosa Butto Oggi ti ricorda cosa buttare oggi per rispettare la raccolta differenziata nel tuo paese.<br><div id="includimihome"></div><style>.swal2-input{opacity:0 !important;}</style>',
onOpen: (el) => {
// var ht= '<select chosen style="padding: 0px !important;" class="w-100 localytics-chosen" options="comuni" ng-model="cittaSelezionata.istat" ng-options="comune.istat as comune.comune group by comune.regione for comune in comuni" ng-change="hctrl.getGiorno()" data-placeholder="Scrivi qui il tuo comune!" group_search="false" search_contains="false" enable-split-word-search="false" no-results-text="\'Non è stato trovato nessun risultato :(\'" max_shown_results="100">'+
// '<option></option>'+
// '</select>';
// var html = $compile(ht)($scope);
// angular.element(document.getElementById("includimihome")).append(html);
// var container = $(el);
// var originalBackButton = container.find('.swal2-cancel');
// originalBackButton.html("Chiudi");
// originalBackButton.hide();
}
})
deferred.resolve(step0);
//quando chiude fuori dal panaro
//{"$$state":{"status":1,"value":{"dismiss":"backdrop"}}}
if(deferred.promise["$$state"] && "" )
//boottone avanti
// {"$$state":{"status":1,"value":{"value":"1"}}}
alert(JSON.stringify(deferred.promise));
return;
async function backAndForth () {
const values = []
let currentStep
var result
for (currentStep = 0; currentStep < steps.length;) {
if(currentStep==0){
result = await swalQueueStep.fire({
title: 'Benvenuto in Cosa Butto Oggi?',
imageUrl: 'img/logo-cosa-butto-oggi-apisoft.png',
imageHeight: 300,
inputValue: 0,
showCancelButton: currentStep > 0,
currentProgressStep: currentStep,
imageAlt: 'Cosa butto oggi?',
currentProgressStep: 0,
html: 'Cosa Butto Oggi ti ricorda cosa buttare oggi per rispettare la raccolta differenziata nel tuo paese.<br><div id="includimihome"></div><style>.swal2-input{opacity:0 !important;}</style>',
onOpen: (el) => {
// var ht= '<select chosen style="padding: 0px !important;" class="w-100 localytics-chosen" options="comuni" ng-model="cittaSelezionata.istat" ng-options="comune.istat as comune.comune group by comune.regione for comune in comuni" ng-change="hctrl.getGiorno()" data-placeholder="Scrivi qui il tuo comune!" group_search="false" search_contains="false" enable-split-word-search="false" no-results-text="\'Non è stato trovato nessun risultato :(\'" max_shown_results="100">'+
// '<option></option>'+
// '</select>';
// var html = $compile(ht)($scope);
// angular.element(document.getElementById("includimihome")).append(html);
// var container = $(el);
// var originalBackButton = container.find('.swal2-cancel');
// originalBackButton.html("Chiudi");
// originalBackButton.hide();
}
})
}
if(currentStep==1){
const result = await swalQueueStep.fire({
inputValue: values[currentStep],
showCancelButton: currentStep > 0,
currentProgressStep: currentStep,
title: 'Seleziona una città?',
imageUrl: 'img/italia.png',
imageWidth: 170,
currentProgressStep: 2,
imageAlt: 'Seleziona una città?',
html: '<div id="includimihome"></div><style>.swal2-input{visibility:hidden !important}</style>',
onOpen: (el) => {
var ht= '<select chosen style="padding: 0px !important;" class="w-100 localytics-chosen" options="comuni" ng-model="cittaSelezionata.istat" ng-options="comune.istat as comune.comune group by comune.regione for comune in comuni" ng-change="hctrl.getGiorno()" data-placeholder="Scrivi qui il tuo comune!" group_search="false" search_contains="false" enable-split-word-search="false" no-results-text="\'Non è stato trovato nessun risultato :(\'" max_shown_results="100">'+
'<option></option>'+
'</select>';
var html = $compile(ht)($scope);
angular.element(document.getElementById("includimihome")).append(html);
var container = $(el);
// var originalBackButton = container.find('.swal2-cancel');
// var clonedBackButton = originalBackButton.clone();
// originalBackButton.hide();
// clonedBackButton.insertAfter(originalBackButton);
// clonedBackButton.on('click', function() {
// if (confirm('Are you sure?')) originalBackButton.click();
// });
},
})
}
if(currentStep==2){
const result = await swalQueueStep.fire({
title: 'Seleziona la zona della tua città',
imageUrl: 'img/italia_1.png',
imageHeight: 300,
inputValue: values[currentStep],
showCancelButton: currentStep > 0,
currentProgressStep: currentStep,
imageAlt: 'Cosa butto oggi?',
html: '<div id="includimihome2"></div><style>.swal2-input{visibility:hidden !important;}</style>',
onOpen: (el) => {
var hta= '<div scelta-zonehome citta-selezionata="cittaSelezionata"></div>';
var htmla = $compile(hta)($scope);
angular.element(document.getElementById("includimihome2")).append(htmla);
//var container = $(el);
// var originalBackButton = container.find('.swal2-cancel');
// originalBackButton.html("Chiudi");
// originalBackButton.hide();
},
// html: '<div id="includimihome2"></div><style>.swal2-input{display:none !important}</style>',
// onOpen: (el) => {
// var hta= '<div scelta-zonehome citta-selezionata="cittaSelezionata"></div>';
// // '<div ng-repeat="x in cittaSelezionata.zone track by $index" ng-click="cittaSelezionata.zona = x; hctrl.getColoriFront();" class="col-md-2 col-xs-4 col-lx-2 {{(cittaSelezionata.zone.length<6 && $first)?\'col-md-offset-\'+(intVal((6-cittaSelezionata.zone.length))):\'\'}} {{(cittaSelezionata.zone.length<3 && $first)?\'col-xs-offset-\'+(intVal((3-cittaSelezionata.zone.length))):\'\'}} {{(cittaSelezionata.zone.length<6 && $first)?\'col-xl-offset-\'+(intVal((6-cittaSelezionata.zone.length))):\'\'}} zone-div {{(cittaSelezionata.zona == x)?\'zone-div-active\':\'\'}}" >'+
// // '<img ng-src="img/pin.gif" style="width: 55%;"><br>{{x}}</div>';
// var htmla = $compile(hta)($scope);
// angular.element(document.getElementById("includimihome2")).append(htmla);
// },
})
}
if (result.value) {
values[currentStep] = result.value
currentStep++
} else if (result.dismiss === 'cancel') {
currentStep--
} else {
break
}
}
if (currentStep === steps.length) {
Swal.fire(JSON.stringify(values))
}
}
backAndForth()
/*
Swal.mixin({
input: 'text',
confirmButtonText: 'Avanti →',
cancelButtonText: 'Indietro',
reverseButtons: true,
showCloseButton: true,
showCancelButton: true,
progressSteps: ['1', '2', '3']
}).queue([
{
title: 'Benvenuto in Cosa Butto Oggi?',
imageUrl: 'img/logo-cosa-butto-oggi-apisoft.png',
imageHeight: 300,
imageAlt: 'Cosa butto oggi?',
currentProgressStep: 1,
html: 'Cosa Butto Oggi ti ricorda cosa buttare oggi per rispettare la raccolta differenziata nel tuo paese.<br><div id="includimihome"></div><style>.swal2-input{display:none !important;}</style>',
onOpen: (el) => {
var ht= '<select chosen style="padding: 0px !important;" class="w-100 localytics-chosen" options="comuni" ng-model="cittaSelezionata.istat" ng-options="comune.istat as comune.comune group by comune.regione for comune in comuni" ng-change="hctrl.getGiorno()" data-placeholder="Scrivi qui il tuo comune!" group_search="false" search_contains="false" enable-split-word-search="false" no-results-text="\'Non è stato trovato nessun risultato :(\'" max_shown_results="100">'+
'<option></option>'+
'</select>';
var html = $compile(ht)($scope);
angular.element(document.getElementById("includimihome")).append(html);
var container = $(el);
var originalBackButton = container.find('.swal2-cancel');
originalBackButton.html("Chiudi");
originalBackButton.hide();
},
},
{
title: 'Seleziona una città?',
imageUrl: 'img/italia.png',
imageWidth: 170,
currentProgressStep: 2,
imageAlt: 'Seleziona una città?',
html: '<div id="includimihome"></div><style>.swal2-input{display:none !important}</style>',
onOpen: (el) => {
var ht= '<select chosen style="padding: 0px !important;" class="w-100 localytics-chosen" options="comuni" ng-model="cittaSelezionata.istat" ng-options="comune.istat as comune.comune group by comune.regione for comune in comuni" ng-change="hctrl.getGiorno()" data-placeholder="Scrivi qui il tuo comune!" group_search="false" search_contains="false" enable-split-word-search="false" no-results-text="\'Non è stato trovato nessun risultato :(\'" max_shown_results="100">'+
'<option></option>'+
'</select>';
var html = $compile(ht)($scope);
angular.element(document.getElementById("includimihome")).append(html);
var container = $(el);
var originalBackButton = container.find('.swal2-cancel');
var clonedBackButton = originalBackButton.clone();
originalBackButton.hide();
clonedBackButton.insertAfter(originalBackButton);
clonedBackButton.on('click', function() {
if (confirm('Are you sure?')) originalBackButton.click();
});
},
// preConfirm: () => { } //prima di premere avanti
},
{
title: 'Seleziona una zona?',
imageUrl: 'img/italia_1.png',
imageWidth: 170,
currentProgressStep: 3,
imageAlt: 'Seleziona una zona?',
html: '<div id="includimihome2"></div><style>.swal2-input{display:none !important}</style>',
onOpen: () => {
var hta= '<div scelta-zonehome citta-selezionata="cittaSelezionata"></div>';
// '<div ng-repeat="x in cittaSelezionata.zone track by $index" ng-click="cittaSelezionata.zona = x; hctrl.getColoriFront();" class="col-md-2 col-xs-4 col-lx-2 {{(cittaSelezionata.zone.length<6 && $first)?\'col-md-offset-\'+(intVal((6-cittaSelezionata.zone.length))):\'\'}} {{(cittaSelezionata.zone.length<3 && $first)?\'col-xs-offset-\'+(intVal((3-cittaSelezionata.zone.length))):\'\'}} {{(cittaSelezionata.zone.length<6 && $first)?\'col-xl-offset-\'+(intVal((6-cittaSelezionata.zone.length))):\'\'}} zone-div {{(cittaSelezionata.zona == x)?\'zone-div-active\':\'\'}}" >'+
// '<img ng-src="img/pin.gif" style="width: 55%;"><br>{{x}}</div>';
var htmla = $compile(hta)($scope);
angular.element(document.getElementById("includimihome2")).append(htmla);
},
// preConfirm: () => { } //prima di premere avanti
},
]).then((result) => {
debugger;
if (result.value) {
Swal.fire({
title: 'All done!',
html:
'Your answers: <pre><code>' +
JSON.stringify(result.value) +
'</code></pre>',
confirmButtonText: 'Lovely!'
})
}
})*/
}
$scope.intro();
// {
// title: 'Your public IP',
// confirmButtonText: 'Show my public IP',
// text:
// 'Your public IP will be received ' +
// 'via AJAX request',
// showLoaderOnConfirm: true,
// preConfirm: () => {
// return fetch(ipAPI)
// .then(response => response.json())
// .then(data => Swal.insertQueueStep(data.ip))
// .catch(() => {
// Swal.insertQueueStep({
// type: 'error',
// title: 'Unable to get your public IP'
// })
// })
// }
// }
this.getColoriFront = function(){
cosabuttoService.getColoriFront($rootScope.cittaSelezionata.istat,$rootScope.cittaSelezionata.zona).then(function successCallback(response) {
//alert(response.data);
//console.log("Aggiornato");
if(response.data){
$rootScope.tipologie = angular.copy($rootScope.tipologieDefault);
for (var i = response.data.length - 1; i >= 0; i--) {
for (var ik = $rootScope.tipologie.length - 1; ik >= 0; ik--) {
if(response.data[i].tipologia==$rootScope.tipologie[ik].id){
$rootScope.tipologie[ik].colore = response.data[i].colore;
$rootScope.tipologie[ik].orainizio = response.data[i].orainizio;
$rootScope.tipologie[ik].orafine = response.data[i].orafine;
//$rootScope.tipologie[ik]= angular.copy(response.data[i]);
}//else{
// $rootScope.tipologie[ik].colore = $rootScope.tipologieDefault[ik].colore
//}
}
}
// growlService.growl("Dati aggiornati con successo!", 'success')
}else{
//growlService.growl("Non è stato possibile aggiornare i dati!", 'alert')
}
}, function errorCallback(response) {
// growlService.growl("Non è stato possibile aggiornare i dati!", 'alert')
});
}
this.getTipologia = function(id){
for (var i = $rootScope.tipologie.length - 1; i >= 0; i--) {
if($rootScope.tipologie[i].id ==id){
return $rootScope.tipologie[i];
}
}
}
this.getGiorno = function(){
cosabuttoService.getGiorno(moment().format("YYYY-MM-DD"),$rootScope.cittaSelezionata.istat).then(function successCallback(response) {
$rootScope.oggi = response.data;
$rootScope.cittaSelezionata.zona = "";
$rootScope.cittaSelezionata.zone = [];
var first=true;
for (var k in $rootScope.oggi.zone) {
if(first){
first=false;
$rootScope.cittaSelezionata.zona = k;
}
if($rootScope.cittaSelezionata.zone.indexOf(k) == -1){
$rootScope.cittaSelezionata.zone.push(k);
}
}
cosabuttoService.getGiornoNoStat(moment().format("YYYY-MM-DD"),$rootScope.cittaSelezionata.istat).then(function successCallback(resp) {
$scope.tipologiaOggiMax = resp.data.dati[$rootScope.cittaSelezionata.zona];
}, function errorCallback(response){
});
$scope.hctrl.getColoriFront();
}, function errorCallback(response){
});
}
this.avanzata = false;
this.avanzataChange = function () {
this.avanzata = !this.avanzata;
}
this.init = function(){
if (navigator.geolocation) {
navigator.geolocation.getCurrentPosition(function(position){
if(position.coords.latitude && position.coords.longitude){
$rootScope.utente.user_lat = position.coords.latitude;
$rootScope.utente.user_lng = position.coords.longitude;
cosabuttoService.geoLatLngToCity(position.coords.latitude,position.coords.longitude).then(function successCallback(response) {
if("data" in response && response.data){
$rootScope.cittaSelezionata.istat =response.data[0].istat;
$scope.hctrl.getGiorno();
}
}, function errorCallback(response) {
});
}else{
$rootScope.utente.user_lat = null;
$rootScope.utente.user_lng = null;
}
})
}
if($scope.cittaSelezionata.istat>-1){
this.getGiorno()
if($scope.cittaSelezionata.zona != "" && $scope.cittaSelezionata.zona != "Nuova Zona"){
this.getColoriFront()
}
}
if($scope.cittaSelezionata.zona == "Nuova Zona"){
$scope.cittaSelezionata.zona = $scope.cittaSelezionata.zone[0];
}
}
this.init();
});
app.controller("sceltaZonehomeCtrl", function($scope, cosabuttoService,cosabuttoServiceSocial,growlService,$rootScope, $state){
//aggiorna la vista
cosabuttoService.up().then(function successCallback(response) {}, function errorCallback(response) {});
})
app.factory('facebookService', function($q) {
return {
getData: function() {
var deferred = $q.defer();
try{
FB.api('/me', {
fields: 'email,name,picture'
}, function(response) {
if (!response || response.error) {
deferred.reject('Error occured');
} else {
deferred.resolve(response);
}
});
}catch(e){
deferred.reject(e);
}
return deferred.promise;
},
getStatus: function(){
var deferred = $q.defer();
FB.getLoginStatus(function(response) {
if (response.status === 'connected') {
// The user is logged in and has authenticated your
// app, and response.authResponse supplies
// the user's ID, a valid access token, a signed
// request, and the time the access token
// and signed request each expire.
deferred.resolve(true);
var uid = response.authResponse.userID;
var accessToken = response.authResponse.accessToken;
} else if (response.status === 'not_authorized') {
// The user hasn't authorized your application. They
// must click the Login button, or you must call FB.login
// in response to a user gesture, to launch a login dialog.
deferred.resolve(false);
} else {
deferred.resolve(false);
// The user isn't logged in to Facebook. You can launch a
// login dialog with a user gesture, but the user may have
// to log in to Facebook before authorizing your application.
}
});
return deferred.promise;
},
login: function(){
var deferred = $q.defer();
FB.login(function(response) {
if (response.authResponse) {
console.log('Welcome! Fetching your information.... ');
deferred.resolve(response);
} else {
console.log('User cancelled login or did not fully authorize.');
deferred.reject('Error occured');
}
}, {scope: 'email'});
return deferred.promise;
},
logout: function(){
FB.getLoginStatus(function(resp){
FB.logout(function(aresp){});
})
}
}
});
app.directive('sceltaZonehome', function($rootScope, $compile){
return {
restrict: "A",
scope: {
cittaSelezionata: "=",
hctrl: "="
},
// controller: function ( $scope, $element ) {
// for (var k in $scope.cittaSelezionata.zone) {
// var x = $scope.cittaSelezionata.zone[k];
// var el = '<div ng-click="cittaSelezionata.zona = \''+x+'\'; hctrl.getColoriFront();"><img ng-src="img/pin.gif" style="width: 55%;"><br>'+x+'</div>';
// $element.append( el );
// }
// },
controller: "sceltaZonehomeCtrl",
template: '<div ng-repeat="x in cittaSelezionata.zone track by $index" ng-click="cittaSelezionata.zona = x; hctrl.getColoriFront();" class="col-md-4 col-xs-4 col-lx-4 {{(cittaSelezionata.zone.length==1 && $index==0)?\'col-md-offset-4 col-xs-offset-4 col-xl-offset-4\':\'\'}} {{($index==0 && cittaSelezionata.zone.length==2)?\'col-md-offset-2 col-xs-offset-2 col-xl-offset-2\':\'\'}} zone-div {{(cittaSelezionata.zona == x)?\'zone-div-active\':\'\'}}" >'+
'<img ng-src="img/pin.gif" style="width: 55%;"><br>{{x}}</div>'
};
})
app.factory('googleService', function($q) {
return {
getData: function() {
if (auth2 && auth2.isSignedIn.get()) {
var profile = auth2.currentUser.get().getBasicProfile();
//var profile = googleUser.getBasicProfile();
return {
name: profile.getName(),
picture: profile.getImageUrl(),
email: profile.getEmail()
};
}else{
return false;
}
},
getStatus: function(){
},
login: function(){
var deferred = $q.defer();
gapi.load('auth2', function() {
auth2 = gapi.auth2.init({
"client_id":"1049448224889-1s5iv286kq8r0h0j42khuc9ie1g6ajdc.apps.googleusercontent.com"
});
// Sign the user in, and then retrieve their ID.
auth2.signIn().then(function() {
var profile= auth2.currentUser.get();
console.log(profile.getId());
var toRet= {
"name": profile.getBasicProfile().getName(),
"picture": {"data" : {"url" : profile.getBasicProfile().getImageUrl() } },
"email": profile.getBasicProfile().getEmail(),
"token": profile.getAuthResponse().id_token
}
deferred.resolve(toRet);
});
});
return deferred.promise;
/*
gapi.auth2.init(
{
"client_id":"1049448224889-1s5iv286kq8r0h0j42khuc9ie1g6ajdc.apps.googleusercontent.com"
}
);
var profile = googleUser.getBasicProfile();
return {
name: profile.getName(),
picture: profile.getImageUrl(),
email: profile.getEmail()
};*/
},
logout: function(){
var auth2 = gapi.auth2.getAuthInstance();
auth2.signOut().then(function () {
console.log('User signed out.');
});
}
}
});
//google = {"web":{"client_id":"1049448224889-1s5iv286kq8r0h0j42khuc9ie1g6ajdc.apps.googleusercontent.com","project_id":"cosabutto","auth_uri":"https://accounts.google.com/o/oauth2/auth","token_uri":"https://oauth2.googleapis.com/token","auth_provider_x509_cert_url":"https://www.googleapis.com/oauth2/v1/certs","client_secret":"6KtlNOBVSZ7kEJlbL8OBccKw","javascript_origins":["https://www.cosabutto.it"]}}
function onSignIn(googleUser) {
var profile = googleUser.getBasicProfile();
}
app.factory("cosabuttoServiceSocial", function($http){
var toReturn={
getStat: function(userinfo)
{
var param = [
{name: "userinfo", value: JSON.stringify(userinfo) }
];
var sendData = {
url: basePath + 'api/my/statuser.php',
method: 'POST',
headers : {'Content-Type': 'application/json;charset=utf-8'},
data: param
}
// $http returns a promise, which has a then function, which also returns a promise
return $http(sendData);
},
zoneUpsert: function(userinfo,istatcode,zone)
{
var param = [
{name: "userinfo", value: JSON.stringify(userinfo) },
{name: "istatcode", value:istatcode},
{name: "zone", value:zone}
];
var sendData = {
url: basePath + 'api/my/zoneupsert.php',
method: 'POST',
headers : {'Content-Type': 'application/json;charset=utf-8'},
data: param
}
// $http returns a promise, which has a then function, which also returns a promise
return $http(sendData);
},
/*
cambiaOrariInizio: function(idtipo,orainizio,email,istatcode,zone)
{
var param = [
{name: "email", value: email },
{name: "istatcode", value:istatcode},
{name: "zone", value:zone},
{name: "orainizio", value:orainizio},
{name: "idtipo", value:idtipo},
];
var sendData = {
url: basePath + 'api/my/orarioupsert.php',
method: 'POST',
headers : {'Content-Type': 'application/json;charset=utf-8'},
data: param
}
// $http returns a promise, which has a then function, which also returns a promise
return $http(sendData);
},
cambiaOrariInizio: function(idtipo,orafine,email,istatcode,zone)
{
var param = [
{name: "email", value: email },
{name: "istatcode", value:istatcode},
{name: "zone", value:zone},
{name: "orafine", value:orafine},
{name: "idtipo", value:idtipo},
];
var sendData = {
url: basePath + 'api/my/orarioupsert.php',
method: 'POST',
headers : {'Content-Type': 'application/json;charset=utf-8'},
data: param
}
// $http returns a promise, which has a then function, which also returns a promise
return $http(sendData);
},*/
cambiaTipologia: function(idtipo,colore,userinfo,istatcode,zone,orainizio, orafine)
{
var param = [
{name: "userinfo", value: JSON.stringify(userinfo) },
{name: "istatcode", value:istatcode},
{name: "zone", value:zone},
{name: "colore", value:colore},
{name: "idtipo", value:idtipo},
{name: "orainizio", value:orainizio},
{name: "orafine", value:orafine},
];
var sendData = {
url: basePath + 'api/my/coloreupsert.php',
method: 'POST',
headers : {'Content-Type': 'application/json;charset=utf-8'},
data: param
}
// $http returns a promise, which has a then function, which also returns a promise
return $http(sendData);
},
inserisciDifferenziata: function(multipla,idtipo,data,userinfo,istatcode,zone)
{
var param = [
{name: "userinfo", value: JSON.stringify(userinfo) },
{name: "istatcode", value:istatcode},
{name: "zone", value:zone},
{name: "data", value:data},
{name: "tipo", value:idtipo},
{name: "multipla", value:multipla}
];
var sendData = {
url: basePath + 'api/my/giornoupsert.php',
method: 'POST',
headers : {'Content-Type': 'application/json;charset=utf-8'},
data: param
}
// $http returns a promise, which has a then function, which also returns a promise
return $http(sendData);
}
};
return toReturn;
});
app.factory("cosabuttoService", function($http, $q){
var toReturn={
up: function(){
var deferred = $q.defer();
deferred.resolve(true);
return deferred.promise;
},
zoneGet: function(istatcode)
{
var param = [
{name: "istatcode", value:istatcode}
];
var sendData = {
url: basePath + 'api/zoneget.php',
method: 'POST',
headers : {'Content-Type': 'application/json;charset=utf-8'},
data: param
}
// $http returns a promise, which has a then function, which also returns a promise
return $http(sendData);
},
geoLatLngToCity: function(lat,lng){
var sendData = {
url: basePath + 'api/geoget.php?lat='+lat+"&lng="+lng,
method: 'GET',
headers : {'Content-Type': 'application/json;charset=utf-8'}
}
// $http returns a promise, which has a then function, which also returns a promise
return $http(sendData);
/*return "Paternopoli";
//TODO API
var googleKey ="";
var sendData = {
url: "https://maps.googleapis.com/maps/api/geocode/json?latlng="+lat+","+lng+"&key="+googleKey,
method: 'GET',
headers : {'Content-Type': 'application/json;charset=utf-8'}
}
// $http returns a promise, which has a then function, which also returns a promise
return $http(sendData).then(function successCallback(response) {
var data= response.data;
if("status" in data && data.status == "OK" && "results" in data && data.results.length>0 && "formatted_address" in data.results && data.results.formatted_address){
return data.results.formatted_address;
}
}, function errorCallback(response) {
return response.data;
});
var url="https://maps.googleapis.com/maps/api/geocode/json?latlng="+position.coords.latitude+","+position.coords.longitude+"&key=YOUR_API_KEY";
*/
},
getColore: function(istatcode,zone,userinfo)
{
if(!zone){
zone = "Default";
}
var data =[
{name: "istatcode", value:istatcode},
{name: "zone", value: zone},
{name: "userinfo", value: JSON.stringify(userinfo)}
];
var sendData = {
url: basePath + 'api/my/coloreget.php',
method: 'POST',
headers : {'Content-Type': 'application/json;charset=utf-8'},
data: data
}
// $http returns a promise, which has a then function, which also returns a promise
return $http(sendData);
}
,
getGiorno: function(giorno, istatcode)
{
var sendData = {
url: basePath + 'api/giornoget.php?giorno='+giorno+"&istatcode="+istatcode,
method: 'GET',
headers : {'Content-Type': 'application/json;charset=utf-8'}
}
// $http returns a promise, which has a then function, which also returns a promise
return $http(sendData);
},
getGiornoNoStat: function(giorno, istatcode)
{
var sendData = {
url: basePath + 'api/giornogetnostat.php?giorno='+giorno+"&istatcode="+istatcode,
method: 'GET',
headers : {'Content-Type': 'application/json;charset=utf-8'}
}
// $http returns a promise, which has a then function, which also returns a promise
return $http(sendData);
},
getSettimana: function(week,year,istatcode,userinfo)
{
var data =[
{name: "week", value:week},
{name: "year", value: year},
{name: "istatcode", value: istatcode},
{name: "userinfo", value: JSON.stringify(userinfo)}
];
var sendData = {
url: basePath + 'api/my/settimanaget.php',
method: 'POST',
headers : {'Content-Type': 'application/json;charset=utf-8'},
data: data
}
// $http returns a promise, which has a then function, which also returns a promise
return $http(sendData);
},
getComuni: function()
{
var sendData = {
url: 'json/italia_autocomplete.json',
method: 'GET',
headers : {'Content-Type': 'application/json;charset=utf-8'}
}
// $http returns a promise, which has a then function, which also returns a promise
return $http(sendData);
},
getColoriFront: function(istatcode,zone)
{
if(!zone){
zone = "Default";
}
var sendData = {
url: basePath + 'api/coloreget.php?istatcode='+istatcode+"&zone="+zone,
method: 'GET',
headers : {'Content-Type': 'application/json;charset=utf-8'}
}
// $http returns a promise, which has a then function, which also returns a promise
return $http(sendData);
}
//http://localhost/cosabuttooggiwebsite/cosabutto/api/settimanaget.php?week=20&year=2019&istatcode=1001
};
return toReturn;
})
app.controller("socialCtrl", function($scope, cosabuttoService,cosabuttoServiceSocial,growlService,$rootScope, $state){
var lingua = window.navigator.language;
moment.locale(lingua);
$scope.today = moment();
$scope.calendar = {};
$scope.dataOrdierna = moment(moment().format("YYYY-MM-DD")).valueOf();
//RECUPERO COLORI DEFAULT DA DB
this.getColore = function(){
//solo se loggato
cosabuttoService.getColore($rootScope.cittaSelezionata.istat, $rootScope.cittaSelezionata.zona, $rootScope.utente).then(function successCallback(response) {
if("status" in response.data && response.data.status==false && response.data.error== "Token utente non valido"){
localStorage.removeItem('utente');
growlService.growl('Devi effettuare il login per continuare!', 'danger');
$rootScope.utente = {login_status: false};
}else if("status" in response.data && response.data.status == false){
growlService.growl("Errore in fase di recupero dei dati!", 'alert')
}else{
$rootScope.tipologie = angular.copy($rootScope.tipologieDefault);
for (var i = response.data.length - 1; i >= 0; i--) {
for (var ik = $rootScope.tipologie.length - 1; ik >= 0; ik--) {
if(response.data[i].tipologia==$rootScope.tipologie[ik].id){
$rootScope.tipologie[ik].colore = response.data[i].colore;
$rootScope.tipologie[ik].orainizio = response.data[i].orainizio;
$rootScope.tipologie[ik].orafine = response.data[i].orafine;
}//else{
// $rootScope.tipologie[ik].colore = $rootScope.tipologieDefault[ik].colore
//}
}
}
}
}, function errorCallback(response) {
growlService.growl("Errore in fase di recupero dei dati!", 'alert')
});
}
this.zoneGet = function(){
cosabuttoService.zoneGet($rootScope.cittaSelezionata.istat)
.then(function successCallback(response) {
$rootScope.cittaSelezionata.tuttezone = response.data;
$rootScope.cittaSelezionata.zonaCheck = '';
}, function errorCallback(response) {
growlService.growl("Non è stato possibile recuperare i dati!", 'alert')
});
}
this.zoneUpsert = function(zona){
$rootScope.cittaSelezionata.zona = zona;
if($rootScope.cittaSelezionata.tuttezone.indexOf(zona) > -1){
$rootScope.cittaSelezionata.zonaCheck=$rootScope.cittaSelezionata.zona;
$scope.soctrl.getDatiSettimanaAttuale();
$scope.soctrl.getColore();
//$scope.getOrari();
}else if($rootScope.cittaSelezionata.zona!= "Nuova Zona"){
cosabuttoServiceSocial.zoneUpsert($rootScope.utente,$rootScope.cittaSelezionata.istat,$rootScope.cittaSelezionata.zona)
.then(function successCallback(response) {
if(response.data.status){
$scope.soctrl.zoneGet();
$rootScope.cittaSelezionata.zonaCheck=$rootScope.cittaSelezionata.zona;
$scope.soctrl.getDatiSettimanaAttuale();
$scope.soctrl.getColore();
//$scope.getOrari();
growlService.growl("La nuova zona è stata aggiunta con successo!", 'success')
}else if("status" in response.data && response.data.status==false && response.data.error== "Token utente non valido"){
localStorage.removeItem('utente');
growlService.growl('Devi effettuare il login per continuare!', 'danger');
$rootScope.utente = {login_status: false};
}
}, function errorCallback(response) {
growlService.growl("Non è stato possibile aggiornare i dati!", 'alert')
});
}else{
}
return;
}
/*
$scope.cambiaOrariInizio = function(tipo, orainizio){
debugger;
$rootScope.tipologieBackup = angular.copy($rootScope.tipologie);
for (var i = 0; i < $rootScope.tipologie.length; i++) {
if($rootScope.tipologie[i].nome == tipo){
cosabuttoServiceSocial.cambiaOrariInizio($rootScope.tipologie[i].id,orainizio,$scope.email,$rootScope.cittaSelezionata.istat,$rootScope.cittaSelezionata.zona)
.then(function successCallback(response) {
if(response.data.status){
$rootScope.tipologie[i].orainizio=orainizio;
growlService.growl("Dati aggiornati con successo!", 'success')
}else{
growlService.growl("Non è stato possibile aggiornare i dati!", 'alert')
}
}, function errorCallback(response) {
growlService.growl("Non è stato possibile aggiornare i dati!", 'alert')
});
return;
}
}
}
$scope.cambiaOrariFine = function(tipo, orafine){
$rootScope.tipologieBackup = angular.copy($rootScope.tipologie);
for (var i = 0; i < $rootScope.tipologie.length; i++) {
if($rootScope.tipologie[i].nome == tipo){
cosabuttoServiceSocial.cambiaOrariFine($rootScope.tipologie[i].id,orafine,$scope.email,$rootScope.cittaSelezionata.istat,$rootScope.cittaSelezionata.zona)
.then(function successCallback(response) {
if(response.data.status){
$rootScope.tipologie[i].orafine=orafine;
growlService.growl("Dati aggiornati con successo!", 'success')
}else{
growlService.growl("Non è stato possibile aggiornare i dati!", 'alert')
}
}, function errorCallback(response) {
growlService.growl("Non è stato possibile aggiornare i dati!", 'alert')
});
return;
}
}
}
*/
this.cambiaTipologia = function(tipo, colore, orainizio, orafine){
if(tipo){
$rootScope.tipologieBackup = angular.copy($rootScope.tipologie);
for (var i = 0; i < $rootScope.tipologie.length; i++) {
if($rootScope.tipologie[i].nome == tipo){
if(!colore){
colore = $rootScope.tipologie[i].colore;
}
cosabuttoServiceSocial.cambiaTipologia($rootScope.tipologie[i].id,colore,$rootScope.utente,$rootScope.cittaSelezionata.istat,$rootScope.cittaSelezionata.zona,orainizio, orafine)
.then(function successCallback(response) {
if(response.data.status){
$rootScope.tipologie[i].colore=colore;
growlService.growl("Dati aggiornati con successo!", 'success')
}else if("status" in response.data && response.data.status==false && response.data.error== "Token utente non valido"){
localStorage.removeItem('utente');
growlService.growl('Devi effettuare il login per continuare!', 'danger');
$rootScope.utente = {login_status: false};
}else{
growlService.growl("Non è stato possibile aggiornare i dati!", 'alert')
}
}, function errorCallback(response) {
growlService.growl("Non è stato possibile aggiornare i dati!", 'alert')
});
return;
}
}
}
}
this.getDatiSettimanaAttuale =function(){
if(!("week" in $scope.calendar)){
$scope.calendar.week = $scope.today.format("ww/YYYY");
}
var tmp =$scope.calendar.week.split("/");
var settimanaAttuale = tmp[0];
var annoAttuale =tmp[1];
var istatcode = $rootScope.cittaSelezionata.istat;
if(istatcode>-1){
cosabuttoService.getSettimana(settimanaAttuale,annoAttuale,istatcode,$rootScope.utente).then(function successCallback(response) {
$scope.soctrl.setCalendarWeekAfter(response.data);
}, function errorCallback(response) {
$scope.soctrl.setCalendarWeekAfter();
});
}else if("status" in response.data && response.data.status==false && response.data.error== "Token utente non valido"){
localStorage.removeItem('utente');
growlService.growl('Devi effettuare il login per continuare!', 'danger');
$rootScope.utente = {login_status: false};
}else{
$scope.soctrl.setCalendarWeekAfter();
}
}
this.inserisciDifferenziata = function(multipla,idtipo,data){
cosabuttoServiceSocial.inserisciDifferenziata(multipla,idtipo,data.esteso,$rootScope.utente,$rootScope.cittaSelezionata.istat,$rootScope.cittaSelezionata.zona).then(function successCallback(response) {
//alert(response.data);
//console.log("Aggiornato");
if("status" in response.data && response.data.status){
$scope.soctrl.getDatiSettimanaAttuale();
growlService.growl("Dati aggiornati con successo!", 'success')
}else if("status" in response.data && response.data.status==false && response.data.error== "Token utente non valido"){
localStorage.removeItem('utente');
growlService.growl('Devi effettuare il login per continuare!', 'danger');
$rootScope.utente = {login_status: false};
}else{
growlService.growl("Non è stato possibile aggiornare i dati!", 'alert')
}
}, function errorCallback(response) {
growlService.growl("Non è stato possibile aggiornare i dati!", 'alert')
});
}
//AZIONI CALENDARIO
this.nextWeek = function(){
$scope.soctrl.setCalendarWeek("6","add");
}
this.prevWeek = function(){
$scope.soctrl.setCalendarWeek("7","remove");
}
this.nowWeek = function(){
$scope.soctrl.setCalendarWeek();
}
this.getColoriFront = function(){
cosabuttoService.getColoriFront($rootScope.cittaSelezionata.istat,$rootScope.cittaSelezionata.zona).then(function successCallback(response) {
//alert(response.data);
//console.log("Aggiornato");
if("status" in response.data && response.data.status){
$scope.soctrl.getDatiSettimanaAttuale();
growlService.growl("Dati aggiornati con successo!", 'success')
}else{
growlService.growl("Non è stato possibile aggiornare i dati!", 'alert')
}
}, function errorCallback(response) {
growlService.growl("Non è stato possibile aggiornare i dati!", 'alert')
});
}
this.setCalendarWeekAfter = function(dadb){
$scope.calendar.week = $scope.today.format("ww/YYYY");
$scope.calendar.from_date = $scope.today.startOf('week').format("DD-MM-YYYY");
$scope.calendar.to_date = $scope.today.endOf('week').format("DD-MM-YYYY");
$scope.calendar.days = [];
var tmpDate = moment($scope.today);
for (var i = 0; i < 7; i++) {
var giorno_moment = tmpDate.startOf('week').add(i, 'day');
var giorno = {
nome: giorno_moment.format("dddd").capitalize(),
numero: giorno_moment.format("DD"),
esteso: giorno_moment.format("YYYY-MM-DD"),
tipologia: []
};
for(var asd in dadb){
var giorno_data = moment(parseInt(dadb[asd].date)); //timestamp
if($rootScope.cittaSelezionata.zone.indexOf(dadb[asd].zone)==-1){
$rootScope.cittaSelezionata.zone.push(dadb[asd].zone);
}
if(giorno_moment.format("YYYY-MM-DD") == giorno_data.format("YYYY-MM-DD") && dadb[asd].zone==$rootScope.cittaSelezionata.zona){
giorno.tipologia = dadb[asd].tipologia;
giorno.orainizio = dadb[asd].orainizio;
giorno.orafine = dadb[asd].orafine;
giorno.multipla = dadb[asd].multipla;
}
}
$scope.calendar.days.push(giorno);
}
}
this.setCalendarWeek = function(newweek, tipo){
if(tipo == "add"){
$scope.today.add(newweek, 'day');
}else if(tipo == "remove"){
$scope.today.subtract(newweek, 'day');
}else{
$scope.today = moment();
}
var week = $scope.today.format("ww");
var year = $scope.today.format("YYYY");
var istatcode = $rootScope.cittaSelezionata.istat;
if(istatcode>-1){
cosabuttoService.getSettimana(week,year,istatcode,$rootScope.utente).then(function successCallback(response) {
$scope.soctrl.setCalendarWeekAfter(response.data);
}, function errorCallback(response) {
$scope.soctrl.setCalendarWeekAfter();
});
}else if("status" in response.data && response.data.status==false && response.data.error== "Token utente non valido"){
localStorage.removeItem('utente');
growlService.growl('Devi effettuare il login per continuare!', 'danger');
$rootScope.utente = {login_status: false};
}else{
$scope.soctrl.setCalendarWeekAfter();
}
// $('#table_insert_cosabutto').hide("slide", {direction: "left" }, 1000);
// $('#table_insert_cosabutto').show("slide", { direction: "right" }, 1000);
}
this.init = function(){
if($rootScope.utente && "login_status" in $rootScope.utente && $rootScope.utente.login_status){
if($scope.cittaSelezionata.istat>-1){
this.zoneGet();
this.getColore();
if($rootScope.cittaSelezionata.zona){
//$rootScope.cittaSelezionata.zonaCheck=$rootScope.cittaSelezionata.zona;
//this.zoneUpsert($scope.cittaSelezionata.zonaCheck);
}
}
}
}
this.init();
var self = this;
$rootScope.$watch("utente.login_status", function(newV,oldV){
if(newV){
self.init();
}
})
});
app.controller('templateCtrl', function($window, $timeout, $scope, $http, growlService, facebookService, googleService, $rootScope, cosabuttoService, cosabuttoServiceSocial, $q, $state){
$rootScope.cittaSelezionata = {
istat: -1,
zona: "",
zone: [],
tuttezone: []
};
//logout
$scope.logout = function(){
switch($rootScope.utente.social_network){
case 'facebook':
facebookService.logout();
break;
case 'amazon':
$rootScope.logoutAmazon();
break
case 'google':
googleService.logout();
break;
}
$rootScope.utente.login_status = false;
$rootScope.utente.social_network = "";
};
//informazioni utente
$scope.logoutLS =function(){
localStorage.removeItem('utente');
$scope.loadLS();
}
$scope.loadLS =function(){
if(localStorage.getItem("utente")){
$rootScope.utente = JSON.parse(localStorage.getItem("utente"));
cosabuttoServiceSocial.getStat($rootScope.utente).then(function(dat){
$rootScope.utente.stats = dat.data;
},function(err){});
growlService.growl('Bentornato '+$rootScope.utente.info.name+'!', 'info')
}else{
$rootScope.utente = {login_status: false, social_network: ''};
}
}
$scope.loadLS();
cosabuttoService.getComuni().then(function successCallback(response) {
$rootScope.comuni= response.data;
}, function errorCallback(response) {
$rootScope.comuni=[];
});
$rootScope.colori = [
"marrone",
"giallo",
"blu",
"turchese",
"verde",
"grigio",
"rosso"
];
$scope.intVal = function(x){
//return parseInt(x);
return Math.round(x);
}
//default
$rootScope.tipologie = [
{"id": -2, "nome": "Non Trovato", "colore": "bianco"},
{"id": -1, "nome": "Nessuno", "colore": "x"},
{"id": 1, "nome": "Organico", "colore": "marrone", "orainizio": "06:00", "orafine": "9:00"},
{"id": 2, "nome": "Plastica", "colore": "giallo", "orainizio": "06:00", "orafine": "9:00"},
{"id": 3, "nome": "Carta", "colore": "blu", "orainizio": "06:00", "orafine": "9:00"},
{"id": 4, "nome": "Metalli", "colore": "turchese", "orainizio": "06:00", "orafine": "9:00"},
{"id": 5, "nome": "Vetro", "colore": "verde", "orainizio": "06:00", "orafine": "9:00"},
{"id": 6, "nome": "Indifferenziato", "colore": "grigio", "orainizio": "06:00", "orafine": "9:00"},
{"id": 7, "nome": "Speciali", "colore": "rosso", "orainizio": "06:00", "orafine": "9:00"}
];
//backup
$rootScope.tipologieDefault = angular.copy($rootScope.tipologie);
//facebook
$rootScope.loginFacebook = function() {
var login = facebookService.login()
login.then(
function(da){
$rootScope.utente.data =da;
$rootScope.utente.accessToken =da.authResponse.accessToken;
$rootScope.utente.login_status = true;
$rootScope.utente.social_network = "facebook";
$rootScope.getDataFacebook();
},function(err){
$rootScope.utente.login_status = false;
$rootScope.utente.social_network = "facebook";
$scope.logoutLS();
}
);
};
$scope.checkIntro = function(){
}
$rootScope.loginGoogle = function () {
var login = googleService.login();
login.then(
function(da){
$rootScope.utente.info =da;
$rootScope.utente.data = {"token":da.token, "id_token":da.id_token};
//$rootScope.utente.accessToken =da.data.data.accessToken;
$rootScope.utente.login_status = true;
$rootScope.utente.social_network = "google";
localStorage.setItem("utente",JSON.stringify($rootScope.utente));
cosabuttoServiceSocial.getStat($rootScope.utente).then(function(dat){
$rootScope.utente.stats = dat.data;
},function(err){});
growlService.growl('Bentornato '+da.name+'!', 'info');
},function(err){
$rootScope.utente.login_status = false;
$rootScope.utente.social_network = "google";
$scope.logoutLS();
}
);
}
$rootScope.loginAmazon = function(){
options = { scope : 'profile' };
// amazon.Login.authorize(options, 'https://www.example.com/handle_login.php');
amazon.Login.authorize(options, function(response) {
if ( response.error ) {
//alert('oauth error ' + response.error);
$rootScope.utente.login_status = false;
$rootScope.utente.social_network = "amazon";
$scope.logoutLS();
return;
}
$rootScope.utente.data =response;
$rootScope.utente.accessToken =response.access_token;
$rootScope.utente.login_status = true;
$rootScope.utente.social_network = "amazon";
$rootScope.getDataAmazon();
});
return false;
}
$rootScope.logoutAmazon=function(){
amazon.Login.logout();
return;
}
$rootScope.fakelogin = function () {
$rootScope.utente = {"login_status":true,"social_network":"facebook","data":{"data":{"accessToken":"EAAE6Sqa9xtIBAHb0yagRq9TmocTDhBzIVJFkoHNDV6KvF878DE1jdMjUUyKHC8fJ0wtGZCNFitvqscKK1LiC3P4Uu7ItyhlJRLUGG2LxGPm1c5iD1Tn6cmZAzUeVxxrCDZAtMBZAVr31UUv27v7jCOVcFPhGWQvmg8b3cIn8hrGRcWR0UIcZCUHW6wGZCgtcQZD","userID":"10156498194658790","expiresIn":5242,"signedRequest":"6c8EfMifnoTGNzIWzJvlKPP0xNan9PHYz-qdnn93bwU.eyJ1c2VyX2lkIjoiMTAxNTY0OTgxOTQ2NTg3OTAiLCJjb2RlIjoiQVFESEs3VjctektaZzhBYmlSNTUzSndwc2ZzM0xyOHQ4WUxiaVBrdDZyN3JoejN6a0xJVjZrZ3QxSFd2NTh3d1EwckE4cndOdWp4YklCd052Wkp2QW9QN0dYM1k4SEVsclkwbGZza3JZcGx3N05PbFpaUklPWTZ2UWRKZmFidTFMeUNncnFzd3g5T2c0ano3UnRHRzhTLUxEZGhzcTE0SlFybzNlQ1FReVV5QXpjLVZKYWEzb0FVLWh4V2RhTGI0cjl2cm5UZDBiRFRlN21obUpPMGFWam85a1lFWUNZTVFscHMzaV9IM2ZOUnQ2S3N5UkhKNE55RU9UZGVOR29haW9ScEM2ZDQxMFRKRW40anJfLXZHWndDVnF3Z2ZEVGN4UU9kNVhBS2tjNHJjdi1VZzU3cXFpNU9VVmhWaWhrZWQ1Vk0yY0FVYWtHMmNlLWNmLWRadkNfMUIiLCJhbGdvcml0aG0iOiJITUFDLVNIQTI1NiIsImlzc3VlZF9hdCI6MTU1OTMwOTU1OH0","reauthorize_required_in":7776000,"data_access_expiration_time":1567085558},"status":"connected"},"info":{"email":"mauro.pescatore@me.com","name":"Angelo Pescatore","picture":{"data":{"height":50,"is_silhouette":false,"url":"https://platform-lookaside.fbsbx.com/platform/profilepic/?asid=10156498194658790&height=50&width=50&ext=1561901560&hash=AeR8YYxldYb9_4Cz","width":50}},"id":"10156498194658790"}};
}
//Utente Facebook OK: {"login_status":true,"social_network":"facebook","data":{"authResponse":{"accessToken":"EAAE6Sqa9xtIBAHb0yagRq9TmocTDhBzIVJFkoHNDV6KvF878DE1jdMjUUyKHC8fJ0wtGZCNFitvqscKK1LiC3P4Uu7ItyhlJRLUGG2LxGPm1c5iD1Tn6cmZAzUeVxxrCDZAtMBZAVr31UUv27v7jCOVcFPhGWQvmg8b3cIn8hrGRcWR0UIcZCUHW6wGZCgtcQZD","userID":"10156498194658790","expiresIn":5242,"signedRequest":"6c8EfMifnoTGNzIWzJvlKPP0xNan9PHYz-qdnn93bwU.eyJ1c2VyX2lkIjoiMTAxNTY0OTgxOTQ2NTg3OTAiLCJjb2RlIjoiQVFESEs3VjctektaZzhBYmlSNTUzSndwc2ZzM0xyOHQ4WUxiaVBrdDZyN3JoejN6a0xJVjZrZ3QxSFd2NTh3d1EwckE4cndOdWp4YklCd052Wkp2QW9QN0dYM1k4SEVsclkwbGZza3JZcGx3N05PbFpaUklPWTZ2UWRKZmFidTFMeUNncnFzd3g5T2c0ano3UnRHRzhTLUxEZGhzcTE0SlFybzNlQ1FReVV5QXpjLVZKYWEzb0FVLWh4V2RhTGI0cjl2cm5UZDBiRFRlN21obUpPMGFWam85a1lFWUNZTVFscHMzaV9IM2ZOUnQ2S3N5UkhKNE55RU9UZGVOR29haW9ScEM2ZDQxMFRKRW40anJfLXZHWndDVnF3Z2ZEVGN4UU9kNVhBS2tjNHJjdi1VZzU3cXFpNU9VVmhWaWhrZWQ1Vk0yY0FVYWtHMmNlLWNmLWRadkNfMUIiLCJhbGdvcml0aG0iOiJITUFDLVNIQTI1NiIsImlzc3VlZF9hdCI6MTU1OTMwOTU1OH0","reauthorize_required_in":7776000,"data_access_expiration_time":1567085558},"status":"connected"},"info":{"email":"angelo.pescatore@me.com","name":"Angelo Pescatore","picture":{"data":{"height":50,"is_silhouette":false,"url":"https://platform-lookaside.fbsbx.com/platform/profilepic/?asid=10156498194658790&height=50&width=50&ext=1561901560&hash=AeR8YYxldYb9_4Cz","width":50}},"id":"10156498194658790"}}
//Utente Facebook NO: {"login_status":false}
$rootScope.getDataFacebook = function() {
var datiutente = facebookService.getData()
datiutente.then(
function(da){
$rootScope.utente.info =da;
localStorage.setItem("utente",JSON.stringify($rootScope.utente));
cosabuttoServiceSocial.getStat($rootScope.utente).then(function(dat){
$rootScope.utente.stats = dat.data;
},function(err){});
growlService.growl('Bentornato '+da.name+'!', 'info')
},function(err){
$rootScope.utente.login_status = false;
$rootScope.utente.social_network = "facebook";
$scope.logoutLS();
}
);
};
$rootScope.getDataAmazon = function() {
var deferred = $q.defer();
amazon.Login.retrieveProfile($rootScope.utente.accessToken, function(response) {
deferred.resolve(response);
});
deferred.promise.then(
function(response){
$rootScope.utente.info ={
id: response.profile.CustomerId,
name: response.profile.Name,
email: response.profile.PrimaryEmail,
picture: { "data": { "url": "img/amazon-logo.png" } }
};
localStorage.setItem("utente",JSON.stringify($rootScope.utente));
cosabuttoServiceSocial.getStat($rootScope.utente).then(function(dat){
$rootScope.utente.stats = dat.data;
},function(err){});
growlService.growl('Bentornato '+response.profile.Name+'!', 'info')
},function(err){
$rootScope.utente.login_status = false;
$rootScope.utente.social_network = "amazon";
$scope.logoutLS();
}
);
}
$rootScope.goState = function(d){
if(d){
$state.go(d);
}
}
$rootScope.reState = function(){
$state.go($state.current.name);
}
// $rootScope.loginGoogle();
$rootScope.inArray = function (needle, haystack) {
var length = haystack.length;
for(var i = 0; i < length; i++) {
if(haystack[i] == needle) return true;
}
return false;
}
// Detact Mobile Browser
if( /Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(navigator.userAgent) ) {
angular.element('html').addClass('ismobile');
}
// By default Sidbars are hidden in boxed layout and in wide layout only the right sidebar is hidden.
this.sidebarToggle = {
left: false,
right: false
}
// By default template has a boxed layout
this.layoutType = localStorage.getItem('ma-layout-status');
//Close sidebar on click
this.sidebarStat = function(event) {
if (!angular.element(event.target).parent().hasClass('active')) {
this.sidebarToggle.left = false;
}
}
//Listview Search (Check listview pages)
this.listviewSearchStat = false;
this.lvSearch = function() {
this.listviewSearchStat = true;
}
//Listview menu toggle in small screens
this.lvMenuStat = false;
//Blog
this.wallCommenting = [];
this.wallImage = false;
this.wallVideo = false;
this.wallLink = false;
//Skin Switch
this.currentSkin = 'blue';
this.skinList = [
'lightblue',
'bluegray',
'cyan',
'teal',
'green',
'orange',
'blue',
'purple'
]
this.skinSwitch = function (color) {
this.currentSkin = color;
}
})
// =========================================================================
// Header
// =========================================================================
.controller('headerCtrl', function($timeout,$window, growlService, $scope){
if(window.location.host=='localhost'){
$scope.localhost = true;
}else{
$scope.localhost = false;
}
// Top Search
this.openSearch = function(){
angular.element('#header').addClass('search-toggled');
angular.element('#top-search-wrap').find('input').focus();
}
this.closeSearch = function(){
angular.element('#header').removeClass('search-toggled');
}
//Clear Notification
this.clearNotification = function($event) {
$event.preventDefault();
var x = angular.element($event.target).closest('.listview');
var y = x.find('.lv-item');
var z = y.size();
angular.element($event.target).parent().fadeOut();
x.find('.list-group').prepend('<i class="grid-loading hide-it"></i>');
x.find('.grid-loading').fadeIn(1500);
var w = 0;
y.each(function(){
var z = $(this);
$timeout(function(){
z.addClass('animated fadeOutRightBig').delay(1000).queue(function(){
z.remove();
});
}, w+=150);
})
$timeout(function(){
angular.element('#notifications').addClass('empty');
//setto true su visualizzato in mogno
APIService.async({method: "falseallarmigenerati"}).then(function(adata) {});
$scope.hctrl.messageResult = [];
}, (z*150)+200);
}
// Clear Local Storage
this.clearLocalStorage = function() {
//Get confirmation, if confirmed clear the localStorage
swal({
title: "Sei sicuro?",
text: "Tutti i tuoi dati salvati nel localStorage saranno rimossi!",
type: "warning",
showCancelButton: true,
confirmButtonColor: "#F44336",
confirmButtonText: "Si, cancellalo!",
closeOnConfirm: false
}, function(){
localStorage.clear();
swal("Completato!", "localStorage ripulito", "success");
});
}
//Fullscreen View
this.fullScreen = function() {
//Launch
function launchIntoFullscreen(element) {
if(element.requestFullscreen) {
element.requestFullscreen();
} else if(element.mozRequestFullScreen) {
element.mozRequestFullScreen();
} else if(element.webkitRequestFullscreen) {
element.webkitRequestFullscreen();
} else if(element.msRequestFullscreen) {
element.msRequestFullscreen();
}
}
//Exit
function exitFullscreen() {
if(document.exitFullscreen) {
document.exitFullscreen();
} else if(document.mozCancelFullScreen) {
document.mozCancelFullScreen();
} else if(document.webkitExitFullscreen) {
document.webkitExitFullscreen();
}
}
if (exitFullscreen()) {
launchIntoFullscreen(document.documentElement);
}
else {
launchIntoFullscreen(document.documentElement);
}
}
})
//=================================================
// LOGIN
//=================================================
.controller('loginCtrl', function(){
//Status
this.login = 1;
this.register = 0;
this.forgot = 0;
})
// =========================================================================
// ANIMATIONS DEMO
// =========================================================================
.controller('animCtrl', function($timeout){
//Animation List
this.attentionSeekers = [
{ animation: 'bounce', target: 'attentionSeeker' },
{ animation: 'flash', target: 'attentionSeeker' },
{ animation: 'pulse', target: 'attentionSeeker' },
{ animation: 'rubberBand', target: 'attentionSeeker' },
{ animation: 'shake', target: 'attentionSeeker' },
{ animation: 'swing', target: 'attentionSeeker' },
{ animation: 'tada', target: 'attentionSeeker' },
{ animation: 'wobble', target: 'attentionSeeker' }
]
this.flippers = [
{ animation: 'flip', target: 'flippers' },
{ animation: 'flipInX', target: 'flippers' },
{ animation: 'flipInY', target: 'flippers' },
{ animation: 'flipOutX', target: 'flippers' },
{ animation: 'flipOutY', target: 'flippers' }
]
this.lightSpeed = [
{ animation: 'lightSpeedIn', target: 'lightSpeed' },
{ animation: 'lightSpeedOut', target: 'lightSpeed' }
]
this.special = [
{ animation: 'hinge', target: 'special' },
{ animation: 'rollIn', target: 'special' },
{ animation: 'rollOut', target: 'special' }
]
this.bouncingEntrance = [
{ animation: 'bounceIn', target: 'bouncingEntrance' },
{ animation: 'bounceInDown', target: 'bouncingEntrance' },
{ animation: 'bounceInLeft', target: 'bouncingEntrance' },
{ animation: 'bounceInRight', target: 'bouncingEntrance' },
{ animation: 'bounceInUp', target: 'bouncingEntrance' }
]
this.bouncingExits = [
{ animation: 'bounceOut', target: 'bouncingExits' },
{ animation: 'bounceOutDown', target: 'bouncingExits' },
{ animation: 'bounceOutLeft', target: 'bouncingExits' },
{ animation: 'bounceOutRight', target: 'bouncingExits' },
{ animation: 'bounceOutUp', target: 'bouncingExits' }
]
this.rotatingEntrances = [
{ animation: 'rotateIn', target: 'rotatingEntrances' },
{ animation: 'rotateInDownLeft', target: 'rotatingEntrances' },
{ animation: 'rotateInDownRight', target: 'rotatingEntrances' },
{ animation: 'rotateInUpLeft', target: 'rotatingEntrances' },
{ animation: 'rotateInUpRight', target: 'rotatingEntrances' }
]
this.rotatingExits = [
{ animation: 'rotateOut', target: 'rotatingExits' },
{ animation: 'rotateOutDownLeft', target: 'rotatingExits' },
{ animation: 'rotateOutDownRight', target: 'rotatingExits' },
{ animation: 'rotateOutUpLeft', target: 'rotatingExits' },
{ animation: 'rotateOutUpRight', target: 'rotatingExits' }
]
this.fadeingEntrances = [
{ animation: 'fadeIn', target: 'fadeingEntrances' },
{ animation: 'fadeInDown', target: 'fadeingEntrances' },
{ animation: 'fadeInDownBig', target: 'fadeingEntrances' },
{ animation: 'fadeInLeft', target: 'fadeingEntrances' },
{ animation: 'fadeInLeftBig', target: 'fadeingEntrances' },
{ animation: 'fadeInRight', target: 'fadeingEntrances' },
{ animation: 'fadeInRightBig', target: 'fadeingEntrances' },
{ animation: 'fadeInUp', target: 'fadeingEntrances' },
{ animation: 'fadeInBig', target: 'fadeingEntrances' }
]
this.fadeingExits = [
{ animation: 'fadeOut', target: 'fadeingExits' },
{ animation: 'fadeOutDown', target: 'fadeingExits' },
{ animation: 'fadeOutDownBig', target: 'fadeingExits' },
{ animation: 'fadeOutLeft', target: 'fadeingExits' },
{ animation: 'fadeOutLeftBig', target: 'fadeingExits' },
{ animation: 'fadeOutRight', target: 'fadeingExits' },
{ animation: 'fadeOutRightBig', target: 'fadeingExits' },
{ animation: 'fadeOutUp', target: 'fadeingExits' },
{ animation: 'fadeOutUpBig', target: 'fadeingExits' }
]
this.zoomEntrances = [
{ animation: 'zoomIn', target: 'zoomEntrances' },
{ animation: 'zoomInDown', target: 'zoomEntrances' },
{ animation: 'zoomInLeft', target: 'zoomEntrances' },
{ animation: 'zoomInRight', target: 'zoomEntrances' },
{ animation: 'zoomInUp', target: 'zoomEntrances' }
]
this.zoomExits = [
{ animation: 'zoomOut', target: 'zoomExits' },
{ animation: 'zoomOutDown', target: 'zoomExits' },
{ animation: 'zoomOutLeft', target: 'zoomExits' },
{ animation: 'zoomOutRight', target: 'zoomExits' },
{ animation: 'zoomOutUp', target: 'zoomExits' }
]
//Animate
this.ca = '';
this.setAnimation = function(animation, target) {
if (animation === "hinge") {
animationDuration = 2100;
}
else {
animationDuration = 1200;
}
angular.element('#'+target).addClass(animation);
$timeout(function(){
angular.element('#'+target).removeClass(animation);
}, animationDuration);
}
this.setAnimationJam = function(animation, target, hidden) {
if (animation === "hinge") {
animationDuration = 2100;
}
else {
animationDuration = 1200;
}
if(!hidden){
angular.element('#'+target).removeClass("hidden");
}
angular.element('#'+target).addClass(animation);
$timeout(function(){
angular.element('#'+target).removeClass(animation);
if(hidden){
angular.element('#'+target).addClass("hidden");
}
}, animationDuration,
function(){
});
}
})