226 lines
11 KiB
JavaScript
226 lines
11 KiB
JavaScript
define(['jquery', 'underscore', 'backbone',
|
|
'modules/home/home', 'modules/faq/faq', 'modules/index/index', 'modules/category/category', 'modules/item/item',
|
|
'modules/about/about', 'modules/search/search', 'modules/search/found', 'modules/more/more', 'modules/note/note',
|
|
'modules/sync/sync', 'modules/donation/donation','modules/settings/settings',
|
|
'modules/debug/debug','modules/maps/maps',
|
|
'model/note/noteCollection', 'model/category/categoryCollection', 'model/categoryItem/categoryItemCollection',
|
|
'model/item/itemCollection', 'model/item/ingredientiCollection', 'model/categoryItem/foundItemCollection',
|
|
'classes/cache', 'libs/fastclick',
|
|
'jqm', 'jQueryPlugins'],
|
|
function ($, _, Backbone,
|
|
HomeView, FaqView, IndexView, CategoryView, ItemView,
|
|
AboutView, SearchView, FoundView, MoreView, NoteView,
|
|
SyncView, DonationView, SettingsView,
|
|
DebugView, MapsView,
|
|
NoteCollection, CategoryCollection, CategoryItemCollection,
|
|
ItemCollection, IngredientiCollection, FoundItemCollection,
|
|
Cache, FastClick) {
|
|
|
|
'use strict';
|
|
var Router = Backbone.Router.extend({
|
|
initialize: function (options) {
|
|
var self = this;
|
|
$(document).on("pagecontainershow", function (event, ui) {
|
|
try
|
|
{
|
|
ga('send', 'pageview',
|
|
{
|
|
'page': "/" + this.location.hash,
|
|
'title': document.title
|
|
});
|
|
}
|
|
catch (err)
|
|
{
|
|
}
|
|
|
|
if (self.activeView.onShowed !== null)
|
|
self.activeView.onShowed();
|
|
|
|
// if (self.fastClickInstance !== null)
|
|
// self.fastClickInstance.destroy();
|
|
// self.fastClickInstance = FastClick.attach(document.body);
|
|
});
|
|
},
|
|
//define routes and mapping route to the function
|
|
routes: {
|
|
'': 'showHome', //home view
|
|
'homeView': 'showHome', //home view as well
|
|
'faqView': 'showFaq', //home view as well
|
|
'indexView': 'showIndex', //home view as well
|
|
'category/:categoryName/:categoryId': 'showCategory',
|
|
'ricetta/:itemId': 'showItem',
|
|
'aboutView': 'showAbout',
|
|
'syncView(/)*founded': 'showSync',
|
|
'noteView': 'showNote',
|
|
'searchView': 'showSearch',
|
|
'mapsView': 'showMaps',
|
|
'debugView': 'showDebug',
|
|
'settingsView': 'showSettings',
|
|
'donationView': 'showDonation',
|
|
'search/:nresult/:categoria/:difficolta/:autore/*titolo': 'searchFn',
|
|
'converterView': 'showConverter',
|
|
'moreView': 'showMore',
|
|
'*actions': 'defaultAction' //default action
|
|
},
|
|
defaultAction: function (actions) {
|
|
this.showHome(actions);
|
|
},
|
|
showHome: function (actions) {
|
|
// will render home view and navigate to homeView
|
|
var homeView = new HomeView();
|
|
homeView.render();
|
|
this.changePage(homeView);
|
|
},
|
|
showSettings: function (actions) {
|
|
var settingsView = new SettingsView();
|
|
settingsView.render();
|
|
this.changePage(settingsView);
|
|
},
|
|
showDonation: function (actions) {
|
|
var donationView = new DonationView();
|
|
donationView.render();
|
|
this.changePage(donationView);
|
|
},
|
|
showAbout: function (actions) {
|
|
// will render home view and navigate to homeView
|
|
var aboutView = new AboutView();
|
|
aboutView.render();
|
|
this.changePage(aboutView);
|
|
},
|
|
showSync: function (actions) {
|
|
var option = {};
|
|
if (actions)
|
|
{
|
|
option = {tokenFound: 1};
|
|
}
|
|
// will render home view and navigate to homeView
|
|
var syncView = new SyncView(option);
|
|
syncView.render();
|
|
this.changePage(syncView);
|
|
},
|
|
showNote: function (actions) {
|
|
var notes = new NoteCollection();
|
|
// will render home view and navigate to homeView
|
|
var noteView = new NoteView({collection: notes});
|
|
noteView.render();
|
|
this.changePage(noteView);
|
|
},
|
|
showFaq: function (actions) {
|
|
// will render home view and navigate to homeView
|
|
var faqView = new FaqView();
|
|
faqView.render();
|
|
this.changePage(faqView);
|
|
},
|
|
showIndex: function (actions) {
|
|
Cache.checkCacheFromServer();
|
|
//var categories = new CategoryCollection();
|
|
// will render home view and navigate to homeView
|
|
var indexView = new IndexView();//{collection: categories});
|
|
indexView.render();
|
|
this.changePage(indexView);
|
|
//indexView.bind('renderCompleted:Categories', this.changePage, this);
|
|
},
|
|
showCategory: function (categoryName, categoryId) {
|
|
var categories = new CategoryItemCollection({categoryId: categoryId});
|
|
// will render home view and navigate to homeView
|
|
var categoryView = new CategoryView({categoryName: categoryName, categoryId: categoryId, collection: categories});
|
|
|
|
categoryView.render();
|
|
this.changePage(categoryView);
|
|
|
|
if(!categories.isCached() || categoryView.created){
|
|
$.mobile.loading('show', {
|
|
text: 'Caricamento categoria ' + categoryName + '...',
|
|
textVisible: true,
|
|
//theme: 'z',
|
|
html: ""
|
|
});
|
|
}
|
|
//categoryView.bind('renderCompleted:Category',this.changePage,this);
|
|
},
|
|
showItem: function (itemId) {
|
|
$.mobile.loading('show', {
|
|
text: 'Caricamento ricetta...',
|
|
textVisible: true,
|
|
//theme: 'z',
|
|
html: ""
|
|
});
|
|
var item = new ItemCollection({ricettaId: itemId});
|
|
var ingr = new IngredientiCollection({ricettaId: itemId});
|
|
// will render home view and navigate to homeView
|
|
var itemView = new ItemView({
|
|
collRicetta: item,
|
|
collIngredienti: ingr
|
|
});
|
|
//indexView.render();
|
|
itemView.bind('renderCompleted:Item', this.changePage, this);
|
|
},
|
|
|
|
showMore: function () {
|
|
var moreView = new MoreView();
|
|
moreView.render();
|
|
this.changePage(moreView);
|
|
},
|
|
showDebug: function () {
|
|
var debugView = new DebugView();
|
|
debugView.render();
|
|
this.changePage(debugView);
|
|
},
|
|
showMaps: function(){
|
|
var mapsView = new MapsView();
|
|
mapsView.render();
|
|
this.changePage(mapsView);
|
|
},
|
|
showSearch: function () {
|
|
var searchView = new SearchView();
|
|
searchView.render();
|
|
this.changePage(searchView);
|
|
},
|
|
searchFn: function (nresult, categoria, difficolta, autore, titolo) {
|
|
var foundedItems = new FoundItemCollection({categoryId: categoria, difficolta: difficolta, titolo: titolo, autore: autore, nResult: nresult, indexItems: 0});
|
|
var foundView = new FoundView({collection: foundedItems});
|
|
|
|
foundView.render();
|
|
this.changePage(foundView);
|
|
|
|
$.mobile.loading('show', {
|
|
text: 'Caricamento ricerca ricette...',
|
|
textVisible: true,
|
|
//theme: 'z',
|
|
html: ""
|
|
});
|
|
},
|
|
fastClickInstance: null,
|
|
activeView: null,
|
|
//1. changePage will insert view into DOM and then call changePage to enhance and transition
|
|
//2. for the first page, jQuery mobile will present and enhance automatically
|
|
//3. for the other page, we will call $.mobile.changePage() to enhance page and make transition
|
|
//4. argument 'view' is passed from event trigger
|
|
changePage: function (view) {
|
|
var self = this;
|
|
//append to dom
|
|
if (view.created === true)
|
|
{
|
|
$('body').append(view.$el);
|
|
}
|
|
|
|
if (this.activeView !== null &&
|
|
this.activeView.onClosing !== null)
|
|
this.activeView.onClosing();
|
|
|
|
$.mobile.pageContainer.pagecontainer("change", $(view.el), {changeHash: false});
|
|
|
|
var lastView = this.activeView;
|
|
this.activeView = view;
|
|
|
|
if (lastView !== null &&
|
|
lastView.onClosed !== null)
|
|
lastView.onClosed();
|
|
|
|
if (this.activeView.onShowing !== null)
|
|
this.activeView.onShowing();
|
|
}
|
|
});
|
|
|
|
return Router;
|
|
}); |