--- /dev/null
+/*
+Copyright (c) Igor Barma, Alexandre Desoubeaux, Christian Martel, Eric Brun, Mathieu Amblard, Gwenael Gevet, Pierre Guillot, 2012
+ * Copyright Alexandre Desoubeaux, Christian Martel, Cedric Lecarpentier, Alexandre Lefevre, Marc Salvat 2014-2016
+ * Copyright Alexandre Desoubeaux, Christian Martel, Cedric Lecarpentier, Marc Salvat, Marc Suarez, Harifetra Ramamonjy 2017
+For licensing, see README.txt or http://www.pentilanero.com (Cecill-C or AGPL or LGPL)
+*/
+Ext.ns("EntSavoie.CantineCollege");
+EntSavoie.CantineCollege.MenuPlanAlimentaire = function (config) {
+ Ext.apply(this, config);
+
+ // Ajoute le texte des erreurs
+ Ext.QuickTips.init();
+ // turn on validation errors beside the field globally
+ Ext.form.Field.prototype.msgTarget = 'side';
+
+ this.step = this.step || 1;
+ this.previousStep = this.previousStep || 1;
+ this.steps = ["", "Plats Protidiques", "Garnitures", "Entrées", "Desserts", "Fromages"];
+ this.firstLoad = true;
+
+ this.dataUrlForTreeLoader = this.renderURLAjax+'&jspPage=%2Fajax%2FrecetteForTree.jsp';
+
+ /**
+ * Arbre de la banque de recettes
+ */
+ this.treeLoaderBanquePanel = this.treeLoaderBanquePanel || new Ext.tree.TreeLoader({
+ dataUrl: this.renderURLAjax+'&jspPage=%2Fajax%2FrecetteForTree.jsp'
+ });
+
+ this.treeBanquePanel = this.treeBanquePanel || new Ext.tree.TreePanel({
+ cls: "treeBanquePanelForPlan",
+ border: false,
+ useArrows: true,
+ autoScroll: true,
+ animate: true,
+ containerScroll: true,
+ loader: this.treeLoaderBanquePanel,
+ rootVisible: true,
+ enableDrop: false,
+ enableDrag : true,
+ ddGroup: 'addRecetteDD',
+ singleExpand: true,
+ root: {
+ nodeType: 'async',
+ text: "Plats Protidique", // Texte du noeud
+ draggable: false, // Désactiver le Drag and drop sur ce noeud
+ id: "allRecipeForMenu", // Id du rootNodePah
+ leaf: false,
+ allowDrop: false,
+ iconCls: 'allRecipe',
+ expanded: true
+ }
+ });
+
+ /**
+ * Pseudo grille contenant les 20 menus
+ */
+ this.menuPanel = this.menuPanel || new Ext.Panel({
+ cls: "menuPanelContainer",
+ width: "auto",
+ border: true,
+ layout: "table",
+ autoScroll: true,
+ layoutConfig: {
+ columns: 4
+ },
+ items: []
+ });
+
+ /**
+ * Table des contraintes
+ */
+ this.contrainteStore = this.contrainteStore || new Ext.data.ArrayStore({
+ idProperty: 'gemrcnId',
+ fields: [
+ 'gemrcnId',
+ 'libelleGemrcn',
+ 'frequence',
+ 'typeFrequence',
+ {name: 'nbMenuContraint', type: Ext.data.Types.FLOAT}, // Calcul global arrondi --> En freq
+ 'nbMenuContraintLocal', // Calcul local --> en nombre
+ {name: 'nbMenuContraintOthers', type: Ext.data.Types.FLOAT}, // Calcul pour les autres composantes
+ 'typesRecette',
+ 'statut'
+ ]
+ });
+
+ this.cmContrainte = this.cmContrainte || new Ext.grid.ColumnModel({
+ columns: [
+ {
+ header: "Contrainte",
+ dataIndex: 'libelleGemrcn',
+ id: 'libelleGemrcn',
+ renderer: {
+ fn: function(value, metaData, record, rowIndex, colIndex, store) {
+ return record.get("libelleGemrcn");
+ },
+ scope: this
+ }
+ },
+ {
+ header: "Statut",
+ dataIndex: 'statut',
+ width: 60
+ }
+ ]
+ });
+
+ this.contrainteGridPanel = this.contrainteGridPanel || new Ext.grid.GridPanel({
+ width: "auto",
+ height: 640,
+ border: true,
+ style: "margin-left: 5px;",
+ store: this.contrainteStore,
+ cm: this.cmContrainte,
+ disableSelection: true,
+ trackMouseOver: false,
+ stripeRows: true,
+ viewConfig: {
+ markDirty: false
+ },
+ hideHeaders: true,
+ autoExpandColumn: 'libelleGemrcn'
+ });
+
+
+ this.previousButton = this.previousButton || new Ext.Button({
+ text: 'Précédent',
+ iconCls: 'previous',
+ style: "margin-left: 50px",
+ handler: this.onPreviousPanel,
+ tooltip: "Retourner à l'étape précédente",
+ scope: this
+ });
+
+ this.previousTBarButton = this.previousTBarButton || new Ext.Button({
+ text: 'Précédent',
+ iconCls: 'previous',
+ style: "margin-right: 10px",
+ handler: this.onPreviousPanel,
+ tooltip: "Retourner à l'étape précédente",
+ scope: this
+ });
+
+ this.nextButton = this.nextButton || new Ext.Button({
+ text: 'Suivant',
+ iconCls: 'next',
+ style: "margin-right: 50px",
+ handler: this.onNextPanel,
+ tooltip: "Aller à l'étape suivante",
+ scope: this
+ });
+
+ this.nextTBarButton = this.nextTBarButton || new Ext.Button({
+ text: 'Suivant',
+ iconCls: 'next',
+ style: "margin-right: 20px",
+ handler: this.onNextPanel,
+ tooltip: "Aller à l'étape suivante",
+ scope: this
+ });
+
+ this.loadAllMenusButton = this.loadAllMenusButton || new Ext.Button({
+ style: "margin-left: 200px;",
+ text: 'Afficher tous',
+ iconCls: 'viewAll',
+ handler: this.onViewAllMenus,
+ tooltip: "Afficher tous les menus pour chaque jour (midi, soir)",
+ scope: this
+ });
+
+ this.savePlanAlimentaireBtn = this.savePlanAlimentaireBtn || new Ext.Button({
+ iconCls: 'save',
+ text: "Enregistrer",
+ handler: this.onSavePlanAlimentaire,
+ tooltip: "Enregistrer le plan alimentaire sélectionné",
+ scope: this
+ });
+
+ this.savePlanAlimentaireTBarBtn = this.savePlanAlimentaireTBarBtn || new Ext.Button({
+ iconCls: 'save',
+ text: "Enregistrer",
+ style: "margin-right: 10px",
+ handler: this.onSavePlanAlimentaire,
+ tooltip: "Enregistrer le plan alimentaire sélectionné",
+ scope: this
+ });
+
+ this.informationsWindow = this.informationWindow || new Ext.Window({
+ cls: "cantine-portlet informationsWindow",
+ modal: true,
+ title: "Informations pratiques",
+ height: 400,
+ width: 750,
+ padding: 5,
+ closable: true,
+ bodyStyle:{"background-color": "white"},
+ closeAction: 'hide',
+ autoScroll: true
+ });
+
+ this.tip = this.tip || new Ext.slider.Tip({
+ scope: this,
+ getText: function(thumb){
+ if(thumb.value == 0){
+ return String.format("<b>Configuration du plan alimentaire</b>");
+ } else if(thumb.value == 1){
+ return String.format("<b>Etape 1 : </b><br />Saisie des plats protidiques");
+ } else if(thumb.value == 2){
+ return String.format("<b>Etape 2 : </b><br />Saisie des garnitures");
+ } else if(thumb.value == 3){
+ return String.format("<b>Etape 3 : </b><br />Saisie des entrées");
+ } else if(thumb.value == 4){
+ return String.format("<b>Etape 4 : </b><br />Saisie des desserts");
+ } else if(thumb.value == 5){
+ return String.format("<b>Etape 5 : </b><br />Saisie des fromages");
+ }
+ }
+ });
+
+ this.slider = this.slider || new Ext.Slider({
+ width: 214,
+ increment: 1,
+ minValue: 0,
+ maxValue: 5,
+ plugins: this.tip
+ });
+
+// Ext.QuickTips.init();
+// Ext.QuickTips.register({
+// target: this.slider,
+// text: "Déplacer le curseur afin de naviguer",
+// enabled: true
+// });
+
+ this.menuPlanAlimentaireTitle = this.menuPlanAlimentaireTitle || new Ext.form.Label({
+ text: "Plan Alimentaire",
+ cls: "toolBarHeaderTextCls"
+ });
+
+ this.helpToolBtn = this.helpToolBtn || new Ext.BoxComponent({
+ autoEl: {
+ html: '<div class="x-tool x-tool-help"> </div>'
+ }
+ });
+
+ this.closeToolBtn = this.closeToolBtn || new Ext.BoxComponent({
+ autoEl: {
+ html: '<div class="x-tool x-tool-close"> </div>'
+ }
+ });
+
+ this.tbar = this.tbar || new Ext.Toolbar({
+ cls: "x-panel-header",
+ items: [
+ this.menuPlanAlimentaireTitle,
+ {xtype: 'tbspacer', width: 100},
+ this.slider,
+ "->",
+ this.previousTBarButton,
+ this.savePlanAlimentaireTBarBtn,
+ this.nextTBarButton,
+ this.helpToolBtn,
+ this.closeToolBtn
+ ]
+ });
+
+ /**
+ * Constructeur
+ */
+ EntSavoie.CantineCollege.MenuPlanAlimentaire.superclass.constructor.call(this, {
+ border: false,
+ height: 625,
+ width: "auto",
+ monitorResize: true,
+ frame: true,
+ layout: 'border',
+ defaults: {
+ collapsible: false,
+ split: false,
+ border: false
+ },
+ items: [
+ {
+ width: 150,
+ region: "west",
+ border: false,
+ layout: 'fit',
+ height: 700,
+ title: "Banque de recettes",
+ collapsible: true,
+ items: [this.treeBanquePanel]
+ },{
+ region: "center",
+ border: false,
+ layout: 'fit',
+ minWidth: 550,
+ height: 700,
+ items: [this.menuPanel]
+ },{
+ region: "east",
+ width: 200,
+ border: false,
+ layout: 'fit',
+ height: 700,
+ title: "Classification GEMRCN",
+ collapsible: true,
+ items: [this.contrainteGridPanel]
+ }
+ ],
+ tbar: this.tbar,
+ buttonAlign: "left",
+ buttons: [this.previousButton, this.loadAllMenusButton, "->", this.savePlanAlimentaireBtn, this.nextButton]
+ });
+
+ this.on("activate", this.onActivateMenuPlanAlimentairePanel, this);
+ this.treeLoaderBanquePanel.on("beforeload", this.onBeforeLoadTreeLoaderBanquePanel, this);
+
+ this.helpToolBtn.on("render", this.onRenderHelpToolBtn, this);
+ this.closeToolBtn.on("render", this.onRenderCloseToolBtn, this);
+
+ this.slider.on("changecomplete", this.onChangeCompleteSlider, this);
+
+};
+
+Ext.extend(EntSavoie.CantineCollege.MenuPlanAlimentaire, Ext.Panel, {
+ initComponent: function () {
+ EntSavoie.CantineCollege.MenuPlanAlimentaire.superclass.initComponent.call(this);
+ },
+
+ onActivateMenuPlanAlimentairePanel: function(panel){
+
+ if(hasInternat){
+ this.loadAllMenusButton.show();
+ } else {
+ this.loadAllMenusButton.hide();
+ }
+
+ this.wait = new Ext.LoadMask(Ext.getBody(), {msg: "<b>Chargement des informations en cours.</b> <br/> Veuillez patienter ..."});
+ this.wait.show();
+
+ /*
+ * Disable des boutons de navigation
+ * Pour attendre que les stores soient charges afin de naviguer
+ */
+ this.nextButton.disable();
+ this.previousButton.disable();
+ this.nextTBarButton.disable();
+ this.previousTBarButton.disable();
+ this.slider.disable();
+
+ this.dataUrlForTreeLoader = this.renderURLAjax+'&jspPage=%2Fajax%2FrecetteForTree.jsp&planAlimentaireId=' + this.mainContainer.planAlimentaireId;
+
+ if(this.step == null){
+ this.step = 1;
+ this.previousStep = 1;
+ }
+
+ this.treeBanquePanel.getSelectionModel().clearSelections();
+ Ext.Ajax.request({
+ url: this.actionURLAjax,
+ params:{
+ cmd: "firstStoreLoad",
+ planAlimentaireId: this.mainContainer.planAlimentaireId,
+ step: this.step
+ },
+ scope: this,
+ success: this.onSuccessFirstStoreLoad,
+ failure: this.onFailureFirstStoreLoad
+ });
+ },
+
+ onSuccessFirstStoreLoad: function(response, options) {
+ // Traitement des messages
+ var backObj = "";
+ try{
+ backObj = Ext.decode(response.responseText);
+ } catch (e){
+ this.onActivateMenuPlanAlimentairePanel(this);
+ }
+ if (!backObj.success) {
+ Ext.MessageBox.alert("Attention", "En raison d'un dysfonctionnement réseau l'opération demandée n'a pas pu être effectuée", function(btn){}, this);
+ } else {
+
+ /*
+ * load du tree
+ */
+ if(this.firstLoad){
+ this.firstLoad = false;
+ } else {
+ this.loadTreeBanquePanel();
+ }
+
+ this.contrainteStore.loadData(backObj.containteStore);
+
+ this.loadAllMenus = false;
+ this.nextButton.setText("Suivant");
+ this.nextTBarButton.setText("Suivant");
+ this.menuPlanAlimentaireTitle.setText("Etape " + this.step + " : Saisie des " + this.steps[this.step]);
+ this.treeBanquePanel.getRootNode().setText(this.steps[this.step]);
+ this.slider.setValue(this.step);
+ this.typePlan = backObj.type;
+ if(backObj.type == 2){
+ this.loadAllMenusButton.setText("Afficher les menus du soir");
+ this.loadAllMenusButton.setTooltip("Afficher tous les menus du soir pour chacun des jours du plan courant");
+ } else if(backObj.type == 3){
+ this.loadAllMenusButton.setText("Afficher les menus du midi");
+ this.loadAllMenusButton.setTooltip("Afficher tous les menus du midi pour chacun des jours du plan courant");
+ }
+
+ this.nbMenusForCurrentStep = backObj.nbMenus;
+
+ /*
+ * Creation des menus
+ */
+ this.initialMenusData = backObj.listMenu;
+ this.menuPanel.removeAll();
+ var menu = new EntSavoie.CantineCollege.Menu({
+ renderURLAjax: this.renderURLAjax,
+ actionURLAjax: this.actionURLAjax,
+ currentData: this.initialMenusData[0],
+ planAlimentaireId: this.mainContainer.planAlimentaireId,
+ date: this.mainContainer.dates[0],
+ titleMenu: this.mainContainer.titles[0],
+ index: 0,
+ mainContainer: this,
+ isCreate: true
+ });
+ this.menuPanel.add(menu);
+ this.menuPanel.doLayout();
+ }
+ },
+
+ onFailureFirstStoreLoad: function(response, options) {
+ this.wait.hide();
+ Ext.MessageBox.alert("Attention", "En raison d'un dysfonctionnement réseau l'opération demandée n'a pas pu être effectuée", function(btn){}, this);
+ },
+
+ createMenu: function(index){
+ if(index<20){
+ var menu = new EntSavoie.CantineCollege.Menu({
+ renderURLAjax: this.renderURLAjax,
+ actionURLAjax: this.actionURLAjax,
+ currentData: this.initialMenusData[index],
+ planAlimentaireId: this.mainContainer.planAlimentaireId,
+ date: this.mainContainer.dates[index],
+ titleMenu: this.mainContainer.titles[index],
+ index: index,
+ mainContainer: this,
+ isCreate: true
+ });
+ this.menuPanel.add(menu);
+ this.menuPanel.doLayout();
+ } else {
+
+ this.wait.hide();
+
+ /*
+ * Enable les boutons de navigation
+ * Lorsque tout est charge
+ */
+ this.slider.enable();
+ this.nextButton.enable();
+ this.previousButton.enable();
+ this.nextTBarButton.enable();
+ this.previousTBarButton.enable();
+
+ }
+ },
+
+ onBeforeLoadTreeLoaderBanquePanel: function(loader, node, callback){
+ loader.dataUrl = this.dataUrlForTreeLoader + "&planAlimentaireId=" + this.mainContainer.planAlimentaireId + "&step=" + this.step;
+ },
+
+ loadAllStoreMenuPlanAlimentaireAndSaveMenus: function(){
+
+ this.wait = new Ext.LoadMask(Ext.getBody(), {msg: "<b>Chargement des informations en cours.</b> <br/> Veuillez patienter ..."});
+ this.wait.show();
+
+ /*
+ * Disable des boutons de navigation
+ * Pour attendre que les stores soient charges afin de naviguer
+ */
+ this.nextButton.disable();
+ this.previousButton.disable();
+ this.nextTBarButton.disable();
+ this.previousTBarButton.disable();
+ this.slider.disable();
+
+ var recettes = this.getAllRecettesForSave();
+
+ Ext.Ajax.request({
+ url: this.actionURLAjax,
+ params:{
+ cmd: "loadAllStoreMenuPlanAlimentaireAndSaveMenus",
+ planAlimentaireId: this.mainContainer.planAlimentaireId,
+ step: this.step,
+ previousStep: this.previousStep,
+ loadAllMenus: this.loadAllMenus,
+ recettes: Ext.util.JSON.encode(recettes)
+ },
+ scope: this,
+ success: this.onSuccessloadAllStoreMenuPlanAlimentaireAndSaveMenus,
+ failure: this.onFailureloadAllStoreMenuPlanAlimentaireAndSaveMenus
+ });
+
+ },
+
+ onSuccessloadAllStoreMenuPlanAlimentaireAndSaveMenus: function(response, options) {
+ // Traitement des messages
+ var backObj = "";
+ try{
+ backObj = Ext.decode(response.responseText);
+ } catch (e){
+ this.loadAllStoreMenuPlanAlimentaireAndSaveMenus();
+ }
+ if (!backObj.success) {
+ Ext.MessageBox.alert("Attention", "En raison d'un dysfonctionnement réseau l'opération demandée n'a pas pu être effectuée", function(btn){}, this);
+ } else {
+ /*
+ * load du tree
+ */
+ this.loadTreeBanquePanel();
+
+ this.nbMenusForCurrentStep = backObj.nbMenus;
+
+ this.contrainteStore.loadData(backObj.containteStore);
+ this.setCurrentMenuStore(backObj.listMenu);
+ }
+ },
+
+ onFailureloadAllStoreMenuPlanAlimentaireAndSaveMenus: function(response, options) {
+ this.wait.hide();
+ Ext.MessageBox.alert("Attention", "En raison d'un dysfonctionnement réseau l'opération demandée n'a pas pu être effectuée", function(btn){}, this);
+ },
+
+ onPreviousPanel: function(btn){
+ this.treeBanquePanel.getSelectionModel().clearSelections();
+ this.action = "previous";
+ this.previousStep = this.step;
+ if(this.step == 1){
+ this.saveMenus();
+ } else {
+ this.step--;
+ this.slider.setValue(this.step);
+ this.loadAllStoreMenuPlanAlimentaireAndSaveMenus();
+ this.menuPlanAlimentaireTitle.setText("Etape " + this.step + " : Saisie des " + this.steps[this.step]);
+ this.nextButton.disable();
+ this.previousButton.disable();
+ this.nextTBarButton.disable();
+ this.previousTBarButton.disable();
+ this.slider.disable();
+ }
+ },
+
+ onNextPanel: function(btn){
+ this.treeBanquePanel.getSelectionModel().clearSelections();
+ this.action = "next";
+ this.previousStep = this.step;
+ if(this.step < 5){
+ this.step++;
+ this.slider.setValue(this.step);
+ this.loadAllStoreMenuPlanAlimentaireAndSaveMenus();
+ this.menuPlanAlimentaireTitle.setText("Etape " + this.step + " : Saisie des " + this.steps[this.step]);
+ if(this.step == 5){
+ this.nextButton.setText("Terminer");
+ this.nextTBarButton.setText("Terminer");
+ } else {
+ this.nextButton.setText("Suivant");
+ this.nextTBarButton.setText("Suivant");
+ }
+ } else {
+ this.saveMenus();
+ }
+ },
+
+ onRenderHelpToolBtn: function(el){
+ el.getEl().on('click', function(){this.showInformationsPratique();}, this);
+ },
+
+ onRenderCloseToolBtn: function(el){
+ el.getEl().on('click', function(){this.action = "backHome"; this.saveMenus();}, this);
+ },
+
+ onChangeCompleteSlider: function(slider, newValue, thumb){
+ this.action = "goTo";
+ this.previousStep = this.step;
+ if(newValue == 0){
+ this.saveMenus();
+ } else {
+ this.step = newValue;
+ this.loadAllStoreMenuPlanAlimentaireAndSaveMenus();
+ this.menuPlanAlimentaireTitle.setText("Etape " + this.step + " : Saisie des " + this.steps[this.step]);
+ if(this.step == 5){
+ this.nextButton.setText("Terminer");
+ this.nextTBarButton.setText("Terminer");
+ } else {
+ this.nextButton.setText("Suivant");
+ this.nextTBarButton.setText("Suivant");
+ }
+ }
+ },
+
+ onSavePlanAlimentaire: function(btn){
+ this.action = "save";
+ this.saveMenus();
+ },
+
+ saveMenus: function(){
+ this.wait = new Ext.LoadMask(Ext.getBody(), {msg: "<b>Enregistrement des menu en cours.</b> <br/> Veuillez patienter ..."});
+ this.wait.show();
+
+ var recettes = this.getAllRecettesForSave();
+
+ Ext.Ajax.request({
+ url: this.actionURLAjax,
+ params:{
+ cmd: "saveMenus",
+ planAlimentaireId: this.mainContainer.planAlimentaireId,
+ recettes: Ext.util.JSON.encode(recettes),
+ step: this.step
+ },
+ scope: this,
+ success: this.onSuccessSaveMenus,
+ failure: this.onFailureSaveMenus
+ });
+ },
+
+ onSuccessSaveMenus: function(response, options) {
+ // Traitement des messages
+ var backObj = Ext.decode(response.responseText);
+ if (!backObj.success) {
+ this.wait.hide();
+ Ext.MessageBox.alert("Attention", "En raison d'un dysfonctionnement réseau l'opération demandée n'a pas pu être effectuée", function(btn){}, this);
+ } else {
+ if(this.action == "save"){
+ Ext.slideMsg.msg("Sauvegarde des menus", "Les menus du plan alimentaire ont correctement été enregistrés.");
+ } else if(this.action == "backHome"){
+ this.step = 1;
+ this.previousStep = 1;
+ this.mainContainer.layout.setActiveItem(0);
+ } else if(this.action == "previous"){
+ this.slider.setValue(0);
+ this.previousStep = 1;
+ this.mainContainer.layout.setActiveItem(1);
+ } else if(this.action == "next"){
+ this.slider.setValue(0);
+ this.step = 1;
+ this.previousStep = 1;
+ this.mainContainer.layout.setActiveItem(0);
+ } else if(this.action == "goTo"){
+ //On va sur la configuration
+ this.step = 1;
+ this.previousStep = 1;
+ this.mainContainer.layout.setActiveItem(1);
+ }
+ this.wait.hide();
+ }
+ },
+
+ onFailureSaveMenus: function(response, options) {
+ this.wait.hide();
+ Ext.MessageBox.alert("Attention", "En raison d'un dysfonctionnement réseau l'opération demandée n'a pas pu être effectuée", function(btn){}, this);
+ },
+
+ getAllRecettesForSave: function(){
+ var menus = this.menuPanel.items;
+
+ var recettes = new Array();
+ for(i=0; i<menus.length; i++){
+ var menu = menus.get(i);
+ var grid = menu.items.get(1);
+ var records = grid.getStore().getRange();
+ for(j=0; j<records.length; j++){
+ var rec = records[j];
+ //On prend seulement les recettes concernant l'etape courante
+ if(rec.get("planAlimentaireId") == this.mainContainer.planAlimentaireId && !rec.get("hideDelete")){
+ //on met le title ici pour etre sur de le passer au bon cantineDatePlanAlimentaire
+ var recette = {"date": menu.date, "recetteId": rec.get("recetteId"), titleMenu: menu.titleMenu};
+ recettes.push(recette);
+ }
+ }
+ }
+ return recettes;
+ },
+
+ loadTreeBanquePanel: function(){
+ this.treeBanquePanel.getRootNode().setText(this.steps[this.step]);
+ this.treeBanquePanel.getLoader().load(this.treeBanquePanel.getRootNode());
+ this.treeBanquePanel.getRootNode().expand();
+ },
+
+ setCurrentMenuStore: function(data){
+ var menus = this.menuPanel.items;
+ for(i=0; i<menus.length; i++){
+ var menu = menus.get(i);
+ menu.currentData = data[i];
+ }
+ //on charge le premier
+ //-> les autres se chargent sur le load de chacun
+ this.loadMenuStore(0);
+ },
+
+ loadMenuStore: function(index){
+ if(index<20){
+ var menus = this.menuPanel.items;
+ var menu = menus.get(index);
+ menu.loadRecetteForMenuStore(menu.currentData);
+ }
+ //Tous les stores sont charges
+ else {
+
+ this.wait.hide();
+
+ /*
+ * Enable les boutons de navigation
+ * Lorsque tout est charge
+ */
+ this.slider.enable();
+ this.nextButton.enable();
+ this.previousButton.enable();
+ this.nextTBarButton.enable();
+ this.previousTBarButton.enable();
+
+ }
+ },
+
+ onViewAllMenus: function(btn){
+ if(this.loadAllMenus == true){
+ this.loadAllMenus = false;
+ if(this.typePlan == 2){
+ this.loadAllMenusButton.setText("Afficher les menus du soir");
+ this.loadAllMenusButton.setTooltip("Afficher tous les menus du soir pour chacun des jours du plan courant");
+ } else if(this.typePlan == 3){
+ this.loadAllMenusButton.setText("Afficher les menus du midi");
+ this.loadAllMenusButton.setTooltip("Afficher tous les menus du midi pour chacun des jours du plan courant");
+ }
+ } else {
+ this.loadAllMenus = true;
+ this.loadAllMenusButton.setText("Afficher les menus du plan");
+ this.loadAllMenusButton.setTooltip("Afficher seulement les menus du plan courant pour chacun des jours");
+ }
+
+ //On ne change pas d'etape
+ //--> sauvegarde de l'etape courante
+ this.previousStep = this.step;
+
+ //On recharge la table des contraintes
+ //au cas où il y est des modifs -> recharge tous les menus
+ this.loadAllStoreMenuPlanAlimentaireAndSaveMenus();
+ },
+
+ showInformationsPratique: function(){
+ Ext.Ajax.request({
+ url: this.actionURLAjax,
+ params:{
+ cmd: "getInformationsPratiques",
+ step: this.step
+ },
+ scope: this,
+ success: this.onSuccessGetInformationsPratiques,
+ failure: this.onFailureGetInformationsPratiques
+ });
+ },
+
+ onSuccessGetInformationsPratiques: function(response, options) {
+ // Traitement des messages
+ var backObj = Ext.decode(response.responseText);
+ if (!backObj.success) {
+ this.wait.hide();
+ Ext.MessageBox.alert("Attention", "En raison d'un dysfonctionnement réseau l'opération demandée n'a pas pu être effectuée", function(btn){}, this);
+ } else {
+ this.informationsWindow.show();
+ this.informationsWindow.body.update(backObj.informationsPratiques, true);
+ }
+ },
+
+ onFailureGetInformationsPratiques: function(response, options) {
+ this.wait.hide();
+ Ext.MessageBox.alert("Attention", "En raison d'un dysfonctionnement réseau l'opération demandée n'a pas pu être effectuée", function(btn){}, this);
+ }
+});