From echatellier@users.forge.codelutin.com Thu Jun 5 11:43:45 2014 From: echatellier@users.forge.codelutin.com To: faxtomail-commits@list.forge.codelutin.com Subject: [Faxtomail-commits] r133 - in trunk/faxtomail-ui-web/src/main/webapp: WEB-INF/content/admin js Date: Thu, 05 Jun 2014 11:43:44 +0200 Message-ID: <20140605094344.D3E3D1801CB@goh.codelutin.com> MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="===============8042915453406984513==" --===============8042915453406984513== Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Author: echatellier Date: 2014-06-05 11:43:43 +0200 (Thu, 05 Jun 2014) New Revision: 133 Url: http://forge.codelutin.com/projects/faxtomail/repository/revisions/133 Log: Display full node path in select. Remove binding on methods. Filter mail filters by root mail folders. Modified: trunk/faxtomail-ui-web/src/main/webapp/WEB-INF/content/admin/configuration= -input.jsp trunk/faxtomail-ui-web/src/main/webapp/js/configuration.js Modified: trunk/faxtomail-ui-web/src/main/webapp/WEB-INF/content/admin/config= uration-input.jsp =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D --- trunk/faxtomail-ui-web/src/main/webapp/WEB-INF/content/admin/configuratio= n-input.jsp 2014-06-05 07:32:18 UTC (rev 132) +++ trunk/faxtomail-ui-web/src/main/webapp/WEB-INF/content/admin/configuratio= n-input.jsp 2014-06-05 09:43:43 UTC (rev 133) @@ -50,14 +50,14 @@ 'mailFields': , // datas 'configuration': , - 'etatAttentes' : , - 'demandTypes' : , + 'etatAttentes': , + 'demandTypes': , 'mailFolders': , 'searchDisplayColumns': , 'users': , 'mailFilters': , 'emailAccounts': - }); + }); =20 @@ -69,7 +69,7 @@ =20 =20 - + =20
  • G=C3=A9n=C3=A9ral
  • @@ -512,38 +512,52 @@ =20
    - - - - - - - - - - - - - - -
    FiltreDossier -
    {{mailFilter.expression}}{{mailFilter.mailFolder.name}} - -
    =20 -
    -
    - - +
    + -
    - - +
    +
    + + +
    +
    + +
    - =20
    @@ -561,7 +575,7 @@ Aper=C3=A7u - {{etatAttenteFields[etatAttenteField.id]}} + {{mailFields[etatAttenteField.id]}} Modified: trunk/faxtomail-ui-web/src/main/webapp/js/configuration.js =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D --- trunk/faxtomail-ui-web/src/main/webapp/js/configuration.js 2014-06-05 07:= 32:18 UTC (rev 132) +++ trunk/faxtomail-ui-web/src/main/webapp/js/configuration.js 2014-06-05 09:= 43:43 UTC (rev 133) @@ -41,23 +41,38 @@ $scope.demandTypes =3D ConfigurationData.demandTypes; //{Array} mail folders $scope.mailFolders =3D ConfigurationData.mailFolders; + //{Map>} liste des=20 + $scope.flatMailFolders; =20 - // method priv=C3=A9e recursive pour retourner l'ensemble des dossiers - var recursiveAddMailFolder =3D function(result, mailFolders) { + // method priv=C3=A9e recursive pour retourner l'ensemble des dossiers e= n les modifiant pour ajouter + // des metadata (full path from root, and root node instance) + var recursiveAddMailFolder =3D function(result, mailFolders, rootFolder,= prefix) { if (mailFolders) { angular.forEach(mailFolders, function(mailFolder) { + + // warning modify input object :( + // use $ from this, even not recommended because angular exlude th= ose fields when jsonify + mailFolder.$fullPath =3D prefix + "/" + mailFolder.name; + // ha la la, modify input object again :( + // use $ from this, even not recommended because angular exlude th= ose fields when jsonify + mailFolder.$rootFolder =3D rootFolder; + result.push(mailFolder); - recursiveAddMailFolder(result, mailFolder.children); + recursiveAddMailFolder(result, mailFolder.children, rootFolder, ma= ilFolder.$fullPath); }); } }; =20 - // Retourne l'ensemble de l'arbre des dossiers "=C3=A0 plat" - $scope.flatMailFolders =3D function() { - var flatMailFolders =3D []; - recursiveAddMailFolder(flatMailFolders, $scope.mailFolders); - return flatMailFolders; + // update $scope.flatMailFolders when $scope.mailFolders changes + $scope._updateFlatMailFolders =3D function() { + console.log("Update flatMailFolders map"); + $scope.flatMailFolders =3D {}; + angular.forEach($scope.mailFolders, function(mailFolder) { + $scope.flatMailFolders[mailFolder.topiaId] =3D []; + recursiveAddMailFolder($scope.flatMailFolders[mailFolder.topiaId], m= ailFolder.children, mailFolder, mailFolder.name); + }); }; + $scope._updateFlatMailFolders(); }]); =20 /** @@ -217,12 +232,27 @@ children: [] }; $scope.mailFolders.push(newRoot); + $scope._updateFlatMailFolders(); // update flat map =20 // edition automatique $scope.editMailFolder(newRoot); }; }; =20 + // new sub folder + $scope.newSubFolder =3D function(scope) { + var nodeData =3D scope.$modelValue; + var name =3D $window.prompt("Nom du nouveau noeud ? "); + if (name) { + nodeData.children.push({ + topiaId: "new_" + guid(), + name: name, + children: [] + }); + $scope._updateFlatMailFolders(); // update flat map + } + }; + // edit mail folder $scope.editMailFolder =3D function(mailFolder) { $scope.selectedMailFolder =3D mailFolder; @@ -264,19 +294,6 @@ } }, true); =20 - // new sub folder - $scope.newSubFolder =3D function(scope) { - var nodeData =3D scope.$modelValue; - var name =3D $window.prompt("Nom du nouveau noeud ? "); - if (name) { - nodeData.children.push({ - topiaId: "new_" + guid(), - name: name, - children: [] - }); - } - }; - // fonction retournant l'ensemble des options disponibles $scope.getObjectsData =3D function(term, result) { var resultArray =3D []; @@ -346,13 +363,29 @@ /** * Mail filter tab controller. */ -ConfigurationModule.controller('ConfigurationFilterController', ['$scope', '= $http', 'ConfigurationData', - function($scope, $http, ConfigurationData) { +ConfigurationModule.controller('ConfigurationFilterController', ['$scope', '= $window', 'ConfigurationData', + function($scope, $window, ConfigurationData) { //{Array} Current mail filter list $scope.mailFilters =3D ConfigurationData.mailFilters; //{Object} New accout empty filter $scope.newFilter =3D {}; =20 + // replace filter instance with mailFolder filter instance to use same o= bjects + angular.forEach($scope.mailFilters, function(filter) { + // root folder + angular.forEach($scope.mailFolders, function(mailFolder) { + if (mailFolder.topiaId =3D=3D filter.mailFolder.topiaId) { + filter.mailFolder =3D mailFolder; + } else { + angular.forEach($scope.flatMailFolders[mailFolder.topiaId], functi= on(subFolder) { + if (subFolder.topiaId =3D=3D filter.mailFolder.topiaId) { + filter.mailFolder =3D subFolder; + } + }); + } + }); + }); + // add new filter action $scope.addNewFilter =3D function() { $scope.mailFilters.push($scope.newFilter); @@ -360,19 +393,29 @@ // clear form $scope.newFilter =3D {}; }; - =20 + // remove filter - $scope.removeFilter =3D function(index) { - $scope.mailFilters.splice(index, 1); + $scope.removeFilter =3D function(filter) { + if ($window.confirm("=C3=8Ates-vous s=C3=BBr de vouloir supprimer ce f= ilter ?")) { + var index =3D $scope.mailFilters.indexOf(filter); + $scope.mailFilters.splice(index, 1); + } }; + + // define angular filter used to group mailFilters by rootFolders + $scope.subFolderFilter =3D function(mailFolder) { + return function(item) { + return item.mailFolder =3D=3D mailFolder || item.mailFolder.$rootFol= der =3D=3D mailFolder; + }; + }; }]); =20 =20 /** * Search tab controller. */ -ConfigurationModule.controller('ConfigurationSearchController', ['$scope', '= $http', 'ConfigurationData', - function($scope, $http, ConfigurationData) { +ConfigurationModule.controller('ConfigurationSearchController', ['$scope', '= ConfigurationData', + function($scope, ConfigurationData) { //{Array} Options actuelle $scope.searchDisplayColumns =3D []; angular.forEach(ConfigurationData.searchDisplayColumns, function(searchD= isplayColumn) { --===============8042915453406984513==--