From 16587ede16191f5e5e12835d3f4861eff72708f6 Mon Sep 17 00:00:00 2001 From: Jason Etheridge Date: Tue, 23 May 2017 17:37:44 -0400 Subject: [PATCH] webstaff: UI for delete subscription and distribution and stream Signed-off-by: Jason Etheridge --- Open-ILS/src/templates/staff/serials/index.tt2 | 13 +++ .../staff/serials/t_subscription_manager.tt2 | 6 ++ .../serials/directives/subscription_manager.js | 106 ++++++++++++++++++++- 3 files changed, 123 insertions(+), 2 deletions(-) diff --git a/Open-ILS/src/templates/staff/serials/index.tt2 b/Open-ILS/src/templates/staff/serials/index.tt2 index ab7dccbb84..36b7ddc7d7 100644 --- a/Open-ILS/src/templates/staff/serials/index.tt2 +++ b/Open-ILS/src/templates/staff/serials/index.tt2 @@ -19,6 +19,12 @@ angular.module('egCoreMod').run(['egStrings', function(s) { s.SERIALS_SUBSCRIPTION_SUCCESS_CLONE = "[% l('Cloned serial subscription') %]"; s.SERIALS_SUBSCRIPTION_FAIL_CLONE = "[% l('Failed to clone serial subscription') %]"; + s.SERIALS_SUBSCRIPTION_SUCCESS_DELETE = "[% l('Deleted serial subscription') %]"; + s.SERIALS_SUBSCRIPTION_FAIL_DELETE = "[% l('Failed to delete serial subscription') %]"; + s.SERIALS_DISTRIBUTION_SUCCESS_DELETE = "[% l('Deleted serial distribution') %]"; + s.SERIALS_DISTRIBUTION_FAIL_DELETE = "[% l('Failed to delete serial distribution') %]"; + s.SERIALS_STREAM_SUCCESS_DELETE = "[% l('Deleted serial stream') %]"; + s.SERIALS_STREAM_FAIL_DELETE = "[% l('Failed to delete serial stream') %]"; s.SERIALS_ISSUANCE_FAIL_SAVE = "[% l('Failed to save issuance') %]"; s.SERIALS_ISSUANCE_SUCCESS_SAVE = "[% l('Issuance saved') %]"; s.SERIALS_DISTRIBUTION_SUCCESS_LINK_MFHD = "[% l('Distribution linked to MFHD') %]"; @@ -29,6 +35,13 @@ angular.module('egCoreMod').run(['egStrings', function(s) { s.SERIALS_ISSUANCE_PREDICT = "[% l('Predict New Issues: Initial Values') %]"; s.SERIALS_ISSUANCE_ADD = "[% l('Add folloing issue') %]"; + s.CONFIRM_DELETE_SUBSCRIPTION = "[% l('Delete selected subscription(s)?') %]"; + s.CONFIRM_DELETE_SUBSCRIPTION_MESSAGE = "[% l('Will delete {{count}} subscription(s)') %]"; + s.CONFIRM_DELETE_DISTRIBUTION = "[% l('Delete selected distribution(s)?') %]"; + s.CONFIRM_DELETE_DISTRIBUTION_MESSAGE = "[% l('Will delete {{count}} distribution(s)') %]"; + s.CONFIRM_DELETE_STREAM = "[% l('Delete selected stream(s)?') %]"; + s.CONFIRM_DELETE_STREAM_MESSAGE = "[% l('Will delete {{count}} stream(s)') %]"; + s.CONFIRM_CHANGE_ITEMS = {}; s.CONFIRM_CHANGE_ITEMS_MESSAGE = {}; s.CONFIRM_CHANGE_ITEMS.delete = "[% l('Delete selected item(s)?') %]"; diff --git a/Open-ILS/src/templates/staff/serials/t_subscription_manager.tt2 b/Open-ILS/src/templates/staff/serials/t_subscription_manager.tt2 index 076380f67a..afba74451d 100644 --- a/Open-ILS/src/templates/staff/serials/t_subscription_manager.tt2 +++ b/Open-ILS/src/templates/staff/serials/t_subscription_manager.tt2 @@ -78,6 +78,12 @@ label="[% l('Additional Routing') %]"> + + + diff --git a/Open-ILS/web/js/ui/default/staff/serials/directives/subscription_manager.js b/Open-ILS/web/js/ui/default/staff/serials/directives/subscription_manager.js index cbaa2019bb..22fc1bae5f 100644 --- a/Open-ILS/web/js/ui/default/staff/serials/directives/subscription_manager.js +++ b/Open-ILS/web/js/ui/default/staff/serials/directives/subscription_manager.js @@ -10,9 +10,9 @@ angular.module('egSerialsAppDep') templateUrl: './serials/t_subscription_manager', controller: ['$scope','$q','egSerialsCoreSvc','egCore','egGridDataProvider', - '$uibModal','ngToast', + '$uibModal','ngToast','egConfirmDialog', function($scope , $q , egSerialsCoreSvc , egCore , egGridDataProvider , - $uibModal , ngToast ) { + $uibModal , ngToast , egConfirmDialog ) { function reload() { egSerialsCoreSvc.fetch($scope.bibId).then(function() { @@ -142,6 +142,108 @@ function($scope , $q , egSerialsCoreSvc , egCore , egGridDataProvider , form.$setPristine(); }); } + $scope.delete_subscription = function(rows) { + if (rows.length == 0) { return; } + var s_rows = rows.filter(function(el) { + return typeof el['id'] != 'undefined'; + }); + if (s_rows.length == 0) { return; } + egConfirmDialog.open( + egCore.strings.CONFIRM_DELETE_SUBSCRIPTION, + egCore.strings.CONFIRM_DELETE_SUBSCRIPTION_MESSAGE, + {count : s_rows.length} + ).result.then(function () { + var promises = []; + angular.forEach(s_rows, function(el) { + promises.push( + egCore.net.request( + 'open-ils.serial', + 'open-ils.serial.subscription.safe_delete', + egCore.auth.token(), + el['id'] + ).then(function(resp){ + var evt = egCore.evt.parse(resp); + if (evt) { + ngToast.danger(egCore.strings.SERIALS_SUBSCRIPTION_FAIL_DELETE + ' : ' + evt.desc); + } else { + ngToast.success(egCore.strings.SERIALS_SUBSCRIPTION_SUCCESS_DELETE); + } + }) + ); + }); + $q.all(promises).then(function() { + reload(); + }); + }); + } + $scope.delete_distribution = function(rows) { + if (rows.length == 0) { return; } + var d_rows = rows.filter(function(el) { + return typeof el['sdist.id'] != 'undefined'; + }); + if (d_rows.length == 0) { return; } + egConfirmDialog.open( + egCore.strings.CONFIRM_DELETE_DISTRIBUTION, + egCore.strings.CONFIRM_DELETE_DISTRIBUTION_MESSAGE, + {count : d_rows.length} + ).result.then(function () { + var promises = []; + angular.forEach(d_rows, function(el) { + promises.push( + egCore.net.request( + 'open-ils.serial', + 'open-ils.serial.distribution.safe_delete', + egCore.auth.token(), + el['sdist.id'] + ).then(function(resp){ + var evt = egCore.evt.parse(resp); + if (evt) { + ngToast.danger(egCore.strings.SERIALS_DISTRIBUTION_FAIL_DELETE + ' : ' + evt.desc); + } else { + ngToast.success(egCore.strings.SERIALS_DISTRIBUTION_SUCCESS_DELETE); + } + }) + ); + }); + $q.all(promises).then(function() { + reload(); + }); + }); + } + $scope.delete_stream = function(rows) { + if (rows.length == 0) { return; } + var s_rows = rows.filter(function(el) { + return typeof el['sstr.id'] != 'undefined'; + }); + if (s_rows.length == 0) { return; } + egConfirmDialog.open( + egCore.strings.CONFIRM_DELETE_STREAM, + egCore.strings.CONFIRM_DELETE_STREAM_MESSAGE, + {count : s_rows.length} + ).result.then(function () { + var promises = []; + angular.forEach(s_rows, function(el) { + promises.push( + egCore.net.request( + 'open-ils.serial', + 'open-ils.serial.stream.safe_delete', + egCore.auth.token(), + el['sstr.id'] + ).then(function(resp){ + var evt = egCore.evt.parse(resp); + if (evt) { + ngToast.danger(egCore.strings.SERIALS_STREAM_FAIL_DELETE + ' : ' + evt.desc); + } else { + ngToast.success(egCore.strings.SERIALS_STREAM_SUCCESS_DELETE); + } + }) + ); + }); + $q.all(promises).then(function() { + reload(); + }); + }); + } $scope.additional_routing = function(rows) { if (!rows) { return; } var row = rows[0]; -- 2.11.0