--- /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.ApplicationManager");
+EntSavoie.ApplicationManager.ApplicationChooser = 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';
+
+ // concerve la pop current ID
+ this.populationId = null;
+
+ //listes Appli select
+ this.applisRecordCreator = this.applisRecordCreator || Ext.data.Record.create(["appliId", "name"]);
+
+
+ this.listeAppliStore = this.listeAppliStore || new Ext.data.SimpleStore({
+ idProperty: 'appliId',
+ fields: ['appliId', 'name'],
+ sortInfo: {
+ field: 'name',
+ direction: 'ASC'
+ }
+ });
+
+ this.listeAppliGrid = this.listeAppliGrid || new Ext.grid.GridPanel({
+ title: this.i18n.ApplicationManager.ApplicationChooser.listeAppliGrid.title,
+ border: true,
+ enableDragDrop: true,
+ ddGroup : "ajoutApplisDD",
+ ddText: this.i18n.ApplicationManager.ApplicationChooser.listeAppliGrid.ddText,
+ style: "margin-bottom: 3px; margin-left: 5px;",
+ width: 150,
+ height: 280,
+ store: this.listeAppliStore,
+ autoExpandColumn: 'nom',
+ columns: [
+ {header: "", width: 40, id:'nom',dataIndex: 'name', sortable: true}
+ ],
+ hideHeaders: true,
+ tbar : [{
+ text : this.i18n.ApplicationManager.ApplicationChooser.listeAppliGrid.tbar.text,
+ iconCls : 'grid-add',
+ handler : this.onAddAppli,
+ scope: this
+ }]
+ });
+
+ this.listeAppliSelectStore = this.listeAppliSelectStore || new Ext.data.SimpleStore({
+ idProperty: 'appliId',
+ fields: ['appliId', 'name'],
+ sortInfo: {
+ field: 'name',
+ direction: 'ASC'
+ }
+ });
+
+ this.listeAppliSelectGrid = this.listeAppliSelectGrid || new Ext.grid.GridPanel({
+ title : this.i18n.ApplicationManager.ApplicationChooser.listeAppliSelectGrid.title,
+ enableDragDrop: true,
+ border: true,
+ ddGroup : "retirerApplisDD",
+ ddText : this.i18n.ApplicationManager.ApplicationChooser.listeAppliSelectGrid.ddText,
+ store : this.listeAppliSelectStore,
+ width: 150,
+ height: 280,
+ style: "margin-bottom: 3px;",
+ autoExpandColumn: 'nom',
+ hideHeaders: true,
+ columns :
+ [{
+ header : this.i18n.ApplicationManager.ApplicationChooser.listeAppliSelectGrid.columns.header,
+ id: "nom",
+ dataIndex : "name",
+ sortable : false,
+ width: 30,
+ editable: false
+ }],
+ tbar : [ {
+ text :this.i18n.ApplicationManager.ApplicationChooser.listeAppliSelectGrid.tbar.text,
+ iconCls : 'grid-delete',
+ handler : this.onRemoveAppli,
+ scope: this
+ }]
+ });
+
+ //listeners
+ this.listeAppliGrid.on("render", this.onRenderListeAppliGrid, this);
+ this.listeAppliSelectGrid.on("render", this.onRenderListeAppliSelectGrid, this);
+
+ EntSavoie.ApplicationManager.ApplicationChooser.superclass.constructor.call(this, {
+ border: false,
+ layout: 'table',
+ layoutConfig: {
+ columns: 2
+ },
+ style: 'margin-top: 5px;',
+ items: [
+ this.listeAppliGrid,
+ this.listeAppliSelectGrid
+ ]
+ });
+};
+
+Ext.extend(EntSavoie.ApplicationManager.ApplicationChooser, Ext.Panel, {
+ initComponent: function () {
+ EntSavoie.ApplicationManager.ApplicationChooser.superclass.initComponent.call(this);
+ },
+
+ clearInterface: function() {
+ this.listeAppliStore.removeAll();
+ this.listeAppliSelectStore.removeAll();
+ this.populationId = null;
+ },
+
+ refreshInterface: function(populationId) {
+ this.clearInterface();
+
+ this.populationId = populationId;
+
+ Ext.Ajax.request({
+ url: this.renderURLAjax+"&jspPage=/ajax/listApplis.jsp",
+ params: {
+ populationId: populationId
+ },
+ scope: this,
+ success: this.onSuccessGetPopAppli,
+ failure: this.onFailureGetPopAppli
+ });
+
+ },
+
+ onSuccessGetPopAppli: function(response, options) {
+ /* Code verifiant le succes de la requete */
+ var backObj = Ext.decode(response.responseText);
+ if (!backObj.success) {
+ Ext.MessageBox.alert(this.i18n.ApplicationManager.ApplicationChooser.onSuccessGetPopAppli.alert.title, this.i18n.ApplicationManager.ApplicationChooser.onSuccessGetPopAppli.alert.msg, function(btn){});
+ }
+ /* Code verifiant le succes de la requete */
+ else {
+ // on met a jour les listes
+ var appliDispo = backObj.availableApplis;
+ for(var i = 0, len = appliDispo.length; i < len; i++){
+ var data = appliDispo[i];
+ this.listeAppliStore.addSorted(new this.applisRecordCreator({
+ appliId: data.appliId,
+ name: data.name
+ }));
+ }
+
+ var appliSelected = backObj.choosenApplis;
+ for(var i = 0, len = appliSelected.length; i < len; i++){
+ var data = appliSelected[i];
+ this.listeAppliSelectStore.addSorted(new this.applisRecordCreator({
+ appliId: data.appliId,
+ name: data.name
+ }));
+ }
+ }
+ },
+
+ onFailureGetPopAppli: function(response, options) {
+ Ext.MessageBox.alert(this.i18n.ApplicationManager.ApplicationChooser.onFailureGetPopAppli.alert.title, this.i18n.ApplicationManager.ApplicationChooser.onFailureGetPopAppli.alert.msg, function(btn){});
+ },
+
+ onAddAppli: function(btn) {
+ var recAppliArray = this.listeAppliGrid.getSelectionModel().getSelections();
+
+ var recArray = new Array();
+
+ for (i = 0; i < recAppliArray.length; i++) {
+ var currRec = recAppliArray[i];
+ this.listeAppliSelectStore.addSorted(new this.applisRecordCreator({
+ appliId: currRec.get('appliId'),
+ name: currRec.get('name')
+ }));
+ this.listeAppliStore.remove(currRec);
+ recArray.push(currRec.get('appliId'));
+ }
+ this.udpateChoosenAppli("addAppli", recArray);
+ },
+
+ onRemoveAppli: function(btn) {
+ var recAppliArray = this.listeAppliSelectGrid.getSelectionModel().getSelections();
+
+ var recArray = new Array();
+
+ for (i = 0; i < recAppliArray.length; i++) {
+ var currRec = recAppliArray[i];
+ this.listeAppliStore.addSorted(new this.applisRecordCreator({
+ appliId: currRec.get('appliId'),
+ name: currRec.get('name')
+ }));
+ this.listeAppliSelectStore.remove(currRec);
+ recArray.push(currRec.get('appliId'));
+ }
+ this.udpateChoosenAppli("removeAppli", recArray);
+ },
+
+ udpateChoosenAppli: function(cmd, appliIds) {
+ Ext.Ajax.request({
+ url: this.actionURLAjax,
+ params: {
+ cmd: cmd,
+ appliIds: Ext.util.JSON.encode(appliIds),
+ populationId: this.populationId
+ },
+ scope: this,
+ success: this.onSuccessUpdateAppli,
+ failure: this.onFailureUpdateAppli
+ });
+
+ },
+
+ onSuccessUpdateAppli: function(response, options) {
+ /* Code verifiant le succes de la requete */
+ var backObj = Ext.decode(response.responseText);
+ if (!backObj.success) {
+ Ext.MessageBox.alert(this.i18n.ApplicationManager.ApplicationChooser.onSuccessUpdateAppli.alert.title, this.i18n.ApplicationManager.ApplicationChooser.onSuccessUpdateAppli.alert.msg, function(btn){});
+ }
+ /* Code verifiant le succes de la requete */
+ },
+
+ onFailureUpdateAppli: function(response, options) {
+ Ext.MessageBox.alert(this.i18n.ApplicationManager.ApplicationChooser.onFailureUpdateAppli.alert.title, this.i18n.ApplicationManager.ApplicationChooser.onFailureUpdateAppli.alert.msg, function(btn){});
+ },
+
+ onRenderListeAppliGrid: function(grid) {
+ // definition de la zone de drop pour enlever des applis
+ grid.dropTarget = new Ext.dd.DropTarget(grid.getId(),
+ {
+ scope: this,
+ ddGroup : "retirerApplisDD",
+ notifyDrop : function(dd, e, data) {
+ var recArray = new Array();
+
+ for (i = 0; i < data.selections.length; i++) {
+ var currRec = data.selections[i]
+ this.scope.listeAppliStore.addSorted(new this.scope.applisRecordCreator({
+ appliId: currRec.get('appliId'),
+ name: currRec.get('name')
+ }));
+ this.scope.listeAppliSelectStore.remove(currRec);
+ recArray.push(currRec.get('appliId'));
+ }
+ this.scope.udpateChoosenAppli("removeAppli", recArray);
+ }
+ });
+ },
+
+ onRenderListeAppliSelectGrid: function(grid) {
+ // definition de la zone de drop pour ajouter des applis
+ grid.dropTarget = new Ext.dd.DropTarget(grid.getId(),
+ {
+ scope: this,
+ ddGroup : "ajoutApplisDD",
+ notifyDrop : function(dd, e, data) {
+ var recArray = new Array();
+
+ for (i = 0; i < data.selections.length; i++) {
+ var currRec = data.selections[i]
+ this.scope.listeAppliSelectStore.addSorted(new this.scope.applisRecordCreator({
+ appliId: currRec.get('appliId'),
+ name: currRec.get('name')
+ }));
+ this.scope.listeAppliStore.remove(currRec);
+ recArray.push(currRec.get('appliId'));
+ }
+ this.scope.udpateChoosenAppli("addAppli", recArray);
+ }
+ });
+ }
+
+});