define(['jquery', 'underscore', 'backbone', 'text!modules/converter/converterViewTemplate.html', 'modules/base/baseView'], function($, _, Backbone, converterViewTemplate, BaseView){ var ConverterView = BaseView.extend({ collection: null, //initialize template template:_.template(converterViewTemplate), initialize: function (options) { var self = this; ConverterView.__super__.initialize.call(this); //this.header.title = "pippo"; }, events: { "click #calculate": "performCalcBtn", "change #typeLvStart": "typeLvStartChanged" }, performCalcBtn: function (e) { e.preventDefault(); //this.calculateConvert(); this.$el.find("#inputForm").submit(); }, typeLvStartChanged: function(e){ e.preventDefault(); if(this.$el.find("#typeLvStart").val() == "ldbf" || this.$el.find("#typeLvStart").val() == "ldbs"){ } else{ } }, calculateConvert: function(){ var ret =""; if(this.$el.find("#typeLvStart").val() == "ldbf" || this.$el.find("#typeLvStart").val() == "ldbs"){ this.$el.find("#qtaLvlAlt").val(this.impostaPmConsigliata()); ret += this.convertiLDB(); } else{ this.$el.find("#qtaLvlAlt").val(this.impostaPmConsigliata()); ret += this.convertiPM(); } this.$el.find('#result')[0].innerHTML = ret.replace(/
/g, "

"); this.$el.find('#popupConvertResult').popup("open"); }, convertiPM: function(){ // dichiaro e inizializzo la variabile che conterrà il risultato dell'elaborazione var risultato = ""; // imposto come fissa al 50% l'idratazione della PM solida var VidratazionePmSolida = 50; // ottengo i valori scelti dall'utente var vTipoPmPartenza = this.$el.find("#typeLvStart").val(); var vTipoPmFinale = ""; var vIdratazionePmFinale = 0; var vIdratazionePmPartenza = 50; //parseInt(this.$el.find("#qtaLiquidi").val()); if(this.$el.find("#typeLvStart").val() == "lic100" ) vIdratazionePmPartenza = 100; else if(this.$el.find("#typeLvStart").val() == "lic130" ) vIdratazionePmPartenza = 130; var vQuantitaPmPartenza = parseInt(this.$el.find("#qtaLvStart").val()); var vQuantitaFarinaPartenza = parseInt(this.$el.find("#qtaFarina").val()); var vQuantitaAcquaPartenza = parseInt(this.$el.find("#qtaLiquidi").val()); var vQuantitaPmFinale = parseInt(this.$el.find("#qtaLvlAlt").val()); // Imposto di il tipo di PM finale in funzione di quello scelto come partenza // e visualizzo o nascondo di conseguenza la select per l'idratazione switch (this.$el.find("#typeLvDest").val()){ case "pm": vTipoPmFinale = "SOLIDA"; vIdratazionePmFinale = 50; break; case "lic100": vTipoPmFinale = "LIQUIDA"; vIdratazionePmFinale = 100; break; case "lic130": vTipoPmFinale = "LIQUIDA"; vIdratazionePmFinale = 130; break; default: vTipoPmFinale = ""; } // elaborazione per PM finale SOLIDA if (vTipoPmFinale == "SOLIDA") { // quanta acqua c'è nella PM liquida di partenza? var qAcquaPmPartenza = (vQuantitaPmPartenza / (100 + vIdratazionePmPartenza)) * vIdratazionePmPartenza; qAcquaPmPartenza = qAcquaPmPartenza.toFixed(0); // quanta farina c'è nella PM liquida di partenza? var qFarinaPmPartenza = vQuantitaPmPartenza - qAcquaPmPartenza; // quanta acqua c'è nella PM finale? var qAcquaPmFinale = (vQuantitaPmFinale / (100 + VidratazionePmSolida)) * VidratazionePmSolida qAcquaPmFinale = qAcquaPmFinale.toFixed(0); // quanta farina c'è nella PM finale? var qFarinaPmFinale = vQuantitaPmFinale - qAcquaPmFinale; // come devo modificare l'acqua prevista dalla ricetta originale? // devo aggiungere/togliere la differenza tra l'acqua della PM di partenza e quella finale // quindi calcolo tale differenza... var deltaAcquaPM = qAcquaPmPartenza - qAcquaPmFinale; // ...e la aggiungo/tolgo all'acqua dell'impasto della ricetta originale var qAcquaImpastoFinale = vQuantitaAcquaPartenza; // se il delta acqua è negativo lo tolgo // altrimenti lo aggiungo if (deltaAcquaPM < 0) { qAcquaImpastoFinale -= deltaAcquaPM; } else { qAcquaImpastoFinale += deltaAcquaPM; } // come devo modificare la farina prevista dalla ricetta originale? // devo aggiungere/togliere la differenza tra la farina della PM di partenza e quella finale // quindi calcolo tale differenza... var deltaFarinaPM = qFarinaPmPartenza - qFarinaPmFinale; // ...e la aggiungo/tolgo alla farina dell'impasto della ricetta originale var qFarinaImpastoFinale = vQuantitaFarinaPartenza; // se il delta farina è negativo lo aggiungo // altrimenti lo tolgo if (deltaFarinaPM < 0) { qFarinaImpastoFinale += deltaFarinaPM; } else { qFarinaImpastoFinale -= deltaFarinaPM; } risultato += "PM solida gr " + vQuantitaPmFinale.toString(); risultato += "
"; risultato += "Farina gr " + qFarinaImpastoFinale.toString(); risultato += "
"; risultato += "Acqua gr " + qAcquaImpastoFinale.toString(); } // elaborazione per PM finale LIQUIDA if (vTipoPmFinale == "LIQUIDA"){ // CASO PM LIQUIDA FINALE AL 100% // quanta acqua c'è nella PM solida iniziale? var qAcquaPmPartenza = (vQuantitaPmPartenza / (100 + VidratazionePmSolida)) * VidratazionePmSolida qAcquaPmPartenza = qAcquaPmPartenza.toFixed(0); // quanta farina c'è nella PM solida iniziale? var qFarinaPmPartenza = vQuantitaPmPartenza - qAcquaPmPartenza; // quanta acqua c'è nella PM finale? var qAcquaPmFinale = (vQuantitaPmFinale / (100 + 100)) * 100; qAcquaPmFinale = qAcquaPmFinale.toFixed(0); // quanta farina c'è nella PM finale? var qFarinaPmFinale = vQuantitaPmFinale - qAcquaPmFinale; // come devo modificare l'acqua prevista dalla ricetta originale? // devo aggiungere/togliere la differenza tra l'acqua della PM di partenza e quella finale // quindi calcolo tale differenza... var deltaAcquaPM = qAcquaPmPartenza - qAcquaPmFinale; // ...e la aggiungo/tolgo all'acqua dell'impasto della ricetta originale var qAcquaImpastoFinale = vQuantitaAcquaPartenza; // se il delta acqua è negativo lo aggiungo // altrimenti lo tolgo if (deltaAcquaPM < 0){ qAcquaImpastoFinale += deltaAcquaPM; } else{ qAcquaImpastoFinale -= deltaAcquaPM; } // come devo modificare la farina prevista dalla ricetta originale? // devo aggiungere/togliere la differenza tra la farina della PM di partenza e quella finale // quindi calcolo tale differenza... var deltaFarinaPM = qFarinaPmPartenza - qFarinaPmFinale; // ...e la aggiungo/tolgo alla farina dell'impasto della ricetta originale var qFarinaImpastoFinale = vQuantitaFarinaPartenza; // se il delta farina è negativo lo aggiungo // altrimenti lo tolgo if (deltaFarinaPM < 0){ qFarinaImpastoFinale -= deltaFarinaPM; } else{ qFarinaImpastoFinale += deltaFarinaPM; } if(vIdratazionePmFinale == 100) { risultato += "PM liquida 100% gr " + vQuantitaPmFinale.toString(); risultato += "
"; risultato += "Farina gr " + qFarinaImpastoFinale.toString(); risultato += "
"; risultato += "Acqua gr " + qAcquaImpastoFinale.toString(); } else { // CASO PM LIQUIDA FINALE AL 130% // quanta acqua c'è nella PM solida iniziale? var qAcquaPmPartenza = (vQuantitaPmPartenza / (100 + VidratazionePmSolida)) * VidratazionePmSolida qAcquaPmPartenza = qAcquaPmPartenza.toFixed(0); // quanta farina c'è nella PM solida iniziale? var qFarinaPmPartenza = vQuantitaPmPartenza - qAcquaPmPartenza; // quanta acqua c'è nella PM finale? var qAcquaPmFinale = (vQuantitaPmFinale / (100 + 130)) * 130; qAcquaPmFinale = qAcquaPmFinale.toFixed(0); // quanta farina c'è nella PM finale? var qFarinaPmFinale = vQuantitaPmFinale - qAcquaPmFinale; // come devo modificare l'acqua prevista dalla ricetta originale? // devo aggiungere/togliere la differenza tra l'acqua della PM di partenza e quella finale // quindi calcolo tale differenza... var deltaAcquaPM = qAcquaPmPartenza - qAcquaPmFinale; // ...e la aggiungo/tolgo all'acqua dell'impasto della ricetta originale var qAcquaImpastoFinale = vQuantitaAcquaPartenza; // se il delta acqua è negativo lo aggiungo // altrimenti lo tolgo if (deltaAcquaPM < 0) { qAcquaImpastoFinale += deltaAcquaPM; } else { qAcquaImpastoFinale -= deltaAcquaPM; } // come devo modificare la farina prevista dalla ricetta originale? // devo aggiungere/togliere la differenza tra la farina della PM di partenza e quella finale // quindi calcolo tale differenza... var deltaFarinaPM = qFarinaPmPartenza - qFarinaPmFinale; // ...e la aggiungo/tolgo alla farina dell'impasto della ricetta originale var qFarinaImpastoFinale = vQuantitaFarinaPartenza; // se il delta farina è negativo lo aggiungo // altrimenti lo tolgo if (deltaFarinaPM < 0) { qFarinaImpastoFinale -= deltaFarinaPM; } else { qFarinaImpastoFinale += deltaFarinaPM; } risultato += "PM liquida 130% gr " + vQuantitaPmFinale.toString(); risultato += "
"; risultato += "Farina gr " + qFarinaImpastoFinale.toString(); risultato += "
"; risultato += "Acqua gr " + qAcquaImpastoFinale.toString(); } } return risultato; }, convertiLDB: function(){ // dichiaro e inizializzo la variabile che conterrà il risultato dell'elaborazione var risultato = ""; // dichiaro e inizializzo la variabile che conterrà la quantità di farina da usare var vQuantitaFarinaDaUsare = 0; // dichiaro e inizializzo la variabile che conterrà la quantità di acqua da usare var vQuantitaAcquaDaUsare = 0; // dichiaro e inizializzo la variabile per la quantità di farina presente nella PM da usare var qFarinaPmDaUsare = 0; // dichiaro e inizializzo la variabile per la quantità di acqua presente nella PM da usare var qAcquaPmDaUsare = 0; // ricavo la quantità di LDB della ricetta originale var vQuantitaLdbPartenza = parseInt(this.$el.find("#qtaLvStart").val()); // ricavo l'idratazione della PM da usare var vIdratazionePmFinale = 50; if(this.$el.find("#typeLvDest").val() == "lic100" ) vIdratazionePmFinale = 100; else if(this.$el.find("#typeLvDest").val() == "lic130" ) vIdratazionePmFinale = 130; // ricavo la quantità di farina della ricetta originale var vQuantitaFarinaPartenza = parseInt(this.$el.find("#qtaFarina").val()); // ricavo la quantità di acqua della ricetta originale var vQuantitaAcquaPartenza = parseInt(this.$el.find("#qtaLiquidi").val()); // ricavo la quantità di PM da usare var vQuantitaPmDaUsare = parseInt(this.$el.find("#qtaLvlAlt").val()); // quanta acqua c'è nella PM da usare? var qAcquaPmDaUsare = (vQuantitaPmDaUsare / (100 + vIdratazionePmFinale)) * vIdratazionePmFinale; qAcquaPmDaUsare = qAcquaPmDaUsare.toFixed(0); // ricavo la quantità di farina presente nella PM da usare qFarinaPmDaUsare = vQuantitaPmDaUsare - qAcquaPmDaUsare; // diminuisco la farina della ricetta originale di una quantità pari a quella presente nella PM da usare vQuantitaFarinaDaUsare = vQuantitaFarinaPartenza - qFarinaPmDaUsare; // diminuisco l'acqua della ricetta originale di una quantità pari a quella presente nella PM da usare vQuantitaAcquaDaUsare = vQuantitaAcquaPartenza - qAcquaPmDaUsare; // costruisco la stringa del risultato risultato += "PM gr " + vQuantitaPmDaUsare.toString(); risultato += "
"; risultato += "Farina gr " + vQuantitaFarinaDaUsare.toString(); risultato += "
"; risultato += "Acqua gr " + vQuantitaAcquaDaUsare.toString(); return risultato; }, impostaPmConsigliata: function(){ var dummy = ""; // dichiaro e inizializzo la variabile per la quantità consigliata di pasta madre var vQuantitaPmConsigliata = 0; if(this.$el.find("#typeLvStart").val() == "pm") { vQuantitaPmConsigliata = ((parseInt(this.$el.find("#qtaLvStart").val()) / 3) * 2); } else if(this.$el.find("#typeLvStart").val() == "lic100" || this.$el.find("#typeLvStart").val() == "lic130") { vQuantitaPmConsigliata = ((parseInt(this.$el.find("#qtaLvStart").val()) / 2) * 3); } else { // dichiaro e inizializzo la variabile per la quantità di lievito di birra var vQuantitaLdbPartenza = 0; // dichiaro e inizializzo la variabile per il tipo di lievito di birra var vTipoLdbPartenza = ""; // dichiaro e inizializzo la variabile per la quantità consigliata di pasta madre massima ammessa var vQuantitaPmConsigliataMax = 0; // imposto il rapporto percentuale di default PM solida/Farina... ma è solo orientativo var rapportoPmSolidaFarina = 25; // imposto il rapporto percentuale di default PM liquida 100%/Farina... ma è solo orientativo var rapportoPm100Farina = 16.5; // imposto il rapporto percentuale di default PM liquida 100%/Farina... ma è solo orientativo var rapportoPm130Farina = 16.5; // ricavo la quantità di farina della ricetta originale var vQuantitaFarinaPartenza = parseInt(this.$el.find('#qtaFarina').val()); // ricavo l'idratazione della PM da usare var vIdratazionePmFinale = 0; switch (this.$el.find("#typeLvDest").val()) { case "pm": vTipoPmFinale = "SOLIDA"; vIdratazionePmFinale = 50; break; case "lic100": vTipoPmFinale = "LIQUIDA"; vIdratazionePmFinale = 100; break; case "lic130": vTipoPmFinale = "LIQUIDA"; vIdratazionePmFinale = 130; break; default: vTipoPmFinale = ""; } // altrimenti faccio il rapporto partendo dalla quantità del lievito di birra // ricavo la quantità di lievito di birra vQuantitaLdbPartenza = parseInt(this.$el.find('#qtaLvStart').val()); // ricavo il tipo di lievito di birra vTipoLdbPartenza = this.$el.find("#typeLvStart").val(); if (!isNaN(vQuantitaLdbPartenza)) { if (vQuantitaLdbPartenza > 0) { if (vTipoLdbPartenza == "ldbs") { // 6 ldb = 240 PM vQuantitaPmConsigliata = (240 / 6) * vQuantitaLdbPartenza; } else { // 15 ldb = 240 PM vQuantitaPmConsigliata = (240 / 15) * vQuantitaLdbPartenza; } // SE IL RISULTATO OTTENUTO E' IRRAGIONEVOLE LO CORREGGO switch (this.$el.find('#typeLvDest').val()) { case "pm": vQuantitaPmConsigliataMax = (vQuantitaFarinaPartenza / 100) * rapportoPmSolidaFarina; break; case "lic100": vQuantitaPmConsigliataMax = (vQuantitaFarinaPartenza / 100) * rapportoPm100Farina; break; case "lic130": vQuantitaPmConsigliataMax = (vQuantitaFarinaPartenza / 100) * rapportoPm130Farina; break; default: vQuantitaPmConsigliataMax = 0; } if (vQuantitaPmConsigliata > vQuantitaPmConsigliataMax) { vQuantitaPmConsigliata = vQuantitaPmConsigliataMax; } } else { vQuantitaPmConsigliata = 0; alert("Impossibile calcolare\nAccertati di aver scritto bene la quantita'\ndi lievito di birra nella ricetta originale."); } } else { vQuantitaPmConsigliata = 0; alert("Impossibile calcolare\nAccertati di aver scritto bene la quantita'\ndi lievito di birra nella ricetta originale."); } } return vQuantitaPmConsigliata; }, //render the content into div of view render: function(){ //this.header.title = "pippo"; ConverterView.__super__.render.call(this); //this.el is the root element of Backbone.View. By default, it is a div. //$el is cached jQuery object for the view's element. //append the compiled template into view div container var self = this; this.$el.append(this.header.$el); this.$el.append(this.template({ deviceWidth: myManifest.Settings.Device.Width })); this.$el.append(this.footer.$el); //this.$el.find("#popupConvertResult").css("max-width", myManifest.Settings.Device.Width + "px" ); jQuery.validator.addMethod("cRequired", $.validator.methods.required, "Il campo è richiesto, si prega di completarlo"); jQuery.validator.addMethod("requireIf", function(value, element, params) { if(self.$el.find('#typeLvStart').val() != "ldbf" && self.$el.find('#typeLvStart').val() != "ldbs") { return value!=""; } return true; }, jQuery.validator.format("Il campo è richiesto, si prega di completarlo")); jQuery.validator.addClassRules("cRequireIf", { requireIf: true }); jQuery.validator.addClassRules("cRequired", { cRequired: true }); this.$el.find("#inputForm").validate({ submitHandler: function() { self.calculateConvert(); } }); this.$el.find("#moreBtn").addClass("ui-btn-active"); //$("#homeBtn").addClass("ui-btn-active"); //return to enable chained calls return this; } }); return ConverterView; });