add a bulk update mode. Users can update more than one network proxy and save all at the end

BTW to do for other screens :-)

git-svn-id: https://svn.apache.org/repos/asf/archiva/trunk@1238622 13f79535-47bb-0310-9956-ffa450edef68
This commit is contained in:
Olivier Lamy 2012-01-31 14:40:57 +00:00
parent 9a57ea941b
commit d2715e8231
2 changed files with 38 additions and 4 deletions

View File

@ -48,17 +48,20 @@ $(function() {
this.modified=ko.observable(false); this.modified=ko.observable(false);
} }
NetworkProxyViewModel=function(networkProxy, update, networkProxiesViewModel){ NetworkProxyViewModel=function(networkProxy, update, networkProxiesViewModel,bulkMode){
this.update=update; this.update=update;
this.networkProxy=networkProxy; this.networkProxy=networkProxy;
this.networkProxiesViewModel=networkProxiesViewModel; this.networkProxiesViewModel=networkProxiesViewModel;
var self=this; var self=this;
this.bulkMode=false || bulkMode;
this.save=function(){ this.save=function(){
if (!$("#main-content #network-proxy-edit-form").valid()){ if (!$("#main-content #network-proxy-edit-form").valid()){
return; return;
} }
clearUserMessages(); if (!this.bulkMode){
clearUserMessages();
}
if (update){ if (update){
$.ajax("restServices/archivaServices/networkProxyService/updateNetworkProxy", $.ajax("restServices/archivaServices/networkProxyService/updateNetworkProxy",
{ {
@ -69,7 +72,9 @@ $(function() {
success: function(data) { success: function(data) {
displaySuccessMessage($.i18n.prop('networkproxy.updated',self.networkProxy.id())); displaySuccessMessage($.i18n.prop('networkproxy.updated',self.networkProxy.id()));
self.networkProxy.modified(false); self.networkProxy.modified(false);
activateNetworkProxiesGridTab(); if (!this.bulkMode){
activateNetworkProxiesGridTab();
}
}, },
error: function(data) { error: function(data) {
var res = $.parseJSON(data.responseText); var res = $.parseJSON(data.responseText);
@ -121,8 +126,29 @@ $(function() {
activateNetworkProxyEditTab(); activateNetworkProxyEditTab();
} }
this.bulkSave=function(){
return getModifiedNetworkProxies().length>0;
}
getModifiedNetworkProxies=function(){
var prx = $.grep(self.networkProxies(),
function (networkProxy,i) {
$.log("networkProxy.modified():"+networkProxy.modified())
return networkProxy.modified();
});
return prx;
}
updateNetworkProxies=function(){
var modifiedNetworkProxies = getModifiedNetworkProxies();
for(i=0;i<modifiedNetworkProxies.length;i++){
var viewModel = new NetworkProxyViewModel(modifiedNetworkProxies[i],true,self,false);
viewModel.save();
}
}
updateNetworkProxy=function(networkProxy){ updateNetworkProxy=function(networkProxy){
var viewModel = new NetworkProxyViewModel(networkProxy,true,self); var viewModel = new NetworkProxyViewModel(networkProxy,true,self,false);
viewModel.save(); viewModel.save();
} }
@ -210,6 +236,7 @@ $(function() {
} }
}); });
ko.applyBindings(networkProxiesViewModel,$("#main-content #networkProxiesTable").get(0)); ko.applyBindings(networkProxiesViewModel,$("#main-content #networkProxiesTable").get(0));
ko.applyBindings(networkProxiesViewModel,$("#main-content #network-proxies-bulk-save-btn").get(0));
} }
} }
); );

View File

@ -31,6 +31,7 @@
</ul> </ul>
<div id="network-proxies-view-tabs-content" class="tab-content"> <div id="network-proxies-view-tabs-content" class="tab-content">
<div id="network-proxies-view" class="active"> <div id="network-proxies-view" class="active">
<div id="network-proxies-bulk-save-btn" data-bind='template:{name:"network-proxies-bulk-save-tmpl"}'></div>
<table class="bordered-table zebra-striped" id="networkProxiesTable" <table class="bordered-table zebra-striped" id="networkProxiesTable"
data-bind="simpleGrid: gridViewModel,simpleGridTemplate:'ko-network-proxies-grid',pageLinksId:'network-proxiesPagination'"> data-bind="simpleGrid: gridViewModel,simpleGridTemplate:'ko-network-proxies-grid',pageLinksId:'network-proxiesPagination'">
</table> </table>
@ -143,4 +144,10 @@
<button data-bind="click: save" class="btn">${$.i18n.prop('save')}</button> <button data-bind="click: save" class="btn">${$.i18n.prop('save')}</button>
<button data-bind="click: displayGrid" class="btn">${$.i18n.prop('cancel')}</button> <button data-bind="click: displayGrid" class="btn">${$.i18n.prop('cancel')}</button>
</form> </form>
</script>
<script id="network-proxies-bulk-save-tmpl" type='text/x-jquery-tmpl'>
{{if bulkSave()}}
<button data-bind="click: updateNetworkProxies" class="btn">${$.i18n.prop('save.all')}</button>
{{/if}}
</script> </script>