i have a multiple page app and i used can-compile NodeJS module that compiles CanJS EJS views into a single JavaScript file for lightning fast production apps in my project. (i use canjs, requirejs, ejs.js for templates):
i followed these instructions to set my grunt task [https://github.com/daffl/can-compile][1] to compile ejs files.
i added a new file js and i called views.production.js in my proyect with content :
({
"appDir" : "../www",
"baseUrl" : "js/lib",
"fileExclusionRegExp": /^(appcaches|lr|test|mockups|doc|fixtures|(index)\.html|(fixtures)\.js|.*\.less|.*\.json|.*\.ejs)$/,
"optimizeCss": "standard",
"removeCombined": true,
//"findNestedDependencies" : true,
"preserveLicenseComments" : false,
"logLevel" : 0,
"paths" : {
"app" : "../app",
"tools" : "../../../tools",
"jquery" : "jquery-2.0.3.min",
"jquery-ui" : "plugins/jquery-ui-1.10.4.custom.min",
"jquery-ui-touch-punch" : "plugins/jquery.ui.touch-punch.min",
"bootstrap" : "bootstrap.min",
"underscore" : "underscore.min",
"can" : "can",
"aria" : "aria",
"models" : "../app/common/models",
//folder directory for documentation
"doc" : "../doc",
"async" : "require/async",
"goog" : "require/goog",
"propertyParser" : "require/propertyParser",
"google-api" : "aria/google_api/google-api-engine",
"google-maps" : "aria/google_api/google-maps-engine",
"collaboration" : "../app/collaboration",
"swipe" : "plugins/swipe2",
"animend-transend" : "plugins/jquery.animend.transend",
"jquery-validate" : "plugins/jquery.validate.min",
"jcrop" : "plugins/jcrop/js/jquery.Jcrop.min",
"spin" : "plugins/spin",
"ftscroller" : "plugins/ftscroller",
"owl-carousel" : "plugins/owl.carousel.min",
'shared_resource' : '../shared_resource',
'views' : '../views.production'
},
'shim' : {
'jquery' : {
'exports' : '$'
},
'bootstrap' : {
'deps' : ['jquery', 'jquery-ui']
},
'underscore' : {
'exports' : '_'
},
'jquery-ui' : {
'deps' : ['jquery']
},
'jquery-ui-touch-punch' : {
'deps' : ['jquery-ui']
},
'swipe' : {
'deps' : ['jquery'],
'exports' : 'Swipe'
},
'animend-transend' : {
'deps' : ['jquery']
},
'jquery-validate' : {
'deps' : ['jquery']
},
'jcrop' : {
'deps' : ['jquery']
},
'owl-carousel' : {
'deps' : ['jquery']
}
},
"dir" : "../www-built",
"modules" : [
{
"name" : "../common",
"include" : [
'jquery',
'aria',
'app/common/error_handler',
'app/common/vocal',
'views'
]
},{
"name" : "../shared_resource",
"include" : [
'app/common/models',
'app/common/header/controllers/header',
'google-maps',
'google-api',
'app/common/widgets/controllers/select_bank_account',
'app/timeline/sidebar/bookmark/controllers/bookmark',
'app/timeline/create_bookmark/controllers/create_bookmark',
'app/desire/controllers/moneyBox',
'plugins/fullcalendar/fullcalendar',
'plugins/bootstrap_slider',
'app/timeline/summaries/summaries',
'app/timeline/sidebar/summaries/summaries',
'app/common/product_filter/controllers/product_filter',
'app/common/product_filter/item/controllers/item',
'app/common/calendar/controllers/calendar',
'app/common/widgets/controllers/insert_pin',
'app/common/operation',
'app/common/operation_helper',
'app/common/datepicker_dropdown/controllers/datepicker_dropdown',
'app/dispositive/bill/common/controllers/bill_base',
'app/dispositive/bill/common/controllers/address',
'app/dispositive/bill/common/controllers/due_date',
'app/common/widgets/controllers/send_email',
'app/common/draggable_list_menu/controllers/draggable_list_menu'
],
"exclude" : [
"../common"
]
},
{
"name" : "../login",
"include" : [
"app/login/main",
"app/login/controllers/login"
],
"exclude" : [
"../common",
"../shared_resource"
]
},
{
"name" : "../homepage",
"include" : [
"app/homepage/main",
"app/homepage/controllers/homepage"
],
"exclude" : [
"../common",
"../shared_resource"
]
},
{
"name" : "../cerca_uffici_bancomat",
"include" : [
"app/cerca_uffici_bancomat/main",
"app/cerca_uffici_bancomat/controllers/cerca_uffici_bancomat"
],
"exclude" : [
"../common",
"../shared_resource"
]
},
{
"name" : "../collaboration",
"include" : [
"app/collaboration/main",
"app/collaboration/controllers/collaboration"
],
"exclude" : [
"../common",
"../shared_resource"
]
},
{
"name" : "../collaboration_bank",
"include" : [
"app/collaboration/main_bank",
"app/collaboration/controllers/collaboration"
],
"exclude" : [
"../common",
"../shared_resource"
]
},
{
"name" : "../contacts",
"include" : [
"app/contacts/main",
"app/contacts/controllers/contacts"
],
"exclude" : [
"../common",
"../shared_resource"
]
},
{
"name" : "../crop",
"include" : [
"app/crop/main",
"app/crop/controllers/crop"
],
"exclude" : [
"../common",
"../shared_resource"
]
},
{
"name" : "../desire",
"include" : [
"app/desire/main",
"app/desire/controllers/desire"
],
"exclude" : [
"../common",
"../shared_resource"
]
},
{
"name" : "../feed",
"include" : [
"app/feed/main",
"app/feed/controllers/feed"
],
"exclude" : [
"../common",
"../shared_resource"
]
},
{
"name" : "../help",
"include" : [
"app/help/main",
"app/help/controllers/router",
"app/help/controllers/help"
],
"exclude" : [
"../common",
"../shared_resource"
]
},
{
"name" : "../news",
"include" : [
"app/homepage/main_news",
"app/homepage/controllers/news"
],
"exclude" : [
"../common",
"../shared_resource"
]
},
{
"name" : "../patrimonio",
"include" : [
"app/patrimonio/main",
"app/patrimonio/controllers/patrimonio"
],
"exclude" : [
"../common",
"../shared_resource"
]
},
{
"name" : "../personal_area",
"include" : [
"app/personal_area/main",
"app/personal_area/controllers/personal_area"
],
"exclude" : [
"../common",
"../shared_resource"
]
},
{
"name" : "../search",
"include" : [
"app/search/main",
"app/search/controllers/search"
],
"exclude" : [
"../common",
"../shared_resource"
]
},
{
"name" : "../timeline",
"include" : [
"app/timeline/main",
"app/timeline/controllers/timeline",
'app/timeline/sidebar/controllers/sidebar',
'app/timeline/router'
],
"exclude" : [
"../common",
"../shared_resource"
]
},
{
"name" : "../tweet",
"include" : [
"app/tweet/main",
"app/tweet/controllers/tweet"
],
"exclude" : [
"../common",
"../shared_resource"
]
},
{
"name" : "../delete_recurrent_transfer",
"include" : [
"app/dispositive/automatic_transfer/delete_recurrent_transfer",
"app/dispositive/automatic_transfer/controllers/delete/delete_recurrent_transfer"
],
"exclude" : [
"../common",
"../shared_resource"
]
},
{
"name" : "../delete_scheduled_transfer",
"include" : [
"app/dispositive/automatic_transfer/delete_scheduled_transfer",
"app/dispositive/automatic_transfer/controllers/delete/delete_scheduled_transfer"
],
"exclude" : [
"../common",
"../shared_resource"
]
},
{
"name" : "../edit_recurrent_transfer",
"include" : [
"app/dispositive/automatic_transfer/edit_recurrent_transfer",
"app/dispositive/automatic_transfer/controllers/edit/edit_recurrent_transfer"
],
"exclude" : [
"../common",
"../shared_resource"
]
},
{
"name" : "../edit_scheduled_transfer",
"include" : [
"app/dispositive/automatic_transfer/edit_scheduled_transfer",
"app/dispositive/automatic_transfer/controllers/edit/edit_scheduled_transfer"
],
"exclude" : [
"../common",
"../shared_resource"
]
},
{
"name" : "../new_recurrent_transfer",
"include" : [
"app/dispositive/automatic_transfer/new_recurrent_transfer",
"app/dispositive/automatic_transfer/controllers/new/new_recurrent_transfer"
],
"exclude" : [
"../common",
"../shared_resource"
]
},
{
"name" : "../new_scheduled_transfer",
"include" : [
"app/dispositive/automatic_transfer/new_scheduled_transfer",
"app/dispositive/automatic_transfer/controllers/new/new_scheduled_transfer"
],
"exclude" : [
"../common",
"../shared_resource"
]
},
{
"name" : "../resume_recurrent_transfer",
"include" : [
"app/dispositive/automatic_transfer/resume_recurrent_transfer",
"app/dispositive/automatic_transfer/controllers/resume/resume_recurrent_transfer"
],
"exclude" : [
"../common",
"../shared_resource"
]
},
{
"name" : "../suspend_recurrent_transfer",
"include" : [
"app/dispositive/automatic_transfer/suspend_recurrent_transfer",
"app/dispositive/automatic_transfer/controllers/suspend/suspend_recurrent_transfer"
],
"exclude" : [
"../common",
"../shared_resource"
]
},
{
"name" : "../bill_free",
"include" : [
"app/dispositive/bill/bill_free/main",
"app/dispositive/bill/bill_free/controllers/bill_free"
],
"exclude" : [
"../common",
"../shared_resource"
]
},
{
"name" : "../bill_free_custom",
"include" : [
"app/dispositive/bill/bill_free/bill_free_custom/main",
"app/dispositive/bill/bill_free/bill_free_custom/controllers/bill_free_custom"
],
"exclude" : [
"../common",
"../shared_resource"
]
},
{
"name" : "../bill_free_other",
"include" : [
"app/dispositive/bill/bill_free/bill_free_other/main",
"app/dispositive/bill/bill_free/bill_free_other/controllers/bill_free_other"
],
"exclude" : [
"../common",
"../shared_resource"
]
},
{
"name" : "../bill_marked",
"include" : [
"app/dispositive/bill/bill_marked/main",
"app/dispositive/bill/bill_marked/controllers/bill_marked"
],
"exclude" : [
"../common",
"../shared_resource"
]
},
{
"name" : "../bill_marked_import",
"include" : [
"app/dispositive/bill/bill_marked/bill_marked_import/main",
"app/dispositive/bill/bill_marked/bill_marked_import/controllers/bill_marked_import"
],
"exclude" : [
"../common",
"../shared_resource"
]
},
{
"name" : "../mav",
"include" : [
"app/dispositive/bill/mav/main",
"app/dispositive/bill/mav/controllers/mav"
],
"exclude" : [
"../common",
"../shared_resource"
]
},
{
"name" : "../rav",
"include" : [
"app/dispositive/bill/rav/main",
"app/dispositive/bill/rav/controllers/rav"
],
"exclude" : [
"../common",
"../shared_resource"
]
},
{
"name" : "../riba",
"include" : [
"app/dispositive/bill/riba/main",
"app/dispositive/bill/riba/controllers/riba"
],
"exclude" : [
"../common",
"../shared_resource"
]
},
{
"name" : "../car_tax",
"include" : [
"app/dispositive/car_tax/main",
"app/dispositive/car_tax/controllers/car_tax"
],
"exclude" : [
"../common",
"../shared_resource"
]
},
{
"name" : "../dollar_trade",
"include" : [
"app/dispositive/dollar_trade/main",
"app/dispositive/dollar_trade/controllers/dollar_trade"
],
"exclude" : [
"../common",
"../shared_resource"
]
},
{
"name" : "../lock_current_account",
"include" : [
"app/dispositive/lock_unlock/lock_current_account",
"app/dispositive/lock_unlock/controllers/lock/lock_current_account"
],
"exclude" : [
"../common",
"../shared_resource"
]
},
{
"name" : "../lock_deposit_account",
"include" : [
"app/dispositive/lock_unlock/lock_deposit_account",
"app/dispositive/lock_unlock/controllers/lock/lock_deposit_account"
],
"exclude" : [
"../common",
"../shared_resource"
]
},
{
"name" : "../unlock_current_account",
"include" : [
"app/dispositive/lock_unlock/unlock_current_account",
"app/dispositive/lock_unlock/controllers/unlock/unlock_current_account"
],
"exclude" : [
"../common",
"../shared_resource"
]
},
{
"name" : "../unlock_deposit_account",
"include" : [
"app/dispositive/lock_unlock/unlock_deposit_account",
"app/dispositive/lock_unlock/controllers/unlock/unlock_deposit_account"
],
"exclude" : [
"../common",
"../shared_resource"
]
},
{
"name" : "../paypal_send_money",
"include" : [
"app/dispositive/paypal/bank_transfer/main",
"app/dispositive/paypal/bank_transfer/controllers/bank_transfer"
],
"exclude" : [
"../common",
"../shared_resource"
]
},
{
"name" : "../giro_card_top_up",
"include" : [
"app/dispositive/top_up/giro_card_top_up",
"app/dispositive/top_up/controllers/card/giro_card_top_up"
],
"exclude" : [
"../common",
"../shared_resource"
]
},
{
"name" : "../mediaset_premium_top_up",
"include" : [
"app/dispositive/top_up/mediaset_premium_top_up",
"app/dispositive/top_up/controllers/tv/mediaset_premium_top_up"
],
"exclude" : [
"../common",
"../shared_resource"
]
},
{
"name" : "../money_service_card_top_up",
"include" : [
"app/dispositive/top_up/money_service_card_top_up",
"app/dispositive/top_up/controllers/card/money_service_card_top_up"
],
"exclude" : [
"../common",
"../shared_resource"
]
},
{
"name" : "../new_generation_card_top_up",
"include" : [
"app/dispositive/top_up/new_generation_card_top_up",
"app/dispositive/top_up/controllers/card/new_generation_card_top_up"
],
"exclude" : [
"../common",
"../shared_resource"
]
},
{
"name" : "../riflex_cash_card_top_up",
"include" : [
"app/dispositive/top_up/riflex_cash_card_top_up",
"app/dispositive/top_up/controllers/card/riflex_cash_card_top_up"
],
"exclude" : [
"../common",
"../shared_resource"
]
},
{
"name" : "../tim_mobile_top_up",
"include" : [
"app/dispositive/top_up/tim_mobile_top_up",
"app/dispositive/top_up/controllers/mobile/tim_mobile_top_up"
],
"exclude" : [
"../common",
"../shared_resource"
]
},
{
"name" : "../tre_mobile_top_up",
"include" : [
"app/dispositive/top_up/tre_mobile_top_up",
"app/dispositive/top_up/controllers/mobile/tre_mobile_top_up"
],
"exclude" : [
"../common",
"../shared_resource"
]
},
{
"name" : "../vodafone_mobile_top_up",
"include" : [
"app/dispositive/top_up/vodafone_mobile_top_up",
"app/dispositive/top_up/controllers/mobile/vodafone_mobile_top_up"
],
"exclude" : [
"../common",
"../shared_resource"
]
},
{
"name" : "../wind_mobile_top_up",
"include" : [
"app/dispositive/top_up/wind_mobile_top_up",
"app/dispositive/top_up/controllers/mobile/wind_mobile_top_up"
],
"exclude" : [
"../common",
"../shared_resource"
]
},
{
"name" : "../bank_transfer",
"include" : [
"app/dispositive/bank_transfer/main",
"app/dispositive/bank_transfer/bank_transfer"
],
"exclude" : [
"../common",
"../shared_resource"
]
}
],
"optimize": "uglify2",
"uglify2": {
"compress": {
"drop_console": true // drops "console.log" statements
}
}
})
requirejs.config({
'baseUrl' : 'js/lib',
'paths' : {
'app' : '../app',
'tools' : '../../../tools',
'jquery' : 'jquery-2.0.3.min',
'jquery-ui' : 'plugins/jquery-ui-1.11.1.custom.min',
'jquery-ui-touch-punch' : 'plugins/jquery.ui.touch-punch.min',
'jquery-scroll-table-body': 'plugins/jquery.scrollTableBody.min',
'bootstrap' : 'bootstrap.min',
'underscore' : 'underscore.min',
'can' : 'can',
'aria' : 'aria',
'models' : '../app/common/models',
'fixtures' : '../app/common/fixtures',
//folder directory for documentation
'doc' : '../doc',
'async' : 'require/async',
'goog' : 'require/goog',
'propertyParser' : 'require/propertyParser',
'google-api' : 'aria/google_api/google-api-engine',
'google-maps' : 'aria/google_api/google-maps-engine',
'collaboration' : '../app/collaboration',
'swipe' : 'plugins/swipe2',
'animend-transend' : 'plugins/jquery.animend.transend',
'jquery-validate' : 'plugins/jquery.validate.min',
'jcrop' : 'plugins/jcrop/js/jquery.Jcrop.min',
'spin' : 'plugins/spin',
'ftscroller' : 'plugins/ftscroller',
'owl-carousel' : 'plugins/owl.carousel.min',
'state-machine' : 'plugins/state-machine.min',
'shared_resource' : '../shared_resource',
'views' : '../views.production'
},
'shim' : {
'jquery' : {
'exports' : '$'
},
'bootstrap' : {
'deps' : ['jquery', 'jquery-ui']
},
'underscore' : {
'exports' : '_'
},
'jquery-scroll-table-body' : {
'deps' : ['jquery']
},
'jquery-ui' : {
'deps' : ['jquery']
},
'jquery-ui-touch-punch' : {
'deps' : ['jquery-ui']
},
'swipe' : {
'deps' : ['jquery'],
'exports' : 'Swipe'
},
'animend-transend' : {
'deps' : ['jquery']
},
'jquery-validate' : {
'deps' : ['jquery']
},
'jcrop' : {
'deps' : ['jquery']
},
'owl-carousel' : {
'deps' : ['jquery']
}
}
});
require([
'jquery',
'aria',
'app/common/error_handler',
'app/common/vocal',
'views'
], function (jQuery, AriaTouch) {
//export AriaTouch
window.AriaTouch = AriaTouch;
var protocol,
host,
url,
routeLR = '/lr',
routeJB = '/jb',
routeMB = '/mb/media',
routePublic = '/public',
fixflag = false,
ENV,
testIntegrazione,
cacheDebug = false,
instance,
vocalInstance,
vocalUtils,
gaAccount,
setupAjaxWithCredentials = function () {
jQuery.ajaxSetup({
'xhrFields' : {
'withCredentials' : true
}
});
};
console.log('%c AriaTouch - standalone: %s', 'background: #222; color: #bada55', window.standalone);
// non sono wrappato
if (!window.standalone) {
console.log('%c AriaTouch - App NOT Standalone Mode', 'background: #222; color: #bada55');
ENV = 'local';
jQuery('body').addClass('notStandalone');
}
// sono wrappato
else {
console.log('%c AriaTouch - App Standalone Mode', 'background: #222; color: #bada55');
window.ENV = window.ENV.toLowerCase();
//window.ENV = "prod";
ENV = window.ENV;
if (!window.noAjaxBridge) {
AriaTouch.Bridge.initAjaxTransport();
} else {
setupAjaxWithCredentials();
}
}
if (!cacheDebug) {
testIntegrazione = AriaTouch.Storage.Session.decode(sessionStorage.testIntegrazione) || AriaTouch.Location.getQueryStringParameterByName('testIntegrazione');
} else {
testIntegrazione = sessionStorage.testIntegrazione || AriaTouch.Location.getQueryStringParameterByName('testIntegrazione');
}
if (testIntegrazione !== '') {
if (!cacheDebug) {
ENV = testIntegrazione;
sessionStorage.testIntegrazione = AriaTouch.Storage.Session.encode(testIntegrazione);
} else {
sessionStorage.testIntegrazione = testIntegrazione;
ENV = testIntegrazione;
}
console.log('%c AriaTouch - Test Integrazione Ambiente - %s', 'background: #222; color: #bada55', ENV);
setupAjaxWithCredentials();
}
// FQDN
// svil-tablet.bmedmobile.it
// test-tablet.bmedmobile.it
// preprod-tablet.bmedmobile.it
// tablet.bmedmobile.it
switch (ENV) {
case 'dev':
protocol = 'http';
host = 'svil-tablet.mobile.bmedonline.it:8081';
url = protocol + '://' + host;
gaAccount = "UA-56471437-3";
break;
case 'test':
protocol = 'https';
host = 'test-tablet.bmedmobile.it';
url = protocol + '://' + host;
gaAccount = "UA-56788866-1";
break;
case 'prod':
protocol = 'https';
host = 'tablet.bmedmobile.it';
url = protocol + '://' + host;
gaAccount = "UA-56931372-1";
break;
case 'local':
default:
protocol = window.location.protocol;
host = window.location.host;
url = protocol + '//' + host;
fixflag = true;
gaAccount = "local";
break;
}
if (fixflag) {
// set fixture's random delay
can.fixture.delay = Math.floor((Math.random() * 600) + 1);
require(['app/common/fixtures']);
}
instance = AriaTouch.Page.getInstance({
'service': {
'bases': {
'baseUrl' : url,
'urlPrefix' : url + routeJB,
'urlPrefixMediaBus' : url + routeMB,
'urlPrefixLR' : url + routeLR,
'urlPrefixPublic' : url + routePublic,
'urlPrefixNMol' : 'https://www.bmedonline.it'
},
'fixture': {
'enable': fixflag
}
},
'caching' : {
'enable' : true,
'debug' : cacheDebug
},
'debugJB' : {
'enable' : false
},
'tracker' : {
'enable' : true
}
});
AriaTouch.Tracker.getInstance({
'account' : gaAccount
});
//*** Caching rotte servizi ***
AriaTouch.Cache.getInstance().addRoute('/MenuItem/');
AriaTouch.Cache.getInstance().addRoute('/Account/list/');
AriaTouch.Cache.getInstance().addRoute('/Account/nondep');
AriaTouch.Cache.getInstance().addRoute('/Customer');
AriaTouch.Cache.getInstance().addRoute('/Asset');
AriaTouch.Cache.getInstance().addRoute('/TimelineType');
AriaTouch.Cache.getInstance().addRoute('/TimelineActionBst');
AriaTouch.Cache.getInstance().addRoute('/Bonifico/elencoStatiBonificoEstero');
//togliamo la getDefaultAcount, il conto di default puo essere modificato
//AriaTouch.Cache.getInstance().addRoute('/Account/getContoDefault');
//***
console.log('FROM COMMON',instance);
instance['@data'].set('ENV', ENV, 'session');
//Listening to ajax errors
instance.getChannelByName('errors').subscribe(AriaTouch.Exception.Ajax, App.Common.ErrorHandler.ajaxHandler);
//Listening to errors from native
instance.getChannelByName('errors').subscribe(AriaTouch.Exception.Generic, App.Common.ErrorHandler.genericHandler);
//Listening to offline events
instance.getChannelByName('errors').subscribe(AriaTouch.Exception.Offline, App.Common.ErrorHandler.offlineHandler);
//init vocal with custom bridge
vocalInstance = AriaTouch.Vocal.getInstance({
'bridge' : App.Common.VocalBridge.getInstance()
});
vocalUtils = App.Common.VocalUtils.getInstance({
"menuItemByProduct" : AriaTouch.Storage.Session.get("menuItemByProduct")
});
vocalInstance.subscribe(new App.Common.VocalIntentions.Navigation, function (ev, evData) {
var intention = evData.intention,
vocalIntention = vocalUtils.getUrlByIntention(intention, evData);
if(vocalIntention.url==="@noProductAvailable") {
console.log("noProductAvailable exception");
return false;
}
if(vocalIntention.url==="@notYetImplemented") {
console.log("notYetImplemented exception");
return false;
}
if(vocalIntention.url==="@exitApp") {
console.log("exit application, skip the navigate");
return false;
}
if (!_.isEmpty(evData)) {
//conversazionale
AriaTouch.Location.setFlashData(intention, evData);
}
var data = {
intention : intention,
navigationState : "step-nav",
page: vocalIntention.url,
dispose: vocalIntention.dispose
};
AriaTouch.Location.navigate(vocalIntention.url, '', '');
AriaTouch.Vocal.getInstance().heyVocal(new App.Common.VocalIntentions.ImReady(data));
});
vocalInstance.subscribe(new App.Common.VocalIntentions.Conversation, function (ev, evData) {
var intention = evData.intention,
vocalIntention = vocalUtils.getUrlByIntention(intention, evData);
if(vocalIntention.url==="@noProductAvailable") {
console.log("noProductAvailable exception");
return false;
}
if(vocalIntention.url==="@notYetImplemented") {
console.log("notYetImplemented exception");
return false;
}
if (!_.isEmpty(evData)) {
//conversazionale
AriaTouch.Location.setFlashData(intention, evData);
}
AriaTouch.Location.navigate(vocalIntention.url, '', '', false, true);
});
vocalInstance.subscribe(new App.Common.VocalIntentions.Search, function (ev, evData) {
var intention = evData.intention,
vocalIntention = vocalUtils.getUrlByIntention(intention, evData);
if(vocalIntention.url==="@noProductAvailable") {
console.log("noProductAvailable exception");
return false;
}
if(vocalIntention.url==="@notYetImplemented") {
console.log("notYetImplemented exception");
return false;
}
$.when(App.Common.Models.MenuItem.getMenuItem100()).then(function (dataMenu100) {
App.Common.Models.MenuItem.preProcessMenuItem($.extend({}, dataMenu100.attributes));
$.when(App.Common.ProductFilter.vocalPreFilter(intention, evData.vocals)).then(function(data) {
if(typeof data.vocalError!=="undefined") {
AriaTouch.Vocal.getInstance().heyVocal(new App.Common.VocalException.FailedFieldsValidation(data.vocalError));
return false;
}
if(typeof data.results!=="undefined") {
if(data.results.length>0) {
if (!_.isEmpty(evData)) {
//conversazionale
AriaTouch.Location.setFlashData(intention, evData);
}
AriaTouch.Location.navigate(vocalIntention.url, '', App.Common.VocalUtils.getInstance().getHashFromVocalParams(evData), false, true);
} else {
var vocalError = {
'intention' : intention,
'name' : 'NO_RESULTS',
'description' : 'no results for this timeline filter'
}
AriaTouch.Vocal.getInstance().heyVocal(new App.Common.VocalException.FailedFieldsValidation(vocalError));
return false;
}
}
});
});
});
//Aggiungo i data con le info del dispositivo
//http://theiphonewiki.com/wiki/Models
if(typeof window.platform!=="undefined") {
$('body').attr({
'data-platform' : window.platform,
'data-hardware' : window.hardware,
'data-systemName' : window.systemName,
'data-systemVersion' : window.systemVersion,
'data-model' : window.model,
'data-iPadModel' : window.iPadModel
});
}
});
then first i run the grunt task and it work , it create a views.production.js into www-built directory.